@vireo-ai/trellis-ui 0.1.21 → 0.1.23

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 (189) hide show
  1. package/package.json +37 -11
  2. package/packages/client/types/assets/bridge.d.ts +27 -0
  3. package/packages/client/types/assets/full-runtime.generated.d.ts +2 -0
  4. package/packages/client/types/capabilities/calendar.d.ts +3 -0
  5. package/packages/client/types/capabilities/motion.d.ts +5 -0
  6. package/packages/client/types/capabilities/resizable.d.ts +5 -0
  7. package/packages/client/types/capabilities/sortable.d.ts +6 -0
  8. package/packages/client/types/components/accordion/entry.generated.d.ts +5 -0
  9. package/packages/client/types/components/app/contract.d.ts +8 -8
  10. package/packages/client/types/components/badge/contract.d.ts +2 -2
  11. package/packages/client/types/components/box/contract.d.ts +9 -9
  12. package/packages/client/types/components/button/contract.d.ts +3 -3
  13. package/packages/client/types/components/button/entry.generated.d.ts +4 -0
  14. package/packages/client/types/components/card/contract.d.ts +3 -3
  15. package/packages/client/types/components/checkbox/entry.generated.d.ts +5 -0
  16. package/packages/client/types/components/container/contract.d.ts +5 -5
  17. package/packages/client/types/components/date-picker/contract.d.ts +6 -6
  18. package/packages/client/types/components/date-picker/entry.generated.d.ts +5 -0
  19. package/packages/client/types/components/date-picker/index.d.ts +0 -1
  20. package/packages/client/types/components/date-picker/machine.d.ts +40 -40
  21. package/packages/client/types/components/dropdown/contract.d.ts +2 -2
  22. package/packages/client/types/components/dropdown/entry.generated.d.ts +5 -0
  23. package/packages/client/types/components/dropdown/machine.d.ts +8 -8
  24. package/packages/client/types/components/entry.generated.d.ts +28 -0
  25. package/packages/client/types/components/field/entry.generated.d.ts +5 -0
  26. package/packages/client/types/components/file-upload/contract.d.ts +1 -1
  27. package/packages/client/types/components/file-upload/entry.generated.d.ts +5 -0
  28. package/packages/client/types/components/file-upload/machine.d.ts +2 -2
  29. package/packages/client/types/components/flex/contract.d.ts +7 -7
  30. package/packages/client/types/components/frame/contract.d.ts +6 -6
  31. package/packages/client/types/components/grid/contract.d.ts +11 -11
  32. package/packages/client/types/components/image/contract.d.ts +2 -2
  33. package/packages/client/types/components/input/entry.generated.d.ts +5 -0
  34. package/packages/client/types/components/layout.d.ts +6 -6
  35. package/packages/client/types/components/menu/contract.d.ts +3 -3
  36. package/packages/client/types/components/modal/contract.d.ts +3 -3
  37. package/packages/client/types/components/modal/entry.generated.d.ts +5 -0
  38. package/packages/client/types/components/modal/machine.d.ts +12 -12
  39. package/packages/client/types/components/panels/contract.d.ts +1 -1
  40. package/packages/client/types/components/panels/entry.generated.d.ts +5 -0
  41. package/packages/client/types/components/radio/entry.generated.d.ts +5 -0
  42. package/packages/client/types/components/scroll-area/entry.generated.d.ts +5 -0
  43. package/packages/client/types/components/section/contract.d.ts +4 -4
  44. package/packages/client/types/components/select/contract.d.ts +4 -4
  45. package/packages/client/types/components/select/entry.generated.d.ts +5 -0
  46. package/packages/client/types/components/select/machine.d.ts +32 -32
  47. package/packages/client/types/components/sidebar/contract.d.ts +5 -5
  48. package/packages/client/types/components/sidebar/entry.generated.d.ts +5 -0
  49. package/packages/client/types/components/sidebar/index.d.ts +1 -1
  50. package/packages/client/types/components/slider/entry.generated.d.ts +5 -0
  51. package/packages/client/types/components/stack/contract.d.ts +7 -7
  52. package/packages/client/types/components/switch/entry.generated.d.ts +5 -0
  53. package/packages/client/types/components/table/contract.d.ts +9 -9
  54. package/packages/client/types/components/table/entry.generated.d.ts +5 -0
  55. package/packages/client/types/components/tabs/contract.d.ts +1 -1
  56. package/packages/client/types/components/tabs/entry.generated.d.ts +5 -0
  57. package/packages/client/types/components/tabs/machine.d.ts +2 -2
  58. package/packages/client/types/components/toast/contract.d.ts +2 -2
  59. package/packages/client/types/components/toast/entry.generated.d.ts +5 -0
  60. package/packages/client/types/components/toast/machine.d.ts +8 -8
  61. package/packages/client/types/core.d.ts +10 -0
  62. package/packages/client/types/directives/sortable.d.ts +1 -1
  63. package/packages/client/types/index.d.ts +3 -11
  64. package/packages/client/types/motion/animate.d.ts +1 -1
  65. package/packages/client/types/motion/controller.d.ts +1 -1
  66. package/packages/client/types/motion/index.d.ts +1 -1
  67. package/packages/client/types/motion/owned.d.ts +1 -1
  68. package/packages/client/types/motion/plan.d.ts +1 -1
  69. package/packages/client/types/motion/recipe.d.ts +1 -1
  70. package/packages/client/types/motion/reduced-motion.d.ts +1 -1
  71. package/packages/client/types/motion/targets.d.ts +1 -6
  72. package/packages/client/types/motion/view.d.ts +1 -1
  73. package/packages/client/types/runtime/engine/stream.d.ts +9 -3
  74. package/packages/client/types/runtime/layout-participant.d.ts +9 -0
  75. package/packages/client/types/runtime/ui.d.ts +10 -4
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -0
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +1268 -0
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BXEMsLrA.js +2 -0
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BXEMsLrA.js.map +1 -0
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-B4S_D6hV.js +2 -0
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-B4S_D6hV.js.map +1 -0
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-Z6G-rzr-.js +2 -0
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-Z6G-rzr-.js.map +1 -0
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/codecs-Cb1ns_47.js +2 -0
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/codecs-Cb1ns_47.js.map +1 -0
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CtNDGKcQ.js +2 -0
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-CtNDGKcQ.js.map +1 -0
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DAxHCzB-.js +2 -0
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DAxHCzB-.js.map +1 -0
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controlled-open-Hy4-OT-6.js +2 -0
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controlled-open-Hy4-OT-6.js.map +1 -0
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js +2 -0
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js.map +1 -0
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js +2 -0
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js.map +1 -0
  96. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-qAeVl7dc.js +2 -0
  97. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-qAeVl7dc.js.map +1 -0
  98. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-CW8suC9A.js +6 -0
  99. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-CW8suC9A.js.map +1 -0
  100. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js +2 -0
  101. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js.map +1 -0
  102. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js +2 -0
  103. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js.map +1 -0
  104. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js +2 -0
  105. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js.map +1 -0
  106. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js +2 -0
  107. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js.map +1 -0
  108. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-lyYGbo.js +2 -0
  109. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-lyYGbo.js.map +1 -0
  110. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js +2 -0
  111. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js.map +1 -0
  112. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js +2 -0
  113. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js.map +1 -0
  114. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js +2 -0
  115. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js.map +1 -0
  116. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js +2 -0
  117. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js.map +1 -0
  118. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js +2 -0
  119. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js.map +1 -0
  120. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js +2 -0
  121. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js.map +1 -0
  122. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De12QrT5.js +3 -0
  123. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De12QrT5.js.map +1 -0
  124. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js +2 -0
  125. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js.map +1 -0
  126. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dn6MRCe0.js +2 -0
  127. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dn6MRCe0.js.map +1 -0
  128. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js +2 -0
  129. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js.map +1 -0
  130. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js +2 -0
  131. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js.map +1 -0
  132. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js +2 -0
  133. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js.map +1 -0
  134. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js +2 -0
  135. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js.map +1 -0
  136. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js +2 -0
  137. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js.map +1 -0
  138. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xcXw-cEl.js +2 -0
  139. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xcXw-cEl.js.map +1 -0
  140. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js +2 -0
  141. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js.map +1 -0
  142. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/form-control-BkVb2Qed.js +2 -0
  143. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/form-control-BkVb2Qed.js.map +1 -0
  144. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js +2 -0
  145. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js.map +1 -0
  146. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/merge-bindings-C8ewA_FD.js +2 -0
  147. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/merge-bindings-C8ewA_FD.js.map +1 -0
  148. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js +3 -0
  149. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js.map +1 -0
  150. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/number-BCZdoG0B.js +2 -0
  151. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/number-BCZdoG0B.js.map +1 -0
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/props-change-2xfsIAEN.js +2 -0
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/props-change-2xfsIAEN.js.map +1 -0
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js +2 -0
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js.map +1 -0
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-DOw7dmi1.js +2 -0
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-DOw7dmi1.js.map +1 -0
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-9VxzbQBi.js +2 -0
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-9VxzbQBi.js.map +1 -0
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-TfvwVPGw.js +2 -0
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-TfvwVPGw.js.map +1 -0
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js +4 -0
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js.map +1 -0
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -0
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +1 -0
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -0
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -0
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -0
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -0
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -0
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -0
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -0
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -0
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -0
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -0
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -0
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -0
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -0
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -0
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -0
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +1 -0
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -0
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -0
  184. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -0
  185. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -22146
  186. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
  187. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +395 -0
  188. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
  189. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.generated-BGCM6LAW.js","names":[],"sources":["../../../../../../../../client/src/components/tabs/contract.ts","../../../../../../../../client/src/components/tabs/machine.ts","../../../../../../../../client/src/components/tabs/index.ts","../../../../../../../../client/src/components/tabs/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {LAYOUT_SPACES, ORIENTATIONS, type ControlSize, type LayoutSpace, type Orientation} from '../common';\n\nconst TABS_ACTIVATIONS = ['manual', 'automatic'] as const;\nconst TABS_ORIENTATIONS = ORIENTATIONS;\nconst TABS_LIST_ORIENTATIONS = ['inherit', ...TABS_ORIENTATIONS] as const;\nconst TABS_LIST_GAPS = ['auto', ...LAYOUT_SPACES] as const;\nconst TABS_VARIANTS = ['subtle', 'line', 'segmented', 'pills'] as const;\nconst TABS_SIZES = ['sm', 'md'] as const satisfies readonly ControlSize[];\n\nconst tabsSchema = {\n id: string.default('ui-tabs'),\n animate: bool,\n defaultValue: string,\n value: string,\n activation: oneOf(TABS_ACTIVATIONS, 'manual'),\n orientation: oneOf(TABS_ORIENTATIONS, 'horizontal'),\n gap: oneOf(TABS_LIST_GAPS, 'auto'),\n loop: bool.default(true),\n panels: string,\n class: string,\n};\n\ntype TabsActivation = typeof TABS_ACTIVATIONS[number];\ntype TabsOrientation = Orientation;\ntype TabsGap = 'auto' | LayoutSpace;\ntype TabsListOrientation = typeof TABS_LIST_ORIENTATIONS[number];\ntype TabsListGap = TabsGap;\ntype TabsVariant = typeof TABS_VARIANTS[number];\ntype TabsSize = typeof TABS_SIZES[number];\ntype TabsProps = SchemaToProps<typeof tabsSchema>;\n\nexport {\n TABS_ACTIVATIONS,\n TABS_LIST_ORIENTATIONS,\n TABS_LIST_GAPS,\n TABS_ORIENTATIONS,\n TABS_SIZES,\n TABS_VARIANTS,\n tabsSchema,\n};\nexport type {\n TabsActivation,\n TabsGap,\n TabsListOrientation,\n TabsListGap,\n TabsOrientation,\n TabsProps,\n TabsSize,\n TabsVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {defineHook} from '../../runtime/transition-coordinator';\nimport type {TabsProps} from './contract';\n\ntype TabsContext = {\n selection: {value: string};\n change: {previousValue: string; value: string; panelId: string};\n collection: {values: string[]; disabledValues: string[]; panelIds: Record<string, string>};\n};\n\ntype TabsTransitionData = TabsContext['change'];\n\ntype TabsMachineEffects = {\n prepareSwitch(scope: MachineScope<TabsContext, TabsProps>): void;\n finishSwitch(scope: MachineScope<TabsContext, TabsProps>): void;\n syncDom(scope: MachineScope<TabsContext, TabsProps>): void;\n syncProps(scope: MachineScope<TabsContext, TabsProps>): void;\n syncItems(scope: MachineScope<TabsContext, TabsProps>): void;\n};\n\ntype CreateTabsMachineOptions = {\n props: TabsProps;\n context: TabsContext;\n effects: TabsMachineEffects;\n};\n\nconst switchingHook = defineHook<TabsContext, TabsProps, TabsTransitionData, 'switching'>({\n name: 'switching',\n state: 'switching',\n project: (snapshot) => snapshot.context.change,\n onDone: 'SWITCH_DONE',\n onError: 'SWITCH_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value}),\n },\n});\n\nconst tabsHooks = [switchingHook] as const;\n\nconst stringValue = (value: unknown): string => typeof value === 'string' ? value : '';\nconst stringValues = (value: unknown): string[] => Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : [];\nconst panelIds = (value: unknown): Record<string, string> => {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return {};\n return Object.fromEntries(Object.entries(value).filter((entry): entry is [string, string] => (\n typeof entry[1] === 'string'\n )));\n};\n\nconst nextProps = (scope: MachineScope<TabsContext, TabsProps>): TabsProps => (\n propsChangedEvent<TabsProps>(scope.event)?.props ?? scope.props\n);\n\nconst nextCollection = (scope: MachineScope<TabsContext, TabsProps>): TabsContext['collection'] => {\n if (scope.event.type !== 'ITEMS_CHANGED') return scope.context.collection;\n return {\n values: stringValues(scope.event.values),\n disabledValues: stringValues(scope.event.disabledValues),\n panelIds: panelIds(scope.event.panelIds),\n };\n};\n\nconst normalizeValue = (value: string, collection: TabsContext['collection']): string => {\n if (value && collection.values.includes(value) && !collection.disabledValues.includes(value)) return value;\n return collection.values.find((item) => !collection.disabledValues.includes(item)) ?? '';\n};\n\nconst nextValue = (scope: MachineScope<TabsContext, TabsProps>): string => {\n const collection = nextCollection(scope);\n if (scope.event.type === 'SELECT') {\n const requested = stringValue(scope.event.value);\n return requested && collection.values.includes(requested) && !collection.disabledValues.includes(requested)\n ? requested\n : scope.context.selection.value;\n }\n if (scope.event.type === 'PROPS_CHANGED' && propsChanged<TabsProps>(scope.event, 'value')) {\n return normalizeValue(nextProps(scope).value, collection);\n }\n return normalizeValue(scope.context.selection.value, collection);\n};\n\nconst selectionChanges = (scope: MachineScope<TabsContext, TabsProps>): boolean => (\n scope.context.selection.value !== nextValue(scope)\n);\n\nconst transition = (target: 'switching', effects: 'prepareSwitch') => ({\n target,\n guard: selectionChanges,\n reduce: 'applySwitch',\n effects,\n} as const);\n\nconst createTabsMachine = ({\n props,\n context,\n effects,\n}: CreateTabsMachineOptions): Machine<TabsContext, TabsProps> => createMachine<TabsContext, TabsProps>({\n initial: 'stable',\n on: {\n DOM_INVALIDATED: {effects: 'syncDom'},\n },\n states: {\n stable: {\n tags: ['stable'],\n on: {\n SELECT: transition('switching', 'prepareSwitch'),\n PROPS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n switching: {\n tags: ['switching', 'transitioning'],\n on: {\n SWITCH_DONE: {target: 'stable', effects: 'finishSwitch'},\n SWITCH_ERROR: {target: 'stable', effects: 'finishSwitch'},\n SELECT: transition('switching', 'prepareSwitch'),\n PROPS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n transition('switching', 'prepareSwitch'),\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n applySwitch: (scope) => {\n const collection = nextCollection(scope);\n const value = nextValue(scope);\n return {\n props: nextProps(scope),\n context: {\n ...scope.context,\n selection: {value},\n change: {\n previousValue: scope.context.selection.value,\n value,\n panelId: collection.panelIds[value] ?? '',\n },\n collection,\n },\n };\n },\n reconcile: (scope) => ({\n props: nextProps(scope),\n context: {\n ...scope.context,\n collection: nextCollection(scope),\n selection: {value: nextValue(scope)},\n },\n }),\n },\n effects: {\n prepareSwitch: effects.prepareSwitch,\n finishSwitch: effects.finishSwitch,\n syncDom: effects.syncDom,\n syncProps: effects.syncProps,\n syncItems: effects.syncItems,\n },\n});\n\nexport {createTabsMachine, tabsHooks};\nexport type {\n CreateTabsMachineOptions,\n TabsContext,\n TabsMachineEffects,\n TabsTransitionData,\n};\n","import type Alpine from 'alpinejs';\nimport {animate} from 'motion/mini';\nimport {spring} from 'motion';\n\nimport {\n type AlpineMachine,\n type BindingObject,\n createAlpineMachine,\n createCollectionNavigation,\n type CollectionNavigation,\n type MachineSnapshot,\n observeSemanticChanges,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {\n shouldReduceMotion,\n speeds,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {noopHandle} from '@client/motion/animate';\nimport {ownMotion} from '@client/motion/owned';\nimport {asBool, dispatch, isRtl, setPresence} from '@client/utils';\nimport {\n tabsSchema,\n type TabsOrientation,\n type TabsProps,\n type TabsSize,\n type TabsVariant,\n} from './contract';\nimport {\n createTabsMachine,\n type TabsContext,\n tabsHooks,\n type TabsTransitionData,\n} from './machine';\n\ntype TabsTabElement = HTMLButtonElement | HTMLAnchorElement;\n\ntype TabsItem = {\n tab: TabsTabElement;\n value: string;\n disabled: boolean;\n panel: HTMLElement | null;\n};\n\ntype TabsChangeDetail = {value: string};\ntype TabsActivateDetail = {value: string; panelId: string};\n\n/**\n * Public Alpine API for `ui.tabs`.\n *\n * @public\n */\ninterface UiTabsApi {\n /** Currently selected tab value. */\n readonly value: string;\n\n /** Select an enabled tab that belongs to this Tabs owner. */\n select(value: string): void;\n\n /** Whether `value` is currently selected. */\n isActive(value: string): boolean;\n}\n\ntype TabsData = AlpineMachine<TabsContext, TabsProps, typeof tabsHooks> & UiTabsApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n transitionIndicator(transition: TabsMotionTransition): MotionHandle | Promise<void>;\n};\n\ntype TabsMotionTransition = MotionTransitionSubject & Readonly<{\n el: unknown;\n event: {motion?: boolean};\n props: {animate: boolean};\n}>;\n\nconst DEFAULT_OWNER = 'ui-tabs';\nconst stateFor = (active: boolean): 'active' | 'inactive' => active ? 'active' : 'inactive';\nconst safeIdPart = (value: string): string => {\n const sanitized = value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-+|-+$/g, '');\n return sanitized || 'tab';\n};\nconst tabIdFor = (owner: string, value: string): string => `${owner}-tab-${safeIdPart(value)}`;\nconst panelIdFor = (owner: string, value: string): string => `${owner}-panel-${safeIdPart(value)}`;\nconst isTabElement = (element: Element | null): element is TabsTabElement => (\n element instanceof HTMLButtonElement || element instanceof HTMLAnchorElement\n);\nconst uniqueElements = <T extends HTMLElement>(elements: T[]): T[] => Array.from(new Set(elements));\n\nconst UiTabs = (): TrellisAlpineComponent<TabsData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let collection: CollectionNavigation | null = null;\n let disconnectObserver: (() => void) | null = null;\n let resizeObserver: ResizeObserver | null = null;\n let pointerFocusedTab: TabsTabElement | null = null;\n let pointerFocusReset: number | undefined;\n let connectingProps: TabsProps | null = null;\n\n const root = (): HTMLElement & Alpine.ElementWithXAttributes => {\n if (!rootEl) throw new Error('Tabs has not been initialized.');\n return rootEl;\n };\n const owner = (): string => root().id || root().dataset.id || root().dataset.owner || DEFAULT_OWNER;\n const owns = (element: Element): boolean => element.closest('[data-ui-tabs]') === root();\n const boolDataset = (value: string | undefined): boolean => asBool({value});\n\n const primaryList = (): HTMLElement | null => Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-list]'),\n ).find(owns) ?? null;\n\n const listVariant = (list?: HTMLElement | null): TabsVariant => {\n const value = (list ?? primaryList())?.dataset.variant;\n if (value === 'subtle' || value === 'segmented' || value === 'pills') return value;\n return 'line';\n };\n const listSize = (list?: HTMLElement | null): TabsSize => (\n (list ?? primaryList())?.dataset.size === 'sm' ? 'sm' : 'md'\n );\n const listOrientation = (list?: HTMLElement | null): TabsOrientation => {\n const value = (list ?? primaryList())?.dataset.orientation;\n return value === 'vertical' || value === 'horizontal' ? value : currentProps().orientation;\n };\n\n const panels = (): HTMLElement[] => {\n const ownerId = owner();\n const detached = (panel: HTMLElement): boolean => (\n panel.dataset.uiTabsOwner === ownerId || panel.dataset.owner === ownerId\n );\n const found = Array.from(root().querySelectorAll<HTMLElement>('[data-ui-tabs-panel]')).filter(owns);\n const selector = currentProps().panels;\n if (selector) {\n const target = document.querySelector<HTMLElement>(selector);\n if (target) found.push(...Array.from(\n target.querySelectorAll<HTMLElement>('[data-ui-tabs-panel]'),\n ).filter(detached));\n }\n found.push(...Array.from(document.querySelectorAll<HTMLElement>(\n `[data-ui-tabs-panel][data-ui-tabs-owner=\"${CSS.escape(ownerId)}\"]`,\n )).filter(detached));\n return uniqueElements(found);\n };\n\n const panelForValue = (value: string): HTMLElement | null => (\n panels().find((panel) => panel.dataset.value === value) ?? null\n );\n\n const items = (): TabsItem[] => Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-tabs-tab]'),\n ).filter(owns).map((element, index) => {\n if (!isTabElement(element)) return null;\n element.dataset.value ||= `tab-${index + 1}`;\n return {\n tab: element,\n value: element.dataset.value,\n disabled: boolDataset(element.dataset.disabled) || element.hasAttribute('disabled'),\n panel: panelForValue(element.dataset.value),\n } satisfies TabsItem;\n }).filter((item): item is TabsItem => item !== null);\n\n const itemForValue = (value: string): TabsItem | null => items().find((item) => item.value === value) ?? null;\n const itemFrom = (target: EventTarget | null): TabsItem | null => {\n if (!(target instanceof Element)) return null;\n const tab = target.closest<HTMLElement>('[data-ui-tabs-tab]');\n return tab && owns(tab) ? items().find((item) => item.tab === tab) ?? null : null;\n };\n\n const collectionContext = (): TabsContext['collection'] => {\n const records = items();\n return {\n values: records.map((item) => item.value),\n disabledValues: records.filter((item) => item.disabled).map((item) => item.value),\n panelIds: Object.fromEntries(records.map((item) => [\n item.value,\n item.panel?.id || panelIdFor(item.tab.dataset.uiTabsOwner || item.tab.dataset.owner || owner(), item.value),\n ])),\n };\n };\n\n const initialContext = (props: TabsProps): TabsContext => {\n const collectionState = collectionContext();\n const authoredTab = items().find((item) => (\n boolDataset(item.tab.dataset.selected) || item.tab.getAttribute('aria-selected') === 'true'\n ));\n const authoredPanel = panels().find((panel) => boolDataset(panel.dataset.selected));\n const requested = props.value || props.defaultValue || authoredTab?.value || authoredPanel?.dataset.value || '';\n const value = requested\n && collectionState.values.includes(requested)\n && !collectionState.disabledValues.includes(requested)\n ? requested\n : collectionState.values.find((item) => !collectionState.disabledValues.includes(item)) ?? '';\n return {\n selection: {value},\n change: {previousValue: '', value, panelId: collectionState.panelIds[value] ?? ''},\n collection: collectionState,\n };\n };\n\n const currentProps = (): Readonly<TabsProps> => (\n connectingProps ?? bridge.getCommittedSnapshot().props\n );\n const currentContext = (): Readonly<TabsContext> => bridge.getCommittedSnapshot().context;\n\n const activeValue = (): string => currentContext().selection.value;\n const activeTabStop = (): TabsTabElement | null => {\n const records = items();\n const focused = records.find((item) => document.activeElement === item.tab || item.tab.dataset.active === 'true');\n return focused?.tab ?? records.find((item) => item.value === activeValue())?.tab ?? null;\n };\n\n const indicatorFor = (list: HTMLElement): HTMLElement | null => (\n list.querySelector<HTMLElement>(':scope > [data-ui-tabs-indicator]')\n );\n const indicatorFrame = (tab: Element): {indicator: HTMLElement; styles: {\n height: number;\n left: number;\n top: number;\n width: number;\n }} | null => {\n if (!(tab instanceof HTMLElement)) return null;\n const list = tab.closest<HTMLElement>('[data-ui-tabs-list]');\n const indicator = list ? indicatorFor(list) : null;\n if (!list || !indicator) return null;\n indicator.hidden = false;\n const listRect = list.getBoundingClientRect();\n const tabRect = tab.getBoundingClientRect();\n const vertical = list.dataset.orientation === 'vertical';\n const line = list.dataset.variant === 'line';\n const width = line && vertical ? 2 : tabRect.width;\n const height = line && !vertical ? 2 : tabRect.height;\n const separatorWidth = line\n ? Number.parseFloat(getComputedStyle(list).getPropertyValue('--border-width-edge-separator')) || 1\n : 0;\n const targetLeft = line && vertical\n ? listRect.left - ((width - separatorWidth) / 2)\n : tabRect.left;\n const targetTop = line && !vertical\n ? listRect.bottom - ((height + separatorWidth) / 2)\n : tabRect.top;\n return {\n indicator,\n styles: {\n height,\n left: targetLeft - listRect.left,\n top: targetTop - listRect.top,\n width,\n },\n };\n };\n const positionIndicator = (list: HTMLElement): void => {\n const indicator = indicatorFor(list);\n if (!indicator) return;\n const active = items().find((item) => (\n item.value === activeValue() && item.tab.closest('[data-ui-tabs-list]') === list\n ));\n if (!active) {\n indicator.hidden = true;\n list.dataset.uiTabsReady = '';\n return;\n }\n const frame = indicatorFrame(active.tab);\n if (frame) {\n frame.indicator.style.height = `${frame.styles.height}px`;\n frame.indicator.style.left = `${frame.styles.left}px`;\n frame.indicator.style.top = `${frame.styles.top}px`;\n frame.indicator.style.width = `${frame.styles.width}px`;\n }\n list.dataset.uiTabsReady = '';\n };\n\n const syncRoot = (): void => {\n const props = currentProps();\n if (!root().id && props.id) root().id = props.id;\n root().dataset.orientation = props.orientation;\n root().dataset.activation = props.activation;\n root().dataset.value = activeValue();\n setPresence({el: root(), attr: 'data-animate', present: props.animate});\n };\n\n const syncList = (list: HTMLElement): void => {\n const orientation = listOrientation(list);\n list.setAttribute('role', 'tablist');\n list.dataset.orientation = orientation;\n if (orientation === 'vertical') list.setAttribute('aria-orientation', 'vertical');\n else list.removeAttribute('aria-orientation');\n };\n\n const syncTab = (item: TabsItem): void => {\n const active = item.value === activeValue();\n const list = item.tab.closest<HTMLElement>('[data-ui-tabs-list]');\n const orientation = listOrientation(list);\n const variant = listVariant(list);\n const size = listSize(list);\n const ownerId = item.tab.dataset.uiTabsOwner || item.tab.dataset.owner || owner();\n const selectedIcon = item.tab.querySelector<HTMLElement>('[data-ui-tabs-tab-selected-icon]');\n const state = stateFor(active);\n const tabStop = activeTabStop();\n\n item.tab.id ||= tabIdFor(ownerId, item.value);\n item.tab.dataset.state = state;\n item.tab.dataset.orientation = orientation;\n item.tab.dataset.variant = variant;\n item.tab.dataset.size = size;\n item.tab.setAttribute('role', 'tab');\n item.tab.setAttribute('aria-selected', active ? 'true' : 'false');\n item.tab.setAttribute('aria-controls', item.panel?.id || panelIdFor(ownerId, item.value));\n item.tab.tabIndex = item.tab === tabStop ? 0 : -1;\n setPresence({el: item.tab, attr: 'data-selected', present: active});\n if (selectedIcon) selectedIcon.style.visibility = active ? 'visible' : 'hidden';\n\n setPresence({el: item.tab, attr: 'data-disabled', present: item.disabled});\n if (item.disabled) {\n item.tab.setAttribute('aria-disabled', 'true');\n item.tab.tabIndex = -1;\n } else item.tab.removeAttribute('aria-disabled');\n if (item.tab instanceof HTMLButtonElement) item.tab.disabled = item.disabled;\n };\n\n const syncPanel = (panel: HTMLElement): void => {\n const value = panel.dataset.value || '';\n const active = value === activeValue();\n const ownerId = panel.dataset.uiTabsOwner || panel.dataset.owner || owner();\n const id = panelIdFor(ownerId, value);\n if (value && !panel.id) panel.id = id;\n if (value && !panel.hasAttribute('data-ui-key')) panel.setAttribute('data-ui-key', panel.id || id);\n panel.dataset.state = stateFor(active);\n panel.dataset.orientation = currentProps().orientation;\n panel.setAttribute('role', 'tabpanel');\n panel.setAttribute('aria-labelledby', tabIdFor(ownerId, value));\n if (!panel.hasAttribute('tabindex')) panel.tabIndex = 0;\n panel.hidden = !active;\n setPresence({el: panel, attr: 'data-selected', present: active});\n };\n\n const syncAll = ({indicator = false}: {indicator?: boolean} = {}): void => {\n syncRoot();\n const tabList = primaryList();\n if (tabList) syncList(tabList);\n items().forEach(syncTab);\n panels().forEach(syncPanel);\n if (indicator && tabList) positionIndicator(tabList);\n };\n\n const emitChange = (): void => {\n dispatch<TabsChangeDetail>({el: root(), name: 'ui:change', detail: {value: activeValue()}});\n };\n const emitActivate = (tab: TabsTabElement, value: string): void => {\n dispatch<TabsActivateDetail>({\n el: tab,\n name: 'ui:tabs:activate',\n detail: {value, panelId: panelForValue(value)?.id ?? ''},\n });\n };\n const syncDom = (): void => {\n syncAll({indicator: true});\n setupObservers();\n setupResizeObserver();\n };\n\n const bridge = createAlpineMachine({\n schema: tabsSchema,\n hooks: tabsHooks,\n resolveTransitionElement: ({data}) => itemForValue((data as TabsTransitionData).value)?.tab ?? null,\n createMachine: ({props}) => {\n connectingProps = props;\n const context = initialContext(props);\n connectingProps = null;\n return createTabsMachine({\n props,\n context,\n effects: {\n prepareSwitch: ({event}) => {\n syncAll();\n if (event.type === 'SELECT') emitChange();\n },\n finishSwitch: () => syncAll(),\n syncDom,\n syncProps: syncDom,\n syncItems: () => {\n syncAll({indicator: true});\n setupResizeObserver();\n },\n },\n });\n },\n });\n\n const collectionNav = (): CollectionNavigation => {\n if (!collection) throw new Error('Tabs navigation has not been initialized.');\n return collection;\n };\n\n const selectValue = (value: string, {tab, motion = true}: {\n tab?: TabsTabElement;\n motion?: boolean;\n } = {}): void => {\n const previous = activeValue();\n bridge.send({type: 'SELECT', value, motion});\n if (activeValue() !== previous && tab) emitActivate(tab, activeValue());\n };\n\n const handleClick = (event: Event): void => {\n const item = itemFrom(event.target);\n if (!item) return;\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n const motion = !(event instanceof MouseEvent) || event.detail > 0;\n selectValue(item.value, {tab: item.tab, motion});\n };\n\n const handlePointerDown = (event: Event): void => {\n pointerFocusedTab = itemFrom(event.target)?.tab ?? null;\n window.clearTimeout(pointerFocusReset);\n pointerFocusReset = window.setTimeout(() => {\n pointerFocusedTab = null;\n pointerFocusReset = undefined;\n });\n };\n\n const handleFocus = (event: Event): void => {\n const item = itemFrom(event.target);\n if (!item || event.target !== item.tab || item.disabled) return;\n collectionNav().activateItem({el: item.tab});\n if (currentProps().activation === 'automatic' && pointerFocusedTab !== item.tab) {\n selectValue(item.value, {tab: item.tab, motion: false});\n } else syncAll();\n };\n\n const handleKeydown = (event: KeyboardEvent): void => {\n const item = itemFrom(event.target);\n if (!item || event.target !== item.tab) return;\n if (event.key === ' ' && item.tab instanceof HTMLAnchorElement) {\n event.preventDefault();\n selectValue(item.value, {tab: item.tab, motion: false});\n return;\n }\n const orientation = listOrientation(item.tab.closest<HTMLElement>('[data-ui-tabs-list]'));\n if (event.key === 'Home') {\n event.preventDefault();\n collectionNav().focusFirst();\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n collectionNav().focusLast();\n return;\n }\n if (orientation === 'vertical') {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n collectionNav().focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n collectionNav().focusPrevious();\n }\n return;\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusPrevious();\n else collectionNav().focusNext();\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusNext();\n else collectionNav().focusPrevious();\n }\n };\n\n const sendItemsChanged = (): void => {\n const next = collectionContext();\n bridge.send({type: 'ITEMS_CHANGED', ...next});\n };\n\n const setupObservers = (): void => {\n disconnectObserver?.();\n const targets = [root()];\n const selector = currentProps().panels;\n if (selector) {\n const detached = document.querySelector<HTMLElement>(selector);\n if (detached) targets.push(detached);\n }\n disconnectObserver = observeSemanticChanges({\n targets: uniqueElements(targets),\n read: collectionContext,\n onChange: sendItemsChanged,\n observer: {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\n 'data-value',\n 'data-disabled',\n 'disabled',\n 'data-ui-tabs-owner',\n 'data-owner',\n 'data-variant',\n 'data-size',\n 'data-orientation',\n 'data-gap',\n 'id',\n ],\n },\n });\n };\n\n const setupResizeObserver = (): void => {\n resizeObserver?.disconnect();\n if (typeof ResizeObserver === 'undefined') return;\n resizeObserver = new ResizeObserver(() => {\n if (!rootEl) return;\n const list = primaryList();\n if (list) positionIndicator(list);\n });\n const list = primaryList();\n if (list) resizeObserver.observe(list);\n items().forEach((item) => resizeObserver?.observe(item.tab));\n };\n\n let component!: TrellisAlpineComponent<TabsData>;\n component = {\n ...bridge,\n get value(): string {\n return this.snapshot.current?.context.selection.value ?? '';\n },\n init(): void {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n collection = createCollectionNavigation({\n root,\n itemSelector: '[data-ui-tabs-tab]',\n isDisabled: (element) => !owns(element)\n || boolDataset(element.dataset.disabled)\n || element.hasAttribute('disabled'),\n loop: () => currentProps().loop,\n });\n syncAll({indicator: true});\n setupObservers();\n setupResizeObserver();\n },\n destroy(): void {\n disconnectObserver?.();\n disconnectObserver = null;\n resizeObserver?.disconnect();\n resizeObserver = null;\n window.clearTimeout(pointerFocusReset);\n pointerFocusedTab = null;\n pointerFocusReset = undefined;\n bridge.disconnect();\n collection = null;\n rootEl = null;\n },\n transitionIndicator(transition: TabsMotionTransition): MotionHandle | Promise<void> {\n if (!(transition.el instanceof Element)) return Promise.resolve();\n const frame = indicatorFrame(transition.el);\n if (!frame) return Promise.resolve();\n if (!transition.props.animate || transition.event.motion === false || shouldReduceMotion()) {\n positionIndicator(transition.el.closest<HTMLElement>('[data-ui-tabs-list]') as HTMLElement);\n return noopHandle();\n }\n\n return ownMotion(frame.indicator, () => animate(frame.indicator, frame.styles, {\n type: spring,\n ...speeds.moderate,\n }), new Set(['layout']), transition.signal);\n },\n get root(): BindingObject {\n return {\n 'data-ui-tabs': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-activation': () => currentProps().activation,\n ':data-animate': () => currentProps().animate ? '' : undefined,\n '@pointerdown': handlePointerDown,\n '@click': handleClick,\n '@focusin': handleFocus,\n '@keydown': (event: Event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n },\n };\n },\n select(value: string): void {\n selectValue(value);\n },\n isActive(value: string): boolean {\n return this.snapshot.current?.context.selection.value === value;\n },\n };\n\n return component;\n};\n\nconst registerTabs = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiTabs', () => UiTabs());\n};\n\nexport {registerTabs, UiTabs};\nexport type {TabsActivateDetail, TabsChangeDetail, UiTabsApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerMotionCapability} from '../../capabilities/motion';\nimport {registerTabs as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerTabs = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerTabs};\nexport default registerTabs;\nexport * from './index';\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./motion-Bpttk6iZ.js";import{f as t,l as n,n as r,u as i}from"./codecs-Cb1ns_47.js";import{i as a,n as o,r as s}from"./dom-qAeVl7dc.js";import{a as c,n as l,t as u}from"./machine-CX3wFSoV.js";import{t as d}from"./collection-navigation-CtNDGKcQ.js";import{n as f,t as p}from"./styles-TfvwVPGw.js";import{t as m}from"./merge-bindings-C8ewA_FD.js";import{n as h,t as g}from"./props-change-2xfsIAEN.js";import{t as _}from"./semantic-observer-9VxzbQBi.js";import{S as v,h as y}from"./common-DAxHCzB-.js";var b=[`single`,`multiple`],x=v,S=[`trailing`,`leading`];[...S];var C=y;[...C];var w={mode:n(b,`single`),animate:r,collapsible:r,disabled:r,orientation:n(x,`vertical`),defaultValue:t,defaultValues:t,value:t,values:t,loop:r.default(!0),iconPosition:n(S,`trailing`),headingAs:n(C,`h3`),class:t},T=[c({name:`opening`,state:`changing`,projectEach:e=>e.context.change.openingValues.map(e=>({value:e})),onDone:`CHANGE_DONE`,onError:`CHANGE_ERROR`,sends:{open:e=>({type:`OPEN`,value:e}),close:e=>({type:`CLOSE`,value:e}),toggle:e=>({type:`TOGGLE`,value:e}),setValues:e=>({type:`SET_VALUES`,values:e})}}),c({name:`closing`,state:`changing`,projectEach:e=>e.context.change.closingValues.map(e=>({value:e})),onDone:`CHANGE_DONE`,onError:`CHANGE_ERROR`,sends:{open:e=>({type:`OPEN`,value:e}),close:e=>({type:`CLOSE`,value:e}),toggle:e=>({type:`TOGGLE`,value:e}),setValues:e=>({type:`SET_VALUES`,values:e})}})],E=e=>typeof e==`string`?e:``,D=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[],O=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean),k=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),A=(e,t,n)=>{let r=new Set(e.filter(e=>n.values.includes(e))),i=n.values.filter(e=>r.has(e));return t.mode===`single`?i.slice(0,1):i},j=e=>e.mode===`multiple`?O(e.values||e.value):e.value?[e.value]:[],M=e=>h(e.event)?.props??e.props,N=e=>e.event.type===`ITEMS_CHANGED`?{values:D(e.event.values),disabledValues:D(e.event.disabledValues)}:e.context.collection,P=(e,t,n)=>{let r=e.context.selection.values,i=E(e.event.value);switch(e.event.type){case`OPEN`:return!i||n.disabledValues.includes(i)?r:t.mode===`single`?[i]:[...r,i];case`CLOSE`:return!i||n.disabledValues.includes(i)||t.mode===`single`&&!t.collapsible&&r.includes(i)?r:r.filter(e=>e!==i);case`TOGGLE`:return!i||n.disabledValues.includes(i)?r:r.includes(i)?t.mode===`single`&&!t.collapsible?r:r.filter(e=>e!==i):t.mode===`single`?[i]:[...r,i];case`SET_VALUES`:return D(e.event.values);case`PROPS_CHANGED`:return g(e.event,`value`,`values`)?j(t):r;case`ITEMS_CHANGED`:return r;default:return r}},F=e=>{let t=M(e),n=N(e);return A(P(e,t,n),t,n)},I=e=>!([`OPEN`,`CLOSE`,`TOGGLE`,`SET_VALUES`].includes(e.event.type)&&e.props.disabled)&&!k(e.context.selection.values,F(e)),L=({props:e,context:t,effects:n})=>u({initial:`stable`,states:{stable:{tags:[`stable`],on:{OPEN:{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},CLOSE:{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},TOGGLE:{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},SET_VALUES:{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},PROPS_CHANGED:[{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},{reduce:`reconcile`,effects:`syncProps`}],ITEMS_CHANGED:[{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},{reduce:`reconcile`,effects:`syncItems`}]}},changing:{tags:[`changing`,`transitioning`],on:{CHANGE_DONE:{target:`stable`,effects:`finishChange`},CHANGE_ERROR:{target:`stable`,effects:`finishChange`},OPEN:{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},CLOSE:{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},TOGGLE:{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},SET_VALUES:{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},PROPS_CHANGED:[{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},{reduce:`reconcile`,effects:`syncProps`}],ITEMS_CHANGED:[{target:`changing`,guard:I,reduce:`applyChange`,effects:`prepareChange`},{reduce:`reconcile`,effects:`syncItems`}]}}}},{context:t,props:e,reducers:{applyChange:e=>{let t=F(e),n=e.context.selection.values;return{props:M(e),context:{...e.context,selection:{values:t},change:{openingValues:t.filter(e=>!n.includes(e)),closingValues:n.filter(e=>!t.includes(e))},collection:N(e)}}},reconcile:e=>({props:M(e),context:{...e.context,collection:N(e),selection:{values:F(e)}}})},effects:{prepareChange:n.prepareChange,finishChange:n.finishChange,syncProps:n.syncProps,syncItems:n.syncItems}}),R=p({definition:{component:`ui.accordion`,parts:{root:{base:`grid w-full min-w-0 gap-0`,variants:{orientation:{vertical:``,horizontal:`gap-2 md:grid-flow-col md:auto-cols-fr`}},defaults:{orientation:`vertical`}},item:{base:`min-w-0 border-b-edge-separator border-separator last:border-b-0 data-disabled:opacity-50`},heading:{base:`block text-surface-ink`},trigger:{base:[`flex min-h-control-xlg w-full min-w-0 items-center gap-2 rounded-control-sm border border-transparent px-3 py-2`,`text-left text-sm font-medium text-surface-ink outline-none`,`focus-visible:ui-focus-ring`,`data-disabled:pointer-events-none data-disabled:opacity-50`]},triggerLabel:{base:`min-w-0 flex-1`},icon:{base:`size-icon shrink-0 fill-current text-icon`},content:{base:`overflow-hidden text-sm text-surface-ink-muted`},contentInner:{base:`min-w-0 px-3 pb-3 pt-1`}}}}),z=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean),B=e=>e?`open`:`closed`,V=e=>e.trim().replace(/[^a-zA-Z0-9_-]+/g,`-`)||`item`,H=()=>{let e=null,t=null,n=null,r=e=>e,c=()=>{if(!e)throw Error(`Accordion has not been initialized.`);return e},u=e=>e.closest(`[data-ui-accordion]`)===c(),p=()=>Array.from(c().querySelectorAll(`[data-ui-accordion-item]`)).filter(u).map((e,t)=>{let n=e.querySelector(`[data-ui-accordion-trigger]`),r=e.querySelector(`[data-ui-accordion-content]`);return!(n instanceof HTMLButtonElement)||!r||!u(n)||!u(r)?null:(e.dataset.value||=`item-${t+1}`,{item:e,heading:e.querySelector(`[data-ui-accordion-heading]`),trigger:n,content:r,value:e.dataset.value,disabled:o({value:e.dataset.itemDisabled})})}).filter(e=>e!==null),h=e=>p().find(t=>t.value===e)??null,g=e=>{if(!(e instanceof Element))return null;let t=e.closest(`[data-ui-accordion-item]`);return t&&u(t)?p().find(e=>e.item===t)??null:null},v=()=>{let e=p();return{values:e.map(e=>e.value),disabledValues:e.filter(e=>e.disabled).map(e=>e.value)}},y=(e,t,n)=>{let r=new Set(e),i=n.filter(e=>r.has(e));return t.mode===`single`?i.slice(0,1):i},b=e=>{let t=v(),n=e.mode===`multiple`?z(e.values||e.value):e.value?[e.value]:[],r=e.mode===`multiple`?z(e.defaultValues):e.defaultValue?[e.defaultValue]:[],i=p().filter(e=>o({value:e.item.dataset.open})).map(e=>e.value);return{selection:{values:y(n.length>0?n:r.length>0?r:i,e,t.values)},change:{openingValues:[],closingValues:[]},collection:t}},x=()=>N.getCommittedSnapshot().props,S=()=>N.getCommittedSnapshot().context,C=e=>S().selection.values.includes(e.value),E=e=>x().disabled||e.disabled,D=e=>x().mode===`multiple`||x().collapsible||!C(e),O=()=>{let e=x(),t=S().selection.values;i({el:c(),schema:w,key:`value`,value:e.mode===`single`?t[0]??``:``}),i({el:c(),schema:w,key:`values`,value:e.mode===`multiple`?t.join(`,`):``}),c().dataset.orientation=e.orientation,c().dataset.iconPosition=e.iconPosition,c().dataset.mode=e.mode,e.disabled?c().setAttribute(`data-disabled`,``):c().removeAttribute(`data-disabled`)},k,A=e=>{let t=x(),n=C(e),i=B(n),a=E(e),o=N.hasTag(`changing`)&&S().change.closingValues.includes(e.value);e.item.dataset.state=i,e.item.dataset.orientation=t.orientation,e.item.className=f({part:R.parts.item,props:t,className:e.item.dataset.class??``}),e.heading?.setAttribute(`data-state`,i),e.heading?.setAttribute(`data-orientation`,t.orientation);let s=V(e.value);e.trigger.id||=r(`accordion-trigger-${s}`),e.content.id||=r(`accordion-content-${s}`),e.trigger.type=`button`,e.trigger.dataset.state=i,e.trigger.dataset.orientation=t.orientation,e.trigger.className=f({part:R.parts.trigger,props:t,className:e.trigger.dataset.class??``}),e.trigger.setAttribute(`aria-expanded`,n?`true`:`false`),e.trigger.setAttribute(`aria-controls`,e.content.id),e.content.dataset.state=i,e.content.dataset.orientation=t.orientation,e.content.setAttribute(`aria-labelledby`,e.trigger.id),e.content.hidden=!n&&!o,[e.item,e.heading,e.trigger,e.content].forEach(e=>{e&&(a?e.setAttribute(`data-disabled`,``):e.removeAttribute(`data-disabled`))}),e.trigger.disabled=a,a||n&&!D(e)?e.trigger.setAttribute(`aria-disabled`,`true`):e.trigger.removeAttribute(`aria-disabled`)},j=()=>{O(),p().forEach(A)},M=()=>{let e=[...S().selection.values];s({el:c(),name:`ui:change`,detail:{value:x().mode===`single`?e[0]??``:``,values:e}})},N=l({schema:w,hooks:T,resolveTransitionElement:({data:e})=>{let t=e.value;return h(t)?.content??null},createMachine:({props:e})=>L({props:e,context:b(e),effects:{prepareChange:()=>{j(),M()},finishChange:()=>{j()},syncProps:j,syncItems:j}})}),P=()=>{if(!t)throw Error(`Accordion navigation has not been initialized.`);return t},F=()=>{let e=v();N.send({type:`ITEMS_CHANGED`,...e})},I=(e,t)=>{t?.preventDefault(),!E(e)&&N.send({type:`TOGGLE`,value:e.value,motion:!(t instanceof KeyboardEvent)})},H=e=>{let t=g(e.target);!t||!(e.target instanceof Node)||!t.trigger.contains(e.target)||I(t,e)},U=e=>{let t=g(e.target);if(!(!t||e.target!==t.trigger)){if(e.key===`Enter`||e.key===` `){I(t,e);return}if(e.key===`Home`){e.preventDefault(),P().focusFirst();return}if(e.key===`End`){e.preventDefault(),P().focusLast();return}if(x().orientation===`vertical`){e.key===`ArrowDown`?(e.preventDefault(),P().focusNext()):e.key===`ArrowUp`&&(e.preventDefault(),P().focusPrevious());return}e.key===`ArrowRight`?(e.preventDefault(),a({el:c()})?P().focusPrevious():P().focusNext()):e.key===`ArrowLeft`&&(e.preventDefault(),a({el:c()})?P().focusNext():P().focusPrevious())}},W=e=>{let t=g(e.target);t&&e.target===t.trigger&&!E(t)&&P().activateItem({el:t.trigger})},G=()=>{n=_({targets:c(),read:v,onChange:F,observer:{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`data-value`,`data-item-disabled`]}})};return k={...N,get value(){return x().mode===`single`?this.snapshot.current?.context.selection.values[0]??``:``},get values(){return[...this.snapshot.current?.context.selection.values??[]]},init(){e=this.$el,r=this.$id.bind(this),N.connect(this.$el,this.snapshot),t=d({root:c,itemSelector:`[data-ui-accordion-trigger]`,isDisabled:e=>e.hasAttribute(`disabled`),loop:()=>x().loop}),j(),G()},destroy(){n?.(),n=null,N.disconnect(),t=null,e=null},get root(){let e=this.snapshot.current?.props??x();return m({inputs:[f({part:R.parts.root,props:e,className:e.class}),{"data-ui-accordion":``,":data-orientation":()=>x().orientation,":data-disabled":()=>x().disabled?``:void 0,"@click":H,"@keydown":e=>{e instanceof KeyboardEvent&&U(e)},"@focusin":W}]})},open(e){N.send({type:`OPEN`,value:e})},close(e){N.send({type:`CLOSE`,value:e})},toggle(e,t){let n=h(e);n&&I(n,t)},isOpen(e){return this.snapshot.current?.context.selection.values.includes(e)??!1}},k},U=e=>{e.data(`UiAccordion`,()=>H())},W=new WeakSet,G=t=>{W.has(t)||(W.add(t),e(t),U(t))};export{H as n,G as t};
2
+ //# sourceMappingURL=entry.generated-Bc-uE56r.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.generated-Bc-uE56r.js","names":[],"sources":["../../../../../../../../client/src/components/accordion/contract.ts","../../../../../../../../client/src/components/accordion/machine.ts","../../../../../../../../client/src/components/accordion/styles.ts","../../../../../../../../client/src/components/accordion/index.ts","../../../../../../../../client/src/components/accordion/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {HEADING_LEVELS, ORIENTATIONS, type HeadingLevel, type Orientation} from '../common';\n\nconst ACCORDION_MODES = ['single', 'multiple'] as const;\nconst ACCORDION_ORIENTATIONS = ORIENTATIONS;\nconst ACCORDION_ICON_POSITIONS = ['trailing', 'leading'] as const;\nconst ACCORDION_ITEM_ICON_POSITIONS = ['inherit', ...ACCORDION_ICON_POSITIONS] as const;\nconst ACCORDION_HEADING_AS = HEADING_LEVELS;\nconst ACCORDION_ITEM_HEADING_AS = ['inherit', ...ACCORDION_HEADING_AS] as const;\n\nconst accordionSchema = {\n mode: oneOf(ACCORDION_MODES, 'single'),\n animate: bool,\n collapsible: bool,\n disabled: bool,\n orientation: oneOf(ACCORDION_ORIENTATIONS, 'vertical'),\n defaultValue: string,\n defaultValues: string,\n value: string,\n values: string,\n loop: bool.default(true),\n iconPosition: oneOf(ACCORDION_ICON_POSITIONS, 'trailing'),\n headingAs: oneOf(ACCORDION_HEADING_AS, 'h3'),\n class: string,\n};\n\ntype AccordionMode = typeof ACCORDION_MODES[number];\ntype AccordionOrientation = Orientation;\ntype AccordionIconPosition = typeof ACCORDION_ICON_POSITIONS[number];\ntype AccordionItemIconPosition = typeof ACCORDION_ITEM_ICON_POSITIONS[number];\ntype AccordionHeadingAs = HeadingLevel;\ntype AccordionItemHeadingAs = typeof ACCORDION_ITEM_HEADING_AS[number];\ntype AccordionProps = SchemaToProps<typeof accordionSchema>;\n\nexport {\n ACCORDION_HEADING_AS,\n ACCORDION_ICON_POSITIONS,\n ACCORDION_ITEM_HEADING_AS,\n ACCORDION_ITEM_ICON_POSITIONS,\n ACCORDION_ORIENTATIONS,\n ACCORDION_MODES,\n accordionSchema,\n};\nexport type {\n AccordionHeadingAs,\n AccordionIconPosition,\n AccordionItemHeadingAs,\n AccordionItemIconPosition,\n AccordionOrientation,\n AccordionProps,\n AccordionMode,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {defineHook} from '../../runtime/transition-coordinator';\nimport type {AccordionProps} from './contract';\n\ntype AccordionContext = {\n selection: {values: string[]};\n change: {openingValues: string[]; closingValues: string[]};\n collection: {values: string[]; disabledValues: string[]};\n};\n\ntype AccordionTransitionData = {value: string};\n\ntype AccordionMachineEffects = {\n prepareChange(scope: MachineScope<AccordionContext, AccordionProps>): void;\n finishChange(scope: MachineScope<AccordionContext, AccordionProps>): void;\n syncProps(scope: MachineScope<AccordionContext, AccordionProps>): void;\n syncItems(scope: MachineScope<AccordionContext, AccordionProps>): void;\n};\n\ntype CreateAccordionMachineOptions = {\n props: AccordionProps;\n context: AccordionContext;\n effects: AccordionMachineEffects;\n};\n\nconst openingHook = defineHook<AccordionContext, AccordionProps, AccordionTransitionData, 'opening'>({\n name: 'opening',\n state: 'changing',\n projectEach: (snapshot) => snapshot.context.change.openingValues.map((value) => ({value})),\n onDone: 'CHANGE_DONE',\n onError: 'CHANGE_ERROR',\n sends: {\n open: (value: string) => ({type: 'OPEN', value}),\n close: (value: string) => ({type: 'CLOSE', value}),\n toggle: (value: string) => ({type: 'TOGGLE', value}),\n setValues: (values: string[]) => ({type: 'SET_VALUES', values}),\n },\n});\n\nconst closingHook = defineHook<AccordionContext, AccordionProps, AccordionTransitionData, 'closing'>({\n name: 'closing',\n state: 'changing',\n projectEach: (snapshot) => snapshot.context.change.closingValues.map((value) => ({value})),\n onDone: 'CHANGE_DONE',\n onError: 'CHANGE_ERROR',\n sends: {\n open: (value: string) => ({type: 'OPEN', value}),\n close: (value: string) => ({type: 'CLOSE', value}),\n toggle: (value: string) => ({type: 'TOGGLE', value}),\n setValues: (values: string[]) => ({type: 'SET_VALUES', values}),\n },\n});\n\nconst accordionHooks = [openingHook, closingHook] as const;\n\nconst stringValue = (value: unknown): string => typeof value === 'string' ? value : '';\nconst stringValues = (value: unknown): string[] => Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : [];\nconst splitValues = (value: string): string[] => value.split(',').map((item) => item.trim()).filter(Boolean);\nconst sameValues = (left: readonly string[], right: readonly string[]): boolean => (\n left.length === right.length && left.every((value, index) => value === right[index])\n);\n\nconst normalizeValues = (\n values: readonly string[],\n props: AccordionProps,\n collection: AccordionContext['collection'],\n): string[] => {\n const requested = new Set(values.filter((value) => collection.values.includes(value)));\n const ordered = collection.values.filter((value) => requested.has(value));\n return props.mode === 'single' ? ordered.slice(0, 1) : ordered;\n};\n\nconst controlledValues = (props: AccordionProps): string[] => (\n props.mode === 'multiple' ? splitValues(props.values || props.value) : props.value ? [props.value] : []\n);\n\nconst nextProps = (scope: MachineScope<AccordionContext, AccordionProps>): AccordionProps => (\n propsChangedEvent<AccordionProps>(scope.event)?.props ?? scope.props\n);\n\nconst nextCollection = (\n scope: MachineScope<AccordionContext, AccordionProps>,\n): AccordionContext['collection'] => {\n if (scope.event.type !== 'ITEMS_CHANGED') return scope.context.collection;\n return {\n values: stringValues(scope.event.values),\n disabledValues: stringValues(scope.event.disabledValues),\n };\n};\n\nconst requestedValues = (\n scope: MachineScope<AccordionContext, AccordionProps>,\n props: AccordionProps,\n collection: AccordionContext['collection'],\n): string[] => {\n const current = scope.context.selection.values;\n const value = stringValue(scope.event.value);\n switch (scope.event.type) {\n case 'OPEN':\n if (!value || collection.disabledValues.includes(value)) return current;\n return props.mode === 'single' ? [value] : [...current, value];\n case 'CLOSE':\n if (\n !value\n || collection.disabledValues.includes(value)\n || (props.mode === 'single' && !props.collapsible && current.includes(value))\n ) return current;\n return current.filter((item) => item !== value);\n case 'TOGGLE':\n if (!value || collection.disabledValues.includes(value)) return current;\n if (!current.includes(value)) return props.mode === 'single' ? [value] : [...current, value];\n if (props.mode === 'single' && !props.collapsible) return current;\n return current.filter((item) => item !== value);\n case 'SET_VALUES':\n return stringValues(scope.event.values);\n case 'PROPS_CHANGED':\n if (propsChanged<AccordionProps>(scope.event, 'value', 'values')) return controlledValues(props);\n return current;\n case 'ITEMS_CHANGED':\n return current;\n default:\n return current;\n }\n};\n\nconst nextValues = (scope: MachineScope<AccordionContext, AccordionProps>): string[] => {\n const props = nextProps(scope);\n const collection = nextCollection(scope);\n return normalizeValues(requestedValues(scope, props, collection), props, collection);\n};\n\nconst selectionChanges = (scope: MachineScope<AccordionContext, AccordionProps>): boolean => (\n !(\n ['OPEN', 'CLOSE', 'TOGGLE', 'SET_VALUES'].includes(scope.event.type)\n && scope.props.disabled\n ) && !sameValues(scope.context.selection.values, nextValues(scope))\n);\n\nconst createAccordionMachine = ({\n props,\n context,\n effects,\n}: CreateAccordionMachineOptions): Machine<AccordionContext, AccordionProps> => createMachine<AccordionContext, AccordionProps>({\n initial: 'stable',\n states: {\n stable: {\n tags: ['stable'],\n on: {\n OPEN: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n CLOSE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n TOGGLE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n SET_VALUES: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n PROPS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n changing: {\n tags: ['changing', 'transitioning'],\n on: {\n CHANGE_DONE: {target: 'stable', effects: 'finishChange'},\n CHANGE_ERROR: {target: 'stable', effects: 'finishChange'},\n OPEN: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n CLOSE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n TOGGLE: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n SET_VALUES: {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n PROPS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncProps'},\n ],\n ITEMS_CHANGED: [\n {target: 'changing', guard: selectionChanges, reduce: 'applyChange', effects: 'prepareChange'},\n {reduce: 'reconcile', effects: 'syncItems'},\n ],\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n applyChange: (scope) => {\n const values = nextValues(scope);\n const previous = scope.context.selection.values;\n return {\n props: nextProps(scope),\n context: {\n ...scope.context,\n selection: {values},\n change: {\n openingValues: values.filter((value) => !previous.includes(value)),\n closingValues: previous.filter((value) => !values.includes(value)),\n },\n collection: nextCollection(scope),\n },\n };\n },\n reconcile: (scope) => ({\n props: nextProps(scope),\n context: {\n ...scope.context,\n collection: nextCollection(scope),\n selection: {values: nextValues(scope)},\n },\n }),\n },\n effects: {\n prepareChange: effects.prepareChange,\n finishChange: effects.finishChange,\n syncProps: effects.syncProps,\n syncItems: effects.syncItems,\n },\n});\n\nexport {accordionHooks, createAccordionMachine};\nexport type {\n AccordionContext,\n AccordionMachineEffects,\n AccordionTransitionData,\n CreateAccordionMachineOptions,\n};\n","import {defineStyles} from '../../runtime';\n\nconst accordionStyles = defineStyles({definition: {\n component: 'ui.accordion',\n parts: {\n root: {\n base: 'grid w-full min-w-0 gap-0',\n variants: {\n orientation: {\n vertical: '',\n horizontal: 'gap-2 md:grid-flow-col md:auto-cols-fr',\n },\n },\n defaults: {\n orientation: 'vertical',\n },\n },\n item: {\n base: 'min-w-0 border-b-edge-separator border-separator last:border-b-0 data-disabled:opacity-50',\n },\n heading: {\n base: 'block text-surface-ink',\n },\n trigger: {\n base: [\n 'flex min-h-control-xlg w-full min-w-0 items-center gap-2 rounded-control-sm border border-transparent px-3 py-2',\n 'text-left text-sm font-medium text-surface-ink outline-none',\n 'focus-visible:ui-focus-ring',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n ],\n },\n triggerLabel: {\n base: 'min-w-0 flex-1',\n },\n icon: {\n base: 'size-icon shrink-0 fill-current text-icon',\n },\n content: {\n base: 'overflow-hidden text-sm text-surface-ink-muted',\n },\n contentInner: {\n base: 'min-w-0 px-3 pb-3 pt-1',\n },\n },\n}});\n\nexport {accordionStyles};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n type BindingObject,\n createCollectionNavigation,\n type CollectionNavigation,\n mergeBindings,\n type MachineSnapshot,\n observeSemanticChanges,\n reflectSchemaProp,\n resolveStyle,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {asBool, dispatch, isRtl} from '@client/utils';\nimport {accordionSchema, type AccordionMode, type AccordionProps} from './contract';\nimport {\n accordionHooks,\n createAccordionMachine,\n type AccordionContext,\n type AccordionTransitionData,\n} from './machine';\nimport {accordionStyles} from './styles';\n\ntype AccordionItemRecord = {\n item: HTMLElement;\n heading: HTMLElement | null;\n trigger: HTMLButtonElement;\n content: HTMLElement;\n value: string;\n disabled: boolean;\n};\n\n/**\n * Public Alpine API for `ui.accordion`.\n *\n * @public\n */\ninterface UiAccordionApi {\n /** Open value in single mode, otherwise an empty string. */\n readonly value: string;\n\n /** Open values in document order. */\n readonly values: readonly string[];\n\n /** Opens an enabled item. In single mode it replaces the current value. */\n open(value: string): void;\n\n /** Closes an item when the current mode permits it. */\n close(value: string): void;\n\n /** Reverses an item's current disclosure state. */\n toggle(value: string, event?: Event): void;\n\n /** Whether an item belongs to the current open-value set. */\n isOpen(value: string): boolean;\n}\n\ntype AccordionData = AlpineMachine<AccordionContext, AccordionProps, typeof accordionHooks> & UiAccordionApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst splitValues = (value: string): string[] => value.split(',').map((item) => item.trim()).filter(Boolean);\nconst stateFor = (open: boolean): 'open' | 'closed' => open ? 'open' : 'closed';\nconst safeIdPart = (value: string): string => value.trim().replace(/[^a-zA-Z0-9_-]+/g, '-') || 'item';\n\nconst UiAccordion = (): TrellisAlpineComponent<AccordionData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let collection: CollectionNavigation | null = null;\n let disconnectObserver: (() => void) | null = null;\n let idFor = (key: string): string => key;\n\n const root = (): HTMLElement & Alpine.ElementWithXAttributes => {\n if (!rootEl) throw new Error('Accordion has not been initialized.');\n return rootEl;\n };\n\n const owns = (element: Element): boolean => element.closest('[data-ui-accordion]') === root();\n\n const items = (): AccordionItemRecord[] => Array.from(\n root().querySelectorAll<HTMLElement>('[data-ui-accordion-item]'),\n ).filter(owns).map((item, index) => {\n const trigger = item.querySelector<HTMLElement>('[data-ui-accordion-trigger]');\n const content = item.querySelector<HTMLElement>('[data-ui-accordion-content]');\n if (!(trigger instanceof HTMLButtonElement) || !content || !owns(trigger) || !owns(content)) return null;\n item.dataset.value ||= `item-${index + 1}`;\n return {\n item,\n heading: item.querySelector<HTMLElement>('[data-ui-accordion-heading]'),\n trigger,\n content,\n value: item.dataset.value,\n disabled: asBool({value: item.dataset.itemDisabled}),\n } satisfies AccordionItemRecord;\n }).filter((item): item is AccordionItemRecord => item !== null);\n\n const itemForValue = (value: string): AccordionItemRecord | null => (\n items().find((item) => item.value === value) ?? null\n );\n\n const itemFrom = (target: EventTarget | null): AccordionItemRecord | null => {\n if (!(target instanceof Element)) return null;\n const itemEl = target.closest<HTMLElement>('[data-ui-accordion-item]');\n return itemEl && owns(itemEl) ? items().find((item) => item.item === itemEl) ?? null : null;\n };\n\n const collectionContext = (): AccordionContext['collection'] => {\n const records = items();\n return {\n values: records.map((item) => item.value),\n disabledValues: records.filter((item) => item.disabled).map((item) => item.value),\n };\n };\n\n const normalize = (\n values: readonly string[],\n props: AccordionProps,\n itemValues: readonly string[],\n ): string[] => {\n const requested = new Set(values);\n const ordered = itemValues.filter((value) => requested.has(value));\n return props.mode === 'single' ? ordered.slice(0, 1) : ordered;\n };\n\n const initialContext = (props: AccordionProps): AccordionContext => {\n const collectionState = collectionContext();\n const controlled = props.mode === 'multiple'\n ? splitValues(props.values || props.value)\n : props.value ? [props.value] : [];\n const defaults = props.mode === 'multiple'\n ? splitValues(props.defaultValues)\n : props.defaultValue ? [props.defaultValue] : [];\n const authored = items().filter((item) => asBool({value: item.item.dataset.open})).map((item) => item.value);\n const requested = controlled.length > 0 ? controlled : defaults.length > 0 ? defaults : authored;\n return {\n selection: {values: normalize(requested, props, collectionState.values)},\n change: {openingValues: [], closingValues: []},\n collection: collectionState,\n };\n };\n\n const currentProps = (): Readonly<AccordionProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<AccordionContext> => bridge.getCommittedSnapshot().context;\n\n const itemIsOpen = (item: AccordionItemRecord): boolean => currentContext().selection.values.includes(item.value);\n const itemIsDisabled = (item: AccordionItemRecord): boolean => currentProps().disabled || item.disabled;\n const canCollapse = (item: AccordionItemRecord): boolean => (\n currentProps().mode === 'multiple' || currentProps().collapsible || !itemIsOpen(item)\n );\n\n const syncRoot = (): void => {\n const props = currentProps();\n const values = currentContext().selection.values;\n reflectSchemaProp({\n el: root(),\n schema: accordionSchema,\n key: 'value',\n value: props.mode === 'single' ? values[0] ?? '' : '',\n });\n reflectSchemaProp({\n el: root(),\n schema: accordionSchema,\n key: 'values',\n value: props.mode === 'multiple' ? values.join(',') : '',\n });\n root().dataset.orientation = props.orientation;\n root().dataset.iconPosition = props.iconPosition;\n root().dataset.mode = props.mode;\n if (props.disabled) root().setAttribute('data-disabled', '');\n else root().removeAttribute('data-disabled');\n };\n\n let component!: TrellisAlpineComponent<AccordionData>;\n\n const syncItem = (item: AccordionItemRecord): void => {\n const props = currentProps();\n const open = itemIsOpen(item);\n const state = stateFor(open);\n const disabled = itemIsDisabled(item);\n const closing = bridge.hasTag('changing') && currentContext().change.closingValues.includes(item.value);\n\n item.item.dataset.state = state;\n item.item.dataset.orientation = props.orientation;\n item.item.className = resolveStyle({\n part: accordionStyles.parts.item,\n props,\n className: item.item.dataset.class ?? '',\n });\n item.heading?.setAttribute('data-state', state);\n item.heading?.setAttribute('data-orientation', props.orientation);\n\n const idPart = safeIdPart(item.value);\n item.trigger.id ||= idFor(`accordion-trigger-${idPart}`);\n item.content.id ||= idFor(`accordion-content-${idPart}`);\n item.trigger.type = 'button';\n item.trigger.dataset.state = state;\n item.trigger.dataset.orientation = props.orientation;\n item.trigger.className = resolveStyle({\n part: accordionStyles.parts.trigger,\n props,\n className: item.trigger.dataset.class ?? '',\n });\n item.trigger.setAttribute('aria-expanded', open ? 'true' : 'false');\n item.trigger.setAttribute('aria-controls', item.content.id);\n item.content.dataset.state = state;\n item.content.dataset.orientation = props.orientation;\n item.content.setAttribute('aria-labelledby', item.trigger.id);\n item.content.hidden = !open && !closing;\n\n [item.item, item.heading, item.trigger, item.content].forEach((element) => {\n if (!element) return;\n if (disabled) element.setAttribute('data-disabled', '');\n else element.removeAttribute('data-disabled');\n });\n item.trigger.disabled = disabled;\n if (disabled || (open && !canCollapse(item))) item.trigger.setAttribute('aria-disabled', 'true');\n else item.trigger.removeAttribute('aria-disabled');\n };\n\n const syncAll = (): void => {\n syncRoot();\n items().forEach(syncItem);\n };\n\n const emitChange = (): void => {\n const values = [...currentContext().selection.values];\n dispatch({el: root(), name: 'ui:change', detail: {\n value: currentProps().mode === 'single' ? values[0] ?? '' : '',\n values,\n }});\n };\n\n const bridge = createAlpineMachine({\n schema: accordionSchema,\n hooks: accordionHooks,\n resolveTransitionElement: ({data}) => {\n const value = (data as AccordionTransitionData).value;\n return itemForValue(value)?.content ?? null;\n },\n createMachine: ({props}) => createAccordionMachine({\n props,\n context: initialContext(props),\n effects: {\n prepareChange: () => {\n syncAll();\n emitChange();\n },\n finishChange: () => {\n syncAll();\n },\n syncProps: syncAll,\n syncItems: syncAll,\n },\n }),\n });\n\n const collectionNav = (): CollectionNavigation => {\n if (!collection) throw new Error('Accordion navigation has not been initialized.');\n return collection;\n };\n\n const sendItemsChanged = (): void => {\n const next = collectionContext();\n bridge.send({type: 'ITEMS_CHANGED', ...next});\n };\n\n const handleToggle = (item: AccordionItemRecord, event?: Event): void => {\n event?.preventDefault();\n if (itemIsDisabled(item)) return;\n bridge.send({type: 'TOGGLE', value: item.value, motion: !(event instanceof KeyboardEvent)});\n };\n\n const handleClick = (event: Event): void => {\n const item = itemFrom(event.target);\n if (!item || !(event.target instanceof Node) || !item.trigger.contains(event.target)) return;\n handleToggle(item, event);\n };\n\n const handleKeydown = (event: KeyboardEvent): void => {\n const item = itemFrom(event.target);\n if (!item || event.target !== item.trigger) return;\n if (event.key === 'Enter' || event.key === ' ') {\n handleToggle(item, event);\n return;\n }\n if (event.key === 'Home') {\n event.preventDefault();\n collectionNav().focusFirst();\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n collectionNav().focusLast();\n return;\n }\n if (currentProps().orientation === 'vertical') {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n collectionNav().focusNext();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n collectionNav().focusPrevious();\n }\n return;\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusPrevious();\n else collectionNav().focusNext();\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (isRtl({el: root()})) collectionNav().focusNext();\n else collectionNav().focusPrevious();\n }\n };\n\n const handleFocus = (event: Event): void => {\n const item = itemFrom(event.target);\n if (item && event.target === item.trigger && !itemIsDisabled(item)) {\n collectionNav().activateItem({el: item.trigger});\n }\n };\n\n const setupObserver = (): void => {\n disconnectObserver = observeSemanticChanges({\n targets: root(),\n read: collectionContext,\n onChange: sendItemsChanged,\n observer: {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['data-value', 'data-item-disabled'],\n },\n });\n };\n\n component = {\n ...bridge,\n get value(): string {\n return currentProps().mode === 'single' ? this.snapshot.current?.context.selection.values[0] ?? '' : '';\n },\n get values(): readonly string[] {\n return [...this.snapshot.current?.context.selection.values ?? []];\n },\n init(): void {\n rootEl = this.$el;\n idFor = this.$id.bind(this);\n bridge.connect(this.$el, this.snapshot);\n collection = createCollectionNavigation({\n root,\n itemSelector: '[data-ui-accordion-trigger]',\n isDisabled: (el) => el.hasAttribute('disabled'),\n loop: () => currentProps().loop,\n });\n syncAll();\n setupObserver();\n },\n destroy(): void {\n disconnectObserver?.();\n disconnectObserver = null;\n bridge.disconnect();\n collection = null;\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: accordionStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-accordion': '',\n ':data-orientation': () => currentProps().orientation,\n ':data-disabled': () => currentProps().disabled ? '' : undefined,\n '@click': handleClick,\n '@keydown': (event: Event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n },\n '@focusin': handleFocus,\n },\n ]});\n },\n open(value: string): void {\n bridge.send({type: 'OPEN', value});\n },\n close(value: string): void {\n bridge.send({type: 'CLOSE', value});\n },\n toggle(value: string, event?: Event): void {\n const item = itemForValue(value);\n if (item) handleToggle(item, event);\n },\n isOpen(value: string): boolean {\n return this.snapshot.current?.context.selection.values.includes(value) ?? false;\n },\n };\n\n return component;\n};\n\nconst registerAccordion = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiAccordion', () => UiAccordion());\n};\n\nexport {registerAccordion, UiAccordion};\nexport type {AccordionData, AccordionMode, UiAccordionApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerMotionCapability} from '../../capabilities/motion';\nimport {registerAccordion as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerAccordion = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerAccordion};\nexport default registerAccordion;\nexport * from './index';\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e=`[data-ui-button]:not([data-ui-loading-mode="false"])`,t=[`data-on`,`data-bind`,`data-ref`,`data-show`,`data-action`,`data-request`,`data-ui-request`,`wire:`],n=`ui:request:finish`,r=null,i=e=>e instanceof HTMLButtonElement||e instanceof HTMLAnchorElement,a=t=>{if(!(t instanceof Element))return null;let n=t.closest(e);return i(n)?n:null},o=e=>e.getAttributeNames().some(e=>t.some(t=>e.startsWith(t))),s=e=>e instanceof HTMLButtonElement&&e.type===`submit`,c=e=>e instanceof HTMLButtonElement&&(e.dataset.uiConfirm!==void 0||e.form?.dataset.uiConfirm!==void 0),l=(e,t)=>t?.dataset.uiConfirm!==void 0||e?.dataset.uiConfirm!==void 0,u=e=>e.dataset.uiLoadingMode===`true`||s(e)||o(e),d=e=>e.dataset.uiSubmitting===`true`||e.getAttribute(`aria-disabled`)===`true`||e.hasAttribute(`disabled`),f=e=>e.dataset.uiSubmitting===`true`||e.hasAttribute(`disabled`),p=e=>{e.dataset.uiSubmitting=`true`,e.setAttribute(`data-ui-loading`,``),e.setAttribute(`aria-disabled`,`true`),e.setAttribute(`aria-busy`,`true`),e.dispatchEvent(new CustomEvent(`ui:loading-start`,{bubbles:!0})),e instanceof HTMLButtonElement?e.disabled=!0:e.tabIndex=-1},m=e=>{e.dataset.initialLoading!==`true`&&(delete e.dataset.uiSubmitting,e.removeAttribute(`data-ui-loading`),e.removeAttribute(`aria-busy`),e.dataset.initialDisabled!==`true`&&(e.removeAttribute(`aria-disabled`),e instanceof HTMLButtonElement?e.disabled=!1:e.removeAttribute(`tabindex`),e.dispatchEvent(new CustomEvent(`ui:loading-end`,{bubbles:!0}))))},h=(e,t)=>{window.setTimeout(()=>{!e.isConnected||f(e)||p(e)},0)},g=e=>{let t=a(e.target);if(!(!t||!u(t))){if(d(t)){e.preventDefault(),e.stopImmediatePropagation();return}t instanceof HTMLButtonElement&&t.form&&!t.form.checkValidity()||c(t)||h(t,e)}},_=t=>{let n=t,r=n.submitter instanceof HTMLElement?n.submitter:null,a=i(r)?r:null,o=t.target instanceof HTMLFormElement?t.target:null,c=a?a.matches(e)?a:null:o?.querySelector(e)??null;t.defaultPrevented&&l(o,r)||!c||!s(c)||h(c,t)},v=()=>{document.querySelectorAll(`[data-ui-button][data-ui-submitting="true"]`).forEach(e=>m(e))},y=()=>{r||=(document.addEventListener(`click`,g,!0),document.addEventListener(`submit`,_,!0),document.addEventListener(n,v),()=>{document.removeEventListener(`click`,g,!0),document.removeEventListener(`submit`,_,!0),document.removeEventListener(n,v),r=null})},b=()=>{r?.()},x=()=>{y()};export{b as n,x as t};
2
+ //# sourceMappingURL=entry.generated-C-lyYGbo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.generated-C-lyYGbo.js","names":[],"sources":["../../../../../../../../client/src/components/button/index.ts","../../../../../../../../client/src/components/button/entry.generated.ts"],"sourcesContent":["import {buttonStyles} from './styles';\n\ntype ButtonElement = HTMLAnchorElement | HTMLButtonElement;\n\nconst BUTTON_SELECTOR = '[data-ui-button]:not([data-ui-loading-mode=\"false\"])';\nconst REQUEST_ATTR_PREFIXES = [\n 'data-on',\n 'data-bind',\n 'data-ref',\n 'data-show',\n 'data-action',\n 'data-request',\n 'data-ui-request',\n 'wire:',\n];\nconst REQUEST_FINISH_EVENT = 'ui:request:finish';\n\nlet cleanupSubmitGuard: (() => void) | null = null;\n\nconst isButtonElement = (value: EventTarget | null): value is ButtonElement => (\n value instanceof HTMLButtonElement || value instanceof HTMLAnchorElement\n);\n\nconst closestButton = (target: EventTarget | null): ButtonElement | null => {\n if (!(target instanceof Element)) return null;\n const button = target.closest<ButtonElement>(BUTTON_SELECTOR);\n return isButtonElement(button) ? button : null;\n};\n\nconst hasRequestAttribute = (button: ButtonElement): boolean => (\n button.getAttributeNames().some((name) => REQUEST_ATTR_PREFIXES.some((prefix) => name.startsWith(prefix)))\n);\n\nconst isSubmitButton = (button: ButtonElement): boolean => (\n button instanceof HTMLButtonElement && button.type === 'submit'\n);\n\nconst hasSubmitConfirmation = (button: ButtonElement): boolean => (\n button instanceof HTMLButtonElement\n && (\n button.dataset.uiConfirm !== undefined\n || button.form?.dataset.uiConfirm !== undefined\n )\n);\n\nconst submitEventHasConfirmation = (form: HTMLFormElement | null, submitter: HTMLElement | null): boolean => (\n submitter?.dataset.uiConfirm !== undefined\n || form?.dataset.uiConfirm !== undefined\n);\n\nconst shouldGuardClick = (button: ButtonElement): boolean => (\n button.dataset.uiLoadingMode === 'true'\n || isSubmitButton(button)\n || hasRequestAttribute(button)\n);\n\nconst isLocked = (button: ButtonElement): boolean => (\n button.dataset.uiSubmitting === 'true'\n || button.getAttribute('aria-disabled') === 'true'\n || button.hasAttribute('disabled')\n);\n\nconst shouldSkipScheduledLock = (button: ButtonElement): boolean => (\n button.dataset.uiSubmitting === 'true'\n || button.hasAttribute('disabled')\n);\n\nconst lockButton = (button: ButtonElement): void => {\n button.dataset.uiSubmitting = 'true';\n button.setAttribute('data-ui-loading', '');\n button.setAttribute('aria-disabled', 'true');\n button.setAttribute('aria-busy', 'true');\n button.dispatchEvent(new CustomEvent('ui:loading-start', {bubbles: true}));\n\n if (button instanceof HTMLButtonElement) {\n button.disabled = true;\n } else {\n button.tabIndex = -1;\n }\n};\n\nconst unlockButton = (button: ButtonElement): void => {\n if (button.dataset.initialLoading === 'true') return;\n\n delete button.dataset.uiSubmitting;\n button.removeAttribute('data-ui-loading');\n button.removeAttribute('aria-busy');\n\n if (button.dataset.initialDisabled === 'true') return;\n\n button.removeAttribute('aria-disabled');\n if (button instanceof HTMLButtonElement) {\n button.disabled = false;\n } else {\n button.removeAttribute('tabindex');\n }\n\n button.dispatchEvent(new CustomEvent('ui:loading-end', {bubbles: true}));\n};\n\nconst scheduleLock = (button: ButtonElement, event: Event): void => {\n window.setTimeout(() => {\n if (!button.isConnected || shouldSkipScheduledLock(button)) return;\n lockButton(button);\n }, 0);\n};\n\nconst guardClick = (event: Event): void => {\n const button = closestButton(event.target);\n if (!button || !shouldGuardClick(button)) return;\n\n if (isLocked(button)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n\n if (button instanceof HTMLButtonElement && button.form && !button.form.checkValidity()) return;\n if (hasSubmitConfirmation(button)) return;\n\n scheduleLock(button, event);\n};\n\nconst guardSubmit = (event: Event): void => {\n const submitEvent = event as SubmitEvent;\n const nativeSubmitter = submitEvent.submitter instanceof HTMLElement ? submitEvent.submitter : null;\n const submitter = isButtonElement(nativeSubmitter) ? nativeSubmitter : null;\n const form = event.target instanceof HTMLFormElement ? event.target : null;\n const button = submitter\n ? submitter.matches(BUTTON_SELECTOR) ? submitter : null\n : form?.querySelector<ButtonElement>(BUTTON_SELECTOR) ?? null;\n\n if (event.defaultPrevented && submitEventHasConfirmation(form, nativeSubmitter)) return;\n\n if (!button || !isSubmitButton(button)) return;\n\n scheduleLock(button, event);\n};\n\nconst unlockSubmittedButtons = (): void => {\n document.querySelectorAll<ButtonElement>('[data-ui-button][data-ui-submitting=\"true\"]')\n .forEach((button) => unlockButton(button));\n};\n\nconst registerButton = (): void => {\n if (cleanupSubmitGuard) return;\n\n document.addEventListener('click', guardClick, true);\n document.addEventListener('submit', guardSubmit, true);\n document.addEventListener(REQUEST_FINISH_EVENT, unlockSubmittedButtons);\n\n cleanupSubmitGuard = () => {\n document.removeEventListener('click', guardClick, true);\n document.removeEventListener('submit', guardSubmit, true);\n document.removeEventListener(REQUEST_FINISH_EVENT, unlockSubmittedButtons);\n cleanupSubmitGuard = null;\n };\n};\n\nconst unregisterButton = (): void => {\n cleanupSubmitGuard?.();\n};\n\nexport {registerButton, unregisterButton};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerButton as registerComponent} from './index';\n\nconst registerButton = (): void => {\n registerComponent();\n};\n\nexport {registerButton};\nexport default registerButton;\nexport * from './index';\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{a as e,c as t,d as n,i as r,l as i,o as a,p as o,t as s}from"./motion-Bpttk6iZ.js";import{a as c,f as l,l as u,n as d}from"./codecs-Cb1ns_47.js";import{i as ee,r as te,s as f,t as ne}from"./dom-qAeVl7dc.js";import{a as p,n as re,t as m}from"./machine-CX3wFSoV.js";import{n as h,t as g}from"./styles-TfvwVPGw.js";import{t as ie}from"./merge-bindings-C8ewA_FD.js";import{i as ae}from"./focus-scope-DtaPVNl5.js";import{t as oe}from"./semantic-observer-9VxzbQBi.js";import{n as se,t as _}from"./resizable-BixtYF9M.js";var ce=(e,t)=>{let n=getComputedStyle(e).getPropertyValue(`--breakpoint-${t}`),r=Number.parseFloat(n);return Number.isFinite(r)?r:1/0},v=[`horizontal`,`vertical`],y=[`div`,`section`,`aside`,`main`,`nav`],b=[`1`,`2`,`3`,`4`,`5`,`6`,`fill`],x=[`none`,`start`,`end`],le=[`toggle`,`expand`,`collapse`],ue={id:l.default(`ui-panels`),orientation:u(v,`horizontal`),persist:d,divider:d.default(!0),class:l},de={id:l,as:u(y,`section`),size:u(b,`fill`),resize:u(x,`none`),collapsible:d,defaultCollapsed:d,class:l},S={target:l,action:u(le,`toggle`),icon:l.default(`menu`),label:l.default(`Expand`),class:l},fe=[p({name:`opening`,state:`changing`,projectEach:e=>e.context.change.openingIds.map(e=>({panelId:e})),onDone:`CHANGE_DONE`,onError:`CHANGE_ERROR`,sends:{expand:e=>({type:`EXPAND`,panelId:e}),collapse:e=>({type:`COLLAPSE`,panelId:e}),toggle:e=>({type:`TOGGLE`,panelId:e})}}),p({name:`closing`,state:`changing`,projectEach:e=>e.context.change.closingIds.map(e=>({panelId:e})),onDone:`CHANGE_DONE`,onError:`CHANGE_ERROR`,sends:{expand:e=>({type:`EXPAND`,panelId:e}),collapse:e=>({type:`COLLAPSE`,panelId:e}),toggle:e=>({type:`TOGGLE`,panelId:e})}}),p({name:`sizing`,state:`sizing`,projectEach:e=>e.context.sizing.changes,onDone:`SIZE_DONE`,onError:`SIZE_ERROR`}),p({name:`persisting`,state:`persisting`,project:e=>({groupId:e.props.id,collapsed:[...e.context.layout.collapsedIds],sizes:{...e.context.layout.committedSizes}}),onDone:`PERSIST_DONE`,onError:`PERSIST_ERROR`})],C=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[],w=e=>typeof e.panelId==`string`?e.panelId:``,T=e=>typeof e==`number`&&Number.isFinite(e)?e:null,E=e=>(Array.isArray(e.changes)?e.changes:[e]).flatMap(e=>{if(typeof e!=`object`||!e)return[];let t=e,n=typeof t.panelId==`string`?t.panelId:``,r=T(t.from),i=T(t.to),a=t.reset===!0;return n&&r!==null&&i!==null&&(r!==i||a)?[{panelId:n,from:r,to:i,...a?{reset:!0}:{}}]:[]}),D=(e,t)=>typeof e.props==`object`&&e.props!==null?e.props:t,O=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),k=e=>{let t=w(e.event),n=e.context.layout.collapsedIds;switch(e.event.type){case`COLLAPSE`:return e.context.collection.collapsibleIds.includes(t)&&!n.includes(t)?e.context.collection.ids.filter(e=>n.includes(e)||e===t):n;case`EXPAND`:return n.filter(e=>e!==t);case`TOGGLE`:return e.context.collection.collapsibleIds.includes(t)?n.includes(t)?n.filter(e=>e!==t):e.context.collection.ids.filter(e=>n.includes(e)||e===t):n;default:return n}},A=e=>{let t=w(e.event);return e.context.collection.ids.includes(t)&&!O(e.context.layout.collapsedIds,k(e))},j=e=>{let t=w(e.event);return e.context.collection.resizableIds.includes(t)&&!e.context.layout.collapsedIds.includes(t)&&T(e.event.size)!==null},M=e=>{let t=E(e.event);return t.length>0&&t.every(({panelId:t})=>e.context.collection.sizableIds.includes(t)&&!e.context.layout.collapsedIds.includes(t))},N=e=>{let t=E(e.event);return t.length>0&&t.every(({panelId:t})=>e.context.collection.sizableIds.includes(t)&&e.context.layout.collapsedIds.includes(t))},P=e=>{let t=C(e.event.ids);return t.length>0&&t.every(t=>e.context.collection.sizableIds.includes(t)&&e.context.layout.collapsedIds.includes(t)&&Object.hasOwn(e.context.layout.committedSizes,t))},F=e=>{let t=E(e.event),n={...e.context.layout.committedSizes};return t.forEach(({panelId:e,to:t,reset:r})=>{r?delete n[e]:n[e]=t}),{context:{...e.context,layout:{...e.context.layout,committedSizes:n},sizing:{changes:t}}}},I=e=>{let t=E(e.event);return{context:{...e.context,layout:{...e.context.layout,committedSizes:{...e.context.layout.committedSizes,...Object.fromEntries(t.map(({panelId:e,to:t})=>[e,t]))}}}}},L=e=>{let t={...e.context.layout.committedSizes};return C(e.event.ids).forEach(e=>delete t[e]),{context:{...e.context,layout:{...e.context.layout,committedSizes:t}}}},R=e=>{let t=k(e),n=e.context.layout.collapsedIds;return{context:{...e.context,layout:{...e.context.layout,collapsedIds:t},change:{openingIds:n.filter(e=>!t.includes(e)),closingIds:t.filter(e=>!n.includes(e))}}}},z=e=>{let t=C(e.event.ids),n=C(e.event.collapsibleIds).filter(e=>t.includes(e)),r=C(e.event.sizableIds).filter(e=>t.includes(e)),i=C(e.event.resizableIds).filter(e=>t.includes(e)),a=C(e.event.authoredCollapsedIds).filter(e=>n.includes(e)),o=new Set(e.context.collection.ids),s=t.filter(t=>(e.context.layout.collapsedIds.includes(t)||!o.has(t)&&a.includes(t))&&n.includes(t)),c=Object.fromEntries(Object.entries(e.context.layout.committedSizes).filter(([e])=>t.includes(e)&&r.includes(e))),l=t.includes(e.context.resize.activeId)&&i.includes(e.context.resize.activeId);return{context:{...e.context,collection:{ids:t,collapsibleIds:n,sizableIds:r,resizableIds:i},layout:{collapsedIds:s,committedSizes:c},authored:{collapsedIds:a},resize:l?e.context.resize:{activeId:``,initialSize:null,previewSize:null}}}},pe=e=>{let t=C(e.event.ids),n=C(e.event.resizableIds);return!t.includes(e.context.resize.activeId)||!n.includes(e.context.resize.activeId)},me=({props:e,context:t,effects:n})=>m({initial:`stable`,states:{stable:{tags:[`stable`],on:{COLLAPSE:{target:`changing`,guard:A,reduce:R,effects:`prepareChange`},EXPAND:{target:`changing`,guard:A,reduce:R,effects:`prepareChange`},TOGGLE:{target:`changing`,guard:A,reduce:R,effects:`prepareChange`},SIZE:{target:`sizing`,guard:M,reduce:F,effects:`prepareSizing`},RESTORE_HIDDEN_SIZES:{guard:N,reduce:I},RESET_HIDDEN_SIZES:{target:`persisting`,guard:P,reduce:L,effects:[`sync`,`persist`]},RESIZE_START:{target:`resizing`,guard:j,reduce:`startResize`,effects:`beginResize`},PANELS_CHANGED:{reduce:z,effects:`sync`},PROPS_CHANGED:{reduce:`replaceProps`,effects:`sync`}}},changing:{tags:[`changing`,`transitioning`],on:{CHANGE_DONE:{target:`persisting`,effects:[`finishChange`,`persist`]},CHANGE_ERROR:{target:`persisting`,effects:[`finishChange`,`persist`]},COLLAPSE:{target:`changing`,guard:A,reduce:R,effects:`prepareChange`},EXPAND:{target:`changing`,guard:A,reduce:R,effects:`prepareChange`},TOGGLE:{target:`changing`,guard:A,reduce:R,effects:`prepareChange`},PANELS_CHANGED:{reduce:z,effects:`sync`},PROPS_CHANGED:{reduce:`replaceProps`,effects:`sync`}}},sizing:{tags:[`sizing`,`transitioning`],on:{SIZE_DONE:{target:`persisting`,effects:[`finishSizing`,`persist`]},SIZE_ERROR:{target:`persisting`,effects:[`finishSizing`,`persist`]},SIZE:{target:`sizing`,guard:M,reduce:F,effects:`prepareSizing`},RESIZE_START:{target:`resizing`,guard:j,reduce:`startResize`,effects:`beginResize`},PANELS_CHANGED:{reduce:z,effects:`sync`},PROPS_CHANGED:{reduce:`replaceProps`,effects:`sync`}}},resizing:{tags:[`resizing`],on:{RESIZE:{guard:`activeResize`,reduce:`previewResize`,effects:`previewResize`},RESIZE_END:{target:`persisting`,guard:`activeResize`,reduce:`commitResize`,effects:[`commitResize`,`persist`]},RESIZE_CANCEL:{target:`stable`,reduce:`clearResize`,effects:`cancelResize`},PANELS_CHANGED:[{target:`stable`,guard:pe,reduce:z,effects:[`cancelResize`,`sync`]},{reduce:z,effects:`sync`}],PROPS_CHANGED:{reduce:`replaceProps`,effects:`sync`}}},persisting:{tags:[`persisting`],on:{PERSIST_DONE:`stable`,PERSIST_ERROR:`stable`,COLLAPSE:{target:`changing`,guard:A,reduce:R,effects:`prepareChange`},EXPAND:{target:`changing`,guard:A,reduce:R,effects:`prepareChange`},TOGGLE:{target:`changing`,guard:A,reduce:R,effects:`prepareChange`},SIZE:{target:`sizing`,guard:M,reduce:F,effects:`prepareSizing`},PANELS_CHANGED:{reduce:z,effects:`sync`},PROPS_CHANGED:{reduce:`replaceProps`,effects:`sync`}}}}},{props:e,context:t,reducers:{replaceProps:e=>({props:D(e.event,e.props)}),startResize:e=>{let t=T(e.event.size);return{context:{...e.context,resize:{activeId:w(e.event),initialSize:t,previewSize:t}}}},previewResize:e=>({context:{...e.context,resize:{...e.context.resize,previewSize:T(e.event.size)}}}),commitResize:e=>{let t=w(e.event),n=T(e.event.size);if(n!==null)return{context:{...e.context,layout:{...e.context.layout,committedSizes:{...e.context.layout.committedSizes,[t]:n}},resize:{activeId:``,initialSize:null,previewSize:null}}}},clearResize:e=>({context:{...e.context,resize:{activeId:``,initialSize:null,previewSize:null}}})},guards:{activeResize:e=>w(e.event)===e.context.resize.activeId&&T(e.event.size)!==null},effects:{prepareChange:n.prepareChange,finishChange:n.finishChange,sync:n.sync,beginResize:n.beginResize,previewResize:n.previewResize,commitResize:n.commitResize,cancelResize:n.cancelResize,prepareSizing:n.prepareSizing,finishSizing:n.finishSizing,persist:n.persist}}),B=g({definition:{component:`ui.panels`,parts:{root:{base:`relative flex h-full min-h-0 w-full min-w-0`,variants:{orientation:{horizontal:`flex-row`,vertical:`flex-col`}},defaults:{orientation:`horizontal`}},panel:{base:`relative min-w-0 overflow-hidden`,variants:{orientation:{horizontal:`h-full`,vertical:`w-full`},divider:{true:``,false:``},resize:{none:``,start:``,end:``}},defaults:{orientation:`horizontal`,divider:!0,resize:`none`}},expanded:{base:`h-full min-h-0 w-full min-w-0`},collapsed:{base:`flex h-full min-h-0 w-full min-w-0 items-center justify-center overflow-hidden`},resizeHandle:{base:[`absolute z-20 touch-none border-transparent outline-none`,`hover:border-intent-neutral-edge-hover focus-visible:ui-focus-ring-inset`,`data-resizing:border-intent-neutral-edge-strong`],variants:{orientation:{horizontal:`inset-y-0 w-panel-resize-handle cursor-col-resize`,vertical:`inset-x-0 h-panel-resize-handle cursor-row-resize`},edge:{start:``,end:``}},defaults:{orientation:`horizontal`,edge:`end`}},toggle:{base:`inline-flex size-control-md items-center justify-center outline-none focus-visible:ui-focus-ring-inset`},toggleIcon:{base:`size-icon-md shrink-0`}}}}),V=new Set,H=e=>e instanceof CustomEvent&&e.detail&&typeof e.detail==`object`?e.detail:{},he=(()=>{let e=!1;return()=>{if(e||typeof document>`u`)return;let t=e=>t=>{let n=H(t);n.__panelsNotification||!n.panelId||V.forEach(t=>{n.groupId&&n.groupId!==t.id||t.hasPanel(n.panelId)&&t.perform(n.action??e,n.panelId,n.trigger)})};document.addEventListener(`ui:panel-collapse`,t(`collapse`)),document.addEventListener(`ui:panel-expand`,t(`expand`)),document.addEventListener(`ui:panel-toggle`,t(`toggle`)),document.addEventListener(`ui:panel-size`,e=>{let t=H(e);t.__panelsNotification||!t.panelId||!Number.isFinite(t.size)||V.forEach(e=>{t.groupId&&t.groupId!==e.id||e.hasPanel(t.panelId)&&e.resize(t.panelId,t.size)})}),document.addEventListener(`ui:panels-reset`,e=>{let t=H(e);t.__panelsNotification||V.forEach(e=>{t.groupId&&t.groupId!==e.id||t.panelId&&!e.hasPanel(t.panelId)||e.reset(t.panelId)})}),e=!0}})(),ge=e=>`trellis-ui:panels:${e}:v1`,_e=e=>typeof e!=`object`||!e||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`number`&&Number.isFinite(e[1]))),U=()=>{let s=null,l=null,u=null,d=`wide`,p=[],m=new Set,g=new Set,_=new Map,v=new Map,y=new Map,b=new Map,x=()=>{if(!s)throw Error(`Panels has not been initialized.`);return s},le=e=>e.closest(`[data-ui-panels]`)===x(),S=()=>Array.from(x().children).flatMap(e=>{if(!(e instanceof HTMLElement)||!e.hasAttribute(`data-ui-panel`))return[];let t=e.querySelector(`:scope > [data-ui-panel-expanded]`);return!t||!le(t)?[]:[{panel:e,expanded:t,collapsed:e.querySelector(`:scope > [data-ui-panel-collapsed]`),handle:e.querySelector(`:scope > [data-ui-panel-resize-handle]`),props:c({el:e,schema:de})}]}),C=e=>S().find(t=>t.props.id===e)??null,w=()=>Q.getCommittedSnapshot().context,T=()=>Q.getCommittedSnapshot().props,E=e=>w().layout.collapsedIds.includes(e),D=()=>T().orientation===`horizontal`&&d===`stacked`,O=()=>D()?`vertical`:T().orientation,k=()=>x().dataset.orientation===`vertical`?`vertical`:`horizontal`,A=e=>{let t=e.getBoundingClientRect();return k()===`horizontal`?t.width:t.height},j=()=>{let e=S(),t=e.map(({props:e})=>e.id);if(t.some(e=>!e))throw Error(`Every Panel requires a stable id.`);if(new Set(t).size!==t.length)throw Error(`Panel ids must be unique within a Panels group.`);if(e.length>0&&!e.some(({props:e})=>e.size===`fill`))throw Error(`A Panels group requires at least one size="fill" Panel.`);if(e.some(({props:e})=>e.size===`fill`&&e.resize!==`none`))throw Error(`A size="fill" Panel cannot own a resize handle.`);return{ids:e.map(({props:e})=>e.id).filter(Boolean),collapsibleIds:e.filter(({props:e})=>e.id&&e.collapsible).map(({props:e})=>e.id),sizableIds:e.filter(({props:e})=>e.id&&e.size!==`fill`).map(({props:e})=>e.id),resizableIds:e.filter(({props:e})=>e.id&&e.size!==`fill`&&e.resize!==`none`).map(({props:e})=>e.id),authoredCollapsedIds:e.filter(({props:e})=>e.id&&e.collapsible&&e.defaultCollapsed).map(({props:e})=>e.id)}},M=e=>{let t=document.createElement(`div`);t.style.cssText=`position:absolute;visibility:hidden;pointer-events:none;inset:0 auto auto 0;`,k()===`horizontal`?t.style.width=`var(${e})`:t.style.height=`var(${e})`,x().append(t);let n=A(t);return t.remove(),n},N=e=>e.props.size===`fill`?{minimum:0,maximum:1/0}:{minimum:M(`--spacing-panel-${e.props.size}-min`),maximum:M(`--spacing-panel-${e.props.size}-max`)},P=(e,t)=>{let{minimum:n,maximum:r}=N(e);return Math.min(r,Math.max(n,t))},F=()=>{let e=j();return{collection:{ids:e.ids,collapsibleIds:e.collapsibleIds,sizableIds:e.sizableIds,resizableIds:e.resizableIds},layout:{collapsedIds:[...e.authoredCollapsedIds],committedSizes:{}},authored:{collapsedIds:e.authoredCollapsedIds},change:{openingIds:[],closingIds:[]},resize:{activeId:``,initialSize:null,previewSize:null},sizing:{changes:[]}}},I=(e,t,n)=>{k()===`horizontal`?(e.style.minWidth=t,e.style.maxWidth=n,e.style.minHeight=``,e.style.maxHeight=``):(e.style.minHeight=t,e.style.maxHeight=n,e.style.minWidth=``,e.style.maxWidth=``)},L=e=>{e.style.flex=``,e.style.minWidth=``,e.style.maxWidth=``,e.style.minHeight=``,e.style.maxHeight=``},R=(e,t)=>{if(D()){L(e.panel);return}if(t!==void 0){e.panel.style.flex=`0 0 ${t}px`,I(e.panel,`0px`,`none`);return}if(E(e.props.id)){if(w().authored.collapsedIds.includes(e.props.id)){L(e.panel);return}let t=e.collapsed?`var(--spacing-panel-collapsed)`:`0px`;e.panel.style.flex=`0 0 ${t}`,I(e.panel,t,t);return}if(e.props.size===`fill`){L(e.panel);return}let n=w().resize.activeId===e.props.id?w().resize.previewSize:w().layout.committedSizes[e.props.id];if(n==null){L(e.panel);return}let r=`${P(e,n)}px`;e.panel.style.flex=`0 1 ${r}`,I(e.panel,`var(--spacing-panel-${e.props.size}-min)`,`var(--spacing-panel-${e.props.size}-max)`)},z=(e,t)=>{e.toggleAttribute(`inert`,t),e.setAttribute(`aria-hidden`,t?`true`:`false`)},pe=e=>{let t=T(),n=O(),r=E(e.props.id),i=Q.hasTag(`changing`)&&w().change.openingIds.includes(e.props.id),a=Q.hasTag(`changing`)&&w().change.closingIds.includes(e.props.id),o=!(r&&!a),s=r&&!a&&!i&&e.collapsed!==null;if(e.panel.dataset.state=r?`collapsed`:`expanded`,e.panel.dataset.orientation=n,e.panel.dataset.size=e.props.size,e.panel.dataset.resize=e.props.resize,e.panel.className=h({part:B.parts.panel,props:{orientation:n,divider:t.divider,resize:e.props.resize},className:e.props.class}),f({el:e.panel,attr:`data-collapsible`,present:e.props.collapsible}),f({el:e.panel,attr:`data-resizing`,present:w().resize.activeId===e.props.id}),R(e),e.expanded.hidden=!o,z(e.expanded,!o),e.collapsed&&(e.collapsed.hidden=!s,z(e.collapsed,!s)),e.handle){let t=D()||r||e.props.size===`fill`||e.props.resize===`none`;e.handle.dataset.orientation=n,e.handle.dataset.resizeEdge=e.props.resize,e.handle.setAttribute(`aria-label`,`Resize ${e.props.id} panel`),e.handle.toggleAttribute(`data-resize-disabled`,t),e.handle.hidden=D(),e.handle.className=h({part:B.parts.resizeHandle,props:{orientation:n,edge:e.props.resize},className:e.handle.dataset.class??``})}},H=e=>{e.forEach((t,n)=>{let r=e[n+1],i=t.props.resize===`end`||r?.props.resize===`start`;f({el:t.panel,attr:`data-divider`,present:T().divider&&r!==void 0&&!i})})},U=e=>{let t=e.dataset.target||``;if(!t){let t=e.closest(`[data-ui-panel]`),n=t?.closest(`[data-ui-panels]`),r=[...V].find(e=>e.id===n?.id),i=t&&r===$?C(t.id):null;return i&&r?{record:i,controller:r}:null}let n=e.dataset.groupId||e.closest(`[data-ui-panels]`)?.id,r=[...V].filter(e=>!n||e.id===n).find(e=>e.hasPanel(t)),i=r===$?C(t):null;return i&&r?{record:i,controller:r}:null},W=()=>{document.querySelectorAll(`[data-ui-panel-toggle]`).forEach(e=>{let t=U(e);if(!t||t.controller!==$)return;let n=E(t.record.props.id);e.dataset.target=t.record.props.id,e.dataset.groupId=T().id,e.dataset.state=n?`collapsed`:`expanded`,e.setAttribute(`aria-controls`,t.record.panel.id),e.setAttribute(`aria-expanded`,n?`false`:`true`),e.toggleAttribute(`disabled`,!t.record.props.collapsible)})},G=()=>{let e=T(),t=O();x().dataset.responsiveMode=d,x().dataset.layoutOrientation=t,x().style.flexDirection=t===`horizontal`?`row`:`column`,x().className=h({part:B.parts.root,props:{...e,orientation:t},className:e.class}),f({el:x(),attr:`data-resizing`,present:Q.hasTag(`resizing`)}),f({el:x(),attr:`data-transitioning`,present:Q.hasTag(`transitioning`)});let n=S();n.forEach(pe),H(n),W()},K=(e,t=!1)=>{let n=document.activeElement;if(!t&&(!(n instanceof HTMLElement)||!e.collapsed?.contains(n)))return;let r=y.get(e.props.id);r?.isConnected&&e.expanded.contains(r)?r.focus({preventScroll:!0}):(e.expanded.tabIndex=-1,e.expanded.focus({preventScroll:!0}))},ve=(e,t=!1)=>{let n=document.activeElement;if(!t&&(!(n instanceof HTMLElement)||!e.expanded.contains(n)))return;let r=e.collapsed?ae(e.collapsed)[0]:void 0,i=b.get(e.props.id),a=i?.isConnected&&!e.panel.contains(i)?i:void 0;r?r.focus({preventScroll:!0}):a?a.focus({preventScroll:!0}):(x().tabIndex=-1,x().focus({preventScroll:!0}))},ye=()=>{let e=[...w().change.openingIds,...w().change.closingIds],t=new Set(w().change.openingIds.filter(e=>{let t=C(e),n=document.activeElement;return t!==null&&t.collapsed!==null&&n instanceof HTMLElement&&t.collapsed.contains(n)})),n=new Map(e.flatMap(e=>{let t=C(e);if(!t)return[];if(w().change.closingIds.includes(e)){let n=document.activeElement;n instanceof HTMLElement&&t.expanded.contains(n)&&y.set(e,n)}return[[e,A(t.panel)]]}));G(),w().change.openingIds.forEach(e=>{let n=C(e);n&&K(n,t.has(e))}),e.forEach(e=>{let t=C(e),r=n.get(e);if(!t||r===void 0)return;let i=A(t.panel);v.set(e,{from:r,to:i}),R(t,r)})},be=()=>{let e=[...w().change.openingIds],t=[...w().change.closingIds],n=new Set(t.filter(e=>{let t=C(e),n=document.activeElement;return t!==null&&n instanceof HTMLElement&&t.expanded.contains(n)}));S().forEach(e=>R(e)),G(),t.forEach(e=>{let t=C(e);t&&ve(t,n.has(e))}),e.forEach(e=>q(`ui:panel-expand`,e)),t.forEach(e=>q(`ui:panel-collapse`,e)),[...e,...t].forEach(e=>v.delete(e))},q=(e,t,n={})=>{te({el:x(),name:e,detail:{groupId:T().id,panelId:t,__panelsNotification:!0,...n}})},xe=()=>{let e=w().layout;if(T().persist)try{localStorage.setItem(ge(T().id),JSON.stringify({collapsed:e.collapsedIds,sizes:e.committedSizes}))}catch{}te({el:x(),name:`ui:panels-layout-change`,detail:{groupId:T().id,collapsed:[...e.collapsedIds],sizes:{...e.committedSizes},__panelsNotification:!0}})},J=e=>{if(!s)return;if(Q.hasTag(`stable`)){e();return}let t=window.setTimeout(()=>{m.delete(t),J(e)},16);m.add(t)},Y=(e,t)=>{let n=e.find(e=>t(e)!==E(e));n&&(Q.send({type:t(n)?`COLLAPSE`:`EXPAND`,panelId:n}),J(()=>Y(e,t)))},Se=()=>{if(!T().persist)return;let e;try{e=JSON.parse(localStorage.getItem(ge(T().id))??`null`)}catch{return}if(typeof e!=`object`||!e)return;let t=j(),n=new Set((Array.isArray(e.collapsed)?e.collapsed:[]).filter(e=>typeof e==`string`&&t.collapsibleIds.includes(e))),r=_e(e.sizes),i=()=>{Y(t.collapsibleIds,e=>n.has(e))},a=()=>{let e=t.sizableIds.flatMap(e=>{let t=C(e),n=r[e];if(!t||n===void 0)return[];let i=A(t.panel),a=P(t,n);return Math.abs(i-a)<.5?[]:[{panelId:e,from:i,to:a}]});if(D()){e.length>0&&Q.send({type:`RESTORE_HIDDEN_SIZES`,changes:e}),i();return}let n=e.filter(({panelId:e})=>E(e)),a=e.filter(({panelId:e})=>!E(e));if(n.length>0&&Q.send({type:`RESTORE_HIDDEN_SIZES`,changes:n}),a.length>0){Q.send({type:`SIZE`,changes:a}),J(i);return}i()},o=t.collapsibleIds.filter(e=>E(e)&&!n.has(e));o.length>0?(Y(o,()=>!1),J(a)):a()},Ce=()=>{let e=requestAnimationFrame(()=>{g.delete(e);let t=requestAnimationFrame(()=>{g.delete(t),Se()});g.add(t)});g.add(e)},we=e=>{let t=j(),n=e?t.ids.filter(t=>t===e):t.ids;if(n.length===0)return;let r=()=>{Y(n.filter(e=>t.collapsibleIds.includes(e)),e=>w().authored.collapsedIds.includes(e))},i=n.filter(e=>t.sizableIds.includes(e)&&Object.hasOwn(w().layout.committedSizes,e));if(D()){i.length>0?(Q.send({type:`RESET_HIDDEN_SIZES`,ids:i}),J(r)):r();return}let a=i.filter(E);a.length>0&&Q.send({type:`RESET_HIDDEN_SIZES`,ids:a});let o=i.filter(e=>!E(e)).flatMap(e=>{let t=C(e);return!t||t.props.size===`fill`?[]:[{panelId:e,from:A(t.panel),to:M(`--spacing-panel-${t.props.size}`),reset:!0}]});if(o.length>0){Q.send({type:`SIZE`,changes:o}),J(r);return}r()},Te=()=>{w().sizing.changes.forEach(({panelId:e,from:t})=>{let n=C(e);n&&R(n,t)})},Ee=()=>{w().sizing.changes.forEach(({panelId:e,to:t})=>{let n=C(e);n&&(R(n),q(`ui:panel-resize-end`,e,{size:t}))}),G()},De=e=>{if(O()===`vertical`)return e===`start`?`negative`:`positive`;let t=ee({el:x()});return e===`start`?t?`positive`:`negative`:t?`negative`:`positive`},X=()=>{let e=new Set(S().map(({panel:e})=>e));_.forEach((t,n)=>{e.has(n)||(t(),_.delete(n))}),S().forEach(e=>{if(_.has(e.panel)||!e.handle||e.props.size===`fill`||e.props.resize===`none`)return;let t=N(e),n=M(`--spacing-panel-resize-handle`),r=M(`--spacing-panel-resize-handle-coarse`);_.set(e.panel,se({element:e.panel,handle:e.handle,axis:O()===`horizontal`?`x`:`y`,direction:De(e.props.resize),min:t.minimum,max:t.maximum,mode:`onChange`,hitArea:n,coarseHitArea:r,disabled:()=>D()||E(e.props.id),onStart:t=>Q.send({type:`RESIZE_START`,panelId:e.props.id,size:Z(t)}),onResize:t=>Q.send({type:`RESIZE`,panelId:e.props.id,size:Z(t)}),onEnd:t=>Q.send({type:`RESIZE_END`,panelId:e.props.id,size:Z(t)})}))})},Oe=()=>{_.forEach(e=>e()),_.clear(),X()},Z=e=>O()===`horizontal`?e.previewWidth:e.previewHeight,ke=e=>{let t=T().orientation===`horizontal`&&e<ce(x(),`sm`)?`stacked`:`wide`;t!==d&&(d=t,G(),Oe())},Q=re({schema:ue,hooks:fe,resolveTransitionElement:({data:e})=>{let t=e?.panelId;return t?C(t)?.panel??null:x()},createMachine:({props:e})=>me({props:e,context:F(),effects:{prepareChange:ye,finishChange:be,sync:()=>{G(),Oe()},beginResize:()=>{G()},previewResize:()=>{let e=w().resize.activeId,t=C(e);t&&R(t);let n=w().resize.previewSize;n!==null&&q(`ui:panel-resize`,e,{size:n})},commitResize:e=>{G();let t=typeof e.event.panelId==`string`?e.event.panelId:``,n=w().layout.committedSizes[t];t&&n!==void 0&&q(`ui:panel-resize-end`,t,{size:n})},cancelResize:G,prepareSizing:Te,finishSizing:Ee,persist:xe}})}),Ae=()=>{let e=j();Q.send({type:`PANELS_CHANGED`,...e}),X()},je=()=>{l=oe({targets:x(),read:j,onChange:Ae,observer:{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`id`,`data-size`,`data-resize`,`data-collapsible`,`data-default-collapsed`]}})},$;return $={...Q,get id(){return x().id||T().id},get orientation(){return O()},get collapsed(){return[...w().layout.collapsedIds]},get sizes(){return{...w().layout.committedSizes}},get root(){let e=this.snapshot.current?.props??T();return ie({inputs:[h({part:B.parts.root,props:e,className:e.class}),{"data-ui-panels":``}]})},init(){s=this.$el,Q.connect(this.$el,this.snapshot),x().id||=T().id,d=T().orientation===`horizontal`&&x().getBoundingClientRect().width<ce(x(),`sm`)?`stacked`:`wide`,V.add($),he(),G(),X(),u=new ResizeObserver(e=>{ke(e[0]?.contentRect.width??x().clientWidth)}),u.observe(x()),je(),T().persist&&Ce(),p.push(ne({target:x(),event:`keydown`,handler:()=>W()}))},destroy(){V.delete($),l?.(),l=null,u?.disconnect(),u=null,_.forEach(e=>e()),_.clear(),p.forEach(e=>e()),p=[],m.forEach(e=>window.clearTimeout(e)),m.clear(),g.forEach(e=>cancelAnimationFrame(e)),g.clear(),Q.disconnect(),s=null},transitionPanel(r){let s=r.data.panelId,c=C(s),l=v.get(s);if(!c||!l||l.from===l.to||t())return c&&R(c,l?.to),i();let u=()=>{};return a(c.panel,()=>{let t=o(l.from);return u=t.on(`change`,e=>R(c,e)),R(c,l.from),n(t,l.to,{duration:e.moderate.duration,ease:[.77,0,.175,1]})},new Set([`layout`]),r.signal,()=>{u(),R(c)})},transitionPanelSize(s){let{panelId:c,from:l,to:u}=s.data,d=C(c);if(!d||l===u||t())return d&&R(d),i();let ee=()=>{};return a(d.panel,()=>{let t=o(l);return ee=t.on(`change`,e=>R(d,e)),R(d,l),n(t,u,{duration:e.fast.duration,ease:r.inOut})},new Set([`layout`]),s.signal,()=>{ee(),R(d)})},hasPanel(e){return C(e)!==null},isCollapsed:E,collapse(e){Q.send({type:`COLLAPSE`,panelId:e})},expand(e){Q.send({type:`EXPAND`,panelId:e})},toggle(e){Q.send({type:`TOGGLE`,panelId:e})},resize(e,t){let n=C(e);if(D()||!n||n.props.size===`fill`||E(e)||!Number.isFinite(t))return;let r=A(n.panel),i=P(n,t);Math.abs(r-i)<.5||Q.send({type:`SIZE`,panelId:e,from:r,to:i})},reset(e){we(e)},perform(e,t,n){n&&b.set(t,n),{collapse:this.collapse,expand:this.expand,toggle:this.toggle}[e](t)},syncToggles:W},$},W=()=>{let e={};return{get props(){return e},init(){e=c({el:this.$el,schema:S})},destroy(){},get root(){return ie({inputs:[h({part:B.parts.toggle,props:{},className:e.class}),{"data-ui-panel-toggle":``,":data-target":()=>e.target||void 0,":data-action":()=>e.action,"@click":e=>this.trigger(e)}]})},trigger(t){t?.preventDefault();let n=this.$el,r=n.closest(`[data-ui-panel]`),i=r?.closest(`[data-ui-panels]`),a=e.target||r?.id||``;a&&document.dispatchEvent(new CustomEvent(`ui:panel-toggle`,{detail:{panelId:a,groupId:i?.id,action:e.action,trigger:n}}))}}},G=e=>{e.data(`UiPanels`,()=>U()),e.data(`UiPanelToggle`,()=>W())},K=new WeakSet,ve=e=>{K.has(e)||(K.add(e),s(e),_(e),G(e))};export{W as n,U as r,ve as t};
2
+ //# sourceMappingURL=entry.generated-C6ldtrmy.js.map