@powerhousedao/design-system 6.2.3-dev.7 → 6.2.3-dev.71

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 (405) hide show
  1. package/dist/PinFilled-cSbUqZCA.js +41 -0
  2. package/dist/PinFilled-cSbUqZCA.js.map +1 -0
  3. package/dist/{Removed-CO_5C1ce.js → Removed-OP4eTrAN.js} +1 -1
  4. package/dist/{Removed-CO_5C1ce.js.map → Removed-OP4eTrAN.js.map} +1 -1
  5. package/dist/{Tabler-FjvVqX5a.js → Tabler-rjLxlzUV.js} +1 -1
  6. package/dist/{Tabler-FjvVqX5a.js.map → Tabler-rjLxlzUV.js.map} +1 -1
  7. package/dist/add-local-drive-form.impl-xsC6R634.js +75 -0
  8. package/dist/add-local-drive-form.impl-xsC6R634.js.map +1 -0
  9. package/dist/add-remote-drive-form.impl-B2DxdWGF.js +114 -0
  10. package/dist/add-remote-drive-form.impl-B2DxdWGF.js.map +1 -0
  11. package/dist/address-DfZqD6IM.js +92 -0
  12. package/dist/address-DfZqD6IM.js.map +1 -0
  13. package/dist/button-BYcXvZXr.d.ts +13 -0
  14. package/dist/button-BYcXvZXr.d.ts.map +1 -0
  15. package/dist/{character-counter-BWoglM2P.d.ts → character-counter-BZmZZCHN.d.ts} +2 -1
  16. package/dist/character-counter-BZmZZCHN.d.ts.map +1 -0
  17. package/dist/{checkbox-CGBtXQnI.d.ts → checkbox-BIhO-KB2.d.ts} +4 -4
  18. package/dist/checkbox-BIhO-KB2.d.ts.map +1 -0
  19. package/dist/{checkbox-base-CZo-4eL0.d.ts → checkbox-base-Bm0GPWgm.d.ts} +2 -2
  20. package/dist/checkbox-base-Bm0GPWgm.d.ts.map +1 -0
  21. package/dist/combobox.impl-EqgAawKJ.js +144 -0
  22. package/dist/combobox.impl-EqgAawKJ.js.map +1 -0
  23. package/dist/{command-tFzjgzge.d.ts → command-DHHTsHfH.d.ts} +5 -5
  24. package/dist/command-DHHTsHfH.d.ts.map +1 -0
  25. package/dist/connect/components/toast/toast.d.ts +8 -10
  26. package/dist/connect/components/toast/toast.d.ts.map +1 -1
  27. package/dist/connect/components/toast/toast.js +4 -4
  28. package/dist/connect/components/toast/toast.js.map +1 -1
  29. package/dist/connect/index.d.ts +514 -364
  30. package/dist/connect/index.d.ts.map +1 -1
  31. package/dist/connect/index.js +963 -1605
  32. package/dist/connect/index.js.map +1 -1
  33. package/dist/{content-BHWIqmio.d.ts → content-Ch3oDYCL.d.ts} +3 -3
  34. package/dist/content-Ch3oDYCL.d.ts.map +1 -0
  35. package/dist/default-editor.impl-a6EOuEme.js +30 -0
  36. package/dist/default-editor.impl-a6EOuEme.js.map +1 -0
  37. package/dist/document-timeline.impl-CCkyXpt5.js +254 -0
  38. package/dist/document-timeline.impl-CCkyXpt5.js.map +1 -0
  39. package/dist/drive-settings-form.impl-Bwam9-CG.js +171 -0
  40. package/dist/drive-settings-form.impl-Bwam9-CG.js.map +1 -0
  41. package/dist/{enum-field-CwZVs3Ux.d.ts → enum-field-DsyC0ml7.d.ts} +4 -4
  42. package/dist/enum-field-DsyC0ml7.d.ts.map +1 -0
  43. package/dist/{form-CKRKn0TQ.d.ts → form-Brj5AQNr.d.ts} +3 -4
  44. package/dist/form-Brj5AQNr.d.ts.map +1 -0
  45. package/dist/{form-description-CYkcMEzm.d.ts → form-description-DJrDJzJi.d.ts} +2 -1
  46. package/dist/form-description-DJrDJzJi.d.ts.map +1 -0
  47. package/dist/{form-group-C8kL6pdZ.d.ts → form-group-Ckd28lpW.d.ts} +2 -1
  48. package/dist/form-group-Ckd28lpW.d.ts.map +1 -0
  49. package/dist/{form-label-b6nQi0XO.d.ts → form-label-C8ghd_lR.d.ts} +2 -1
  50. package/dist/form-label-C8ghd_lR.d.ts.map +1 -0
  51. package/dist/{form-message-Dq72nBXz.d.ts → form-message-CnKUkvlj.d.ts} +2 -1
  52. package/dist/form-message-CnKUkvlj.d.ts.map +1 -0
  53. package/dist/form-server-error-message-D2tFtDZ0.d.ts +6 -0
  54. package/dist/form-server-error-message-D2tFtDZ0.d.ts.map +1 -0
  55. package/dist/formatted-json-viewer.impl-DadZ5uvb.js +58 -0
  56. package/dist/formatted-json-viewer.impl-DadZ5uvb.js.map +1 -0
  57. package/dist/icon-CHR45tj_.js +358 -0
  58. package/dist/icon-CHR45tj_.js.map +1 -0
  59. package/dist/{icon-C4QOpsdI.js → icon-components-CJ4I3Y6Y.js} +7 -481
  60. package/dist/icon-components-CJ4I3Y6Y.js.map +1 -0
  61. package/dist/{id-autocomplete-C-hwriS5.d.ts → id-autocomplete-Cr7p129s.d.ts} +3 -3
  62. package/dist/id-autocomplete-Cr7p129s.d.ts.map +1 -0
  63. package/dist/{id-autocomplete-input-container-DFEyPh5p.d.ts → id-autocomplete-input-container-iTw9wYZn.d.ts} +3 -3
  64. package/dist/id-autocomplete-input-container-iTw9wYZn.d.ts.map +1 -0
  65. package/dist/{id-autocomplete-list-EzLpF23C.d.ts → id-autocomplete-list-BIC3RxOp.d.ts} +3 -3
  66. package/dist/id-autocomplete-list-BIC3RxOp.d.ts.map +1 -0
  67. package/dist/{id-autocomplete-list-option-CB5B07Hi.d.ts → id-autocomplete-list-option-DlpZer-2.d.ts} +4 -3
  68. package/dist/id-autocomplete-list-option-DlpZer-2.d.ts.map +1 -0
  69. package/dist/index-C-Tup7Br.d.ts +4 -0
  70. package/dist/{index--hDSfvJT.d.ts → index-Ck34z7kD.d.ts} +23 -59
  71. package/dist/index-Ck34z7kD.d.ts.map +1 -0
  72. package/dist/index-D6Zk5OLV.d.ts +4 -0
  73. package/dist/index-Ds9-qjjC.d.ts +30 -0
  74. package/dist/index-jfVVOU-H.d.ts +2 -0
  75. package/dist/index.d.ts +5 -3
  76. package/dist/index.js +2 -2
  77. package/dist/{input-BpEQjaWV.d.ts → input-WDvjJFqf.d.ts} +2 -2
  78. package/dist/input-WDvjJFqf.d.ts.map +1 -0
  79. package/dist/json-viewer-Kg0IBIt-.d.ts +7 -0
  80. package/dist/json-viewer-Kg0IBIt-.d.ts.map +1 -0
  81. package/dist/label-nH2HoKfI.js +15 -0
  82. package/dist/label-nH2HoKfI.js.map +1 -0
  83. package/dist/location-info-C3YbSsV0.js +47 -0
  84. package/dist/location-info-C3YbSsV0.js.map +1 -0
  85. package/dist/{message-list-C4mPpBBa.d.ts → message-list-D8d2ltLd.d.ts} +3 -3
  86. package/dist/message-list-D8d2ltLd.d.ts.map +1 -0
  87. package/dist/{popover-XSBOuSih.d.ts → popover-TvQxa0RU.d.ts} +2 -2
  88. package/dist/popover-TvQxa0RU.d.ts.map +1 -0
  89. package/dist/{radio-eL0Oy86J.d.ts → radio-CTS4WsNy.d.ts} +2 -2
  90. package/dist/radio-CTS4WsNy.d.ts.map +1 -0
  91. package/dist/{radio-group-Bkli6nUz.d.ts → radio-group-CROIwgYz.d.ts} +2 -2
  92. package/dist/radio-group-CROIwgYz.d.ts.map +1 -0
  93. package/dist/{radio-group-field-wlqeiLN3.d.ts → radio-group-field-0-cC_e65.d.ts} +5 -6
  94. package/dist/radio-group-field-0-cC_e65.d.ts.map +1 -0
  95. package/dist/revision-history.impl-CrtSnhXQ.js +642 -0
  96. package/dist/revision-history.impl-CrtSnhXQ.js.map +1 -0
  97. package/dist/{search-autocomplete-BJJkrZ1i.d.ts → search-autocomplete-COvFRZIb.d.ts} +3 -3
  98. package/dist/search-autocomplete-COvFRZIb.d.ts.map +1 -0
  99. package/dist/{select-field-C97QIhUL.d.ts → select-field-VZPf666l.d.ts} +5 -5
  100. package/dist/select-field-VZPf666l.d.ts.map +1 -0
  101. package/dist/{selected-content-CGsK5PR4.d.ts → selected-content-D6NWiceG.d.ts} +3 -3
  102. package/dist/selected-content-D6NWiceG.d.ts.map +1 -0
  103. package/dist/{sidebar-DOoE4krt.d.ts → sidebar-DFqreKf1.d.ts} +3 -3
  104. package/dist/sidebar-DFqreKf1.d.ts.map +1 -0
  105. package/dist/{sidebar-provider-C2eyz9TL.d.ts → sidebar-provider-CZHhqW5n.d.ts} +4 -8
  106. package/dist/sidebar-provider-CZHhqW5n.d.ts.map +1 -0
  107. package/dist/splitted-input-diff-Bkoi0Odc.d.ts +11 -0
  108. package/dist/splitted-input-diff-Bkoi0Odc.d.ts.map +1 -0
  109. package/dist/{src-CVV6HzQZ.js → src-CohvVFnR.js} +178 -22
  110. package/dist/src-CohvVFnR.js.map +1 -0
  111. package/dist/style.css +3 -6
  112. package/dist/text-field-CDYSwanK.d.ts +9 -0
  113. package/dist/text-field-CDYSwanK.d.ts.map +1 -0
  114. package/dist/{text-input-8zXIWHLi.d.ts → text-input-CFRCPYq6.d.ts} +5 -6
  115. package/dist/text-input-CFRCPYq6.d.ts.map +1 -0
  116. package/dist/text-input-diff-BgJAxPQV.d.ts +12 -0
  117. package/dist/text-input-diff-BgJAxPQV.d.ts.map +1 -0
  118. package/dist/{tooltip-BxS9HpML.d.ts → tooltip-B4uQJPUm.d.ts} +3 -4
  119. package/dist/tooltip-B4uQJPUm.d.ts.map +1 -0
  120. package/dist/{types-Bsn62tJB.d.ts → types-BNTIrhb5.d.ts} +2 -1
  121. package/dist/types-BNTIrhb5.d.ts.map +1 -0
  122. package/dist/{types-BTq-St7H.d.ts → types-CpFPFB1a.d.ts} +2 -1
  123. package/dist/types-CpFPFB1a.d.ts.map +1 -0
  124. package/dist/{types-C04Q_Fan.d.ts → types-D4CirgNk.d.ts} +2 -2
  125. package/dist/types-D4CirgNk.d.ts.map +1 -0
  126. package/dist/{types-CNbvfWjh.d.ts → types-FTqFl5du.d.ts} +3 -3
  127. package/dist/types-FTqFl5du.d.ts.map +1 -0
  128. package/dist/types-TZijOYrE.d.ts +17 -0
  129. package/dist/types-TZijOYrE.d.ts.map +1 -0
  130. package/dist/ui/components/button/button.d.ts +3 -2
  131. package/dist/ui/components/button/button.js +1 -1
  132. package/dist/ui/components/button/button.js.map +1 -1
  133. package/dist/ui/components/character-counter/character-counter.d.ts +3 -2
  134. package/dist/ui/components/character-counter/character-counter.js.map +1 -1
  135. package/dist/ui/components/checkbox/checkbox-base.d.ts +3 -2
  136. package/dist/ui/components/checkbox/checkbox-base.js +1 -1
  137. package/dist/ui/components/checkbox/checkbox-base.js.map +1 -1
  138. package/dist/ui/components/checkbox/checkbox.d.ts +3 -2
  139. package/dist/ui/components/checkbox/checkbox.js +1 -1
  140. package/dist/ui/components/checkbox/checkbox.js.map +1 -1
  141. package/dist/ui/components/command/command.d.ts +3 -2
  142. package/dist/ui/components/command/command.js +8 -8
  143. package/dist/ui/components/command/command.js.map +1 -1
  144. package/dist/ui/components/enum-field/enum-field.d.ts +3 -2
  145. package/dist/ui/components/enum-field/enum-field.js +1 -1
  146. package/dist/ui/components/enum-field/enum-field.js.map +1 -1
  147. package/dist/ui/components/enum-field/types.d.ts +3 -2
  148. package/dist/ui/components/form/form.d.ts +3 -2
  149. package/dist/ui/components/form/form.js +1 -1
  150. package/dist/ui/components/form/form.js.map +1 -1
  151. package/dist/ui/components/form/utils.d.ts +4 -4
  152. package/dist/ui/components/form/utils.d.ts.map +1 -1
  153. package/dist/ui/components/form/utils.js.map +1 -1
  154. package/dist/ui/components/form-description/form-description.d.ts +3 -2
  155. package/dist/ui/components/form-description/form-description.js.map +1 -1
  156. package/dist/ui/components/form-group/form-group.d.ts +3 -2
  157. package/dist/ui/components/form-group/form-group.js.map +1 -1
  158. package/dist/ui/components/form-label/form-label.d.ts +3 -2
  159. package/dist/ui/components/form-label/form-label.js +3 -2
  160. package/dist/ui/components/form-label/form-label.js.map +1 -1
  161. package/dist/ui/components/form-message/form-message.d.ts +3 -2
  162. package/dist/ui/components/form-message/form-message.js.map +1 -1
  163. package/dist/ui/components/form-message/form-server-error-message.d.ts +3 -2
  164. package/dist/ui/components/form-message/form-server-error-message.js.map +1 -1
  165. package/dist/ui/components/form-message/message-list.d.ts +3 -2
  166. package/dist/ui/components/form-message/message-list.js.map +1 -1
  167. package/dist/ui/components/id-autocomplete/id-autocomplete-context.d.ts +3 -5
  168. package/dist/ui/components/id-autocomplete/id-autocomplete-context.d.ts.map +1 -1
  169. package/dist/ui/components/id-autocomplete/id-autocomplete-context.js +1 -1
  170. package/dist/ui/components/id-autocomplete/id-autocomplete-context.js.map +1 -1
  171. package/dist/ui/components/id-autocomplete/id-autocomplete-input-container.d.ts +3 -2
  172. package/dist/ui/components/id-autocomplete/id-autocomplete-input-container.js +2 -2
  173. package/dist/ui/components/id-autocomplete/id-autocomplete-input-container.js.map +1 -1
  174. package/dist/ui/components/id-autocomplete/id-autocomplete-list-option.d.ts +3 -2
  175. package/dist/ui/components/id-autocomplete/id-autocomplete-list-option.js +2 -2
  176. package/dist/ui/components/id-autocomplete/id-autocomplete-list-option.js.map +1 -1
  177. package/dist/ui/components/id-autocomplete/id-autocomplete-list.d.ts +3 -2
  178. package/dist/ui/components/id-autocomplete/id-autocomplete-list.js.map +1 -1
  179. package/dist/ui/components/id-autocomplete/id-autocomplete.d.ts +3 -2
  180. package/dist/ui/components/id-autocomplete/id-autocomplete.js +1 -1
  181. package/dist/ui/components/id-autocomplete/id-autocomplete.js.map +1 -1
  182. package/dist/ui/components/id-autocomplete/types.d.ts +3 -2
  183. package/dist/ui/components/id-autocomplete/use-id-autocomplete.d.ts +3 -2
  184. package/dist/ui/components/id-autocomplete/use-id-autocomplete.js.map +1 -1
  185. package/dist/ui/components/index.d.ts +42 -40
  186. package/dist/ui/components/input/input.d.ts +3 -2
  187. package/dist/ui/components/input/input.js +1 -1
  188. package/dist/ui/components/input/input.js.map +1 -1
  189. package/dist/ui/components/input/splitted-input-diff.d.ts +3 -2
  190. package/dist/ui/components/input/splitted-input-diff.js +10 -9
  191. package/dist/ui/components/input/splitted-input-diff.js.map +1 -1
  192. package/dist/ui/components/input/subcomponent/input-diff.d.ts +2 -11
  193. package/dist/ui/components/input/subcomponent/input-diff.d.ts.map +1 -1
  194. package/dist/ui/components/input/subcomponent/input-diff.js.map +1 -1
  195. package/dist/ui/components/input/subcomponent/text-diff.d.ts +3 -12
  196. package/dist/ui/components/input/subcomponent/text-diff.d.ts.map +1 -1
  197. package/dist/ui/components/input/subcomponent/text-diff.js.map +1 -1
  198. package/dist/ui/components/json-viewer/json-viewer.d.ts +3 -2
  199. package/dist/ui/components/json-viewer/json-viewer.js +1 -1
  200. package/dist/ui/components/json-viewer/json-viewer.js.map +1 -1
  201. package/dist/ui/components/popover/popover.d.ts +3 -2
  202. package/dist/ui/components/popover/popover.js +1 -1
  203. package/dist/ui/components/popover/popover.js.map +1 -1
  204. package/dist/ui/components/radio-group-field/radio-group-field.d.ts +3 -2
  205. package/dist/ui/components/radio-group-field/radio-group-field.js +4 -3
  206. package/dist/ui/components/radio-group-field/radio-group-field.js.map +1 -1
  207. package/dist/ui/components/radio-group-field/radio-group.d.ts +3 -2
  208. package/dist/ui/components/radio-group-field/radio-group.js +1 -1
  209. package/dist/ui/components/radio-group-field/radio-group.js.map +1 -1
  210. package/dist/ui/components/radio-group-field/radio.d.ts +3 -2
  211. package/dist/ui/components/radio-group-field/radio.js +1 -1
  212. package/dist/ui/components/radio-group-field/radio.js.map +1 -1
  213. package/dist/ui/components/search-autocomplete/index.d.ts +6 -4
  214. package/dist/ui/components/search-autocomplete/search-autocomplete.d.ts +3 -2
  215. package/dist/ui/components/search-autocomplete/search-autocomplete.js.map +1 -1
  216. package/dist/ui/components/search-autocomplete/types.d.ts +3 -2
  217. package/dist/ui/components/search-autocomplete/use-search-autocomplete.d.ts +3 -2
  218. package/dist/ui/components/search-autocomplete/use-search-autocomplete.js.map +1 -1
  219. package/dist/ui/components/select-field/content.d.ts +3 -2
  220. package/dist/ui/components/select-field/content.js +1 -1
  221. package/dist/ui/components/select-field/content.js.map +1 -1
  222. package/dist/ui/components/select-field/select-field.d.ts +3 -2
  223. package/dist/ui/components/select-field/select-field.js +1 -1
  224. package/dist/ui/components/select-field/select-field.js.map +1 -1
  225. package/dist/ui/components/select-field/selected-content.d.ts +3 -2
  226. package/dist/ui/components/select-field/selected-content.js +1 -1
  227. package/dist/ui/components/select-field/selected-content.js.map +1 -1
  228. package/dist/ui/components/select-field/subcomponents/CommandItemList.d.ts +3 -4
  229. package/dist/ui/components/select-field/subcomponents/CommandItemList.d.ts.map +1 -1
  230. package/dist/ui/components/select-field/subcomponents/CommandItemList.js +1 -1
  231. package/dist/ui/components/select-field/subcomponents/CommandItemList.js.map +1 -1
  232. package/dist/ui/components/select-field/use-select-field.d.ts +4 -12
  233. package/dist/ui/components/select-field/use-select-field.d.ts.map +1 -1
  234. package/dist/ui/components/select-field/use-select-field.js.map +1 -1
  235. package/dist/ui/components/sidebar/index.d.ts +6 -4
  236. package/dist/ui/components/sidebar/sidebar.d.ts +3 -2
  237. package/dist/ui/components/sidebar/sidebar.js +1 -1
  238. package/dist/ui/components/sidebar/sidebar.js.map +1 -1
  239. package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.d.ts +2 -7
  240. package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.d.ts.map +1 -1
  241. package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.js +1 -1
  242. package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.js.map +1 -1
  243. package/dist/ui/components/sidebar/subcomponents/sidebar-header.d.ts +2 -2
  244. package/dist/ui/components/sidebar/subcomponents/sidebar-header.d.ts.map +1 -1
  245. package/dist/ui/components/sidebar/subcomponents/sidebar-header.js.map +1 -1
  246. package/dist/ui/components/sidebar/subcomponents/sidebar-item.d.ts +3 -18
  247. package/dist/ui/components/sidebar/subcomponents/sidebar-item.d.ts.map +1 -1
  248. package/dist/ui/components/sidebar/subcomponents/sidebar-item.js +4 -3
  249. package/dist/ui/components/sidebar/subcomponents/sidebar-item.js.map +1 -1
  250. package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.d.ts +2 -4
  251. package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.d.ts.map +1 -1
  252. package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.js.map +1 -1
  253. package/dist/ui/components/sidebar/subcomponents/sidebar-provider/index.d.ts +4 -2
  254. package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-provider.d.ts +3 -2
  255. package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-provider.js +2 -2
  256. package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-provider.js.map +1 -1
  257. package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.d.ts +7 -8
  258. package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.d.ts.map +1 -1
  259. package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.js +1 -1
  260. package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.js.map +1 -1
  261. package/dist/ui/components/sidebar/subcomponents/sidebar-search/index.d.ts +2 -1
  262. package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.d.ts +2 -2
  263. package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.d.ts.map +1 -1
  264. package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.js.map +1 -1
  265. package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.d.ts +2 -2
  266. package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.d.ts.map +1 -1
  267. package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.js.map +1 -1
  268. package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.d.ts +2 -2
  269. package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.d.ts.map +1 -1
  270. package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.js +1 -1
  271. package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.js.map +1 -1
  272. package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.d.ts +2 -8
  273. package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.d.ts.map +1 -1
  274. package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.js +2 -1
  275. package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.js.map +1 -1
  276. package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton.d.ts +2 -4
  277. package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton.d.ts.map +1 -1
  278. package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton.js.map +1 -1
  279. package/dist/ui/components/sidebar/subcomponents/status-icon.d.ts +3 -9
  280. package/dist/ui/components/sidebar/subcomponents/status-icon.d.ts.map +1 -1
  281. package/dist/ui/components/sidebar/subcomponents/status-icon.js +1 -1
  282. package/dist/ui/components/sidebar/subcomponents/status-icon.js.map +1 -1
  283. package/dist/ui/components/sidebar/types.d.ts +3 -2
  284. package/dist/ui/components/sidebar/types.js +1 -1
  285. package/dist/ui/components/sidebar/types.js.map +1 -1
  286. package/dist/ui/components/sidebar/use-ellipsis.d.ts +2 -2
  287. package/dist/ui/components/sidebar/use-ellipsis.d.ts.map +1 -1
  288. package/dist/ui/components/sidebar/use-ellipsis.js.map +1 -1
  289. package/dist/ui/components/sidebar/use-sidebar-resize.d.ts +3 -9
  290. package/dist/ui/components/sidebar/use-sidebar-resize.d.ts.map +1 -1
  291. package/dist/ui/components/sidebar/use-sidebar-resize.js.map +1 -1
  292. package/dist/ui/components/sidebar/utils.d.ts +10 -11
  293. package/dist/ui/components/sidebar/utils.d.ts.map +1 -1
  294. package/dist/ui/components/sidebar/utils.js.map +1 -1
  295. package/dist/ui/components/text-field/text-field.d.ts +3 -2
  296. package/dist/ui/components/text-field/text-field.js +3 -2
  297. package/dist/ui/components/text-field/text-field.js.map +1 -1
  298. package/dist/ui/components/text-input/text-input-diff.d.ts +3 -2
  299. package/dist/ui/components/text-input/text-input-diff.js.map +1 -1
  300. package/dist/ui/components/text-input/text-input.d.ts +3 -2
  301. package/dist/ui/components/text-input/text-input.js +1 -1
  302. package/dist/ui/components/text-input/text-input.js.map +1 -1
  303. package/dist/ui/components/text-input/types.d.ts +3 -2
  304. package/dist/ui/components/tooltip/tooltip.d.ts +3 -2
  305. package/dist/ui/components/tooltip/tooltip.js +1 -1
  306. package/dist/ui/components/tooltip/tooltip.js.map +1 -1
  307. package/dist/ui/components/types.d.ts +3 -2
  308. package/dist/ui/components/value-transformer/value-transformer.d.ts +3 -2
  309. package/dist/ui/components/value-transformer/value-transformer.js +5 -3
  310. package/dist/ui/components/value-transformer/value-transformer.js.map +1 -1
  311. package/dist/ui/components/with-field-validation/with-field-validation.d.ts +3 -2
  312. package/dist/ui/components/with-field-validation/with-field-validation.js +1 -1
  313. package/dist/ui/components/with-field-validation/with-field-validation.js.map +1 -1
  314. package/dist/ui/index.d.ts +44 -42
  315. package/dist/ui/lib/date-picker.d.ts +4 -5
  316. package/dist/ui/lib/date-picker.d.ts.map +1 -1
  317. package/dist/ui/lib/date-picker.js +2 -1
  318. package/dist/ui/lib/date-picker.js.map +1 -1
  319. package/dist/ui/lib/date-time-picker.d.ts +6 -6
  320. package/dist/ui/lib/date-time-picker.d.ts.map +1 -1
  321. package/dist/ui/lib/date-time-picker.js.map +1 -1
  322. package/dist/ui/lib/deep-equal.d.ts +2 -2
  323. package/dist/ui/lib/deep-equal.d.ts.map +1 -1
  324. package/dist/ui/lib/deep-equal.js.map +1 -1
  325. package/dist/ui/lib/index.d.ts +2 -1
  326. package/dist/ui/lib/is-empty.d.ts +2 -2
  327. package/dist/ui/lib/is-empty.d.ts.map +1 -1
  328. package/dist/ui/lib/is-empty.js.map +1 -1
  329. package/dist/ui/lib/shared-value-transformers.d.ts +3 -4
  330. package/dist/ui/lib/shared-value-transformers.d.ts.map +1 -1
  331. package/dist/ui/lib/shared-value-transformers.js.map +1 -1
  332. package/dist/ui/lib/types.d.ts +3 -2
  333. package/dist/ui/lib/value-cast.d.ts +4 -4
  334. package/dist/ui/lib/value-cast.d.ts.map +1 -1
  335. package/dist/ui/lib/value-cast.js +10 -4
  336. package/dist/ui/lib/value-cast.js.map +1 -1
  337. package/dist/ui/types.d.ts +4 -3
  338. package/dist/{use-id-autocomplete-By7YSChC.d.ts → use-id-autocomplete-WH2ROfQn.d.ts} +5 -16
  339. package/dist/use-id-autocomplete-WH2ROfQn.d.ts.map +1 -0
  340. package/dist/{use-search-autocomplete-IfcQ_gKh.d.ts → use-search-autocomplete-vSvcsvcB.d.ts} +5 -6
  341. package/dist/use-search-autocomplete-vSvcsvcB.d.ts.map +1 -0
  342. package/dist/{value-transformer-DQjqtNih.d.ts → value-transformer-Cg5TEYP2.d.ts} +5 -7
  343. package/dist/value-transformer-Cg5TEYP2.d.ts.map +1 -0
  344. package/dist/{with-field-validation-Di5D8vU-.d.ts → with-field-validation-CObZoT4r.d.ts} +3 -3
  345. package/dist/with-field-validation-CObZoT4r.d.ts.map +1 -0
  346. package/package.json +17 -12
  347. package/plugins.css +6 -0
  348. package/tailwind.css +175 -0
  349. package/vendor.css +3 -0
  350. package/dist/button-C8doazjv.d.ts +0 -15
  351. package/dist/button-C8doazjv.d.ts.map +0 -1
  352. package/dist/character-counter-BWoglM2P.d.ts.map +0 -1
  353. package/dist/checkbox-CGBtXQnI.d.ts.map +0 -1
  354. package/dist/checkbox-base-CZo-4eL0.d.ts.map +0 -1
  355. package/dist/command-tFzjgzge.d.ts.map +0 -1
  356. package/dist/content-BHWIqmio.d.ts.map +0 -1
  357. package/dist/enum-field-CwZVs3Ux.d.ts.map +0 -1
  358. package/dist/form-CKRKn0TQ.d.ts.map +0 -1
  359. package/dist/form-description-CYkcMEzm.d.ts.map +0 -1
  360. package/dist/form-group-C8kL6pdZ.d.ts.map +0 -1
  361. package/dist/form-label-b6nQi0XO.d.ts.map +0 -1
  362. package/dist/form-message-Dq72nBXz.d.ts.map +0 -1
  363. package/dist/form-server-error-message-DXbaiTfF.d.ts +0 -7
  364. package/dist/form-server-error-message-DXbaiTfF.d.ts.map +0 -1
  365. package/dist/icon-C4QOpsdI.js.map +0 -1
  366. package/dist/id-autocomplete-C-hwriS5.d.ts.map +0 -1
  367. package/dist/id-autocomplete-input-container-DFEyPh5p.d.ts.map +0 -1
  368. package/dist/id-autocomplete-list-EzLpF23C.d.ts.map +0 -1
  369. package/dist/id-autocomplete-list-option-CB5B07Hi.d.ts.map +0 -1
  370. package/dist/index--hDSfvJT.d.ts.map +0 -1
  371. package/dist/index--okzibnx.d.ts +0 -1
  372. package/dist/index-BLwMeReG.d.ts +0 -1
  373. package/dist/index-Cw3C7_1f.d.ts +0 -1
  374. package/dist/index-E7Wvm5uX.d.ts +0 -1
  375. package/dist/index-J3R2mDFQ.d.ts +0 -1
  376. package/dist/input-BpEQjaWV.d.ts.map +0 -1
  377. package/dist/json-viewer-DaTgmzkS.d.ts +0 -8
  378. package/dist/json-viewer-DaTgmzkS.d.ts.map +0 -1
  379. package/dist/message-list-C4mPpBBa.d.ts.map +0 -1
  380. package/dist/popover-XSBOuSih.d.ts.map +0 -1
  381. package/dist/radio-eL0Oy86J.d.ts.map +0 -1
  382. package/dist/radio-group-Bkli6nUz.d.ts.map +0 -1
  383. package/dist/radio-group-field-wlqeiLN3.d.ts.map +0 -1
  384. package/dist/search-autocomplete-BJJkrZ1i.d.ts.map +0 -1
  385. package/dist/select-field-C97QIhUL.d.ts.map +0 -1
  386. package/dist/selected-content-CGsK5PR4.d.ts.map +0 -1
  387. package/dist/sidebar-DOoE4krt.d.ts.map +0 -1
  388. package/dist/sidebar-provider-C2eyz9TL.d.ts.map +0 -1
  389. package/dist/splitted-input-diff-CwPedpov.d.ts +0 -18
  390. package/dist/splitted-input-diff-CwPedpov.d.ts.map +0 -1
  391. package/dist/src-CVV6HzQZ.js.map +0 -1
  392. package/dist/text-field-DSInH67J.d.ts +0 -10
  393. package/dist/text-field-DSInH67J.d.ts.map +0 -1
  394. package/dist/text-input-8zXIWHLi.d.ts.map +0 -1
  395. package/dist/text-input-diff-B0vLSKQm.d.ts +0 -20
  396. package/dist/text-input-diff-B0vLSKQm.d.ts.map +0 -1
  397. package/dist/tooltip-BxS9HpML.d.ts.map +0 -1
  398. package/dist/types-BTq-St7H.d.ts.map +0 -1
  399. package/dist/types-Bsn62tJB.d.ts.map +0 -1
  400. package/dist/types-C04Q_Fan.d.ts.map +0 -1
  401. package/dist/types-CNbvfWjh.d.ts.map +0 -1
  402. package/dist/use-id-autocomplete-By7YSChC.d.ts.map +0 -1
  403. package/dist/use-search-autocomplete-IfcQ_gKh.d.ts.map +0 -1
  404. package/dist/value-transformer-DQjqtNih.d.ts.map +0 -1
  405. package/dist/with-field-validation-Di5D8vU-.d.ts.map +0 -1
@@ -1,4 +1,6 @@
1
- import { a as NodeStatus, i as NodeSortType, n as NodeSortComparisonFn, o as SidebarIcon, r as NodeSortOrder, s as SidebarNode, t as FlattenedNode } from "../../../types-CNbvfWjh.js";
2
- import { n as SidebarProps, t as Sidebar } from "../../../sidebar-DOoE4krt.js";
3
- import { n as useSidebar, t as SidebarProvider } from "../../../sidebar-provider-C2eyz9TL.js";
4
- export { FlattenedNode, NodeSortComparisonFn, NodeSortOrder, NodeSortType, NodeStatus, Sidebar, SidebarIcon, SidebarNode, SidebarProps, SidebarProvider, useSidebar };
1
+ import { a as NodeStatus, i as NodeSortType, n as NodeSortComparisonFn, o as SidebarIcon, r as NodeSortOrder, s as SidebarNode, t as FlattenedNode } from "../../../types-FTqFl5du.js";
2
+ import { n as SidebarProps, t as Sidebar } from "../../../sidebar-DFqreKf1.js";
3
+ import { n as useSidebar, t as SidebarProvider } from "../../../sidebar-provider-CZHhqW5n.js";
4
+ import "../../../index-C-Tup7Br.js";
5
+ export { type FlattenedNode, type NodeSortComparisonFn, type NodeSortOrder, type NodeSortType, type NodeStatus, Sidebar, type SidebarIcon, type SidebarNode, SidebarProps, SidebarProvider, useSidebar };
6
+ export {};
@@ -1,2 +1,3 @@
1
- import { n as SidebarProps, t as Sidebar } from "../../../sidebar-DOoE4krt.js";
2
- export { Sidebar, SidebarProps };
1
+ import { n as SidebarProps, t as Sidebar } from "../../../sidebar-DFqreKf1.js";
2
+ export { Sidebar, SidebarProps };
3
+ export {};
@@ -1,4 +1,4 @@
1
- import { t as Icon } from "../../../icon-C4QOpsdI.js";
1
+ import { t as Icon } from "../../../icon-CHR45tj_.js";
2
2
  import { triggerEvent } from "./utils.js";
3
3
  import { useSidebar } from "./subcomponents/sidebar-provider/sidebar-provider.js";
4
4
  import { SidebarContentArea } from "./subcomponents/sidebar-content-area.js";
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","names":["useCallback","useEffect","twMerge","Icon","SidebarContentArea","SidebarHeader","SidebarPinningArea","useSidebar","SidebarSearch","useSidebarResize","triggerEvent","Sidebar","activeNodeId","onActiveNodeChange","nodes","sidebarIcon","sidebarTitle","defaultLevel","enableMacros","allowPinning","resizable","showSearchBar","showStatusFilter","extraFooterContent","initialWidth","maxWidth","className","handleOnTitleClick","isLoading","nodeSortType","nodeSortOrder","sidebarRef","startResizing","isResizing","isSidebarOpen","handleToggleSidebar","defaultWidth","minWidth","pinnedNodePath","setNodes","openLevel","togglePin","syncActiveNodeId","setActiveNodeChangeCallback","providerNodes","currentSortType","currentSortOrder","length","handleActiveNodeChange","node","current","hasPinnedNodes","lastPinnedNodeId","id","width"],"sources":["../../../../src/ui/components/sidebar/sidebar.tsx"],"sourcesContent":["import { useCallback, useEffect } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Icon } from \"../../../powerhouse/index.js\";\nimport { SidebarContentArea } from \"./subcomponents/sidebar-content-area.js\";\nimport { SidebarHeader } from \"./subcomponents/sidebar-header.js\";\nimport { SidebarPinningArea } from \"./subcomponents/sidebar-pinning-area.js\";\nimport { useSidebar } from \"./subcomponents/sidebar-provider/index.js\";\nimport { SidebarSearch } from \"./subcomponents/sidebar-search/index.js\";\nimport type { NodeSortOrder, NodeSortType, SidebarNode } from \"./types.js\";\nimport { useSidebarResize } from \"./use-sidebar-resize.js\";\nimport { triggerEvent } from \"./utils.js\";\n\nexport interface SidebarProps {\n /**\n * The ID of the currently active node\n */\n activeNodeId?: string;\n /**\n * Callback function to update the active node\n */\n onActiveNodeChange?: (newNode: SidebarNode) => void;\n /**\n * The nodes to be displayed in the sidebar\n */\n nodes?: SidebarNode[];\n /**\n * Which level should be shown by default (i.e., level 1).\n * @default 1 It is 1-indexed.\n */\n defaultLevel?: number;\n /**\n * Enables the vertical resizing of the sidebar\n * @default true\n */\n resizable?: boolean;\n /**\n * Whether pinning functionality is enabled for nodes\n * @default true\n */\n allowPinning?: boolean;\n /**\n * Configurable levels (e.g., 4). If its zero, then no buttons are shown (default).\n * @default 0\n */\n enableMacros?: number;\n /**\n * Whether to display the search bar in the sidebar\n * @default true\n */\n showSearchBar?: boolean;\n /**\n * Whether to display the status filter button in the sidebar. This option is ignored if `showSearchBar` is `false`.\n * @default false\n */\n showStatusFilter?: boolean;\n /**\n * The title that appears at the top of the sidebar, providing context or a heading for the hierarchy displayed within it.\n */\n sidebarTitle?: string;\n /**\n * An optional icon that can be displayed next to the sidebar title or at the top of the sidebar.\n */\n sidebarIcon?: React.ReactNode;\n /**\n * An optional footer content that can be displayed at the bottom of the sidebar.\n */\n extraFooterContent?: React.ReactNode;\n /**\n * The initial width of the sidebar.\n * @default 300\n */\n initialWidth?: number;\n /**\n * The maximum width of the sidebar.\n */\n maxWidth?: number;\n /**\n * Optional className for the sidebar container\n */\n className?: string;\n\n /**\n * Callback function triggered when the sidebar title is clicked.\n */\n handleOnTitleClick?: () => void;\n\n /**\n * Whether the sidebar is in a loading state, displaying skeleton items\n * @default false\n */\n isLoading?: boolean;\n /**\n * The type of sorting to apply to all nodes recursively.\n * Can be \"alphabetical\", \"natural\", or a custom comparison function.\n * When undefined, nodes maintain their original order.\n * Affects all levels of the tree hierarchy.\n */\n nodeSortType?: NodeSortType;\n /**\n * The order direction for sorting nodes (\"asc\" or \"desc\").\n * Only applicable when nodeSortType is defined.\n * @default \"asc\"\n */\n nodeSortOrder?: NodeSortOrder;\n}\n\n/**\n * Sidebar component that provides a collapsible and resizable navigation panel\n * with support for hierarchical data, search, pinning, and custom styling.\n */\nexport const Sidebar: React.FC<SidebarProps> = ({\n activeNodeId,\n onActiveNodeChange,\n nodes,\n sidebarIcon,\n sidebarTitle,\n defaultLevel = 1,\n enableMacros = 0,\n allowPinning = true,\n resizable = true,\n showSearchBar = true,\n showStatusFilter = false,\n extraFooterContent,\n initialWidth = 300,\n maxWidth,\n className,\n handleOnTitleClick,\n isLoading = false,\n nodeSortType,\n nodeSortOrder = \"asc\",\n}) => {\n const {\n sidebarRef,\n startResizing,\n isResizing,\n isSidebarOpen,\n handleToggleSidebar,\n } = useSidebarResize({\n defaultWidth: initialWidth,\n minWidth: 220,\n maxWidth,\n });\n\n const {\n pinnedNodePath,\n setNodes,\n openLevel,\n togglePin,\n syncActiveNodeId,\n setActiveNodeChangeCallback,\n nodes: providerNodes,\n nodeSortType: currentSortType,\n nodeSortOrder: currentSortOrder,\n } = useSidebar();\n\n useEffect(() => {\n if (nodes) {\n setNodes(nodes, nodeSortType, nodeSortOrder);\n }\n }, [nodes, setNodes, nodeSortType, nodeSortOrder]);\n\n useEffect(() => {\n if (\n !nodes &&\n providerNodes.length > 0 &&\n (nodeSortType !== currentSortType || nodeSortOrder !== currentSortOrder)\n ) {\n setNodes(providerNodes, nodeSortType, nodeSortOrder);\n }\n }, [\n nodes,\n providerNodes,\n setNodes,\n nodeSortType,\n nodeSortOrder,\n currentSortType,\n currentSortOrder,\n ]);\n\n // Initialize default expanded level on mount.\n // openLevel intentionally omitted — it changes every time currentRoots\n // changes, which would cause an infinite loop.\n useEffect(() => {\n if (defaultLevel > 1) {\n openLevel(defaultLevel);\n }\n }, [defaultLevel]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleActiveNodeChange = useCallback(\n (node: SidebarNode) => {\n onActiveNodeChange?.(node);\n triggerEvent(\"sidebar:change\", { node }, sidebarRef.current);\n },\n [onActiveNodeChange, sidebarRef],\n );\n useEffect(() => {\n syncActiveNodeId(activeNodeId);\n }, [activeNodeId, syncActiveNodeId]);\n\n useEffect(() => {\n setActiveNodeChangeCallback(handleActiveNodeChange);\n }, [handleActiveNodeChange, setActiveNodeChangeCallback]);\n\n useEffect(() => {\n const hasPinnedNodes = pinnedNodePath.length > 0;\n if (!allowPinning && hasPinnedNodes) {\n const lastPinnedNodeId = pinnedNodePath[pinnedNodePath.length - 1].id;\n togglePin(lastPinnedNodeId);\n }\n }, [allowPinning, pinnedNodePath, togglePin]);\n\n return (\n <aside\n ref={sidebarRef}\n style={{ width: \"min(100%, var(--sidebar-width))\" }}\n className={twMerge(\n \"group peer relative flex h-svh max-h-screen flex-col bg-sidebar text-sidebar-foreground shadow-lg transition-[width] duration-75 ease-linear\",\n isResizing && \"transition-none\",\n className,\n )}\n >\n {isSidebarOpen && (\n <>\n <SidebarHeader\n sidebarTitle={sidebarTitle}\n sidebarIcon={sidebarIcon}\n enableMacros={enableMacros}\n handleOnTitleClick={handleOnTitleClick}\n />\n\n {allowPinning && pinnedNodePath.length > 0 && <SidebarPinningArea />}\n <SidebarContentArea\n allowPinning={allowPinning}\n isLoading={isLoading}\n />\n {showSearchBar && (\n <SidebarSearch showStatusFilter={showStatusFilter} />\n )}\n {extraFooterContent && (\n <div className=\"w-full border-t border-sidebar-border p-2\">\n {extraFooterContent}\n </div>\n )}\n </>\n )}\n\n {resizable && (\n <div\n className=\"group/sidebar-resizer absolute top-0 right-0 h-full w-[10px] translate-x-1/2 cursor-ew-resize select-none\"\n onMouseDown={startResizing}\n >\n <div\n className={twMerge(\n \"relative h-full w-px translate-x-[5px] transition-colors group-hover/sidebar-resizer:hover-effect\",\n isResizing && \"cursor-default bg-info\",\n !isSidebarOpen && \"bg-secondary\",\n )}\n >\n <button\n type=\"button\"\n className={twMerge(\n \"absolute top-14 right-0 size-4 translate-x-1/2 rounded-full bg-muted-foreground\",\n \"opacity-0 transition-opacity group-hover/sidebar-resizer:opacity-100\",\n )}\n onClick={handleToggleSidebar}\n >\n <Icon\n name=\"Caret\"\n size={16}\n className={twMerge(\n \"min-w-4 text-foreground\",\n isSidebarOpen && \"-rotate-180\",\n )}\n />\n </button>\n </div>\n </div>\n )}\n </aside>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;AA8GA,MAAaW,WAAmC,EAC9CC,cACAC,oBACAC,OACAC,aACAC,cACAC,eAAe,GACfC,eAAe,GACfC,eAAe,MACfC,YAAY,MACZC,gBAAgB,MAChBC,mBAAmB,OACnBC,oBACAC,eAAe,KACfC,UACAC,WACAC,oBACAC,YAAY,OACZC,cACAC,gBAAgB,YACZ;CACJ,MAAM,EACJC,YACAC,eACAC,YACAC,eACAC,wBACE1B,iBAAiB;EACnB2B,cAAcZ;EACda,UAAU;EACVZ;EACD,CAAC;CAEF,MAAM,EACJa,gBACAC,UACAC,WACAC,WACAC,kBACAC,6BACA7B,OAAO8B,eACPf,cAAcgB,iBACdf,eAAegB,qBACbvC,YAAY;AAEhBN,iBAAgB;AACd,MAAIa,MACFyB,UAASzB,OAAOe,cAAcC,cAAc;IAE7C;EAAChB;EAAOyB;EAAUV;EAAcC;EAAc,CAAC;AAElD7B,iBAAgB;AACd,MACE,CAACa,SACD8B,cAAcG,SAAS,MACtBlB,iBAAiBgB,mBAAmBf,kBAAkBgB,kBAEvDP,UAASK,eAAef,cAAcC,cAAc;IAErD;EACDhB;EACA8B;EACAL;EACAV;EACAC;EACAe;EACAC;EACD,CAAC;AAKF7C,iBAAgB;AACd,MAAIgB,eAAe,EACjBuB,WAAUvB,aAAa;IAExB,CAACA,aAAa,CAAC;CAElB,MAAM+B,yBAAyBhD,aAC5BiD,SAAsB;AACrBpC,uBAAqBoC,KAAK;AAC1BvC,eAAa,kBAAkB,EAAEuC,MAAM,EAAElB,WAAWmB,QAAQ;IAE9D,CAACrC,oBAAoBkB,WACvB,CAAC;AACD9B,iBAAgB;AACdyC,mBAAiB9B,aAAa;IAC7B,CAACA,cAAc8B,iBAAiB,CAAC;AAEpCzC,iBAAgB;AACd0C,8BAA4BK,uBAAuB;IAClD,CAACA,wBAAwBL,4BAA4B,CAAC;AAEzD1C,iBAAgB;EACd,MAAMkD,iBAAiBb,eAAeS,SAAS;AAC/C,MAAI,CAAC5B,gBAAgBgC,gBAAgB;GACnC,MAAMC,mBAAmBd,eAAeA,eAAeS,SAAS,GAAGM;AACnEZ,aAAUW,iBAAiB;;IAE5B;EAACjC;EAAcmB;EAAgBG;EAAU,CAAC;AAE7C,QACE,qBAAC,SAAD;EACE,KAAKV;EACL,OAAO,EAAEuB,OAAO,mCAAmC;EACnD,WAAWpD,QACT,gJACA+B,cAAc,mBACdP,UACD;YAPH,CASGQ,iBACC,qBAAA,YAAA,EAAA,UAAA;GACE,oBAAC,eAAD;IACgBlB;IACDD;IACCG;IACMS;IAAmB,CAAA;GAGxCR,gBAAgBmB,eAAeS,SAAS,KAAK,oBAAC,oBAAD,EAAsB,CAAA;GACpE,oBAAC,oBAAD;IACgB5B;IACHS;IAAU,CAAA;GAEtBP,iBACC,oBAAC,eAAD,EAAiCC,kBAClC,CAAA;GACAC,sBACC,oBAAC,OAAD;IAAK,WAAU;cACZA;IAEJ,CAAA;GAEJ,EAAA,CAAA,EAEAH,aACC,oBAAC,OAAD;GACE,WAAU;GACV,aAAaY;aAEb,oBAAC,OAAD;IACE,WAAW9B,QACT,qGACA+B,cAAc,0BACd,CAACC,iBAAiB,eACnB;cAED,oBAAC,UAAD;KACE,MAAK;KACL,WAAWhC,QACT,mFACA,uEACD;KACD,SAASiC;eAET,oBAAC,MAAD;MACE,MAAK;MACL,MAAM;MACN,WAAWjC,QACT,2BACAgC,iBAAiB,cAClB;MAAC,CAAA;KAEE,CAAA;IACL,CAAA;GAER,CAAA,CACK"}
1
+ {"version":3,"file":"sidebar.js","names":["useCallback","useEffect","twMerge","Icon","SidebarContentArea","SidebarHeader","SidebarPinningArea","useSidebar","SidebarSearch","useSidebarResize","triggerEvent","Sidebar","activeNodeId","onActiveNodeChange","nodes","sidebarIcon","sidebarTitle","defaultLevel","enableMacros","allowPinning","resizable","showSearchBar","showStatusFilter","extraFooterContent","initialWidth","maxWidth","className","handleOnTitleClick","isLoading","nodeSortType","nodeSortOrder","sidebarRef","startResizing","isResizing","isSidebarOpen","handleToggleSidebar","defaultWidth","minWidth","pinnedNodePath","setNodes","openLevel","togglePin","syncActiveNodeId","setActiveNodeChangeCallback","providerNodes","currentSortType","currentSortOrder","length","handleActiveNodeChange","node","current","hasPinnedNodes","lastPinnedNodeId","id","width"],"sources":["../../../../src/ui/components/sidebar/sidebar.tsx"],"sourcesContent":["import { useCallback, useEffect } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Icon } from \"../../../powerhouse/index.js\";\nimport { SidebarContentArea } from \"./subcomponents/sidebar-content-area.js\";\nimport { SidebarHeader } from \"./subcomponents/sidebar-header.js\";\nimport { SidebarPinningArea } from \"./subcomponents/sidebar-pinning-area.js\";\nimport { useSidebar } from \"./subcomponents/sidebar-provider/index.js\";\nimport { SidebarSearch } from \"./subcomponents/sidebar-search/index.js\";\nimport type { NodeSortOrder, NodeSortType, SidebarNode } from \"./types.js\";\nimport { useSidebarResize } from \"./use-sidebar-resize.js\";\nimport { triggerEvent } from \"./utils.js\";\n\nexport interface SidebarProps {\n /**\n * The ID of the currently active node\n */\n activeNodeId?: string;\n /**\n * Callback function to update the active node\n */\n onActiveNodeChange?: (newNode: SidebarNode) => void;\n /**\n * The nodes to be displayed in the sidebar\n */\n nodes?: SidebarNode[];\n /**\n * Which level should be shown by default (i.e., level 1).\n * @default 1 It is 1-indexed.\n */\n defaultLevel?: number;\n /**\n * Enables the vertical resizing of the sidebar\n * @default true\n */\n resizable?: boolean;\n /**\n * Whether pinning functionality is enabled for nodes\n * @default true\n */\n allowPinning?: boolean;\n /**\n * Configurable levels (e.g., 4). If its zero, then no buttons are shown (default).\n * @default 0\n */\n enableMacros?: number;\n /**\n * Whether to display the search bar in the sidebar\n * @default true\n */\n showSearchBar?: boolean;\n /**\n * Whether to display the status filter button in the sidebar. This option is ignored if `showSearchBar` is `false`.\n * @default false\n */\n showStatusFilter?: boolean;\n /**\n * The title that appears at the top of the sidebar, providing context or a heading for the hierarchy displayed within it.\n */\n sidebarTitle?: string;\n /**\n * An optional icon that can be displayed next to the sidebar title or at the top of the sidebar.\n */\n sidebarIcon?: React.ReactNode;\n /**\n * An optional footer content that can be displayed at the bottom of the sidebar.\n */\n extraFooterContent?: React.ReactNode;\n /**\n * The initial width of the sidebar.\n * @default 300\n */\n initialWidth?: number;\n /**\n * The maximum width of the sidebar.\n */\n maxWidth?: number;\n /**\n * Optional className for the sidebar container\n */\n className?: string;\n\n /**\n * Callback function triggered when the sidebar title is clicked.\n */\n handleOnTitleClick?: () => void;\n\n /**\n * Whether the sidebar is in a loading state, displaying skeleton items\n * @default false\n */\n isLoading?: boolean;\n /**\n * The type of sorting to apply to all nodes recursively.\n * Can be \"alphabetical\", \"natural\", or a custom comparison function.\n * When undefined, nodes maintain their original order.\n * Affects all levels of the tree hierarchy.\n */\n nodeSortType?: NodeSortType;\n /**\n * The order direction for sorting nodes (\"asc\" or \"desc\").\n * Only applicable when nodeSortType is defined.\n * @default \"asc\"\n */\n nodeSortOrder?: NodeSortOrder;\n}\n\n/**\n * Sidebar component that provides a collapsible and resizable navigation panel\n * with support for hierarchical data, search, pinning, and custom styling.\n */\nexport const Sidebar: React.FC<SidebarProps> = ({\n activeNodeId,\n onActiveNodeChange,\n nodes,\n sidebarIcon,\n sidebarTitle,\n defaultLevel = 1,\n enableMacros = 0,\n allowPinning = true,\n resizable = true,\n showSearchBar = true,\n showStatusFilter = false,\n extraFooterContent,\n initialWidth = 300,\n maxWidth,\n className,\n handleOnTitleClick,\n isLoading = false,\n nodeSortType,\n nodeSortOrder = \"asc\",\n}) => {\n const {\n sidebarRef,\n startResizing,\n isResizing,\n isSidebarOpen,\n handleToggleSidebar,\n } = useSidebarResize({\n defaultWidth: initialWidth,\n minWidth: 220,\n maxWidth,\n });\n\n const {\n pinnedNodePath,\n setNodes,\n openLevel,\n togglePin,\n syncActiveNodeId,\n setActiveNodeChangeCallback,\n nodes: providerNodes,\n nodeSortType: currentSortType,\n nodeSortOrder: currentSortOrder,\n } = useSidebar();\n\n useEffect(() => {\n if (nodes) {\n setNodes(nodes, nodeSortType, nodeSortOrder);\n }\n }, [nodes, setNodes, nodeSortType, nodeSortOrder]);\n\n useEffect(() => {\n if (\n !nodes &&\n providerNodes.length > 0 &&\n (nodeSortType !== currentSortType || nodeSortOrder !== currentSortOrder)\n ) {\n setNodes(providerNodes, nodeSortType, nodeSortOrder);\n }\n }, [\n nodes,\n providerNodes,\n setNodes,\n nodeSortType,\n nodeSortOrder,\n currentSortType,\n currentSortOrder,\n ]);\n\n // Initialize default expanded level on mount.\n // openLevel intentionally omitted — it changes every time currentRoots\n // changes, which would cause an infinite loop.\n useEffect(() => {\n if (defaultLevel > 1) {\n openLevel(defaultLevel);\n }\n }, [defaultLevel]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleActiveNodeChange = useCallback(\n (node: SidebarNode) => {\n onActiveNodeChange?.(node);\n triggerEvent(\"sidebar:change\", { node }, sidebarRef.current);\n },\n [onActiveNodeChange, sidebarRef],\n );\n useEffect(() => {\n syncActiveNodeId(activeNodeId);\n }, [activeNodeId, syncActiveNodeId]);\n\n useEffect(() => {\n setActiveNodeChangeCallback(handleActiveNodeChange);\n }, [handleActiveNodeChange, setActiveNodeChangeCallback]);\n\n useEffect(() => {\n const hasPinnedNodes = pinnedNodePath.length > 0;\n if (!allowPinning && hasPinnedNodes) {\n const lastPinnedNodeId = pinnedNodePath[pinnedNodePath.length - 1].id;\n togglePin(lastPinnedNodeId);\n }\n }, [allowPinning, pinnedNodePath, togglePin]);\n\n return (\n <aside\n ref={sidebarRef}\n style={{ width: \"min(100%, var(--sidebar-width))\" }}\n className={twMerge(\n \"group peer relative flex h-svh max-h-screen flex-col bg-sidebar text-sidebar-foreground shadow-lg transition-[width] duration-75 ease-linear\",\n isResizing && \"transition-none\",\n className,\n )}\n >\n {isSidebarOpen && (\n <>\n <SidebarHeader\n sidebarTitle={sidebarTitle}\n sidebarIcon={sidebarIcon}\n enableMacros={enableMacros}\n handleOnTitleClick={handleOnTitleClick}\n />\n\n {allowPinning && pinnedNodePath.length > 0 && <SidebarPinningArea />}\n <SidebarContentArea\n allowPinning={allowPinning}\n isLoading={isLoading}\n />\n {showSearchBar && (\n <SidebarSearch showStatusFilter={showStatusFilter} />\n )}\n {extraFooterContent && (\n <div className=\"w-full border-t border-sidebar-border p-2\">\n {extraFooterContent}\n </div>\n )}\n </>\n )}\n\n {resizable && (\n <div\n className=\"group/sidebar-resizer absolute top-0 right-0 h-full w-[10px] translate-x-1/2 cursor-ew-resize select-none\"\n onMouseDown={startResizing}\n >\n <div\n className={twMerge(\n \"relative h-full w-px translate-x-[5px] transition-colors group-hover/sidebar-resizer:hover-effect\",\n isResizing && \"cursor-default bg-info\",\n !isSidebarOpen && \"bg-secondary\",\n )}\n >\n <button\n type=\"button\"\n className={twMerge(\n \"absolute top-14 right-0 size-4 translate-x-1/2 rounded-full bg-muted-foreground\",\n \"opacity-0 transition-opacity group-hover/sidebar-resizer:opacity-100\",\n )}\n onClick={handleToggleSidebar}\n >\n <Icon\n name=\"Caret\"\n size={16}\n className={twMerge(\n \"min-w-4 text-foreground\",\n isSidebarOpen && \"-rotate-180\",\n )}\n />\n </button>\n </div>\n </div>\n )}\n </aside>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;AA8GA,MAAaW,WAAmC,EAC9CC,cACAC,oBACAC,OACAC,aACAC,cACAC,eAAe,GACfC,eAAe,GACfC,eAAe,MACfC,YAAY,MACZC,gBAAgB,MAChBC,mBAAmB,OACnBC,oBACAC,eAAe,KACfC,UACAC,WACAC,oBACAC,YAAY,OACZC,cACAC,gBAAgB,YACZ;CACJ,MAAM,EACJC,YACAC,eACAC,YACAC,eACAC,wBACE1B,iBAAiB;EACnB2B,cAAcZ;EACda,UAAU;EACVZ;CACF,CAAC;CAED,MAAM,EACJa,gBACAC,UACAC,WACAC,WACAC,kBACAC,6BACA7B,OAAO8B,eACPf,cAAcgB,iBACdf,eAAegB,qBACbvC,WAAW;CAEfN,gBAAgB;EACd,IAAIa,OACFyB,SAASzB,OAAOe,cAAcC,aAAa;CAE/C,GAAG;EAAChB;EAAOyB;EAAUV;EAAcC;CAAa,CAAC;CAEjD7B,gBAAgB;EACd,IACE,CAACa,SACD8B,cAAcG,SAAS,MACtBlB,iBAAiBgB,mBAAmBf,kBAAkBgB,mBAEvDP,SAASK,eAAef,cAAcC,aAAa;CAEvD,GAAG;EACDhB;EACA8B;EACAL;EACAV;EACAC;EACAe;EACAC;CAAgB,CACjB;CAKD7C,gBAAgB;EACd,IAAIgB,eAAe,GACjBuB,UAAUvB,YAAY;CAE1B,GAAG,CAACA,YAAY,CAAC;CAEjB,MAAM+B,yBAAyBhD,aAC5BiD,SAAsB;EACrBpC,qBAAqBoC,IAAI;EACzBvC,aAAa,kBAAkB,EAAEuC,KAAK,GAAGlB,WAAWmB,OAAO;CAC7D,GACA,CAACrC,oBAAoBkB,UAAU,CACjC;CACA9B,gBAAgB;EACdyC,iBAAiB9B,YAAY;CAC/B,GAAG,CAACA,cAAc8B,gBAAgB,CAAC;CAEnCzC,gBAAgB;EACd0C,4BAA4BK,sBAAsB;CACpD,GAAG,CAACA,wBAAwBL,2BAA2B,CAAC;CAExD1C,gBAAgB;EACd,MAAMkD,iBAAiBb,eAAeS,SAAS;EAC/C,IAAI,CAAC5B,gBAAgBgC,gBAAgB;GACnC,MAAMC,mBAAmBd,eAAeA,eAAeS,SAAS,EAAE,CAACM;GACnEZ,UAAUW,gBAAgB;EAC5B;CACF,GAAG;EAACjC;EAAcmB;EAAgBG;CAAS,CAAC;CAE5C,OACE,qBAAC,SAAD;EACE,KAAKV;EACL,OAAO,EAAEuB,OAAO,kCAAkC;EAClD,WAAWpD,QACT,gJACA+B,cAAc,mBACdP,SACF;EAPF,UAAA,CASGQ,iBACC,qBAAA,YAAA,EAAA,UAAA;GACE,oBAAC,eAAD;IACgBlB;IACDD;IACCG;IACMS;GAAmB,CAAA;GAGxCR,gBAAgBmB,eAAeS,SAAS,KAAK,oBAAC,oBAAD,CAAmB,CAAA;GACjE,oBAAC,oBAAD;IACgB5B;IACHS;GAAU,CAAA;GAEtBP,iBACC,oBAAC,eAAD,EAAiCC,iBAAiB,CAAA;GAEnDC,sBACC,oBAAC,OAAD;IAAK,WAAU;IACZA,UAAAA;GACE,CAAA;EAET,EAAA,CAAA,GAGDH,aACC,oBAAC,OAAD;GACE,WAAU;GACV,aAAaY;GAEb,UAAA,oBAAC,OAAD;IACE,WAAW9B,QACT,qGACA+B,cAAc,0BACd,CAACC,iBAAiB,cACpB;IAEA,UAAA,oBAAC,UAAD;KACE,MAAK;KACL,WAAWhC,QACT,mFACA,sEACF;KACA,SAASiC;KAET,UAAA,oBAAC,MAAD;MACE,MAAK;MACL,MAAM;MACN,WAAWjC,QACT,2BACAgC,iBAAiB,aACnB;KAAE,CAAA;IAEE,CAAA;GACL,CAAA;EACF,CAAA,CAEF;;AAEX"}
@@ -1,14 +1,9 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
1
  //#region src/ui/components/sidebar/subcomponents/sidebar-content-area.d.ts
4
2
  interface SidebarContentAreaProps {
5
3
  allowPinning?: boolean;
6
4
  isLoading?: boolean;
7
5
  }
8
- declare const SidebarContentArea: ({
9
- allowPinning,
10
- isLoading
11
- }: SidebarContentAreaProps) => react_jsx_runtime0.JSX.Element;
6
+ export declare const SidebarContentArea: ({ allowPinning, isLoading }: SidebarContentAreaProps) => import("react/jsx-runtime").JSX.Element;
12
7
  //#endregion
13
- export { SidebarContentArea };
8
+ export {};
14
9
  //# sourceMappingURL=sidebar-content-area.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-content-area.d.ts","names":[],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-content-area.tsx"],"mappings":";;;UAOU,uBAAA;EACR,YAAA;EACA,SAAA;AAAA;AAAA,cAGW,kBAAA;EAAsB,YAAA;EAAA;AAAA,GAGhC,uBAAA,KAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"sidebar-content-area.d.ts","names":[],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-content-area.tsx"],"mappings":";UAOU;EACR;EACA;;qBAGW,uBAAkB,cAAA,aAG5B,wDAAuB,IAAA"}
@@ -1,4 +1,4 @@
1
- import { t as Icon } from "../../../../icon-C4QOpsdI.js";
1
+ import { t as Icon } from "../../../../icon-CHR45tj_.js";
2
2
  import { SidebarItem } from "./sidebar-item.js";
3
3
  import { useSidebar } from "./sidebar-provider/sidebar-provider.js";
4
4
  import { SidebarSkeleton } from "./sidebar-skeleton.js";
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-content-area.js","names":["AutoSizer","List","twMerge","SidebarItem","useSidebar","SidebarSkeleton","Icon","SidebarContentArea","allowPinning","isLoading","flattenedNodes","toggleNode","togglePin","searchTerm","searchResults","activeSearchIndex","pinnedNodePath","activeNodeId","virtualListRef","onActiveNodeChange","hasPinnedItems","length","renderNode","index","key","style","node","id","width","height"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-content-area.tsx"],"sourcesContent":["import { AutoSizer, List } from \"react-virtualized\";\nimport { twMerge } from \"tailwind-merge\";\nimport { SidebarItem } from \"./sidebar-item.js\";\nimport { useSidebar } from \"./sidebar-provider/index.js\";\nimport { SidebarSkeleton } from \"./sidebar-skeleton.js\";\nimport { Icon } from \"../../../../powerhouse/index.js\";\n\ninterface SidebarContentAreaProps {\n allowPinning?: boolean;\n isLoading?: boolean;\n}\n\nexport const SidebarContentArea = ({\n allowPinning,\n isLoading,\n}: SidebarContentAreaProps) => {\n const {\n flattenedNodes,\n toggleNode,\n togglePin,\n searchTerm,\n searchResults,\n activeSearchIndex,\n pinnedNodePath,\n activeNodeId,\n virtualListRef,\n onActiveNodeChange,\n } = useSidebar();\n const hasPinnedItems = allowPinning && pinnedNodePath.length > 0;\n\n const renderNode = ({\n index,\n key,\n style,\n }: {\n index: number;\n key: string;\n style: React.CSSProperties;\n }) => {\n const node = flattenedNodes[index];\n\n return (\n <SidebarItem\n key={key}\n node={node}\n toggleNode={toggleNode}\n togglePin={togglePin}\n searchTerm={searchTerm}\n searchResults={searchResults}\n activeSearchIndex={activeSearchIndex}\n allowPinning={allowPinning ?? false}\n isActive={activeNodeId === node.id}\n onChange={onActiveNodeChange}\n style={style}\n />\n );\n };\n\n return (\n <div\n className={twMerge(\n \"flex flex-1 flex-col gap-1 overflow-y-auto\",\n hasPinnedItems && \"pt-0.5\",\n )}\n >\n {isLoading ? (\n <SidebarSkeleton />\n ) : flattenedNodes.length === 0 ? (\n <div className=\"flex max-w-full items-center gap-2 p-2 text-sm/5 text-muted-foreground\">\n <Icon name=\"TreeViewSlash\" size={16} className=\"min-w-4\" />\n <span className=\"truncate\">This node is empty</span>\n </div>\n ) : (\n <div className=\"flex-1 overflow-hidden\">\n <AutoSizer>\n {({ width, height }) => (\n <List\n ref={virtualListRef}\n className=\"p-2\"\n width={width}\n height={height}\n rowCount={flattenedNodes.length}\n rowHeight={32 + 8}\n rowRenderer={renderNode}\n />\n )}\n </AutoSizer>\n </div>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;AAYA,MAAaO,sBAAsB,EACjCC,cACAC,gBAC6B;CAC7B,MAAM,EACJC,gBACAC,YACAC,WACAC,YACAC,eACAC,mBACAC,gBACAC,cACAC,gBACAC,uBACEf,YAAY;CAChB,MAAMgB,iBAAiBZ,gBAAgBQ,eAAeK,SAAS;CAE/D,MAAMC,cAAc,EAClBC,OACAC,KACAC,YAKI;EACJ,MAAMC,OAAOhB,eAAea;AAE5B,SACE,oBAAC,aAAD;GAEQG;GACMf;GACDC;GACCC;GACGC;GACIC;GACnB,cAAcP,gBAAgB;GAC9B,UAAUS,iBAAiBS,KAAKC;GAChC,UAAUR;GACHM;GACP,EAXKD,IAWL;;AAIN,QACE,oBAAC,OAAD;EACE,WAAWtB,QACT,8CACAkB,kBAAkB,SACnB;YAEAX,YACC,oBAAC,iBAAD,EAAmB,CAAA,GACjBC,eAAeW,WAAW,IAC5B,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,MAAD;IAAM,MAAK;IAAgB,MAAM;IAAI,WAAU;IAAS,CAAA,EACxD,oBAAC,QAAD;IAAM,WAAU;cAAW;IAAwB,CAAA,CAC/C;OAEN,oBAAC,OAAD;GAAK,WAAU;aACb,oBAAC,WAAD,EAAA,WACI,EAAEO,OAAOC,aACT,oBAAC,MAAD;IACE,KAAKX;IACL,WAAU;IACHU;IACCC;IACR,UAAUnB,eAAeW;IACzB,WAAW;IACX,aAAaC;IAEhB,CAAA,EACQ,CAAA;GAEd,CAAA;EACG,CAAA"}
1
+ {"version":3,"file":"sidebar-content-area.js","names":["AutoSizer","List","twMerge","SidebarItem","useSidebar","SidebarSkeleton","Icon","SidebarContentArea","allowPinning","isLoading","flattenedNodes","toggleNode","togglePin","searchTerm","searchResults","activeSearchIndex","pinnedNodePath","activeNodeId","virtualListRef","onActiveNodeChange","hasPinnedItems","length","renderNode","index","key","style","node","id","width","height"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-content-area.tsx"],"sourcesContent":["import { AutoSizer, List } from \"react-virtualized\";\nimport { twMerge } from \"tailwind-merge\";\nimport { SidebarItem } from \"./sidebar-item.js\";\nimport { useSidebar } from \"./sidebar-provider/index.js\";\nimport { SidebarSkeleton } from \"./sidebar-skeleton.js\";\nimport { Icon } from \"../../../../powerhouse/index.js\";\n\ninterface SidebarContentAreaProps {\n allowPinning?: boolean;\n isLoading?: boolean;\n}\n\nexport const SidebarContentArea = ({\n allowPinning,\n isLoading,\n}: SidebarContentAreaProps) => {\n const {\n flattenedNodes,\n toggleNode,\n togglePin,\n searchTerm,\n searchResults,\n activeSearchIndex,\n pinnedNodePath,\n activeNodeId,\n virtualListRef,\n onActiveNodeChange,\n } = useSidebar();\n const hasPinnedItems = allowPinning && pinnedNodePath.length > 0;\n\n const renderNode = ({\n index,\n key,\n style,\n }: {\n index: number;\n key: string;\n style: React.CSSProperties;\n }) => {\n const node = flattenedNodes[index];\n\n return (\n <SidebarItem\n key={key}\n node={node}\n toggleNode={toggleNode}\n togglePin={togglePin}\n searchTerm={searchTerm}\n searchResults={searchResults}\n activeSearchIndex={activeSearchIndex}\n allowPinning={allowPinning ?? false}\n isActive={activeNodeId === node.id}\n onChange={onActiveNodeChange}\n style={style}\n />\n );\n };\n\n return (\n <div\n className={twMerge(\n \"flex flex-1 flex-col gap-1 overflow-y-auto\",\n hasPinnedItems && \"pt-0.5\",\n )}\n >\n {isLoading ? (\n <SidebarSkeleton />\n ) : flattenedNodes.length === 0 ? (\n <div className=\"flex max-w-full items-center gap-2 p-2 text-sm/5 text-muted-foreground\">\n <Icon name=\"TreeViewSlash\" size={16} className=\"min-w-4\" />\n <span className=\"truncate\">This node is empty</span>\n </div>\n ) : (\n <div className=\"flex-1 overflow-hidden\">\n <AutoSizer>\n {({ width, height }) => (\n <List\n ref={virtualListRef}\n className=\"p-2\"\n width={width}\n height={height}\n rowCount={flattenedNodes.length}\n rowHeight={32 + 8}\n rowRenderer={renderNode}\n />\n )}\n </AutoSizer>\n </div>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;AAYA,MAAaO,sBAAsB,EACjCC,cACAC,gBAC6B;CAC7B,MAAM,EACJC,gBACAC,YACAC,WACAC,YACAC,eACAC,mBACAC,gBACAC,cACAC,gBACAC,uBACEf,WAAW;CACf,MAAMgB,iBAAiBZ,gBAAgBQ,eAAeK,SAAS;CAE/D,MAAMC,cAAc,EAClBC,OACAC,KACAC,YAKI;EACJ,MAAMC,OAAOhB,eAAea;EAE5B,OACE,oBAAC,aAAD;GAEQG;GACMf;GACDC;GACCC;GACGC;GACIC;GACnB,cAAcP,gBAAgB;GAC9B,UAAUS,iBAAiBS,KAAKC;GAChC,UAAUR;GACHM;EAAM,GAVRD,GAUQ;CAGnB;CAEA,OACE,oBAAC,OAAD;EACE,WAAWtB,QACT,8CACAkB,kBAAkB,QACpB;EAECX,UAAAA,YACC,oBAAC,iBAAD,CAAgB,CAAA,IACdC,eAAeW,WAAW,IAC5B,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,oBAAC,MAAD;IAAM,MAAK;IAAgB,MAAM;IAAI,WAAU;GAAS,CAAA,GACxD,oBAAC,QAAD;IAAM,WAAU;IAAW,UAAA;GAAwB,CAAA,CAChD;EAEL,CAAA,IAAA,oBAAC,OAAD;GAAK,WAAU;GACb,UAAA,oBAAC,WAAD,EAAA,WACI,EAAEO,OAAOC,aACT,oBAAC,MAAD;IACE,KAAKX;IACL,WAAU;IACHU;IACCC;IACR,UAAUnB,eAAeW;IACzB,WAAW;IACX,aAAaC;GAAW,CAAA,EAGnB,CAAA;EACR,CAAA;CAEJ,CAAA;AAET"}
@@ -5,7 +5,7 @@ interface SidebarHeaderProps {
5
5
  enableMacros?: number;
6
6
  handleOnTitleClick?: () => void;
7
7
  }
8
- declare const SidebarHeader: React.FC<SidebarHeaderProps>;
8
+ export declare const SidebarHeader: React.FC<SidebarHeaderProps>;
9
9
  //#endregion
10
- export { SidebarHeader };
10
+ export {};
11
11
  //# sourceMappingURL=sidebar-header.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-header.d.ts","names":[],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-header.tsx"],"mappings":";UAGU,kBAAA;EACR,YAAA;EACA,WAAA,GAAc,KAAA,CAAM,SAAA;EACpB,YAAA;EACA,kBAAA;AAAA;AAAA,cAGW,aAAA,EAAe,KAAA,CAAM,EAAA,CAAG,kBAAA"}
1
+ {"version":3,"file":"sidebar-header.d.ts","names":[],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-header.tsx"],"mappings":";UAGU;EACR;EACA,cAAc,MAAM;EACpB;EACA;;qBAGW,eAAe,MAAM,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-header.js","names":["twMerge","useSidebar","SidebarHeader","sidebarTitle","sidebarIcon","enableMacros","handleOnTitleClick","maxDepth","openLevel","titleElement","baseTitleClasses","Array","from","length","Math","min","map","_","index","isDisabled"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-header.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\nimport { useSidebar } from \"./sidebar-provider/index.js\";\n\ninterface SidebarHeaderProps {\n sidebarTitle?: string;\n sidebarIcon?: React.ReactNode;\n enableMacros?: number;\n handleOnTitleClick?: () => void;\n}\n\nexport const SidebarHeader: React.FC<SidebarHeaderProps> = ({\n sidebarTitle,\n sidebarIcon,\n enableMacros = 0,\n handleOnTitleClick,\n}) => {\n const { maxDepth, openLevel } = useSidebar();\n if (!sidebarTitle && !sidebarIcon && !enableMacros) {\n return null;\n }\n let titleElement;\n const baseTitleClasses = \"truncate text-sm font-semibold text-foreground\";\n if (handleOnTitleClick) {\n titleElement = (\n <button\n type=\"button\"\n className={twMerge(baseTitleClasses, \"cursor-pointer\")}\n onClick={handleOnTitleClick}\n >\n {sidebarTitle}\n </button>\n );\n } else {\n titleElement = <div className={baseTitleClasses}>{sidebarTitle}</div>;\n }\n\n return (\n <header className=\"flex items-center justify-between gap-2 border-b border-sidebar-border bg-sidebar p-4\">\n <div className=\"flex items-center gap-2 truncate\">\n {sidebarIcon}\n {titleElement}\n </div>\n\n {enableMacros > 0 && (\n <div className=\"flex items-center gap-2 select-none\">\n {Array.from({ length: Math.min(enableMacros, 4) }).map((_, index) => {\n const isDisabled = index + 1 > maxDepth;\n\n return (\n <div\n key={`macro-${index}`}\n role=\"button\"\n tabIndex={0}\n className={twMerge(\n \"w-[26px] rounded-lg bg-sidebar p-1 text-center text-xs text-sidebar-foreground\",\n !isDisabled && \"hover:hover-effect\",\n isDisabled &&\n \"cursor-not-allowed bg-muted text-muted-foreground\",\n )}\n onClick={() => {\n if (!isDisabled) {\n openLevel(index + 1);\n }\n }}\n >\n {index + 1}\n </div>\n );\n })}\n </div>\n )}\n </header>\n );\n};\n"],"mappings":";;;;AAUA,MAAaE,iBAA+C,EAC1DC,cACAC,aACAC,eAAe,GACfC,yBACI;CACJ,MAAM,EAAEC,UAAUC,cAAcP,YAAY;AAC5C,KAAI,CAACE,gBAAgB,CAACC,eAAe,CAACC,aACpC,QAAO;CAET,IAAII;CACJ,MAAMC,mBAAmB;AACzB,KAAIJ,mBACFG,gBACE,oBAAC,UAAD;EACE,MAAK;EACL,WAAWT,QAAQU,kBAAkB,iBAAiB;EACtD,SAASJ;YAERH;EAEJ,CAAA;KAEDM,gBAAe,oBAAC,OAAD;EAAK,WAAWC;YAAmBP;EAAmB,CAAA;AAGvE,QACE,qBAAC,UAAD;EAAQ,WAAU;YAAlB,CACE,qBAAC,OAAD;GAAK,WAAU;aAAf,CACGC,aACAK,aACE;MAEJJ,eAAe,KACd,oBAAC,OAAD;GAAK,WAAU;aACZM,MAAMC,KAAK,EAAEC,QAAQC,KAAKC,IAAIV,cAAc,EAAC,EAAG,CAAC,CAACW,KAAKC,GAAGC,UAAU;IACnE,MAAMC,aAAaD,QAAQ,IAAIX;AAE/B,WACE,oBAAC,OAAD;KAEE,MAAK;KACL,UAAU;KACV,WAAWP,QACT,kFACA,CAACmB,cAAc,sBACfA,cACE,oDACH;KACD,eAAe;AACb,UAAI,CAACA,WACHX,WAAUU,QAAQ,EAAE;;eAIvBA,QAAQ;KACL,EAhBC,SAASA,QAgBV;KAER;GAEL,CAAA,CACM"}
1
+ {"version":3,"file":"sidebar-header.js","names":["twMerge","useSidebar","SidebarHeader","sidebarTitle","sidebarIcon","enableMacros","handleOnTitleClick","maxDepth","openLevel","titleElement","baseTitleClasses","Array","from","length","Math","min","map","_","index","isDisabled"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-header.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\nimport { useSidebar } from \"./sidebar-provider/index.js\";\n\ninterface SidebarHeaderProps {\n sidebarTitle?: string;\n sidebarIcon?: React.ReactNode;\n enableMacros?: number;\n handleOnTitleClick?: () => void;\n}\n\nexport const SidebarHeader: React.FC<SidebarHeaderProps> = ({\n sidebarTitle,\n sidebarIcon,\n enableMacros = 0,\n handleOnTitleClick,\n}) => {\n const { maxDepth, openLevel } = useSidebar();\n if (!sidebarTitle && !sidebarIcon && !enableMacros) {\n return null;\n }\n let titleElement;\n const baseTitleClasses = \"truncate text-sm font-semibold text-foreground\";\n if (handleOnTitleClick) {\n titleElement = (\n <button\n type=\"button\"\n className={twMerge(baseTitleClasses, \"cursor-pointer\")}\n onClick={handleOnTitleClick}\n >\n {sidebarTitle}\n </button>\n );\n } else {\n titleElement = <div className={baseTitleClasses}>{sidebarTitle}</div>;\n }\n\n return (\n <header className=\"flex items-center justify-between gap-2 border-b border-sidebar-border bg-sidebar p-4\">\n <div className=\"flex items-center gap-2 truncate\">\n {sidebarIcon}\n {titleElement}\n </div>\n\n {enableMacros > 0 && (\n <div className=\"flex items-center gap-2 select-none\">\n {Array.from({ length: Math.min(enableMacros, 4) }).map((_, index) => {\n const isDisabled = index + 1 > maxDepth;\n\n return (\n <div\n key={`macro-${index}`}\n role=\"button\"\n tabIndex={0}\n className={twMerge(\n \"w-[26px] rounded-lg bg-sidebar p-1 text-center text-xs text-sidebar-foreground\",\n !isDisabled && \"hover:hover-effect\",\n isDisabled &&\n \"cursor-not-allowed bg-muted text-muted-foreground\",\n )}\n onClick={() => {\n if (!isDisabled) {\n openLevel(index + 1);\n }\n }}\n >\n {index + 1}\n </div>\n );\n })}\n </div>\n )}\n </header>\n );\n};\n"],"mappings":";;;;AAUA,MAAaE,iBAA+C,EAC1DC,cACAC,aACAC,eAAe,GACfC,yBACI;CACJ,MAAM,EAAEC,UAAUC,cAAcP,WAAW;CAC3C,IAAI,CAACE,gBAAgB,CAACC,eAAe,CAACC,cACpC,OAAO;CAET,IAAII;CACJ,MAAMC,mBAAmB;CACzB,IAAIJ,oBACFG,eACE,oBAAC,UAAD;EACE,MAAK;EACL,WAAWT,QAAQU,kBAAkB,gBAAgB;EACrD,SAASJ;EAERH,UAAAA;CACK,CAAA;MAGVM,eAAe,oBAAC,OAAD;EAAK,WAAWC;EAAmBP,UAAAA;CAAkB,CAAA;CAGtE,OACE,qBAAC,UAAD;EAAQ,WAAU;EAAlB,UAAA,CACE,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACGC,aACAK,YACE;EAEJJ,CAAAA,GAAAA,eAAe,KACd,oBAAC,OAAD;GAAK,WAAU;GACZM,UAAAA,MAAMC,KAAK,EAAEC,QAAQC,KAAKC,IAAIV,cAAc,CAAC,EAAE,CAAC,CAAC,CAACW,KAAKC,GAAGC,UAAU;IACnE,MAAMC,aAAaD,QAAQ,IAAIX;IAE/B,OACE,oBAAC,OAAD;KAEE,MAAK;KACL,UAAU;KACV,WAAWP,QACT,kFACA,CAACmB,cAAc,sBACfA,cACE,mDACJ;KACA,eAAe;MACb,IAAI,CAACA,YACHX,UAAUU,QAAQ,CAAC;KAEvB;KAECA,UAAAA,QAAQ;IACN,GAhBE,SAASA,OAgBX;GAET,CAAC;EACE,CAAA,CAED;;AAEZ"}
@@ -1,6 +1,4 @@
1
- import { s as SidebarNode, t as FlattenedNode } from "../../../../types-CNbvfWjh.js";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
3
-
1
+ import { s as SidebarNode, t as FlattenedNode } from "../../../../types-FTqFl5du.js";
4
2
  //#region src/ui/components/sidebar/subcomponents/sidebar-item.d.ts
5
3
  interface SidebarItemProps {
6
4
  node: FlattenedNode;
@@ -16,20 +14,7 @@ interface SidebarItemProps {
16
14
  style?: React.CSSProperties;
17
15
  onChange?: (node: SidebarNode) => void;
18
16
  }
19
- declare const SidebarItem: ({
20
- node,
21
- toggleNode,
22
- togglePin,
23
- searchTerm,
24
- searchResults,
25
- activeSearchIndex,
26
- allowPinning,
27
- pinnedMode,
28
- isPinned,
29
- isActive,
30
- style,
31
- onChange
32
- }: SidebarItemProps) => react_jsx_runtime0.JSX.Element;
17
+ export declare const SidebarItem: ({ node, toggleNode, togglePin, searchTerm, searchResults, activeSearchIndex, allowPinning, pinnedMode, isPinned, isActive, style, onChange }: SidebarItemProps) => import("react/jsx-runtime").JSX.Element;
33
18
  //#endregion
34
- export { SidebarItem };
19
+ export {};
35
20
  //# sourceMappingURL=sidebar-item.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-item.d.ts","names":[],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-item.tsx"],"mappings":";;;;UAWU,gBAAA;EACR,IAAA,EAAM,aAAA;EACN,UAAA,IAAc,MAAA;EACd,SAAA,GAAY,MAAA;EACZ,UAAA;EACA,aAAA,EAAe,WAAA;EACf,iBAAA;EACA,YAAA;EACA,UAAA;EACA,QAAA;EACA,QAAA;EACA,KAAA,GAAQ,KAAA,CAAM,aAAA;EACd,QAAA,IAAY,IAAA,EAAM,WAAA;AAAA;AAAA,cAMP,WAAA;EAAe,IAAA;EAAA,UAAA;EAAA,SAAA;EAAA,UAAA;EAAA,aAAA;EAAA,iBAAA;EAAA,YAAA;EAAA,UAAA;EAAA,QAAA;EAAA,QAAA;EAAA,KAAA;EAAA;AAAA,GAazB,gBAAA,KAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"sidebar-item.d.ts","names":[],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-item.tsx"],"mappings":";;UAWU;EACR,MAAM;EACN,cAAc;EACd,YAAY;EACZ;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA,QAAQ,MAAM;EACd,YAAY,MAAM;;qBAMP,gBAAW,MAAA,YAAA,WAAA,YAAA,eAAA,mBAAA,cAAA,YAAA,UAAA,UAAA,OAAA,YAarB,iDAAgB,IAAA"}
@@ -1,5 +1,6 @@
1
- import { a as PinFilled, o as Pin, s as CaretDown, t as Icon } from "../../../../icon-C4QOpsdI.js";
1
+ import { S as CaretDown, t as Icon } from "../../../../icon-CHR45tj_.js";
2
2
  import { Tooltip, TooltipProvider as Provider } from "../../tooltip/tooltip.js";
3
+ import { n as Pin, t as PinFilled } from "../../../../PinFilled-cSbUqZCA.js";
3
4
  import { NodeStatus } from "../types.js";
4
5
  import { useEllipsis } from "../use-ellipsis.js";
5
6
  import { StatusIcon } from "./status-icon.js";
@@ -64,7 +65,7 @@ const SidebarItem = ({ node, toggleNode, togglePin, searchTerm, searchResults, a
64
65
  name: IconComponent,
65
66
  size: 16,
66
67
  className: "min-w-4"
67
- }) : /* @__PURE__ */ cloneElement(IconComponent, { className: "min-w-4 w-4" }) : pinnedMode ? /* @__PURE__ */ jsx(PinnedModeCircleIcon, { isPinned }) : null,
68
+ }) : /*#__PURE__*/ cloneElement(IconComponent, { className: "min-w-4 w-4" }) : pinnedMode ? /* @__PURE__ */ jsx(PinnedModeCircleIcon, { isPinned }) : null,
68
69
  /* @__PURE__ */ jsx(RenderTitle, {
69
70
  ref: ellipsisRef,
70
71
  title: node.title,
@@ -104,7 +105,7 @@ const SidebarItem = ({ node, toggleNode, togglePin, searchTerm, searchResults, a
104
105
  })
105
106
  }) });
106
107
  };
107
- const RenderTitle = /* @__PURE__ */ forwardRef(({ title, searchTerm, isSearchActive, pinnedMode, className }, ref) => {
108
+ const RenderTitle = /*#__PURE__*/ forwardRef(({ title, searchTerm, isSearchActive, pinnedMode, className }, ref) => {
108
109
  return /* @__PURE__ */ jsx("div", {
109
110
  ref,
110
111
  className: twMerge("truncate text-sm/5", className),
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-item.js","names":["cloneElement","forwardRef","useMemo","useRef","twMerge","CaretDown","Pin","PinFilled","Icon","Tooltip","TooltipProvider","NodeStatus","useEllipsis","StatusIcon","TOOLTIP_DELAY","TOOLTIP_DELAY_LONG","SidebarItem","node","toggleNode","togglePin","searchTerm","searchResults","activeSearchIndex","allowPinning","pinnedMode","isPinned","isActive","style","onChange","paddingLeft","depth","isSearchActive","length","id","IconComponent","isExpanded","expandedIcon","icon","isDescendenceModified","check","n","status","UNCHANGED","children","some","child","hasStatus","computedStyle","ellipsisRef","hasEllipsis","title","className","e","stopPropagation","undefined","RenderTitle","ref","toLowerCase","includes","highlightClass","parts","remaining","lowerTerm","i","idx","indexOf","push","slice","displayName","PinnedModeCircleIcon"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-item.tsx"],"sourcesContent":["import { cloneElement, forwardRef, useMemo, useRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport CaretDown from \"../../../../powerhouse/components/icon-components/CaretDown.js\";\nimport Pin from \"../../../../powerhouse/components/icon-components/Pin.js\";\nimport PinFilled from \"../../../../powerhouse/components/icon-components/PinFilled.js\";\nimport { Icon } from \"../../../../powerhouse/index.js\";\nimport { Tooltip, TooltipProvider } from \"../../tooltip/tooltip.js\";\nimport { type FlattenedNode, NodeStatus, type SidebarNode } from \"../types.js\";\nimport { useEllipsis } from \"../use-ellipsis.js\";\nimport { StatusIcon } from \"./status-icon.js\";\n\ninterface SidebarItemProps {\n node: FlattenedNode;\n toggleNode?: (nodeId: string) => void;\n togglePin: (nodeId: string) => void;\n searchTerm: string;\n searchResults: SidebarNode[];\n activeSearchIndex: number;\n allowPinning: boolean;\n pinnedMode?: boolean;\n isPinned?: boolean;\n isActive?: boolean;\n style?: React.CSSProperties;\n onChange?: (node: SidebarNode) => void;\n}\n\nconst TOOLTIP_DELAY = 700;\nconst TOOLTIP_DELAY_LONG = 172800000; // 2 days to simulate no tooltip\n\nexport const SidebarItem = ({\n node,\n toggleNode,\n togglePin,\n searchTerm,\n searchResults,\n activeSearchIndex,\n allowPinning,\n pinnedMode = false,\n isPinned = false,\n isActive = false,\n style,\n onChange,\n}: SidebarItemProps) => {\n const paddingLeft = node.depth * 24;\n const isSearchActive =\n searchResults.length > 0 && searchResults[activeSearchIndex].id === node.id;\n const IconComponent = node.isExpanded\n ? (node.expandedIcon ?? node.icon)\n : node.icon;\n const isDescendenceModified = useMemo(() => {\n const check = (n: SidebarNode): boolean => {\n // Check current node's status first\n if (n.status !== NodeStatus.UNCHANGED && n.status) {\n return true;\n }\n\n // Then recursively check all children\n if (n.children && n.children.length > 0) {\n return n.children.some((child) => check(child));\n }\n\n return false;\n };\n\n return check(node);\n }, [node]);\n const hasStatus =\n (node.status && node.status !== NodeStatus.UNCHANGED) ||\n isDescendenceModified;\n\n const computedStyle = { ...style, paddingLeft };\n\n // Check if the title has ellipsis to determine if the tooltip should be delayed\n const ellipsisRef = useRef<HTMLDivElement | null>(null);\n const hasEllipsis = useEllipsis(ellipsisRef);\n\n return (\n <TooltipProvider>\n <Tooltip\n content={node.title}\n triggerAsChild\n side=\"bottom\"\n delayDuration={hasEllipsis ? TOOLTIP_DELAY : TOOLTIP_DELAY_LONG}\n >\n <div\n style={computedStyle}\n className={twMerge(\n \"group/sidebar-item-wrapper flex w-full items-center\",\n !pinnedMode && \"pb-2\",\n )}\n >\n <div\n tabIndex={0}\n data-testid=\"sidebar-item\"\n id={`sidebar-item-${node.id}`}\n className={twMerge(\n \"group/sidebar-item relative flex w-full cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-foreground select-none hover:hover-effect\",\n hasStatus && \"pr-6\",\n allowPinning && (hasStatus ? \"hover:pr-12\" : \"hover:pr-6\"),\n isPinned && (hasStatus ? \"pr-12\" : \"pr-6\"),\n isSearchActive && \"bg-warning/10\",\n // line between pinned items\n pinnedMode &&\n \"after:absolute after:-top-2.5 after:left-[15px] after:h-4 after:w-px after:bg-secondary first:group-first/sidebar-item-wrapper:after:hidden hover:hover-effect\",\n isActive &&\n \"bg-sidebar-accent font-medium text-sidebar-accent-foreground hover:hover-effect\",\n node.className,\n )}\n onClick={() => {\n toggleNode?.(node.id);\n onChange?.(node);\n }}\n >\n <div className=\"flex max-w-full items-center gap-2\">\n {!pinnedMode && (\n <div\n className=\"-m-2 -mr-1 h-full rounded-md py-2 pr-1 pl-2 hover:hover-effect\"\n onClick={(e) => {\n e.stopPropagation();\n toggleNode?.(node.id);\n }}\n >\n <CaretDown\n width=\"16\"\n height=\"16\"\n className={twMerge(\n \"min-w-4\",\n node.isExpanded &&\n node.children &&\n node.children.length > 0\n ? \"\"\n : \"-rotate-90\",\n node.children === undefined || node.children.length === 0\n ? \"text-muted-foreground\"\n : \"text-foreground\",\n )}\n />\n </div>\n )}\n\n {IconComponent ? (\n typeof IconComponent === \"string\" ? (\n <Icon name={IconComponent} size={16} className=\"min-w-4\" />\n ) : (\n // @ts-expect-error -- this is a workaround\n cloneElement(IconComponent, { className: \"min-w-4 w-4\" })\n )\n ) : pinnedMode ? (\n <PinnedModeCircleIcon isPinned={isPinned} />\n ) : null}\n\n <RenderTitle\n ref={ellipsisRef}\n title={node.title}\n searchTerm={searchTerm}\n isSearchActive={isSearchActive}\n pinnedMode={pinnedMode}\n className=\"\"\n />\n\n {allowPinning && (\n <div\n className={twMerge(\n \"absolute top-1/2 flex -translate-y-1/2 items-center justify-center\",\n hasStatus ? \"right-8\" : \"right-2\",\n isPinned\n ? \"text-foreground hover:hover-effect\"\n : \"invisible text-muted-foreground group-hover/sidebar-item:visible hover:hover-effect\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n togglePin(node.id);\n }}\n >\n {isPinned ? (\n <PinFilled width=\"16\" height=\"16\" />\n ) : (\n <Pin width=\"16\" height=\"16\" />\n )}\n </div>\n )}\n {hasStatus && (\n <div\n className={twMerge(\n \"absolute top-1/2 right-2 flex -translate-y-1/2 items-center justify-center\",\n \"text-foreground group-hover/sidebar-item:visible hover:hover-effect\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n togglePin(node.id);\n }}\n >\n <StatusIcon\n status={node.status ?? NodeStatus.UNCHANGED}\n isDescendenceModified={isDescendenceModified}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n </Tooltip>\n </TooltipProvider>\n );\n};\n\nconst RenderTitle = forwardRef<\n HTMLDivElement,\n {\n title: string;\n searchTerm: string;\n isSearchActive: boolean;\n pinnedMode: boolean;\n className?: string;\n }\n>(({ title, searchTerm, isSearchActive, pinnedMode, className }, ref) => {\n return (\n <div ref={ref} className={twMerge(\"truncate text-sm/5\", className)}>\n {searchTerm &&\n title.toLowerCase().includes(searchTerm.toLowerCase()) &&\n !pinnedMode\n ? (() => {\n const highlightClass = isSearchActive\n ? \"bg-warning/10\"\n : \"bg-secondary\";\n const parts: React.ReactNode[] = [];\n let remaining = title;\n const lowerTerm = searchTerm.toLowerCase();\n let i = 0;\n while (remaining.length > 0) {\n const idx = remaining.toLowerCase().indexOf(lowerTerm);\n if (idx === -1) {\n parts.push(remaining);\n break;\n }\n if (idx > 0) parts.push(remaining.slice(0, idx));\n parts.push(\n <span key={i++} className={highlightClass}>\n {remaining.slice(idx, idx + searchTerm.length)}\n </span>,\n );\n remaining = remaining.slice(idx + searchTerm.length);\n }\n return <>{parts}</>;\n })()\n : title}\n </div>\n );\n});\n\nRenderTitle.displayName = \"RenderTitle\";\n\nconst PinnedModeCircleIcon = ({ isPinned }: { isPinned: boolean }) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"min-w-4\"\n >\n <rect width=\"16\" height=\"16\" rx=\"6.4\" fill=\"transparent\" />\n <path\n d=\"M12 8C12 10.2091 10.2091 12 8 12C5.79086 12 4 10.2091 4 8C4 5.79086 5.79086 4 8 4C10.2091 4 12 5.79086 12 8Z\"\n fill=\"currentColor\"\n className={isPinned ? \"text-muted-foreground\" : \"text-foreground\"}\n />\n </svg>\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar-item.js","names":["cloneElement","forwardRef","useMemo","useRef","twMerge","CaretDown","Pin","PinFilled","Icon","Tooltip","TooltipProvider","NodeStatus","useEllipsis","StatusIcon","TOOLTIP_DELAY","TOOLTIP_DELAY_LONG","SidebarItem","node","toggleNode","togglePin","searchTerm","searchResults","activeSearchIndex","allowPinning","pinnedMode","isPinned","isActive","style","onChange","paddingLeft","depth","isSearchActive","length","id","IconComponent","isExpanded","expandedIcon","icon","isDescendenceModified","check","n","status","UNCHANGED","children","some","child","hasStatus","computedStyle","ellipsisRef","hasEllipsis","title","className","e","stopPropagation","undefined","RenderTitle","ref","toLowerCase","includes","highlightClass","parts","remaining","lowerTerm","i","idx","indexOf","push","slice","displayName","PinnedModeCircleIcon"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-item.tsx"],"sourcesContent":["import { cloneElement, forwardRef, useMemo, useRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport CaretDown from \"../../../../powerhouse/components/icon-components/CaretDown.js\";\nimport Pin from \"../../../../powerhouse/components/icon-components/Pin.js\";\nimport PinFilled from \"../../../../powerhouse/components/icon-components/PinFilled.js\";\nimport { Icon } from \"../../../../powerhouse/index.js\";\nimport { Tooltip, TooltipProvider } from \"../../tooltip/tooltip.js\";\nimport { type FlattenedNode, NodeStatus, type SidebarNode } from \"../types.js\";\nimport { useEllipsis } from \"../use-ellipsis.js\";\nimport { StatusIcon } from \"./status-icon.js\";\n\ninterface SidebarItemProps {\n node: FlattenedNode;\n toggleNode?: (nodeId: string) => void;\n togglePin: (nodeId: string) => void;\n searchTerm: string;\n searchResults: SidebarNode[];\n activeSearchIndex: number;\n allowPinning: boolean;\n pinnedMode?: boolean;\n isPinned?: boolean;\n isActive?: boolean;\n style?: React.CSSProperties;\n onChange?: (node: SidebarNode) => void;\n}\n\nconst TOOLTIP_DELAY = 700;\nconst TOOLTIP_DELAY_LONG = 172800000; // 2 days to simulate no tooltip\n\nexport const SidebarItem = ({\n node,\n toggleNode,\n togglePin,\n searchTerm,\n searchResults,\n activeSearchIndex,\n allowPinning,\n pinnedMode = false,\n isPinned = false,\n isActive = false,\n style,\n onChange,\n}: SidebarItemProps) => {\n const paddingLeft = node.depth * 24;\n const isSearchActive =\n searchResults.length > 0 && searchResults[activeSearchIndex].id === node.id;\n const IconComponent = node.isExpanded\n ? (node.expandedIcon ?? node.icon)\n : node.icon;\n const isDescendenceModified = useMemo(() => {\n const check = (n: SidebarNode): boolean => {\n // Check current node's status first\n if (n.status !== NodeStatus.UNCHANGED && n.status) {\n return true;\n }\n\n // Then recursively check all children\n if (n.children && n.children.length > 0) {\n return n.children.some((child) => check(child));\n }\n\n return false;\n };\n\n return check(node);\n }, [node]);\n const hasStatus =\n (node.status && node.status !== NodeStatus.UNCHANGED) ||\n isDescendenceModified;\n\n const computedStyle = { ...style, paddingLeft };\n\n // Check if the title has ellipsis to determine if the tooltip should be delayed\n const ellipsisRef = useRef<HTMLDivElement | null>(null);\n const hasEllipsis = useEllipsis(ellipsisRef);\n\n return (\n <TooltipProvider>\n <Tooltip\n content={node.title}\n triggerAsChild\n side=\"bottom\"\n delayDuration={hasEllipsis ? TOOLTIP_DELAY : TOOLTIP_DELAY_LONG}\n >\n <div\n style={computedStyle}\n className={twMerge(\n \"group/sidebar-item-wrapper flex w-full items-center\",\n !pinnedMode && \"pb-2\",\n )}\n >\n <div\n tabIndex={0}\n data-testid=\"sidebar-item\"\n id={`sidebar-item-${node.id}`}\n className={twMerge(\n \"group/sidebar-item relative flex w-full cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-foreground select-none hover:hover-effect\",\n hasStatus && \"pr-6\",\n allowPinning && (hasStatus ? \"hover:pr-12\" : \"hover:pr-6\"),\n isPinned && (hasStatus ? \"pr-12\" : \"pr-6\"),\n isSearchActive && \"bg-warning/10\",\n // line between pinned items\n pinnedMode &&\n \"after:absolute after:-top-2.5 after:left-[15px] after:h-4 after:w-px after:bg-secondary first:group-first/sidebar-item-wrapper:after:hidden hover:hover-effect\",\n isActive &&\n \"bg-sidebar-accent font-medium text-sidebar-accent-foreground hover:hover-effect\",\n node.className,\n )}\n onClick={() => {\n toggleNode?.(node.id);\n onChange?.(node);\n }}\n >\n <div className=\"flex max-w-full items-center gap-2\">\n {!pinnedMode && (\n <div\n className=\"-m-2 -mr-1 h-full rounded-md py-2 pr-1 pl-2 hover:hover-effect\"\n onClick={(e) => {\n e.stopPropagation();\n toggleNode?.(node.id);\n }}\n >\n <CaretDown\n width=\"16\"\n height=\"16\"\n className={twMerge(\n \"min-w-4\",\n node.isExpanded &&\n node.children &&\n node.children.length > 0\n ? \"\"\n : \"-rotate-90\",\n node.children === undefined || node.children.length === 0\n ? \"text-muted-foreground\"\n : \"text-foreground\",\n )}\n />\n </div>\n )}\n\n {IconComponent ? (\n typeof IconComponent === \"string\" ? (\n <Icon name={IconComponent} size={16} className=\"min-w-4\" />\n ) : (\n // @ts-expect-error -- this is a workaround\n cloneElement(IconComponent, { className: \"min-w-4 w-4\" })\n )\n ) : pinnedMode ? (\n <PinnedModeCircleIcon isPinned={isPinned} />\n ) : null}\n\n <RenderTitle\n ref={ellipsisRef}\n title={node.title}\n searchTerm={searchTerm}\n isSearchActive={isSearchActive}\n pinnedMode={pinnedMode}\n className=\"\"\n />\n\n {allowPinning && (\n <div\n className={twMerge(\n \"absolute top-1/2 flex -translate-y-1/2 items-center justify-center\",\n hasStatus ? \"right-8\" : \"right-2\",\n isPinned\n ? \"text-foreground hover:hover-effect\"\n : \"invisible text-muted-foreground group-hover/sidebar-item:visible hover:hover-effect\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n togglePin(node.id);\n }}\n >\n {isPinned ? (\n <PinFilled width=\"16\" height=\"16\" />\n ) : (\n <Pin width=\"16\" height=\"16\" />\n )}\n </div>\n )}\n {hasStatus && (\n <div\n className={twMerge(\n \"absolute top-1/2 right-2 flex -translate-y-1/2 items-center justify-center\",\n \"text-foreground group-hover/sidebar-item:visible hover:hover-effect\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n togglePin(node.id);\n }}\n >\n <StatusIcon\n status={node.status ?? NodeStatus.UNCHANGED}\n isDescendenceModified={isDescendenceModified}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n </Tooltip>\n </TooltipProvider>\n );\n};\n\nconst RenderTitle = forwardRef<\n HTMLDivElement,\n {\n title: string;\n searchTerm: string;\n isSearchActive: boolean;\n pinnedMode: boolean;\n className?: string;\n }\n>(({ title, searchTerm, isSearchActive, pinnedMode, className }, ref) => {\n return (\n <div ref={ref} className={twMerge(\"truncate text-sm/5\", className)}>\n {searchTerm &&\n title.toLowerCase().includes(searchTerm.toLowerCase()) &&\n !pinnedMode\n ? (() => {\n const highlightClass = isSearchActive\n ? \"bg-warning/10\"\n : \"bg-secondary\";\n const parts: React.ReactNode[] = [];\n let remaining = title;\n const lowerTerm = searchTerm.toLowerCase();\n let i = 0;\n while (remaining.length > 0) {\n const idx = remaining.toLowerCase().indexOf(lowerTerm);\n if (idx === -1) {\n parts.push(remaining);\n break;\n }\n if (idx > 0) parts.push(remaining.slice(0, idx));\n parts.push(\n <span key={i++} className={highlightClass}>\n {remaining.slice(idx, idx + searchTerm.length)}\n </span>,\n );\n remaining = remaining.slice(idx + searchTerm.length);\n }\n return <>{parts}</>;\n })()\n : title}\n </div>\n );\n});\n\nRenderTitle.displayName = \"RenderTitle\";\n\nconst PinnedModeCircleIcon = ({ isPinned }: { isPinned: boolean }) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"min-w-4\"\n >\n <rect width=\"16\" height=\"16\" rx=\"6.4\" fill=\"transparent\" />\n <path\n d=\"M12 8C12 10.2091 10.2091 12 8 12C5.79086 12 4 10.2091 4 8C4 5.79086 5.79086 4 8 4C10.2091 4 12 5.79086 12 8Z\"\n fill=\"currentColor\"\n className={isPinned ? \"text-muted-foreground\" : \"text-foreground\"}\n />\n </svg>\n);\n"],"mappings":";;;;;;;;;;AA0BA,MAAMc,gBAAgB;AACtB,MAAMC,qBAAqB;AAE3B,MAAaC,eAAe,EAC1BC,MACAC,YACAC,WACAC,YACAC,eACAC,mBACAC,cACAC,aAAa,OACbC,WAAW,OACXC,WAAW,OACXC,OACAC,eACsB;CACtB,MAAMC,cAAcZ,KAAKa,QAAQ;CACjC,MAAMC,iBACJV,cAAcW,SAAS,KAAKX,cAAcC,kBAAkB,CAACW,OAAOhB,KAAKgB;CAC3E,MAAMC,gBAAgBjB,KAAKkB,aACtBlB,KAAKmB,gBAAgBnB,KAAKoB,OAC3BpB,KAAKoB;CACT,MAAMC,wBAAwBpC,cAAc;EAC1C,MAAMqC,SAASC,MAA4B;GAEzC,IAAIA,EAAEC,WAAW9B,WAAW+B,aAAaF,EAAEC,QACzC,OAAO;GAIT,IAAID,EAAEG,YAAYH,EAAEG,SAASX,SAAS,GACpC,OAAOQ,EAAEG,SAASC,MAAMC,UAAUN,MAAMM,KAAK,CAAC;GAGhD,OAAO;EACT;EAEA,OAAON,MAAMtB,IAAI;CACnB,GAAG,CAACA,IAAI,CAAC;CACT,MAAM6B,YACH7B,KAAKwB,UAAUxB,KAAKwB,WAAW9B,WAAW+B,aAC3CJ;CAEF,MAAMS,gBAAgB;EAAE,GAAGpB;EAAOE;CAAY;CAG9C,MAAMmB,cAAc7C,OAA8B,IAAI;CACtD,MAAM8C,cAAcrC,YAAYoC,WAAW;CAE3C,OACE,oBAAC,UAAD,EAAA,UACE,oBAAC,SAAD;EACE,SAAS/B,KAAKiC;EACd,gBAAA;EACA,MAAK;EACL,eAAeD,cAAcnC,gBAAgBC;EAE7C,UAAA,oBAAC,OAAD;GACE,OAAOgC;GACP,WAAW3C,QACT,uDACA,CAACoB,cAAc,MACjB;GAEA,UAAA,oBAAC,OAAD;IACE,UAAU;IACV,eAAY;IACZ,IAAI,gBAAgBP,KAAKgB;IACzB,WAAW7B,QACT,mJACA0C,aAAa,QACbvB,iBAAiBuB,YAAY,gBAAgB,eAC7CrB,aAAaqB,YAAY,UAAU,SACnCf,kBAAkB,iBAElBP,cACE,kKACFE,YACE,mFACFT,KAAKkC,SACP;IACA,eAAe;KACbjC,aAAaD,KAAKgB,EAAE;KACpBL,WAAWX,IAAI;IACjB;IAEA,UAAA,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACG,CAACO,cACA,oBAAC,OAAD;OACE,WAAU;OACV,UAAU4B,MAAM;QACdA,EAAEC,gBAAgB;QAClBnC,aAAaD,KAAKgB,EAAE;OACtB;OAEA,UAAA,oBAAC,WAAD;QACE,OAAM;QACN,QAAO;QACP,WAAW7B,QACT,WACAa,KAAKkB,cACHlB,KAAK0B,YACL1B,KAAK0B,SAASX,SAAS,IACrB,KACA,cACJf,KAAK0B,aAAaW,KAAAA,KAAarC,KAAK0B,SAASX,WAAW,IACpD,0BACA,iBACN;OAAE,CAAA;MAED,CAAA;MAGNE,gBACC,OAAOA,kBAAkB,WACvB,oBAAC,MAAD;OAAM,MAAMA;OAAe,MAAM;OAAI,WAAU;MAAS,CAAA,IAGxDlC,2BAAakC,eAAe,EAAEiB,WAAW,cAAc,CAAC,IAExD3B,aACF,oBAAC,sBAAD,EAAgCC,SAAS,CAAA,IACvC;MAEJ,oBAAC,aAAD;OACE,KAAKuB;OACL,OAAO/B,KAAKiC;OACA9B;OACIW;OACJP;OACZ,WAAU;MAAE,CAAA;MAGbD,gBACC,oBAAC,OAAD;OACE,WAAWnB,QACT,sEACA0C,YAAY,YAAY,WACxBrB,WACI,uCACA,qFACN;OACA,UAAU2B,MAAM;QACdA,EAAEC,gBAAgB;QAClBlC,UAAUF,KAAKgB,EAAE;OACnB;OAECR,UAAAA,WACC,oBAAC,WAAD;QAAW,OAAM;QAAK,QAAO;OAAI,CAAA,IAEjC,oBAAC,KAAD;QAAK,OAAM;QAAK,QAAO;OAAI,CAAA;MAE1B,CAAA;MAENqB,aACC,oBAAC,OAAD;OACE,WAAW1C,QACT,8EACA,qEACF;OACA,UAAUgD,MAAM;QACdA,EAAEC,gBAAgB;QAClBlC,UAAUF,KAAKgB,EAAE;OACnB;OAEA,UAAA,oBAAC,YAAD;QACE,QAAQhB,KAAKwB,UAAU9B,WAAW+B;QACXJ;OAAsB,CAAA;MAE5C,CAAA;KAEJ;;GACF,CAAA;EACF,CAAA;CACE,CAAA,EACM,CAAA;AAErB;AAEA,MAAMiB,cAActD,0BASjB,EAAEiD,OAAO9B,YAAYW,gBAAgBP,YAAY2B,aAAaK,QAAQ;CACvE,OACE,oBAAC,OAAD;EAAUA;EAAK,WAAWpD,QAAQ,sBAAsB+C,SAAS;EAC9D/B,UAAAA,cACD8B,MAAMO,YAAY,CAAC,CAACC,SAAStC,WAAWqC,YAAY,CAAC,KACrD,CAACjC,oBACU;GACL,MAAMmC,iBAAiB5B,iBACnB,kBACA;GACJ,MAAM6B,QAA2B,CAAA;GACjC,IAAIC,YAAYX;GAChB,MAAMY,YAAY1C,WAAWqC,YAAY;GACzC,IAAIM,IAAI;GACR,OAAOF,UAAU7B,SAAS,GAAG;IAC3B,MAAMgC,MAAMH,UAAUJ,YAAY,CAAC,CAACQ,QAAQH,SAAS;IACrD,IAAIE,QAAQ,IAAI;KACdJ,MAAMM,KAAKL,SAAS;KACpB;IACF;IACA,IAAIG,MAAM,GAAGJ,MAAMM,KAAKL,UAAUM,MAAM,GAAGH,GAAG,CAAC;IAC/CJ,MAAMM,KACJ,oBAAC,QAAD;KAAgB,WAAWP;KACxBE,UAAAA,UAAUM,MAAMH,KAAKA,MAAM5C,WAAWY,MAAM;IACzC,GAFK+B,GAEL,CACR;IACAF,YAAYA,UAAUM,MAAMH,MAAM5C,WAAWY,MAAM;GACrD;GACA,OAAO,oBAAA,YAAA,EAAA,UAAG4B,MAAM,CAAA;EAClB,EAAA,CAAG,IACHV;CACD,CAAA;AAET,CAAC;AAEDK,YAAYa,cAAc;AAE1B,MAAMC,wBAAwB,EAAE5C,eAC9B,qBAAC,OAAD;CACE,OAAM;CACN,QAAO;CACP,SAAQ;CACR,MAAK;CACL,OAAM;CACN,WAAU;CANZ,UAAA,CAQE,oBAAC,QAAD;EAAM,OAAM;EAAK,QAAO;EAAK,IAAG;EAAM,MAAK;CAAa,CAAA,GACxD,oBAAC,QAAD;EACE,GAAE;EACF,MAAK;EACL,WAAWA,WAAW,0BAA0B;CAAkB,CAAA,CAEjE"}
@@ -1,7 +1,5 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
1
  //#region src/ui/components/sidebar/subcomponents/sidebar-pinning-area.d.ts
4
- declare const SidebarPinningArea: () => react_jsx_runtime0.JSX.Element;
2
+ export declare const SidebarPinningArea: () => import("react/jsx-runtime").JSX.Element;
5
3
  //#endregion
6
- export { SidebarPinningArea };
4
+ export {};
7
5
  //# sourceMappingURL=sidebar-pinning-area.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-pinning-area.d.ts","names":[],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-pinning-area.tsx"],"mappings":";;;cAGa,kBAAA,QAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"sidebar-pinning-area.d.ts","names":[],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-pinning-area.tsx"],"mappings":";qBAGa,sDAAkB,IAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-pinning-area.js","names":["SidebarItem","useSidebar","SidebarPinningArea","pinnedNodePath","togglePin","activeNodeId","onActiveNodeChange","map","node","index","id","depth","isExpanded","length"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-pinning-area.tsx"],"sourcesContent":["import { SidebarItem } from \"./sidebar-item.js\";\nimport { useSidebar } from \"./sidebar-provider/index.js\";\n\nexport const SidebarPinningArea = () => {\n const { pinnedNodePath, togglePin, activeNodeId, onActiveNodeChange } =\n useSidebar();\n\n return (\n <div className=\"flex flex-col gap-1 border-b border-sidebar-border bg-muted px-2 pt-2 pb-0.5\">\n {pinnedNodePath.map((node, index) => (\n <SidebarItem\n key={node.id}\n node={{\n ...node,\n depth: 0,\n isExpanded: false,\n }}\n togglePin={togglePin}\n searchTerm=\"\"\n searchResults={[]}\n activeSearchIndex={0}\n allowPinning={true}\n pinnedMode={true}\n isPinned={index === pinnedNodePath.length - 1}\n isActive={activeNodeId === node.id}\n onChange={onActiveNodeChange}\n />\n ))}\n </div>\n );\n};\n"],"mappings":";;;;AAGA,MAAaE,2BAA2B;CACtC,MAAM,EAAEC,gBAAgBC,WAAWC,cAAcC,uBAC/CL,YAAY;AAEd,QACE,oBAAC,OAAD;EAAK,WAAU;YACZE,eAAeI,KAAKC,MAAMC,UACzB,oBAAC,aAAD;GAEE,MAAM;IACJ,GAAGD;IACHG,OAAO;IACPC,YAAY;IACb;GACUR;GACX,YAAW;GACX,eAAe,EAAE;GACjB,mBAAmB;GACnB,cAAc;GACd,YAAY;GACZ,UAAUK,UAAUN,eAAeU,SAAS;GAC5C,UAAUR,iBAAiBG,KAAKE;GAChC,UAAUJ;GAEb,EAhBQE,KAAKE,GAgBb,CAAC;EACE,CAAA"}
1
+ {"version":3,"file":"sidebar-pinning-area.js","names":["SidebarItem","useSidebar","SidebarPinningArea","pinnedNodePath","togglePin","activeNodeId","onActiveNodeChange","map","node","index","id","depth","isExpanded","length"],"sources":["../../../../../src/ui/components/sidebar/subcomponents/sidebar-pinning-area.tsx"],"sourcesContent":["import { SidebarItem } from \"./sidebar-item.js\";\nimport { useSidebar } from \"./sidebar-provider/index.js\";\n\nexport const SidebarPinningArea = () => {\n const { pinnedNodePath, togglePin, activeNodeId, onActiveNodeChange } =\n useSidebar();\n\n return (\n <div className=\"flex flex-col gap-1 border-b border-sidebar-border bg-muted px-2 pt-2 pb-0.5\">\n {pinnedNodePath.map((node, index) => (\n <SidebarItem\n key={node.id}\n node={{\n ...node,\n depth: 0,\n isExpanded: false,\n }}\n togglePin={togglePin}\n searchTerm=\"\"\n searchResults={[]}\n activeSearchIndex={0}\n allowPinning={true}\n pinnedMode={true}\n isPinned={index === pinnedNodePath.length - 1}\n isActive={activeNodeId === node.id}\n onChange={onActiveNodeChange}\n />\n ))}\n </div>\n );\n};\n"],"mappings":";;;;AAGA,MAAaE,2BAA2B;CACtC,MAAM,EAAEC,gBAAgBC,WAAWC,cAAcC,uBAC/CL,WAAW;CAEb,OACE,oBAAC,OAAD;EAAK,WAAU;EACZE,UAAAA,eAAeI,KAAKC,MAAMC,UACzB,oBAAC,aAAD;GAEE,MAAM;IACJ,GAAGD;IACHG,OAAO;IACPC,YAAY;GACd;GACWR;GACX,YAAW;GACX,eAAe,CAAA;GACf,mBAAmB;GACnB,cAAc;GACd,YAAY;GACZ,UAAUK,UAAUN,eAAeU,SAAS;GAC5C,UAAUR,iBAAiBG,KAAKE;GAChC,UAAUJ;EAAmB,GAdxBE,KAAKE,EAcmB,CAEhC;CACE,CAAA;AAET"}
@@ -1,2 +1,4 @@
1
- import { n as useSidebar, t as SidebarProvider } from "../../../../../sidebar-provider-C2eyz9TL.js";
2
- export { SidebarProvider, useSidebar };
1
+ import { n as useSidebar, t as SidebarProvider } from "../../../../../sidebar-provider-CZHhqW5n.js";
2
+ import "../../../../../index-jfVVOU-H.js";
3
+ export { SidebarProvider, useSidebar };
4
+ export {};
@@ -1,2 +1,3 @@
1
- import { n as useSidebar, t as SidebarProvider } from "../../../../../sidebar-provider-C2eyz9TL.js";
2
- export { SidebarProvider, useSidebar };
1
+ import { n as useSidebar, t as SidebarProvider } from "../../../../../sidebar-provider-CZHhqW5n.js";
2
+ export { SidebarProvider, useSidebar };
3
+ export {};
@@ -4,7 +4,7 @@ import { SidebarActionType, initialSidebarState, sidebarReducer } from "./sideba
4
4
  import { createContext, createRef, useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-provider.tsx
7
- const SidebarContext = /* @__PURE__ */ createContext({
7
+ const SidebarContext = /*#__PURE__*/ createContext({
8
8
  nodes: [],
9
9
  flattenedNodes: [],
10
10
  expandedNodes: /* @__PURE__ */ new Set(),
@@ -18,7 +18,7 @@ const SidebarContext = /* @__PURE__ */ createContext({
18
18
  isStatusFilterEnabled: false,
19
19
  nodeSortType: void 0,
20
20
  nodeSortOrder: "asc",
21
- virtualListRef: /* @__PURE__ */ createRef(),
21
+ virtualListRef: /*#__PURE__*/ createRef(),
22
22
  toggleNode: () => void 0,
23
23
  openNode: () => void 0,
24
24
  closeNode: () => void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-provider.js","names":["createContext","createRef","useCallback","useContext","useEffect","useMemo","useReducer","useRef","useState","NodeStatus","filterStatuses","getMaxDepth","getNodePath","getOpenLevels","isOpenLevel","nodesSearch","sortNodes","initialSidebarState","SidebarActionType","sidebarReducer","SidebarContext","nodes","flattenedNodes","expandedNodes","Set","pinnedNodePath","maxDepth","searchTerm","searchResults","isSearching","activeSearchIndex","activeNodeId","undefined","isStatusFilterEnabled","nodeSortType","nodeSortOrder","virtualListRef","toggleNode","openNode","closeNode","togglePin","openLevel","changeSearchTerm","nextSearchResult","previousSearchResult","setNodes","syncActiveNodeId","onActiveNodeChange","setActiveNodeChangeCallback","toggleStatusFilter","SidebarProvider","children","initialNodes","_state","dispatch","stateRef","flattenedNodesRef","current","setOnActiveNodeChange","currentRoots","roots","length","CREATED","MODIFIED","REMOVED","MOVED","DUPLICATED","flattenTree","flattened","dfs","node","depth","flatNode","isExpanded","has","id","push","Array","isArray","child","callback","nodeId","type","SYNC_ACTIVE_NODE_ID","payload","openPathToNode","nodePath","OPEN_NODE","TOGGLE_NODE","openPath","scrollTo","nodeIndex","findIndex","setTimeout","scrollToRow","CLOSE_NODE","isPinned","SET_PINNED_NODE_PATH","targetLevel","isTargetLevelOpen","SET_EXPANDED_NODES","TOGGLE_STATUS_FILTER","setActiveSearchIndex","DEBOUNCE_MS","timeoutId","SET_IS_SEARCHING","results","SET_SEARCH_RESULTS","clearTimeout","i","nextIndex","Math","min","previousIndex","max","newNodes","sortType","sortOrder","SET_NODES","newTerm","CHANGE_SEARCH_TERM","useSidebar"],"sources":["../../../../../../src/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-provider.tsx"],"sourcesContent":["import {\n createContext,\n createRef,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport type { List } from \"react-virtualized\";\nimport {\n type FlattenedNode,\n type NodeSortOrder,\n type NodeSortType,\n NodeStatus,\n type SidebarNode,\n} from \"../../types.js\";\nimport {\n filterStatuses,\n getMaxDepth,\n getNodePath,\n getOpenLevels,\n isOpenLevel,\n nodesSearch,\n sortNodes,\n} from \"../../utils.js\";\nimport {\n initialSidebarState,\n SidebarActionType,\n sidebarReducer,\n type SidebarState,\n} from \"./sidebar-reducer.js\";\n\ninterface SidebarContextType {\n nodes: SidebarNode[];\n flattenedNodes: FlattenedNode[];\n expandedNodes: Set<string>;\n pinnedNodePath: SidebarNode[];\n maxDepth: number;\n searchTerm: string;\n searchResults: SidebarNode[];\n isSearching: boolean;\n activeSearchIndex: number;\n activeNodeId?: string;\n isStatusFilterEnabled: boolean;\n nodeSortType?: NodeSortType;\n nodeSortOrder: NodeSortOrder;\n virtualListRef: RefObject<List | null>;\n toggleNode: (nodeId: string) => void;\n openNode: (nodeId: string, openPath?: boolean, scrollTo?: boolean) => void;\n closeNode: (nodeId: string) => void;\n togglePin: (nodeId: string) => void;\n openLevel: (level: number) => void;\n changeSearchTerm: (newTerm: string) => void;\n nextSearchResult: () => void;\n previousSearchResult: () => void;\n setNodes: (\n newNodes: SidebarNode[],\n sortType?: NodeSortType,\n sortOrder?: NodeSortOrder,\n ) => void;\n syncActiveNodeId: (nodeId?: string) => void;\n onActiveNodeChange: (node: SidebarNode) => void;\n setActiveNodeChangeCallback: (callback: (node: SidebarNode) => void) => void;\n toggleStatusFilter: () => void;\n}\n\nconst SidebarContext = createContext<SidebarContextType>({\n nodes: [],\n flattenedNodes: [],\n expandedNodes: new Set<string>(),\n pinnedNodePath: [],\n maxDepth: 4,\n searchTerm: \"\",\n searchResults: [],\n isSearching: false,\n activeSearchIndex: 0,\n activeNodeId: undefined,\n isStatusFilterEnabled: false,\n nodeSortType: undefined,\n nodeSortOrder: \"asc\",\n virtualListRef: createRef<List>(),\n toggleNode: () => undefined,\n openNode: () => undefined,\n closeNode: () => undefined,\n togglePin: () => undefined,\n openLevel: () => undefined,\n changeSearchTerm: () => undefined,\n nextSearchResult: () => undefined,\n previousSearchResult: () => undefined,\n setNodes: () => undefined,\n syncActiveNodeId: () => undefined,\n onActiveNodeChange: () => undefined,\n setActiveNodeChangeCallback: () => undefined,\n toggleStatusFilter: () => undefined,\n});\n\ninterface SidebarProviderProps extends React.PropsWithChildren {\n nodes?: SidebarNode[];\n}\n\nconst SidebarProvider = ({\n children,\n nodes: initialNodes,\n}: SidebarProviderProps) => {\n const [_state, dispatch] = useReducer(sidebarReducer, {\n ...initialSidebarState,\n nodes: initialNodes || [],\n });\n // Stable snapshots for callbacks that read state without triggering re-renders\n const stateRef = useRef<SidebarState>(_state);\n const flattenedNodesRef = useRef<FlattenedNode[]>([]);\n useEffect(() => {\n stateRef.current = _state;\n }, [_state]);\n\n const virtualListRef = useRef<List>(null);\n const [onActiveNodeChange, setOnActiveNodeChange] = useState<\n (nodeId: SidebarNode) => void\n >(() => () => undefined);\n\n const currentRoots = useMemo(() => {\n let roots = _state.nodes;\n if (_state.pinnedNodePath.length > 0) {\n roots =\n _state.pinnedNodePath[_state.pinnedNodePath.length - 1].children ?? [];\n }\n if (_state.isStatusFilterEnabled) {\n roots = filterStatuses(roots, [\n NodeStatus.CREATED,\n NodeStatus.MODIFIED,\n NodeStatus.REMOVED,\n NodeStatus.MOVED,\n NodeStatus.DUPLICATED,\n ]);\n }\n if (_state.nodeSortType !== undefined) {\n return sortNodes(roots, _state.nodeSortType, _state.nodeSortOrder);\n }\n return roots;\n }, [\n _state.nodes,\n _state.pinnedNodePath,\n _state.isStatusFilterEnabled,\n _state.nodeSortType,\n _state.nodeSortOrder,\n ]);\n\n const flattenTree = useCallback(\n (nodes: SidebarNode[]): FlattenedNode[] => {\n const flattened: FlattenedNode[] = [];\n\n const dfs = (node: SidebarNode, depth: number) => {\n const flatNode: FlattenedNode = {\n ...node,\n depth,\n isExpanded: _state.expandedNodes.has(node.id),\n };\n flattened.push(flatNode);\n\n if (Array.isArray(node.children) && _state.expandedNodes.has(node.id)) {\n for (const child of node.children) {\n dfs(child, depth + 1);\n }\n }\n };\n\n for (const node of nodes) {\n dfs(node, 0);\n }\n\n return flattened;\n },\n [_state.expandedNodes],\n );\n\n const flattenedNodes = useMemo(() => {\n return flattenTree(currentRoots);\n }, [currentRoots, flattenTree]);\n\n useEffect(() => {\n flattenedNodesRef.current = flattenedNodes;\n }, [flattenedNodes]);\n\n const setActiveNodeChangeCallback = useCallback(\n (callback: (node: SidebarNode) => void) => {\n setOnActiveNodeChange(() => callback);\n },\n [],\n );\n\n const syncActiveNodeId = useCallback((nodeId?: string) => {\n dispatch({\n type: SidebarActionType.SYNC_ACTIVE_NODE_ID,\n payload: nodeId,\n });\n }, []);\n\n const openPathToNode = useCallback(\n (nodeId: string) => {\n const nodePath = getNodePath(currentRoots, nodeId);\n if (nodePath) {\n for (const node of nodePath) {\n dispatch({\n type: SidebarActionType.OPEN_NODE,\n payload: node.id,\n });\n }\n }\n },\n [currentRoots],\n );\n\n const toggleNode = useCallback((nodeId: string) => {\n dispatch({\n type: SidebarActionType.TOGGLE_NODE,\n payload: nodeId,\n });\n }, []);\n\n const openNode = useCallback(\n (nodeId: string, openPath?: boolean, scrollTo?: boolean) => {\n dispatch({\n type: SidebarActionType.OPEN_NODE,\n payload: nodeId,\n });\n if (openPath) {\n openPathToNode(nodeId);\n }\n if (scrollTo) {\n const nodeIndex = flattenedNodesRef.current.findIndex(\n (node) => node.id === nodeId,\n );\n setTimeout(() => {\n virtualListRef.current?.scrollToRow(nodeIndex);\n }, 100);\n }\n },\n [openPathToNode],\n );\n\n const closeNode = useCallback((nodeId: string) => {\n dispatch({\n type: SidebarActionType.CLOSE_NODE,\n payload: nodeId,\n });\n }, []);\n\n const maxDepth = useMemo(() => {\n if (_state.pinnedNodePath.length > 0) {\n return getMaxDepth(\n _state.pinnedNodePath[_state.pinnedNodePath.length - 1].children ?? [],\n );\n }\n return getMaxDepth(_state.nodes);\n }, [_state.nodes, _state.pinnedNodePath]);\n\n const togglePin = useCallback((nodeId: string) => {\n const isPinned =\n stateRef.current.pinnedNodePath.length > 0 &&\n stateRef.current.pinnedNodePath[\n stateRef.current.pinnedNodePath.length - 1\n ].id === nodeId;\n\n const nodePath = isPinned\n ? [] // unpin\n : (getNodePath(stateRef.current.nodes, nodeId) ?? []);\n dispatch({\n type: SidebarActionType.SET_PINNED_NODE_PATH,\n payload: nodePath,\n });\n }, []);\n\n const openLevel = useCallback(\n (targetLevel: number) => {\n const isTargetLevelOpen = isOpenLevel(\n currentRoots,\n stateRef.current.expandedNodes,\n targetLevel - 1,\n );\n\n if (isTargetLevelOpen) {\n dispatch({\n type: SidebarActionType.SET_EXPANDED_NODES,\n payload: new Set(),\n });\n } else {\n dispatch({\n type: SidebarActionType.SET_EXPANDED_NODES,\n payload: getOpenLevels(currentRoots, targetLevel),\n });\n }\n },\n [currentRoots],\n );\n\n const toggleStatusFilter = useCallback(() => {\n dispatch({\n type: SidebarActionType.TOGGLE_STATUS_FILTER,\n });\n }, []);\n\n const [activeSearchIndex, setActiveSearchIndex] = useState(0);\n\n useEffect(() => {\n const DEBOUNCE_MS = 300;\n let timeoutId: NodeJS.Timeout;\n\n if (_state.searchTerm) {\n dispatch({ type: SidebarActionType.SET_IS_SEARCHING, payload: true });\n\n timeoutId = setTimeout(() => {\n const results = nodesSearch(currentRoots, _state.searchTerm, \"dfs\");\n dispatch({\n type: SidebarActionType.SET_SEARCH_RESULTS,\n payload: results,\n });\n setActiveSearchIndex(0);\n if (results.length > 0) {\n openPathToNode(results[0].id);\n }\n dispatch({ type: SidebarActionType.SET_IS_SEARCHING, payload: false });\n }, DEBOUNCE_MS);\n } else {\n dispatch({ type: SidebarActionType.SET_SEARCH_RESULTS, payload: [] });\n dispatch({ type: SidebarActionType.SET_IS_SEARCHING, payload: false });\n }\n\n return () => {\n clearTimeout(timeoutId);\n };\n }, [currentRoots, _state.searchTerm, openPathToNode]);\n\n useEffect(() => {\n if (\n stateRef.current.searchResults.length > 0 &&\n activeSearchIndex >= 0 &&\n activeSearchIndex < stateRef.current.searchResults.length\n ) {\n const { id } = stateRef.current.searchResults[activeSearchIndex];\n for (let i = 0; i < flattenedNodesRef.current.length; i++) {\n if (flattenedNodesRef.current[i].id === id) {\n virtualListRef.current?.scrollToRow(i);\n break;\n }\n }\n }\n }, [activeSearchIndex]);\n\n const nextSearchResult = useCallback(() => {\n const nextIndex = Math.min(\n stateRef.current.searchResults.length - 1,\n activeSearchIndex + 1,\n );\n if (nextIndex !== activeSearchIndex) {\n openPathToNode(stateRef.current.searchResults[nextIndex].id);\n setActiveSearchIndex(nextIndex);\n }\n }, [activeSearchIndex, openPathToNode]);\n\n const previousSearchResult = useCallback(() => {\n const previousIndex = Math.max(0, activeSearchIndex - 1);\n if (previousIndex !== activeSearchIndex) {\n openPathToNode(stateRef.current.searchResults[previousIndex].id);\n setActiveSearchIndex(previousIndex);\n }\n }, [activeSearchIndex, openPathToNode]);\n\n const setNodes = useCallback(\n (\n newNodes: SidebarNode[],\n sortType?: NodeSortType,\n sortOrder?: NodeSortOrder,\n ) => {\n dispatch({\n type: SidebarActionType.SET_NODES,\n payload: { nodes: newNodes, sortType, sortOrder },\n });\n },\n [dispatch],\n );\n\n const changeSearchTerm = useCallback(\n (newTerm: string) => {\n dispatch({\n type: SidebarActionType.CHANGE_SEARCH_TERM,\n payload: newTerm,\n });\n },\n [dispatch],\n );\n\n return (\n <SidebarContext.Provider\n value={{\n nodes: _state.nodes,\n flattenedNodes,\n expandedNodes: _state.expandedNodes,\n pinnedNodePath: _state.pinnedNodePath,\n maxDepth,\n searchTerm: _state.searchTerm,\n searchResults: _state.searchResults,\n isSearching: _state.isSearching,\n activeSearchIndex,\n isStatusFilterEnabled: _state.isStatusFilterEnabled,\n nodeSortType: _state.nodeSortType,\n nodeSortOrder: _state.nodeSortOrder,\n virtualListRef,\n toggleNode,\n openNode,\n closeNode,\n togglePin,\n openLevel,\n changeSearchTerm,\n nextSearchResult,\n previousSearchResult,\n setNodes,\n activeNodeId: _state.activeNodeId,\n syncActiveNodeId,\n onActiveNodeChange,\n setActiveNodeChangeCallback,\n toggleStatusFilter,\n }}\n >\n {children}\n </SidebarContext.Provider>\n );\n};\n\nconst useSidebar = () => useContext(SidebarContext);\n\nexport { SidebarProvider, useSidebar };\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar-provider.js","names":["createContext","createRef","useCallback","useContext","useEffect","useMemo","useReducer","useRef","useState","NodeStatus","filterStatuses","getMaxDepth","getNodePath","getOpenLevels","isOpenLevel","nodesSearch","sortNodes","initialSidebarState","SidebarActionType","sidebarReducer","SidebarContext","nodes","flattenedNodes","expandedNodes","Set","pinnedNodePath","maxDepth","searchTerm","searchResults","isSearching","activeSearchIndex","activeNodeId","undefined","isStatusFilterEnabled","nodeSortType","nodeSortOrder","virtualListRef","toggleNode","openNode","closeNode","togglePin","openLevel","changeSearchTerm","nextSearchResult","previousSearchResult","setNodes","syncActiveNodeId","onActiveNodeChange","setActiveNodeChangeCallback","toggleStatusFilter","SidebarProvider","children","initialNodes","_state","dispatch","stateRef","flattenedNodesRef","current","setOnActiveNodeChange","currentRoots","roots","length","CREATED","MODIFIED","REMOVED","MOVED","DUPLICATED","flattenTree","flattened","dfs","node","depth","flatNode","isExpanded","has","id","push","Array","isArray","child","callback","nodeId","type","SYNC_ACTIVE_NODE_ID","payload","openPathToNode","nodePath","OPEN_NODE","TOGGLE_NODE","openPath","scrollTo","nodeIndex","findIndex","setTimeout","scrollToRow","CLOSE_NODE","isPinned","SET_PINNED_NODE_PATH","targetLevel","isTargetLevelOpen","SET_EXPANDED_NODES","TOGGLE_STATUS_FILTER","setActiveSearchIndex","DEBOUNCE_MS","timeoutId","SET_IS_SEARCHING","results","SET_SEARCH_RESULTS","clearTimeout","i","nextIndex","Math","min","previousIndex","max","newNodes","sortType","sortOrder","SET_NODES","newTerm","CHANGE_SEARCH_TERM","useSidebar"],"sources":["../../../../../../src/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-provider.tsx"],"sourcesContent":["import {\n createContext,\n createRef,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport type { List } from \"react-virtualized\";\nimport {\n type FlattenedNode,\n type NodeSortOrder,\n type NodeSortType,\n NodeStatus,\n type SidebarNode,\n} from \"../../types.js\";\nimport {\n filterStatuses,\n getMaxDepth,\n getNodePath,\n getOpenLevels,\n isOpenLevel,\n nodesSearch,\n sortNodes,\n} from \"../../utils.js\";\nimport {\n initialSidebarState,\n SidebarActionType,\n sidebarReducer,\n type SidebarState,\n} from \"./sidebar-reducer.js\";\n\ninterface SidebarContextType {\n nodes: SidebarNode[];\n flattenedNodes: FlattenedNode[];\n expandedNodes: Set<string>;\n pinnedNodePath: SidebarNode[];\n maxDepth: number;\n searchTerm: string;\n searchResults: SidebarNode[];\n isSearching: boolean;\n activeSearchIndex: number;\n activeNodeId?: string;\n isStatusFilterEnabled: boolean;\n nodeSortType?: NodeSortType;\n nodeSortOrder: NodeSortOrder;\n virtualListRef: RefObject<List | null>;\n toggleNode: (nodeId: string) => void;\n openNode: (nodeId: string, openPath?: boolean, scrollTo?: boolean) => void;\n closeNode: (nodeId: string) => void;\n togglePin: (nodeId: string) => void;\n openLevel: (level: number) => void;\n changeSearchTerm: (newTerm: string) => void;\n nextSearchResult: () => void;\n previousSearchResult: () => void;\n setNodes: (\n newNodes: SidebarNode[],\n sortType?: NodeSortType,\n sortOrder?: NodeSortOrder,\n ) => void;\n syncActiveNodeId: (nodeId?: string) => void;\n onActiveNodeChange: (node: SidebarNode) => void;\n setActiveNodeChangeCallback: (callback: (node: SidebarNode) => void) => void;\n toggleStatusFilter: () => void;\n}\n\nconst SidebarContext = createContext<SidebarContextType>({\n nodes: [],\n flattenedNodes: [],\n expandedNodes: new Set<string>(),\n pinnedNodePath: [],\n maxDepth: 4,\n searchTerm: \"\",\n searchResults: [],\n isSearching: false,\n activeSearchIndex: 0,\n activeNodeId: undefined,\n isStatusFilterEnabled: false,\n nodeSortType: undefined,\n nodeSortOrder: \"asc\",\n virtualListRef: createRef<List>(),\n toggleNode: () => undefined,\n openNode: () => undefined,\n closeNode: () => undefined,\n togglePin: () => undefined,\n openLevel: () => undefined,\n changeSearchTerm: () => undefined,\n nextSearchResult: () => undefined,\n previousSearchResult: () => undefined,\n setNodes: () => undefined,\n syncActiveNodeId: () => undefined,\n onActiveNodeChange: () => undefined,\n setActiveNodeChangeCallback: () => undefined,\n toggleStatusFilter: () => undefined,\n});\n\ninterface SidebarProviderProps extends React.PropsWithChildren {\n nodes?: SidebarNode[];\n}\n\nconst SidebarProvider = ({\n children,\n nodes: initialNodes,\n}: SidebarProviderProps) => {\n const [_state, dispatch] = useReducer(sidebarReducer, {\n ...initialSidebarState,\n nodes: initialNodes || [],\n });\n // Stable snapshots for callbacks that read state without triggering re-renders\n const stateRef = useRef<SidebarState>(_state);\n const flattenedNodesRef = useRef<FlattenedNode[]>([]);\n useEffect(() => {\n stateRef.current = _state;\n }, [_state]);\n\n const virtualListRef = useRef<List>(null);\n const [onActiveNodeChange, setOnActiveNodeChange] = useState<\n (nodeId: SidebarNode) => void\n >(() => () => undefined);\n\n const currentRoots = useMemo(() => {\n let roots = _state.nodes;\n if (_state.pinnedNodePath.length > 0) {\n roots =\n _state.pinnedNodePath[_state.pinnedNodePath.length - 1].children ?? [];\n }\n if (_state.isStatusFilterEnabled) {\n roots = filterStatuses(roots, [\n NodeStatus.CREATED,\n NodeStatus.MODIFIED,\n NodeStatus.REMOVED,\n NodeStatus.MOVED,\n NodeStatus.DUPLICATED,\n ]);\n }\n if (_state.nodeSortType !== undefined) {\n return sortNodes(roots, _state.nodeSortType, _state.nodeSortOrder);\n }\n return roots;\n }, [\n _state.nodes,\n _state.pinnedNodePath,\n _state.isStatusFilterEnabled,\n _state.nodeSortType,\n _state.nodeSortOrder,\n ]);\n\n const flattenTree = useCallback(\n (nodes: SidebarNode[]): FlattenedNode[] => {\n const flattened: FlattenedNode[] = [];\n\n const dfs = (node: SidebarNode, depth: number) => {\n const flatNode: FlattenedNode = {\n ...node,\n depth,\n isExpanded: _state.expandedNodes.has(node.id),\n };\n flattened.push(flatNode);\n\n if (Array.isArray(node.children) && _state.expandedNodes.has(node.id)) {\n for (const child of node.children) {\n dfs(child, depth + 1);\n }\n }\n };\n\n for (const node of nodes) {\n dfs(node, 0);\n }\n\n return flattened;\n },\n [_state.expandedNodes],\n );\n\n const flattenedNodes = useMemo(() => {\n return flattenTree(currentRoots);\n }, [currentRoots, flattenTree]);\n\n useEffect(() => {\n flattenedNodesRef.current = flattenedNodes;\n }, [flattenedNodes]);\n\n const setActiveNodeChangeCallback = useCallback(\n (callback: (node: SidebarNode) => void) => {\n setOnActiveNodeChange(() => callback);\n },\n [],\n );\n\n const syncActiveNodeId = useCallback((nodeId?: string) => {\n dispatch({\n type: SidebarActionType.SYNC_ACTIVE_NODE_ID,\n payload: nodeId,\n });\n }, []);\n\n const openPathToNode = useCallback(\n (nodeId: string) => {\n const nodePath = getNodePath(currentRoots, nodeId);\n if (nodePath) {\n for (const node of nodePath) {\n dispatch({\n type: SidebarActionType.OPEN_NODE,\n payload: node.id,\n });\n }\n }\n },\n [currentRoots],\n );\n\n const toggleNode = useCallback((nodeId: string) => {\n dispatch({\n type: SidebarActionType.TOGGLE_NODE,\n payload: nodeId,\n });\n }, []);\n\n const openNode = useCallback(\n (nodeId: string, openPath?: boolean, scrollTo?: boolean) => {\n dispatch({\n type: SidebarActionType.OPEN_NODE,\n payload: nodeId,\n });\n if (openPath) {\n openPathToNode(nodeId);\n }\n if (scrollTo) {\n const nodeIndex = flattenedNodesRef.current.findIndex(\n (node) => node.id === nodeId,\n );\n setTimeout(() => {\n virtualListRef.current?.scrollToRow(nodeIndex);\n }, 100);\n }\n },\n [openPathToNode],\n );\n\n const closeNode = useCallback((nodeId: string) => {\n dispatch({\n type: SidebarActionType.CLOSE_NODE,\n payload: nodeId,\n });\n }, []);\n\n const maxDepth = useMemo(() => {\n if (_state.pinnedNodePath.length > 0) {\n return getMaxDepth(\n _state.pinnedNodePath[_state.pinnedNodePath.length - 1].children ?? [],\n );\n }\n return getMaxDepth(_state.nodes);\n }, [_state.nodes, _state.pinnedNodePath]);\n\n const togglePin = useCallback((nodeId: string) => {\n const isPinned =\n stateRef.current.pinnedNodePath.length > 0 &&\n stateRef.current.pinnedNodePath[\n stateRef.current.pinnedNodePath.length - 1\n ].id === nodeId;\n\n const nodePath = isPinned\n ? [] // unpin\n : (getNodePath(stateRef.current.nodes, nodeId) ?? []);\n dispatch({\n type: SidebarActionType.SET_PINNED_NODE_PATH,\n payload: nodePath,\n });\n }, []);\n\n const openLevel = useCallback(\n (targetLevel: number) => {\n const isTargetLevelOpen = isOpenLevel(\n currentRoots,\n stateRef.current.expandedNodes,\n targetLevel - 1,\n );\n\n if (isTargetLevelOpen) {\n dispatch({\n type: SidebarActionType.SET_EXPANDED_NODES,\n payload: new Set(),\n });\n } else {\n dispatch({\n type: SidebarActionType.SET_EXPANDED_NODES,\n payload: getOpenLevels(currentRoots, targetLevel),\n });\n }\n },\n [currentRoots],\n );\n\n const toggleStatusFilter = useCallback(() => {\n dispatch({\n type: SidebarActionType.TOGGLE_STATUS_FILTER,\n });\n }, []);\n\n const [activeSearchIndex, setActiveSearchIndex] = useState(0);\n\n useEffect(() => {\n const DEBOUNCE_MS = 300;\n let timeoutId: NodeJS.Timeout;\n\n if (_state.searchTerm) {\n dispatch({ type: SidebarActionType.SET_IS_SEARCHING, payload: true });\n\n timeoutId = setTimeout(() => {\n const results = nodesSearch(currentRoots, _state.searchTerm, \"dfs\");\n dispatch({\n type: SidebarActionType.SET_SEARCH_RESULTS,\n payload: results,\n });\n setActiveSearchIndex(0);\n if (results.length > 0) {\n openPathToNode(results[0].id);\n }\n dispatch({ type: SidebarActionType.SET_IS_SEARCHING, payload: false });\n }, DEBOUNCE_MS);\n } else {\n dispatch({ type: SidebarActionType.SET_SEARCH_RESULTS, payload: [] });\n dispatch({ type: SidebarActionType.SET_IS_SEARCHING, payload: false });\n }\n\n return () => {\n clearTimeout(timeoutId);\n };\n }, [currentRoots, _state.searchTerm, openPathToNode]);\n\n useEffect(() => {\n if (\n stateRef.current.searchResults.length > 0 &&\n activeSearchIndex >= 0 &&\n activeSearchIndex < stateRef.current.searchResults.length\n ) {\n const { id } = stateRef.current.searchResults[activeSearchIndex];\n for (let i = 0; i < flattenedNodesRef.current.length; i++) {\n if (flattenedNodesRef.current[i].id === id) {\n virtualListRef.current?.scrollToRow(i);\n break;\n }\n }\n }\n }, [activeSearchIndex]);\n\n const nextSearchResult = useCallback(() => {\n const nextIndex = Math.min(\n stateRef.current.searchResults.length - 1,\n activeSearchIndex + 1,\n );\n if (nextIndex !== activeSearchIndex) {\n openPathToNode(stateRef.current.searchResults[nextIndex].id);\n setActiveSearchIndex(nextIndex);\n }\n }, [activeSearchIndex, openPathToNode]);\n\n const previousSearchResult = useCallback(() => {\n const previousIndex = Math.max(0, activeSearchIndex - 1);\n if (previousIndex !== activeSearchIndex) {\n openPathToNode(stateRef.current.searchResults[previousIndex].id);\n setActiveSearchIndex(previousIndex);\n }\n }, [activeSearchIndex, openPathToNode]);\n\n const setNodes = useCallback(\n (\n newNodes: SidebarNode[],\n sortType?: NodeSortType,\n sortOrder?: NodeSortOrder,\n ) => {\n dispatch({\n type: SidebarActionType.SET_NODES,\n payload: { nodes: newNodes, sortType, sortOrder },\n });\n },\n [dispatch],\n );\n\n const changeSearchTerm = useCallback(\n (newTerm: string) => {\n dispatch({\n type: SidebarActionType.CHANGE_SEARCH_TERM,\n payload: newTerm,\n });\n },\n [dispatch],\n );\n\n return (\n <SidebarContext.Provider\n value={{\n nodes: _state.nodes,\n flattenedNodes,\n expandedNodes: _state.expandedNodes,\n pinnedNodePath: _state.pinnedNodePath,\n maxDepth,\n searchTerm: _state.searchTerm,\n searchResults: _state.searchResults,\n isSearching: _state.isSearching,\n activeSearchIndex,\n isStatusFilterEnabled: _state.isStatusFilterEnabled,\n nodeSortType: _state.nodeSortType,\n nodeSortOrder: _state.nodeSortOrder,\n virtualListRef,\n toggleNode,\n openNode,\n closeNode,\n togglePin,\n openLevel,\n changeSearchTerm,\n nextSearchResult,\n previousSearchResult,\n setNodes,\n activeNodeId: _state.activeNodeId,\n syncActiveNodeId,\n onActiveNodeChange,\n setActiveNodeChangeCallback,\n toggleStatusFilter,\n }}\n >\n {children}\n </SidebarContext.Provider>\n );\n};\n\nconst useSidebar = () => useContext(SidebarContext);\n\nexport { SidebarProvider, useSidebar };\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- import { i as NodeSortType, r as NodeSortOrder, s as SidebarNode } from "../../../../../types-CNbvfWjh.js";
2
-
1
+ import { i as NodeSortType, r as NodeSortOrder, s as SidebarNode } from "../../../../../types-FTqFl5du.js";
3
2
  //#region src/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.d.ts
4
- interface SidebarState {
3
+ export interface SidebarState {
5
4
  nodes: SidebarNode[];
6
5
  expandedNodes: Set<string>;
7
6
  pinnedNodePath: SidebarNode[];
@@ -14,8 +13,8 @@ interface SidebarState {
14
13
  nodeSortType?: NodeSortType;
15
14
  nodeSortOrder: NodeSortOrder;
16
15
  }
17
- declare const initialSidebarState: SidebarState;
18
- declare enum SidebarActionType {
16
+ export declare const initialSidebarState: SidebarState;
17
+ export declare enum SidebarActionType {
19
18
  SET_NODES = "SET_NODES",
20
19
  TOGGLE_NODE = "TOGGLE_NODE",
21
20
  OPEN_NODE = "OPEN_NODE",
@@ -85,8 +84,8 @@ interface SetNodeSortOrderAction {
85
84
  type: SidebarActionType.SET_NODES_SORT_ORDER;
86
85
  payload: NodeSortOrder;
87
86
  }
88
- type SidebarAction = SetNodesAction | ToggleNodeAction | OpenNodeAction | CloseNodeAction | ChangeSearchTermAction | SetSearchResultsAction | SetIsSearchingAction | SyncActiveNodeIdAction | ToggleStatusFilterAction | SetPinnedNodePathAction | SetExpandedNodesAction | SetNodeSortTypeAction | SetNodeSortOrderAction;
89
- declare const sidebarReducer: (state: SidebarState | undefined, action: SidebarAction) => SidebarState;
87
+ export type SidebarAction = SetNodesAction | ToggleNodeAction | OpenNodeAction | CloseNodeAction | ChangeSearchTermAction | SetSearchResultsAction | SetIsSearchingAction | SyncActiveNodeIdAction | ToggleStatusFilterAction | SetPinnedNodePathAction | SetExpandedNodesAction | SetNodeSortTypeAction | SetNodeSortOrderAction;
88
+ export declare const sidebarReducer: (state: SidebarState | undefined, action: SidebarAction) => SidebarState;
90
89
  //#endregion
91
- export { SidebarAction, SidebarActionType, SidebarState, initialSidebarState, sidebarReducer };
90
+ export {};
92
91
  //# sourceMappingURL=sidebar-reducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-reducer.d.ts","names":[],"sources":["../../../../../../src/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.ts"],"mappings":";;;UAGiB,YAAA;EACf,KAAA,EAAO,WAAA;EACP,aAAA,EAAe,GAAA;EACf,cAAA,EAAgB,WAAA;EAChB,UAAA;EACA,aAAA,EAAe,WAAA;EACf,WAAA;EACA,iBAAA;EACA,YAAA;EACA,qBAAA;EACA,YAAA,GAAe,YAAA;EACf,aAAA,EAAe,aAAA;AAAA;AAAA,cAIJ,mBAAA,EAAqB,YAAA;AAAA,aAetB,iBAAA;EACV,SAAA;EACA,WAAA;EACA,SAAA;EACA,UAAA;EACA,kBAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,oBAAA;EACA,oBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;AAAA;AAAA,UAIQ,cAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,SAAA;EACxB,OAAA;IACE,KAAA,EAAO,WAAA;IACP,QAAA,GAAW,YAAA;IACX,SAAA,GAAY,aAAA;EAAA;AAAA;AAAA,UAIN,gBAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,WAAA;EACxB,OAAA;AAAA;AAAA,UAGQ,cAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,SAAA;EACxB,OAAA;AAAA;AAAA,UAGQ,eAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,UAAA;EACxB,OAAA;AAAA;AAAA,UAGQ,sBAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,kBAAA;EACxB,OAAA;AAAA;AAAA,UAGQ,sBAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,kBAAA;EACxB,OAAA,EAAS,WAAA;AAAA;AAAA,UAGD,oBAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,gBAAA;EACxB,OAAA;AAAA;AAAA,UAGQ,sBAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,mBAAA;EACxB,OAAA;AAAA;AAAA,UAGQ,wBAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,oBAAA;AAAA;AAAA,UAGhB,uBAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,oBAAA;EACxB,OAAA,EAAS,WAAA;AAAA;AAAA,UAGD,sBAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,kBAAA;EACxB,OAAA,EAAS,GAAA;AAAA;AAAA,UAGD,qBAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,mBAAA;EACxB,OAAA,EAAS,YAAA;AAAA;AAAA,UAGD,sBAAA;EACR,IAAA,EAAM,iBAAA,CAAkB,oBAAA;EACxB,OAAA,EAAS,aAAA;AAAA;AAAA,KAIC,aAAA,GACR,cAAA,GACA,gBAAA,GACA,cAAA,GACA,eAAA,GACA,sBAAA,GACA,sBAAA,GACA,oBAAA,GACA,sBAAA,GACA,wBAAA,GACA,uBAAA,GACA,sBAAA,GACA,qBAAA,GACA,sBAAA;AAAA,cAGS,cAAA,GACX,KAAA,EAAO,YAAA,cACP,MAAA,EAAQ,aAAA,KACP,YAAA"}
1
+ {"version":3,"file":"sidebar-reducer.d.ts","names":[],"sources":["../../../../../../src/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.ts"],"mappings":";;iBAGiB;EACf,OAAO;EACP,eAAe;EACf,gBAAgB;EAChB;EACA,eAAe;EACf;EACA;EACA;EACA;EACA,eAAe;EACf,eAAe;;qBAIJ,qBAAqB;oBAetB;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAIQ;EACR,MAAM,kBAAkB;EACxB;IACE,OAAO;IACP,WAAW;IACX,YAAY;;;UAIN;EACR,MAAM,kBAAkB;EACxB;;UAGQ;EACR,MAAM,kBAAkB;EACxB;;UAGQ;EACR,MAAM,kBAAkB;EACxB;;UAGQ;EACR,MAAM,kBAAkB;EACxB;;UAGQ;EACR,MAAM,kBAAkB;EACxB,SAAS;;UAGD;EACR,MAAM,kBAAkB;EACxB;;UAGQ;EACR,MAAM,kBAAkB;EACxB;;UAGQ;EACR,MAAM,kBAAkB;;UAGhB;EACR,MAAM,kBAAkB;EACxB,SAAS;;UAGD;EACR,MAAM,kBAAkB;EACxB,SAAS;;UAGD;EACR,MAAM,kBAAkB;EACxB,SAAS;;UAGD;EACR,MAAM,kBAAkB;EACxB,SAAS;;YAIC,gBACR,iBACA,mBACA,iBACA,kBACA,yBACA,yBACA,uBACA,yBACA,2BACA,0BACA,yBACA,wBACA;qBAGS,iBAAc,OAClB,0BAAY,QACX,kBACP"}
@@ -12,7 +12,7 @@ const initialSidebarState = {
12
12
  nodeSortType: void 0,
13
13
  nodeSortOrder: "asc"
14
14
  };
15
- let SidebarActionType = /* @__PURE__ */ function(SidebarActionType) {
15
+ let SidebarActionType = /*#__PURE__*/ function(SidebarActionType) {
16
16
  SidebarActionType["SET_NODES"] = "SET_NODES";
17
17
  SidebarActionType["TOGGLE_NODE"] = "TOGGLE_NODE";
18
18
  SidebarActionType["OPEN_NODE"] = "OPEN_NODE";