@vireo-ai/trellis-ui 0.1.53 → 0.1.54

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 (277) hide show
  1. package/README.md +23 -1
  2. package/package.json +2 -2
  3. package/packages/client/src/components/keybinding/styles.css +18 -2
  4. package/packages/client/src/components/link/styles.css +42 -0
  5. package/packages/client/src/components/tooltip/styles.css +3 -8
  6. package/packages/client/src/styles/components.css +2 -0
  7. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  8. package/packages/client/src/styles/generated/theme-palette.css +5 -1
  9. package/packages/client/src/styles/generated/theme-runtime.css +425 -6
  10. package/packages/client/src/styles/generated-sources.css +1 -1
  11. package/packages/client/src/styles/layout-participation.css +17 -0
  12. package/packages/client/src/styles/recipes/intent.css +3 -3
  13. package/packages/client/types/assets/bridge.d.ts +2 -1
  14. package/packages/client/types/capabilities/sortable.d.ts +2 -2
  15. package/packages/client/types/component-api.d.ts +1 -1
  16. package/packages/client/types/components/box/contract.d.ts +19 -19
  17. package/packages/client/types/components/button/contract.d.ts +1 -1
  18. package/packages/client/types/components/checkbox/machine.d.ts +0 -3
  19. package/packages/client/types/components/common.d.ts +23 -2
  20. package/packages/client/types/components/container/contract.d.ts +11 -11
  21. package/packages/client/types/components/file-upload/contract.d.ts +1 -1
  22. package/packages/client/types/components/file-upload/machine.d.ts +10 -12
  23. package/packages/client/types/components/flex/contract.d.ts +9 -9
  24. package/packages/client/types/components/frame/contract.d.ts +27 -26
  25. package/packages/client/types/components/grid/contract.d.ts +9 -9
  26. package/packages/client/types/components/heading/contract.d.ts +2 -2
  27. package/packages/client/types/components/input/contract.d.ts +1 -1
  28. package/packages/client/types/components/keybinding/contract.d.ts +5 -2
  29. package/packages/client/types/components/layout.d.ts +303 -149
  30. package/packages/client/types/components/link/contract.d.ts +30 -0
  31. package/packages/client/types/components/link/index.d.ts +2 -0
  32. package/packages/client/types/components/menu/contract.d.ts +17 -4
  33. package/packages/client/types/components/panels/contract.d.ts +1 -1
  34. package/packages/client/types/components/panels/machine.d.ts +17 -10
  35. package/packages/client/types/components/runtime.d.ts +1 -1
  36. package/packages/client/types/components/section/contract.d.ts +9 -9
  37. package/packages/client/types/components/select/contract.d.ts +1 -1
  38. package/packages/client/types/components/select/machine.d.ts +8 -7
  39. package/packages/client/types/components/stack/contract.d.ts +9 -9
  40. package/packages/client/types/components/switch/machine.d.ts +1 -5
  41. package/packages/client/types/components/text/contract.d.ts +4 -4
  42. package/packages/client/types/components/toast/index.d.ts +0 -2
  43. package/packages/client/types/components/toast/machine.d.ts +6 -5
  44. package/packages/client/types/components/virtualizer/cursor.d.ts +1 -1
  45. package/packages/client/types/components/virtualizer/index.d.ts +1 -1
  46. package/packages/client/types/core.d.ts +2 -2
  47. package/packages/client/types/directives/sortable.d.ts +2 -1
  48. package/packages/client/types/motion/owned.d.ts +5 -3
  49. package/packages/client/types/runtime/alpine-data.d.ts +3 -1
  50. package/packages/client/types/runtime/cursor-data-source.d.ts +14 -19
  51. package/packages/client/types/runtime/drag-and-drop/index.d.ts +2 -2
  52. package/packages/client/types/runtime/drag-and-drop/sortable/contract.d.ts +12 -12
  53. package/packages/client/types/runtime/drag-and-drop/sortable/feedback.d.ts +3 -3
  54. package/packages/client/types/runtime/drag-and-drop/sortable/index.d.ts +2 -2
  55. package/packages/client/types/runtime/drag-and-drop/sortable/placement.d.ts +7 -7
  56. package/packages/client/types/runtime/drag-and-drop/sortable/registry.d.ts +9 -5
  57. package/packages/client/types/runtime/engine/request.d.ts +29 -5
  58. package/packages/client/types/runtime/engine/stream.d.ts +6 -2
  59. package/packages/client/types/runtime/index.d.ts +4 -4
  60. package/packages/client/types/runtime/manifest.d.ts +31 -8
  61. package/packages/client/types/runtime/scroll-lock.d.ts +2 -3
  62. package/packages/client/types/runtime/theme.d.ts +2 -2
  63. package/packages/client/types/runtime/ui.d.ts +3 -3
  64. package/packages/client/types/runtime/virtualizer-fragment.d.ts +1 -1
  65. package/packages/client/types/runtime/virtualizer.d.ts +1 -1
  66. package/packages/client/types/utils/dom.d.ts +3 -3
  67. package/packages/client/types/utils/index.d.ts +2 -2
  68. package/packages/client/types/utils/object.d.ts +2 -1
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +464 -26
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -1
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +524 -495
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +1 -1
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js.map +1 -1
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-Dvc_bXq6.js +2 -0
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-Dvc_bXq6.js.map +1 -0
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-9HwatUrm.js +2 -0
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-9HwatUrm.js.map +1 -0
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{anchored-popover-BXEMsLrA.js → anchored-popover-CSBqS_MK.js} +2 -2
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{anchored-popover-BXEMsLrA.js.map → anchored-popover-CSBqS_MK.js.map} +1 -1
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-TcE7HSvq.js +2 -0
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-TcE7HSvq.js.map +1 -0
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-DAUyPPWa.js +2 -0
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-CrezWE-8.js.map → capability-motion-DAUyPPWa.js.map} +1 -1
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-BQgJCSHn.js +2 -0
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-resizable-Bga8TngJ.js.map → capability-resizable-BQgJCSHn.js.map} +1 -1
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BLyIVEh9.js +3 -0
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BLyIVEh9.js.map +1 -0
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{alpine-data-CytyCyfk.js → cleanup-manager-D9QiZF_Q.js} +2 -2
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cleanup-manager-D9QiZF_Q.js.map +1 -0
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-De1R7Xh6.js +2 -0
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-De1R7Xh6.js.map +1 -0
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-CzqwFGEd.js +2 -0
  96. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-CzqwFGEd.js.map +1 -0
  97. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-CogF8tNb.js +2 -0
  98. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-CogF8tNb.js.map +1 -0
  99. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-B2mQNyzN.js +2 -0
  100. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-B2mQNyzN.js.map +1 -0
  101. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-DiTFTWeR.js +2 -0
  102. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-DiTFTWeR.js.map +1 -0
  103. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-cns3DNcf.js +2 -0
  104. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{drag-and-drop-DHq3udf7.js.map → drag-and-drop-cns3DNcf.js.map} +1 -1
  105. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B1wGmQth.js +2 -0
  106. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B1wGmQth.js.map +1 -0
  107. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B3hMqvMn.js +2 -0
  108. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B3hMqvMn.js.map +1 -0
  109. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BBuJrkhp.js +2 -0
  110. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BBuJrkhp.js.map +1 -0
  111. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js +2 -0
  112. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js.map +1 -0
  113. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BMLdOzZs.js +2 -0
  114. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BMLdOzZs.js.map +1 -0
  115. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BMeqWpPy.js +2 -0
  116. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BMeqWpPy.js.map +1 -0
  117. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BOk2j8j3.js +2 -0
  118. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BOk2j8j3.js.map +1 -0
  119. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BhINWOfZ.js +2 -0
  120. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BhINWOfZ.js.map +1 -0
  121. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-AFRarPro.js → entry.generated-Bqy0wCWo.js} +2 -2
  122. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-AFRarPro.js.map → entry.generated-Bqy0wCWo.js.map} +1 -1
  123. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-4OkQdv.js +2 -0
  124. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-4OkQdv.js.map +1 -0
  125. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfkH92RS.js +2 -0
  126. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfkH92RS.js.map +1 -0
  127. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CmvKWs0J.js +2 -0
  128. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BqEMECZx.js.map → entry.generated-CmvKWs0J.js.map} +1 -1
  129. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CnFggOc8.js +2 -0
  130. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CnFggOc8.js.map +1 -0
  131. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CnY5J5bD.js +2 -0
  132. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CnY5J5bD.js.map +1 -0
  133. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CuZffmX3.js +2 -0
  134. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CuZffmX3.js.map +1 -0
  135. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DTRN8-Ks.js +2 -0
  136. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DTRN8-Ks.js.map +1 -0
  137. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-QspMEPHx.js → entry.generated-Da6pELhK.js} +2 -2
  138. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-QspMEPHx.js.map → entry.generated-Da6pELhK.js.map} +1 -1
  139. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De9SwKec.js +2 -0
  140. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-De9SwKec.js.map +1 -0
  141. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BSbzZ3xh.js → entry.generated-QV-az1in.js} +2 -2
  142. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BSbzZ3xh.js.map → entry.generated-QV-az1in.js.map} +1 -1
  143. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-sKnD2JaT.js +2 -0
  144. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-sKnD2JaT.js.map +1 -0
  145. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-x0moHcUM.js +2 -0
  146. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-x0moHcUM.js.map +1 -0
  147. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bu7BMlbI.js +2 -0
  148. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bu7BMlbI.js.map +1 -0
  149. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bxu-sgBm.js +2 -0
  150. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Bxu-sgBm.js.map +1 -0
  151. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry2.generated-DXDHgDsN.js → entry2.generated-dkzHCN26.js} +2 -2
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-dkzHCN26.js.map +1 -0
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-g1AVE90L.js +2 -0
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-g1AVE90L.js.map +1 -0
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{form-control-DjbUb602.js → form-control-DL1Hkox3.js} +2 -2
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{form-control-DjbUb602.js.map → form-control-DL1Hkox3.js.map} +1 -1
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{fragment-Bl3Rq38L.js → fragment-BzHC-hAJ.js} +2 -2
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{fragment-Bl3Rq38L.js.map → fragment-BzHC-hAJ.js.map} +1 -1
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-DQfpKM3w.js +2 -0
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-DQfpKM3w.js.map +1 -0
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-mw9QhBgu.js +3 -0
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-mw9QhBgu.js.map +1 -0
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/object-SRW-YaCA.js +2 -0
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/object-SRW-YaCA.js.map +1 -0
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-C5dQtr4Y.js +2 -0
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-C5dQtr4Y.js.map +1 -0
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-CIoriWtV.js +2 -0
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{semantic-observer-CdRbZHir.js.map → semantic-observer-CIoriWtV.js.map} +1 -1
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-CpTCQjY5.js → styles-BstOueoe.js} +2 -2
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-CpTCQjY5.js.map → styles-BstOueoe.js.map} +1 -1
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-BGfrCghL.js +4 -0
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-BGfrCghL.js.map +1 -0
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +1 -1
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +1 -1
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -1
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -1
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +1 -1
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper.js +1 -1
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
  184. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +1 -1
  185. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
  186. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +1 -1
  187. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  188. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  189. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
  190. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -1
  191. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  192. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  193. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
  194. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
  195. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +1 -1
  196. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  197. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  198. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
  199. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +1 -1
  200. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  201. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  202. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
  203. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +397 -339
  204. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
  205. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
  206. package/packages/client/types/motion/registry.d.ts +0 -13
  207. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-CytyCyfk.js.map +0 -1
  208. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-BTDXpEr6.js +0 -2
  209. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-BTDXpEr6.js.map +0 -1
  210. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-B4S_D6hV.js +0 -2
  211. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-B4S_D6hV.js.map +0 -1
  212. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-CrezWE-8.js +0 -2
  213. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-Bga8TngJ.js +0 -2
  214. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-C65CbsZn.js +0 -3
  215. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-C65CbsZn.js.map +0 -1
  216. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-Dfj6NCjU.js +0 -2
  217. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-Dfj6NCjU.js.map +0 -1
  218. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-xDNH-xzt.js +0 -2
  219. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-xDNH-xzt.js.map +0 -1
  220. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-D14VdwFn.js +0 -2
  221. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-D14VdwFn.js.map +0 -1
  222. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DvHNTjt1.js +0 -2
  223. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DvHNTjt1.js.map +0 -1
  224. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-qAeVl7dc.js +0 -2
  225. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dom-qAeVl7dc.js.map +0 -1
  226. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-DHq3udf7.js +0 -2
  227. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-2QEJDMe-.js +0 -2
  228. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-2QEJDMe-.js.map +0 -1
  229. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BB7wWQfT.js +0 -2
  230. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BB7wWQfT.js.map +0 -1
  231. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BqEMECZx.js +0 -2
  232. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C07Tn0r-.js +0 -2
  233. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C07Tn0r-.js.map +0 -1
  234. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C2gP0OfV.js +0 -2
  235. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C2gP0OfV.js.map +0 -1
  236. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CRj4-Ef1.js +0 -2
  237. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CRj4-Ef1.js.map +0 -1
  238. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSDZ4U92.js +0 -2
  239. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSDZ4U92.js.map +0 -1
  240. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CirM6w9Q.js +0 -2
  241. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CirM6w9Q.js.map +0 -1
  242. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D07X7NjA.js +0 -2
  243. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D07X7NjA.js.map +0 -1
  244. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DVIdOrvh.js +0 -2
  245. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DVIdOrvh.js.map +0 -1
  246. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_FlEfdN.js +0 -2
  247. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_FlEfdN.js.map +0 -1
  248. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DrmfusOi.js +0 -2
  249. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DrmfusOi.js.map +0 -1
  250. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DwYIFLsE.js +0 -2
  251. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DwYIFLsE.js.map +0 -1
  252. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-bEl9RRQt.js +0 -2
  253. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-bEl9RRQt.js.map +0 -1
  254. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-gxr2-89M.js +0 -2
  255. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-gxr2-89M.js.map +0 -1
  256. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-prmw8aRc.js +0 -2
  257. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-prmw8aRc.js.map +0 -1
  258. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-wEt8LYAv.js +0 -2
  259. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-wEt8LYAv.js.map +0 -1
  260. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xAXkL86X.js +0 -2
  261. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xAXkL86X.js.map +0 -1
  262. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-CXnPh3K6.js +0 -2
  263. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-CXnPh3K6.js.map +0 -1
  264. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-CwzLpL1f.js +0 -2
  265. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-CwzLpL1f.js.map +0 -1
  266. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-DXDHgDsN.js.map +0 -1
  267. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Dolv_r3b.js +0 -2
  268. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry2.generated-Dolv_r3b.js.map +0 -1
  269. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js +0 -2
  270. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js.map +0 -1
  271. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-ke2fZiWo.js +0 -3
  272. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-ke2fZiWo.js.map +0 -1
  273. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-DOw7dmi1.js +0 -2
  274. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-lock-DOw7dmi1.js.map +0 -1
  275. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-CdRbZHir.js +0 -2
  276. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-FNYDCNh6.js +0 -4
  277. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-FNYDCNh6.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.generated-prmw8aRc.js","names":[],"sources":["../../../../../../../../client/src/runtime/shell-breakpoint.ts","../../../../../../../../client/src/components/sidebar/contract.ts","../../../../../../../../client/src/components/sidebar/machine.ts","../../../../../../../../client/src/components/sidebar/styles.ts","../../../../../../../../client/src/components/sidebar/index.ts","../../../../../../../../client/src/components/sidebar/entry.generated.ts"],"sourcesContent":["const shellBreakpointPixels = (reference: HTMLElement): number => {\n const value = getComputedStyle(reference).getPropertyValue('--ui-shell-sidebar-breakpoint');\n const pixels = Number.parseFloat(value);\n return Number.isFinite(pixels) ? pixels : Number.POSITIVE_INFINITY;\n};\n\nexport {shellBreakpointPixels};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ELEVATION_REFERENCES,\n SURFACE_REFERENCES,\n type ElevationReference,\n type SurfaceReference,\n} from '../common';\n\nconst SIDEBAR_SIDES = ['left', 'right'] as const;\nconst SIDEBAR_PLACEMENTS = ['side', 'top'] as const;\nconst SIDEBAR_MOBILE_PRESENTATIONS = ['drawer', 'fullscreen'] as const;\nconst SIDEBAR_AS = ['div', 'aside', 'header'] as const;\nconst SIDEBAR_COLLAPSES = ['none', 'mobile', 'desktop', 'both'] as const;\nconst SIDEBAR_TOGGLE_ACTIONS = ['toggle', 'open', 'close', 'stash', 'expand'] as const;\nconst SIDEBAR_ITEM_AS = ['a', 'button'] as const;\nconst SIDEBAR_ITEM_VARIANTS = ['ghost', 'surface'] as const;\nconst SIDEBAR_ITEM_COLORS = ['neutral', 'accent'] as const;\nconst SIDEBAR_SURFACES = SURFACE_REFERENCES;\nconst SIDEBAR_ELEVATIONS = ELEVATION_REFERENCES;\n\nconst sidebarSchema = {\n as: oneOf(SIDEBAR_AS, 'div'),\n id: string.default('ui-sidebar'),\n placement: oneOf(SIDEBAR_PLACEMENTS, 'side'),\n mobilePresentation: oneOf(SIDEBAR_MOBILE_PRESENTATIONS, 'drawer'),\n side: oneOf(SIDEBAR_SIDES, 'left'),\n surface: oneOf(SIDEBAR_SURFACES, 'inherit'),\n elevation: oneOf(SIDEBAR_ELEVATIONS, 'none'),\n drawerElevation: oneOf(SIDEBAR_ELEVATIONS, '2'),\n divider: bool.default(true),\n sticky: bool.default(true),\n collapse: oneOf(SIDEBAR_COLLAPSES, 'mobile'),\n open: bool,\n stashed: bool,\n persist: bool.default(true),\n edgeReveal: bool.default(true),\n resizable: bool,\n class: string,\n};\n\nconst sidebarItemSchema = {\n as: oneOf(SIDEBAR_ITEM_AS, 'a'),\n variant: oneOf(SIDEBAR_ITEM_VARIANTS, 'ghost'),\n color: oneOf(SIDEBAR_ITEM_COLORS, 'neutral'),\n href: string,\n current: bool,\n disabled: bool,\n icon: string,\n iconTrailing: string,\n badge: string,\n class: string,\n};\n\nconst sidebarGroupSchema = {\n heading: string,\n expandable: bool,\n expanded: bool.default(true),\n icon: string,\n class: string,\n};\n\nconst sidebarToggleSchema = {\n target: string,\n icon: string.default('side_panel'),\n label: string.default('Toggle sidebar'),\n action: oneOf(SIDEBAR_TOGGLE_ACTIONS, 'toggle'),\n class: string,\n};\n\nconst sidebarPanelSchema = {\n class: string,\n};\n\nconst sidebarNavSchema = {\n label: string,\n labelled: string,\n class: string,\n};\n\ntype SidebarProps = SchemaToProps<typeof sidebarSchema>;\ntype SidebarAs = typeof SIDEBAR_AS[number];\ntype SidebarToggleAction = typeof SIDEBAR_TOGGLE_ACTIONS[number];\ntype SidebarCollapse = typeof SIDEBAR_COLLAPSES[number];\ntype SidebarItemColor = typeof SIDEBAR_ITEM_COLORS[number];\ntype SidebarItemVariant = typeof SIDEBAR_ITEM_VARIANTS[number];\ntype SidebarSide = typeof SIDEBAR_SIDES[number];\ntype SidebarPlacement = typeof SIDEBAR_PLACEMENTS[number];\ntype SidebarMobilePresentation = typeof SIDEBAR_MOBILE_PRESENTATIONS[number];\ntype SidebarSurface = SurfaceReference;\ntype SidebarElevation = ElevationReference;\n\nexport {\n SIDEBAR_AS,\n SIDEBAR_COLLAPSES,\n SIDEBAR_ITEM_AS,\n SIDEBAR_ITEM_COLORS,\n SIDEBAR_ITEM_VARIANTS,\n SIDEBAR_ELEVATIONS,\n SIDEBAR_SIDES,\n SIDEBAR_PLACEMENTS,\n SIDEBAR_MOBILE_PRESENTATIONS,\n SIDEBAR_TOGGLE_ACTIONS,\n SIDEBAR_SURFACES,\n sidebarGroupSchema,\n sidebarItemSchema,\n sidebarNavSchema,\n sidebarPanelSchema,\n sidebarSchema,\n sidebarToggleSchema,\n};\nexport type {\n SidebarAs,\n SidebarCollapse,\n SidebarElevation,\n SidebarItemColor,\n SidebarItemVariant,\n SidebarMobilePresentation,\n SidebarPlacement,\n SidebarProps,\n SidebarSide,\n SidebarSurface,\n SidebarToggleAction,\n};\n","import {createMachine, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {SidebarPlacement, SidebarProps} from './contract';\n\ntype SidebarMode = 'mobile' | 'desktop';\ntype SidebarPresentation = 'drawer' | 'layout';\ntype SidebarTarget = 'mobileClosed' | 'mobileOpen' | 'desktopExpanded' | 'desktopStashed' | 'desktopDrawer' | 'desktopTop';\n\ntype SidebarContext = {\n responsive: {mode: SidebarMode};\n layout: {desktopStashed: boolean; desktopDrawerOpen: boolean; width: string; height: string};\n transition: {target: SidebarTarget; presentation: SidebarPresentation};\n};\n\ntype SidebarMachineEffects = {\n prepareOpen(scope: MachineScope<SidebarContext, SidebarProps>): void;\n finishOpen(): void;\n prepareClose(scope: MachineScope<SidebarContext, SidebarProps>): void;\n finishClose(): void;\n sync(): void;\n syncProps(): void;\n};\n\ntype CreateSidebarMachineOptions = {\n props: SidebarProps;\n mode: SidebarMode;\n desktopStashed: boolean;\n effects: SidebarMachineEffects;\n};\n\nconst projectTransition = ({context}: {context: Readonly<SidebarContext>}) => ({\n mode: context.responsive.mode,\n presentation: context.transition.presentation,\n width: context.layout.width,\n height: context.layout.height,\n});\n\ntype SidebarTransitionData = ReturnType<typeof projectTransition>;\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'opening',\n project: projectTransition,\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n} satisfies TransitionHookDefinition<SidebarContext, SidebarProps, SidebarTransitionData, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'closing',\n project: projectTransition,\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n} satisfies TransitionHookDefinition<SidebarContext, SidebarProps, SidebarTransitionData, 'closing'>);\n\nconst sidebarHooks = [openingHook, closingHook] as const;\n\nconst targetFrom = (event: MachineEventObject, fallback: SidebarTarget): SidebarTarget => (\n typeof event.target === 'string' ? event.target as SidebarTarget : fallback\n);\nconst presentationFrom = (event: MachineEventObject): SidebarPresentation => event.presentation === 'layout' ? 'layout' : 'drawer';\n\nconst createSidebarMachine = ({props, mode, desktopStashed, effects}: CreateSidebarMachineOptions): Machine<SidebarContext, SidebarProps> => {\n const initial: SidebarTarget = mode === 'mobile'\n ? props.open ? 'mobileOpen' : 'mobileClosed'\n : props.placement === 'top' ? 'desktopTop' : desktopStashed ? 'desktopStashed' : 'desktopExpanded';\n\n const beginOpen = {target: 'opening', reduce: 'beginOpen', effects: 'prepareOpen'} as const;\n const beginClose = {target: 'closing', reduce: 'beginClose', effects: 'prepareClose'} as const;\n const syncProps = {reduce: 'replaceProps', effects: 'syncProps'} as const;\n\n return createMachine<SidebarContext, SidebarProps>({\n initial,\n on: {\n MODE: [\n {target: 'desktopTop', guard: 'toTop', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopDrawer', guard: 'toDesktopDrawer', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopStashed', guard: 'toDesktopStashed', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopExpanded', guard: 'toDesktop', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileOpen', guard: 'toMobileOpen', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileClosed', reduce: 'setMode', effects: 'sync'},\n ],\n RESIZE: {reduce: 'resize', effects: 'sync'},\n },\n states: {\n mobileClosed: {tags: ['mobile', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n mobileOpen: {tags: ['mobile', 'visible', 'expanded', 'open'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, PROPS_CHANGED: syncProps}},\n desktopExpanded: {tags: ['desktop', 'visible', 'expanded', 'open', 'layout'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, OPEN: {}, EXPAND: {}, PROPS_CHANGED: syncProps}},\n desktopStashed: {tags: ['desktop', 'stashed', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, TOGGLE: beginOpen, PROPS_CHANGED: syncProps}},\n desktopDrawer: {tags: ['desktop', 'stashed', 'visible', 'expanded', 'open', 'drawer'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n desktopTop: {tags: ['desktop', 'top', 'visible', 'expanded', 'open', 'layout'], on: {PROPS_CHANGED: syncProps}},\n opening: {\n tags: ['visible', 'expanded', 'transitioning'],\n on: {\n OPENING_DONE: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n OPENING_ERROR: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n CLOSE: beginClose,\n STASH: beginClose,\n TOGGLE: beginClose,\n PROPS_CHANGED: syncProps,\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n CLOSING_ERROR: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n OPEN: beginOpen,\n EXPAND: beginOpen,\n TOGGLE: beginOpen,\n PROPS_CHANGED: syncProps,\n },\n },\n },\n }, {\n props,\n context: {\n responsive: {mode},\n layout: {\n desktopStashed,\n desktopDrawerOpen: false,\n width: 'var(--spacing-sidebar-width)',\n height: '',\n },\n transition: {target: initial, presentation: initial === 'desktopExpanded' || initial === 'desktopTop' ? 'layout' : 'drawer'},\n },\n reducers: {\n beginOpen: ({context, event}) => {\n const target = targetFrom(event, 'mobileOpen');\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopDrawer'\n ? true\n : target === 'desktopExpanded' ? false : context.layout.desktopStashed,\n desktopDrawerOpen: target === 'desktopDrawer'\n || (target === 'mobileOpen' && context.layout.desktopStashed),\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n beginClose: ({context, event}) => {\n const target = targetFrom(event, 'mobileClosed');\n const closesDesktopDrawer = target === 'desktopStashed'\n || (target === 'mobileClosed' && context.layout.desktopStashed);\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopStashed' ? true : context.layout.desktopStashed,\n desktopDrawerOpen: closesDesktopDrawer ? false : context.layout.desktopDrawerOpen,\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n setMode: ({context, event}) => ({context: {...context, responsive: {mode: event.mode === 'desktop' ? 'desktop' : 'mobile'}}}),\n replaceProps: ({context, event}) => ({\n props: event.props as SidebarProps,\n context,\n }),\n resize: ({context, event}) => ({context: {\n ...context,\n layout: {\n ...context.layout,\n width: typeof event.width === 'string' ? event.width : context.layout.width,\n height: typeof event.height === 'string' ? event.height : context.layout.height,\n },\n }}),\n },\n guards: {\n toTop: ({event}) => event.mode === 'desktop' && event.placement === 'top',\n toDesktopDrawer: ({event}) => event.mode === 'desktop' && event.stashed === true && event.open === true,\n toDesktopStashed: ({event}) => event.mode === 'desktop' && event.stashed === true,\n toDesktop: ({event}) => event.mode === 'desktop',\n toMobileOpen: ({event}) => event.mode === 'mobile' && event.open === true,\n targetsMobileOpen: ({context}) => context.transition.target === 'mobileOpen',\n targetsMobileClosed: ({context}) => context.transition.target === 'mobileClosed',\n targetsDesktopDrawer: ({context}) => context.transition.target === 'desktopDrawer',\n targetsDesktopTop: ({context}) => context.transition.target === 'desktopTop',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n sync: effects.sync,\n syncProps: effects.syncProps,\n },\n });\n};\n\nexport {createSidebarMachine, sidebarHooks};\nexport type {CreateSidebarMachineOptions, SidebarContext, SidebarMachineEffects, SidebarMode, SidebarPresentation, SidebarTarget};\n","import {defineStyles} from '../../runtime';\nimport {elevationReferenceClasses} from '../common';\n\nconst SIDEBAR_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-resting-elevation');\nconst SIDEBAR_DRAWER_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-drawer-elevation');\n\nconst sidebarStyles = defineStyles({definition: {\n component: 'ui.sidebar',\n parts: {\n root: {\n base: [\n 'fixed inset-y-2 z-dialog flex min-h-0 w-[var(--spacing-sidebar-drawer-width)] flex-col overflow-hidden rounded-overlay-md',\n 'border-separator outline-none',\n 'data-[drawer-state=open]:bg-surface',\n 'data-[mobile-state=closed]:-translate-x-full data-[mobile-state=open]:translate-x-0',\n 'data-[responsive-mode=desktop]:z-auto data-[responsive-mode=desktop]:w-[var(--ui-sidebar-width,var(--spacing-sidebar-width))] data-[responsive-mode=desktop]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=closed]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=open]:translate-x-0',\n 'data-[responsive-mode=desktop]:data-[desktop-state=expanded]:inset-y-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:w-full data-[responsive-mode=desktop]:data-[desktop-state=expanded]:rounded-none',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=closed]:data-[sidebar-exiting=false]:hidden',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:fixed',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:z-dialog data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:h-auto',\n '[grid-area:sidebar]',\n 'data-[placement=top]:data-[responsive-mode=desktop]:relative data-[placement=top]:data-[responsive-mode=desktop]:inset-auto data-[placement=top]:data-[responsive-mode=desktop]:z-auto data-[placement=top]:data-[responsive-mode=desktop]:h-[var(--ui-sidebar-height,auto)] data-[placement=top]:data-[responsive-mode=desktop]:w-full data-[placement=top]:data-[responsive-mode=desktop]:max-w-none data-[placement=top]:data-[responsive-mode=desktop]:translate-x-0 data-[placement=top]:data-[responsive-mode=desktop]:flex-row data-[placement=top]:data-[responsive-mode=desktop]:overflow-visible',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:flex-1',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]>[data-ui-scroll-area]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-item]]:w-auto',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:items-center',\n ],\n variants: {\n elevation: SIDEBAR_ELEVATION_CLASSES,\n drawerElevation: SIDEBAR_DRAWER_ELEVATION_CLASSES,\n mobilePresentation: {\n drawer: '',\n fullscreen: [\n '[&:not([data-responsive-mode=desktop])]:inset-0',\n '[&:not([data-responsive-mode=desktop])]:h-dvh',\n '[&:not([data-responsive-mode=desktop])]:w-full',\n '[&:not([data-responsive-mode=desktop])]:max-w-none',\n '[&:not([data-responsive-mode=desktop])]:rounded-none',\n '[&:not([data-responsive-mode=desktop])]:border-0',\n ].join(' '),\n },\n divider: {\n true: 'data-[placement=side][data-side=left]:border-r-edge-divider data-[placement=side][data-side=right]:border-l-edge-divider data-[placement=top]:border-b-edge-divider',\n false: '',\n },\n side: {\n left: 'left-2 border-r-edge-divider data-[responsive-mode=desktop]:data-[desktop-state=expanded]:left-auto',\n right: 'right-2 border-l-edge-divider data-[mobile-state=closed]:translate-x-full data-[mobile-state=open]:translate-x-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:right-auto',\n },\n sticky: {\n true: 'data-[responsive-mode=desktop]:sticky data-[responsive-mode=desktop]:h-screen',\n false: 'data-[responsive-mode=desktop]:relative data-[responsive-mode=desktop]:h-auto data-[responsive-mode=desktop]:data-[sticky=false]:relative data-[responsive-mode=desktop]:data-[sticky=False]:relative data-[responsive-mode=desktop]:data-[sticky=false]:h-auto data-[responsive-mode=desktop]:data-[sticky=False]:h-auto',\n },\n },\n defaults: {\n elevation: 'none',\n drawerElevation: '2',\n mobilePresentation: 'drawer',\n divider: true,\n side: 'left',\n sticky: true,\n },\n },\n header: {\n base: 'flex min-h-control-xlg shrink-0 items-center gap-sidebar-header-gap px-sidebar-header-padding-inline py-sidebar-header-padding-block',\n },\n content: {\n base: [\n 'min-h-0 flex-1 overflow-hidden',\n ],\n },\n contentInner: {\n base: [\n 'grid min-w-0 content-start gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n '[&>[data-ui-separator]]:-mx-sidebar-content-padding-inline [&>[data-ui-separator]]:w-auto',\n ],\n },\n footer: {\n base: 'grid shrink-0 gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n },\n nav: {\n base: 'grid gap-sidebar-content-gap',\n },\n item: {\n base: [\n 'group/sidebar-item flex h-control-md w-full min-w-0 select-none items-center gap-2 rounded-control-md px-2',\n 'border border-transparent text-left text-sm font-medium outline-none',\n 'cursor-default',\n 'data-disabled:pointer-events-none',\n ],\n variants: {\n variant: {\n ghost: '',\n surface: 'data-current:border-transparent data-current:shadow-none',\n },\n color: {\n neutral: '',\n accent: '',\n },\n withActions: {\n true: 'pr-9',\n false: '',\n },\n },\n defaults: {\n variant: 'ghost',\n color: 'neutral',\n withActions: false,\n },\n },\n itemRow: {\n base: 'group/sidebar-item-row relative min-w-0',\n },\n itemIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-icon',\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n itemLabel: {\n base: 'min-w-0 flex-1',\n },\n itemBadge: {\n base: 'ml-auto shrink-0 rounded-control-sm bg-interaction-hover px-1.5 py-0.5 text-xs text-surface-ink-muted',\n },\n itemActions: {\n base: 'absolute right-1 top-1/2 z-10 flex -translate-y-1/2 items-center gap-1',\n },\n group: {\n base: 'relative grid gap-sidebar-content-gap',\n },\n groupSummary: {\n base: [\n 'block h-control-md cursor-default select-none list-none rounded-control-md text-xs font-medium text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n '[&::-webkit-details-marker]:hidden',\n ],\n variants: {\n hasActions: {\n true: '',\n false: '',\n },\n },\n defaults: {\n hasActions: false,\n },\n },\n groupSummaryInner: {\n base: 'flex h-full min-w-0 items-center gap-2 px-2',\n },\n groupHeading: {\n base: 'flex min-h-control-md min-w-0 select-none items-center gap-2 px-2 py-1 cursor-default',\n },\n groupIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-icon group-open/sidebar-group:rotate-90',\n },\n groupLabel: {\n base: 'min-w-0 flex-1',\n },\n groupHeadingLabel: {\n base: 'min-w-0 flex-1',\n },\n groupActions: {\n base: 'ml-auto flex shrink-0 items-center gap-1',\n },\n groupContent: {\n base: 'grid gap-sidebar-content-gap',\n },\n toggle: {\n base: [\n 'inline-flex h-control-md w-control-md shrink-0 items-center justify-center rounded-control-md text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n ],\n },\n toggleIcon: {\n base: 'size-icon fill-current text-current',\n },\n edge: {\n base: [\n 'fixed inset-y-0 z-30 hidden w-4 bg-transparent outline-none data-[state=visible]:block',\n 'focus-visible:ui-focus-ring-inset',\n 'data-[state=hidden]:hidden',\n ],\n variants: {\n side: {\n left: 'left-0',\n right: 'right-0',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n resizeHandle: {\n base: [\n 'absolute inset-y-0 z-10 hidden w-3 cursor-col-resize touch-none border-transparent outline-none group-data-[responsive-mode=desktop]/sidebar:block',\n 'hover:border-intent-neutral-edge-hover',\n 'focus-visible:ui-focus-ring-inset',\n 'data-disabled:hidden',\n 'group-data-[placement=top]/sidebar:inset-x-0 group-data-[placement=top]/sidebar:bottom-0 group-data-[placement=top]/sidebar:top-auto group-data-[placement=top]/sidebar:h-3 group-data-[placement=top]/sidebar:w-auto group-data-[placement=top]/sidebar:cursor-row-resize group-data-[placement=top]/sidebar:border-b-edge-divider group-data-[placement=top]/sidebar:border-r-0 group-data-[placement=top]/sidebar:border-l-0',\n ],\n variants: {\n side: {\n left: 'right-0 border-r-edge-divider',\n right: 'left-0 border-l-edge-divider',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n },\n}});\n\nexport {sidebarStyles};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineScope,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {decodeProps, type SchemaToProps} from '@client/runtime/codecs';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {type ResizeEvent} from '@client/runtime/drag-and-drop';\nimport {focusFirst, trapFocus} from '@client/runtime/focus-scope';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {lockDocumentScroll, unlockDocumentScroll} from '@client/runtime/scroll-lock';\nimport {shellBreakpointPixels} from '@client/runtime/shell-breakpoint';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {\n createMotionPlan,\n flip,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {replaceMotion} from '@client/motion/registry';\nimport {addListener, dispatch, type CleanupStack} from '@client/utils';\nimport {sidebarSchema, sidebarToggleSchema, type SidebarProps, type SidebarToggleAction} from './contract';\nimport {\n createSidebarMachine,\n sidebarHooks,\n type SidebarContext,\n type SidebarMode,\n type SidebarTarget,\n} from './machine';\nimport {sidebarStyles} from './styles';\n\ntype SidebarTransitionName = (typeof sidebarHooks)[number]['name'];\ntype SidebarTransition<TName extends SidebarTransitionName = SidebarTransitionName> = TransitionForHook<\n Extract<(typeof sidebarHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype SidebarController = {\n readonly id: string;\n isExpanded(): boolean;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n};\n\ntype SidebarEventDetail = {id?: string; action?: SidebarToggleAction; trigger?: HTMLElement | null};\nconst togglePropsSchema = {target: sidebarToggleSchema.target, action: sidebarToggleSchema.action, class: sidebarToggleSchema.class};\ntype SidebarToggleProps = SchemaToProps<typeof togglePropsSchema>;\ntype SidebarEdgeProps = SidebarToggleProps;\n\n/** Public Alpine API for `ui.sidebar`. @public */\ninterface UiSidebarApi {\n /** Sidebar id used by external controls. */\n readonly id: string;\n /** Whether the sidebar is fully open or currently opening. */\n readonly isOpen: boolean;\n /** Whether the observed shell is at or above the theme-generated shell breakpoint. */\n readonly isDesktop: boolean;\n /** Whether side placement is persistently stashed on desktop. */\n readonly isStashed: boolean;\n /** Current side-placement track width. */\n readonly width: string;\n /** Current top-placement track height. */\n readonly height: string;\n /** Opens the responsive drawer or temporarily reveals a stashed desktop sidebar. */\n open(event?: Event): void;\n /** Closes the responsive drawer or stashes an expanded desktop sidebar. */\n close(event?: Event): void;\n /** Reverses the current visibility intent, including an in-flight transition. */\n toggle(event?: Event): void;\n /** Permanently removes side placement from the desktop layout track. */\n stash(event?: Event): void;\n /** Permanently restores side placement to the desktop layout track. */\n expand(event?: Event): void;\n}\n\ntype SidebarData = AlpineMachine<SidebarContext, SidebarProps, typeof sidebarHooks> & UiSidebarApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n isExpanded(): boolean;\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle;\n};\n\ntype SidebarMotionTransition = MotionTransitionSubject & Readonly<{\n data: {mode: SidebarMode; presentation: 'drawer' | 'layout'};\n to: string;\n}>;\n\nconst controllers = new Set<SidebarController>();\n\nconst eventDetail = (event: Event): SidebarEventDetail => event instanceof CustomEvent && event.detail && typeof event.detail === 'object'\n ? event.detail as SidebarEventDetail\n : {};\n\nconst registerDocumentListeners = (() => {\n let registered = false;\n return (): void => {\n if (registered || typeof document === 'undefined') return;\n const route = (action: SidebarToggleAction) => (event: Event): void => {\n if (event.target instanceof Element && event.target.hasAttribute('data-ui-sidebar')) return;\n const detail = eventDetail(event);\n controllers.forEach((controller) => {\n if (!detail.id || detail.id === controller.id) controller.perform(detail.action ?? action, detail.trigger);\n });\n };\n document.addEventListener('ui:sidebar-open', route('open'));\n document.addEventListener('ui:sidebar-close', route('close'));\n document.addEventListener('ui:sidebar-toggle', route('toggle'));\n registered = true;\n };\n})();\n\nconst UiSidebar = (): TrellisAlpineComponent<SidebarData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupStack = [];\n let resizeObserver: ResizeObserver | null = null;\n let responsiveMode: SidebarMode = 'mobile';\n let activeTrigger: HTMLElement | null = null;\n let hasScrollLock = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Sidebar has not been initialized.');\n return rootEl;\n };\n const appEl = (): HTMLElement | null => root().closest<HTMLElement>('[data-ui-app]');\n const backdropEl = (): HTMLElement | null => appEl()?.querySelector<HTMLElement>('[data-ui-app-backdrop]') ?? null;\n const currentProps = (): Readonly<SidebarProps> => bridge.getSnapshot().props;\n const context = (): Readonly<SidebarContext> => bridge.getSnapshot().context;\n const target = (): SidebarTarget => context().transition.target;\n const isDrawer = (): boolean => bridge.hasTag('visible') && (\n bridge.hasTag('drawer')\n || responsiveMode === 'mobile'\n || (bridge.hasTag('transitioning') && context().transition.presentation === 'drawer')\n );\n const isModalDrawer = (): boolean => isDrawer() && responsiveMode === 'mobile';\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isMobileDrawerClosing = (): boolean => responsiveMode === 'mobile' && bridge.matches('closing');\n\n const storageKey = (): string => `trellis-ui-sidebar:${root().id || currentProps().id}:stashed`;\n const storedStashed = (props: SidebarProps): boolean | null => {\n if (!props.persist) return null;\n try {\n const value = localStorage.getItem(`trellis-ui-sidebar:${root().id || props.id}:stashed`);\n return value === null ? null : value === 'true';\n } catch { return null; }\n };\n const persist = (): void => {\n const props = currentProps();\n if (!props.persist || props.placement === 'top') return;\n try { localStorage.setItem(storageKey(), context().layout.desktopStashed ? 'true' : 'false'); } catch { /* storage is optional */ }\n };\n const setCanvasTransitioning = (active: boolean): void => {\n const app = appEl();\n if (active) app?.setAttribute('data-sidebar-transitioning', 'true');\n else app?.removeAttribute('data-sidebar-transitioning');\n };\n\n const restoreFocus = (): void => {\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !root().contains(active)) return;\n const fallback = activeTrigger ?? Array.from(document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle]'))\n .find((el) => !root().contains(el) && (!el.dataset.target || el.dataset.target === root().id));\n if (fallback && document.contains(fallback)) fallback.focus({preventScroll: true});\n else active.blur();\n };\n\n const syncToggles = (): void => {\n const expanded = isExpanded();\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle], [data-ui-sidebar-state-icon], [data-ui-sidebar-edge]').forEach((el) => {\n if (el.dataset.target && el.dataset.target !== root().id) return;\n if (!el.matches('[data-ui-sidebar-edge]')) el.dataset.state = expanded ? 'open' : 'closed';\n if (el.matches('[data-ui-sidebar-toggle], [data-ui-sidebar-edge]')) {\n el.setAttribute('aria-controls', root().id);\n el.setAttribute('aria-expanded', String(expanded));\n }\n });\n };\n\n const sync = ({reflectControlled = true}: {reflectControlled?: boolean} = {}): void => {\n const props = currentProps();\n const visible = bridge.hasTag('visible');\n const expanded = isExpanded();\n const stashed = context().layout.desktopStashed;\n const drawer = isDrawer();\n const el = root();\n if (reflectControlled) {\n if (responsiveMode === 'mobile') {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'open', value: expanded});\n } else {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'stashed', value: stashed});\n }\n }\n el.dataset.state = expanded ? 'open' : 'closed';\n el.dataset.mobileState = responsiveMode === 'mobile' && (expanded || isMobileDrawerClosing()) ? 'open' : 'closed';\n el.dataset.desktopState = stashed ? 'stashed' : 'expanded';\n el.dataset.drawerState = drawer ? 'open' : 'closed';\n el.dataset.responsiveMode = responsiveMode;\n el.dataset.placement = props.placement;\n el.dataset.mobilePresentation = props.mobilePresentation;\n el.dataset.side = props.side;\n el.hidden = !visible && !(responsiveMode === 'desktop' && props.placement === 'top');\n el.toggleAttribute('inert', !expanded);\n if (expanded) el.removeAttribute('aria-hidden'); else el.setAttribute('aria-hidden', 'true');\n const resizeDisabled = !props.resizable || responsiveMode !== 'desktop' || drawer;\n el.toggleAttribute('data-resize-disabled', resizeDisabled);\n const resizeHandle = el.querySelector<HTMLElement>('[data-ui-sidebar-resize-handle]');\n resizeHandle?.toggleAttribute('data-disabled', resizeDisabled);\n resizeHandle?.setAttribute('aria-disabled', String(resizeDisabled));\n el.style.setProperty('--ui-sidebar-width', context().layout.width);\n if (context().layout.height) el.style.setProperty('--ui-sidebar-height', context().layout.height);\n\n const app = appEl();\n if (app) {\n app.style.setProperty('--ui-app-sidebar-width', context().layout.width);\n if (context().layout.height) app.style.setProperty('--ui-app-sidebar-height', context().layout.height);\n app.dataset.sidebarState = stashed ? 'stashed' : 'expanded';\n app.dataset.sidebarSide = props.side;\n if (!bridge.hasTag('transitioning')) app.style.gridTemplateColumns = '';\n }\n const backdrop = backdropEl();\n if (backdrop) {\n const modalDrawer = isModalDrawer();\n backdrop.hidden = !modalDrawer;\n backdrop.dataset.state = modalDrawer ? 'open' : 'closed';\n }\n if (!drawer && !bridge.hasTag('transitioning')) {\n replaceMotion(el);\n el.style.opacity = '';\n el.style.transform = '';\n if (backdrop) {\n replaceMotion(backdrop);\n backdrop.style.opacity = '';\n }\n }\n const modalDrawer = isModalDrawer();\n if (modalDrawer && !hasScrollLock) { lockDocumentScroll(); hasScrollLock = true; }\n if (!modalDrawer && hasScrollLock) { unlockDocumentScroll(); hasScrollLock = false; }\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-edge]').forEach((edge) => {\n if (edge.dataset.target && edge.dataset.target !== root().id) return;\n const ownsEdgeReveal = drawer && activeTrigger === edge;\n const show = props.edgeReveal && responsiveMode === 'desktop' && props.placement === 'side' && stashed && (!drawer || ownsEdgeReveal);\n edge.dataset.state = show ? 'visible' : 'hidden';\n edge.hidden = !show;\n });\n syncToggles();\n persist();\n };\n\n const prepareOpen = ({context: next}: MachineScope<SidebarContext, SidebarProps>): void => {\n const {presentation} = next.transition;\n setCanvasTransitioning(presentation === 'layout');\n root().hidden = false;\n if (presentation !== 'layout') sync();\n if (isModalDrawer()) queueMicrotask(() => { if (isModalDrawer()) focusFirst(root()); });\n };\n const finishOpen = (): void => {\n setCanvasTransitioning(false);\n root().dataset.sidebarExiting = 'false';\n sync();\n dispatch({el: root(), name: 'ui:sidebar-open', detail: {id: root().id}});\n };\n const prepareClose = ({context: next}: MachineScope<SidebarContext, SidebarProps>): void => {\n const {presentation} = next.transition;\n setCanvasTransitioning(presentation === 'layout');\n restoreFocus();\n if (presentation === 'layout') root().dataset.sidebarExiting = 'true';\n if (presentation !== 'layout') sync();\n };\n const finishClose = (): void => {\n setCanvasTransitioning(false);\n root().dataset.sidebarExiting = 'false';\n sync();\n dispatch({el: root(), name: 'ui:sidebar-close', detail: {id: root().id}});\n activeTrigger = null;\n };\n\n const syncProps = (): void => {\n sync({reflectControlled: false});\n queueMicrotask(() => {\n const next = currentProps();\n if (responsiveMode === 'desktop') {\n if (next.placement === 'top') {\n if (!bridge.hasTag('top')) bridge.send({type: 'MODE', mode: 'desktop', placement: 'top', stashed: false, open: true});\n } else if (next.stashed !== context().layout.desktopStashed) {\n if (next.stashed) stash(); else expand();\n }\n } else if (next.open !== isExpanded()) {\n if (next.open) open(); else close();\n }\n });\n };\n\n const initialProps = (): SidebarProps => decodeProps({el: root(), schema: sidebarSchema});\n const bridge = createAlpineMachine({\n schema: sidebarSchema,\n hooks: sidebarHooks,\n createMachine: ({props}) => createSidebarMachine({\n props,\n mode: responsiveMode,\n desktopStashed: storedStashed(props) ?? props.stashed,\n effects: {prepareOpen, finishOpen, prepareClose, finishClose, sync, syncProps},\n }),\n });\n\n const desiredOpenTarget = (): {target: SidebarTarget; presentation: 'drawer' | 'layout'} | null => {\n const props = currentProps();\n if (responsiveMode === 'mobile') return {target: 'mobileOpen', presentation: 'drawer'};\n if (props.placement === 'top') return null;\n return context().layout.desktopStashed\n ? {target: 'desktopDrawer', presentation: 'drawer'}\n : {target: 'desktopExpanded', presentation: 'layout'};\n };\n const open = (event?: Event): void => {\n event?.preventDefault();\n if (event?.currentTarget instanceof HTMLElement) activeTrigger = event.currentTarget;\n const desired = desiredOpenTarget();\n if (desired) bridge.send({type: 'OPEN', ...desired});\n };\n const close = (event?: Event): void => {\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n bridge.send({type: 'CLOSE', target: responsiveMode === 'mobile' ? 'mobileClosed' : 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const expand = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'mobile') { open(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'EXPAND', target: 'desktopExpanded', presentation: 'layout'});\n };\n const stash = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'mobile') { close(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'STASH', target: 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const toggle = (event?: Event): void => {\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n if (responsiveMode === 'desktop' && currentProps().placement === 'side' && context().layout.desktopStashed && !isDrawer()) { expand(event); return; }\n if (isExpanded()) close(event); else open(event);\n };\n\n const reconcileMode = (width: number): void => {\n const props = currentProps();\n const observed = appEl() ?? root();\n const next: SidebarMode = width >= shellBreakpointPixels(observed) ? 'desktop' : 'mobile';\n if (next === responsiveMode) return;\n responsiveMode = next;\n const desktopStashed = context().layout.desktopStashed;\n bridge.send({\n type: 'MODE',\n mode: next,\n placement: props.placement,\n stashed: desktopStashed,\n open: next === 'desktop' && desktopStashed && context().layout.desktopDrawerOpen,\n });\n };\n\n const handleResize = (event: Event): void => {\n const detail = event instanceof CustomEvent ? event.detail as ResizeEvent : null;\n if (!detail || responsiveMode !== 'desktop' || isDrawer()) return;\n const props = currentProps();\n if (props.placement === 'top' && Number.isFinite(detail.height)) {\n bridge.send({type: 'RESIZE', height: `${Math.round(detail.height)}px`});\n root().style.setProperty('--ui-sidebar-height', `${Math.round(detail.height)}px`);\n appEl()?.style.setProperty('--ui-app-sidebar-height', `${Math.round(detail.height)}px`);\n } else if (Number.isFinite(detail.width)) {\n bridge.send({type: 'RESIZE', width: `${Math.round(detail.width)}px`});\n root().style.setProperty('--ui-sidebar-width', `${Math.round(detail.width)}px`);\n appEl()?.style.setProperty('--ui-app-sidebar-width', `${Math.round(detail.width)}px`);\n }\n };\n\n const closeEdgeReveal = (event: Event): void => {\n if (!(event instanceof PointerEvent)) return;\n if (responsiveMode !== 'desktop' || !isDrawer()) return;\n if (!activeTrigger?.matches('[data-ui-sidebar-edge]')) return;\n const next = event.relatedTarget;\n if (next instanceof Node && (root().contains(next) || activeTrigger.contains(next))) return;\n close(event);\n };\n\n const closeAfterMobileNavigation = (event: Event): void => {\n if (!(event instanceof MouseEvent) || responsiveMode !== 'mobile' || !isExpanded()) return;\n if (event.defaultPrevented || event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n const item = event.target instanceof Element ? event.target.closest<HTMLAnchorElement>('a[data-ui-sidebar-item]') : null;\n if (!item || !root().contains(item) || item.getAttribute('aria-disabled') === 'true') return;\n if (item.hasAttribute('download') || item.hasAttribute('target')) return;\n close();\n };\n\n let component!: TrellisAlpineComponent<SidebarData>;\n component = {\n ...bridge,\n get id() { return root().id || currentProps().id; },\n get isOpen() { return isExpanded(); },\n get isDesktop() { return responsiveMode === 'desktop'; },\n get isStashed() { return context().layout.desktopStashed; },\n get width() { return context().layout.width; },\n get height() { return context().layout.height; },\n init(): void {\n rootEl = this.$el;\n const observed = appEl() ?? root();\n responsiveMode = observed.getBoundingClientRect().width >= shellBreakpointPixels(observed) ? 'desktop' : 'mobile';\n bridge.connect(this.$el, this.snapshot);\n root().id ||= currentProps().id;\n controllers.add(component);\n registerDocumentListeners();\n resizeObserver = new ResizeObserver((entries) => reconcileMode(entries[0]?.contentRect.width ?? observed.clientWidth));\n resizeObserver.observe(observed);\n cleanup.push(addDismissableLayer({isEnabled: isDrawer, roots: () => [root()], onDismiss: close}));\n addListener({target: document, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent) || !isDrawer()) return;\n if (event.key === 'Escape') close(event);\n else if (isModalDrawer()) trapFocus(event, root());\n }, cleanup});\n addListener({target: root(), event: 'ui:resize', handler: handleResize, cleanup});\n addListener({target: root(), event: 'ui:resize-end', handler: handleResize, cleanup});\n addListener({target: root(), event: 'pointerleave', handler: closeEdgeReveal, cleanup});\n addListener({target: root(), event: 'click', handler: closeAfterMobileNavigation, cleanup});\n root().querySelectorAll<HTMLDetailsElement>('details[data-ui-sidebar-group]').forEach((group) => addListener({target: group, event: 'toggle', handler: () => {\n group.dataset.state = group.open ? 'open' : 'closed';\n dispatch({el: group, name: 'ui:sidebar-group-change', detail: {open: group.open}});\n }, cleanup}));\n sync();\n },\n destroy(): void {\n setCanvasTransitioning(false);\n controllers.delete(component);\n resizeObserver?.disconnect();\n resizeObserver = null;\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n if (hasScrollLock) unlockDocumentScroll();\n hasScrollLock = false;\n bridge.disconnect();\n rootEl = null;\n },\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle {\n if (transition.data.presentation === 'layout') {\n const canvas = Array.from(appEl()?.querySelectorAll<HTMLElement>(\n ':scope > [data-ui-app-header], :scope > [data-ui-app-main], :scope > [data-ui-app-footer]',\n ) ?? []);\n return flip(transition, {\n target: canvas,\n update: sync,\n role: 'layoutSpring',\n });\n }\n const side = root().dataset.side === 'right' ? 1 : -1;\n const opening = transition.to === 'opening';\n const outside = side === 1\n ? 'translateX(calc(100% + 0.5rem))'\n : 'translateX(calc(-100% - 0.5rem))';\n let plan = createMotionPlan(transition).animate({\n opacity: opening ? [0, 1] : 1,\n transform: opening ? [outside, 'none'] : outside,\n }).role('presence');\n const backdrop = backdropEl();\n if (backdrop && transition.data.mode === 'mobile') plan = plan.with(backdrop, {\n opacity: opening ? [0, 1] : 0,\n }).role('feedback');\n return plan.play();\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? initialProps();\n return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.root, props, className: props.class}), {'data-ui-sidebar': ''}]});\n },\n open, close, toggle, stash, expand,\n isExpanded,\n perform(action, trigger) {\n if (action === 'open' || (action === 'toggle' && !isExpanded())) activeTrigger = trigger ?? null;\n ({open, close, toggle, stash, expand})[action]?.();\n },\n syncToggles,\n };\n return component;\n};\n\nconst UiSidebarToggle = (): TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}> => {\n let props = {} as SidebarToggleProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.toggle, props: {}, className: props.class}), {'data-ui-sidebar-toggle': '', ':data-target': () => props.target, ':data-action': () => props.action, '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-toggle', {detail: {id: props.target || 'ui-sidebar', action: props.action, trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}>;\n};\n\nconst UiSidebarEdge = (): TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}> => {\n let props = {} as SidebarEdgeProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.edge, props: {side: this.$el.dataset.side || 'left'}, className: props.class}), {'data-ui-sidebar-edge': '', ':data-target': () => props.target, '@pointerenter': (event: Event) => this.trigger(event), '@pointerleave': (event: Event) => this.leave(event), '@focus': (event: Event) => this.trigger(event), '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-open', {detail: {id: props.target || 'ui-sidebar', action: 'open', trigger: this.$el}}));\n },\n leave(event?: Event) {\n const next = event instanceof PointerEvent ? event.relatedTarget : null;\n const sidebar = document.getElementById(props.target || 'ui-sidebar');\n if (next instanceof Node && sidebar?.contains(next)) return;\n document.dispatchEvent(new CustomEvent('ui:sidebar-close', {detail: {id: props.target || 'ui-sidebar', action: 'close', trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}>;\n};\n\nconst registerSidebar = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiSidebar', UiSidebar)(AlpineInstance);\n defineAlpineData('UiSidebarEdge', UiSidebarEdge)(AlpineInstance);\n defineAlpineData('UiSidebarToggle', UiSidebarToggle)(AlpineInstance);\n};\n\nexport {registerSidebar, UiSidebar, UiSidebarEdge, UiSidebarToggle};\nexport type {SidebarController, SidebarData, SidebarTransition, UiSidebarApi};\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 {registerResizableCapability} from '../../capabilities/resizable';\nimport {registerSidebar as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSidebar = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerSidebar};\nexport default registerSidebar;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{f as e,l as t,n,t as r}from"./codecs-Cb1ns_47.js";import{o as i,s as a,t as o}from"./dom-qAeVl7dc.js";import{t as s}from"./alpine-machine-BTDXpEr6.js";import{t as c}from"./alpine-data-CytyCyfk.js";import{t as l}from"./machine-Dqut4h89.js";import{n as u,t as d}from"./props-change-2xfsIAEN.js";import{n as f,r as p}from"./form-control-DjbUb602.js";import{l as m,o as h}from"./common-Dfj6NCjU.js";var g=[`trailing`,`leading`],_=h,v=m,y={value:e.default(`on`),name:e,label:e,description:e,checked:r(n,`prop-checked`),disabled:r(n,`prop-disabled`),required:r(n,`prop-required`),invalid:r(n,`prop-invalid`),placement:t(g,`trailing`),variant:t(v,`default`),size:t(_,`md`),inputClass:e,trackClass:e,thumbClass:e,contentClass:e,labelClass:e,descriptionClass:e,class:e};({...y});var b=[],x=e=>e.checked===!0,S=e=>({event:t})=>x(t)===e,C=({event:e})=>d(e,`checked`),w=e=>t=>{let n=u(t.event)?.props;return C(t)&&n?.checked===e},T=e=>({context:{...e.context,selection:{checked:x(e.event)}}}),E=e=>({context:{...e.context,selection:{checked:!e.context.selection.checked}}}),D=e=>{let t=u(e.event)?.props;if(t)return{props:t,context:C(e)?{...e.context,selection:{checked:t.checked}}:e.context}},O=({props:e,effects:t})=>l({initial:e.checked?`checked`:`unchecked`,on:{NATIVE_CHANGED:[{target:`checked`,guard:S(!0),reduce:`setChecked`,effects:`sync`},{target:`unchecked`,guard:S(!1),reduce:`setChecked`,effects:`sync`}],SET_CHECKED:[{target:`checked`,guard:S(!0),reduce:`setChecked`,effects:[`sync`,`emitInput`,`emitChange`]},{target:`unchecked`,guard:S(!1),reduce:`setChecked`,effects:[`sync`,`emitInput`,`emitChange`]}],TOGGLE:[{target:`checked`,guard:({context:e})=>!e.selection.checked,reduce:`toggle`,effects:[`sync`,`emitInput`,`emitChange`]},{target:`unchecked`,guard:({context:e})=>e.selection.checked,reduce:`toggle`,effects:[`sync`,`emitInput`,`emitChange`]}],PROPS_CHANGED:[{target:`checked`,guard:w(!0),reduce:`reconcileProps`,effects:`sync`},{target:`unchecked`,guard:w(!1),reduce:`reconcileProps`,effects:`sync`},{reduce:`reconcileProps`,effects:`sync`}]},states:{unchecked:{tags:[`unchecked`]},checked:{tags:[`checked`]}}},{context:{selection:{checked:e.checked}},props:e,reducers:{setChecked:T,toggle:E,reconcileProps:D},effects:t}),k=()=>{let e=null,t=null,n=[],r=!1,c=()=>{if(!e)throw Error(`Switch has not been initialized.`);return e},l=()=>{if(!t)throw Error(`Switch requires a native checkbox input.`);return t},u=()=>h.getCommittedSnapshot(),d=()=>{let e=u(),t=e.props,n=e.context.selection.checked,r=n?`checked`:`unchecked`,o=l();o.checked=n,t.name||o.removeAttribute(`name`),p({input:o,state:{name:t.name,value:t.value,disabled:t.disabled,required:t.required,invalid:t.invalid}}),o.setAttribute(`role`,`switch`),i({el:o,attr:`aria-checked`,value:n?`true`:`false`}),i({el:c(),attr:`data-state`,value:r}),a({el:c(),attr:`data-checked`,present:n}),f({el:c(),state:t}),i({el:o,attr:`data-state`,value:r}),a({el:o,attr:`data-checked`,present:n});let s=c().querySelector(`[data-ui-switch-track]`);s&&(i({el:s,attr:`data-state`,value:r}),a({el:s,attr:`data-checked`,present:n}),f({el:s,state:{disabled:t.disabled,invalid:t.invalid}}));let d=c().querySelector(`[data-ui-switch-thumb]`);d&&(i({el:d,attr:`data-state`,value:r}),a({el:d,attr:`data-checked`,present:n}),a({el:d,attr:`data-disabled`,present:t.disabled}),a({el:d,attr:`data-invalid`,present:t.invalid}))},m=e=>{r=!0;try{l().dispatchEvent(new Event(e,{bubbles:!0}))}finally{r=!1}},h=s({schema:y,hooks:b,createMachine:({props:e})=>O({props:e,effects:{sync:d,emitInput:()=>m(`input`),emitChange:()=>m(`change`)}})});return{...h,init(){if(e=this.$el,t=c().querySelector(`[data-ui-switch-input]`),!t)throw Error(`Switch requires a native checkbox input.`);h.connect(e,this.snapshot),o({target:t,event:`change`,handler:()=>{r||h.send({type:`NATIVE_CHANGED`,checked:l().checked})},cleanup:n}),o({target:t,event:`keydown`,handler:e=>{!(e instanceof KeyboardEvent)||e.key!==`Enter`||l().disabled||(e.preventDefault(),h.send(`TOGGLE`))},cleanup:n}),d()},destroy(){n.splice(0).reverse().forEach(e=>e()),h.disconnect(),e=null,t=null},get checked(){return h.getCommittedSnapshot().context.selection.checked},setChecked(e){e!==h.getCommittedSnapshot().context.selection.checked&&h.send({type:`SET_CHECKED`,checked:e})}}},A=c(`UiSwitch`,k),j=new WeakSet,M=e=>{j.has(e)||(j.add(e),A(e))};export{k as n,M as t};
2
- //# sourceMappingURL=entry.generated-wEt8LYAv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.generated-wEt8LYAv.js","names":[],"sources":["../../../../../../../../client/src/components/switch/contract.ts","../../../../../../../../client/src/components/switch/machine.ts","../../../../../../../../client/src/components/switch/index.ts","../../../../../../../../client/src/components/switch/entry.generated.ts"],"sourcesContent":["import {attribute, bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {CONTROL_SIZES, DEFAULT_VARIANTS, type ControlSize, type DefaultVariant} from '../common';\n\nconst SWITCH_PLACEMENTS = ['trailing', 'leading'] as const;\nconst SWITCH_SIZES = CONTROL_SIZES;\nconst SWITCH_VARIANTS = DEFAULT_VARIANTS;\n\ntype SwitchPlacement = typeof SWITCH_PLACEMENTS[number];\ntype SwitchSize = ControlSize;\ntype SwitchVariant = DefaultVariant;\n\nconst switchControlSchema = {\n value: string.default('on'),\n name: string,\n label: string,\n description: string,\n checked: attribute(bool, 'prop-checked'),\n disabled: attribute(bool, 'prop-disabled'),\n required: attribute(bool, 'prop-required'),\n invalid: attribute(bool, 'prop-invalid'),\n placement: oneOf(SWITCH_PLACEMENTS, 'trailing' as SwitchPlacement),\n variant: oneOf(SWITCH_VARIANTS, 'default' as SwitchVariant),\n size: oneOf(SWITCH_SIZES, 'md' as SwitchSize),\n inputClass: string,\n trackClass: string,\n thumbClass: string,\n contentClass: string,\n labelClass: string,\n descriptionClass: string,\n class: string,\n};\n\nconst switchSchema = {\n ...switchControlSchema,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n fieldClass: string,\n};\n\ntype SwitchControlProps = SchemaToProps<typeof switchControlSchema>;\ntype SwitchProps = SchemaToProps<typeof switchSchema>;\n\nexport {\n SWITCH_PLACEMENTS,\n SWITCH_SIZES,\n SWITCH_VARIANTS,\n switchControlSchema,\n switchSchema,\n};\nexport type {\n SwitchPlacement,\n SwitchControlProps,\n SwitchProps,\n SwitchSize,\n SwitchVariant,\n};\n","import {createMachine, propsChanged, propsChangedEvent, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport type {SwitchControlProps} from './contract';\n\ntype SwitchContext = {selection: {checked: boolean}};\ntype SwitchEffects = {\n sync(scope: MachineScope<SwitchContext, SwitchControlProps>): void;\n emitInput(scope: MachineScope<SwitchContext, SwitchControlProps>): void;\n emitChange(scope: MachineScope<SwitchContext, SwitchControlProps>): void;\n};\nconst switchHooks = [] as const;\nconst eventChecked = (event: MachineEventObject): boolean => event.checked === true;\nconst eventIs = (checked: boolean) => ({event}: MachineScope<SwitchContext, SwitchControlProps>): boolean => (\n eventChecked(event) === checked\n);\nconst checkedPropChanged = ({event}: MachineScope<SwitchContext, SwitchControlProps>): boolean => (\n propsChanged<SwitchControlProps>(event, 'checked')\n);\nconst nextPropsAre = (checked: boolean) => (scope: MachineScope<SwitchContext, SwitchControlProps>): boolean => {\n const next = propsChangedEvent<SwitchControlProps>(scope.event)?.props;\n return checkedPropChanged(scope) && next?.checked === checked;\n};\nconst setChecked = (scope: MachineScope<SwitchContext, SwitchControlProps>) => ({\n context: {...scope.context, selection: {checked: eventChecked(scope.event)}},\n});\nconst toggle = (scope: MachineScope<SwitchContext, SwitchControlProps>) => ({\n context: {...scope.context, selection: {checked: !scope.context.selection.checked}},\n});\nconst reconcileProps = (scope: MachineScope<SwitchContext, SwitchControlProps>) => {\n const next = propsChangedEvent<SwitchControlProps>(scope.event)?.props;\n if (!next) return;\n return {\n props: next,\n context: checkedPropChanged(scope)\n ? {...scope.context, selection: {checked: next.checked}}\n : scope.context,\n };\n};\n\nconst createSwitchMachine = ({props, effects}: {props: SwitchControlProps; effects: SwitchEffects}): Machine<SwitchContext, SwitchControlProps> => createMachine<SwitchContext, SwitchControlProps>({\n initial: props.checked ? 'checked' : 'unchecked',\n on: {\n NATIVE_CHANGED: [\n {target: 'checked', guard: eventIs(true), reduce: 'setChecked', effects: 'sync'},\n {target: 'unchecked', guard: eventIs(false), reduce: 'setChecked', effects: 'sync'},\n ],\n SET_CHECKED: [\n {target: 'checked', guard: eventIs(true), reduce: 'setChecked', effects: ['sync', 'emitInput', 'emitChange']},\n {target: 'unchecked', guard: eventIs(false), reduce: 'setChecked', effects: ['sync', 'emitInput', 'emitChange']},\n ],\n TOGGLE: [\n {target: 'checked', guard: ({context}) => !context.selection.checked, reduce: 'toggle', effects: ['sync', 'emitInput', 'emitChange']},\n {target: 'unchecked', guard: ({context}) => context.selection.checked, reduce: 'toggle', effects: ['sync', 'emitInput', 'emitChange']},\n ],\n PROPS_CHANGED: [\n {target: 'checked', guard: nextPropsAre(true), reduce: 'reconcileProps', effects: 'sync'},\n {target: 'unchecked', guard: nextPropsAre(false), reduce: 'reconcileProps', effects: 'sync'},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {unchecked: {tags: ['unchecked']}, checked: {tags: ['checked']}},\n}, {\n context: {selection: {checked: props.checked}},\n props,\n reducers: {setChecked, toggle, reconcileProps},\n effects,\n});\n\nexport {createSwitchMachine, switchHooks};\nexport type {SwitchContext, SwitchEffects};\n","import type Alpine from 'alpinejs';\n\nimport {type AlpineMachine, createAlpineMachine, defineAlpineData, type MachineSnapshot, type TrellisAlpineComponent} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {addListener, setAttribute, setPresence, type CleanupStack} from '@client/utils';\nimport {switchControlSchema, type SwitchControlProps} from './contract';\nimport {createSwitchMachine, switchHooks, type SwitchContext} from './machine';\n\n/** Public Alpine API for `ui.switch` and `ui.switch.control`. @public */\ninterface UiSwitchApi {\n /** Current settled checked state. */\n readonly checked: boolean;\n /** Set and commit the checked state. */\n setChecked(checked: boolean): void;\n}\n\ntype SwitchData = AlpineMachine<SwitchContext, SwitchControlProps, typeof switchHooks> & UiSwitchApi & {\n init(): void;\n destroy(): void;\n};\n\nconst UiSwitch = (): TrellisAlpineComponent<SwitchData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let inputEl: HTMLInputElement | null = null;\n let listeners: CleanupStack = [];\n let dispatching = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Switch has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n if (!inputEl) throw new Error('Switch requires a native checkbox input.');\n return inputEl;\n };\n const snapshot = (): MachineSnapshot<SwitchContext, SwitchControlProps> => bridge.getCommittedSnapshot();\n const syncDom = (): void => {\n const current = snapshot();\n const props = current.props;\n const checked = current.context.selection.checked;\n const state = checked ? 'checked' : 'unchecked';\n const native = input();\n\n native.checked = checked;\n if (!props.name) native.removeAttribute('name');\n syncNativeControl({input: native, state: {\n name: props.name,\n value: props.value,\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n }});\n native.setAttribute('role', 'switch');\n setAttribute({el: native, attr: 'aria-checked', value: checked ? 'true' : 'false'});\n\n setAttribute({el: root(), attr: 'data-state', value: state});\n setPresence({el: root(), attr: 'data-checked', present: checked});\n syncControlPresence({el: root(), state: props});\n setAttribute({el: native, attr: 'data-state', value: state});\n setPresence({el: native, attr: 'data-checked', present: checked});\n\n const track = root().querySelector<HTMLElement>('[data-ui-switch-track]');\n if (track) {\n setAttribute({el: track, attr: 'data-state', value: state});\n setPresence({el: track, attr: 'data-checked', present: checked});\n syncControlPresence({el: track, state: {disabled: props.disabled, invalid: props.invalid}});\n }\n const thumb = root().querySelector<HTMLElement>('[data-ui-switch-thumb]');\n if (thumb) {\n setAttribute({el: thumb, attr: 'data-state', value: state});\n setPresence({el: thumb, attr: 'data-checked', present: checked});\n setPresence({el: thumb, attr: 'data-disabled', present: props.disabled});\n setPresence({el: thumb, attr: 'data-invalid', present: props.invalid});\n }\n };\n const dispatchNative = (type: 'input' | 'change'): void => {\n dispatching = true;\n try { input().dispatchEvent(new Event(type, {bubbles: true})); } finally { dispatching = false; }\n };\n const bridge = createAlpineMachine({\n schema: switchControlSchema,\n hooks: switchHooks,\n createMachine: ({props}) => createSwitchMachine({props, effects: {\n sync: syncDom,\n emitInput: () => dispatchNative('input'),\n emitChange: () => dispatchNative('change'),\n }}),\n });\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n inputEl = root().querySelector<HTMLInputElement>('[data-ui-switch-input]');\n if (!inputEl) throw new Error('Switch requires a native checkbox input.');\n bridge.connect(rootEl, this.snapshot);\n addListener({target: inputEl, event: 'change', handler: () => {\n if (!dispatching) bridge.send({type: 'NATIVE_CHANGED', checked: input().checked});\n }, cleanup: listeners});\n addListener({target: inputEl, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent) || event.key !== 'Enter' || input().disabled) return;\n event.preventDefault();\n bridge.send('TOGGLE');\n }, cleanup: listeners});\n syncDom();\n },\n destroy(): void {\n listeners.splice(0).reverse().forEach((cleanup) => cleanup());\n bridge.disconnect();\n rootEl = null;\n inputEl = null;\n },\n get checked(): boolean {\n return bridge.getCommittedSnapshot().context.selection.checked;\n },\n setChecked(checked: boolean): void {\n if (checked === bridge.getCommittedSnapshot().context.selection.checked) return;\n bridge.send({type: 'SET_CHECKED', checked});\n },\n };\n};\n\nconst registerSwitch = defineAlpineData('UiSwitch', UiSwitch);\n\nexport {registerSwitch, UiSwitch};\nexport type {SwitchData, UiSwitchApi};\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 {registerSwitch as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSwitch = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerSwitch};\nexport default registerSwitch;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{d as e,n as t}from"./motion-ke2fZiWo.js";import{t as n}from"./capability-motion-CrezWE-8.js";import{f as r,l as i,n as a}from"./codecs-Cb1ns_47.js";import{i as o,n as s,r as c,s as l}from"./dom-qAeVl7dc.js";import{i as u,t as d}from"./alpine-machine-BTDXpEr6.js";import{t as f}from"./alpine-data-CytyCyfk.js";import{t as ee}from"./collection-navigation-CfTZUJrL.js";import{t as p}from"./machine-Dqut4h89.js";import{n as m,t as h}from"./props-change-2xfsIAEN.js";import{t as g}from"./semantic-observer-CdRbZHir.js";import{A as _,P as v}from"./common-Dfj6NCjU.js";var y=[`manual`,`automatic`],b=v;[...b];var x=[`auto`,..._],S={id:r.default(`ui-tabs`),animate:a,defaultValue:r,value:r,activation:i(y,`manual`),orientation:i(b,`horizontal`),gap:i(x,`auto`),loop:a.default(!0),panels:r,class:r},C=[u({name:`switching`,state:`switching`,project:e=>e.context.change,onDone:`SWITCH_DONE`,onError:`SWITCH_ERROR`,sends:{select:e=>({type:`SELECT`,value:e})}})],w=e=>typeof e==`string`?e:``,T=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[],E=e=>!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`string`)),D=e=>m(e.event)?.props??e.props,O=e=>e.event.type===`ITEMS_CHANGED`?{values:T(e.event.values),disabledValues:T(e.event.disabledValues),panelIds:E(e.event.panelIds)}:e.context.collection,k=(e,t)=>e&&t.values.includes(e)&&!t.disabledValues.includes(e)?e:t.values.find(e=>!t.disabledValues.includes(e))??``,A=e=>{let t=O(e);if(e.event.type===`SELECT`){let n=w(e.event.value);return n&&t.values.includes(n)&&!t.disabledValues.includes(n)?n:e.context.selection.value}return e.event.type===`PROPS_CHANGED`&&h(e.event,`value`)?k(D(e).value,t):k(e.context.selection.value,t)},j=e=>e.context.selection.value!==A(e),M=(e,t)=>({target:e,guard:j,reduce:`applySwitch`,effects:t}),te=({props:e,context:t,effects:n})=>p({initial:`stable`,on:{DOM_INVALIDATED:{effects:`syncDom`}},states:{stable:{tags:[`stable`],on:{SELECT:M(`switching`,`prepareSwitch`),PROPS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncProps`}],ITEMS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncItems`}]}},switching:{tags:[`switching`,`transitioning`],on:{SWITCH_DONE:{target:`stable`,effects:`finishSwitch`},SWITCH_ERROR:{target:`stable`,effects:`finishSwitch`},SELECT:M(`switching`,`prepareSwitch`),PROPS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncProps`}],ITEMS_CHANGED:[M(`switching`,`prepareSwitch`),{reduce:`reconcile`,effects:`syncItems`}]}}}},{context:t,props:e,reducers:{applySwitch:e=>{let t=O(e),n=A(e);return{props:D(e),context:{...e.context,selection:{value:n},change:{previousValue:e.context.selection.value,value:n,panelId:t.panelIds[n]??``},collection:t}}},reconcile:e=>({props:D(e),context:{...e.context,collection:O(e),selection:{value:A(e)}}})},effects:{prepareSwitch:n.prepareSwitch,finishSwitch:n.finishSwitch,syncDom:n.syncDom,syncProps:n.syncProps,syncItems:n.syncItems}}),ne=`ui-tabs`,N=e=>e?`active`:`inactive`,P=e=>e.trim().toLowerCase().replace(/[^a-z0-9_-]+/g,`-`).replace(/^-+|-+$/g,``)||`tab`,F=(e,t)=>`${e}-tab-${P(t)}`,I=(e,t)=>`${e}-panel-${P(t)}`,L=e=>e instanceof HTMLButtonElement||e instanceof HTMLAnchorElement,R=e=>Array.from(new Set(e)),z=()=>{let n=null,r=null,i=null,a=null,u=null,f,p=null,m=()=>{if(!n)throw Error(`Tabs has not been initialized.`);return n},h=()=>m().id||m().dataset.id||m().dataset.owner||ne,_=e=>e.closest(`[data-ui-tabs]`)===m(),v=e=>s({value:e}),y=()=>Array.from(m().querySelectorAll(`[data-ui-tabs-list]`)).find(_)??null,b=e=>{let t=(e??y())?.dataset.variant;return t===`subtle`||t===`segmented`||t===`pills`?t:`line`},x=e=>(e??y())?.dataset.size===`sm`?`sm`:`md`,w=e=>{let t=(e??y())?.dataset.orientation;return t===`vertical`||t===`horizontal`?t:M().orientation},T=()=>{let e=h(),t=t=>t.dataset.uiTabsOwner===e||t.dataset.owner===e,n=Array.from(m().querySelectorAll(`[data-ui-tabs-panel]`)).filter(_),r=M().panels;if(r){let e=document.querySelector(r);e&&n.push(...Array.from(e.querySelectorAll(`[data-ui-tabs-panel]`)).filter(t))}return n.push(...Array.from(document.querySelectorAll(`[data-ui-tabs-panel][data-ui-tabs-owner="${CSS.escape(e)}"]`)).filter(t)),R(n)},E=e=>T().find(t=>t.dataset.value===e)??null,D=()=>Array.from(m().querySelectorAll(`[data-ui-tabs-tab]`)).filter(_).map((e,t)=>L(e)?(e.dataset.value||=`tab-${t+1}`,{tab:e,value:e.dataset.value,disabled:v(e.dataset.disabled)||e.hasAttribute(`disabled`),panel:E(e.dataset.value)}):null).filter(e=>e!==null),O=e=>D().find(t=>t.value===e)??null,k=e=>{if(!(e instanceof Element))return null;let t=e.closest(`[data-ui-tabs-tab]`);return t&&_(t)?D().find(e=>e.tab===t)??null:null},A=()=>{let e=D();return{values:e.map(e=>e.value),disabledValues:e.filter(e=>e.disabled).map(e=>e.value),panelIds:Object.fromEntries(e.map(e=>[e.value,e.panel?.id||I(e.tab.dataset.uiTabsOwner||e.tab.dataset.owner||h(),e.value)]))}},j=e=>{let t=A(),n=D().find(e=>v(e.tab.dataset.selected)||e.tab.getAttribute(`aria-selected`)===`true`),r=T().find(e=>v(e.dataset.selected)),i=e.value||e.defaultValue||n?.value||r?.dataset.value||``,a=i&&t.values.includes(i)&&!t.disabledValues.includes(i)?i:t.values.find(e=>!t.disabledValues.includes(e))??``;return{selection:{value:a},change:{previousValue:``,value:a,panelId:t.panelIds[a]??``},collection:t}},M=()=>p??J.getCommittedSnapshot().props,P=()=>J.getCommittedSnapshot().context,z=()=>P().selection.value,B=()=>{let e=D();return e.find(e=>document.activeElement===e.tab||e.tab.dataset.active===`true`)?.tab??e.find(e=>e.value===z())?.tab??null},V=e=>e.querySelector(`:scope > [data-ui-tabs-indicator]`),H=e=>{if(!(e instanceof HTMLElement))return null;let t=e.closest(`[data-ui-tabs-list]`),n=t?V(t):null;if(!t||!n)return null;n.hidden=!1;let r=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=t.dataset.orientation===`vertical`,o=t.dataset.variant===`line`,s=o&&a?2:i.width,c=o&&!a?2:i.height,l=o?Number.parseFloat(getComputedStyle(t).getPropertyValue(`--border-width-edge-separator`))||1:0,u=o&&a?r.left-(s-l)/2:i.left,d=o&&!a?r.bottom-(c+l)/2:i.top;return{indicator:n,styles:{height:c,left:u-r.left,top:d-r.top,width:s}}},U=e=>{e.indicator.style.height=`${e.styles.height}px`,e.indicator.style.left=`${e.styles.left}px`,e.indicator.style.top=`${e.styles.top}px`,e.indicator.style.width=`${e.styles.width}px`},W=e=>{let t=V(e);if(!t)return;let n=D().find(t=>t.value===z()&&t.tab.closest(`[data-ui-tabs-list]`)===e);if(!n){t.hidden=!0,e.dataset.uiTabsReady=``;return}let r=H(n.tab);r&&U(r),e.dataset.uiTabsReady=``},G=()=>{let e=M();!m().id&&e.id&&(m().id=e.id),m().dataset.orientation=e.orientation,m().dataset.activation=e.activation,m().dataset.value=z(),l({el:m(),attr:`data-animate`,present:e.animate})},re=e=>{let t=w(e);e.setAttribute(`role`,`tablist`),e.dataset.orientation=t,t===`vertical`?e.setAttribute(`aria-orientation`,`vertical`):e.removeAttribute(`aria-orientation`)},ie=e=>{let t=e.value===z(),n=e.tab.closest(`[data-ui-tabs-list]`),r=w(n),i=b(n),a=x(n),o=e.tab.dataset.uiTabsOwner||e.tab.dataset.owner||h(),s=e.tab.querySelector(`[data-ui-tabs-tab-selected-icon]`),c=N(t),u=B();e.tab.id||=F(o,e.value),e.tab.dataset.state=c,e.tab.dataset.orientation=r,e.tab.dataset.variant=i,e.tab.dataset.size=a,e.tab.setAttribute(`role`,`tab`),e.tab.setAttribute(`aria-selected`,t?`true`:`false`),e.tab.setAttribute(`aria-controls`,e.panel?.id||I(o,e.value)),e.tab.tabIndex=e.tab===u?0:-1,l({el:e.tab,attr:`data-selected`,present:t}),s&&(s.style.visibility=t?`visible`:`hidden`),l({el:e.tab,attr:`data-disabled`,present:e.disabled}),e.disabled?(e.tab.setAttribute(`aria-disabled`,`true`),e.tab.tabIndex=-1):e.tab.removeAttribute(`aria-disabled`),e.tab instanceof HTMLButtonElement&&(e.tab.disabled=e.disabled)},ae=e=>{let t=e.dataset.value||``,n=t===z(),r=e.dataset.uiTabsOwner||e.dataset.owner||h(),i=I(r,t);t&&!e.id&&(e.id=i),t&&!e.hasAttribute(`data-ui-key`)&&e.setAttribute(`data-ui-key`,e.id||i),e.dataset.state=N(n),e.dataset.orientation=M().orientation,e.setAttribute(`role`,`tabpanel`),e.setAttribute(`aria-labelledby`,F(r,t)),e.hasAttribute(`tabindex`)||(e.tabIndex=0),e.hidden=!n,l({el:e,attr:`data-selected`,present:n})},K=({indicator:e=!1}={})=>{G();let t=y();t&&re(t),D().forEach(ie),T().forEach(ae),e&&t&&W(t)},oe=()=>{c({el:m(),name:`ui:change`,detail:{value:z()}})},se=(e,t)=>{c({el:e,name:`ui:tabs:activate`,detail:{value:t,panelId:E(t)?.id??``}})},q=()=>{K({indicator:!0}),Z(),Q()},J=d({schema:S,hooks:C,resolveTransitionElement:({data:e})=>O(e.value)?.tab??null,createMachine:({props:e})=>{p=e;let t=j(e);return p=null,te({props:e,context:t,effects:{prepareSwitch:({event:e})=>{K(),e.type===`SELECT`&&oe()},finishSwitch:()=>K(),syncDom:q,syncProps:q,syncItems:()=>{K({indicator:!0}),Q()}}})}}),Y=()=>{if(!r)throw Error(`Tabs navigation has not been initialized.`);return r},X=(e,{tab:t,motion:n=!0}={})=>{let r=z();J.send({type:`SELECT`,value:e,motion:n}),z()!==r&&t&&se(t,z())},ce=e=>{let t=k(e.target);if(t){if(t.disabled){e.preventDefault();return}X(t.value,{tab:t.tab})}},le=e=>{u=k(e.target)?.tab??null,window.clearTimeout(f),f=window.setTimeout(()=>{u=null,f=void 0})},ue=e=>{let t=k(e.target);!t||e.target!==t.tab||t.disabled||(Y().activateItem({el:t.tab}),M().activation===`automatic`&&u!==t.tab?X(t.value,{tab:t.tab,motion:!1}):K())},de=e=>{let t=k(e.target);if(!t||e.target!==t.tab)return;if(e.key===` `&&t.tab instanceof HTMLAnchorElement){e.preventDefault(),X(t.value,{tab:t.tab,motion:!1});return}let n=w(t.tab.closest(`[data-ui-tabs-list]`));if(e.key===`Home`){e.preventDefault(),Y().focusFirst();return}if(e.key===`End`){e.preventDefault(),Y().focusLast();return}if(n===`vertical`){e.key===`ArrowDown`?(e.preventDefault(),Y().focusNext()):e.key===`ArrowUp`&&(e.preventDefault(),Y().focusPrevious());return}e.key===`ArrowRight`?(e.preventDefault(),o({el:m()})?Y().focusPrevious():Y().focusNext()):e.key===`ArrowLeft`&&(e.preventDefault(),o({el:m()})?Y().focusNext():Y().focusPrevious())},fe=()=>{let e=A();J.send({type:`ITEMS_CHANGED`,...e})},Z=()=>{i?.();let e=[m()],t=M().panels;if(t){let n=document.querySelector(t);n&&e.push(n)}i=g({targets:R(e),read:A,onChange:fe,observer:{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`data-value`,`data-disabled`,`disabled`,`data-ui-tabs-owner`,`data-owner`,`data-variant`,`data-size`,`data-orientation`,`data-gap`,`id`]}})},Q=()=>{if(a?.disconnect(),typeof ResizeObserver>`u`)return;a=new ResizeObserver(()=>{if(!n)return;let e=y();e&&W(e)});let e=y();e&&a.observe(e),D().forEach(e=>a?.observe(e.tab))},$;return $={...J,get value(){return this.snapshot.current?.context.selection.value??``},init(){n=this.$el,J.connect(this.$el,this.snapshot),r=ee({root:m,itemSelector:`[data-ui-tabs-tab]`,isDisabled:e=>!_(e)||v(e.dataset.disabled)||e.hasAttribute(`disabled`),loop:()=>M().loop}),K({indicator:!0}),Z(),Q()},destroy(){i?.(),i=null,a?.disconnect(),a=null,window.clearTimeout(f),u=null,f=void 0,J.disconnect(),r=null,n=null},transitionIndicator(n){if(!(n.el instanceof Element))return Promise.resolve();let r=H(n.el);return r?!n.props.animate||n.event.motion===!1?(U(r),e()):t(n,{target:r.indicator,update:()=>U(r),role:`layoutSpring`,transition:{bounce:0}}):Promise.resolve()},get root(){return{"data-ui-tabs":``,":data-orientation":()=>M().orientation,":data-activation":()=>M().activation,":data-animate":()=>M().animate?``:void 0,"@pointerdown":le,"@click":ce,"@focusin":ue,"@keydown":e=>{e instanceof KeyboardEvent&&de(e)}}},select(e){X(e)},isActive(e){return this.snapshot.current?.context.selection.value===e}},$},B=f(`UiTabs`,z),V=new WeakSet,H=e=>{V.has(e)||(V.add(e),n(e),B(e))};export{z as n,H as t};
2
- //# sourceMappingURL=entry.generated-xAXkL86X.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.generated-xAXkL86X.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 {\n INTERACTION_TREATMENTS,\n LAYOUT_SPACES,\n ORIENTATIONS,\n SELECTION_COLORS,\n type ControlSize,\n type LayoutSpace,\n type Orientation,\n} 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[];\nconst TABS_COLORS = SELECTION_COLORS;\nconst TABS_INTERACTIONS = INTERACTION_TREATMENTS;\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 TabsColor = typeof TABS_COLORS[number];\ntype TabsInteraction = typeof TABS_INTERACTIONS[number];\ntype TabsProps = SchemaToProps<typeof tabsSchema>;\n\nexport {\n TABS_ACTIVATIONS,\n TABS_COLORS,\n TABS_INTERACTIONS,\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 TabsColor,\n TabsGap,\n TabsListOrientation,\n TabsInteraction,\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, type TransitionHookDefinition} 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({\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} satisfies TransitionHookDefinition<TabsContext, TabsProps, TabsTransitionData, 'switching'>);\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';\n\nimport {\n type AlpineMachine,\n type BindingObject,\n createAlpineMachine,\n createCollectionNavigation,\n type CollectionNavigation,\n defineAlpineData,\n type MachineSnapshot,\n observeSemanticChanges,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {\n flip,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {noopHandle} from '@client/motion/animate';\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 TabsTransitionName = (typeof tabsHooks)[number]['name'];\ntype TabsTransition<TName extends TabsTransitionName = TabsTransitionName> = TransitionForHook<\n Extract<(typeof tabsHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype IndicatorFrame = {indicator: HTMLElement; styles: {\n height: number;\n left: number;\n top: number;\n width: number;\n}};\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): IndicatorFrame | 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 applyIndicatorFrame = (frame: IndicatorFrame): void => {\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 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) applyIndicatorFrame(frame);\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 selectValue(item.value, {tab: item.tab});\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) {\n applyIndicatorFrame(frame);\n return noopHandle();\n }\n\n return flip(transition, {\n target: frame.indicator,\n update: () => applyIndicatorFrame(frame),\n role: 'layoutSpring',\n transition: {bounce: 0},\n });\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 = defineAlpineData('UiTabs', UiTabs);\n\nexport {registerTabs, UiTabs};\nexport type {TabsActivateDetail, TabsChangeDetail, TabsTransition, 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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"}
@@ -1,2 +0,0 @@
1
- import{t as e}from"./capability-motion-CrezWE-8.js";import{c as t,f as n,l as r,n as i,o as a,s as o,u as s}from"./codecs-Cb1ns_47.js";import{a as c,s as l}from"./alpine-machine-BTDXpEr6.js";import{n as u}from"./dom-invalidation-Dw6clnS4.js";import{t as d}from"./fragment-Bl3Rq38L.js";import{t as f}from"./alpine-data-CytyCyfk.js";import{a as ee,i as p,n as te,r as ne,t as re}from"./cursor-data-source-DvHNTjt1.js";import{t as ie}from"./drag-and-drop-DHq3udf7.js";import{t as m}from"./capability-sortable-C65CbsZn.js";import{L as h,y as g}from"./common-Dfj6NCjU.js";import{t as _}from"./capability-resizable-Bga8TngJ.js";var v=[`none`,`single`,`multiple`],y=[`compact`,`default`,`comfortable`],b=[`none`,`row`,`grid`],x=[`onChange`,`onEnd`],S=[``,`left`,`right`],C=[`none`,`ascending`,`descending`,`other`],w=[`start`,`center`,`end`],T={fetchUrl:n,cursor:i,query:o(null),totalRows:t.min(0).default(0),rowHeight:t.min(2**-52).default(36),bufferSize:t.min(1).default(50),overscan:t.min(0).default(0),initialIndex:t.min(0).default(0),startParam:n.default(`start`),countParam:n.default(`count`),totalParam:n.default(`total`),totalHeader:n.default(`X-Trellis-Total-Items`),assetsHeader:n.default(`X-Trellis-Assets`),metaSelector:n.default(`template[data-ui-virtualizer-meta]`),selection:r(v,`none`),selectionValue:o({mode:`ids`,ids:[]}),selectOnRowClick:i,rowKey:n.default(`id`),stickyHeader:i.default(!0),resizableColumns:i.default(!0),reorderableColumns:i.default(!0),sortableColumns:i.default(!0),minColumnWidth:t.min(0).default(60),defaultColumnWidth:t.min(2**-52).default(180),maxColumnWidth:o(null),resizeMode:r(x,`onChange`),color:r(h,`neutral`),interaction:r(g,`edge`),dragPreviewPosition:n.trim.default(`preserve`),density:r(y,`default`),border:r(b,`row`),empty:n.default(`No rows found.`),class:n,controlsClass:n,viewportClass:n,headerClass:n,rowClass:n,cellClass:n,footerClass:n,emptyClass:n};t.min(2**-52).default(180),t.min(0).default(60),o(null),r(S,``),r(C,`none`),i.default(!0),i.default(!0),r(w,`start`),o([]),o([]),t.min(0).default(0),n.default(`id`),n.default(`ui.data-grid.row`),n.default(`ui.data-grid.cell`),t.min(0).default(0),t.min(1).default(1),r(w,`start`);var E=(e,t,n)=>{let r=e.getAttribute(t);if(r===null||r.trim()===``)return n;let i=Number(r);return Number.isFinite(i)?i:n},D=(e,t,n)=>{let r=e.getAttribute(t);if(r===null||r.trim()===``)return n;let i=Number(r);return Number.isFinite(i)&&i>0?i:null},O=(e,t,n)=>{if(!e.hasAttribute(t))return n;let r=e.getAttribute(t)??``;return r===``||[`true`,`1`,`yes`,`on`].includes(r.toLowerCase())},ae=(e,t)=>{let n=new Set;return e.flatMap(e=>{let r=(e.dataset.column??``).trim();if(!r)throw Error(`Data Grid columns require a non-empty key.`);if(e.hasAttribute(`data-hidden`))return[];if(n.has(r))throw Error(`Data Grid column key "${r}" is duplicated.`);n.add(r);let i=Math.max(0,E(e,`data-min-width`,t.minWidth)),a=D(e,`data-max-width`,t.maxWidth),o=E(e,`data-width`,t.width),s=Math.min(a??1/0,Math.max(i,o)),c=e.dataset.pinned===`left`||e.dataset.pinned===`right`?e.dataset.pinned:null,l=[`ascending`,`descending`,`other`].includes(e.dataset.sort??``)?e.dataset.sort:`none`,u=[`center`,`end`].includes(e.dataset.align??``)?e.dataset.align:`start`;return[{key:r,label:e.dataset.label??e.textContent?.trim()??r,width:s,minWidth:i,maxWidth:a,hidden:!1,pinned:c,sortable:O(e,`data-sortable`,!1),sort:l,resizable:O(e,`data-resizable`,t.resizable),reorderable:O(e,`data-reorderable`,t.reorderable),align:u,cellClass:e.dataset.cellClass??``,element:e}]})},oe=e=>e.map(({width:e})=>`${e}px`).join(` `),k=e=>e.map(({element:e,...t})=>t),A=e=>{let t=new Map,n=new Map,r=0;return e.forEach(e=>{e.pinned===`left`&&(t.set(e.key,r),r+=e.width)}),r=0,[...e].reverse().forEach(e=>{e.pinned===`right`&&(n.set(e.key,r),r+=e.width)}),{left:t,right:n}},j=e=>globalThis.CSS?.escape?globalThis.CSS.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`),se=(e,t)=>{let n=A(t),r=`z-index:2;background-color:var(--ui-surface-color);`;return t.map((t,i)=>{let a=`[data-ui-data-grid-scope="${j(e)}"]`,o=`[data-column="${j(t.key)}"]`,s=`${a} [data-ui-data-grid-column-header]${o},${a} [data-ui-data-grid-cell]${o}`,c=t.pinned===`left`?`position:sticky;left:${n.left.get(t.key)??0}px;${r}`:t.pinned===`right`?`position:sticky;right:${n.right.get(t.key)??0}px;${r}`:``;return`${s}{grid-column:${i+1};${c}}`}).join(``)},M=(e,t)=>{if(t===`multiple`&&typeof e==`object`&&e&&e.mode===`query`){let t=e;if(typeof t.token==`string`&&Number.isFinite(t.total))return{mode:`query`,token:t.token,total:Math.max(0,Math.floor(t.total??0)),except:[...new Set(Array.isArray(t.except)?t.except.filter(e=>typeof e==`string`):[])]}}let n=typeof e==`object`&&e&&e.mode===`ids`&&Array.isArray(e.ids)?e.ids.filter(e=>typeof e==`string`):[],r=[...new Set(n)];return{mode:`ids`,ids:t===`single`?r.slice(0,1):t===`none`?[]:r}},N=(e,t)=>e.mode===`query`?!e.except.includes(t):e.ids.includes(t),ce=(e,t,n,r)=>{let i=M(e,n);if(n===`none`)return{selection:i,added:[],removed:[]};let a=N(i,t),o=r??!a;if(a===o)return{selection:i,added:[],removed:[]};if(i.mode===`query`){let e=o?i.except.filter(e=>e!==t):[...i.except,t];return{selection:{...i,except:e},added:o?[t]:[],removed:o?[]:[t]}}return{selection:{mode:`ids`,ids:n===`single`&&o?[t]:o?[...i.ids,t]:i.ids.filter(e=>e!==t)},added:o?[t]:[],removed:o?[]:[t]}},le=(e,t,n)=>{let r=e.findIndex(e=>e.key===t);if(r<0||!e[r]?.reorderable)return null;let i=e[r]?.pinned??null;if(!e.flatMap((e,t)=>e.pinned===i?[t]:[]).includes(n))return null;let a=[...e],[o]=a.splice(r,1);return o?(a.splice(n,0,o),a):null},P=(e,t=0)=>Math.max(t,Math.floor(Number.isFinite(e)?e:t)),ue=`a,button,input,select,textarea,[contenteditable],[role="button"],[role="link"]`,F=e=>{let t=null,n=null,r=null,i=null,o=null,f=null,m=[],h=[],g=0,_={mode:`ids`,ids:[]},v=``,y=null,b=0,x=0,S=!1,C=null,w=!1,E=null,D=null,O=null,A=[],j=null,F=null,I=null,L=!1,R=!1,z=new Map,B=[],de=new WeakMap,fe=new WeakMap,V=ne(p),H=(e,n)=>{t?.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:n}))},pe=(e,t,n)=>{let r=n.get(e)??[];r.length&&e.classList.remove(...r);let i=[...new Set(t.split(/\s+/).filter(Boolean))];i.length&&e.classList.add(...i),n.set(e,i)},me=()=>({width:$.props.defaultColumnWidth,minWidth:$.props.minColumnWidth,maxWidth:$.props.maxColumnWidth,resizable:$.props.resizableColumns,reorderable:$.props.reorderableColumns}),he=()=>ae(Array.from(t?.querySelectorAll(`[data-ui-data-grid-column-header]`)??[]),me()),ge=e=>{let t=e.element.querySelector(`[data-ui-data-grid-column-label]`),n=e.element.querySelector(`[data-ui-data-grid-sort-button]`);if(t)if(e.sortable&&!n){let n=document.createElement(`button`);n.type=`button`,n.setAttribute(`data-ui-data-grid-sort-button`,``),n.className=e.element.dataset.sortButtonClass??``;let r=document.createElement(`span`);r.setAttribute(`data-ui-data-grid-sort-indicator`,``),r.setAttribute(`aria-hidden`,`true`),t.replaceWith(n),n.append(t,r)}else !e.sortable&&n&&n.replaceWith(t)},U=()=>Array.from(t?.querySelectorAll(`[data-ui-data-grid-row]`)??[]),_e=e=>{i?.style.setProperty(`width`,`${e.getBoundingClientRect().width}px`)},W=()=>{U().forEach(e=>{let t=e.dataset.rowKey??``,n=$.props.selection!==`none`&&t!==``&&N(_,t);e.toggleAttribute(`data-selected`,n),$.props.selection===`none`?e.removeAttribute(`aria-selected`):e.setAttribute(`aria-selected`,String(n))})},G=()=>{if(!t||!f)return;t.style.setProperty(`--ui-data-grid-template`,oe(m));let e=t.dataset.uiDataGridScope??``;f.textContent=se(e,m),r?.setAttribute(`aria-colcount`,String(m.length));let n=t.querySelector(`[data-ui-data-grid-header-row]`);n&&_e(n);let i=n?.querySelector(`[data-ui-data-grid-column-indicator]`);i&&n?.append(i),U().forEach(e=>{let t=Array.from(e.children).filter(e=>e instanceof HTMLElement&&e.hasAttribute(`data-ui-data-grid-cell`)),n=new Map(t.flatMap(e=>e instanceof HTMLElement&&e.hasAttribute(`data-ui-data-grid-cell`)?[[e.dataset.column??``,e]]:[]));m.forEach(({key:t})=>{let r=n.get(t);r&&(r.hidden=!1,e.append(r))});let r=new Set(m.map(({key:e})=>e));t.forEach(t=>{r.has(t.dataset.column??``)||(t.hidden=!0,t.removeAttribute(`aria-colindex`),t.removeAttribute(`data-pinned`),e.append(t))})}),m.forEach((e,t)=>{ge(e),e.element.setAttribute(`aria-colindex`,String(t+1)),e.pinned?e.element.dataset.pinned=e.pinned:e.element.removeAttribute(`data-pinned`),e.sortable?e.element.setAttribute(`aria-sort`,e.sort):e.element.removeAttribute(`aria-sort`),e.element.dataset.disabled=String(!e.reorderable||!$.props.reorderableColumns);let n=e.element.querySelector(`[data-ui-data-grid-column-label-owned]`);n&&(n.textContent=e.label);let r=e.element.querySelector(`[data-ui-data-grid-column-preview-label]`);r&&(r.textContent=e.label);let i=e.element.querySelector(`[data-ui-data-grid-sort-indicator]`);i&&(i.textContent=e.sort===`ascending`?`↑`:e.sort===`descending`?`↓`:``),e.element.querySelector(`[data-ui-data-grid-resize-handle]`)?.setAttribute(`aria-label`,`Resize ${e.label||e.key} column`)}),U().forEach(e=>pe(e,$.props.rowClass,de)),t.querySelectorAll(`[data-ui-data-grid-cell]`).forEach(e=>{let t=m.findIndex(({key:t})=>t===e.dataset.column);if(t>=0){let n=m[t];e.setAttribute(`aria-colindex`,String(t+1)),e.dataset.align=n.align,pe(e,`${$.props.cellClass} ${n.cellClass}`,fe),n.pinned?e.dataset.pinned=n.pinned:e.removeAttribute(`data-pinned`)}})},ve=(e,t)=>{let n=new Map(e.map(e=>[e.key,e])),r=new Map(t.map(e=>[e.key,e]));return{previous:e,columns:t,added:t.filter(({key:e})=>!n.has(e)).map(({key:e})=>e),removed:e.filter(({key:e})=>!r.has(e)).map(({key:e})=>e),changed:t.flatMap(e=>{let t=n.get(e.key);if(!t)return[];let r=Object.keys(e).filter(n=>n!==`key`&&!l(t[n],e[n]));return r.length?[{key:e.key,fields:r}]:[]})}},ye=()=>{if(L=!1,!t||S)return;let e=he(),n=k(e),r=!l(A,n),i=m.length!==e.length||m.some((t,n)=>t.element!==e[n]?.element),a=i||m.some((t,n)=>{let r=e[n];return!r||t.key!==r.key||t.resizable!==r.resizable||t.minWidth!==r.minWidth||t.maxWidth!==r.maxWidth});if(r||i||R){let t=A;m=e,A=n;let i=a||R;R=!1,G(),i&&Ee(),r&&H(`ui:data-grid-columns-change`,ve(t,n))}if($.props.totalRows!==g&&(J($.props.totalRows),E&&(t.dataset.totalItems=String(g))),E){let e=t.hasAttribute(`data-query`)?$.props.query:D;l(O,e)||(O=c(e),E.setQuery(e))}},K=()=>{L||(L=!0,queueMicrotask(ye))},q=()=>{!t||!o||(E||(t.toggleAttribute(`data-loading`,x>0),t.toggleAttribute(`data-empty`,g===0)),t.dataset.selection=$.props.selection,r?.setAttribute(`aria-rowcount`,String(g+1)),t.style.setProperty(`--ui-data-grid-row-height`,`${$.props.rowHeight}px`),t.style.setProperty(`--ui-data-grid-total-height`,`${Math.max(g*$.props.rowHeight,$.props.rowHeight)}px`),(!E||g>0)&&(o.style.height=`var(--ui-data-grid-total-height)`),W())},J=e=>{let t=P(e);t!==g&&(g=t,q(),H(`ui:data-grid-total-change`,{totalRows:g}))},be=e=>p.compute({axes:{y:{total:g,itemSize:$.props.rowHeight,viewportSize:$.props.bufferSize*$.props.rowHeight,scrollOffset:e*$.props.rowHeight,buffer:0}}}),xe=e=>{if(g===0)return[];let t=P($.props.bufferSize,1),n=Math.min(g-1,Math.floor(Math.max(0,e)/$.props.rowHeight)),r=Math.floor(n/t)*t,i=Math.floor((g-1)/t)*t,a=[r-t,r,r+t].map(e=>Math.min(i,Math.max(0,e)));return r===0&&i>t?a.splice(0,3,0,t,Math.min(i,t*2)):r===i&&i>t&&a.splice(0,3,Math.max(0,i-t*2),i-t,i),[...new Set(a)].map(be)},Se=e=>{let t=e.axes.y;if(!t)throw Error(`Data Grid requires a vertical virtual window.`);let n=new URL($.props.fetchUrl,document.baseURI);return n.searchParams.set($.props.startParam,String(t.start)),n.searchParams.set($.props.countParam,String(t.count)),n.searchParams.set($.props.totalParam,String(t.total)),/^[a-z][a-z\d+.-]*:/i.test($.props.fetchUrl)||$.props.fetchUrl.startsWith(`//`)?n.href:`${n.pathname}${n.search}${n.hash}`},Ce=()=>{if(x=Math.max(0,x-1),q(),x>0||y===null||S)return;let e=y;y=null,Y(e)},we=async(n,r,i)=>{let a=r.axes.y;if(!a)return;let o=new AbortController;z.set(n.key,o),x+=1,q(),t?.removeAttribute(`data-error`),H(`ui:data-grid-load-start`,{window:r});try{let s=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${i.requestGeneration}`,c=await fetch(Se(r),{method:`GET`,headers:{Accept:`text/html`,"X-Trellis-Virtualizer":`true`,"X-Trellis-Request-ID":s},signal:o.signal});if(!c.ok&&c.status!==204){V.fail(i),t?.setAttribute(`data-error`,``),H(`ui:data-grid-error`,{window:r,status:c.status});return}let l=await ee(c,$.props);if(V.pending(n.key)!==i||S||!await d(e,n.element,l.html,{assets:l.assets,shouldReplace:()=>V.pending(n.key)===i&&!S})||(l.totalItems!==null&&J(l.totalItems),!V.commit(i,r)))return;n.element.style.height=`${a.count*$.props.rowHeight}px`,n.element.style.transform=`translateY(${a.translateOffset}px)`,G(),W(),H(`ui:data-grid-load`,{window:r,start:a.start,count:a.count,end:a.start+a.count})}catch(e){if(o.signal.aborted)return;V.fail(i),t?.setAttribute(`data-error`,``),H(`ui:data-grid-error`,{window:r,status:0,error:e})}finally{z.get(n.key)===o&&z.delete(n.key),Ce()}},Y=t=>{if(E||$.props.cursor)return;if(x>0){y=t;return}let n=xe(t),r=Math.min(Math.max(0,g-1),Math.floor(Math.max(0,t)/$.props.rowHeight)),i=n.find(e=>{let t=e.axes.y;return t&&r>=t.start&&r<t.start+t.count})??n[0];if(i&&v!==i.key){v=i.key;let e=i.axes.y;H(`ui:data-grid-range`,{start:e.start,count:e.count,end:e.start+e.count,window:i})}if(n.length===0){h.forEach(t=>void d(e,t.element,``));return}let a=new Set;n.forEach(e=>{let t=h.find(t=>V.mounted(t.key)?.key===e.key);t&&a.add(t)});let o=h.filter(e=>!a.has(e));n.forEach(e=>{if(h.some(t=>V.mounted(t.key)?.key===e.key))return;let t=o.shift();if(!t)return;let n=V.begin(t.key,e);n&&we(t,e,n)})},X=()=>{z.forEach(e=>e.abort()),z.clear(),x=0,y=null,v=``,V.invalidate(),h.forEach(t=>{t.element.style.height=``,t.element.style.transform=``,d(e,t.element,``)}),q()},Z=(e,n)=>{_=M(e,$.props.selection),w=!0,$.props.selectionValue=_,t&&s({el:t,schema:T,key:`selectionValue`,value:_}),w=!1,W(),H(`ui:data-grid-selection-change`,{selection:_,added:n?.added??[],removed:n?.removed??[]})},Q=(e,t)=>{let n=ce(_,String(e),$.props.selection,t);n.added.length===0&&n.removed.length===0||Z(n.selection,n)},Te=(e,t,n)=>{e.width=Math.min(e.maxWidth??1/0,Math.max(e.minWidth,t)),e.element.dataset.width=String(e.width),A=k(m),G(),H(`ui:data-grid-column-resize`,{column:e.key,width:e.width,phase:n})},Ee=()=>{B.splice(0).forEach(e=>e()),m.forEach(e=>{let t=e.element.querySelector(`[data-ui-data-grid-resize-handle]`);if(!t)return;let n=e.resizable&&$.props.resizableColumns;if(t.hidden=!e.resizable,n?t.removeAttribute(`aria-disabled`):t.setAttribute(`aria-disabled`,`true`),t.tabIndex=n?0:-1,!n)return;let r=t=>Te(e,t.previewWidth,t.phase);B.push(ie({element:e.element,handle:t,axis:`x`,min:e.minWidth,max:e.maxWidth,mode:$.props.resizeMode,disabled:()=>!$.props.resizableColumns||!e.resizable,onStart:r,onResize:r,onEnd:r}))})},$={get supportsSeek(){return E?.supportsSeek??!1},props:null,init(){t=this.$el,S=!1;let e=globalThis.crypto?.randomUUID?.()??`grid-${Date.now()}-${Math.random().toString(36).slice(2)}`;if(t.dataset.uiDataGridScope=e,t.querySelector(`[data-ui-data-grid-header-row]`)?.setAttribute(`data-sortable-scope`,e),this.props=a({el:t,schema:T,onChange:(e,t)=>{if(w)return;let n=t.map(({key:e})=>e);(n.includes(`selectionValue`)||n.includes(`selection`))&&(_=M(this.props.selectionValue,this.props.selection),W()),n.some(e=>[`resizableColumns`,`reorderableColumns`,`minColumnWidth`,`defaultColumnWidth`,`maxColumnWidth`].includes(e))&&(R=!0),n.some(e=>[`query`,`totalRows`,`resizableColumns`,`reorderableColumns`,`minColumnWidth`,`defaultColumnWidth`,`maxColumnWidth`].includes(e))&&K(),n.some(e=>[`fetchUrl`,`rowHeight`,`bufferSize`].includes(e))&&this.reload()}}),g=P(this.props.totalRows),_=M(this.props.selectionValue,this.props.selection),n=t.querySelector(`[data-ui-data-grid-viewport]`)??t.querySelector(`[data-ui-scroll-area-viewport]`),r=t.querySelector(`[data-ui-data-grid-inner]`),i=t.querySelector(`[data-ui-data-grid-body]`),o=t.querySelector(`[data-ui-data-grid-spacer]`),f=t.querySelector(`style[data-ui-data-grid-layout]`),h=Array.from(t.querySelectorAll(`[data-ui-data-grid-block]`)).slice(0,3).map((e,t)=>({element:e,key:`block-${t+1}`})),!n||!r||!i||!o||!f||h.length!==3)throw Error(`Data Grid requires one viewport, table owner, body, spacer, layout style, and three row blocks.`);n.setAttribute(`data-ui-data-grid-viewport`,``),m=he(),A=k(m),G(),Ee();let s=t.querySelector(`[data-ui-data-grid-header-row]`);s&&(typeof ResizeObserver<`u`&&(F=new ResizeObserver(()=>_e(s)),F.observe(s)),j=new MutationObserver(K),j.observe(s,{attributes:!0,childList:!0,subtree:!0,attributeFilter:[`data-column`,`data-label`,`data-width`,`data-min-width`,`data-max-width`,`data-hidden`,`data-pinned`,`data-sortable`,`data-sort`,`data-resizable`,`data-reorderable`,`data-align`,`data-cell-class`,`hidden`]})),I=u(t,{invalidateDom:K}),C=new AbortController,n.addEventListener(`scroll`,()=>{b||=requestAnimationFrame(()=>{b=0,n&&Y(n.scrollTop)})},{passive:!0,signal:C.signal}),t.addEventListener(`click`,e=>{let n=e.target,r=n.closest(`[data-ui-data-grid-sort-button]`);if(r&&this.props.sortableColumns){let t=r.closest(`[data-ui-data-grid-column-header]`),n=m.find(({key:e})=>e===t?.dataset.column);if(n?.sortable){let t=n.sort===`ascending`?`descending`:`ascending`;H(`ui:data-grid-sort`,{column:n.key,direction:t,additive:e.shiftKey})}return}let i=n.closest(`[data-ui-data-grid-row]`);if(!i||!t?.contains(i))return;let a=i.dataset.rowKey??``;this.props.selectOnRowClick&&!n.closest(ue)&&Q(a),H(`ui:data-grid-row-activate`,{rowKey:a,row:i})},{signal:C.signal}),t.addEventListener(`dblclick`,e=>{let t=e.target.closest(`[data-ui-data-grid-cell]`),n=t?.closest(`[data-ui-data-grid-row]`);t&&n&&H(`ui:data-grid-cell-activate`,{rowKey:n.dataset.rowKey??``,column:t.dataset.column??``,cell:t})},{signal:C.signal}),t.addEventListener(`ui:sortable-drop`,(e=>{let t=e.detail?.source;if(t?.type!==`data-grid-column`)return;let n=Number(e.detail?.index??e.detail?.anchor?.index);Number.isInteger(n)&&this.reorderColumn(String(t.id),n)}),{signal:C.signal}),t.addEventListener(`ui:virtualizer-total-change`,(e=>{!E||e.target!==t||J(Number(e.detail?.totalItems??0))}),{signal:C.signal}),t.addEventListener(`ui:virtualizer-load-start`,(e=>{!E||e.target!==t||H(`ui:data-grid-load-start`,{mode:`cursor`})}),{signal:C.signal}),t.addEventListener(`ui:virtualizer-load`,(e=>{!E||e.target!==t||(G(),W(),H(`ui:data-grid-load`,{...e.detail,mode:`cursor`}))}),{signal:C.signal}),t.addEventListener(`ui:virtualizer-error`,(e=>{!E||e.target!==t||H(`ui:data-grid-error`,{...e.detail,mode:`cursor`})}),{signal:C.signal}),n.style.overscrollBehavior=`contain`,n.style.overflowAnchor=`none`,n.scrollTop=p.scrollTo({total:g,itemSize:this.props.rowHeight,viewportSize:n.clientHeight,scrollOffset:0,buffer:this.props.bufferSize},{axis:`y`,index:this.props.initialIndex}),q(),this.props.cursor?this.useCursor(re(()=>{if(!t)throw Error(`Data Grid is not mounted.`);return t})):Y(n.scrollTop)},destroy(){S=!0,b&&cancelAnimationFrame(b),C?.abort(),C=null,j?.disconnect(),j=null,F?.disconnect(),F=null,I?.(),I=null,B.splice(0).forEach(e=>e()),E?.destroy(),E=null,X(),this.props.disconnect(),t=null,n=null,r=null,i=null,o=null,f=null,m=[],A=[],h=[]},scrollToIndex(e,t=`start`){if(E){E.scrollToIndex(e,t);return}n&&(n.scrollTop=p.scrollTo({total:g,itemSize:this.props.rowHeight,viewportSize:n.clientHeight,scrollOffset:n.scrollTop,buffer:this.props.bufferSize},{axis:`y`,index:e,align:t}),Y(n.scrollTop))},setTotalRows(e){t&&s({el:t,schema:T,key:`totalRows`,value:P(e)})},setQuery(e){t&&s({el:t,schema:T,key:`query`,value:e})},useCursor(r){if(!t||!n||!o)return;E?.destroy(),E=null,X(),t.dataset.totalItems=String(g),t.dataset.itemSize=String(this.props.rowHeight),o.setAttribute(`data-ui-virtualizer-spacer`,``),h.forEach(({element:e})=>e.setAttribute(`data-ui-virtualizer-block`,``)),D=r.query;let i=t.hasAttribute(`data-query`)?this.props.query:D;O=c(i);let a=te(e,{cursor:{...r,query:i}});E=a,Object.assign(a,{$el:t}),a.init()},setUrl(e,n={}){w=!0,this.props.fetchUrl=String(e),t&&s({el:t,schema:T,key:`fetchUrl`,value:String(e)}),w=!1,n.reset??!0?this.reset():this.reload()},reset(e={}){if(E){E.reset({scrollTop:e.scrollTop??0});return}this.reload({scrollTop:e.scrollTop??0})},reload(e={}){if(E){E.reload(e);return}let t=e.scrollTop??n?.scrollTop??0;X(),n&&(n.scrollTop=Math.max(0,t)),Y(t)},resizeColumn(e,t){let n=m.find(t=>t.key===e);n&&Te(n,Number(t),`end`)},reorderColumn(e,n){let r=m.findIndex(t=>t.key===e),i=le(m,e,P(n));if(!i)return;m=i,A=k(m);let a=t?.querySelector(`[data-ui-data-grid-header-row]`),o=a?.querySelector(`[data-ui-data-grid-column-indicator]`)??null;m.forEach(e=>a?.insertBefore(e.element,o)),G(),H(`ui:data-grid-column-reorder`,{column:e,from:r,to:P(n),columns:m.map(({key:e})=>e)})},selectRow(e){Q(String(e),!0)},deselectRow(e){Q(String(e),!1)},toggleRow(e){Q(String(e))},setSelection(e){Z(e)},selectQuery(e,t,n=[]){Z({mode:`query`,token:String(e),total:P(t),except:n.map(String)})},clearSelection(){Z({mode:`ids`,ids:[]})}};return $},I=e=>{f(`UiDataGrid`,()=>F(e))(e)},L=new WeakSet,R=t=>{L.has(t)||(L.add(t),_(t),e(t),m(t),I(t))};export{F as n,R as t};
2
- //# sourceMappingURL=entry2.generated-CXnPh3K6.js.map