@vireo-ai/trellis-ui 0.1.61 → 0.1.63

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 (537) hide show
  1. package/THIRD_PARTY_NOTICES.md +9 -0
  2. package/package.json +15 -35
  3. package/packages/client/skills/compose-trellis-ui/SKILL.md +84 -0
  4. package/packages/client/skills/compose-trellis-ui/references/project-ui.md +40 -0
  5. package/packages/client/src/components/accordion/styles.css +21 -9
  6. package/packages/client/src/components/badge/styles.css +12 -0
  7. package/packages/client/src/components/button/styles.css +31 -5
  8. package/packages/client/src/components/card/styles.css +16 -0
  9. package/packages/client/src/components/checkbox/styles.css +29 -5
  10. package/packages/client/src/components/date-picker/styles.css +22 -17
  11. package/packages/client/src/components/field/styles.css +16 -16
  12. package/packages/client/src/components/input/styles.css +1 -0
  13. package/packages/client/src/components/keybinding/styles.css +9 -2
  14. package/packages/client/src/components/menu/styles.css +13 -0
  15. package/packages/client/src/components/panels/styles.css +12 -2
  16. package/packages/client/src/components/scroll-area/styles.css +169 -2
  17. package/packages/client/src/components/select/styles.css +28 -8
  18. package/packages/client/src/components/sidebar/styles.css +218 -0
  19. package/packages/client/src/components/slider/styles.css +57 -0
  20. package/packages/client/src/components/tabs/styles.css +26 -24
  21. package/packages/client/src/components/toast/styles.css +31 -0
  22. package/packages/client/src/directives/sortable.css +5 -0
  23. package/packages/client/src/runtime/drag-and-drop/resize-handle.css +2 -2
  24. package/packages/client/src/styles/components.css +8 -4
  25. package/packages/client/src/styles/fonts/fira-code/5.3.0/LICENSE +93 -0
  26. package/packages/client/src/styles/fonts/fira-code/5.3.0/download.json +47 -0
  27. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-cyrillic-ext-wght-normal.woff2 +0 -0
  28. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-cyrillic-wght-normal.woff2 +0 -0
  29. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-greek-ext-wght-normal.woff2 +0 -0
  30. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-greek-wght-normal.woff2 +0 -0
  31. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-latin-ext-wght-normal.woff2 +0 -0
  32. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-latin-wght-normal.woff2 +0 -0
  33. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-symbols2-wght-normal.woff2 +0 -0
  34. package/packages/client/src/styles/fonts/fira-code/5.3.0/font.css +62 -0
  35. package/packages/client/src/styles/fonts/fira-code/5.3.0/resource.json +82 -0
  36. package/packages/client/src/styles/fonts/inter/5.3.0/LICENSE +93 -0
  37. package/packages/client/src/styles/fonts/inter/5.3.0/download.json +47 -0
  38. package/packages/client/src/styles/fonts/inter/5.3.0/font.css +62 -0
  39. package/packages/client/src/styles/fonts/inter/5.3.0/inter-cyrillic-ext-standard-normal.woff2 +0 -0
  40. package/packages/client/src/styles/fonts/inter/5.3.0/inter-cyrillic-standard-normal.woff2 +0 -0
  41. package/packages/client/src/styles/fonts/inter/5.3.0/inter-greek-ext-standard-normal.woff2 +0 -0
  42. package/packages/client/src/styles/fonts/inter/5.3.0/inter-greek-standard-normal.woff2 +0 -0
  43. package/packages/client/src/styles/fonts/inter/5.3.0/inter-latin-ext-standard-normal.woff2 +0 -0
  44. package/packages/client/src/styles/fonts/inter/5.3.0/inter-latin-standard-normal.woff2 +0 -0
  45. package/packages/client/src/styles/fonts/inter/5.3.0/inter-vietnamese-standard-normal.woff2 +0 -0
  46. package/packages/client/src/styles/fonts/inter/5.3.0/resource.json +82 -0
  47. package/packages/client/src/styles/generated/theme-fonts.css +3 -3
  48. package/packages/client/src/styles/generated/theme-palette.css +1001 -634
  49. package/packages/client/src/styles/generated/theme-runtime.css +938 -607
  50. package/packages/client/src/styles/generated-sources.css +1 -1
  51. package/packages/client/src/styles/layout.css +88 -0
  52. package/packages/client/src/styles/recipes/action.css +4 -16
  53. package/packages/client/src/styles/recipes/disabled.css +8 -0
  54. package/packages/client/src/styles/recipes/option.css +0 -44
  55. package/packages/client/src/styles/recipes/selection.css +28 -39
  56. package/packages/client/src/styles/theme-support.css +26 -42
  57. package/packages/client/src/styles/typography.css +26 -0
  58. package/packages/client/types/assets/bridge.d.ts +1 -2
  59. package/packages/client/types/capabilities/collection.d.ts +7 -0
  60. package/packages/client/types/capabilities/collection.entry.generated.d.ts +3 -0
  61. package/packages/client/types/capabilities/shortcut.d.ts +4 -3
  62. package/packages/client/types/components/accordion/machine.d.ts +4 -4
  63. package/packages/client/types/components/app/contract.d.ts +5 -5
  64. package/packages/client/types/components/badge/contract.d.ts +1 -0
  65. package/packages/client/types/components/box/contract.d.ts +17 -12
  66. package/packages/client/types/components/box/index.d.ts +1 -1
  67. package/packages/client/types/components/button/contract.d.ts +3 -2
  68. package/packages/client/types/components/card/contract.d.ts +27 -16
  69. package/packages/client/types/components/checkbox/contract.d.ts +13 -13
  70. package/packages/client/types/components/common.d.ts +13 -11
  71. package/packages/client/types/components/container/contract.d.ts +4 -3
  72. package/packages/client/types/components/data-grid/contract.d.ts +3 -2
  73. package/packages/client/types/components/date-picker/contract.d.ts +2 -2
  74. package/packages/client/types/components/date-picker/machine.d.ts +11 -11
  75. package/packages/client/types/components/dropdown/contract.d.ts +1 -1
  76. package/packages/client/types/components/dropdown/machine.d.ts +5 -3
  77. package/packages/client/types/components/field/contract.d.ts +4 -4
  78. package/packages/client/types/components/file-upload/contract.d.ts +3 -3
  79. package/packages/client/types/components/file-upload/machine.d.ts +4 -4
  80. package/packages/client/types/components/flex/contract.d.ts +10 -8
  81. package/packages/client/types/components/frame/contract.d.ts +14 -11
  82. package/packages/client/types/components/grid/contract.d.ts +8 -7
  83. package/packages/client/types/components/image/contract.d.ts +1 -0
  84. package/packages/client/types/components/import-flow/contract.d.ts +1 -0
  85. package/packages/client/types/components/input/contract.d.ts +1 -0
  86. package/packages/client/types/components/input/machine.d.ts +2 -2
  87. package/packages/client/types/components/layout.d.ts +91 -35
  88. package/packages/client/types/components/menu/contract.d.ts +27 -10
  89. package/packages/client/types/components/modal/contract.d.ts +22 -5
  90. package/packages/client/types/components/panels/contract.d.ts +2 -2
  91. package/packages/client/types/components/panels/index.d.ts +2 -1
  92. package/packages/client/types/components/panels/machine.d.ts +9 -8
  93. package/packages/client/types/components/radio/contract.d.ts +8 -8
  94. package/packages/client/types/components/scroll-area/contract.d.ts +1 -20
  95. package/packages/client/types/components/section/contract.d.ts +4 -3
  96. package/packages/client/types/components/select/contract.d.ts +3 -3
  97. package/packages/client/types/components/select/machine.d.ts +13 -13
  98. package/packages/client/types/components/select/presentation.d.ts +1 -0
  99. package/packages/client/types/components/sidebar/contract.d.ts +26 -8
  100. package/packages/client/types/components/sidebar/groups.d.ts +4 -0
  101. package/packages/client/types/components/sidebar/index.d.ts +5 -4
  102. package/packages/client/types/components/slider/contract.d.ts +1 -0
  103. package/packages/client/types/components/slider/machine.d.ts +10 -5
  104. package/packages/client/types/components/stack/contract.d.ts +10 -8
  105. package/packages/client/types/components/switch/contract.d.ts +8 -8
  106. package/packages/client/types/components/table/contract.d.ts +6 -5
  107. package/packages/client/types/components/tabs/index.d.ts +2 -1
  108. package/packages/client/types/components/tabs/machine.d.ts +2 -2
  109. package/packages/client/types/components/textarea/contract.d.ts +1 -1
  110. package/packages/client/types/components/toast/machine.d.ts +2 -2
  111. package/packages/client/types/components/tooltip/contract.d.ts +13 -13
  112. package/packages/client/types/components/tooltip/machine.d.ts +3 -7
  113. package/packages/client/types/core.d.ts +3 -1
  114. package/packages/client/types/directives/anchor.d.ts +1 -0
  115. package/packages/client/types/directives/animate.d.ts +3 -0
  116. package/packages/client/types/directives/collection.d.ts +9 -0
  117. package/packages/client/types/directives/index.d.ts +2 -2
  118. package/packages/client/types/docs/transition-docs.d.ts +0 -2
  119. package/packages/client/types/motion/animate.d.ts +7 -2
  120. package/packages/client/types/motion/config.d.ts +118 -0
  121. package/packages/client/types/motion/feedback.d.ts +3 -0
  122. package/packages/client/types/motion/index.d.ts +8 -107
  123. package/packages/client/types/motion/layout.d.ts +25 -0
  124. package/packages/client/types/motion/lifecycle.d.ts +10 -0
  125. package/packages/client/types/motion/owned.d.ts +15 -4
  126. package/packages/client/types/motion/properties.d.ts +17 -0
  127. package/packages/client/types/motion/recipe.d.ts +8 -75
  128. package/packages/client/types/motion/reduced-motion.d.ts +7 -8
  129. package/packages/client/types/motion/registry.d.ts +37 -0
  130. package/packages/client/types/motion/resize-preview.d.ts +26 -0
  131. package/packages/client/types/motion/resize.d.ts +3 -1
  132. package/packages/client/types/motion/size.d.ts +7 -4
  133. package/packages/client/types/runtime/anchored-popover.d.ts +11 -2
  134. package/packages/client/types/runtime/collection-navigation.d.ts +12 -4
  135. package/packages/client/types/runtime/control-size.d.ts +4 -0
  136. package/packages/client/types/runtime/drag-and-drop/index.d.ts +10 -3
  137. package/packages/client/types/runtime/drag-and-drop/sortable/ghost.d.ts +2 -1
  138. package/packages/client/types/runtime/engine/fragment.d.ts +2 -1
  139. package/packages/client/types/runtime/engine/stream.d.ts +5 -9
  140. package/packages/client/types/runtime/focus.d.ts +3 -1
  141. package/packages/client/types/runtime/index.d.ts +2 -2
  142. package/packages/client/types/runtime/layout-participant.d.ts +10 -9
  143. package/packages/client/types/runtime/layout-task.d.ts +9 -0
  144. package/packages/client/types/runtime/morph-engine.d.ts +1 -0
  145. package/packages/client/types/runtime/option-data.d.ts +2 -1
  146. package/packages/client/types/runtime/preferences.d.ts +14 -0
  147. package/packages/client/types/runtime/scroll-area-schema.d.ts +23 -0
  148. package/packages/client/types/runtime/theme.d.ts +6 -4
  149. package/packages/client/types/runtime/ui.d.ts +5 -5
  150. package/packages/client/types/runtime/virtualizer-schema.d.ts +3 -1
  151. package/packages/client/types/runtime/virtualizer-size.d.ts +7 -0
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-B7apK0M-.js +2 -0
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-B7apK0M-.js.map +1 -0
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -1
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +984 -1132
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{anchor-B-CbpFFU.js → anchor-DXCLxWw-.js} +2 -2
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{anchor-B-CbpFFU.js.map → anchor-DXCLxWw-.js.map} +1 -1
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor.js +2 -2
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection-CSrnChwy.js +2 -0
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection-CSrnChwy.js.map +1 -0
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection.js +2 -0
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-DlgeSL0c.js +2 -0
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{resizable-Ctqx_OoS.js.map → resizable-DlgeSL0c.js.map} +1 -1
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +2 -2
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-Qa2EByIB.js +2 -0
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{shortcut-D2NgvMgw.js.map → shortcut-Qa2EByIB.js.map} +1 -1
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +2 -2
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable-CgP1efhO.js +2 -0
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{sortable-CbIOS4Lm.js.map → sortable-CgP1efhO.js.map} +1 -1
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +2 -2
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-BqejlBjS.js +2 -0
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-BqejlBjS.js.map +1 -0
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-DPMSJ1AR.js +2 -0
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-DPMSJ1AR.js.map +1 -0
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BFvGIAs8.js +2 -0
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BFvGIAs8.js.map +1 -0
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-CpUAUTdh.js +5 -0
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-CpUAUTdh.js.map +1 -0
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-et2se66r.js +2 -0
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-et2se66r.js.map +1 -0
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DnEHZCqy.js +2 -0
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DnEHZCqy.js.map +1 -0
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/control-size-BcDu1m1N.js +2 -0
  184. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/control-size-BcDu1m1N.js.map +1 -0
  185. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-de7TruDm.js +2 -0
  186. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-de7TruDm.js.map +1 -0
  187. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DdiMUeJM.js +2 -0
  188. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DdiMUeJM.js.map +1 -0
  189. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-MzcgNRti.js +2 -0
  190. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-MzcgNRti.js.map +1 -0
  191. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-zFOeeob-.js +6 -0
  192. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{element-adapter-native-data-key-DrqJDAVH.js.map → element-adapter-native-data-key-zFOeeob-.js.map} +1 -1
  193. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/feedback-DP_ydw-J.js +2 -0
  194. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/feedback-DP_ydw-J.js.map +1 -0
  195. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/floating-ui.dom-B05VsV_p.js +2 -0
  196. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/floating-ui.dom-B05VsV_p.js.map +1 -0
  197. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-pk_lz9sg.js → focus-BvBkrIcj.js} +2 -2
  198. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-pk_lz9sg.js.map → focus-BvBkrIcj.js.map} +1 -1
  199. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DYfME-Rk.js +2 -0
  200. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-scope-BrYxsrhc.js.map → focus-scope-DYfME-Rk.js.map} +1 -1
  201. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-DVphuQVV.js +2 -0
  202. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-DVphuQVV.js.map +1 -0
  203. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/frame-DsKHMcuL.js +2 -0
  204. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/frame-DsKHMcuL.js.map +1 -0
  205. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/hover-CqeHOHpJ.js +2 -0
  206. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/hover-CqeHOHpJ.js.map +1 -0
  207. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/identity-BMTQyLbq.js +2 -0
  208. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/identity-BMTQyLbq.js.map +1 -0
  209. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-mHPk9rxi.js +2 -0
  210. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-mHPk9rxi.js.map +1 -0
  211. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-task-B6P8q7BH.js +2 -0
  212. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-task-B6P8q7BH.js.map +1 -0
  213. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-wLgk8rAu.js +2 -0
  214. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-wLgk8rAu.js.map +1 -0
  215. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Do4tL7nc.js +2 -0
  216. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Do4tL7nc.js.map +1 -0
  217. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/option-data-Du9mqQPo.js +2 -0
  218. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/option-data-Du9mqQPo.js.map +1 -0
  219. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preferences-BZyZ-kK6.js +2 -0
  220. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preferences-BZyZ-kK6.js.map +1 -0
  221. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preload-helper-BZ1Pz5am.js +1 -0
  222. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/properties-D8pFWF8g.js +2 -0
  223. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/properties-D8pFWF8g.js.map +1 -0
  224. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-DRGrWivx.js +2 -0
  225. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-DRGrWivx.js.map +1 -0
  226. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-preview-hnUhGcMX.js +2 -0
  227. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-preview-hnUhGcMX.js.map +1 -0
  228. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-area-schema-DZgYyysJ.js +2 -0
  229. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-area-schema-DZgYyysJ.js.map +1 -0
  230. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/size-DAtboz8G.js +2 -0
  231. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/size-DAtboz8G.js.map +1 -0
  232. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-CQDZhwd_.js → styles-BvLCjUXV.js} +2 -2
  233. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-BvLCjUXV.js.map +1 -0
  234. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CVVSxrtG.js +4 -0
  235. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CVVSxrtG.js.map +1 -0
  236. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-size-CTy2gO64.js +2 -0
  237. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-size-CTy2gO64.js.map +1 -0
  238. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DGWRKBdw.js +2 -0
  239. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DGWRKBdw.js.map +1 -0
  240. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +2 -2
  241. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-DA4Ii46-.js +2 -0
  242. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-DA4Ii46-.js.map +1 -0
  243. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +2 -2
  244. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-omt0I9Rh.js +2 -0
  245. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-omt0I9Rh.js.map +1 -0
  246. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +2 -2
  247. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-Cr9kEoo9.js +2 -0
  248. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-Cr9kEoo9.js.map +1 -0
  249. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +2 -2
  250. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-CtTM4Gf6.js +2 -0
  251. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-CtTM4Gf6.js.map +1 -0
  252. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +2 -2
  253. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-B4dcq4bn.js +2 -0
  254. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-B4dcq4bn.js.map +1 -0
  255. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +2 -2
  256. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-BEMZqp_I.js +2 -0
  257. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-BEMZqp_I.js.map +1 -0
  258. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +2 -2
  259. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-BeqlTp38.js +2 -0
  260. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-BeqlTp38.js.map +1 -0
  261. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +2 -2
  262. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DCluNmYW.js +2 -0
  263. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DCluNmYW.js.map +1 -0
  264. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +2 -2
  265. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-DkPKkwlt.js +2 -0
  266. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-DkPKkwlt.js.map +1 -0
  267. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +2 -2
  268. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-aSuqkRen.js +2 -0
  269. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-aSuqkRen.js.map +1 -0
  270. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper.js +2 -2
  271. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-2UqpKKXs.js +2 -0
  272. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-2UqpKKXs.js.map +1 -0
  273. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +2 -2
  274. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-DjUHW-EE.js +2 -0
  275. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-DjUHW-EE.js.map +1 -0
  276. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +2 -2
  277. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-DYn805Mg.js +2 -0
  278. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-DYn805Mg.js.map +1 -0
  279. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +2 -2
  280. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-C4TtKM8_.js +2 -0
  281. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-C4TtKM8_.js.map +1 -0
  282. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +2 -2
  283. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-gAYZVe11.js +2 -0
  284. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-gAYZVe11.js.map +1 -0
  285. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +2 -2
  286. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-SBruA-pr.js +2 -0
  287. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-SBruA-pr.js.map +1 -0
  288. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +2 -2
  289. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-C3hjgwMw.js +2 -0
  290. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-C3hjgwMw.js.map +1 -0
  291. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +2 -2
  292. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-b0T3yohM.js +2 -0
  293. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-b0T3yohM.js.map +1 -0
  294. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +2 -2
  295. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-B08DRTzI.js +2 -0
  296. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-B08DRTzI.js.map +1 -0
  297. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +2 -2
  298. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CO-1hVz6.js +2 -0
  299. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CO-1hVz6.js.map +1 -0
  300. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +2 -2
  301. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-BlPgZVqW.js +2 -0
  302. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-BlPgZVqW.js.map +1 -0
  303. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +2 -2
  304. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CDbYmlUb.js +2 -0
  305. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CDbYmlUb.js.map +1 -0
  306. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +2 -2
  307. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-Dxht5Hhg.js +2 -0
  308. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-Dxht5Hhg.js.map +1 -0
  309. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +2 -2
  310. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-Ck_ZV7RN.js +2 -0
  311. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-Ck_ZV7RN.js.map +1 -0
  312. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +2 -2
  313. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-BfCjewp3.js +2 -0
  314. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-BfCjewp3.js.map +1 -0
  315. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +2 -2
  316. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CbDVD_pk.js +2 -0
  317. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CbDVD_pk.js.map +1 -0
  318. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +2 -2
  319. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +299 -441
  320. package/packages/theme-engine/README.md +98 -18
  321. package/packages/theme-engine/THEME_AUTHORING.md +34 -0
  322. package/packages/theme-engine/dist/trellis.js +613 -285
  323. package/packages/theme-engine/fonts/fira-code/5.3.0/LICENSE +93 -0
  324. package/packages/theme-engine/fonts/fira-code/5.3.0/download.json +47 -0
  325. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-cyrillic-ext-wght-normal.woff2 +0 -0
  326. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-cyrillic-wght-normal.woff2 +0 -0
  327. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-greek-ext-wght-normal.woff2 +0 -0
  328. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-greek-wght-normal.woff2 +0 -0
  329. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-latin-ext-wght-normal.woff2 +0 -0
  330. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-latin-wght-normal.woff2 +0 -0
  331. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-symbols2-wght-normal.woff2 +0 -0
  332. package/packages/theme-engine/fonts/fira-code/5.3.0/font.css +62 -0
  333. package/packages/theme-engine/fonts/fira-code/5.3.0/resource.json +82 -0
  334. package/packages/theme-engine/fonts/inter/5.3.0/LICENSE +93 -0
  335. package/packages/theme-engine/fonts/inter/5.3.0/download.json +47 -0
  336. package/packages/theme-engine/fonts/inter/5.3.0/font.css +62 -0
  337. package/packages/theme-engine/fonts/inter/5.3.0/inter-cyrillic-ext-standard-normal.woff2 +0 -0
  338. package/packages/theme-engine/fonts/inter/5.3.0/inter-cyrillic-standard-normal.woff2 +0 -0
  339. package/packages/theme-engine/fonts/inter/5.3.0/inter-greek-ext-standard-normal.woff2 +0 -0
  340. package/packages/theme-engine/fonts/inter/5.3.0/inter-greek-standard-normal.woff2 +0 -0
  341. package/packages/theme-engine/fonts/inter/5.3.0/inter-latin-ext-standard-normal.woff2 +0 -0
  342. package/packages/theme-engine/fonts/inter/5.3.0/inter-latin-standard-normal.woff2 +0 -0
  343. package/packages/theme-engine/fonts/inter/5.3.0/inter-vietnamese-standard-normal.woff2 +0 -0
  344. package/packages/theme-engine/fonts/inter/5.3.0/resource.json +82 -0
  345. package/packages/theme-engine/generated/knobs/v1/color-alpha.json +1 -1
  346. package/packages/theme-engine/generated/knobs/v1/color-foundations.json +1 -1
  347. package/packages/theme-engine/generated/knobs/v1/color-ink.json +1 -1
  348. package/packages/theme-engine/generated/knobs/v1/color-lighting.json +1 -1
  349. package/packages/theme-engine/generated/knobs/v1/color-normalization.json +1 -1
  350. package/packages/theme-engine/generated/knobs/v1/color-ramps.json +1 -1
  351. package/packages/theme-engine/generated/knobs/v1/composition.json +1 -1
  352. package/packages/theme-engine/generated/knobs/v1/depth.json +1 -1
  353. package/packages/theme-engine/generated/knobs/v1/edges.json +1 -1
  354. package/packages/theme-engine/generated/knobs/v1/index.json +572 -85
  355. package/packages/theme-engine/generated/knobs/v1/manifest.json +25 -46
  356. package/packages/theme-engine/generated/knobs/v1/radii.json +50 -1
  357. package/packages/theme-engine/generated/knobs/v1/semantic-actions.json +1 -1
  358. package/packages/theme-engine/generated/knobs/v1/semantic-disabled.json +1 -1
  359. package/packages/theme-engine/generated/knobs/v1/semantic-disclosure.json +1 -1
  360. package/packages/theme-engine/generated/knobs/v1/semantic-intents.json +856 -37
  361. package/packages/theme-engine/generated/knobs/v1/semantic-scrim.json +1 -1
  362. package/packages/theme-engine/generated/knobs/v1/semantic-selection.json +1 -1
  363. package/packages/theme-engine/generated/knobs/v1/semantic-structure.json +1 -1
  364. package/packages/theme-engine/generated/knobs/v1/semantic-text-selection.json +372 -0
  365. package/packages/theme-engine/generated/knobs/v1/sizing-anatomy.json +4 -4
  366. package/packages/theme-engine/generated/knobs/v1/sizing-controls.json +1 -1
  367. package/packages/theme-engine/generated/knobs/v1/sizing-measures.json +1 -1
  368. package/packages/theme-engine/generated/knobs/v1/spacing.json +2 -2
  369. package/packages/theme-engine/generated/knobs/v1/substrates.json +1 -1
  370. package/packages/theme-engine/generated/knobs/v1/surfaces.json +1 -1
  371. package/packages/theme-engine/generated/knobs/v1/typography-anatomy.json +1 -1
  372. package/packages/theme-engine/generated/knobs/v1/typography-fonts.json +158 -40
  373. package/packages/theme-engine/generated/knobs/v1/typography-scale.json +1 -1
  374. package/packages/theme-engine/generated/schemas/theme-config-v1.json +108 -36
  375. package/packages/theme-engine/generated/schemas/theme-manifest-v1.json +10 -37
  376. package/packages/theme-engine/skills/create-trellis-theme/SKILL.md +4 -5
  377. package/packages/client/src/components/app/styles.css +0 -1
  378. package/packages/client/src/components/brand/styles.css +0 -8
  379. package/packages/client/src/styles/motion.css +0 -26
  380. package/packages/client/src/styles/static.css +0 -3
  381. package/packages/client/types/assets/full-runtime.generated.d.ts +0 -2
  382. package/packages/client/types/capabilities/motion.d.ts +0 -6
  383. package/packages/client/types/capabilities/motion.entry.generated.d.ts +0 -3
  384. package/packages/client/types/cdn.d.ts +0 -2
  385. package/packages/client/types/components/entry.generated.d.ts +0 -37
  386. package/packages/client/types/directives/bounds.d.ts +0 -4
  387. package/packages/client/types/directives/layout.d.ts +0 -3
  388. package/packages/client/types/index.d.ts +0 -8
  389. package/packages/client/types/motion/bounds.d.ts +0 -20
  390. package/packages/client/types/motion/controller.d.ts +0 -33
  391. package/packages/client/types/motion/flip.d.ts +0 -14
  392. package/packages/client/types/motion/plan.d.ts +0 -52
  393. package/packages/client/types/motion/stream.d.ts +0 -18
  394. package/packages/client/types/motion/targets.d.ts +0 -23
  395. package/packages/client/types/motion/view.d.ts +0 -27
  396. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis-103fb43eb5e1.css +0 -14030
  397. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +0 -14030
  398. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min-584dec82495c.css +0 -2
  399. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +0 -2
  400. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-COxhbtRZ.js +0 -1
  401. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-CKiK3BQA.js +0 -2
  402. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-CKiK3BQA.js.map +0 -1
  403. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +0 -2
  404. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-Ctqx_OoS.js +0 -2
  405. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-D2NgvMgw.js +0 -2
  406. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable-CbIOS4Lm.js +0 -2
  407. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-CE2UN4Qu.js +0 -2
  408. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-CE2UN4Qu.js.map +0 -1
  409. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-DMrvM3JE.js +0 -2
  410. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-DMrvM3JE.js.map +0 -1
  411. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-lhqk7hfo.js +0 -2
  412. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-lhqk7hfo.js.map +0 -1
  413. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-B32HePGn.js +0 -2
  414. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-B32HePGn.js.map +0 -1
  415. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js +0 -2
  416. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js.map +0 -1
  417. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js +0 -2
  418. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js.map +0 -1
  419. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bl6ng6Hd.js +0 -5
  420. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bl6ng6Hd.js.map +0 -1
  421. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js +0 -2
  422. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js.map +0 -1
  423. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js +0 -2
  424. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js.map +0 -1
  425. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js +0 -2
  426. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js.map +0 -1
  427. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-BxNepYBE.js +0 -2
  428. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-BxNepYBE.js.map +0 -1
  429. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js +0 -2
  430. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js.map +0 -1
  431. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js +0 -2
  432. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js.map +0 -1
  433. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-DrqJDAVH.js +0 -6
  434. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-7hdXmBLE.js +0 -2
  435. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-7hdXmBLE.js.map +0 -1
  436. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js +0 -2
  437. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js.map +0 -1
  438. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BQNpmLZO.js +0 -2
  439. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BQNpmLZO.js.map +0 -1
  440. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BRaKxvab.js +0 -2
  441. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BRaKxvab.js.map +0 -1
  442. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js +0 -2
  443. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js.map +0 -1
  444. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js +0 -2
  445. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js.map +0 -1
  446. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BzLNUDzF.js +0 -2
  447. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BzLNUDzF.js.map +0 -1
  448. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CC6pQ0nu.js +0 -2
  449. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CC6pQ0nu.js.map +0 -1
  450. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CEfr2bmw.js +0 -2
  451. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CEfr2bmw.js.map +0 -1
  452. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CL4bjCqf.js +0 -2
  453. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CL4bjCqf.js.map +0 -1
  454. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js +0 -2
  455. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js.map +0 -1
  456. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_SxTqg5.js +0 -2
  457. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_SxTqg5.js.map +0 -1
  458. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cbyseoex.js +0 -2
  459. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cbyseoex.js.map +0 -1
  460. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cf2hKkwA.js +0 -2
  461. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cf2hKkwA.js.map +0 -1
  462. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js +0 -2
  463. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js.map +0 -1
  464. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cl8rInnJ.js +0 -2
  465. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cl8rInnJ.js.map +0 -1
  466. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ct9H8Hlf.js +0 -2
  467. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ct9H8Hlf.js.map +0 -1
  468. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js +0 -2
  469. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js.map +0 -1
  470. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js +0 -2
  471. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js.map +0 -1
  472. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EqHVGr1d.js +0 -2
  473. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EqHVGr1d.js.map +0 -1
  474. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-FCDgmA0s.js +0 -2
  475. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-FCDgmA0s.js.map +0 -1
  476. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-HqE8R7N1.js +0 -2
  477. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-HqE8R7N1.js.map +0 -1
  478. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-J0oGNBzS.js +0 -2
  479. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-J0oGNBzS.js.map +0 -1
  480. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-O0hEhk-2.js +0 -2
  481. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-O0hEhk-2.js.map +0 -1
  482. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oJwO9fIY.js +0 -2
  483. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oJwO9fIY.js.map +0 -1
  484. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js +0 -2
  485. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js.map +0 -1
  486. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-BKThFI4L.js +0 -2
  487. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-BKThFI4L.js.map +0 -1
  488. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js +0 -2
  489. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-9OT0mn7F.js +0 -2
  490. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-9OT0mn7F.js.map +0 -1
  491. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js +0 -2
  492. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js.map +0 -1
  493. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-RwlK04Cy.js +0 -3
  494. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-RwlK04Cy.js.map +0 -1
  495. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js +0 -2
  496. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js.map +0 -1
  497. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-CQDZhwd_.js.map +0 -1
  498. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-Bg44ZmC3.js +0 -4
  499. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-Bg44ZmC3.js.map +0 -1
  500. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DpoqsP_I.js +0 -1
  501. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-Dnf0aKac.js +0 -1
  502. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-BpFFtrfY.js +0 -1
  503. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-CCPYnOuT.js +0 -1
  504. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-BCkP5gtC.js +0 -1
  505. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-DaT6-YFL.js +0 -1
  506. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-Cc84envj.js +0 -1
  507. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-CtQbyblj.js +0 -1
  508. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DARtpJDT.js +0 -1
  509. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-CPO4XZkB.js +0 -1
  510. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-C-3lKsKm.js +0 -1
  511. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DRH3gncZ.js +0 -2
  512. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DRH3gncZ.js.map +0 -1
  513. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +0 -2
  514. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-BKEbDkKa.js +0 -1
  515. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-RIi2q1IT.js +0 -1
  516. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-MUHGUsup.js +0 -1
  517. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-DNAroAhk.js +0 -1
  518. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-DrGFMWGq.js +0 -1
  519. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-CyUCAbgG.js +0 -1
  520. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-BjLF548F.js +0 -1
  521. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-GpvEBW3K.js +0 -1
  522. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-OztnTlqr.js +0 -1
  523. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CZ7aiASg.js +0 -1
  524. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-G3G5d2Eo.js +0 -1
  525. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-bq7j1uwx.js +0 -1
  526. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-DkP0-rBO.js +0 -1
  527. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-OITEWczP.js +0 -1
  528. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-CkRX2qVO.js +0 -1
  529. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-Z4zMCScs.js +0 -1
  530. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-DAz_hKiB.js +0 -2
  531. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-DAz_hKiB.js.map +0 -1
  532. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +0 -2
  533. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis-ecb43dfd3b7b.js +0 -11
  534. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +0 -11
  535. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min-ecb43dfd3b7b.js +0 -11
  536. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +0 -11
  537. package/packages/theme-engine/generated/knobs/v1/motion.json +0 -128
@@ -1,2 +0,0 @@
1
- import{_ as e,a as t,b as n,g as r,i,l as a,n as o,o as s,r as c,s as l,t as u,v as d,x as f,y as p}from"./element-adapter-native-data-key-DrqJDAVH.js";var m=n(),h=2147483647,g={inset:`unset`,border:`none`,padding:0,margin:0,overflow:`visible`,color:`inherit`,background:`transparent`,width:`auto`,height:`auto`},_=r(function(){return typeof HTMLElement<`u`&&typeof HTMLElement.prototype.showPopover==`function`});function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function y(t){for(var n=1;n<arguments.length;n++){var r=arguments[n]==null?{}:arguments[n];n%2?v(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):v(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var b=2,x=b/2;function S(e){return{x:Math.floor(e.x),y:Math.floor(e.y)}}function C(e){return{x:e.x-x,y:e.y-x}}function w(e){return{x:Math.max(e.x,0),y:Math.max(e.y,0)}}function T(e){return{x:Math.min(e.x,window.innerWidth-b),y:Math.min(e.y,window.innerHeight-b)}}function E(e){var t=e.client,n=T(w(C(S(t))));return DOMRect.fromRect({x:n.x,y:n.y,width:b,height:b})}function D(e){var t=e.clientRect;return{left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`}}function O(e){var t=e.client,n=e.clientRect;return t.x>=n.x&&t.x<=n.x+n.width&&t.y>=n.y&&t.y<=n.y+n.height}function k(e){var t=e.initial,n=document.createElement(`div`);n.setAttribute(p,`true`),_()&&n.setAttribute(`popover`,`manual`);var r=E({client:t});Object.assign(n.style,y(y({position:`fixed`},_()?g:{zIndex:h}),{},{backgroundColor:`transparent`,padding:0,margin:0,boxSizing:`border-box`,pointerEvents:`auto`},D({clientRect:r}))),document.body.appendChild(n),_()&&n.showPopover();var i=(0,m.bind)(window,{type:`pointermove`,listener:function(e){r=E({client:{x:e.clientX,y:e.clientY}}),Object.assign(n.style,D({clientRect:r}))},options:{capture:!0}});return function(e){var t=e.current;if(i(),O({client:t,clientRect:r})){n.remove();return}function a(){o(),n.remove()}var o=(0,m.bindAll)(window,[{type:`pointerdown`,listener:a},{type:`pointermove`,listener:a},{type:`focusin`,listener:a},{type:`focusout`,listener:a},{type:`dragstart`,listener:a},{type:`dragenter`,listener:a},{type:`dragover`,listener:a}],{capture:!0})}}function A(){var e=null;function t(){return e=null,(0,m.bind)(window,{type:`pointermove`,listener:function(t){e={x:t.clientX,y:t.clientY}},options:{capture:!0}})}function n(){var t=null;return function(n){var r=n.eventName,i=n.payload;if(r===`onDragStart`){var a=i.location.initial.input;t=k({initial:e??{x:a.clientX,y:a.clientY}})}if(r===`onDrop`){var o,s=i.location.current.input;(o=t)==null||o({current:{x:s.clientX,y:s.clientY}}),t=null,e=null}}}return{bindEvents:t,getOnPostDispatch:n}}var j=new WeakMap;function M(e){return j.set(e.element,e),function(){j.delete(e.element)}}var N=A(),P=t({typeKey:`element`,defaultDropEffect:`move`,mount:function(e){return l(N.bindEvents(),(0,m.bind)(document,{type:`dragstart`,listener:function(t){if(e.canStart(t)&&!t.defaultPrevented&&t.dataTransfer){var n=t.target;if(n instanceof HTMLElement){var r=j.get(n);if(r){var s=a(t),l={element:r.element,dragHandle:r.dragHandle??null,input:s};if(r.canDrag&&!r.canDrag(l)){t.preventDefault();return}if(r.dragHandle){var p=d({x:s.clientX,y:s.clientY});if(!r.dragHandle.contains(p)){t.preventDefault();return}}var m=r.getInitialDataForExternal?.call(r,l)??null;if(m)for(var h=0,g=Object.entries(m);h<g.length;h++){var _=f(g[h],2),v=_[0],y=_[1];t.dataTransfer.setData(v,y??``)}i()&&!t.dataTransfer.types.includes(`text/plain`)&&!t.dataTransfer.types.includes(`text/uri-list`)&&t.dataTransfer.setData(o,c),t.dataTransfer.setData(u,``);var b={type:`element`,payload:{element:r.element,dragHandle:r.dragHandle??null,data:r.getInitialData?.call(r,l)??{}},startedFrom:`internal`};e.start({event:t,dragType:b})}}}}}))},dispatchEventToSource:function(e){var t,n,r=e.eventName,i=e.payload;(t=j.get(i.source.element))==null||(n=t[r])==null||n.call(t,i)},onPostDispatch:N.getOnPostDispatch()}),F=P.dropTarget;P.monitor;function I(e){var t=l(P.registerUsage(),M(e),s(e.element,{attribute:`draggable`,value:`true`}));return r(t)}var L=function(){if(typeof window>`u`)return null;var e=new Image;return e.src=`data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==`,e}();function R(e){var t=e.nativeSetDragImage;t&&L&&t(L,0,0)}var z=(e,t)=>{let n=e=>{e.dataTransfer&&(e.dataTransfer.effectAllowed=t)};return e.addEventListener(`dragstart`,n),()=>e.removeEventListener(`dragstart`,n)},B=e=>({clientX:e.location.current.input.clientX,clientY:e.location.current.input.clientY}),V=e=>({clientX:e.location.initial.input.clientX,clientY:e.location.initial.input.clientY});export{I as a,R as i,B as n,F as o,V as r,z as t};
2
- //# sourceMappingURL=pdd-BG5sXFGF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdd-BG5sXFGF.js","names":["bind","bindAll","bind"],"sources":["../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.2/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/max-z-index.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.2/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/popover-reset-styles.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.2/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/supports-popover.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.2/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/make-honey-pot-fix.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.2/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/media-types/url-media-type.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.2/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/adapter/element-adapter.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.2/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/element/disable-native-drag-preview.js","../../../../../../../../client/src/runtime/drag-and-drop/pdd.ts"],"sourcesContent":["// Maximum possible z-index\n// https://stackoverflow.com/questions/491052/minimum-and-maximum-value-of-z-index\nexport var maxZIndex = 2147483647;","/**\n * Resets user agent styles for `[popover]` elements.\n *\n * Browsers apply these defaults to popovers (per the WHATWG HTML spec rendering section):\n * - `inset: 0` + `margin: auto` → centers the popover in the viewport\n * - `border: solid` → visible border\n * - `padding: 0.25em` → internal spacing\n * - `overflow: auto` → scrollbars when content overflows\n * - `color: CanvasText` + `background-color: Canvas` → system theme colors\n *\n * This object neutralizes those defaults so the popover behaves like a plain\n * positioned `<div>`, matching the sizing of the legacy (non-popover)\n * fallback container exactly.\n *\n * **Width and height (`auto`)**\n *\n * `width` and `height` override the spec user agent value of `fit-content`\n * with `auto`.\n *\n * _Why?_\n *\n * - When a `[popover]` is sized with `fit-content` and contains a flex\n * container, Safari collapses any flex item that uses `overflow: auto`\n * to `0px`.\n * - Setting the popover's `width` and `height` to `auto` skips the `fit-content`\n * pass and avoids the bug in Safari\n * - Chromium and Firefox tolerate `fit-content` here, but `auto` is safe\n * everywhere and matches our non-popover path\n */\nexport var popoverResetUserAgentStyles = {\n inset: 'unset',\n border: 'none',\n padding: 0,\n margin: 0,\n overflow: 'visible',\n color: 'inherit',\n background: 'transparent',\n width: 'auto',\n height: 'auto'\n};","import { once } from '../public-utils/once';\n\n// Using `once` as the value won't change in a browser\n\n/**\n * Returns `true` if the browser supports the Popover API (top-layer).\n *\n * When supported, elements with `popover=\"manual\"` can be promoted to the\n * browser's top layer via `element.showPopover()`, which is more reliable\n * than `z-index` for ensuring an element renders above everything else.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Popover_API\n */\nexport var supportsPopover = once(function supportsPopover() {\n return typeof HTMLElement !== 'undefined' && typeof HTMLElement.prototype.showPopover === 'function';\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { bind, bindAll } from 'bind-event-listener';\nimport { maxZIndex } from '../util/max-z-index';\nimport { popoverResetUserAgentStyles } from '../util/popover-reset-styles';\nimport { supportsPopover } from '../util/supports-popover';\nimport { honeyPotDataAttribute } from './honey-pot-data-attribute';\nvar honeyPotSize = 2;\nvar halfHoneyPotSize = honeyPotSize / 2;\n\n/**\n * `clientX` and `clientY` can be in sub pixels (eg `2.332`)\n * However, browser hitbox testing is commonly do to the closest pixel.\n *\n * → https://issues.chromium.org/issues/40940531\n *\n * To be sure that the honey pot will be over the `client` position,\n * we `.floor()` `clientX` and`clientY` and then make it `2px` in size.\n **/\nfunction floorToClosestPixel(point) {\n return {\n x: Math.floor(point.x),\n y: Math.floor(point.y)\n };\n}\n\n/**\n * We want to make sure the honey pot sits around the users position.\n * This seemed to be the most resilient while testing.\n */\nfunction pullBackByHalfHoneyPotSize(point) {\n return {\n x: point.x - halfHoneyPotSize,\n y: point.y - halfHoneyPotSize\n };\n}\n\n/**\n * Prevent the honey pot from changing the window size.\n * This is super unlikely to occur, but just being safe.\n */\nfunction preventGoingBackwardsOffScreen(point) {\n return {\n x: Math.max(point.x, 0),\n y: Math.max(point.y, 0)\n };\n}\n\n/**\n * Prevent the honey pot from changing the window size.\n * This is super unlikely to occur, but just being safe.\n */\nfunction preventGoingForwardsOffScreen(point) {\n return {\n x: Math.min(point.x, window.innerWidth - honeyPotSize),\n y: Math.min(point.y, window.innerHeight - honeyPotSize)\n };\n}\n\n/**\n * Create a `2x2` `DOMRect` around the `client` position\n */\nfunction getHoneyPotRectFor(_ref) {\n var client = _ref.client;\n var point = preventGoingForwardsOffScreen(preventGoingBackwardsOffScreen(pullBackByHalfHoneyPotSize(floorToClosestPixel(client))));\n\n // When debugging, it is helpful to\n // make this element a bit bigger\n return DOMRect.fromRect({\n x: point.x,\n y: point.y,\n width: honeyPotSize,\n height: honeyPotSize\n });\n}\nfunction getRectStyles(_ref2) {\n var clientRect = _ref2.clientRect;\n return {\n left: \"\".concat(clientRect.left, \"px\"),\n top: \"\".concat(clientRect.top, \"px\"),\n width: \"\".concat(clientRect.width, \"px\"),\n height: \"\".concat(clientRect.height, \"px\")\n };\n}\nfunction isWithin(_ref3) {\n var client = _ref3.client,\n clientRect = _ref3.clientRect;\n return (\n // is within horizontal bounds\n client.x >= clientRect.x && client.x <= clientRect.x + clientRect.width &&\n // is within vertical bounds\n client.y >= clientRect.y && client.y <= clientRect.y + clientRect.height\n );\n}\n/**\n * The honey pot fix is designed to get around a painful bug in all browsers.\n *\n * [Overview](https://www.youtube.com/watch?v=udE9qbFTeQg)\n *\n * **Background**\n *\n * When a drag starts, browsers incorrectly think that the users pointer is\n * still depressed where the drag started. Any element that goes under this position\n * will be entered into, causing `\"mouseenter\"` events and `\":hover\"` styles to be applied.\n *\n * _This is a violation of the spec_\n *\n * > \"From the moment that the user agent is to initiate the drag-and-drop operation,\n * > until the end \tof the drag-and-drop operation, device input events\n * > (e.g. mouse and keyboard events) must be suppressed.\"\n * >\n * > - https://html.spec.whatwg.org/multipage/dnd.html#drag-and-drop-processing-model\n *\n * _Some impacts_\n *\n * - `\":hover\"` styles being applied where they shouldn't (looks messy)\n * - components such as tooltips responding to `\"mouseenter\"` can show during a drag,\n * and on an element the user isn't even over\n *\n * Bug: https://issues.chromium.org/issues/41129937\n *\n * **Honey pot fix**\n *\n * 1. Create an element where the browser thinks the depressed pointer is\n * to absorb the incorrect pointer events\n * 2. Remove that element when it is no longer needed\n */\nfunction mountHoneyPot(_ref4) {\n var initial = _ref4.initial;\n var element = document.createElement('div');\n element.setAttribute(honeyPotDataAttribute, 'true');\n\n // Using popover=\"manual\" to place the element in the browser's top layer.\n // This ensures the honey pot is visually on top of everything else,\n // including elements using z-index and other stacking contexts.\n // \"manual\" means no light dismiss — we manage the lifecycle ourselves.\n // Falls back to position:fixed + maxZIndex when the popover API is not available.\n if (supportsPopover()) {\n element.setAttribute('popover', 'manual');\n }\n\n // can shift during the drag thanks to Firefox\n var clientRect = getHoneyPotRectFor({\n client: initial\n });\n Object.assign(element.style, _objectSpread(_objectSpread({\n position: 'fixed'\n }, supportsPopover() ?\n // needs to come first as it has 'inset: unset' which\n // needs to be overridden by our top / left values\n popoverResetUserAgentStyles : {\n // Fallback: using maximum possible z-index so that this element\n // will always be on top of other positioned content.\n zIndex: maxZIndex\n }), {}, {\n // Setting a background color explicitly to avoid any inherited styles.\n // Looks like this could be `opacity: 0`, but worried that _might_\n // cause the element to be ignored on some platforms.\n // When debugging, set backgroundColor to something like \"red\".\n backgroundColor: 'transparent',\n // Being explicit to avoid inheriting styles\n padding: 0,\n margin: 0,\n boxSizing: 'border-box',\n // We want this element to absorb pointer events,\n // it's kind of the whole point 😉\n pointerEvents: 'auto'\n }, getRectStyles({\n clientRect: clientRect\n })));\n document.body.appendChild(element);\n if (supportsPopover()) {\n element.showPopover();\n }\n\n /**\n * 🦊 In firefox we can get `\"pointermove\"` events after the drag\n * has started, which is a spec violation.\n * The final `\"pointermove\"` will reveal where the \"depressed\" position\n * is for our honey pot fix.\n */\n var unbindPointerMove = bind(window, {\n type: 'pointermove',\n listener: function listener(event) {\n var client = {\n x: event.clientX,\n y: event.clientY\n };\n clientRect = getHoneyPotRectFor({\n client: client\n });\n Object.assign(element.style, getRectStyles({\n clientRect: clientRect\n }));\n },\n // using capture so we are less likely to be impacted by event stopping\n options: {\n capture: true\n }\n });\n return function finish(_ref5) {\n var current = _ref5.current;\n // Don't need this any more\n unbindPointerMove();\n\n // If the user is hover the honey pot, we remove it\n // so that the user can continue to interact with the page normally.\n if (isWithin({\n client: current,\n clientRect: clientRect\n })) {\n element.remove();\n return;\n }\n function cleanup() {\n unbindPostDragEvents();\n element.remove();\n }\n var unbindPostDragEvents = bindAll(window, [{\n type: 'pointerdown',\n listener: cleanup\n }, {\n type: 'pointermove',\n listener: cleanup\n }, {\n type: 'focusin',\n listener: cleanup\n }, {\n type: 'focusout',\n listener: cleanup\n },\n // a 'pointerdown' should happen before 'dragstart', but just being super safe\n {\n type: 'dragstart',\n listener: cleanup\n },\n // if the user has dragged something out of the window\n // and then is dragging something back into the window\n // the first events we will see are \"dragenter\" (and then \"dragover\").\n // So if we see any of these we need to clear the post drag fix.\n {\n type: 'dragenter',\n listener: cleanup\n }, {\n type: 'dragover',\n listener: cleanup\n }\n\n // Not adding a \"wheel\" event listener, as \"wheel\" by itself does not\n // resolve the bug.\n ], {\n // Using `capture` so less likely to be impacted by other code stopping events\n capture: true\n });\n };\n}\nexport function makeHoneyPotFix() {\n var latestPointerMove = null;\n function bindEvents() {\n // For sanity, only collecting this value from when events are first bound.\n // This prevents the case where a super old \"pointermove\" could be used\n // from a prior interaction.\n latestPointerMove = null;\n return bind(window, {\n type: 'pointermove',\n listener: function listener(event) {\n latestPointerMove = {\n x: event.clientX,\n y: event.clientY\n };\n },\n // listening for pointer move in capture phase\n // so we are less likely to be impacted by events being stopped.\n options: {\n capture: true\n }\n });\n }\n function getOnPostDispatch() {\n var finish = null;\n return function onPostEvent(_ref6) {\n var eventName = _ref6.eventName,\n payload = _ref6.payload;\n // We are adding the honey pot `onDragStart` so we don't\n // impact the creation of the native drag preview.\n if (eventName === 'onDragStart') {\n var input = payload.location.initial.input;\n\n // Sometimes there will be no latest \"pointermove\" (eg iOS).\n // In which case, we use the start position of the drag.\n var initial = latestPointerMove !== null && latestPointerMove !== void 0 ? latestPointerMove : {\n x: input.clientX,\n y: input.clientY\n };\n\n // Don't need to defensively call `finish()` as `onDrop` from\n // one interaction is guaranteed to be called before `onDragStart`\n // of the next.\n finish = mountHoneyPot({\n initial: initial\n });\n }\n if (eventName === 'onDrop') {\n var _finish;\n var _input = payload.location.current.input;\n (_finish = finish) === null || _finish === void 0 || _finish({\n current: {\n x: _input.clientX,\n y: _input.clientY\n }\n });\n finish = null;\n // this interaction is finished, we want to use\n // the latest \"pointermove\" for each interaction\n latestPointerMove = null;\n }\n };\n }\n return {\n bindEvents: bindEvents,\n getOnPostDispatch: getOnPostDispatch\n };\n}","// Why we put the media types in their own files:\n//\n// - we are not putting them all in one file as not all adapters need all types\n// - we are not putting them in the external helpers as some things just need the\n// types and not the external functions code\nexport var URLMediaType = 'text/uri-list';","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { bind } from 'bind-event-listener';\nimport { getElementFromPointWithoutHoneypot } from '../honey-pot-fix/get-element-from-point-without-honey-pot';\nimport { makeHoneyPotFix } from '../honey-pot-fix/make-honey-pot-fix';\nimport { makeAdapter } from '../make-adapter/make-adapter';\nimport { combine } from '../public-utils/combine';\nimport { once } from '../public-utils/once';\nimport { addAttribute } from '../util/add-attribute';\nimport { androidFallbackText, isAndroid } from '../util/android';\nimport { getInput } from '../util/get-input';\nimport { textMediaType } from '../util/media-types/text-media-type';\nimport { URLMediaType } from '../util/media-types/url-media-type';\nimport { elementAdapterNativeDataKey } from './element-adapter-native-data-key';\nvar draggableRegistry = new WeakMap();\nfunction addToRegistry(args) {\n draggableRegistry.set(args.element, args);\n return function cleanup() {\n draggableRegistry.delete(args.element);\n };\n}\nvar honeyPotFix = makeHoneyPotFix();\nvar adapter = makeAdapter({\n typeKey: 'element',\n defaultDropEffect: 'move',\n mount: function mount(api) {\n /** Binding event listeners the `document` rather than `window` so that\n * this adapter always gets preference over the text adapter.\n * `document` is the first `EventTarget` under `window`\n * https://twitter.com/alexandereardon/status/1604658588311465985\n */\n return combine(honeyPotFix.bindEvents(), bind(document, {\n type: 'dragstart',\n listener: function listener(event) {\n var _entry$dragHandle, _entry$getInitialData, _entry$getInitialData2, _entry$dragHandle2, _entry$getInitialData3, _entry$getInitialData4;\n if (!api.canStart(event)) {\n return;\n }\n\n // If the \"dragstart\" event is cancelled, then a drag won't start\n // There will be no further drag operation events (eg no \"dragend\" event)\n if (event.defaultPrevented) {\n return;\n }\n\n // Technically `dataTransfer` can be `null` according to the types\n // But that behaviour does not seem to appear in the spec.\n // If there is not `dataTransfer`, we can assume something is wrong and not\n // start a drag\n if (!event.dataTransfer) {\n // Including this code on \"test\" and \"development\" environments:\n // - Browser tests commonly run against \"development\" builds\n // - Unit tests commonly run in \"test\"\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"\\n It appears as though you have are not testing DragEvents correctly.\\n\\n - If you are unit testing, ensure you have polyfilled DragEvent.\\n - If you are browser testing, ensure you are dispatching drag events correctly.\\n\\n Please see our testing guides for more information:\\n https://atlassian.design/components/pragmatic-drag-and-drop/core-package/testing\\n \".replace(/ {2}/g, ''));\n }\n return;\n }\n\n // the closest parent that is a draggable element will be marked as\n // the `event.target` for the event\n var target = event.target;\n\n // this source is only for elements\n // Note: only HTMLElements can have the \"draggable\" attribute\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n // see if the thing being dragged is owned by us\n var entry = draggableRegistry.get(target);\n\n // no matching element found\n // → dragging an element with `draggable=\"true\"` that is not controlled by us\n if (!entry) {\n return;\n }\n\n /**\n * A text selection drag _can_ have the `draggable` element be\n * the `event.target` if the user is dragging the text selection\n * from the `draggable`.\n *\n * To know if the `draggable` is being dragged, we look at whether any\n * `\"text/plain\"` data is being dragged. If it is, then a text selection\n * drag is occurring.\n *\n * This behaviour has been validated on:\n *\n * - Chrome@128 on Android@14\n * - Chrome@128 on iOS@17.6.1\n * - Chrome@128 on Windows@11\n * - Chrome@128 on MacOS@14.6.1\n * - Firefox@129 on Windows@11 (not possible for user to select text in a draggable)\n * - Firefox@129 on MacOS@14.6.1 (not possible for user to select text in a draggable)\n *\n * Note: Could usually just use: `event.dataTransfer.types.includes(textMediaType)`\n * but unfortunately ProseMirror is always setting `\"\"` as the dragged text\n *\n * Note: Unfortunately editor is (heavily) leaning on the current functionality today\n * and unwinding it will be a decent amount of effort. So for now, a text selection\n * where the `event.target` is a `draggable` element will still trigger the\n * element adapter.\n *\n * // Future state:\n * if(event.dataTransfer.getData(textMediaType)) {\n * \treturn;\n * }\n *\n */\n\n var input = getInput(event);\n var feedback = {\n element: entry.element,\n dragHandle: (_entry$dragHandle = entry.dragHandle) !== null && _entry$dragHandle !== void 0 ? _entry$dragHandle : null,\n input: input\n };\n\n // Check: does the draggable want to allow dragging?\n if (entry.canDrag && !entry.canDrag(feedback)) {\n // cancel drag operation if we cannot drag\n event.preventDefault();\n return;\n }\n\n // Check: is there a drag handle and is the user using it?\n if (entry.dragHandle) {\n // technically don't need this util, but just being\n // consistent with how we look up what is under the users\n // cursor.\n var over = getElementFromPointWithoutHoneypot({\n x: input.clientX,\n y: input.clientY\n });\n\n // if we are not dragging from the drag handle (or something inside the drag handle)\n // then we will cancel the active drag\n if (!entry.dragHandle.contains(over)) {\n event.preventDefault();\n return;\n }\n }\n\n /**\n * **Goal**\n * Pass information to other applications\n *\n * **Approach**\n * Put data into the native data store\n *\n * **What about the native adapter?**\n * When the element adapter puts native data into the native data store\n * the native adapter is not triggered in the current window,\n * but a native adapter in an external window _can_ be triggered\n *\n * **Why bake this into core?**\n * This functionality could be pulled out and exposed inside of\n * `onGenerateDragPreview`. But decided to make it a part of the\n * base API as it felt like a common enough use case and ended\n * up being a similar amount of code to include this function as\n * it was to expose the hook for it\n */\n var nativeData = (_entry$getInitialData = (_entry$getInitialData2 = entry.getInitialDataForExternal) === null || _entry$getInitialData2 === void 0 ? void 0 : _entry$getInitialData2.call(entry, feedback)) !== null && _entry$getInitialData !== void 0 ? _entry$getInitialData : null;\n if (nativeData) {\n for (var _i = 0, _Object$entries = Object.entries(nativeData); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n key = _Object$entries$_i[0],\n data = _Object$entries$_i[1];\n event.dataTransfer.setData(key, data !== null && data !== void 0 ? data : '');\n }\n }\n\n /**\n * 📱 For Android devices, a drag operation will not start unless\n * \"text/plain\" or \"text/uri-list\" data exists in the native data store\n * https://twitter.com/alexandereardon/status/1732189803754713424\n *\n * Tested on:\n * Device: Google Pixel 5\n * Android version: 14 (November 5, 2023)\n * Chrome version: 120.0\n */\n if (isAndroid() && !event.dataTransfer.types.includes(textMediaType) && !event.dataTransfer.types.includes(URLMediaType)) {\n event.dataTransfer.setData(textMediaType, androidFallbackText);\n }\n\n /**\n * 1. Must set any media type for `iOS15` to work\n * 2. We are also doing adding data so that the native adapter\n * can know that the element adapter has handled this drag\n *\n * We used to wrap this `setData()` in a `try/catch` for Firefox,\n * but it looks like that was not needed.\n *\n * Tested using: https://codesandbox.io/s/checking-firefox-throw-behaviour-on-dragstart-qt8h4f\n *\n * - ✅ Firefox@70.0 (Oct 2019) on macOS Sonoma\n * - ✅ Firefox@70.0 (Oct 2019) on macOS Big Sur\n * - ✅ Firefox@70.0 (Oct 2019) on Windows 10\n *\n * // just checking a few more combinations to be super safe\n *\n * - ✅ Chrome@78 (Oct 2019) on macOS Big Sur\n * - ✅ Chrome@78 (Oct 2019) on Windows 10\n * - ✅ Safari@14.1 on macOS Big Sur\n */\n event.dataTransfer.setData(elementAdapterNativeDataKey, '');\n var payload = {\n element: entry.element,\n dragHandle: (_entry$dragHandle2 = entry.dragHandle) !== null && _entry$dragHandle2 !== void 0 ? _entry$dragHandle2 : null,\n data: (_entry$getInitialData3 = (_entry$getInitialData4 = entry.getInitialData) === null || _entry$getInitialData4 === void 0 ? void 0 : _entry$getInitialData4.call(entry, feedback)) !== null && _entry$getInitialData3 !== void 0 ? _entry$getInitialData3 : {}\n };\n var dragType = {\n type: 'element',\n payload: payload,\n startedFrom: 'internal'\n };\n api.start({\n event: event,\n dragType: dragType\n });\n }\n }));\n },\n dispatchEventToSource: function dispatchEventToSource(_ref) {\n var _draggableRegistry$ge, _draggableRegistry$ge2;\n var eventName = _ref.eventName,\n payload = _ref.payload;\n // During a drag operation, a draggable can be:\n // - remounted with different functions\n // - removed completely\n // So we need to get the latest entry from the registry in order\n // to call the latest event functions\n\n (_draggableRegistry$ge = draggableRegistry.get(payload.source.element)) === null || _draggableRegistry$ge === void 0 || (_draggableRegistry$ge2 = _draggableRegistry$ge[eventName]) === null || _draggableRegistry$ge2 === void 0 || _draggableRegistry$ge2.call(_draggableRegistry$ge,\n // I cannot seem to get the types right here.\n // TS doesn't seem to like that one event can need `nativeSetDragImage`\n // @ts-expect-error\n payload);\n },\n onPostDispatch: honeyPotFix.getOnPostDispatch()\n});\nexport var dropTargetForElements = adapter.dropTarget;\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport var monitorForElements = adapter.monitor;\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function draggable(args) {\n // Guardrail: warn if the drag handle is not contained in draggable element\n if (process.env.NODE_ENV !== 'production') {\n if (args.dragHandle && !args.element.contains(args.dragHandle)) {\n // eslint-disable-next-line no-console\n console.warn('Drag handle element must be contained in draggable element', {\n element: args.element,\n dragHandle: args.dragHandle\n });\n }\n }\n // Guardrail: warn if the draggable element is already registered\n if (process.env.NODE_ENV !== 'production') {\n var existing = draggableRegistry.get(args.element);\n if (existing) {\n // eslint-disable-next-line no-console\n console.warn('You have already registered a `draggable` on the same element', {\n existing: existing,\n proposed: args\n });\n }\n }\n var cleanup = combine(\n // making the draggable register the adapter rather than drop targets\n // this is because you *must* have a draggable element to start a drag\n // but you _might_ not have any drop targets immediately\n // (You might create drop targets async)\n adapter.registerUsage(), addToRegistry(args), addAttribute(args.element, {\n attribute: 'draggable',\n value: 'true'\n }));\n\n // Wrapping in `once` to prevent unexpected side effects if consumers call\n // the clean up function multiple times.\n return once(cleanup);\n}\n\n/** Common event payload for all events */\n\n/** A map containing payloads for all events */\n\n/** Common event payload for all drop target events */\n\n/** A map containing payloads for all events on drop targets */\n\n/** Arguments given to all feedback functions (eg `canDrag()`) on for a `draggable()` */\n\n/** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForElements()` */\n\n/** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForElements` */","// In order to disable the native drag preview you can\n// use `event.dataTransfer.setDragImage()` to set a small\n// invisible image as the drag preview.\n// There are alternative techniques,\n// (eg setting opacity to in onGenerateDragPreview and then 1 in onDragStart)\n// but the technique in this file worked best across browsers and platforms\n\n// Here we are preloading the image so that it is ready for the first drag.\n// Even though the image is base64 encoded, the browser queues an async task\n// to decode the image. The image needs to be decoded before it can be used\nvar tinyTransparentImage = function () {\n // SSR safe\n if (typeof window === 'undefined') {\n return null;\n }\n\n // Image generated by: https://png-pixel.com/\n // It is a 1x1 transparent gif\n // It is the smallest possible transparent image we could find that works on all platforms\n // Note: using an encoded SVG would be nicer code, but it doesn't work on iOS\n var img = new Image();\n img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';\n return img;\n}();\nexport function disableNativeDragPreview(_ref) {\n var nativeSetDragImage = _ref.nativeSetDragImage;\n if (nativeSetDragImage && tinyTransparentImage) {\n nativeSetDragImage(tinyTransparentImage, 0, 0);\n }\n}","import type {ElementEventPayloadMap} from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\n\ntype ElementDragEvent = ElementEventPayloadMap['onDrag'] | ElementEventPayloadMap['onDragStart']\n | ElementEventPayloadMap['onDropTargetChange'] | ElementEventPayloadMap['onDrop'];\ntype DragInput = Readonly<{clientX: number; clientY: number}>;\n\nconst bindDragEffectAllowed = (\n element: HTMLElement,\n effect: DataTransfer['effectAllowed'],\n): (() => void) => {\n const setEffect = (event: DragEvent): void => {\n if (event.dataTransfer) event.dataTransfer.effectAllowed = effect;\n };\n element.addEventListener('dragstart', setEffect);\n return () => element.removeEventListener('dragstart', setEffect);\n};\n\nconst currentDragInput = (event: ElementDragEvent): DragInput => ({\n clientX: event.location.current.input.clientX,\n clientY: event.location.current.input.clientY,\n});\n\nconst initialDragInput = (event: ElementEventPayloadMap['onDragStart']): DragInput => ({\n clientX: event.location.initial.input.clientX,\n clientY: event.location.initial.input.clientY,\n});\n\nexport {bindDragEffectAllowed, currentDragInput, initialDragInput};\nexport type {DragInput, ElementDragEvent};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6],"mappings":"kKAEW,EAAY,WC2BZ,EAA8B,CACvC,MAAO,QACP,OAAQ,OACR,QAAS,EACT,OAAQ,EACR,SAAU,UACV,MAAO,UACP,WAAY,cACZ,MAAO,OACP,OAAQ,MACV,EC1BW,EAAkB,EAAK,UAA2B,CAC3D,OAAO,OAAO,YAAgB,KAAe,OAAO,YAAY,UAAU,aAAgB,UAC5F,CAAC,ECdD,SAAS,EAAQ,EAAG,EAAG,CAAE,IAAI,EAAI,OAAO,KAAK,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAI,EAAI,OAAO,sBAAsB,CAAC,EAAG,IAAM,EAAI,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAC,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAG,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAAS,EAAc,EAAG,CAAE,IAAK,IAAI,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CAAE,IAAI,EAAY,UAAU,IAAlB,KAAsC,CAAC,EAAhB,UAAU,GAAS,EAAI,EAAI,EAAQ,OAAO,CAAC,EAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,SAAU,EAAG,CAAE,EAAgB,EAAG,EAAG,EAAE,EAAE,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiB,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAI,EAAQ,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAe,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAO,CAAG,CAMtb,IAAI,EAAe,EACf,EAAmB,EAAe,EAWtC,SAAS,EAAoB,EAAO,CAClC,MAAO,CACL,EAAG,KAAK,MAAM,EAAM,CAAC,EACrB,EAAG,KAAK,MAAM,EAAM,CAAC,CACvB,CACF,CAMA,SAAS,EAA2B,EAAO,CACzC,MAAO,CACL,EAAG,EAAM,EAAI,EACb,EAAG,EAAM,EAAI,CACf,CACF,CAMA,SAAS,EAA+B,EAAO,CAC7C,MAAO,CACL,EAAG,KAAK,IAAI,EAAM,EAAG,CAAC,EACtB,EAAG,KAAK,IAAI,EAAM,EAAG,CAAC,CACxB,CACF,CAMA,SAAS,EAA8B,EAAO,CAC5C,MAAO,CACL,EAAG,KAAK,IAAI,EAAM,EAAG,OAAO,WAAa,CAAY,EACrD,EAAG,KAAK,IAAI,EAAM,EAAG,OAAO,YAAc,CAAY,CACxD,CACF,CAKA,SAAS,EAAmB,EAAM,CAChC,IAAI,EAAS,EAAK,OACd,EAAQ,EAA8B,EAA+B,EAA2B,EAAoB,CAAM,CAAC,CAAC,CAAC,EAIjI,OAAO,QAAQ,SAAS,CACtB,EAAG,EAAM,EACT,EAAG,EAAM,EACT,MAAO,EACP,OAAQ,CACV,CAAC,CACH,CACA,SAAS,EAAc,EAAO,CAC5B,IAAI,EAAa,EAAM,WACvB,MAAO,CACL,KAAM,GAAU,EAAW,SAC3B,IAAK,GAAU,EAAW,QAC1B,MAAO,GAAU,EAAW,UAC5B,OAAQ,GAAU,EAAW,UAC/B,CACF,CACA,SAAS,EAAS,EAAO,CACvB,IAAI,EAAS,EAAM,OACjB,EAAa,EAAM,WACrB,OAEE,EAAO,GAAK,EAAW,GAAK,EAAO,GAAK,EAAW,EAAI,EAAW,OAElE,EAAO,GAAK,EAAW,GAAK,EAAO,GAAK,EAAW,EAAI,EAAW,MAEtE,CAkCA,SAAS,EAAc,EAAO,CAC5B,IAAI,EAAU,EAAM,QAChB,EAAU,SAAS,cAAc,KAAK,EAC1C,EAAQ,aAAa,EAAuB,MAAM,EAO9C,EAAgB,GAClB,EAAQ,aAAa,UAAW,QAAQ,EAI1C,IAAI,EAAa,EAAmB,CAClC,OAAQ,CACV,CAAC,EACD,OAAO,OAAO,EAAQ,MAAO,EAAc,EAAc,CACvD,SAAU,OACZ,EAAG,EAAgB,EAGnB,EAA8B,CAG5B,OAAQ,CACV,CAAC,EAAG,CAAC,EAAG,CAKN,gBAAiB,cAEjB,QAAS,EACT,OAAQ,EACR,UAAW,aAGX,cAAe,MACjB,EAAG,EAAc,CACH,YACd,CAAC,CAAC,CAAC,EACH,SAAS,KAAK,YAAY,CAAO,EAC7B,EAAgB,GAClB,EAAQ,YAAY,EAStB,IAAI,GAAA,EAAoBA,EAAAA,KAAAA,CAAK,OAAQ,CACnC,KAAM,cACN,SAAU,SAAkB,EAAO,CAKjC,EAAa,EAAmB,CAC9B,OAAQ,CAJR,EAAG,EAAM,QACT,EAAG,EAAM,OAGI,CACf,CAAC,EACD,OAAO,OAAO,EAAQ,MAAO,EAAc,CAC7B,YACd,CAAC,CAAC,CACJ,EAEA,QAAS,CACP,QAAS,EACX,CACF,CAAC,EACD,OAAO,SAAgB,EAAO,CAC5B,IAAI,EAAU,EAAM,QAMpB,GAJA,EAAkB,EAId,EAAS,CACX,OAAQ,EACI,YACd,CAAC,EAAG,CACF,EAAQ,OAAO,EACf,MACF,CACA,SAAS,GAAU,CACjB,EAAqB,EACrB,EAAQ,OAAO,CACjB,CACA,IAAI,GAAA,EAAuBC,EAAAA,QAAAA,CAAQ,OAAQ,CAAC,CAC1C,KAAM,cACN,SAAU,CACZ,EAAG,CACD,KAAM,cACN,SAAU,CACZ,EAAG,CACD,KAAM,UACN,SAAU,CACZ,EAAG,CACD,KAAM,WACN,SAAU,CACZ,EAEA,CACE,KAAM,YACN,SAAU,CACZ,EAKA,CACE,KAAM,YACN,SAAU,CACZ,EAAG,CACD,KAAM,WACN,SAAU,CACZ,CAIA,EAAG,CAED,QAAS,EACX,CAAC,CACH,CACF,CACA,SAAgB,GAAkB,CAChC,IAAI,EAAoB,KACxB,SAAS,GAAa,CAKpB,MADA,GAAoB,MACpB,EAAOD,EAAAA,KAAAA,CAAK,OAAQ,CAClB,KAAM,cACN,SAAU,SAAkB,EAAO,CACjC,EAAoB,CAClB,EAAG,EAAM,QACT,EAAG,EAAM,OACX,CACF,EAGA,QAAS,CACP,QAAS,EACX,CACF,CAAC,CACH,CACA,SAAS,GAAoB,CAC3B,IAAI,EAAS,KACb,OAAO,SAAqB,EAAO,CACjC,IAAI,EAAY,EAAM,UACpB,EAAU,EAAM,QAGlB,GAAI,IAAc,cAAe,CAC/B,IAAI,EAAQ,EAAQ,SAAS,QAAQ,MAYrC,EAAS,EAAc,CACrB,QATY,GAAiF,CAC7F,EAAG,EAAM,QACT,EAAG,EAAM,OACX,CAOA,CAAC,CACH,CACA,GAAI,IAAc,SAAU,CAC1B,IAAI,EACA,EAAS,EAAQ,SAAS,QAAQ,OACrC,EAAU,IAAY,MAA8B,EAAQ,CAC3D,QAAS,CACP,EAAG,EAAO,QACV,EAAG,EAAO,OACZ,CACF,CAAC,EACD,EAAS,KAGT,EAAoB,IACtB,CACF,CACF,CACA,MAAO,CACO,aACO,mBACrB,CACF,CEtTA,IAAI,EAAoB,IAAI,QAC5B,SAAS,EAAc,EAAM,CAE3B,OADA,EAAkB,IAAI,EAAK,QAAS,CAAI,EACjC,UAAmB,CACxB,EAAkB,OAAO,EAAK,OAAO,CACvC,CACF,CACA,IAAI,EAAc,EAAgB,EAC9B,EAAU,EAAY,CACxB,QAAS,UACT,kBAAmB,OACnB,MAAO,SAAe,EAAK,CAMzB,OAAO,EAAQ,EAAY,WAAW,GAAA,EAAGE,EAAAA,KAAAA,CAAK,SAAU,CACtD,KAAM,YACN,SAAU,SAAkB,EAAO,CAE5B,KAAI,SAAS,CAAK,GAMnB,GAAM,kBAQL,EAAM,aAaX,KAAI,EAAS,EAAM,OAIb,gBAAkB,YAKxB,KAAI,EAAQ,EAAkB,IAAI,CAAM,EAInC,KAqCL,KAAI,EAAQ,EAAS,CAAK,EACtB,EAAW,CACb,QAAS,EAAM,QACf,WAAiC,EAAM,YAA2E,KAC3G,OACT,EAGA,GAAI,EAAM,SAAW,CAAC,EAAM,QAAQ,CAAQ,EAAG,CAE7C,EAAM,eAAe,EACrB,MACF,CAGA,GAAI,EAAM,WAAY,CAIpB,IAAI,EAAO,EAAmC,CAC5C,EAAG,EAAM,QACT,EAAG,EAAM,OACX,CAAC,EAID,GAAI,CAAC,EAAM,WAAW,SAAS,CAAI,EAAG,CACpC,EAAM,eAAe,EACrB,MACF,CACF,CAqBA,IAAI,EAAgE,EAAM,2BAA2G,KAAK,EAAO,CAAQ,GAA0E,KACnR,GAAI,EACF,IAAK,IAAI,EAAK,EAAG,EAAkB,OAAO,QAAQ,CAAU,EAAG,EAAK,EAAgB,OAAQ,IAAM,CAChG,IAAI,EAAqB,EAAe,EAAgB,GAAK,CAAC,EAC5D,EAAM,EAAmB,GACzB,EAAO,EAAmB,GAC5B,EAAM,aAAa,QAAQ,EAAK,GAA0C,EAAE,CAC9E,CAaE,EAAU,GAAK,CAAC,EAAM,aAAa,MAAM,SAAA,YAAsB,GAAK,CAAC,EAAM,aAAa,MAAM,SAAA,eAAqB,GACrH,EAAM,aAAa,QAAQ,EAAe,CAAmB,EAuB/D,EAAM,aAAa,QAAQ,EAA6B,EAAE,EAM1D,IAAI,EAAW,CACb,KAAM,UACN,QAAS,CANT,QAAS,EAAM,QACf,WAAkC,EAAM,YAA6E,KACrH,KAA0D,EAAM,gBAAgG,KAAK,EAAO,CAAQ,GAA4E,CAAC,CAIlP,EACf,YAAa,UACf,EACA,EAAI,MAAM,CACD,QACG,UACZ,CAAC,CA7GyB,CAzCc,CATrB,CAgKrB,CACF,CAAC,CAAC,CACJ,EACA,sBAAuB,SAA+B,EAAM,CAC1D,IAAI,EAAuB,EACvB,EAAY,EAAK,UACnB,EAAU,EAAK,SAOhB,EAAwB,EAAkB,IAAI,EAAQ,OAAO,OAAO,IAAO,OAA6C,EAAyB,EAAsB,KAAgB,MAA6C,EAAuB,KAAK,EAIjQ,CAAO,CACT,EACA,eAAgB,EAAY,kBAAkB,CAChD,CAAC,EACU,EAAwB,EAAQ,WAEX,EAAQ,QAGxC,SAAgB,EAAU,EAAM,CAsB9B,IAAI,EAAU,EAKd,EAAQ,cAAc,EAAG,EAAc,CAAI,EAAG,EAAa,EAAK,QAAS,CACvE,UAAW,YACX,MAAO,MACT,CAAC,CAAC,EAIF,OAAO,EAAK,CAAO,CACrB,CChRA,IAAI,EAAuB,UAAY,CAErC,GAAI,OAAO,OAAW,IACpB,OAAO,KAOT,IAAI,EAAM,IAAI,MAEd,MADA,GAAI,IAAM,qFACH,CACT,EAAE,EACF,SAAgB,EAAyB,EAAM,CAC7C,IAAI,EAAqB,EAAK,mBAC1B,GAAsB,GACxB,EAAmB,EAAsB,EAAG,CAAC,CAEjD,CCvBA,IAAM,GACF,EACA,IACe,CACf,IAAM,EAAa,GAA2B,CACtC,EAAM,eAAc,EAAM,aAAa,cAAgB,EAC/D,EAEA,OADA,EAAQ,iBAAiB,YAAa,CAAS,MAClC,EAAQ,oBAAoB,YAAa,CAAS,CACnE,EAEM,EAAoB,IAAwC,CAC9D,QAAS,EAAM,SAAS,QAAQ,MAAM,QACtC,QAAS,EAAM,SAAS,QAAQ,MAAM,OAC1C,GAEM,EAAoB,IAA6D,CACnF,QAAS,EAAM,SAAS,QAAQ,MAAM,QACtC,QAAS,EAAM,SAAS,QAAQ,MAAM,OAC1C"}
@@ -1 +0,0 @@
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\nexport const styles = [badgeStyles] as const;\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,4 +0,0 @@
1
- import{n as e}from"./object-SRW-YaCA.js";import{t}from"./warn-BbGtqbh1.js";import{r as n,t as r}from"./bridge-DMrvM3JE.js";import{n as i,r as a}from"./morph-Cq3V_23_.js";import{n as o}from"./alpine-machine-CE2UN4Qu.js";import{t as s}from"./dom-invalidation-Dw6clnS4.js";import{t as c}from"./focus-pk_lz9sg.js";import{n as l}from"./fragment-9OT0mn7F.js";var 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,n,r)=>{let i=ee(n,r.mode);if(i===`remove`){n.remove();return}if(!r.html){t(`x-ui-stream: received patch with no html`);return}if(i===`morph`||i===`outer`){if(typeof e.morph==`function`){let t=new Set;e.morph(n,r.html,{key(e){return d(e)},updating(e,t,n,i){if(e instanceof Element&&b?.(r.requestId??null,e)){i?.();return}a(e,t)},updated(n){if(!(n instanceof Element))return;let r=o(e,n);r&&t.add(r),s(n).forEach(e=>{t.add(e)})},removing(e){e instanceof Element&&s(e).forEach(e=>{t.add(e)})}}),w(t);return}t(`x-ui-stream: morph mode requires an Alpine morph implementation; falling back to replace`)}if(i===`replace`||i===`morph`||i===`outer`){let[i]=E(r.html);if(!i){t(`x-ui-stream: replace mode produced no element`);return}n.replaceWith(i),e.initTree(i);return}if(i===`update`){l(e,n,r.html);return}let c=T(r.html),u=Array.from(c.content.children).filter(e=>e instanceof HTMLElement);if(i===`append`){n.append(c.content),D(e,u);return}if(i===`prepend`){n.prepend(c.content),D(e,u);return}if(i===`before`){n.before(c.content),D(e,u);return}i===`after`&&(n.after(c.content),D(e,u))},O=(e,n)=>{let r=te(n);if(r){ne(e,r,n),n.focus&&c(document.querySelector(n.focus));return}if(n.selector||n.target){t(`x-ui-stream: target not found`,n.selector??n.target);return}if(!n.html){t(`x-ui-stream: received patch with no html`);return}E(n.html).forEach(r=>{if(!r.id){t(`x-ui-stream: top-level element has no id, skipping`,r);return}let i=document.getElementById(r.id);i&&ne(e,i,{...n,html:r.outerHTML})}),n.focus&&c(document.querySelector(n.focus))},k=(e,t)=>{let n=Array.isArray(t)?t:[t],i=()=>{n.forEach(t=>O(e,t))},a=()=>{let t=n.filter(e=>e.viewTransition===!0);if(t.length===0){i();return}x?x(e,t,i):i()},o=n.flatMap(e=>e.assets??[]);if(o.length===0&&C===0){a();return}C+=1;let s=async()=>{o.length>0&&await r(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 n=new Map;for(let r of e.data.split(`
2
- `)){let e=r.indexOf(` `),i=e>0,a=i?r.slice(0,e):r;if(!i&&a!==`html`)return t(`x-ui-stream: invalid SSE command line`,a),null;let o=i?r.slice(e+1):``,s=n.get(a);s?s.push(o):n.set(a,[o])}return n},j=(e,n)=>{let r=e.get(n);if(r?.length)return r.length>1&&t(`x-ui-stream: duplicate SSE command, using last value`,n),r.at(-1)},ae=(e,r)=>{let i=A(r);if(!i||i.size===0)return;let a=j(i,`request-id`);if(y&&!y(a??null))return;let o,s=j(i,`assets`);if(s!==void 0)try{let e=JSON.parse(s);o=n(e)}catch{t(`x-ui-stream: invalid patch assets JSON`,s);return}k(e,{mode:j(i,`mode`)??`replace`,target:j(i,`target`)??null,selector:j(i,`selector`)??null,html:i.get(`html`)?.join(`
3
- `)??null,requestId:a??null,viewTransition:j(i,`view-transition`)===`true`,focus:j(i,`focus`)??null,...o?{assets:o}:{}})},oe=n=>{let r=A(n);if(!r)return;let i=j(r,`request-id`);if(y&&!y(i??null))return;let a=j(r,`event`);if(!a){t(`x-ui-stream: dispatch SSE frame missing event`);return}let o=j(r,`detail`),s={};if(o)try{let t=JSON.parse(o);e(t)&&(s=t)}catch{t(`x-ui-stream: invalid dispatch detail JSON`,o);return}ie({event:a,detail:s})},M={"trellis-ui-patch":ae,"trellis-ui-dispatch":(e,t)=>oe(t)},se=`trellis-ui-`,ce=(e,n)=>{let r=M[n.event];if(!r){n.event.startsWith(se)&&t(`x-ui-stream: unsupported SSE event`,n.event);return}r(e,n)},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,n,r)=>{let a=xe(n,r),o=null,s,c=null,l=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(n),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,t={})=>{if(e!==`reset`&&(v=e),ve(n,e,t),e===`open`){let e=Se(n);e&&T({token:e})}else(e===`disconnected`||e===`error`)&&T(null)},D=()=>{n.dispatchEvent(new CustomEvent(`ui:stream:resumed`,{bubbles:!0,composed:!0}))},ee=t=>{o?.abort(),w();let i=++m;a=xe(n,r),E(`connecting`),o=ue(e,r,n.dataset.uiStreamScopes,t,{lastEventId:p,open:()=>{if(i!==m)return;let e=f;f=!0,h=0,E(`open`),e&&D()},disconnected:()=>{if(i!==m||_||(o=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=>{i===m&&(p=e)},error:e=>{i!==m||_||(g=!0,o=null,M.controller=null,w(),E(`error`,{data:e}))}}),M.controller=o,M.configuration=a,te()},te=()=>{if(window.clearTimeout(s),s=void 0,!C())return;let e=Number(n.dataset.uiStreamClientExpires);if(!Number.isFinite(e)||e<=0)return;let t=e-Date.now()-pe;if(t<=0){O();return}s=window.setTimeout(()=>void O(),t)},ne=()=>{if(_)return Promise.resolve(null);if(c)return c;let e=n.dataset.uiStreamClientRefresh;return e?(c=fetch(e,{headers:{Accept:`application/json`,"X-Trellis-Client":n.dataset.uiStreamClient??``}}).then(async e=>{if(!e.ok)throw Error(`ClientSession refresh failed (${e.status})`);let t=await e.json();if(typeof t.token!=`string`||typeof t.expiresAt!=`number`)throw Error(`ClientSession refresh returned an invalid payload`);return _?null:(n.dataset.uiStreamClient=t.token,n.dataset.uiStreamClientExpires=String(t.expiresAt),t.token)}).catch(e=>{t(`x-ui-stream: could not refresh ClientSession`,e);let r=Number(n.dataset.uiStreamClientExpires);return!Number.isFinite(r)||r<=Date.now()?(E(`error`,{error:e}),null):(C()&&(s=window.setTimeout(()=>void O(),5e3)),n.dataset.uiStreamClient??null)}).finally(()=>{c=null}),c):(E(`error`,{reason:`missing-refresh-url`}),Promise.resolve(null))},O=()=>C()?l||(l=ne().then(e=>{e&&C()&&!_&&ee(e)}).finally(()=>{l=null}),l):Promise.resolve(),k=async()=>{if(_||!C()||o)return;let e=Number(n.dataset.uiStreamClientExpires),t=n.dataset.uiStreamClient??``;if(Number.isFinite(e)&&e>0&&e-Date.now()<=pe){await O();return}let r=t;r&&C()&&!_&&!o&&ee(r)},re=()=>{d=void 0,!(_||S||document.visibilityState!==`hidden`)&&(x.size>0||(b.forEach(e=>e.abort(`Document suspended`)),b.clear(),window.clearTimeout(s),s=void 0,w(),o?.abort(),o=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,o||k()}},M={acquireClientSession(e){if(e.aborted||_||g)return Promise.resolve(null);let t=Se(n);if(v===`open`&&t)return Promise.resolve({token:t});if(v===`error`||v===`disconnected`)return Promise.resolve(null);let r=new Promise(t=>{let r=!1,i=n=>{r||(r=!0,window.clearTimeout(a.timeoutId),e.removeEventListener(`abort`,a.abort),y.delete(a),t(n))},a={abort:()=>i(null),resolve:i,timeoutId:window.setTimeout(()=>i(null),Ce(n))};y.add(a),e.addEventListener(`abort`,a.abort,{once:!0})});return t?!o&&C()&&k():O(),r},configuration:a,controller:null,element:n,dispose(){_||(_=!0,window.clearTimeout(s),window.clearTimeout(d),w(),T(null),n.removeEventListener(`ui:stream:refresh`,A),document.removeEventListener(`visibilitychange`,oe),document.removeEventListener(`ui:request:start`,j),document.removeEventListener(`ui:request:finish`,ae),o?.abort())},rescheduleRefresh:te};return i(n,`data-ui-stream-state`),n.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,i(t,`data-ui-stream-state`)},Oe=e=>{typeof e.directive==`function`&&e.directive(`ui-stream`,(n,{expression:r},{cleanup:i})=>{if(!r)return;let a=n instanceof HTMLElement?n.dataset.uiStreamClient:``;if(!(n instanceof HTMLElement)||!a){t(`x-ui-stream: missing signed ClientSession capability`);return}let o=fe(n),s=N.get(o),c=xe(n,r);if(s?.configuration===c){De(s,n),queueMicrotask(()=>s.rescheduleRefresh());return}if(!n.isConnected&&typeof o==`string`){de.has(o)||(de.add(o),queueMicrotask(()=>{de.delete(o);let t=document.getElementById(o);if(!t)return;let n=N.get(o),i=xe(t,r);if(n?.configuration===i){De(n,t),n.rescheduleRefresh();return}n?.dispose(),N.set(o,Te(e,t,r))}));return}s?.dispose(),N.set(o,Te(e,n,r)),i(()=>{let e=N.get(o);e?.element===n&&(e.dispose(),N.delete(o))})})},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 n=e.headers.get(Pe);if(n){let r=e.headers.get(Fe)??`auto`;return r!==`auto`&&r!==`push`&&r!==`replace`?(t(`x-ui-request: invalid navigation history`,r),{response:e,type:`other`,url:e.url}):{response:e,type:`navigate`,url:e.url,navigation:{history:r,url:n}}}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}):(t(`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,n,r)=>{let i={controller:new AbortController,destination:n,entryId:r.restoredState?.id??null,history:r.history,disposition:r.disposition??`auto`,requestId:W(),...r.requestOptions?{requestOptions:r.requestOptions}:{},...r.source?{source:r.source}:{}};if(r.preflight!==!1&&!Y(`ui:navigate`,i,!0))return Promise.resolve();J(),zt(),L=i,Y(`ui:navigating`,i);let a=new Headers(i.requestOptions?.headers);a.set(`X-Trellis-Navigation`,i.history?`restore`:`navigate`);let o=!0,s=async()=>{let t=o?i.requestOptions:void 0,n=o?i.source:void 0;o=!1;let r=await mt(e,i.destination,{...t,headers:a,method:`GET`,requestId:i.requestId,signal:i.controller.signal,...n?{source:n}:{}});if(i.destination=new URL(r.url,document.baseURI),r.type!==`navigate`)return r;let c=Z(r.navigation.url);return c?(i.destination=c,r.navigation.history!==`auto`&&(i.disposition=r.navigation.history),s()):(X(new URL(r.navigation.url,document.baseURI)),{requestId:r.requestId,response:r.response,type:`redirect`,url:r.url})};return s().then(e=>{(L?.requestId===i.requestId||U.has(i.requestId))&&Wt(i,e,r.restoredState)}).catch(e=>{i.controller.signal.aborted||(t(`x-ui-request.navigate: restoration failed`,e),Ut(i))}).finally(()=>{L?.requestId===i.requestId&&(L=null),H.has(i.requestId)||It(i)})},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,n)=>(r,i={})=>{let{navigate:a=!1,...o}=i;return a&&t(`$ui.${e}: navigate is only supported for GET requests`),n(r,o)},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,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-Bg44ZmC3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui-Bg44ZmC3.js","names":[],"sources":["../../../../../../../../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 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":"iWAEA,IAAM,EAAqB,eAErB,GAAkB,EAAkB,IAAsC,CAC5E,GAAI,OAAO,GAAa,UAAY,EAAU,OAAO,EACrD,IAAM,EAAW,EAAQ,aAAA,aAA4B,GAAK,EAAQ,GAClE,GAAI,EAAU,OAAO,EAErB,IAAM,EAAS,EAAQ,cACvB,GAAI,GAAQ,aAAA,mBAAkC,IAAM,EAAoB,OAAO,KAC/E,IAAM,EAAiB,EAAO,aAAA,aAA4B,GAAK,EAAO,GACtE,OAAO,EAAiB,GAAG,EAAe,eAAiB,IAC/D,ECTM,EAAkB,qBAClB,EAAqB,wBAErB,EAAc,GAChB,OAAO,GAAU,YACd,GACA,OAAO,YAAY,EAGpB,GAAc,EAAqB,WACjC,OAAO,GAAU,SAAiB,MAAM,KAAK,SAAS,iBAAiB,CAAK,CAAC,EAC7E,aAAiB,UAAY,aAAiB,QAAgB,CAAC,CAAK,EACpE,EAAW,CAAK,EAAU,MAAM,KAAK,CAAK,EACvC,CAAC,QAAQ,EAGd,GACF,EAAqB,SACrB,EAA4C,CAAC,IAC9B,CACf,IAAM,EAAW,EAAW,CAAK,CAAC,CAAC,OAAQ,GAA0B,aAAgB,OAAO,EACtF,EAA4E,CAAC,EAC7E,GAAoB,EAAkB,EAAc,IAAwB,CAC9E,EAAQ,KAAK,CAAC,UAAS,OAAM,SAAU,EAAQ,aAAa,CAAI,CAAC,CAAC,EAClE,EAAQ,aAAa,EAAM,CAAK,CACpC,EAUA,OARA,EAAS,QAAS,GAAY,EACtB,EAAQ,QAAU,KAAM,EAAiB,EAAS,EAAoB,EAAE,EAC5E,IAAM,EAAW,EAAe,EAAS,EAAQ,GAAG,EAChD,GAAY,CAAC,EAAQ,aAAA,oBAA4B,GACjD,EAAiB,EAAS,EAAiB,CAAQ,CAE3D,CAAC,MAEY,CACT,EAAQ,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAS,OAAM,cAAc,CACrD,GAAI,IAAa,KAAM,CACnB,EAAQ,gBAAgB,CAAI,EAC5B,MACJ,CACA,EAAQ,aAAa,EAAM,CAAQ,CACvC,CAAC,CACL,CACJ,ECmCM,EAA0B,IAAI,IAChC,EAAwB,GACxB,EAAsE,KACtE,EAAyF,KACzF,EAAkD,KAClD,EAAa,QAAQ,QAAQ,EAC7B,EAAgB,EAEd,EAAwB,GAAiD,CAC3E,IAAK,IAAM,KAAS,EAAQ,EAAwB,IAAI,CAAK,EACzD,GAAyB,EAAwB,OAAS,IAC9D,EAAwB,GACxB,mBAAqB,CACjB,EAAwB,GACxB,IAAM,EAAS,MAAM,KAAK,CAAuB,EACjD,EAAwB,MAAM,EAC9B,EAAO,QAAS,GAAU,EAAM,cAAc,CAAC,CACnD,CAAC,EACL,EAEM,EAAa,GAAsC,CACrD,IAAM,EAAW,SAAS,cAAc,UAAU,EAElD,MADA,GAAS,UAAY,EACd,CACX,EAEM,EAAoB,GACtB,MAAM,KAAK,EAAU,CAAI,CAAC,CAAC,QAAQ,QAAQ,CAAC,CACvC,OAAQ,GAAgC,aAAiB,WAAW,EAGvE,GAAgB,EAA8B,IAAkC,CAClF,EAAS,QAAS,GAAY,EAAe,SAAS,CAAO,CAAC,CAClE,EAEM,IAAgB,EAAiB,IAC/B,GACU,EAAO,aAAa,SAC9B,GACG,UAGL,GAAqB,GAAgD,CACvE,GAAI,EAAQ,SAAU,OAAO,SAAS,cAAc,EAAQ,QAAQ,EACpE,GAAI,CAAC,EAAQ,OAAQ,OAAO,KAE5B,IAAM,EAAK,EAAQ,OAAO,WAAW,GAAG,EAAI,EAAQ,OAAO,MAAM,CAAC,EAAI,EAAQ,OAC9E,OAAO,SAAS,eAAe,CAAE,CACrC,EAEM,IACF,EACA,EACA,IACO,CACP,IAAM,EAAO,GAAa,EAAQ,EAAQ,IAAI,EAE9C,GAAI,IAAS,SAAU,CACnB,EAAO,OAAO,EACd,MACJ,CAEA,GAAI,CAAC,EAAQ,KAAM,CACf,EAAK,0CAA0C,EAC/C,MACJ,CAEA,GAAI,IAAS,SAAW,IAAS,QAAS,CACtC,GAAI,OAAO,EAAe,OAAU,WAAY,CAC5C,IAAM,EAAiB,IAAI,IAC3B,EAAe,MAAM,EAAuB,EAAQ,KAAM,CACtD,IAAI,EAAgC,CAChC,OAAO,EAAe,CAAE,CAC5B,EACA,SAAS,EAAY,EAAU,EAA4B,EAAyB,CAChF,GACI,aAAgB,SACb,IAAuB,EAAQ,WAAa,KAAM,CAAI,EAC3D,CACE,IAAO,EACP,MACJ,CACA,EAAgC,EAAM,CAAE,CAC5C,EACA,QAAQ,EAAkB,CACtB,GAAI,EAAE,aAAgB,SAAU,OAChC,IAAM,EAAQ,EAAuB,EAAiC,CAAI,EACtE,GAAO,EAAe,IAAI,CAAK,EACnC,EAAiC,CAAI,CAAC,CAAC,QAAS,GAAc,CAC1D,EAAe,IAAI,CAAS,CAChC,CAAC,CACL,EACA,SAAS,EAAkB,CACjB,aAAgB,SACtB,EAAiC,CAAI,CAAC,CAAC,QAAS,GAAc,CAC1D,EAAe,IAAI,CAAS,CAChC,CAAC,CACL,CACJ,CAAC,EACD,EAAqB,CAAc,EACnC,MACJ,CAEA,EAAK,0FAA0F,CACnG,CAEA,GAAI,IAAS,WAAa,IAAS,SAAW,IAAS,QAAS,CAC5D,GAAM,CAAC,GAAS,EAAiB,EAAQ,IAAI,EAC7C,GAAI,CAAC,EAAO,CACR,EAAK,+CAA+C,EACpD,MACJ,CACA,EAAO,YAAY,CAAK,EACxB,EAAe,SAAS,CAAK,EAC7B,MACJ,CAEA,GAAI,IAAS,SAAU,CACnB,EAA2B,EAAgB,EAAQ,EAAQ,IAAI,EAC/D,MACJ,CAEA,IAAM,EAAW,EAAU,EAAQ,IAAI,EACjC,EAAW,MAAM,KAAK,EAAS,QAAQ,QAAQ,CAAC,CACjD,OAAQ,GAAgC,aAAiB,WAAW,EAEzE,GAAI,IAAS,SAAU,CACnB,EAAO,OAAO,EAAS,OAAO,EAC9B,EAAa,EAAgB,CAAQ,EACrC,MACJ,CAEA,GAAI,IAAS,UAAW,CACpB,EAAO,QAAQ,EAAS,OAAO,EAC/B,EAAa,EAAgB,CAAQ,EACrC,MACJ,CAEA,GAAI,IAAS,SAAU,CACnB,EAAO,OAAO,EAAS,OAAO,EAC9B,EAAa,EAAgB,CAAQ,EACrC,MACJ,CAEI,IAAS,UACT,EAAO,MAAM,EAAS,OAAO,EAC7B,EAAa,EAAgB,CAAQ,EAE7C,EAEM,GAAuB,EAA8B,IAAsC,CAC7F,IAAM,EAAS,GAAkB,CAAO,EAExC,GAAI,EAAQ,CACR,GAAmB,EAAgB,EAAQ,CAAO,EAC9C,EAAQ,OAAO,EAAa,SAAS,cAA2B,EAAQ,KAAK,CAAC,EAClF,MACJ,CAEA,GAAI,EAAQ,UAAY,EAAQ,OAAQ,CACpC,EAAK,gCAAiC,EAAQ,UAAY,EAAQ,MAAM,EACxE,MACJ,CAEA,GAAI,CAAC,EAAQ,KAAM,CACf,EAAK,0CAA0C,EAC/C,MACJ,CAEA,EAAiB,EAAQ,IAAI,CAAC,CAAC,QAAS,GAAU,CAC9C,GAAI,CAAC,EAAM,GAAI,CACX,EAAK,qDAAsD,CAAK,EAChE,MACJ,CAEA,IAAM,EAAiB,SAAS,eAAe,EAAM,EAAE,EAClD,GACL,GAAmB,EAAgB,EAAgB,CAAC,GAAG,EAAS,KAAM,EAAM,SAAS,CAAC,CAC1F,CAAC,EACG,EAAQ,OAAO,EAAa,SAAS,cAA2B,EAAQ,KAAK,CAAC,CACtF,EAEM,GAAsB,EAA8B,IAA6D,CACnH,IAAM,EAAU,MAAM,QAAQ,CAAO,EAAI,EAAU,CAAC,CAAO,EACrD,MAAoB,CACtB,EAAQ,QAAS,GAAU,EAAoB,EAAgB,CAAK,CAAC,CACzE,EAEM,MAAiC,CACnC,IAAM,EAAkB,EAAQ,OAAQ,GAAU,EAAM,iBAAmB,EAAI,EAC/E,GAAI,EAAgB,SAAW,EAAG,CAC9B,EAAM,EACN,MACJ,CACI,EAAqB,EAAoB,EAAgB,EAAiB,CAAK,EAC9E,EAAM,CACf,EACM,EAAS,EAAQ,QAAS,GAAU,EAAM,QAAU,CAAC,CAAC,EAE5D,GAAI,EAAO,SAAW,GAAK,IAAkB,EAAG,CAC5C,EAAmB,EACnB,MACJ,CAEA,GAAiB,EACjB,IAAM,EAAM,SAA2B,CAC/B,EAAO,OAAS,GAChB,MAAM,EAAW,EAAQ,CAA+B,EAE5D,EAAmB,CACvB,EAEA,EADa,EAAW,KAAK,EAAK,CACrB,CAAA,CACR,UAAY,IAAA,EAAS,CAAC,CACtB,YAAc,CACX,GACJ,CAAC,CACT,EAEM,GAA+B,GAAwC,CACzE,EAAsB,CAC1B,EAMM,GAAuB,GAAsC,CAC/D,SAAS,cAAc,IAAI,YAAY,EAAQ,MAAO,CAClD,OAAQ,EAAQ,QAAU,CAAC,EAC3B,QAAS,GACT,SAAU,EACd,CAAC,CAAC,CACN,EAwBM,EAAgB,GAAkD,CACpE,IAAM,EAAW,IAAI,IACrB,IAAK,IAAM,KAAQ,EAAM,KAAK,MAAM;CAAI,EAAG,CACvC,IAAM,EAAQ,EAAK,QAAQ,GAAG,EACxB,EAAW,EAAQ,EACnB,EAAM,EAAW,EAAK,MAAM,EAAG,CAAK,EAAI,EAE9C,GAAI,CAAC,GAAY,IAAQ,OAErB,OADA,EAAK,wCAAyC,CAAG,EAC1C,KAGX,IAAM,EAAQ,EAAW,EAAK,MAAM,EAAQ,CAAC,EAAI,GAC3C,EAAS,EAAS,IAAI,CAAG,EAC3B,EAAQ,EAAO,KAAK,CAAK,EACxB,EAAS,IAAI,EAAK,CAAC,CAAK,CAAC,CAClC,CAEA,OAAO,CACX,EAEM,GAAiB,EAAiC,IAAoC,CACxF,IAAM,EAAS,EAAS,IAAI,CAAG,EAC1B,MAAQ,OAEb,OADI,EAAO,OAAS,GAAG,EAAK,uDAAwD,CAAG,EAChF,EAAO,GAAG,EAAE,CACvB,EAEM,IAAmB,EAA8B,IAA0B,CAC7E,IAAM,EAAW,EAAa,CAAK,EACnC,GAAI,CAAC,GAAY,EAAS,OAAS,EAAG,OACtC,IAAM,EAAY,EAAc,EAAU,YAAY,EACtD,GAAI,GAAuB,CAAC,EAAoB,GAAa,IAAI,EAAG,OAEpE,IAAI,EACE,EAAY,EAAc,EAAU,QAAQ,EAClD,GAAI,IAAc,IAAA,GACd,GAAI,CACA,IAAM,EAAkB,KAAK,MAAM,CAAS,EAC5C,EAAS,EAAsB,CAAM,CACzC,MAAQ,CACJ,EAAK,yCAA0C,CAAS,EACxD,MACJ,CAcJ,EAAmB,EAAgB,CAV/B,KAAO,EAAc,EAAU,MAAM,GAAK,UAC1C,OAAQ,EAAc,EAAU,QAAQ,GAAK,KAC7C,SAAU,EAAc,EAAU,UAAU,GAAK,KACjD,KAAM,EAAS,IAAI,MAAM,CAAC,EAAE,KAAK;CAAI,GAAK,KAC1C,UAAW,GAAa,KACxB,eAAgB,EAAc,EAAU,iBAAiB,IAAM,OAC/D,MAAO,EAAc,EAAU,OAAO,GAAK,KAC3C,GAAI,EAAS,CAAC,QAAM,EAAI,CAAC,CAGM,CAAO,CAC9C,EAEM,GAAsB,GAA0B,CAClD,IAAM,EAAW,EAAa,CAAK,EACnC,GAAI,CAAC,EAAU,OACf,IAAM,EAAY,EAAc,EAAU,YAAY,EACtD,GAAI,GAAuB,CAAC,EAAoB,GAAa,IAAI,EAAG,OACpE,IAAM,EAAQ,EAAc,EAAU,OAAO,EAC7C,GAAI,CAAC,EAAO,CACR,EAAK,+CAA+C,EACpD,MACJ,CAEA,IAAM,EAAY,EAAc,EAAU,QAAQ,EAC9C,EAAkC,CAAC,EACvC,GAAI,EACA,GAAI,CACA,IAAM,EAAkB,KAAK,MAAM,CAAS,EACxC,EAAc,CAAM,IAAG,EAAS,EACxC,MAAQ,CACJ,EAAK,4CAA6C,CAAS,EAC3D,MACJ,CAGJ,GAAoB,CAAC,QAAO,QAAM,CAAC,CACvC,EAEM,EAA8F,CAChG,mBAAoB,GACpB,uBAAwB,EAAiB,IAAU,GAAmB,CAAK,CAC/E,EAEM,GAA2B,cAE3B,IAAiB,EAA8B,IAA0B,CAC3E,IAAM,EAAU,EAAmB,EAAM,OACzC,GAAI,CAAC,EAAS,CACN,EAAM,MAAM,WAAW,EAAwB,GAC/C,EAAK,qCAAsC,EAAM,KAAK,EAE1D,MACJ,CACA,EAAQ,EAAgB,CAAK,CACjC,EAEM,IAAa,EAAa,EAAS,GAAI,EAAS,GAAI,EAAc,KAAe,CACnF,IAAM,EAAS,IAAI,IAAI,EAAK,SAAS,OAAO,EACtC,EAAmB,CAAC,GAAG,IAAI,IAAI,EAAO,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,EAQzE,OAPI,GAAQ,EAAO,aAAa,IAAI,SAAU,CAAM,EAChD,GAAa,EAAO,aAAa,IAAI,cAAe,CAAW,EAC/D,EAAiB,OAAS,IAC1B,EAAO,aAAa,OAAO,SAAS,EACpC,EAAiB,QAAS,GAAU,EAAO,aAAa,OAAO,UAAW,CAAK,CAAC,GAG7E,sBAAsB,KAAK,CAAG,GAAK,EAAI,WAAW,IAAI,EACvD,EAAO,KACP,GAAG,EAAO,WAAW,EAAO,SAAS,EAAO,MACtD,EAEM,IACF,EACA,EACA,EAAS,GACT,EAAS,GACT,EAA6B,CAAC,IACX,CACnB,IAAM,EAAS,IAAI,YAAY,GAAU,EAAK,EAAQ,EAAQ,EAAU,WAAW,CAAC,EAChF,EAAS,GACP,EAAmB,GAA8B,CAC/C,EAAM,aAAa,EAAU,UAAU,EAAM,WAAW,CAChE,EAiCA,OAhCA,OAAO,KAAK,CAAkB,CAAC,CAAC,QAAS,GAAc,CACnD,EAAO,iBAAiB,EAAY,GAAU,CACrC,GAAY,aAAiB,eAClC,EAAgB,CAAK,EACrB,GAAc,EAAgB,CAC1B,MAAO,EAAM,KACb,KAAM,OAAO,EAAM,IAAI,CAC3B,CAAC,EACL,CAAC,CACL,CAAC,EACD,EAAO,iBAAiB,kBAAqB,CACpC,GACL,EAAU,OAAO,CACrB,CAAC,EACD,EAAO,iBAAiB,eAAiB,GAAU,CAC1C,IACD,aAAiB,cAAc,EAAgB,CAAK,EACxD,EAAU,QAAQ,aAAiB,aAAe,OAAO,EAAM,IAAI,EAAI,EAAE,EAC7E,CAAC,EACD,EAAO,iBAAiB,eAAiB,GAAU,CAC1C,IACL,EAAS,GACT,EAAO,MAAM,EACb,EAAU,QAAQ,aAAiB,aAAe,OAAO,EAAM,IAAI,EAAI,EAAE,EAC7E,CAAC,EACD,EAAO,iBAAiB,YAAe,CAC9B,IACL,EAAS,GACT,EAAO,MAAM,EACb,EAAU,eAAe,EAC7B,CAAC,EAEM,CACH,OAAQ,CACJ,EAAS,GACT,EAAO,MAAM,CACjB,CACJ,CACJ,EAaM,EAAoB,IAAI,IACxB,GAA+B,IAAI,IAEnC,GAAuB,GACzB,aAAc,aAAe,EAAG,GAAK,EAAG,GAAK,EAY3C,GAAiC,IACjC,GAA+B,IAC/B,GAAmC,IACnC,GAAuB,IACvB,GAAsB,IAEtB,IACF,EACA,EACA,EAAkC,CAAC,IAC5B,CACH,IAAS,UAAS,EAAG,QAAQ,cAAgB,GACjD,EAAG,cAAc,IAAI,YAAY,aAAa,IAAQ,CAClD,QAAS,GACT,SAAU,GACV,OAAQ,CAAC,OAAQ,EAAI,GAAG,CAAM,CAClC,CAAC,CAAC,CACN,EAEM,IAAuB,EAAiB,IAC1C,GAAU,EAAY,EAAG,QAAQ,cAAc,EAG7C,GAAwB,GAC1B,EAAG,QAAQ,yBAA2B,OAGpC,IAAoB,EAAiB,IACvC,KAAK,UAAU,CACX,eAAgB,GAAqB,CAAE,EACvC,IAAK,GAAoB,EAAI,CAAU,CAC3C,CAAC,EAGC,GAAsB,GAAmC,CAC3D,IAAM,EAAQ,EAAG,QAAQ,eACnB,EAAY,OAAO,EAAG,QAAQ,qBAAqB,EAGzD,MAFI,CAAC,GACD,OAAO,SAAS,CAAS,GAAK,EAAY,GAAK,GAAa,KAAK,IAAI,EAAU,KAC5E,CACX,EAEM,GAAwB,GAA4B,CACtD,IAAM,EAAa,OAAO,EAAG,QAAQ,eAAe,EACpD,OAAO,OAAO,SAAS,CAAU,GAAK,GAAc,EAAI,EAAa,GACzE,EAEM,GAA0B,GAAgD,CAC5E,GAAI,EAAE,aAAiB,aAAc,OAAO,KAC5C,IAAM,EAAS,EAAM,OAOrB,MALI,CAAC,GACE,OAAO,EAAO,WAAc,UAC5B,OAAO,EAAO,QAAW,UACzB,EAAE,EAAO,sBAAsB,iBAC7B,KACF,CACX,EAEM,IACF,EACA,EACA,IACgB,CAChB,IAAI,EAAgB,GAAiB,EAAI,CAAU,EAC/C,EAAsC,KACtC,EACA,EAAgD,KAChD,EAAwC,KACxC,EACA,EACA,EAAgB,GAChB,EAAc,GACd,EAAuB,EACvB,EAAoB,EACpB,EAAW,GACX,EAAW,GACX,EAAsC,aACpC,EAAuB,IAAI,IAC3B,EAAa,IAAI,IACjB,EAAkB,IAAI,IACtB,EAAiB,GAAqB,CAAE,EAExC,MACF,CAAC,IAAa,GAAkB,SAAS,kBAAoB,WAG3D,MAAkC,CACpC,OAAO,aAAa,CAAc,EAClC,EAAiB,IAAA,EACrB,EAEM,EAA8B,GAAgD,CAChF,MAAM,KAAK,CAAoB,CAAC,CAAC,QAAS,GAAW,EAAO,QAAQ,CAAK,CAAC,CAC9E,EAEM,GACF,EACA,EAAkC,CAAC,IAC5B,CAGP,GAFI,IAAS,UAAS,EAAiB,GACvC,GAAwB,EAAI,EAAM,CAAM,EACpC,IAAS,OAAQ,CACjB,IAAM,EAAQ,GAAmB,CAAE,EAC/B,GAAO,EAA2B,CAAC,OAAK,CAAC,CACjD,MAAW,IAAS,gBAAkB,IAAS,UAC3C,EAA2B,IAAI,CAEvC,EAEM,MAA8B,CAChC,EAAG,cAAc,IAAI,YAAY,oBAAqB,CAClD,QAAS,GACT,SAAU,EACd,CAAC,CAAC,CACN,EAEM,GAAW,GAAwB,CACrC,GAAY,MAAM,EAClB,EAAoB,EACpB,IAAM,EAAa,EAAE,EACrB,EAAgB,GAAiB,EAAI,CAAU,EAC/C,EAAW,YAAY,EACvB,EAAa,GACT,EACA,EACA,EAAG,QAAQ,eACX,EACA,CACI,cACA,SAAY,CACR,GAAI,IAAe,EAAsB,OACzC,IAAM,EAAU,EAChB,EAAgB,GAChB,EAAoB,EACpB,EAAW,MAAM,EACb,GAAS,EAAgB,CACjC,EACA,iBAAoB,CAKhB,GAJI,IAAe,GAAwB,IAC3C,EAAa,KACb,EAAQ,WAAa,KACrB,EAAW,cAAc,EACrB,CAAC,EAAkB,GAAG,OAC1B,IAAM,EAAU,KAAK,IACjB,GAAwB,GAAK,EAC7B,EACJ,EACA,GAAqB,EACrB,IAAM,EAAQ,KAAK,MAAM,KAAK,OAAO,EAAI,CAAO,EAChD,EAAiB,OAAO,eAAiB,CACrC,EAAiB,IAAA,GACjB,EAAqB,CACzB,EAAG,CAAK,CACZ,EACA,MAAQ,GAAS,EAAW,QAAS,CAAC,MAAI,CAAC,EAC3C,QAAU,GAAU,CACZ,IAAe,IAAsB,EAAc,EAC3D,EACA,MAAQ,GAAS,CACT,IAAe,GAAwB,IAC3C,EAAW,GACX,EAAa,KACb,EAAQ,WAAa,KACrB,EAAoB,EACpB,EAAW,QAAS,CAAC,MAAI,CAAC,EAC9B,CACJ,CACJ,EACA,EAAQ,WAAa,EACrB,EAAQ,cAAgB,EACxB,GAAgB,CACpB,EAEM,OAA8B,CAGhC,GAFA,OAAO,aAAa,CAAY,EAChC,EAAe,IAAA,GACX,CAAC,EAAkB,EAAG,OAC1B,IAAM,EAAY,OAAO,EAAG,QAAQ,qBAAqB,EACzD,GAAI,CAAC,OAAO,SAAS,CAAS,GAAK,GAAa,EAAG,OACnD,IAAM,EAAQ,EAAY,KAAK,IAAI,EAAI,GACvC,GAAI,GAAS,EAAG,CACZ,EAAsB,EACtB,MACJ,CACA,EAAe,OAAO,eAAiB,KAAK,EAAiB,EAAG,CAAK,CACzE,EAEM,OAAkD,CACpD,GAAI,EAAU,OAAO,QAAQ,QAAQ,IAAI,EACzC,GAAI,EAAgB,OAAO,EAC3B,IAAM,EAAa,EAAG,QAAQ,sBAmC9B,OAlCK,GAKL,EAAiB,MAAM,EAAY,CAC/B,QAAS,CACL,OAAQ,mBACR,mBAAoB,EAAG,QAAQ,gBAAkB,EACrD,CACJ,CAAC,CAAC,CAAC,KAAK,KAAO,IAAa,CACxB,GAAI,CAAC,EAAS,GAAI,MAAU,MAAM,iCAAiC,EAAS,OAAO,EAAE,EACrF,IAAM,EAAU,MAAM,EAAS,KAAK,EACpC,GAAI,OAAO,EAAQ,OAAU,UAAY,OAAO,EAAQ,WAAc,SAClE,MAAU,MAAM,mDAAmD,EAKvE,OAHI,EAAiB,MACrB,EAAG,QAAQ,eAAiB,EAAQ,MACpC,EAAG,QAAQ,sBAAwB,OAAO,EAAQ,SAAS,EACpD,EAAQ,MACnB,CAAC,CAAC,CAAC,MAAO,GAAmB,CACzB,EAAK,+CAAgD,CAAK,EAC1D,IAAM,EAAY,OAAO,EAAG,QAAQ,qBAAqB,EAQzD,MAPI,CAAC,OAAO,SAAS,CAAS,GAAK,GAAa,KAAK,IAAI,GACrD,EAAW,QAAS,CAAC,OAAK,CAAC,EACpB,OAEP,EAAkB,IAClB,EAAe,OAAO,eAAiB,KAAK,EAAiB,EAAG,GAAI,GAEjE,EAAG,QAAQ,gBAAkB,KACxC,CAAC,CAAC,CAAC,YAAc,CACb,EAAiB,IACrB,CAAC,EACM,IAjCH,EAAW,QAAS,CAAC,OAAQ,qBAAqB,CAAC,EAC5C,QAAQ,QAAQ,IAAI,EAiCnC,EAEM,MACG,EAAkB,EACnB,IACJ,EAAkB,GAAkB,CAAC,CAChC,KAAM,GAAU,CACT,GAAS,EAAkB,GAAK,CAAC,GAAU,GAAQ,CAAK,CAChE,CAAC,CAAC,CACD,YAAc,CACX,EAAkB,IACtB,CAAC,EACE,GAT0B,QAAQ,QAAQ,EAY/C,EAAkB,SAA2B,CAC/C,GAAI,GAAY,CAAC,EAAkB,GAAK,EAAY,OACpD,IAAM,EAAY,OAAO,EAAG,QAAQ,qBAAqB,EACnD,EAAe,EAAG,QAAQ,gBAAkB,GAIlD,GAHqB,OAAO,SAAS,CAAS,GACvC,EAAY,GACZ,EAAY,KAAK,IAAI,GAAK,GACf,CACd,MAAM,EAAiB,EACvB,MACJ,CACA,IAAM,EAAQ,EACV,GAAS,EAAkB,GAAK,CAAC,GAAY,CAAC,GAAY,GAAQ,CAAK,CAC/E,EAEM,OAAsB,CACxB,EAAe,IAAA,GACX,KAAY,GAAkB,SAAS,kBAAoB,YAC3D,EAAgB,KAAO,IAC3B,EAAW,QAAS,GAAsB,EAAkB,MAAM,oBAAoB,CAAC,EACvF,EAAW,MAAM,EACjB,OAAO,aAAa,CAAY,EAChC,EAAe,IAAA,GACf,EAAoB,EACpB,GAAY,MAAM,EAClB,EAAa,KACb,EAAW,WAAW,EACtB,EAAQ,WAAa,MACzB,EAEM,GAAmB,GAAwB,CAC7C,OAAO,aAAa,CAAY,EAChC,EAAe,IAAA,GACX,KAAkB,SAAS,kBAAoB,YACnD,EAAe,OAAO,WAAW,GAAS,CAAK,EACnD,EAEM,MAAwB,CACtB,GACJ,EAAsB,CAC1B,EAEM,EAAkB,GAAuB,CAC3C,IAAM,EAAS,GAAuB,CAAK,EACtC,KACL,IAAI,EAAO,SAAW,MAAO,CACzB,EAAW,IAAI,EAAO,UAAW,EAAO,UAAU,EAClD,MACJ,CACA,EAAgB,IAAI,EAAO,SAAS,EAChC,SAAS,kBAAoB,UAAY,CAAC,IAC1C,OAAO,aAAa,CAAY,EAChC,EAAe,IAAA,GAJnB,CAMJ,EAEM,GAAmB,GAAuB,CAC5C,IAAM,EAAS,GAAuB,CAAK,EACtC,KACL,IAAI,EAAO,SAAW,MAAO,CACzB,EAAW,OAAO,EAAO,SAAS,EAClC,MACJ,CACA,EAAgB,OAAO,EAAO,SAAS,EACnC,SAAS,kBAAoB,UAAY,CAAC,GACtC,EAAgB,OAAS,GACzB,GAAgB,EAAgC,CAJxD,CAOJ,EAEM,OAAiC,CAC/B,QAAkB,GACtB,IAAI,SAAS,kBAAoB,SAAU,CACvC,GAAI,EAAgB,KAAO,EACvB,OAEJ,GAAgB,EAA4B,EAC5C,MACJ,CACA,OAAO,aAAa,CAAY,EAChC,EAAe,IAAA,GACV,GAAY,EAAqB,CAHtC,CAIJ,EAEM,EAAyB,CAC3B,qBAAqB,EAA8D,CAC/E,GAAI,EAAO,SAAW,GAAY,EAAU,OAAO,QAAQ,QAAQ,IAAI,EACvE,IAAM,EAAQ,GAAmB,CAAE,EACnC,GAAI,IAAmB,QAAU,EAAO,OAAO,QAAQ,QAAQ,CAAC,OAAK,CAAC,EACtE,GAAI,IAAmB,SAAW,IAAmB,eAAgB,OAAO,QAAQ,QAAQ,IAAI,EAEhG,IAAM,EAAc,IAAI,QAAyC,GAAY,CACzE,IAAI,EAAU,GACR,EAAU,GAAgD,CACxD,IACJ,EAAU,GACV,OAAO,aAAa,EAAO,SAAS,EACpC,EAAO,oBAAoB,QAAS,EAAO,KAAK,EAChD,EAAqB,OAAO,CAAM,EAClC,EAAQ,CAAK,EACjB,EACM,EAA8B,CAChC,UAAa,EAAO,IAAI,EACxB,QAAS,EACT,UAAW,OAAO,eAAiB,EAAO,IAAI,EAAG,GAAqB,CAAE,CAAC,CAC7E,EACA,EAAqB,IAAI,CAAM,EAC/B,EAAO,iBAAiB,QAAS,EAAO,MAAO,CAAC,KAAM,EAAI,CAAC,CAC/D,CAAC,EAID,OAFK,EACI,CAAC,GAAc,EAAkB,GAAG,EAAqB,EADtD,EAAsB,EAE3B,CACX,EACA,gBACA,WAAY,KACZ,QAAS,EACT,SAAgB,CACR,IACJ,EAAW,GACX,OAAO,aAAa,CAAY,EAChC,OAAO,aAAa,CAAY,EAChC,EAAoB,EACpB,EAA2B,IAAI,EAC/B,EAAG,oBAAoB,oBAAqB,CAAS,EACrD,SAAS,oBAAoB,mBAAoB,EAAkB,EACnE,SAAS,oBAAoB,mBAAoB,CAAc,EAC/D,SAAS,oBAAoB,oBAAqB,EAAe,EACjE,GAAY,MAAM,EACtB,EACA,kBAAmB,EACvB,EAYA,OAVA,EAAuB,EAAI,sBAAsB,EACjD,EAAG,iBAAiB,oBAAqB,CAAS,EAClD,SAAS,iBAAiB,mBAAoB,EAAkB,EAChE,SAAS,iBAAiB,mBAAoB,CAAc,EAC5D,SAAS,iBAAiB,oBAAqB,EAAe,EAC1D,EAAkB,EAClB,EAAqB,EAErB,EAAW,WAAW,EAEnB,CACX,EAEM,GAAwB,GACV,MAAM,KAAK,EAAkB,OAAO,CAAC,CAAC,CAAC,KAAM,GACzD,EAAQ,EAAO,QAAQ,QAAQ,cAE5B,CAAA,EAAS,qBAAqB,CAAM,GAAK,QAAQ,QAAQ,IAAI,EAGlE,IAAwB,EAAwB,IAA0B,CAC5E,EAAG,QAAQ,cAAgB,EAAQ,QAAQ,QAAQ,eAAiB,aACpE,EAAG,QAAQ,eAAiB,EAAQ,QAAQ,QAAQ,gBAAkB,GACtE,IAAM,EAAY,EAAQ,QAAQ,QAAQ,sBACtC,IAAc,IAAA,GAAW,OAAO,EAAG,QAAQ,sBAC1C,EAAG,QAAQ,sBAAwB,EACxC,EAAuB,EAAI,sBAAsB,CACrD,EAEM,GAAkB,GAAwC,CACxD,OAAO,EAAe,WAAc,YAExC,EAAe,UAAU,aAAc,EAAI,CAAC,cAAa,CAAC,aAAa,CACnE,GAAI,CAAC,EAAY,OAEjB,IAAM,EAAS,aAAc,YAAc,EAAG,QAAQ,eAAiB,GACvE,GAAI,EAAE,aAAc,cAAgB,CAAC,EAAQ,CACzC,EAAK,sDAAsD,EAC3D,MACJ,CACA,IAAM,EAAM,GAAoB,CAAE,EAC5B,EAAW,EAAkB,IAAI,CAAG,EACpC,EAAgB,GAAiB,EAAI,CAAU,EACrD,GAAI,GAAU,gBAAkB,EAAe,CAC3C,GAAqB,EAAU,CAAE,EACjC,mBAAqB,EAAS,kBAAkB,CAAC,EACjD,MACJ,CAEA,GAAI,CAAC,EAAG,aAAe,OAAO,GAAQ,SAAU,CACvC,GAA6B,IAAI,CAAG,IACrC,GAA6B,IAAI,CAAG,EACpC,mBAAqB,CACjB,GAA6B,OAAO,CAAG,EACvC,IAAM,EAAO,SAAS,eAAe,CAAG,EACxC,GAAI,CAAC,EAAM,OACX,IAAM,EAAU,EAAkB,IAAI,CAAG,EACnC,EAAoB,GAAiB,EAAM,CAAU,EAC3D,GAAI,GAAS,gBAAkB,EAAmB,CAC9C,GAAqB,EAAS,CAAI,EAClC,EAAQ,kBAAkB,EAC1B,MACJ,CACA,GAAS,QAAQ,EACjB,EAAkB,IAAI,EAAK,GAAoB,EAAgB,EAAM,CAAU,CAAC,CACpF,CAAC,GAEL,MACJ,CAEA,GAAU,QAAQ,EAClB,EAAkB,IAAI,EAAK,GAAoB,EAAgB,EAAI,CAAU,CAAC,EAE9E,MAAc,CACV,IAAM,EAAU,EAAkB,IAAI,CAAG,EACrC,GAAS,UAAY,IACzB,EAAQ,QAAQ,EAChB,EAAkB,OAAO,CAAG,EAChC,CAAC,CACL,CAAC,CACL,EAEM,GAA0B,GAAiE,CAC7F,EAAsB,CAC1B,EAEM,GACF,GACO,CACP,EAAuB,CAC3B,ECj6BM,GAAiB,uBACjB,GAAwB,mBACxB,GAAoB,uBACpB,GAAkB,qBAClB,GAA0B,6BAC1B,GAAqB,0BACrB,GAAmB,oBACnB,GAAoB,0BACpB,GAAmB,oCACnB,GAAiB,sBAGjB,GAAuB,IAAI,IAAmB,CAAC,KAAK,CAAC,EAEvD,GAAqC,KACrC,GAAuE,KAErE,GAAmB,GAAqD,CAC1E,IAAM,GAAS,GAAU,MAAA,CAAO,YAAY,EAE5C,OADI,IAAU,QAAU,IAAU,OAAS,IAAU,SAAW,IAAU,SAAiB,EACpF,KACX,EAEM,IAAe,EAAoC,EAAa,IAA+B,CACjG,GAAI,aAAkB,SAAU,CAC5B,EAAO,OAAO,EAAK,CAAK,EACxB,MACJ,CACA,EAAO,OAAO,EAAK,aAAiB,KAAO,EAAM,KAAO,OAAO,CAAK,CAAC,CACzE,EAEM,IAAY,EAAoC,EAAa,IAAyB,CACxF,GAAI,MAAM,QAAQ,CAAK,EAAG,CACtB,EAAM,QAAS,GAAS,GAAS,EAAQ,EAAK,CAAI,CAAC,EACnD,MACJ,CACI,GAAiC,MACrC,GAAY,EAAQ,EAAK,aAAiB,KAAO,EAAQ,OAAO,CAAK,CAAC,CAC1E,EAEM,IAAgB,EAAoC,IAA0C,CAChG,OAAO,QAAQ,CAAM,CAAC,CAAC,SAAS,CAAC,EAAK,KAAW,GAAS,EAAQ,EAAK,CAAK,CAAC,CACjF,EAEM,IAAe,EAAoC,IAA0C,CAC1F,KACL,IAAI,aAAiB,UAAY,aAAiB,gBAAiB,CAC/D,IAAK,GAAM,CAAC,EAAK,KAAU,EAAM,QAAQ,EAAG,GAAY,EAAQ,EAAK,CAAK,EAC1E,MACJ,CACA,GAAa,EAAQ,CAAK,CAD1B,CAEJ,EAEM,IAAuB,EAAsC,IAAmC,CAClG,IAAM,EAAU,IAAI,QAAQ,CAAW,EACvC,EAAQ,IAAI,GAAgB,MAAM,EAElC,IAAM,EAAO,SAAS,cAA+B,EAAkB,CAAC,EAAE,QAO1E,OANI,GAAM,EAAQ,IAAI,cAAe,CAAI,EAErC,aAAgB,iBAAmB,CAAC,EAAQ,IAAI,cAAc,GAC9D,EAAQ,IAAI,eAAgB,EAAgB,EAGzC,CACX,EAEM,IAAU,EAA+B,EAAmC,IAAuC,CACrH,GAAI,EAAK,OAAO,IAAI,IAAI,EAAK,SAAS,OAAO,EAE7C,GAAI,aAAkB,gBAAiB,CACnC,IAAM,EAAS,GAAW,aAAa,YAAY,GAAK,EAAO,aAAa,QAAQ,GAAK,OAAO,SAAS,KACzG,OAAO,IAAI,IAAI,EAAQ,SAAS,OAAO,CAC3C,CAIA,OAFI,aAAkB,kBAA0B,IAAI,IAAI,EAAO,KAAM,SAAS,OAAO,EAE9E,IAAI,IAAI,OAAO,SAAS,IAAI,CACvC,EAEM,IAAe,EAAuB,IACxC,GAAW,aAAa,aAAa,GAAK,EAAK,SAAW,GAGxD,GAAsB,GAA2D,CACnF,GAAI,EAAE,aAAqB,mBAAqB,aAAqB,kBAAmB,OAAO,KAC/F,IAAM,EAAO,EAAU,aAAa,MAAM,EAE1C,OADK,EACE,CAAC,EAAM,EAAU,KAAK,EADX,IAEtB,EAEM,IAAe,EAAuB,IAA4C,CACpF,IAAM,EAAU,IAAI,SAAS,CAAI,EAC3B,EAAO,GAAmB,CAAS,EAEzC,OADI,GAAM,EAAQ,OAAO,GAAG,CAAI,EACzB,CACX,EAEM,GAAc,GAAyD,CACzE,IAAM,EAAS,IAAI,gBACnB,IAAK,GAAM,CAAC,EAAK,KAAU,EAAQ,QAAQ,EACnC,aAAiB,KACjB,EAAO,OAAO,EAAK,EAAM,IAAI,EAE7B,EAAO,OAAO,EAAK,CAAK,EAGhC,OAAO,CACX,EAEM,IAAmB,EAA+B,IAAoH,CACxK,GAAI,IAAS,IAAA,GAAW,MAAO,CAAC,QAAS,EAAS,SAAU,EAAK,EACjE,GAAI,aAAgB,gBAAiB,MAAO,CAAC,QAAS,IAAI,SAAS,CAAI,EAAG,SAAU,EAAI,EACxF,GAAI,aAAgB,UAAY,aAAgB,iBAAmB,OAAO,GAAS,UAAY,aAAgB,MAAQ,aAAgB,YACnI,MAAO,CAAC,QAAS,EAAM,SAAU,EAAI,EAEzC,IAAM,EAAS,IAAI,gBAEnB,OADA,GAAa,EAAQ,CAAI,EAClB,CAAC,QAAS,EAAQ,SAAU,EAAI,CAC3C,EAEM,IACF,EACA,IAC+C,CAC/C,GAAI,CAAC,EAAO,OAAO,EAEnB,GAAI,aAAmB,UAAY,aAAmB,gBAElD,OADA,GAAY,EAAS,CAAK,EACnB,EAGX,IAAM,EAAS,IAAI,gBAGnB,OAFI,OAAO,GAAY,UAAU,EAAO,OAAO,OAAQ,CAAO,EAC9D,GAAY,EAAQ,CAAK,EAClB,CACX,EAEM,IACF,EACA,IAEI,aAAkB,gBACX,CACH,QAAS,GAAY,EAAQ,CAAS,EACtC,QAAS,GAAY,EAAQ,CAAS,CAC1C,EAEG,CAAC,QAAS,IAAI,gBAAmB,QAAS,EAAgB,EAG/D,IAAiB,EAAmC,EAAkC,IACpF,EAAqB,GAAgB,CAAY,EACjD,aAAkB,gBACX,GAAgB,GAAW,aAAa,YAAY,GAAK,EAAO,aAAa,QAAQ,CAAC,EAE1F,MAGL,IAAkB,EAA+B,EAA0B,CAAC,IAAuB,CACrG,IAAM,EAAS,EAAQ,OACjB,EAAY,EAAQ,WAAa,KACjC,EAAS,GAAc,EAAQ,EAAQ,OAAQ,CAAS,EACxD,EAAc,GAAO,EAAK,EAAQ,CAAS,EAC3C,EAAU,GAAe,EAAQ,CAAS,EAC1C,EAAc,GAAgB,EAAQ,KAAM,EAAQ,OAAO,EAC3D,EAAU,GAAa,EAAY,QAAS,EAAQ,KAAK,EAEzD,EAAoB,CACtB,SACA,GAAI,EAAQ,MAAQ,CAAC,MAAO,EAAQ,KAAK,EAAI,CAAC,CAClD,EACI,EAAwB,KAmB5B,OAjBI,GAAqB,IAAI,CAAM,EAC3B,aAAmB,UAAY,aAAmB,gBAClD,GAAW,CAAO,CAAC,CAAC,SAAS,EAAO,IAAQ,EAAY,aAAa,OAAO,EAAK,CAAK,CAAC,EAChF,OAAO,GAAY,UAC1B,EAAY,aAAa,OAAO,OAAQ,CAAO,EAEhD,AAKH,EALO,aAAmB,WAAa,EAAY,UAAY,EAAQ,UAAY,IAC5E,EACA,aAAmB,SACnB,GAAW,CAAO,EAElB,EAGX,EAAK,QAAU,GAAoB,EAAQ,QAAS,CAAI,EACpD,GAAS,OAA4B,EAAK,KAAO,GAE9C,CAAC,IAAK,EAAa,SAAQ,MAAI,CAC1C,EAEM,GAAkB,GACpB,GAAQ,YAAc,EAAS,SAG7B,IACF,EACA,EACA,EAAkC,CAAC,IACG,IAAI,YAAoC,EAAM,CACpF,QAAS,GACT,SAAU,GACV,WAAY,EAAQ,YAAc,GAClC,QACJ,CAAC,EAEK,GAAqB,EAAc,EAA6B,EAAgC,IAClG,GAAe,CAAM,CAAC,CAAC,cAAc,GAAe,EAAM,EAAQ,CAAO,CAAC,EAGxE,EAAgB,IAAI,QAEpB,GAAc,GAAsC,CACtD,GAAI,CAAC,EAAQ,OACb,IAAM,EAAQ,EAAc,IAAI,CAAM,GAAK,EAC3C,EAAc,IAAI,EAAQ,EAAQ,CAAC,EACnC,EAAO,aAAa,YAAa,MAAM,EACvC,EAAO,aAAa,GAAmB,MAAM,CACjD,EAEM,GAAgB,GAAsC,CACxD,GAAI,CAAC,EAAQ,OACb,IAAM,GAAa,EAAc,IAAI,CAAM,GAAK,GAAK,EACrD,GAAI,EAAY,EAAG,CACf,EAAc,IAAI,EAAQ,CAAS,EACnC,MACJ,CACA,EAAc,OAAO,CAAM,EAC3B,EAAO,gBAAgB,WAAW,EAClC,EAAO,gBAAgB,EAAiB,CAC5C,EAEM,GAAiB,GACnB,EAAS,QAAQ,IAAI,cAAc,CAAC,EAAE,YAAY,CAAC,CAAC,SAAS,EAAgB,GAAK,GAGhF,GAAiB,KAAO,IAAoD,CAC9E,IAAM,EAAW,EAAS,QAAQ,IAAI,EAAe,EACrD,GAAI,EAAU,CACV,IAAM,EAAU,EAAS,QAAQ,IAAI,EAAuB,GAAK,OAKjE,OAJI,IAAY,QAAU,IAAY,QAAU,IAAY,WACxD,EAAK,2CAA4C,CAAO,EACjD,CAAC,WAAU,KAAM,QAAS,IAAK,EAAS,GAAG,GAE/C,CAAC,WAAU,KAAM,WAAY,IAAK,EAAS,IAAK,WAAY,CAAC,UAAS,IAAK,CAAQ,CAAC,CAC/F,CAaA,OAXI,EAAS,SAAW,KACjB,EAAS,OAAS,MAClB,EAAS,QAAQ,IAAI,uBAAuB,IAAM,QAChD,CAAC,WAAU,KAAM,QAAS,IAAK,EAAS,GAAG,EAEhD,EAAS,YAAc,CAAC,GAAc,CAAQ,GAC9C,OAAO,SAAS,OAAO,EAAS,GAAG,EAC5B,CAAC,WAAU,KAAM,WAAY,IAAK,EAAS,GAAG,IAGzD,EAAK,2CAA4C,CAAQ,EAClD,CAAC,WAAU,KAAM,QAAS,IAAK,EAAS,GAAG,EACtD,EAEM,IAAqB,EAA6B,IAA8D,CAClH,GAAI,CAAC,EACD,MAAO,CACH,OAAQ,EAAW,OACnB,YAAe,IAAA,EACnB,EAGJ,IAAM,MAAoB,EAAW,MAAM,EAAe,MAAM,EAOhE,OANI,EAAe,QACf,EAAM,EAEN,EAAe,iBAAiB,QAAS,EAAO,CAAC,KAAM,EAAI,CAAC,EAGzD,CACH,OAAQ,EAAW,OACnB,YAAe,EAAe,oBAAoB,QAAS,CAAK,CACpE,CACJ,EAEM,IAAgB,EAAgB,IAClC,EAAO,SACH,aAAiB,cAAgB,EAAM,OAAS,cAChD,aAAiB,OAAS,EAAM,OAAS,aAG3C,GAAoB,MACtB,EACA,EACA,EAA0B,CAAC,IACF,CACzB,IAAM,EAAS,EAAQ,OACjB,EAAa,IAAI,gBACjB,EAAY,EAAQ,WAAa,OAAO,WAAW,EACnD,EAAW,GAAe,EAAK,CAAO,EACtC,EAAa,GAAkB,EAAY,EAAQ,MAAM,EACzD,EAAS,EAAW,OAC1B,EAAS,KAAK,OAAS,EACvB,EAAU,KAAK,QAAoB,IAAI,GAAmB,CAAS,EACnE,IAAM,EAAe,MAAM,GAAqB,CAAM,EACtD,GAAI,EAAO,QAEP,OADA,EAAW,QAAQ,EACZ,CAAC,YAAW,SAAU,KAAM,KAAM,UAAW,IAAK,EAAS,IAAI,SAAS,CAAC,EAEpF,GAAI,CAAC,EAED,OADA,EAAW,QAAQ,EACZ,CAAC,YAAW,SAAU,KAAM,KAAM,EAAO,QAAU,UAAY,cAAe,IAAK,EAAS,IAAI,SAAS,CAAC,EAErH,EAAU,KAAK,QAAoB,IAAI,GAAuB,EAAa,KAAK,EAEhF,IAAM,EAAiC,CACnC,OAAQ,GAAU,SAClB,IAAK,EAAS,IAAI,SAAS,EAC3B,OAAQ,EAAS,OACjB,YAAa,EAAS,KACtB,YACA,aACA,QACJ,EAEA,GAAI,CAAC,EAAkB,oBAAqB,EAAQ,EAAQ,CAAC,WAAY,EAAI,CAAC,EAE1E,OADA,EAAW,QAAQ,EACZ,CAAC,YAAW,SAAU,KAAM,KAAM,YAAa,IAAK,EAAS,IAAI,SAAS,CAAC,EAGtF,GAAW,CAAM,EACjB,EAAkB,mBAAoB,EAAQ,CAAM,EAEpD,GAAI,CACA,IAAM,EAAW,MAAM,MAAM,EAAS,IAAI,SAAS,EAAG,EAAS,IAAI,EAC7D,EAAS,MAAM,GAAe,CAAQ,EAC5C,EAAO,SAAW,EAClB,EAAO,aAAe,EAAO,KAExB,EAAS,IAAM,EAAO,OAAS,SAAY,EAAO,OAAS,WAC5D,EAAkB,qBAAsB,EAAQ,CAAM,EAEtD,EAAkB,mBAAoB,EAAQ,CAAM,EAGxD,IAAM,EAA+B,CAAC,GAAG,EAAQ,WAAS,EAE1D,OADI,EAAc,OAAS,YAAY,KAA0B,CAAa,EACvE,CACX,OAAS,EAAO,CACZ,GAAI,GAAa,EAAO,CAAM,EAE1B,MADA,GAAO,aAAe,UACf,CAAC,YAAW,SAAU,KAAM,KAAM,UAAW,IAAK,EAAS,IAAI,SAAS,CAAC,EAKpF,KAFA,GAAO,MAAQ,EACf,EAAkB,mBAAoB,EAAQ,CAAM,EAC9C,CACV,QAAU,CACN,EAAW,QAAQ,EACnB,GAAa,CAAM,EACnB,EAAkB,oBAAqB,EAAQ,CAAM,CACzD,CACJ,EAEM,OAAoC,CACtC,GAAI,CAAC,GACD,MAAU,MAAM,8DAA8D,EAElF,OAAO,EACX,EAEM,GAAW,EAAmB,EAA0B,CAAC,IAC3D,GAAkB,GAAc,EAAG,EAAK,CAAO,EAG7C,IAAO,EAAmB,EAA0B,CAAC,IACvD,EAAQ,EAAK,CAAC,GAAG,EAAS,OAAQ,KAAK,CAAC,EAGtC,IAAQ,EAAmB,EAA0B,CAAC,IACxD,EAAQ,EAAK,CAAC,GAAG,EAAS,OAAQ,MAAM,CAAC,EAGvC,IAAO,EAAmB,EAA0B,CAAC,IACvD,EAAQ,EAAK,CAAC,GAAG,EAAS,OAAQ,KAAK,CAAC,EAGtC,IAAO,EAAmB,EAA0B,CAAC,IACvD,EAAQ,EAAK,CAAC,GAAG,EAAS,OAAQ,QAAQ,CAAC,EAGzC,GAA0B,GAAuD,CACnF,GAAgB,CACpB,EAEM,GAA8B,GAA+D,CAC/F,GAA0B,CAC9B,EC1aM,GAAoB,YACpB,GAA4B,+BAC5B,GAAoB,IACpB,GAA0B,GAC1B,GAA0B,IAE5B,GAAa,GACb,EAA0C,KAC1C,EAAe,EACf,EAAa,GACb,GAAqB,GACrB,EAAiC,KAC/B,EAAkB,IAAI,IACtB,EAAsB,IAAI,IAC1B,EAAoB,IAAI,IAExB,MAA6B,OAAO,WAAW,EAE/C,QAAuC,CACzC,WAAY,CAAC,EACb,OAAQ,CAAC,EAAG,EAAG,EAAG,CAAC,CACvB,GAEM,GAAsB,GACP,EAAQ,aAAa,4BAA4B,CAAC,EAAE,KAAK,GAEnE,EAAQ,IAAM,KAGnB,MAAmC,CACrC,IAAM,EAA6C,CAAC,EAMpD,OALA,SAAS,iBAA8B,EAAyB,CAAC,CAAC,QAAS,GAAY,CACnF,IAAM,EAAM,GAAmB,CAAO,EACjC,IACL,EAAW,GAAO,CAAC,EAAG,EAAQ,WAAY,EAAG,EAAQ,SAAS,EAClE,CAAC,EACM,CACH,aACA,OAAQ,CAAC,EAAG,OAAO,QAAS,EAAG,OAAO,OAAO,CACjD,CACJ,EAEM,IAAqB,EAAmB,IAAgC,CAC1E,GAAI,EAAK,OAAO,IAAM,EAAM,OAAO,GAAK,EAAK,OAAO,IAAM,EAAM,OAAO,EAAG,MAAO,GACjF,IAAM,EAAW,OAAO,KAAK,EAAK,UAAU,EACtC,EAAY,OAAO,KAAK,EAAM,UAAU,EAE9C,OADI,EAAS,SAAW,EAAU,QAC3B,EAAS,MAAO,GAAQ,CAC3B,IAAM,EAAe,EAAK,WAAW,GAC/B,EAAgB,EAAM,WAAW,GACvC,MAAO,GACH,GACG,GACA,EAAa,IAAM,EAAc,GACjC,EAAa,IAAM,EAAc,EAE5C,CAAC,CACL,EAEM,EAAqB,GAAgD,CACvE,GAAI,CAAC,EAAc,CAAK,EAAG,OAAO,KAClC,IAAM,EAAU,EAAM,IACtB,GAAI,CAAC,EAAc,CAAO,EAAG,OAAO,KACpC,IAAM,EAAW,EAAQ,SAQzB,MAPI,CAAC,EAAc,CAAQ,GAEvB,OAAO,EAAS,IAAO,UACpB,OAAO,EAAS,OAAU,UAC1B,OAAO,EAAS,KAAQ,UACxB,CAAC,EAAc,EAAS,MAAM,EAC5B,KACF,CACX,EAEM,GAAsB,GAA4D,CACpF,IAAM,EAAQ,EAAc,OAAO,QAAQ,KAAK,EAAI,OAAO,QAAQ,MAAQ,CAAC,EACtE,EAAY,EAAc,EAAA,SAAwB,EAClD,EAAM,IACN,CAAC,EACP,MAAO,CACH,GAAG,GACF,IAAoB,CACjB,GAAG,EACH,UACJ,CACJ,CACJ,EAEM,GAAgB,EAAgC,EAAoB,EAAS,MAAc,CAC7F,OAAO,QAAQ,aAAa,GAAmB,CAAQ,EAAG,GAAI,CAAG,EACjE,EAAa,IAAI,IAAI,EAAK,SAAS,OAAO,CAAC,CAAC,IAChD,EAEM,OAAgC,CAClC,IAAM,EAAW,EAAkB,OAAO,QAAQ,KAAK,EACvD,GAAI,CAAC,EAAU,OACf,IAAM,EAAS,EAAc,EAC7B,EAAgB,IAAI,EAAS,GAAI,CAAM,EACnC,IAAkB,EAAS,OAAQ,CAAM,GAC7C,EAAa,CAAC,GAAG,EAAU,QAAM,CAAC,CACtC,EAEM,MAAiC,CAC/B,IAAoB,OACpB,OAAO,aAAa,CAAe,EACnC,EAAkB,MAEtB,GAAkB,CACtB,EAEM,OAAoC,CACtC,IAAM,EAAW,EAAkB,OAAO,QAAQ,KAAK,EACvD,GAAI,CAAC,EAAU,OACf,IAAM,EAAS,EAAc,EAC7B,EAAgB,IAAI,EAAS,GAAI,CAAM,EACnC,IAAkB,EAAS,OAAQ,CAAM,IACzC,IAAoB,MAAM,OAAO,aAAa,CAAe,EACjE,EAAkB,OAAO,eAAiB,CACtC,EAAkB,KAClB,IAAM,EAAU,EAAkB,OAAO,QAAQ,KAAK,EACtD,GAAI,CAAC,EAAS,OACd,IAAM,EAAS,EAAgB,IAAI,EAAQ,EAAE,EACzC,GAAU,CAAC,GAAkB,EAAQ,OAAQ,CAAM,GACnD,EAAa,CAAC,GAAG,EAAS,OAAQ,CAAM,CAAC,CAEjD,EAAG,EAAiB,EACxB,EAEM,GAAiB,GAA8B,CACjD,0BAA4B,CACxB,OAAO,SAAS,CAAC,KAAM,EAAO,OAAO,EAAG,IAAK,EAAO,OAAO,EAAG,SAAU,SAAS,CAAC,EAClF,SAAS,iBAA8B,EAAyB,CAAC,CAAC,QAAS,GAAY,CACnF,IAAM,EAAM,GAAmB,CAAO,EAChC,EAAW,EAAM,EAAO,WAAW,GAAO,IAAA,GAChD,EAAQ,SAAS,CACb,KAAM,GAAU,GAAK,EACrB,IAAK,GAAU,GAAK,EACpB,SAAU,SACd,CAAC,CACL,CAAC,CACL,CAAC,CACL,EAEM,GACF,EACA,EACA,EAAa,KACH,CACV,IAAM,EAAS,EAAQ,QAAQ,YAAc,EAAQ,OAAS,SAC9D,OAAO,EAAO,cAAc,IAAI,YAA8B,EAAM,CAChE,QAAS,GACT,aACA,SAAU,GACV,OAAQ,CACJ,QAAS,EAAQ,QACjB,SACA,IAAK,EAAQ,WACjB,CACJ,CAAC,CAAC,CACN,EAEM,GAAqB,GAAqC,CAE5D,IADA,EAAkB,IAAI,EAAQ,UAAW,CAAO,EACzC,EAAkB,KAAO,IAAyB,CACrD,IAAM,EAAS,EAAkB,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAC/C,GAAI,CAAC,EAAQ,MACb,EAAkB,OAAO,CAAM,CACnC,CACJ,EAEM,GAAmB,GAA4B,CAEjD,IADA,EAAoB,IAAI,CAAS,EAC1B,EAAoB,KAAO,IAAyB,CACvD,IAAM,EAAS,EAAoB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MACnD,GAAI,CAAC,EAAQ,MACb,EAAoB,OAAO,CAAM,CACrC,CACJ,EAEM,OAA2B,CACxB,AAGL,KAFA,GAAgB,EAAc,SAAS,EACvC,EAAc,WAAW,MAAM,0CAA0C,EACzD,KACpB,EAEM,OAAwC,CAC1C,GAAa,EACb,EAAkB,QAAS,GAAY,GAAgB,EAAQ,SAAS,CAAC,EACzE,EAAkB,MAAM,CAC5B,EAEM,EAAkB,GAAmB,CACvC,OAAO,SAAS,OAAO,EAAI,IAAI,CACnC,EAEM,EAAe,GAA8B,CAC/C,IAAM,EAAM,IAAI,IAAI,EAAO,SAAS,OAAO,EAC3C,OAAO,EAAI,SAAW,OAAO,SAAS,OAAS,EAAM,IACzD,EAEM,GAAmB,GAAqD,CAC1E,EAAmB,EACnB,IAAM,EAAiC,CACnC,GAAI,EAAa,EACjB,MAAO,EAAe,EACtB,OAAQ,GAAiB,EACzB,IAAK,EAAQ,YAAY,IAC7B,EAKA,MAJA,GAAe,EAAS,MACxB,OAAO,QAAQ,UAAU,GAAmB,CAAQ,EAAG,GAAI,EAAQ,WAAW,EAC9E,EAAa,EAAQ,YAAY,KACjC,EAAQ,QAAU,EAAS,GACpB,CACX,EAEM,GAAsB,GAAqD,CAC7E,IAAM,EAAiC,CACnC,GAAI,EAAa,EACjB,MAAO,EACP,OAAQ,GAAiB,EACzB,IAAK,EAAQ,YAAY,IAC7B,EAGA,OAFA,EAAa,EAAU,EAAQ,WAAW,EAC1C,EAAQ,QAAU,EAAS,GACpB,CACX,EAEM,GAAsB,GAAwC,CAChE,GAAI,EAAQ,cAAgB,UAAW,MAAO,GAC9C,GAAI,EAAQ,cAAgB,OAAQ,MAAO,GAC3C,IAAM,EAAU,IAAI,IAAI,OAAO,SAAS,IAAI,EAC5C,OAAO,EAAQ,SAAW,EAAQ,YAAY,QAAU,EAAQ,WAAa,EAAQ,YAAY,QACrG,EAEM,IAAe,EAA4B,IAAiC,CAE1E,GAAQ,OAAS,WACd,GAAQ,OAAS,aACjB,GAAQ,OAAS,YAExB,EAAe,EAAQ,WAAW,CACtC,EAEM,IACF,EACA,EACA,IACO,CACP,GAAI,EAAoB,IAAI,EAAQ,SAAS,EAAG,OAChD,GAAI,EAAO,OAAS,QAAS,CACzB,GAAY,EAAS,CAAM,EAC3B,MACJ,CAEA,IAAM,EAAmB,IACrB,GAAmB,CAAO,EAAI,GAAmB,CAAO,EAAI,GAAgB,CAAO,GAEvF,GAAI,GAAiB,EAAQ,YAAY,OAAS,EAAc,IAAK,CACjE,IAAM,EAAa,CAAC,GAAG,EAAe,IAAK,EAAQ,YAAY,IAAI,EACnE,EAAa,EAAY,EAAQ,WAAW,EAC5C,EAAQ,QAAU,EAAW,EACjC,CACA,GAAc,EAAiB,MAAM,EACrC,EAAmB,eAAgB,CAAO,CAC9C,EAEM,IACF,EACA,EACA,IAQgB,CAChB,IAAM,EAA6B,CAC/B,WAAY,IAAI,gBAChB,cACA,QAAS,EAAQ,eAAe,IAAM,KACtC,QAAS,EAAQ,QACjB,YAAa,EAAQ,aAAe,OACpC,UAAW,EAAa,EACxB,GAAI,EAAQ,eAAiB,CAAC,eAAgB,EAAQ,cAAc,EAAI,CAAC,EACzE,GAAI,EAAQ,OAAS,CAAC,OAAQ,EAAQ,MAAM,EAAI,CAAC,CACrD,EAEA,GAAI,EAAQ,YAAc,IAAS,CAAC,EAAmB,cAAe,EAAS,EAAI,EAAG,OAAO,QAAQ,QAAQ,EAC7G,EAAmB,EACnB,GAA0B,EAC1B,EAAgB,EAChB,EAAmB,gBAAiB,CAAO,EAE3C,IAAM,EAAU,IAAI,QAAQ,EAAQ,gBAAgB,OAAO,EAC3D,EAAQ,IAAI,uBAAwB,EAAQ,QAAU,UAAY,UAAU,EAC5E,IAAI,EAAiB,GACf,EAAqB,SAAoC,CAC3D,IAAM,EAAiB,EAAiB,EAAQ,eAAiB,IAAA,GAC3D,EAAS,EAAiB,EAAQ,OAAS,IAAA,GACjD,EAAiB,GACjB,IAAM,EAAS,MAAM,GAAkB,EAAgB,EAAQ,YAAa,CACxE,GAAG,EACH,UACA,OAAQ,MACR,UAAW,EAAQ,UACnB,OAAQ,EAAQ,WAAW,OAC3B,GAAI,EAAS,CAAC,QAAM,EAAI,CAAC,CAC7B,CAAC,EAED,GADA,EAAQ,YAAc,IAAI,IAAI,EAAO,IAAK,SAAS,OAAO,EACtD,EAAO,OAAS,WAAY,OAAO,EAEvC,IAAM,EAAa,EAAY,EAAO,WAAW,GAAG,EAYpD,OAXK,GASL,EAAQ,YAAc,EAClB,EAAO,WAAW,UAAY,SAAQ,EAAQ,YAAc,EAAO,WAAW,SAC3E,EAAmB,IAVtB,EAAe,IAAI,IAAI,EAAO,WAAW,IAAK,SAAS,OAAO,CAAC,EACxD,CACH,UAAW,EAAO,UAClB,SAAU,EAAO,SACjB,KAAM,WACN,IAAK,EAAO,GAChB,EAKR,EAEA,OAAO,EAAmB,CAAC,CAAC,KAAM,GAAW,EACrC,GAAe,YAAc,EAAQ,WAAc,EAAkB,IAAI,EAAQ,SAAS,IAC9F,GAAc,EAAS,EAAQ,EAAQ,aAAa,CACxD,CAAC,CAAC,CAAC,MAAO,GAAmB,CACpB,EAAQ,WAAW,OAAO,UAC3B,EAAK,4CAA6C,CAAK,EACvD,GAAY,CAAO,EAE3B,CAAC,CAAC,CAAC,YAAc,CACT,GAAe,YAAc,EAAQ,YAAW,EAAgB,MAC/D,EAAoB,IAAI,EAAQ,SAAS,GAAG,GAAkB,CAAO,CAC9E,CAAC,CACL,EAEM,OAAgC,CAClC,IAAM,EAAW,EAAkB,OAAO,QAAQ,KAAK,EACnD,EACA,EAAe,EAAS,MAQxB,EAAa,CALT,GAAI,EAAa,EACjB,MAAO,EACP,OAAQ,EAAc,EACtB,IAAK,OAAO,SAAS,IAEZ,CAAQ,EAEzB,EAAa,OAAO,SAAS,KACzB,sBAAuB,OAAO,UAAS,OAAO,QAAQ,kBAAoB,SAClF,EAEM,OAAsC,CAExC,GADiB,EAAkB,OAAO,QAAQ,KAC9C,CAAA,EAAU,MAAQ,OAAO,SAAS,KAAM,OAC5C,IAAM,EAAiC,CACnC,GAAI,EAAa,EACjB,MAAO,EAAe,EACtB,OAAQ,EAAc,EACtB,IAAK,OAAO,SAAS,IACzB,EACA,EAAe,EAAS,MACxB,EAAa,CAAQ,CACzB,EAEM,IAAgB,EAAW,IAC7B,EAAK,SAAW,EAAM,QACnB,EAAK,WAAa,EAAM,UACxB,EAAK,SAAW,EAAM,OAGvB,GAAmC,GAA2B,CAChE,EAAmB,EACnB,EAAa,EAAY,IAC7B,EAEM,GAA6B,GAAuD,CAClF,KACJ,GAAa,GACb,GAAkB,EAClB,GAAwB,GAAc,CAAC,GAAa,CAAC,EAAoB,IAAI,CAAS,CAAC,EACvF,IAAyB,EAAW,IAChC,EAAQ,QAAQ,kBAAkB,GAC/B,EACC,IAEI,GAAe,YAAc,GAC1B,GAAkB,IAAI,CAAS,EAG7C,EACD,GAA4B,GAAW,CACnC,GAAI,EAAO,OAAS,WAAY,MAAO,GAEvC,GADI,EAAoB,IAAI,EAAO,SAAS,GACxC,GAAe,YAAc,EAAO,UAAW,MAAO,GAC1D,IAAM,EAAc,EAAY,EAAO,WAAW,GAAG,EASrD,OARK,GAIL,GAAkB,EAAgC,EAAa,CAC3D,QAAS,GACT,YAAa,EAAO,WAAW,OACnC,CAAC,EACM,KAPH,EAAe,IAAI,IAAI,EAAO,WAAW,IAAK,SAAS,OAAO,CAAC,EACxD,GAOf,CAAC,EAED,OAAO,iBAAiB,SAAU,GAAuB,CAAC,QAAS,EAAI,CAAC,EACxE,SAAS,iBAAiB,SAAW,GAAU,CACvC,EAAM,kBAAkB,SAAW,EAAM,OAAO,QAAA,8BAAiC,GACjF,GAAsB,CAE9B,EAAG,CAAC,QAAS,GAAM,QAAS,EAAI,CAAC,EACjC,OAAO,iBAAiB,WAAY,CAAkB,EACtD,OAAO,iBAAiB,aAAc,EAAuB,EAC7D,OAAO,iBAAiB,WAAa,GAAU,CAC3C,GAAI,GAAoB,CACpB,GAAqB,GACrB,MACJ,CACA,IAAM,EAAgB,EAAkB,EAAM,KAAK,EACnD,GAAI,CAAC,EAAe,CAChB,GAAwB,EACxB,MACJ,CACA,IAAM,EAAiB,EAAgB,IAAI,EAAc,EAAE,EACrD,EAAiB,EACjB,CAAC,GAAG,EAAe,OAAQ,CAAc,EACzC,EACA,EAAc,EAAY,EAAc,GAAG,EAC3C,EAAW,IAAI,IAAI,OAAO,SAAS,IAAI,EAC7C,GAAI,GAAe,EAAY,OAAS,EAAS,MAAQ,GAAa,EAAa,CAAQ,EAAG,CAC1F,GAA0B,EAC1B,GAAwB,EACxB,MACJ,CACA,GAAI,CAAC,GAAe,EAAY,OAAS,EAAS,KAAM,CACpD,EAAe,CAAQ,EACvB,MACJ,CAEA,IAAM,EAAW,EAAY,CAAU,EACvC,GAAI,GAAY,EAAS,OAAS,EAAY,MAAQ,GAAa,EAAU,CAAW,EAAG,CACvF,GAA0B,EAC1B,EAAe,EAAc,MAC7B,EAAa,EAAY,KACzB,MACJ,CAEA,IAAM,EAAgB,EAUtB,GATA,EAAe,EAAc,MASzB,CAAC,EAAmB,cAAe,CAPnC,WAAY,IAAI,gBAChB,cACA,QAAS,EAAc,GACvB,QAAS,GACT,YAAa,UACb,UAAW,EAAa,CAEW,EAAO,EAAI,EAAG,CACjD,GAAqB,GACrB,OAAO,QAAQ,GAAG,EAAgB,EAAc,KAAK,EACrD,EAAe,EACf,MACJ,CACA,EAAa,EAAY,KACzB,GAAkB,EAAgC,EAAa,CAC3D,QAAS,GACT,UAAW,GACX,cAAe,CACnB,CAAC,CACL,CAAC,EACL,EAEM,IACF,EACA,EACA,EACA,IACgB,CAChB,GAAM,CAAC,UAAU,OAAQ,GAAG,GAAkB,GAAW,CAAC,EAC1D,OAAO,GAAkB,EAAgC,IAAI,IAAI,EAAK,SAAS,OAAO,EAAG,CACrF,QAAS,GACT,YAAa,EACb,iBACA,GAAI,EAAS,CAAC,QAAM,EAAI,CAAC,CAC7B,CAAC,CACL,ECnfI,EAAiB,CAAC,eAAgB,CAAC,EACnC,GAAW,GACX,GAAY,GACZ,EAA+B,CAAC,EAChC,GAAsC,KACpC,GAAiB,IAAI,QAErB,IAAc,EAAK,EAAU,CAAC,IAAM,CACtC,GAAM,CAAC,UAAS,WAAW,GAAO,GAAG,GAAkB,EACvD,GAAI,CAAC,EAAU,OAAO,GAAW,EAAK,CAAc,EACpD,GAAI,CAAC,GAAe,MAAU,MAAM,yDAAyD,EAC7F,GAAM,CAAC,SAAQ,GAAG,GAAqB,EAEvC,OAAO,GAAmB,GAAe,EAAK,EAAQ,CAClD,GAAG,EACH,GAAI,EAAU,CAAC,SAAO,EAAI,CAAC,CAC/B,CAAC,CACL,EAEM,IACF,EACA,KACc,EAAK,EAAU,CAAC,IAAM,CACpC,GAAM,CAAC,WAAW,GAAO,GAAG,GAAkB,EAE9C,OADI,GAAU,EAAK,OAAO,EAAK,8CAA8C,EACtE,EAAQ,EAAK,CAAc,CACtC,EAMM,GAAgB,CAClB,OACA,KANS,GAAe,OAAQ,EAMhC,EACA,IANQ,GAAe,MAAO,EAM9B,EACA,OANQ,GAAe,SAAU,EAMzB,EACR,IAAI,QAAwB,CACxB,GAAI,CAAC,EAAa,OAAQ,MAAU,MAAM,8CAA8C,EACxF,OAAO,EAAa,MACxB,EACA,IAAI,UAA8B,CAC9B,GAAI,CAAC,EAAa,SAAU,MAAU,MAAM,gDAAgD,EAC5F,OAAO,EAAa,QACxB,EACA,IAAI,YAAsB,CACtB,OAAO,EAAM,eAAiB,CAClC,CACJ,EAEM,OAAmC,CACjC,KACJ,GAAY,GAEZ,SAAS,iBAAiB,uBAA0B,CAChD,EAAM,gBAAkB,CAC5B,CAAC,EACD,SAAS,iBAAiB,wBAA2B,CACjD,EAAM,eAAiB,KAAK,IAAI,EAAG,EAAM,eAAiB,CAAC,CAC/D,CAAC,EACL,EAEM,GAAmB,GAAwC,CAC7D,GAAgB,EAChB,AAEI,MADA,EAAQ,EAAe,SAAS,CAAK,EAC1B,IAEf,GAAqB,EACrB,IAAM,EAAU,OAAO,OAAO,GAAI,CAC9B,SAAU,CACN,aAAc,GACd,WAAY,GACZ,QAAW,CACP,IAAM,EAAU,GAAe,IAAI,CAAc,EACjD,GAAI,CAAC,EAAS,MAAU,MAAM,gDAAgD,EAC9E,OAAO,CACX,CACJ,CACJ,CAAC,EACD,EAAe,MAAM,SAAY,CAAO,CAC5C,EACM,GAAoB,GAA+B,CACrD,EAAa,OAAS,CAC1B,EACM,IAAsB,EAA+B,IAAmC,CAC1F,GAAe,IAAI,EAAgB,CAAK,EACxC,EAAa,SAAW,CAC5B"}
@@ -1 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-Ct9H8Hlf.js";export{e as UiAccordion,t as default,t as registerAccordion};
@@ -1 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-oJwO9fIY.js";export{t as default,t as registerButton,e as unregisterButton};
@@ -1 +0,0 @@
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 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-Cl8rInnJ.js";export{e as UiDataGrid,t as default,t as registerDataGrid};
@@ -1 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-FCDgmA0s.js";export{e as UiDatePicker,t as default,t as registerDatePicker};
@@ -1 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-CC6pQ0nu.js";export{e as UiDirectUpload,t as default,t as registerDirectUpload};
@@ -1 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-J0oGNBzS.js";export{e as UiDropdown,t as default,t as registerDropdown};
@@ -1 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-C_SxTqg5.js";export{e as UiField,t as default,t as registerField};
@@ -1 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-DQtFqG0K.js";export{e as UiFileUpload,t as default,t as registerFileUpload};
@@ -1 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-xjydizn-.js";export{e as UiFormset,t as default,t as registerFormset};
@@ -1 +0,0 @@
1
- import{n as e,r as t,t as n}from"../chunks/entry.generated-BCTWp6Xu.js";export{e as UiImportMapper,n as default,n as registerImportMapper,t as mappingProjection};
@@ -1,2 +0,0 @@
1
- import{t as e}from"../chunks/motion-RwlK04Cy.js";import{n as ee,r as te,t}from"../chunks/entry.generated-CL4bjCqf.js";import{n,t as r}from"../chunks/capability-motion-B32HePGn.js";import{i as ne,n as i,r as a,t as o}from"../chunks/capability-anchor-lhqk7hfo.js";import{n as re,t as s}from"../chunks/entry.generated-CEfr2bmw.js";import{n as ie}from"../chunks/cursor-data-source-Do0FfF4Z.js";import{n as ae,r as oe,t as c}from"../chunks/capability-sortable-Bl6ng6Hd.js";import{n as l,t as u}from"../chunks/capability-resizable-ByUbMIHF.js";import{n as d,t as f}from"../chunks/entry.generated-Ct9H8Hlf.js";import{n as p,t as m}from"../chunks/entry.generated-oJwO9fIY.js";import{n as se,r as ce,t as h}from"../chunks/entry.generated-D2es_Wi2.js";import{n as le,t as g}from"../chunks/entry.generated-FCDgmA0s.js";import{n as ue,t as _}from"../chunks/entry.generated-CC6pQ0nu.js";import{n as de,t as v}from"../chunks/entry.generated-J0oGNBzS.js";import{n as fe,t as y}from"../chunks/entry.generated-C_SxTqg5.js";import{n as pe,t as b}from"../chunks/entry.generated-DQtFqG0K.js";import{n as me,t as x}from"../chunks/entry.generated-xjydizn-.js";import{n as S,r as C,t as w}from"../chunks/entry.generated-BCTWp6Xu.js";import{n as T,t as E}from"../chunks/entry.generated-BZWdGtgg.js";import{a as D,i as O,n as k,o as A,r as j,t as M}from"../chunks/capability-shortcut-DZUQHJ3A.js";import{t as N}from"../chunks/controller-C8xqwkr0.js";import{t as P}from"../chunks/entry.generated-HqE8R7N1.js";import{n as F,r as I,t as L}from"../chunks/entry.generated-Cbyseoex.js";import{n as R,r as z,t as B}from"../chunks/entry.generated-Cf2hKkwA.js";import{n as he,r as ge,t as V}from"../chunks/entry.generated-CfYgsDun.js";import{n as _e,t as H}from"../chunks/entry.generated-BnqcHAaF.js";import{i as ve,n as ye,r as be,t as U}from"../chunks/entry.generated-BzLNUDzF.js";import{n as xe,t as W}from"../chunks/entry.generated-CVWqQEed.js";import{n as Se,t as G}from"../chunks/entry.generated-EqHVGr1d.js";import{n as Ce,t as K}from"../chunks/entry.generated-BRaKxvab.js";import{n as we,r as Te,t as q}from"../chunks/entry.generated-7hdXmBLE.js";import{n as Ee,t as J}from"../chunks/entry.generated-Cl8rInnJ.js";import{n as De,t as Y}from"../chunks/entry.generated-BQNpmLZO.js";import{_ as Oe,a as ke,b as Ae,c as je,d as Me,f as Ne,g as Pe,h as Fe,i as Ie,l as Le,m as X,n as Re,o as ze,p as Be,r as Ve,s as He,t as Z,u as Ue,v as We,x as Ge,y as Ke}from"../chunks/entry.generated-O0hEhk-2.js";var Q=new WeakSet,$=e=>{Q.has(e)||(Q.add(e),r(e),o(e),u(e),c(e),A(e),f(e),m(),h(e),g(e),_(e),v(e),y(e),b(e),x(e),w(e),E(e),P(e),L(e),B(e),V(e),H(e),s(e),U(e),W(e),G(e),K(e),t(e),q(e),J(e),Y(e),Z(e))};export{Re as TABLE_ALIGNS,Ve as TABLE_BORDERS,Ie as TABLE_COLUMN_SCOPES,ke as TABLE_DENSITIES,ze as TABLE_FILTER_AS_VALUES,He as TABLE_LAYOUTS,je as TABLE_ROW_HEADER_SCOPES,Le as TABLE_SORTS,Ue as TABLE_VALIGNS,Me as TABLE_VARIANTS,Ne as TABLE_WIDTHS,d as UiAccordion,se as UiCheckbox,ce as UiCheckboxGroup,De as UiCursorVirtualizer,Ee as UiDataGrid,le as UiDatePicker,ue as UiDirectUpload,de as UiDropdown,fe as UiField,pe as UiFileUpload,me as UiFormset,S as UiImportMapper,T as UiInput,F as UiModal,I as UiModalTrigger,R as UiPanelToggle,z as UiPanels,he as UiRadio,ge as UiRadioGroup,_e as UiScrollArea,re as UiSelect,ye as UiSidebar,be as UiSidebarEdge,ve as UiSidebarToggle,xe as UiSlider,Se as UiSwitch,Ce as UiTabs,ee as UiToast,te as UiToastOutlet,we as UiTooltip,ie as UiVirtualizer,$ as components,$ as default,a as createAnchoredPopover,ne as createAnchoredPopoverSurface,N as createKeybindingController,l as createResizable,M as createShortcutMatcher,oe as createSortableRegistry,k as formatShortcut,j as formatShortcutKeys,C as mappingProjection,e as motion,O as observePressedShortcutKeys,D as parseShortcut,f as registerAccordion,o as registerAnchorCapability,i as registerAnchorDirective,n as registerBoundsDirective,m as registerButton,h as registerCheckbox,J as registerDataGrid,g as registerDatePicker,_ as registerDirectUpload,v as registerDropdown,y as registerField,b as registerFileUpload,x as registerFormset,w as registerImportMapper,E as registerInput,P as registerKeybinding,L as registerModal,r as registerMotionCapability,B as registerPanels,V as registerRadio,u as registerResizableCapability,H as registerScrollArea,s as registerSelect,A as registerShortcutCapability,U as registerSidebar,W as registerSlider,c as registerSortableCapability,ae as registerSortableDirective,G as registerSwitch,Z as registerTable,K as registerTabs,t as registerToast,q as registerTooltip,Te as registerTooltipDirective,Y as registerVirtualizer,Be as tableCaptionSchema,X as tableCellSchema,Fe as tableColumnFilterSchema,Pe as tableColumnSchema,Oe as tableEmptySchema,We as tableRowHeaderSchema,Ke as tableRowSchema,Ae as tableSchema,Ge as tableSectionSchema,p as unregisterButton};
2
- //# sourceMappingURL=index-DRH3gncZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DRH3gncZ.js","names":[],"sources":["../../../../../../../../client/src/components/entry.generated.ts"],"sourcesContent":["// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerAccordion} from './accordion/entry.generated';\nimport {registerButton} from './button/entry.generated';\nimport {registerCheckbox} from './checkbox/entry.generated';\nimport {registerDatePicker} from './date-picker/entry.generated';\nimport {registerDirectUpload} from './direct-upload/entry.generated';\nimport {registerDropdown} from './dropdown/entry.generated';\nimport {registerField} from './field/entry.generated';\nimport {registerFileUpload} from './file-upload/entry.generated';\nimport {registerFormset} from './formset/entry.generated';\nimport {registerImportMapper} from './import-mapper/entry.generated';\nimport {registerInput} from './input/entry.generated';\nimport {registerKeybinding} from './keybinding/entry.generated';\nimport {registerModal} from './modal/entry.generated';\nimport {registerPanels} from './panels/entry.generated';\nimport {registerRadio} from './radio/entry.generated';\nimport {registerScrollArea} from './scroll-area/entry.generated';\nimport {registerSelect} from './select/entry.generated';\nimport {registerSidebar} from './sidebar/entry.generated';\nimport {registerSlider} from './slider/entry.generated';\nimport {registerSwitch} from './switch/entry.generated';\nimport {registerTabs} from './tabs/entry.generated';\nimport {registerToast} from './toast/entry.generated';\nimport {registerTooltip} from './tooltip/entry.generated';\nimport {registerDataGrid} from './data-grid/entry.generated';\nimport {registerVirtualizer} from './virtualizer/entry.generated';\nimport {registerTable} from './table/entry.generated';\nimport {registerMotionCapability} from '../capabilities/motion';\nimport {registerAnchorCapability} from '../capabilities/anchor';\nimport {registerResizableCapability} from '../capabilities/resizable';\nimport {registerSortableCapability} from '../capabilities/sortable';\nimport {registerShortcutCapability} from '../capabilities/shortcut';\n\ntype ComponentsPlugin = (AlpineInstance: AlpineType) => void;\nconst registered = new WeakSet<AlpineType>();\n\nconst components: ComponentsPlugin = (AlpineInstance): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerAnchorCapability(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n registerSortableCapability(AlpineInstance);\n registerShortcutCapability(AlpineInstance);\n registerAccordion(AlpineInstance);\n registerButton();\n registerCheckbox(AlpineInstance);\n registerDatePicker(AlpineInstance);\n registerDirectUpload(AlpineInstance);\n registerDropdown(AlpineInstance);\n registerField(AlpineInstance);\n registerFileUpload(AlpineInstance);\n registerFormset(AlpineInstance);\n registerImportMapper(AlpineInstance);\n registerInput(AlpineInstance);\n registerKeybinding(AlpineInstance);\n registerModal(AlpineInstance);\n registerPanels(AlpineInstance);\n registerRadio(AlpineInstance);\n registerScrollArea(AlpineInstance);\n registerSelect(AlpineInstance);\n registerSidebar(AlpineInstance);\n registerSlider(AlpineInstance);\n registerSwitch(AlpineInstance);\n registerTabs(AlpineInstance);\n registerToast(AlpineInstance);\n registerTooltip(AlpineInstance);\n registerDataGrid(AlpineInstance);\n registerVirtualizer(AlpineInstance);\n registerTable(AlpineInstance);\n};\n\nexport {components};\nexport default components;\nexport type {ComponentsPlugin};\nexport * from './accordion/entry.generated';\nexport * from './button/entry.generated';\nexport * from './checkbox/entry.generated';\nexport * from './date-picker/entry.generated';\nexport * from './direct-upload/entry.generated';\nexport * from './dropdown/entry.generated';\nexport * from './field/entry.generated';\nexport * from './file-upload/entry.generated';\nexport * from './formset/entry.generated';\nexport * from './import-mapper/entry.generated';\nexport * from './input/entry.generated';\nexport * from './keybinding/entry.generated';\nexport * from './modal/entry.generated';\nexport * from './panels/entry.generated';\nexport * from './radio/entry.generated';\nexport * from './scroll-area/entry.generated';\nexport * from './select/entry.generated';\nexport * from './sidebar/entry.generated';\nexport * from './slider/entry.generated';\nexport * from './switch/entry.generated';\nexport * from './tabs/entry.generated';\nexport * from './toast/entry.generated';\nexport * from './tooltip/entry.generated';\nexport * from './data-grid/entry.generated';\nexport * from './virtualizer/entry.generated';\nexport * from './table/entry.generated';\nexport * from '../capabilities/motion';\nexport * from '../capabilities/anchor';\nexport * from '../capabilities/resizable';\nexport * from '../capabilities/sortable';\nexport * from '../capabilities/shortcut';\n"],"mappings":"s6EAoCA,IAAM,EAAa,IAAI,QAEjB,EAAgC,GAAyB,CACvD,EAAW,IAAI,CAAc,IACjC,EAAW,IAAI,CAAc,EAC7B,EAAyB,CAAc,EACvC,EAAyB,CAAc,EACvC,EAA4B,CAAc,EAC1C,EAA2B,CAAc,EACzC,EAA2B,CAAc,EACzC,EAAkB,CAAc,EAChC,EAAe,EACf,EAAiB,CAAc,EAC/B,EAAmB,CAAc,EACjC,EAAqB,CAAc,EACnC,EAAiB,CAAc,EAC/B,EAAc,CAAc,EAC5B,EAAmB,CAAc,EACjC,EAAgB,CAAc,EAC9B,EAAqB,CAAc,EACnC,EAAc,CAAc,EAC5B,EAAmB,CAAc,EACjC,EAAc,CAAc,EAC5B,EAAe,CAAc,EAC7B,EAAc,CAAc,EAC5B,EAAmB,CAAc,EACjC,EAAe,CAAc,EAC7B,EAAgB,CAAc,EAC9B,EAAe,CAAc,EAC7B,EAAe,CAAc,EAC7B,EAAa,CAAc,EAC3B,EAAc,CAAc,EAC5B,EAAgB,CAAc,EAC9B,EAAiB,CAAc,EAC/B,EAAoB,CAAc,EAClC,EAAc,CAAc,EAChC"}
@@ -1,2 +0,0 @@
1
- export * from "./index-DRH3gncZ.js";
2
- export {default} from "./index-DRH3gncZ.js";
@@ -1 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-BZWdGtgg.js";export{e as UiInput,t as default,t as registerInput};
@@ -1 +0,0 @@
1
- import{t as e}from"../chunks/controller-C8xqwkr0.js";import{t}from"../chunks/entry.generated-HqE8R7N1.js";export{e as createKeybindingController,t as default,t as registerKeybinding};
@@ -1 +0,0 @@
1
- import{n as e,r as t,t as n}from"../chunks/entry.generated-Cbyseoex.js";export{e as UiModal,t as UiModalTrigger,n as default,n as registerModal};
@@ -1 +0,0 @@
1
- import{n as e,r as t,t as n}from"../chunks/entry.generated-Cf2hKkwA.js";export{e as UiPanelToggle,t as UiPanels,n as default,n as registerPanels};
@@ -1 +0,0 @@
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 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-BnqcHAaF.js";export{e as UiScrollArea,t as default,t as registerScrollArea};
@@ -1 +0,0 @@
1
- import{n as e,t}from"../chunks/entry.generated-CEfr2bmw.js";export{e as UiSelect,t as default,t as registerSelect};