@vireo-ai/trellis-ui 0.1.55 → 0.1.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/README.md +1 -23
  2. package/package.json +3 -2
  3. package/packages/client/src/components/data-grid/styles.css +0 -16
  4. package/packages/client/src/components/panels/styles.css +2 -10
  5. package/packages/client/src/styles/components.css +1 -1
  6. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  7. package/packages/client/src/styles/generated/theme-palette.css +275 -59
  8. package/packages/client/src/styles/generated/theme-runtime.css +1007 -24
  9. package/packages/client/src/styles/generated-sources.css +1 -1
  10. package/packages/client/src/styles/recipes/selection.css +62 -12
  11. package/packages/client/src/styles/theme-support.css +23 -2
  12. package/packages/client/types/components/accordion/index.d.ts +3 -3
  13. package/packages/client/types/components/accordion/machine.d.ts +11 -7
  14. package/packages/client/types/components/app/contract.d.ts +5 -5
  15. package/packages/client/types/components/badge/contract.d.ts +1 -1
  16. package/packages/client/types/components/box/contract.d.ts +5 -5
  17. package/packages/client/types/components/button/contract.d.ts +1 -1
  18. package/packages/client/types/components/card/contract.d.ts +2 -2
  19. package/packages/client/types/components/common.d.ts +3 -3
  20. package/packages/client/types/components/container/contract.d.ts +4 -4
  21. package/packages/client/types/components/date-picker/contract.d.ts +4 -4
  22. package/packages/client/types/components/date-picker/machine.d.ts +4 -4
  23. package/packages/client/types/components/flex/contract.d.ts +4 -4
  24. package/packages/client/types/components/frame/contract.d.ts +5 -5
  25. package/packages/client/types/components/grid/contract.d.ts +4 -4
  26. package/packages/client/types/components/input/contract.d.ts +2 -2
  27. package/packages/client/types/components/layout.d.ts +5 -5
  28. package/packages/client/types/components/menu/contract.d.ts +4 -2
  29. package/packages/client/types/components/modal/contract.d.ts +5 -4
  30. package/packages/client/types/components/modal/index.d.ts +1 -1
  31. package/packages/client/types/components/section/contract.d.ts +4 -4
  32. package/packages/client/types/components/select/contract.d.ts +3 -3
  33. package/packages/client/types/components/select/machine.d.ts +4 -4
  34. package/packages/client/types/components/sidebar/contract.d.ts +3 -3
  35. package/packages/client/types/components/stack/contract.d.ts +4 -4
  36. package/packages/client/types/components/table/contract.d.ts +1 -1
  37. package/packages/client/types/components/textarea/contract.d.ts +1 -1
  38. package/packages/client/types/components/tooltip/contract.d.ts +2 -2
  39. package/packages/client/types/runtime/engine/stream.d.ts +1 -0
  40. package/packages/client/types/runtime/focus-scope.d.ts +5 -6
  41. package/packages/client/types/runtime/focus.d.ts +9 -0
  42. package/packages/client/types/runtime/index.d.ts +2 -1
  43. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +3278 -265
  44. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  45. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +395 -379
  46. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
  47. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +1 -1
  48. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
  49. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-C3q5Xzv2.js → capability-motion-BGVnZE_T.js} +2 -2
  50. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-C3q5Xzv2.js.map → capability-motion-BGVnZE_T.js.map} +1 -1
  51. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js +2 -0
  52. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js.map +1 -0
  53. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-ehmPfdn1.js +5 -0
  54. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-Bh6pkITu.js.map → capability-sortable-ehmPfdn1.js.map} +1 -1
  55. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js +2 -0
  56. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js.map +1 -0
  57. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js +2 -0
  58. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js.map +1 -0
  59. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-crMEr9_l.js → controller-CalXJ5hB.js} +2 -2
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{controller-crMEr9_l.js.map → controller-CalXJ5hB.js.map} +1 -1
  61. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DOHj5fa1.js → core-Ybm_WmKr.js} +2 -2
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DOHj5fa1.js.map → core-Ybm_WmKr.js.map} +1 -1
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js +2 -0
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js.map +1 -0
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BAghaHV-.js +2 -0
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BAghaHV-.js.map +1 -0
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D8iA1e6i.js → entry.generated-BQNpmLZO.js} +2 -2
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-D8iA1e6i.js.map → entry.generated-BQNpmLZO.js.map} +1 -1
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BREj4oHG.js +2 -0
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BREj4oHG.js.map +1 -0
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js +2 -0
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js.map +1 -0
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CvL196IN.js → entry.generated-COp9wMCd.js} +2 -2
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CvL196IN.js.map → entry.generated-COp9wMCd.js.map} +1 -1
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BmVGptdJ.js → entry.generated-CVOYoh61.js} +2 -2
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BmVGptdJ.js.map → entry.generated-CVOYoh61.js.map} +1 -1
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js +2 -0
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js.map +1 -0
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_ObpRjR.js +2 -0
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_ObpRjR.js.map +1 -0
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BLduYCHm.js → entry.generated-C_SxTqg5.js} +2 -2
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BLduYCHm.js.map → entry.generated-C_SxTqg5.js.map} +1 -1
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-ollD3I52.js → entry.generated-Cb-VMAE1.js} +2 -2
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-ollD3I52.js.map → entry.generated-Cb-VMAE1.js.map} +1 -1
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js +2 -0
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js.map +1 -0
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Dcm3s3ey.js → entry.generated-D2es_Wi2.js} +2 -2
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Dcm3s3ey.js.map → entry.generated-D2es_Wi2.js.map} +1 -1
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6ai6meC.js +2 -0
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6ai6meC.js.map +1 -0
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DYQxGle9.js +2 -0
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DYQxGle9.js.map +1 -0
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_jeOgRf.js +2 -0
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D_jeOgRf.js.map +1 -0
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVOBR4CK.js → entry.generated-DaXIKPN9.js} +2 -2
  96. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVOBR4CK.js.map → entry.generated-DaXIKPN9.js.map} +1 -1
  97. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DqL-zI7j.js +2 -0
  98. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DqL-zI7j.js.map +1 -0
  99. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C3y5qBcc.js → entry.generated-EqHVGr1d.js} +2 -2
  100. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-C3y5qBcc.js.map → entry.generated-EqHVGr1d.js.map} +1 -1
  101. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js +2 -0
  102. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js.map +1 -0
  103. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-z3EbXrD0.js +2 -0
  104. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-z3EbXrD0.js.map +1 -0
  105. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-XeJ05afl.js → flip-Bzn312Nc.js} +2 -2
  106. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-XeJ05afl.js.map → flip-Bzn312Nc.js.map} +1 -1
  107. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-pk_lz9sg.js +2 -0
  108. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-pk_lz9sg.js.map +1 -0
  109. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js +2 -0
  110. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js.map +1 -0
  111. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-CbwLBhMt.js → motion-DI5H1Js0.js} +3 -3
  112. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-CbwLBhMt.js.map → motion-DI5H1Js0.js.map} +1 -1
  113. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-C9PrQrca.js → styles-CQDZhwd_.js} +2 -2
  114. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-C9PrQrca.js.map → styles-CQDZhwd_.js.map} +1 -1
  115. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.js +4 -0
  116. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.js.map +1 -0
  117. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  118. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
  119. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +1 -1
  120. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  121. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  122. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -1
  123. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +1 -1
  124. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
  125. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
  126. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +1 -1
  127. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  128. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  129. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
  130. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  131. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  132. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
  133. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
  134. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  135. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  136. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +1 -1
  137. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +1 -1
  138. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  139. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  140. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +184 -170
  141. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +11 -11
  142. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +11 -11
  143. package/packages/client/src/styles/layout-participation.css +0 -17
  144. package/packages/client/types/runtime/focus-handoff.d.ts +0 -12
  145. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BwvEqEbL.js +0 -2
  146. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BwvEqEbL.js.map +0 -1
  147. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bh6pkITu.js +0 -5
  148. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-BbxUBQFs.js +0 -2
  149. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-BbxUBQFs.js.map +0 -1
  150. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-De1R7Xh6.js +0 -2
  151. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-De1R7Xh6.js.map +0 -1
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-FA9FLGtB.js +0 -2
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-FA9FLGtB.js.map +0 -1
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B41qiwNq.js +0 -2
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B41qiwNq.js.map +0 -1
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B7n4iFyw.js +0 -2
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B7n4iFyw.js.map +0 -1
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BeNK2EFl.js +0 -2
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BeNK2EFl.js.map +0 -1
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bq2KAnfO.js +0 -2
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bq2KAnfO.js.map +0 -1
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3cRWutN.js +0 -2
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3cRWutN.js.map +0 -1
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGasYxmV.js +0 -2
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CGasYxmV.js.map +0 -1
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CyynUmGS.js +0 -2
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CyynUmGS.js.map +0 -1
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DScbsE6-.js +0 -2
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DScbsE6-.js.map +0 -1
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DjKX5KuB.js +0 -2
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DjKX5KuB.js.map +0 -1
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-R1BlPlZW.js +0 -2
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-R1BlPlZW.js.map +0 -1
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-iMJrYzAB.js +0 -2
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-iMJrYzAB.js.map +0 -1
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-n_t4T8XC.js +0 -2
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-n_t4T8XC.js.map +0 -1
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-BE3g0swK.js +0 -2
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-handoff-BE3g0swK.js.map +0 -1
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js +0 -2
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DtaPVNl5.js.map +0 -1
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CGwc8KXJ.js +0 -4
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CGwc8KXJ.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.generated-BREj4oHG.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 outline-none group-data-[responsive-mode=desktop]/sidebar:block',\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',\n ],\n variants: {\n side: {\n left: 'right-0',\n right: 'left-0',\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 focusElement,\n type MachineScope,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\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 {acquireDocumentScrollLock} 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 {stopOwnedMotion} from '@client/motion/owned';\nimport {addListener, dispatch} 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: CleanupManager;\n let resizeObserver: ResizeObserver | null = null;\n let responsiveMode: SidebarMode = 'mobile';\n let activeTrigger: HTMLElement | null = null;\n let releaseScrollLock: (() => void) | null = null;\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)) focusElement(fallback, {showIndicator: false});\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 stopOwnedMotion(el);\n el.style.opacity = '';\n el.style.transform = '';\n if (backdrop) {\n stopOwnedMotion(backdrop);\n backdrop.style.opacity = '';\n }\n }\n const modalDrawer = isModalDrawer();\n if (modalDrawer) releaseScrollLock ??= acquireDocumentScrollLock(el.ownerDocument);\n else {\n releaseScrollLock?.();\n releaseScrollLock = null;\n }\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(() => {\n if (isModalDrawer()) focusFirst(root(), {showIndicator: false});\n });\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 cleanup = cleanupManagerFor(this);\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.add(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 releaseScrollLock?.();\n releaseScrollLock = null;\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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"}
@@ -0,0 +1,2 @@
1
+ import{s as e,t}from"./dom-DiTFTWeR.js";import{f as n,l as r,n as i}from"./codecs-CQ7olTJL.js";import{t as a}from"./alpine-machine-CE2UN4Qu.js";import{t as o}from"./focus-pk_lz9sg.js";import{n as s,t as c}from"./alpine-data-Dvc_bXq6.js";import{t as l}from"./machine-CNnHDbyo.js";import{n as u}from"./props-change-2xfsIAEN.js";import{n as d,r as f}from"./form-control-DL1Hkox3.js";import{_ as p,c as m,o as h,r as g}from"./common-CBK89mIt.js";var _=h,v=m,y=g,b=p,x={type:n.default(`text`),name:n,value:n,placeholder:n,size:r(_,`lg`),variant:r(v,`outline`),radius:r(y,`md`),disabled:i,readonly:i,required:i,invalid:i,icon:n,iconTrailing:n,iconVariant:r(b,`outline`),clearable:i,copyable:i,keys:n,prefix:n,suffix:n,rootClass:n,controlClass:n,class:n};r(_,`lg`),r(v,`outline`),r(y,`md`);var S=[],C=e=>typeof e.value==`string`?e.value:``,w=e=>({context:{value:C(e.event)}}),T=()=>({context:{value:``}}),E=e=>{let t=u(e.event);if(!t)return;let n=t.changes.some(({key:e})=>e===`value`);return{props:t.props,context:n?{value:t.props.value}:e.context}},D=({props:e,effects:t})=>l({initial:`idle`,on:{VALUE_CHANGED:{reduce:`setValue`,effects:`sync`},CLEAR:{target:`idle`,reduce:`clearValue`,effects:[`sync`,`emitInput`,`emitChange`,`focus`]},COPY:{target:`copying`,effects:`copy`},PROPS_CHANGED:{reduce:`reconcileProps`,effects:`sync`}},states:{idle:{},copying:{on:{COPY_DONE:{target:`copied`,effects:[`sync`,`startCopiedTimer`]},COPY_ERROR:{target:`idle`,effects:`sync`}}},copied:{tags:[`copied`],on:{COPY:{target:`copying`,effects:`copy`},COPIED_TIMEOUT:{target:`idle`,effects:`sync`}}}}},{context:{value:e.value},props:e,reducers:{setValue:w,clearValue:T,reconcileProps:E},effects:t}),O=()=>{let n=null,r=null,i,s=null,l=!1,u=()=>{if(!n)throw Error(`Input has not been initialized.`);return n},p=()=>{if(!r)throw Error(`Input requires a native input element.`);return r},m=()=>_.getCommittedSnapshot(),h=()=>{let t=m(),n=t.props,r=p();r.value!==t.context.value&&(r.value=t.context.value),r.type=n.type,n.placeholder?r.placeholder=n.placeholder:r.removeAttribute(`placeholder`),f({input:r,state:{name:n.name,disabled:n.disabled,readonly:n.readonly,required:n.required,invalid:n.invalid}}),d({el:u(),state:n,value:`true`});let i=u().querySelector(`[data-ui-input-control]`);i&&d({el:i,state:{disabled:n.disabled,invalid:n.invalid},value:`true`}),u().querySelectorAll(`[data-ui-input-clear]`).forEach(e=>{e.hidden=t.context.value.length===0,e instanceof HTMLButtonElement&&(e.disabled=n.disabled||n.readonly)}),u().querySelectorAll(`[data-ui-input-copy]`).forEach(r=>{r instanceof HTMLButtonElement&&(r.disabled=n.disabled),e({el:r,attr:`data-copied`,present:t.tags.includes(`copied`),value:`true`})}),e({el:u(),attr:`data-copied`,present:t.tags.includes(`copied`),value:`true`})},g=e=>{l=!0;try{p().dispatchEvent(new Event(e,{bubbles:!0}))}finally{l=!1}},_=a({schema:x,hooks:S,createMachine:({props:e})=>D({props:e,effects:{sync:h,copy:e=>{(navigator.clipboard?.writeText(e.context.value)??Promise.resolve()).then(()=>_.send(`COPY_DONE`)).catch(()=>_.send(`COPY_ERROR`))},emitInput:()=>g(`input`),emitChange:()=>g(`change`),focus:()=>o(p()),startCopiedTimer:()=>{s!==null&&window.clearTimeout(s),s=window.setTimeout(()=>_.send(`COPIED_TIMEOUT`),1200)}}})});return{..._,init(){if(i=c(this),n=this.$el,r=u().querySelector(`[data-ui-input]`),!r)throw Error(`Input requires a native input element.`);_.connect(n,this.snapshot),t({target:r,event:`input`,handler:()=>{l||_.send({type:`VALUE_CHANGED`,value:p().value})},cleanup:i}),t({target:n,event:`click`,handler:e=>{let t=e.target;t instanceof Element&&(t.closest(`[data-ui-input-clear]`)?(e.preventDefault(),_.send(`CLEAR`)):t.closest(`[data-ui-input-copy]`)&&(e.preventDefault(),_.send(`COPY`)))},cleanup:i}),h()},destroy(){s!==null&&window.clearTimeout(s),s=null,_.disconnect(),n=null,r=null},get value(){return _.getCommittedSnapshot().context.value},clear(){!p().disabled&&!p().readOnly&&_.send(`CLEAR`)},copy(){p().disabled||_.send(`COPY`)}}},k=s(`UiInput`,O),A=new WeakSet,j=e=>{A.has(e)||(A.add(e),k(e))};export{O as n,j as t};
2
+ //# sourceMappingURL=entry.generated-BZWdGtgg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.generated-BZWdGtgg.js","names":[],"sources":["../../../../../../../../client/src/components/input/contract.ts","../../../../../../../../client/src/components/input/machine.ts","../../../../../../../../client/src/components/input/index.ts","../../../../../../../../client/src/components/input/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n CONTROL_SIZES,\n CONTROL_VARIANTS,\n COMPONENT_RADII,\n ICON_VARIANTS,\n type ComponentRadius,\n type ControlSize,\n type ControlVariant,\n type IconVariant,\n} from '../common';\n\nconst INPUT_SIZES = CONTROL_SIZES;\nconst INPUT_VARIANTS = CONTROL_VARIANTS;\nconst INPUT_RADII = COMPONENT_RADII;\nconst INPUT_ICON_VARIANTS = ICON_VARIANTS;\n\ntype InputSize = ControlSize;\ntype InputVariant = ControlVariant;\ntype InputRadius = ComponentRadius;\ntype InputIconVariant = IconVariant;\n\nconst inputSchema = {\n type: string.default('text'),\n name: string,\n value: string,\n placeholder: string,\n size: oneOf(INPUT_SIZES, 'lg' as InputSize),\n variant: oneOf(INPUT_VARIANTS, 'outline' as InputVariant),\n radius: oneOf(INPUT_RADII, 'md' as InputRadius),\n disabled: bool,\n readonly: bool,\n required: bool,\n invalid: bool,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(INPUT_ICON_VARIANTS, 'outline' as InputIconVariant),\n clearable: bool,\n copyable: bool,\n keys: string,\n prefix: string,\n suffix: string,\n rootClass: string,\n controlClass: string,\n class: string,\n};\n\nconst inputGroupSchema = {\n size: oneOf(INPUT_SIZES, 'lg' as InputSize),\n variant: oneOf(INPUT_VARIANTS, 'outline' as InputVariant),\n radius: oneOf(INPUT_RADII, 'md' as InputRadius),\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n fieldClass: string,\n class: string,\n};\n\nconst inputAffixSchema = {\n class: string,\n};\n\ntype InputProps = SchemaToProps<typeof inputSchema>;\n\nexport {INPUT_ICON_VARIANTS, INPUT_RADII, INPUT_SIZES, INPUT_VARIANTS, inputAffixSchema, inputGroupSchema, inputSchema};\nexport type {InputIconVariant, InputProps, InputRadius, InputSize, InputVariant};\n","import {createMachine, propsChangedEvent, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport type {InputProps} from './contract';\n\ntype InputContext = {value: string};\ntype InputEffects = {\n sync(scope: MachineScope<InputContext, InputProps>): void;\n copy(scope: MachineScope<InputContext, InputProps>): void;\n emitInput(scope: MachineScope<InputContext, InputProps>): void;\n emitChange(scope: MachineScope<InputContext, InputProps>): void;\n focus(scope: MachineScope<InputContext, InputProps>): void;\n startCopiedTimer(scope: MachineScope<InputContext, InputProps>): void;\n};\nconst inputHooks = [] as const;\nconst eventValue = (event: MachineEventObject): string => typeof event.value === 'string' ? event.value : '';\nconst setValue = (scope: MachineScope<InputContext, InputProps>) => ({context: {value: eventValue(scope.event)}});\nconst clearValue = () => ({context: {value: ''}});\nconst reconcileProps = (scope: MachineScope<InputContext, InputProps>) => {\n const event = propsChangedEvent<InputProps>(scope.event);\n if (!event) return;\n const valueChanged = event.changes.some(({key}) => key === 'value');\n return {props: event.props, context: valueChanged ? {value: event.props.value} : scope.context};\n};\n\nconst createInputMachine = ({props, effects}: {props: InputProps; effects: InputEffects}): Machine<InputContext, InputProps> => createMachine<InputContext, InputProps>({\n initial: 'idle',\n on: {\n VALUE_CHANGED: {reduce: 'setValue', effects: 'sync'},\n CLEAR: {target: 'idle', reduce: 'clearValue', effects: ['sync', 'emitInput', 'emitChange', 'focus']},\n COPY: {target: 'copying', effects: 'copy'},\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n },\n states: {\n idle: {},\n copying: {on: {\n COPY_DONE: {target: 'copied', effects: ['sync', 'startCopiedTimer']},\n COPY_ERROR: {target: 'idle', effects: 'sync'},\n }},\n copied: {tags: ['copied'], on: {\n COPY: {target: 'copying', effects: 'copy'},\n COPIED_TIMEOUT: {target: 'idle', effects: 'sync'},\n }},\n },\n}, {\n context: {value: props.value},\n props,\n reducers: {setValue, clearValue, reconcileProps},\n effects,\n});\n\nexport {createInputMachine, inputHooks};\nexport type {InputContext, InputEffects};\n","import type Alpine from 'alpinejs';\n\nimport {type AlpineMachine, createAlpineMachine, defineAlpineData, focusElement, type MachineSnapshot, type TrellisAlpineComponent} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {addListener, setPresence} from '@client/utils';\nimport {inputSchema, type InputProps} from './contract';\nimport {createInputMachine, inputHooks, type InputContext} from './machine';\n\n/** Public Alpine API for `ui.input` and `ui.input.control`. @public */\ninterface UiInputApi {\n /** Current native input value. */\n readonly value: string;\n /** Clear the input, emit native input/change events, and restore focus. */\n clear(): void;\n /** Copy the current value to the clipboard. */\n copy(): void;\n}\n\ntype InputData = AlpineMachine<InputContext, InputProps, typeof inputHooks> & UiInputApi & {\n init(): void;\n destroy(): void;\n};\n\nconst UiInput = (): TrellisAlpineComponent<InputData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let inputEl: HTMLInputElement | null = null;\n let cleanup: CleanupManager;\n let copiedTimer: number | null = null;\n let dispatching = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Input has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n if (!inputEl) throw new Error('Input requires a native input element.');\n return inputEl;\n };\n const snapshot = (): MachineSnapshot<InputContext, InputProps> => bridge.getCommittedSnapshot();\n const syncDom = (): void => {\n const current = snapshot();\n const props = current.props;\n const native = input();\n if (native.value !== current.context.value) native.value = current.context.value;\n native.type = props.type;\n if (props.placeholder) native.placeholder = props.placeholder;\n else native.removeAttribute('placeholder');\n syncNativeControl({input: native, state: {\n name: props.name,\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n invalid: props.invalid,\n }});\n syncControlPresence({el: root(), state: props, value: 'true'});\n const control = root().querySelector<HTMLElement>('[data-ui-input-control]');\n if (control) syncControlPresence({el: control, state: {disabled: props.disabled, invalid: props.invalid}, value: 'true'});\n root().querySelectorAll<HTMLElement>('[data-ui-input-clear]').forEach((button) => {\n button.hidden = current.context.value.length === 0;\n if (button instanceof HTMLButtonElement) button.disabled = props.disabled || props.readonly;\n });\n root().querySelectorAll<HTMLElement>('[data-ui-input-copy]').forEach((button) => {\n if (button instanceof HTMLButtonElement) button.disabled = props.disabled;\n setPresence({el: button, attr: 'data-copied', present: current.tags.includes('copied'), value: 'true'});\n });\n setPresence({el: root(), attr: 'data-copied', present: current.tags.includes('copied'), value: 'true'});\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: inputSchema,\n hooks: inputHooks,\n createMachine: ({props}) => createInputMachine({props, effects: {\n sync: syncDom,\n copy: (scope) => {\n const write = navigator.clipboard?.writeText(scope.context.value) ?? Promise.resolve();\n void write.then(() => bridge.send('COPY_DONE')).catch(() => bridge.send('COPY_ERROR'));\n },\n emitInput: () => dispatchNative('input'),\n emitChange: () => dispatchNative('change'),\n focus: () => focusElement(input()),\n startCopiedTimer: () => {\n if (copiedTimer !== null) window.clearTimeout(copiedTimer);\n copiedTimer = window.setTimeout(() => bridge.send('COPIED_TIMEOUT'), 1200);\n },\n }}),\n });\n\n return {\n ...bridge,\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n inputEl = root().querySelector<HTMLInputElement>('[data-ui-input]');\n if (!inputEl) throw new Error('Input requires a native input element.');\n bridge.connect(rootEl, this.snapshot);\n addListener({target: inputEl, event: 'input', handler: () => {\n if (!dispatching) bridge.send({type: 'VALUE_CHANGED', value: input().value});\n }, cleanup});\n addListener({target: rootEl, event: 'click', handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (target.closest('[data-ui-input-clear]')) {\n event.preventDefault();\n bridge.send('CLEAR');\n } else if (target.closest('[data-ui-input-copy]')) {\n event.preventDefault();\n bridge.send('COPY');\n }\n }, cleanup});\n syncDom();\n },\n destroy(): void {\n if (copiedTimer !== null) window.clearTimeout(copiedTimer);\n copiedTimer = null;\n bridge.disconnect();\n rootEl = null;\n inputEl = null;\n },\n get value(): string {\n return bridge.getCommittedSnapshot().context.value;\n },\n clear(): void {\n if (!input().disabled && !input().readOnly) bridge.send('CLEAR');\n },\n copy(): void {\n if (!input().disabled) bridge.send('COPY');\n },\n };\n};\n\nconst registerInput = defineAlpineData('UiInput', UiInput);\n\nexport {registerInput, UiInput};\nexport type {InputData, UiInputApi};\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 {registerInput as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerInput = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerInput};\nexport default registerInput;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{i as e,t}from"./object-SRW-YaCA.js";import{t as n}from"./capability-motion-C3q5Xzv2.js";import{c as r,f as i,l as a,n as o,o as s,s as c,u as l}from"./codecs-CQ7olTJL.js";import{n as ee}from"./dom-invalidation-Dw6clnS4.js";import{t as u}from"./fragment-9OT0mn7F.js";import{t as te}from"./cleanup-manager-D9QiZF_Q.js";import{n as d,t as ne}from"./alpine-data-Dvc_bXq6.js";import{a as re,i as f,n as ie,r as ae,t as oe}from"./cursor-data-source-FA9FLGtB.js";import{t as p}from"./capability-sortable-Bh6pkITu.js";import{n as se,t as m}from"./capability-resizable-ByUbMIHF.js";import{R as h,y as g}from"./common-De1R7Xh6.js";var _=[`none`,`single`,`multiple`],v=[`compact`,`default`,`comfortable`],y=[`none`,`row`,`grid`],b=[`onChange`,`onEnd`],x=[``,`left`,`right`],S=[`none`,`ascending`,`descending`,`other`],C=[`start`,`center`,`end`],w={fetchUrl:i,cursor:o,query:c(null),totalRows:r.min(0).default(0),rowHeight:r.min(2**-52).default(36),bufferSize:r.min(1).default(50),overscan:r.min(0).default(0),initialIndex:r.min(0).default(0),startParam:i.default(`start`),countParam:i.default(`count`),totalParam:i.default(`total`),totalHeader:i.default(`X-Trellis-Total-Items`),assetsHeader:i.default(`X-Trellis-Assets`),metaSelector:i.default(`template[data-ui-virtualizer-meta]`),selection:a(_,`none`),selectionValue:c({mode:`ids`,ids:[]}),selectOnRowClick:o,rowKey:i.default(`id`),stickyHeader:o.default(!0),resizableColumns:o.default(!0),reorderableColumns:o.default(!0),sortableColumns:o.default(!0),minColumnWidth:r.min(0).default(60),defaultColumnWidth:r.min(2**-52).default(180),maxColumnWidth:c(null),resizeMode:a(b,`onChange`),color:a(h,`neutral`),interaction:a(g,`edge`),dragPreviewPosition:i.trim.default(`preserve`),density:a(v,`default`),border:a(y,`row`),empty:i.default(`No rows found.`),class:i,controlsClass:i,viewportClass:i,headerClass:i,rowClass:i,cellClass:i,footerClass:i,emptyClass:i};r.min(2**-52).default(180),r.min(0).default(60),c(null),a(x,``),a(S,`none`),o.default(!0),o.default(!0),a(C,`start`),c([]),c([]),r.min(0).default(0),i.default(`id`),i.default(`ui.data-grid.row`),i.default(`ui.data-grid.cell`),r.min(0).default(0),r.min(1).default(1),a(C,`start`);var T=(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},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>0?i:null},D=(e,t,n)=>{if(!e.hasAttribute(t))return n;let r=e.getAttribute(t)??``;return r===``||[`true`,`1`,`yes`,`on`].includes(r.toLowerCase())},ce=(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,T(e,`data-min-width`,t.minWidth)),a=E(e,`data-max-width`,t.maxWidth),o=T(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`,ee=[`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:D(e,`data-sortable`,!1),sort:l,resizable:D(e,`data-resizable`,t.resizable),reorderable:D(e,`data-reorderable`,t.reorderable),align:ee,cellClass:e.dataset.cellClass??``,element:e}]})},le=e=>e.map(({width:e})=>`${e}px`).join(` `),O=e=>e.map(({element:e,...t})=>t),k=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}},A=e=>globalThis.CSS?.escape?globalThis.CSS.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`),ue=(e,t)=>{let n=k(t),r=`z-index:2;background-color:var(--ui-surface-color);`;return t.map((t,i)=>{let a=`[data-ui-data-grid-scope="${A(e)}"]`,o=`[data-column="${A(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(``)},j=(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}},de=(e,t)=>e.mode===`query`?!e.except.includes(t):e.ids.includes(t),fe=(e,t,n,r)=>{let i=j(e,n);if(n===`none`)return{selection:i,added:[],removed:[]};let a=de(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]}},pe=(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},M=(e,t=0)=>Math.max(t,Math.floor(Number.isFinite(e)?e:t)),me=`a,button,input,select,textarea,[contenteditable],[role="button"],[role="link"]`,N=n=>{let r=null,i=null,a=null,o=null,c=null,d=null,p=[],m=[],h=0,g={mode:`ids`,ids:[]},_=``,v=null,y=0,b=!1,x=null,S=!1,C=null,T=null,E=null,D=[],k=null,A=null,N=null,P=!1,F=!1,I,L=null,R=new Map,he=new WeakMap,ge=new WeakMap,z=ae(f),B=(e,t)=>{r?.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))},V=(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)},_e=()=>({width:$.props.defaultColumnWidth,minWidth:$.props.minColumnWidth,maxWidth:$.props.maxColumnWidth,resizable:$.props.resizableColumns,reorderable:$.props.reorderableColumns}),H=()=>ce(Array.from(r?.querySelectorAll(`[data-ui-data-grid-column-header]`)??[]),_e()),ve=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)}},ye=()=>Array.from(r?.querySelectorAll(`[data-ui-data-grid-row]`)??[]),be=e=>{o?.style.setProperty(`width`,`${e.getBoundingClientRect().width}px`)},U=()=>{ye().forEach(e=>{let t=e.dataset.rowKey??``,n=$.props.selection!==`none`&&t!==``&&de(g,t);e.toggleAttribute(`data-selected`,n),$.props.selection===`none`?e.removeAttribute(`aria-selected`):e.setAttribute(`aria-selected`,String(n))})},W=()=>{if(!r||!d)return;r.style.setProperty(`--ui-data-grid-template`,le(p));let e=r.dataset.uiDataGridScope??``;d.textContent=ue(e,p);let t=r.querySelector(`[data-ui-data-grid-header-row]`);t&&be(t)},G=()=>{if(!r)return;let e=new Map(p.map((e,t)=>[e.key,{column:e,index:t}]));a?.setAttribute(`aria-colcount`,String(p.length));let t=r.querySelector(`[data-ui-data-grid-header-row]`),n=t?.querySelector(`[data-ui-data-grid-column-indicator]`);n&&t?.append(n);let i=ye();i.forEach(t=>{let n=Array.from(t.children).filter(e=>e instanceof HTMLElement&&e.hasAttribute(`data-ui-data-grid-cell`)),r=new Map(n.flatMap(e=>e instanceof HTMLElement&&e.hasAttribute(`data-ui-data-grid-cell`)?[[e.dataset.column??``,e]]:[]));p.forEach(({key:e})=>{let n=r.get(e);n&&(n.hidden=!1,t.append(n))}),n.forEach(n=>{e.has(n.dataset.column??``)||(n.hidden=!0,n.removeAttribute(`aria-colindex`),n.removeAttribute(`data-pinned`),t.append(n))})}),p.forEach((e,t)=>{ve(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`)}),i.forEach(e=>V(e,$.props.rowClass,he)),r.querySelectorAll(`[data-ui-data-grid-cell]`).forEach(t=>{let n=e.get(t.dataset.column??``);n&&(t.setAttribute(`aria-colindex`,String(n.index+1)),t.dataset.align=n.column.align,V(t,`${$.props.cellClass} ${n.column.cellClass}`,ge),n.column.pinned?t.dataset.pinned=n.column.pinned:t.removeAttribute(`data-pinned`))})},xe=(t,n)=>{let r=new Map(t.map(e=>[e.key,e])),i=new Map(n.map(e=>[e.key,e]));return{previous:t,columns:n,added:n.filter(({key:e})=>!r.has(e)).map(({key:e})=>e),removed:t.filter(({key:e})=>!i.has(e)).map(({key:e})=>e),changed:n.flatMap(t=>{let n=r.get(t.key);if(!n)return[];let i=Object.keys(t).filter(r=>r!==`key`&&!e(n[r],t[r]));return i.length?[{key:t.key,fields:i}]:[]})}},Se=()=>{if(P=!1,!r||b)return;let n=H(),i=O(n),a=!e(D,i),o=p.length!==n.length||p.some((e,t)=>e.element!==n[t]?.element),s=o||p.some((e,t)=>{let r=n[t];return!r||e.key!==r.key||e.resizable!==r.resizable||e.minWidth!==r.minWidth||e.maxWidth!==r.maxWidth});if(a||o||F){let e=D;p=n,D=i;let t=s||F;F=!1,G(),W(),t&&ke(),a&&B(`ui:data-grid-columns-change`,xe(e,i))}if($.props.totalRows!==h&&(J($.props.totalRows),C&&(r.dataset.totalItems=String(h))),C){let n=r.hasAttribute(`data-query`)?$.props.query:T;e(E,n)||(E=t(n),C.setQuery(n))}},K=()=>{P||(P=!0,queueMicrotask(Se))},q=()=>{r&&c&&(C||(r.toggleAttribute(`data-loading`,R.size>0),r.toggleAttribute(`data-empty`,h===0)),r.dataset.selection=$.props.selection,a?.setAttribute(`aria-rowcount`,String(h+1)),r.style.setProperty(`--ui-data-grid-row-height`,`${$.props.rowHeight}px`),r.style.setProperty(`--ui-data-grid-total-height`,`${Math.max(h*$.props.rowHeight,$.props.rowHeight)}px`),(!C||h>0)&&(c.style.height=`var(--ui-data-grid-total-height)`),U())},J=e=>{let t=M(e);t!==h&&(h=t,q(),B(`ui:data-grid-total-change`,{totalRows:h}))},Ce=e=>f.compute({axes:{y:{total:h,itemSize:$.props.rowHeight,viewportSize:$.props.bufferSize*$.props.rowHeight,scrollOffset:e*$.props.rowHeight,buffer:0}}}),we=e=>{if(h===0)return[];let t=M($.props.bufferSize,1),n=Math.min(h-1,Math.floor(Math.max(0,e)/$.props.rowHeight)),r=Math.floor(n/t)*t,i=Math.floor((h-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(Ce)},Te=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}`},Ee=(e,t)=>{if(R.get(e)!==t||(R.delete(e),q(),R.size>0||v===null||b))return;let n=v;v=null,Y(n)},De=async(e,t,i)=>{let a=t.axes.y;if(!a)return;let o=new AbortController;R.set(e.key,o),q(),r?.removeAttribute(`data-error`),B(`ui:data-grid-load-start`,{window:t});try{let s=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${i.requestGeneration}`,c=await fetch(Te(t),{method:`GET`,headers:{Accept:`text/html`,"X-Trellis-Virtualizer":`true`,"X-Trellis-Request-ID":s},signal:o.signal});if(!c.ok&&c.status!==204){z.fail(i),r?.setAttribute(`data-error`,``),B(`ui:data-grid-error`,{window:t,status:c.status});return}let l=await re(c,$.props);if(z.pending(e.key)!==i||b||!await u(n,e.element,l.html,{assets:l.assets,shouldReplace:()=>z.pending(e.key)===i&&!b})||(l.totalItems!==null&&J(l.totalItems),!z.commit(i,t)))return;e.element.style.height=`${a.count*$.props.rowHeight}px`,e.element.style.transform=`translateY(${a.translateOffset}px)`,G(),U(),B(`ui:data-grid-load`,{window:t,start:a.start,count:a.count,end:a.start+a.count})}catch(e){if(o.signal.aborted)return;z.fail(i),r?.setAttribute(`data-error`,``),B(`ui:data-grid-error`,{window:t,status:0,error:e})}finally{Ee(e.key,o)}},Y=e=>{if(C||$.props.cursor)return;if(R.size>0){v=e;return}let t=we(e),r=Math.min(Math.max(0,h-1),Math.floor(Math.max(0,e)/$.props.rowHeight)),i=t.find(e=>{let t=e.axes.y;return t&&r>=t.start&&r<t.start+t.count})??t[0];if(i&&_!==i.key){_=i.key;let e=i.axes.y;B(`ui:data-grid-range`,{start:e.start,count:e.count,end:e.start+e.count,window:i})}if(t.length===0){m.forEach(e=>void u(n,e.element,``));return}let a=new Set;t.forEach(e=>{let t=m.find(t=>z.mounted(t.key)?.key===e.key);t&&a.add(t)});let o=m.filter(e=>!a.has(e));t.forEach(e=>{if(m.some(t=>z.mounted(t.key)?.key===e.key))return;let t=o.shift();if(!t)return;let n=z.begin(t.key,e);n&&De(t,e,n)})},X=()=>{R.forEach(e=>e.abort()),R.clear(),v=null,_=``,z.invalidate(),m.forEach(e=>{e.element.style.height=``,e.element.style.transform=``,u(n,e.element,``)}),q()},Z=(e,t)=>{g=j(e,$.props.selection),S=!0,$.props.selectionValue=g,r&&l({el:r,schema:w,key:`selectionValue`,value:g}),S=!1,U(),B(`ui:data-grid-selection-change`,{selection:g,added:t?.added??[],removed:t?.removed??[]})},Q=(e,t)=>{let n=fe(g,String(e),$.props.selection,t);(n.added.length!==0||n.removed.length!==0)&&Z(n.selection,n)},Oe=(e,t,n)=>{e.width=Math.min(e.maxWidth??1/0,Math.max(e.minWidth,t)),e.element.dataset.width=String(e.width),D=O(p),W(),B(`ui:data-grid-column-resize`,{column:e.key,width:e.width,phase:n})},ke=()=>{L?.run(),L=new te,I.addChild(L),p.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=>Oe(e,t.previewWidth,t.phase);L?.add(se({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 C?.supportsSeek??!1},props:null,init(){I=ne(this),r=this.$el,b=!1;let e=globalThis.crypto?.randomUUID?.()??`grid-${Date.now()}-${Math.random().toString(36).slice(2)}`;if(r.dataset.uiDataGridScope=e,r.querySelector(`[data-ui-data-grid-header-row]`)?.setAttribute(`data-sortable-scope`,e),this.props=s({el:r,schema:w,onChange:(e,t)=>{if(S)return;let n=t.map(({key:e})=>e);(n.includes(`selectionValue`)||n.includes(`selection`))&&(g=j(this.props.selectionValue,this.props.selection),U()),n.some(e=>[`resizableColumns`,`reorderableColumns`,`minColumnWidth`,`defaultColumnWidth`,`maxColumnWidth`].includes(e))&&(F=!0),n.some(e=>[`query`,`totalRows`,`resizableColumns`,`reorderableColumns`,`minColumnWidth`,`defaultColumnWidth`,`maxColumnWidth`].includes(e))&&K(),n.some(e=>[`fetchUrl`,`rowHeight`,`bufferSize`].includes(e))&&this.reload()}}),h=M(this.props.totalRows),g=j(this.props.selectionValue,this.props.selection),i=r.querySelector(`[data-ui-data-grid-viewport]`)??r.querySelector(`[data-ui-scroll-area-viewport]`),a=r.querySelector(`[data-ui-data-grid-inner]`),o=r.querySelector(`[data-ui-data-grid-body]`),c=r.querySelector(`[data-ui-data-grid-spacer]`),d=r.querySelector(`style[data-ui-data-grid-layout]`),m=Array.from(r.querySelectorAll(`[data-ui-data-grid-block]`)).slice(0,3).map((e,t)=>({element:e,key:`block-${t+1}`})),!i||!a||!o||!c||!d||m.length!==3)throw Error(`Data Grid requires one viewport, table owner, body, spacer, layout style, and three row blocks.`);i.setAttribute(`data-ui-data-grid-viewport`,``),p=H(),D=O(p),G(),W(),ke();let t=r.querySelector(`[data-ui-data-grid-header-row]`);t&&(typeof ResizeObserver<`u`&&(A=new ResizeObserver(()=>be(t)),A.observe(t)),k=new MutationObserver(K),k.observe(t,{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`]})),N=ee(r,{invalidateDom:K}),x=new AbortController,i.addEventListener(`scroll`,()=>{y||=requestAnimationFrame(()=>{y=0,i&&Y(i.scrollTop)})},{passive:!0,signal:x.signal}),r.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-ui-data-grid-sort-button]`);if(n&&this.props.sortableColumns){let t=n.closest(`[data-ui-data-grid-column-header]`),r=p.find(({key:e})=>e===t?.dataset.column);if(r?.sortable){let t=r.sort===`ascending`?`descending`:`ascending`;B(`ui:data-grid-sort`,{column:r.key,direction:t,additive:e.shiftKey})}return}let i=t.closest(`[data-ui-data-grid-row]`);if(!i||!r?.contains(i))return;let a=i.dataset.rowKey??``;this.props.selectOnRowClick&&!t.closest(me)&&Q(a),B(`ui:data-grid-row-activate`,{rowKey:a,row:i})},{signal:x.signal}),r.addEventListener(`dblclick`,e=>{let t=e.target.closest(`[data-ui-data-grid-cell]`),n=t?.closest(`[data-ui-data-grid-row]`);t&&n&&B(`ui:data-grid-cell-activate`,{rowKey:n.dataset.rowKey??``,column:t.dataset.column??``,cell:t})},{signal:x.signal}),r.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:x.signal}),r.addEventListener(`ui:virtualizer-total-change`,(e=>{C&&e.target===r&&J(Number(e.detail?.totalItems??0))}),{signal:x.signal}),r.addEventListener(`ui:virtualizer-load-start`,(e=>{C&&e.target===r&&B(`ui:data-grid-load-start`,{mode:`cursor`})}),{signal:x.signal}),r.addEventListener(`ui:virtualizer-load`,(e=>{C&&e.target===r&&(G(),U(),B(`ui:data-grid-load`,{...e.detail,mode:`cursor`}))}),{signal:x.signal}),r.addEventListener(`ui:virtualizer-error`,(e=>{C&&e.target===r&&B(`ui:data-grid-error`,{...e.detail,mode:`cursor`})}),{signal:x.signal}),i.style.overscrollBehavior=`contain`,i.style.overflowAnchor=`none`,i.scrollTop=f.scrollTo({total:h,itemSize:this.props.rowHeight,viewportSize:i.clientHeight,scrollOffset:0,buffer:this.props.bufferSize},{axis:`y`,index:this.props.initialIndex}),q(),this.props.cursor?this.useCursor(oe(()=>{if(!r)throw Error(`Data Grid is not mounted.`);return r})):Y(i.scrollTop)},destroy(){b=!0,y&&cancelAnimationFrame(y),x?.abort(),x=null,k?.disconnect(),k=null,A?.disconnect(),A=null,N?.(),N=null,L=null,C?.destroy(),C=null,X(),this.props.disconnect(),r=null,i=null,a=null,o=null,c=null,d=null,p=[],D=[],m=[]},scrollToIndex(e,t=`start`){if(C){C.scrollToIndex(e,t);return}i&&(i.scrollTop=f.scrollTo({total:h,itemSize:this.props.rowHeight,viewportSize:i.clientHeight,scrollOffset:i.scrollTop,buffer:this.props.bufferSize},{axis:`y`,index:e,align:t}),Y(i.scrollTop))},setTotalRows(e){r&&l({el:r,schema:w,key:`totalRows`,value:M(e)})},setQuery(e){r&&l({el:r,schema:w,key:`query`,value:e})},useCursor(e){if(!r||!i||!c)return;C?.destroy(),C=null,X(),r.dataset.totalItems=String(h),r.dataset.itemSize=String(this.props.rowHeight),c.setAttribute(`data-ui-virtualizer-spacer`,``),m.forEach(({element:e})=>e.setAttribute(`data-ui-virtualizer-block`,``)),T=e.query;let a=r.hasAttribute(`data-query`)?this.props.query:T;E=t(a);let o=ie(n,{cursor:{...e,query:a}});C=o,Object.assign(o,{$el:r}),o.init()},setUrl(e,t={}){S=!0,this.props.fetchUrl=String(e),r&&l({el:r,schema:w,key:`fetchUrl`,value:String(e)}),S=!1,t.reset??!0?this.reset():this.reload()},reset(e={}){if(C){C.reset({scrollTop:e.scrollTop??0});return}this.reload({scrollTop:e.scrollTop??0})},reload(e={}){if(C){C.reload(e);return}let t=e.scrollTop??i?.scrollTop??0;X(),i&&(i.scrollTop=Math.max(0,t)),Y(t)},resizeColumn(e,t){let n=p.find(t=>t.key===e);n&&Oe(n,Number(t),`end`)},reorderColumn(e,t){let n=p.findIndex(t=>t.key===e),i=pe(p,e,M(t));if(!i)return;p=i,D=O(p);let a=r?.querySelector(`[data-ui-data-grid-header-row]`),o=a?.querySelector(`[data-ui-data-grid-column-indicator]`)??null;p.forEach(e=>a?.insertBefore(e.element,o)),G(),W(),B(`ui:data-grid-column-reorder`,{column:e,from:n,to:M(t),columns:p.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:M(t),except:n.map(String)})},clearSelection(){Z({mode:`ids`,ids:[]})}};return $},P=e=>{d(`UiDataGrid`,()=>N(e))(e)},F=new WeakSet,I=e=>{F.has(e)||(F.add(e),m(e),n(e),p(e),P(e))};export{N as n,I as t};
2
- //# sourceMappingURL=entry.generated-CvL196IN.js.map
1
+ import{i as e,t}from"./object-SRW-YaCA.js";import{t as n}from"./capability-motion-BGVnZE_T.js";import{c as r,f as i,l as a,n as o,o as s,s as c,u as l}from"./codecs-CQ7olTJL.js";import{n as ee}from"./dom-invalidation-Dw6clnS4.js";import{t as u}from"./fragment-9OT0mn7F.js";import{t as te}from"./cleanup-manager-D9QiZF_Q.js";import{n as d,t as ne}from"./alpine-data-Dvc_bXq6.js";import{a as re,i as f,n as ie,r as ae,t as oe}from"./cursor-data-source-Do0FfF4Z.js";import{t as p}from"./capability-sortable-ehmPfdn1.js";import{n as se,t as m}from"./capability-resizable-ByUbMIHF.js";import{R as h,y as g}from"./common-CBK89mIt.js";var _=[`none`,`single`,`multiple`],v=[`compact`,`default`,`comfortable`],y=[`none`,`row`,`grid`],b=[`onChange`,`onEnd`],x=[``,`left`,`right`],S=[`none`,`ascending`,`descending`,`other`],C=[`start`,`center`,`end`],w={fetchUrl:i,cursor:o,query:c(null),totalRows:r.min(0).default(0),rowHeight:r.min(2**-52).default(36),bufferSize:r.min(1).default(50),overscan:r.min(0).default(0),initialIndex:r.min(0).default(0),startParam:i.default(`start`),countParam:i.default(`count`),totalParam:i.default(`total`),totalHeader:i.default(`X-Trellis-Total-Items`),assetsHeader:i.default(`X-Trellis-Assets`),metaSelector:i.default(`template[data-ui-virtualizer-meta]`),selection:a(_,`none`),selectionValue:c({mode:`ids`,ids:[]}),selectOnRowClick:o,rowKey:i.default(`id`),stickyHeader:o.default(!0),resizableColumns:o.default(!0),reorderableColumns:o.default(!0),sortableColumns:o.default(!0),minColumnWidth:r.min(0).default(60),defaultColumnWidth:r.min(2**-52).default(180),maxColumnWidth:c(null),resizeMode:a(b,`onChange`),color:a(h,`neutral`),interaction:a(g,`edge`),dragPreviewPosition:i.trim.default(`preserve`),density:a(v,`default`),border:a(y,`row`),empty:i.default(`No rows found.`),class:i,controlsClass:i,viewportClass:i,headerClass:i,rowClass:i,cellClass:i,footerClass:i,emptyClass:i};r.min(2**-52).default(180),r.min(0).default(60),c(null),a(x,``),a(S,`none`),o.default(!0),o.default(!0),a(C,`start`),c([]),c([]),r.min(0).default(0),i.default(`id`),i.default(`ui.data-grid.row`),i.default(`ui.data-grid.cell`),r.min(0).default(0),r.min(1).default(1),a(C,`start`);var T=(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},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>0?i:null},D=(e,t,n)=>{if(!e.hasAttribute(t))return n;let r=e.getAttribute(t)??``;return r===``||[`true`,`1`,`yes`,`on`].includes(r.toLowerCase())},ce=(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,T(e,`data-min-width`,t.minWidth)),a=E(e,`data-max-width`,t.maxWidth),o=T(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`,ee=[`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:D(e,`data-sortable`,!1),sort:l,resizable:D(e,`data-resizable`,t.resizable),reorderable:D(e,`data-reorderable`,t.reorderable),align:ee,cellClass:e.dataset.cellClass??``,element:e}]})},le=e=>e.map(({width:e})=>`${e}px`).join(` `),O=e=>e.map(({element:e,...t})=>t),k=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}},A=e=>globalThis.CSS?.escape?globalThis.CSS.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`),ue=(e,t)=>{let n=k(t),r=`z-index:2;background-color:var(--ui-surface-color);`;return t.map((t,i)=>{let a=`[data-ui-data-grid-scope="${A(e)}"]`,o=`[data-column="${A(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(``)},j=(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}},de=(e,t)=>e.mode===`query`?!e.except.includes(t):e.ids.includes(t),fe=(e,t,n,r)=>{let i=j(e,n);if(n===`none`)return{selection:i,added:[],removed:[]};let a=de(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]}},pe=(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},M=(e,t=0)=>Math.max(t,Math.floor(Number.isFinite(e)?e:t)),me=`a,button,input,select,textarea,[contenteditable],[role="button"],[role="link"]`,N=n=>{let r=null,i=null,a=null,o=null,c=null,d=null,p=[],m=[],h=0,g={mode:`ids`,ids:[]},_=``,v=null,y=0,b=!1,x=null,S=!1,C=null,T=null,E=null,D=[],k=null,A=null,N=null,P=!1,F=!1,I,L=null,R=new Map,he=new WeakMap,ge=new WeakMap,z=ae(f),B=(e,t)=>{r?.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))},V=(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)},_e=()=>({width:$.props.defaultColumnWidth,minWidth:$.props.minColumnWidth,maxWidth:$.props.maxColumnWidth,resizable:$.props.resizableColumns,reorderable:$.props.reorderableColumns}),H=()=>ce(Array.from(r?.querySelectorAll(`[data-ui-data-grid-column-header]`)??[]),_e()),ve=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)}},ye=()=>Array.from(r?.querySelectorAll(`[data-ui-data-grid-row]`)??[]),be=e=>{o?.style.setProperty(`width`,`${e.getBoundingClientRect().width}px`)},U=()=>{ye().forEach(e=>{let t=e.dataset.rowKey??``,n=$.props.selection!==`none`&&t!==``&&de(g,t);e.toggleAttribute(`data-selected`,n),$.props.selection===`none`?e.removeAttribute(`aria-selected`):e.setAttribute(`aria-selected`,String(n))})},W=()=>{if(!r||!d)return;r.style.setProperty(`--ui-data-grid-template`,le(p));let e=r.dataset.uiDataGridScope??``;d.textContent=ue(e,p);let t=r.querySelector(`[data-ui-data-grid-header-row]`);t&&be(t)},G=()=>{if(!r)return;let e=new Map(p.map((e,t)=>[e.key,{column:e,index:t}]));a?.setAttribute(`aria-colcount`,String(p.length));let t=r.querySelector(`[data-ui-data-grid-header-row]`),n=t?.querySelector(`[data-ui-data-grid-column-indicator]`);n&&t?.append(n);let i=ye();i.forEach(t=>{let n=Array.from(t.children).filter(e=>e instanceof HTMLElement&&e.hasAttribute(`data-ui-data-grid-cell`)),r=new Map(n.flatMap(e=>e instanceof HTMLElement&&e.hasAttribute(`data-ui-data-grid-cell`)?[[e.dataset.column??``,e]]:[]));p.forEach(({key:e})=>{let n=r.get(e);n&&(n.hidden=!1,t.append(n))}),n.forEach(n=>{e.has(n.dataset.column??``)||(n.hidden=!0,n.removeAttribute(`aria-colindex`),n.removeAttribute(`data-pinned`),t.append(n))})}),p.forEach((e,t)=>{ve(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`)}),i.forEach(e=>V(e,$.props.rowClass,he)),r.querySelectorAll(`[data-ui-data-grid-cell]`).forEach(t=>{let n=e.get(t.dataset.column??``);n&&(t.setAttribute(`aria-colindex`,String(n.index+1)),t.dataset.align=n.column.align,V(t,`${$.props.cellClass} ${n.column.cellClass}`,ge),n.column.pinned?t.dataset.pinned=n.column.pinned:t.removeAttribute(`data-pinned`))})},xe=(t,n)=>{let r=new Map(t.map(e=>[e.key,e])),i=new Map(n.map(e=>[e.key,e]));return{previous:t,columns:n,added:n.filter(({key:e})=>!r.has(e)).map(({key:e})=>e),removed:t.filter(({key:e})=>!i.has(e)).map(({key:e})=>e),changed:n.flatMap(t=>{let n=r.get(t.key);if(!n)return[];let i=Object.keys(t).filter(r=>r!==`key`&&!e(n[r],t[r]));return i.length?[{key:t.key,fields:i}]:[]})}},Se=()=>{if(P=!1,!r||b)return;let n=H(),i=O(n),a=!e(D,i),o=p.length!==n.length||p.some((e,t)=>e.element!==n[t]?.element),s=o||p.some((e,t)=>{let r=n[t];return!r||e.key!==r.key||e.resizable!==r.resizable||e.minWidth!==r.minWidth||e.maxWidth!==r.maxWidth});if(a||o||F){let e=D;p=n,D=i;let t=s||F;F=!1,G(),W(),t&&ke(),a&&B(`ui:data-grid-columns-change`,xe(e,i))}if($.props.totalRows!==h&&(J($.props.totalRows),C&&(r.dataset.totalItems=String(h))),C){let n=r.hasAttribute(`data-query`)?$.props.query:T;e(E,n)||(E=t(n),C.setQuery(n))}},K=()=>{P||(P=!0,queueMicrotask(Se))},q=()=>{r&&c&&(C||(r.toggleAttribute(`data-loading`,R.size>0),r.toggleAttribute(`data-empty`,h===0)),r.dataset.selection=$.props.selection,a?.setAttribute(`aria-rowcount`,String(h+1)),r.style.setProperty(`--ui-data-grid-row-height`,`${$.props.rowHeight}px`),r.style.setProperty(`--ui-data-grid-total-height`,`${Math.max(h*$.props.rowHeight,$.props.rowHeight)}px`),(!C||h>0)&&(c.style.height=`var(--ui-data-grid-total-height)`),U())},J=e=>{let t=M(e);t!==h&&(h=t,q(),B(`ui:data-grid-total-change`,{totalRows:h}))},Ce=e=>f.compute({axes:{y:{total:h,itemSize:$.props.rowHeight,viewportSize:$.props.bufferSize*$.props.rowHeight,scrollOffset:e*$.props.rowHeight,buffer:0}}}),we=e=>{if(h===0)return[];let t=M($.props.bufferSize,1),n=Math.min(h-1,Math.floor(Math.max(0,e)/$.props.rowHeight)),r=Math.floor(n/t)*t,i=Math.floor((h-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(Ce)},Te=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}`},Ee=(e,t)=>{if(R.get(e)!==t||(R.delete(e),q(),R.size>0||v===null||b))return;let n=v;v=null,Y(n)},De=async(e,t,i)=>{let a=t.axes.y;if(!a)return;let o=new AbortController;R.set(e.key,o),q(),r?.removeAttribute(`data-error`),B(`ui:data-grid-load-start`,{window:t});try{let s=globalThis.crypto?.randomUUID?.()??`${Date.now()}-${i.requestGeneration}`,c=await fetch(Te(t),{method:`GET`,headers:{Accept:`text/html`,"X-Trellis-Virtualizer":`true`,"X-Trellis-Request-ID":s},signal:o.signal});if(!c.ok&&c.status!==204){z.fail(i),r?.setAttribute(`data-error`,``),B(`ui:data-grid-error`,{window:t,status:c.status});return}let l=await re(c,$.props);if(z.pending(e.key)!==i||b||!await u(n,e.element,l.html,{assets:l.assets,shouldReplace:()=>z.pending(e.key)===i&&!b})||(l.totalItems!==null&&J(l.totalItems),!z.commit(i,t)))return;e.element.style.height=`${a.count*$.props.rowHeight}px`,e.element.style.transform=`translateY(${a.translateOffset}px)`,G(),U(),B(`ui:data-grid-load`,{window:t,start:a.start,count:a.count,end:a.start+a.count})}catch(e){if(o.signal.aborted)return;z.fail(i),r?.setAttribute(`data-error`,``),B(`ui:data-grid-error`,{window:t,status:0,error:e})}finally{Ee(e.key,o)}},Y=e=>{if(C||$.props.cursor)return;if(R.size>0){v=e;return}let t=we(e),r=Math.min(Math.max(0,h-1),Math.floor(Math.max(0,e)/$.props.rowHeight)),i=t.find(e=>{let t=e.axes.y;return t&&r>=t.start&&r<t.start+t.count})??t[0];if(i&&_!==i.key){_=i.key;let e=i.axes.y;B(`ui:data-grid-range`,{start:e.start,count:e.count,end:e.start+e.count,window:i})}if(t.length===0){m.forEach(e=>void u(n,e.element,``));return}let a=new Set;t.forEach(e=>{let t=m.find(t=>z.mounted(t.key)?.key===e.key);t&&a.add(t)});let o=m.filter(e=>!a.has(e));t.forEach(e=>{if(m.some(t=>z.mounted(t.key)?.key===e.key))return;let t=o.shift();if(!t)return;let n=z.begin(t.key,e);n&&De(t,e,n)})},X=()=>{R.forEach(e=>e.abort()),R.clear(),v=null,_=``,z.invalidate(),m.forEach(e=>{e.element.style.height=``,e.element.style.transform=``,u(n,e.element,``)}),q()},Z=(e,t)=>{g=j(e,$.props.selection),S=!0,$.props.selectionValue=g,r&&l({el:r,schema:w,key:`selectionValue`,value:g}),S=!1,U(),B(`ui:data-grid-selection-change`,{selection:g,added:t?.added??[],removed:t?.removed??[]})},Q=(e,t)=>{let n=fe(g,String(e),$.props.selection,t);(n.added.length!==0||n.removed.length!==0)&&Z(n.selection,n)},Oe=(e,t,n)=>{e.width=Math.min(e.maxWidth??1/0,Math.max(e.minWidth,t)),e.element.dataset.width=String(e.width),D=O(p),W(),B(`ui:data-grid-column-resize`,{column:e.key,width:e.width,phase:n})},ke=()=>{L?.run(),L=new te,I.addChild(L),p.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=>Oe(e,t.previewWidth,t.phase);L?.add(se({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 C?.supportsSeek??!1},props:null,init(){I=ne(this),r=this.$el,b=!1;let e=globalThis.crypto?.randomUUID?.()??`grid-${Date.now()}-${Math.random().toString(36).slice(2)}`;if(r.dataset.uiDataGridScope=e,r.querySelector(`[data-ui-data-grid-header-row]`)?.setAttribute(`data-sortable-scope`,e),this.props=s({el:r,schema:w,onChange:(e,t)=>{if(S)return;let n=t.map(({key:e})=>e);(n.includes(`selectionValue`)||n.includes(`selection`))&&(g=j(this.props.selectionValue,this.props.selection),U()),n.some(e=>[`resizableColumns`,`reorderableColumns`,`minColumnWidth`,`defaultColumnWidth`,`maxColumnWidth`].includes(e))&&(F=!0),n.some(e=>[`query`,`totalRows`,`resizableColumns`,`reorderableColumns`,`minColumnWidth`,`defaultColumnWidth`,`maxColumnWidth`].includes(e))&&K(),n.some(e=>[`fetchUrl`,`rowHeight`,`bufferSize`].includes(e))&&this.reload()}}),h=M(this.props.totalRows),g=j(this.props.selectionValue,this.props.selection),i=r.querySelector(`[data-ui-data-grid-viewport]`)??r.querySelector(`[data-ui-scroll-area-viewport]`),a=r.querySelector(`[data-ui-data-grid-inner]`),o=r.querySelector(`[data-ui-data-grid-body]`),c=r.querySelector(`[data-ui-data-grid-spacer]`),d=r.querySelector(`style[data-ui-data-grid-layout]`),m=Array.from(r.querySelectorAll(`[data-ui-data-grid-block]`)).slice(0,3).map((e,t)=>({element:e,key:`block-${t+1}`})),!i||!a||!o||!c||!d||m.length!==3)throw Error(`Data Grid requires one viewport, table owner, body, spacer, layout style, and three row blocks.`);i.setAttribute(`data-ui-data-grid-viewport`,``),p=H(),D=O(p),G(),W(),ke();let t=r.querySelector(`[data-ui-data-grid-header-row]`);t&&(typeof ResizeObserver<`u`&&(A=new ResizeObserver(()=>be(t)),A.observe(t)),k=new MutationObserver(K),k.observe(t,{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`]})),N=ee(r,{invalidateDom:K}),x=new AbortController,i.addEventListener(`scroll`,()=>{y||=requestAnimationFrame(()=>{y=0,i&&Y(i.scrollTop)})},{passive:!0,signal:x.signal}),r.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-ui-data-grid-sort-button]`);if(n&&this.props.sortableColumns){let t=n.closest(`[data-ui-data-grid-column-header]`),r=p.find(({key:e})=>e===t?.dataset.column);if(r?.sortable){let t=r.sort===`ascending`?`descending`:`ascending`;B(`ui:data-grid-sort`,{column:r.key,direction:t,additive:e.shiftKey})}return}let i=t.closest(`[data-ui-data-grid-row]`);if(!i||!r?.contains(i))return;let a=i.dataset.rowKey??``;this.props.selectOnRowClick&&!t.closest(me)&&Q(a),B(`ui:data-grid-row-activate`,{rowKey:a,row:i})},{signal:x.signal}),r.addEventListener(`dblclick`,e=>{let t=e.target.closest(`[data-ui-data-grid-cell]`),n=t?.closest(`[data-ui-data-grid-row]`);t&&n&&B(`ui:data-grid-cell-activate`,{rowKey:n.dataset.rowKey??``,column:t.dataset.column??``,cell:t})},{signal:x.signal}),r.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:x.signal}),r.addEventListener(`ui:virtualizer-total-change`,(e=>{C&&e.target===r&&J(Number(e.detail?.totalItems??0))}),{signal:x.signal}),r.addEventListener(`ui:virtualizer-load-start`,(e=>{C&&e.target===r&&B(`ui:data-grid-load-start`,{mode:`cursor`})}),{signal:x.signal}),r.addEventListener(`ui:virtualizer-load`,(e=>{C&&e.target===r&&(G(),U(),B(`ui:data-grid-load`,{...e.detail,mode:`cursor`}))}),{signal:x.signal}),r.addEventListener(`ui:virtualizer-error`,(e=>{C&&e.target===r&&B(`ui:data-grid-error`,{...e.detail,mode:`cursor`})}),{signal:x.signal}),i.style.overscrollBehavior=`contain`,i.style.overflowAnchor=`none`,i.scrollTop=f.scrollTo({total:h,itemSize:this.props.rowHeight,viewportSize:i.clientHeight,scrollOffset:0,buffer:this.props.bufferSize},{axis:`y`,index:this.props.initialIndex}),q(),this.props.cursor?this.useCursor(oe(()=>{if(!r)throw Error(`Data Grid is not mounted.`);return r})):Y(i.scrollTop)},destroy(){b=!0,y&&cancelAnimationFrame(y),x?.abort(),x=null,k?.disconnect(),k=null,A?.disconnect(),A=null,N?.(),N=null,L=null,C?.destroy(),C=null,X(),this.props.disconnect(),r=null,i=null,a=null,o=null,c=null,d=null,p=[],D=[],m=[]},scrollToIndex(e,t=`start`){if(C){C.scrollToIndex(e,t);return}i&&(i.scrollTop=f.scrollTo({total:h,itemSize:this.props.rowHeight,viewportSize:i.clientHeight,scrollOffset:i.scrollTop,buffer:this.props.bufferSize},{axis:`y`,index:e,align:t}),Y(i.scrollTop))},setTotalRows(e){r&&l({el:r,schema:w,key:`totalRows`,value:M(e)})},setQuery(e){r&&l({el:r,schema:w,key:`query`,value:e})},useCursor(e){if(!r||!i||!c)return;C?.destroy(),C=null,X(),r.dataset.totalItems=String(h),r.dataset.itemSize=String(this.props.rowHeight),c.setAttribute(`data-ui-virtualizer-spacer`,``),m.forEach(({element:e})=>e.setAttribute(`data-ui-virtualizer-block`,``)),T=e.query;let a=r.hasAttribute(`data-query`)?this.props.query:T;E=t(a);let o=ie(n,{cursor:{...e,query:a}});C=o,Object.assign(o,{$el:r}),o.init()},setUrl(e,t={}){S=!0,this.props.fetchUrl=String(e),r&&l({el:r,schema:w,key:`fetchUrl`,value:String(e)}),S=!1,t.reset??!0?this.reset():this.reload()},reset(e={}){if(C){C.reset({scrollTop:e.scrollTop??0});return}this.reload({scrollTop:e.scrollTop??0})},reload(e={}){if(C){C.reload(e);return}let t=e.scrollTop??i?.scrollTop??0;X(),i&&(i.scrollTop=Math.max(0,t)),Y(t)},resizeColumn(e,t){let n=p.find(t=>t.key===e);n&&Oe(n,Number(t),`end`)},reorderColumn(e,t){let n=p.findIndex(t=>t.key===e),i=pe(p,e,M(t));if(!i)return;p=i,D=O(p);let a=r?.querySelector(`[data-ui-data-grid-header-row]`),o=a?.querySelector(`[data-ui-data-grid-column-indicator]`)??null;p.forEach(e=>a?.insertBefore(e.element,o)),G(),W(),B(`ui:data-grid-column-reorder`,{column:e,from:n,to:M(t),columns:p.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:M(t),except:n.map(String)})},clearSelection(){Z({mode:`ids`,ids:[]})}};return $},P=e=>{d(`UiDataGrid`,()=>N(e))(e)},F=new WeakSet,I=e=>{F.has(e)||(F.add(e),m(e),n(e),p(e),P(e))};export{N as n,I as t};
2
+ //# sourceMappingURL=entry.generated-COp9wMCd.js.map