@powerhousedao/design-system 6.1.0-dev.2 → 6.1.0-dev.21
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.
- package/dist/Removed-CO_5C1ce.js +178 -0
- package/dist/Removed-CO_5C1ce.js.map +1 -0
- package/dist/Tabler-FjvVqX5a.js +65 -0
- package/dist/Tabler-FjvVqX5a.js.map +1 -0
- package/dist/{button-49Walvwn.d.ts → button-C8doazjv.d.ts} +1 -1
- package/dist/{button-49Walvwn.d.ts.map → button-C8doazjv.d.ts.map} +1 -1
- package/dist/{character-counter-BcuG4STA.d.ts → character-counter-BWoglM2P.d.ts} +1 -1
- package/dist/{character-counter-BcuG4STA.d.ts.map → character-counter-BWoglM2P.d.ts.map} +1 -1
- package/dist/{checkbox-dqrYEK5V.d.ts → checkbox-CGBtXQnI.d.ts} +3 -3
- package/dist/{checkbox-dqrYEK5V.d.ts.map → checkbox-CGBtXQnI.d.ts.map} +1 -1
- package/dist/{checkbox-base-8xXJvAbj.d.ts → checkbox-base-CZo-4eL0.d.ts} +1 -1
- package/dist/{checkbox-base-8xXJvAbj.d.ts.map → checkbox-base-CZo-4eL0.d.ts.map} +1 -1
- package/dist/{command-BBihfa1C.d.ts → command-DFzB66Ou.d.ts} +5 -5
- package/dist/command-DFzB66Ou.d.ts.map +1 -0
- package/dist/connect/components/toast/toast.d.ts.map +1 -1
- package/dist/connect/components/toast/toast.js +6 -6
- package/dist/connect/components/toast/toast.js.map +1 -1
- package/dist/connect/index.d.ts +55 -91
- package/dist/connect/index.d.ts.map +1 -1
- package/dist/connect/index.js +1056 -857
- package/dist/connect/index.js.map +1 -1
- package/dist/{content-OpXUtrTe.d.ts → content-BHWIqmio.d.ts} +2 -2
- package/dist/{content-OpXUtrTe.d.ts.map → content-BHWIqmio.d.ts.map} +1 -1
- package/dist/{enum-field-CjTSTf1e.d.ts → enum-field-UxIet5Lp.d.ts} +3 -3
- package/dist/{enum-field-CjTSTf1e.d.ts.map → enum-field-UxIet5Lp.d.ts.map} +1 -1
- package/dist/{form-B9JNvrH6.d.ts → form-CKRKn0TQ.d.ts} +1 -1
- package/dist/{form-B9JNvrH6.d.ts.map → form-CKRKn0TQ.d.ts.map} +1 -1
- package/dist/{form-description-BpST5Ww-.d.ts → form-description-CYkcMEzm.d.ts} +1 -1
- package/dist/{form-description-BpST5Ww-.d.ts.map → form-description-CYkcMEzm.d.ts.map} +1 -1
- package/dist/{form-group-BauWlFkQ.d.ts → form-group-C8kL6pdZ.d.ts} +1 -1
- package/dist/form-group-C8kL6pdZ.d.ts.map +1 -0
- package/dist/{form-label-Cz_gcj-B.d.ts → form-label-b6nQi0XO.d.ts} +1 -1
- package/dist/form-label-b6nQi0XO.d.ts.map +1 -0
- package/dist/{form-message-BPqNM4gG.d.ts → form-message-Dq72nBXz.d.ts} +1 -1
- package/dist/{form-message-BPqNM4gG.d.ts.map → form-message-Dq72nBXz.d.ts.map} +1 -1
- package/dist/{form-server-error-message-CzMQQ8ru.d.ts → form-server-error-message-DXbaiTfF.d.ts} +1 -1
- package/dist/{form-server-error-message-CzMQQ8ru.d.ts.map → form-server-error-message-DXbaiTfF.d.ts.map} +1 -1
- package/dist/{src-BgCjYazJ.js → icon-C4QOpsdI.js} +14 -964
- package/dist/icon-C4QOpsdI.js.map +1 -0
- package/dist/{id-autocomplete-jkaREmPP.d.ts → id-autocomplete-C-hwriS5.d.ts} +2 -2
- package/dist/{id-autocomplete-jkaREmPP.d.ts.map → id-autocomplete-C-hwriS5.d.ts.map} +1 -1
- package/dist/{id-autocomplete-input-container-NIuWfCB_.d.ts → id-autocomplete-input-container-DFEyPh5p.d.ts} +2 -2
- package/dist/{id-autocomplete-input-container-NIuWfCB_.d.ts.map → id-autocomplete-input-container-DFEyPh5p.d.ts.map} +1 -1
- package/dist/{id-autocomplete-list-Bi2IXdXg.d.ts → id-autocomplete-list-EzLpF23C.d.ts} +2 -2
- package/dist/{id-autocomplete-list-Bi2IXdXg.d.ts.map → id-autocomplete-list-EzLpF23C.d.ts.map} +1 -1
- package/dist/{id-autocomplete-list-option-CA9HIqEh.d.ts → id-autocomplete-list-option-CB5B07Hi.d.ts} +2 -2
- package/dist/{id-autocomplete-list-option-CA9HIqEh.d.ts.map → id-autocomplete-list-option-CB5B07Hi.d.ts.map} +1 -1
- package/dist/{index-DtPJq-vz.d.ts → index--hDSfvJT.d.ts} +3 -16
- package/dist/index--hDSfvJT.d.ts.map +1 -0
- package/dist/index-E7Wvm5uX.d.ts +1 -0
- package/dist/index-J3R2mDFQ.d.ts +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -2
- package/dist/{input-D11GgWGm.d.ts → input-BpEQjaWV.d.ts} +1 -1
- package/dist/input-BpEQjaWV.d.ts.map +1 -0
- package/dist/{json-viewer-vWp8vOvz.d.ts → json-viewer-DaTgmzkS.d.ts} +1 -1
- package/dist/{json-viewer-vWp8vOvz.d.ts.map → json-viewer-DaTgmzkS.d.ts.map} +1 -1
- package/dist/{message-list-aysvo-xf.d.ts → message-list-C4mPpBBa.d.ts} +2 -2
- package/dist/{message-list-aysvo-xf.d.ts.map → message-list-C4mPpBBa.d.ts.map} +1 -1
- package/dist/{popover-glLRVxPS.d.ts → popover-XSBOuSih.d.ts} +1 -1
- package/dist/{popover-glLRVxPS.d.ts.map → popover-XSBOuSih.d.ts.map} +1 -1
- package/dist/{radio-DZ4xl9oz.d.ts → radio-eL0Oy86J.d.ts} +1 -1
- package/dist/{radio-DZ4xl9oz.d.ts.map → radio-eL0Oy86J.d.ts.map} +1 -1
- package/dist/{radio-group-DjJbcDzB.d.ts → radio-group-Bkli6nUz.d.ts} +1 -1
- package/dist/{radio-group-DjJbcDzB.d.ts.map → radio-group-Bkli6nUz.d.ts.map} +1 -1
- package/dist/{radio-group-field-DNapUn2b.d.ts → radio-group-field-wlqeiLN3.d.ts} +3 -3
- package/dist/{radio-group-field-DNapUn2b.d.ts.map → radio-group-field-wlqeiLN3.d.ts.map} +1 -1
- package/dist/{search-autocomplete-OeZbE-VN.d.ts → search-autocomplete-BJJkrZ1i.d.ts} +2 -2
- package/dist/{search-autocomplete-OeZbE-VN.d.ts.map → search-autocomplete-BJJkrZ1i.d.ts.map} +1 -1
- package/dist/{select-field-BClhLm83.d.ts → select-field-C97QIhUL.d.ts} +2 -2
- package/dist/{select-field-BClhLm83.d.ts.map → select-field-C97QIhUL.d.ts.map} +1 -1
- package/dist/{selected-content-q33DjCYy.d.ts → selected-content-CGsK5PR4.d.ts} +2 -2
- package/dist/selected-content-CGsK5PR4.d.ts.map +1 -0
- package/dist/sidebar-DOoE4krt.d.ts +102 -0
- package/dist/sidebar-DOoE4krt.d.ts.map +1 -0
- package/dist/sidebar-provider-C2eyz9TL.d.ts +46 -0
- package/dist/sidebar-provider-C2eyz9TL.d.ts.map +1 -0
- package/dist/{splitted-input-diff-Ch6IKdEa.d.ts → splitted-input-diff-CwPedpov.d.ts} +2 -2
- package/dist/splitted-input-diff-CwPedpov.d.ts.map +1 -0
- package/dist/src-BrrPQVce.js +710 -0
- package/dist/src-BrrPQVce.js.map +1 -0
- package/dist/style.css +84 -4173
- package/dist/{text-field-Cx-EfZP6.d.ts → text-field-DSInH67J.d.ts} +3 -3
- package/dist/{text-field-Cx-EfZP6.d.ts.map → text-field-DSInH67J.d.ts.map} +1 -1
- package/dist/{text-input-DUddj4-C.d.ts → text-input-8zXIWHLi.d.ts} +3 -3
- package/dist/{text-input-DUddj4-C.d.ts.map → text-input-8zXIWHLi.d.ts.map} +1 -1
- package/dist/{text-input-diff-4i2zuulO.d.ts → text-input-diff-B0vLSKQm.d.ts} +2 -2
- package/dist/{text-input-diff-4i2zuulO.d.ts.map → text-input-diff-B0vLSKQm.d.ts.map} +1 -1
- package/dist/{tooltip-Cf5jSzdt.d.ts → tooltip-BxS9HpML.d.ts} +1 -1
- package/dist/{tooltip-Cf5jSzdt.d.ts.map → tooltip-BxS9HpML.d.ts.map} +1 -1
- package/dist/{types-tThrTH_c.d.ts → types-BTq-St7H.d.ts} +1 -1
- package/dist/{types-tThrTH_c.d.ts.map → types-BTq-St7H.d.ts.map} +1 -1
- package/dist/{types-BfmDXMrz.d.ts → types-Bsn62tJB.d.ts} +1 -1
- package/dist/{types-BfmDXMrz.d.ts.map → types-Bsn62tJB.d.ts.map} +1 -1
- package/dist/{types-9JRQnd7a.d.ts → types-C04Q_Fan.d.ts} +1 -1
- package/dist/{types-9JRQnd7a.d.ts.map → types-C04Q_Fan.d.ts.map} +1 -1
- package/dist/types-CNbvfWjh.d.ts +31 -0
- package/dist/types-CNbvfWjh.d.ts.map +1 -0
- package/dist/ui/components/button/button.d.ts +1 -1
- package/dist/ui/components/button/button.js +3 -3
- package/dist/ui/components/button/button.js.map +1 -1
- package/dist/ui/components/character-counter/character-counter.d.ts +1 -1
- package/dist/ui/components/character-counter/character-counter.js +6 -6
- package/dist/ui/components/character-counter/character-counter.js.map +1 -1
- package/dist/ui/components/checkbox/checkbox-base.d.ts +1 -1
- package/dist/ui/components/checkbox/checkbox-base.js +3 -3
- package/dist/ui/components/checkbox/checkbox-base.js.map +1 -1
- package/dist/ui/components/checkbox/checkbox.d.ts +1 -1
- package/dist/ui/components/checkbox/checkbox.js +4 -4
- package/dist/ui/components/checkbox/checkbox.js.map +1 -1
- package/dist/ui/components/command/command.d.ts +1 -1
- package/dist/ui/components/command/command.js +9 -8
- package/dist/ui/components/command/command.js.map +1 -1
- package/dist/ui/components/enum-field/enum-field.d.ts +1 -1
- package/dist/ui/components/enum-field/types.d.ts +1 -1
- package/dist/ui/components/form/form.d.ts +1 -1
- package/dist/ui/components/form/form.js +1 -1
- package/dist/ui/components/form/form.js.map +1 -1
- package/dist/ui/components/form-description/form-description.d.ts +1 -1
- package/dist/ui/components/form-description/form-description.js +2 -2
- package/dist/ui/components/form-description/form-description.js.map +1 -1
- package/dist/ui/components/form-group/form-group.d.ts +1 -1
- package/dist/ui/components/form-label/form-label.d.ts +1 -1
- package/dist/ui/components/form-label/form-label.js +5 -4
- package/dist/ui/components/form-label/form-label.js.map +1 -1
- package/dist/ui/components/form-message/form-message.d.ts +1 -1
- package/dist/ui/components/form-message/form-message.js +5 -5
- package/dist/ui/components/form-message/form-message.js.map +1 -1
- package/dist/ui/components/form-message/form-server-error-message.d.ts +1 -1
- package/dist/ui/components/form-message/message-list.d.ts +1 -1
- package/dist/ui/components/form-message/message-list.js +6 -6
- package/dist/ui/components/form-message/message-list.js.map +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete-input-container.d.ts +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete-input-container.js +10 -9
- package/dist/ui/components/id-autocomplete/id-autocomplete-input-container.js.map +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete-list-option.d.ts +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete-list-option.js +20 -19
- package/dist/ui/components/id-autocomplete/id-autocomplete-list-option.js.map +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete-list.d.ts +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete-list.js +6 -6
- package/dist/ui/components/id-autocomplete/id-autocomplete-list.js.map +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete.d.ts +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete.js +4 -4
- package/dist/ui/components/id-autocomplete/id-autocomplete.js.map +1 -1
- package/dist/ui/components/id-autocomplete/types.d.ts +1 -1
- package/dist/ui/components/id-autocomplete/use-id-autocomplete.d.ts +1 -1
- package/dist/ui/components/index.d.ts +40 -37
- package/dist/ui/components/index.js +3 -1
- package/dist/ui/components/input/input.d.ts +1 -1
- package/dist/ui/components/input/input.js +2 -6
- package/dist/ui/components/input/input.js.map +1 -1
- package/dist/ui/components/input/splitted-input-diff.d.ts +1 -1
- package/dist/ui/components/input/splitted-input-diff.js +12 -11
- package/dist/ui/components/input/splitted-input-diff.js.map +1 -1
- package/dist/ui/components/input/subcomponent/input-diff.js +2 -2
- package/dist/ui/components/input/subcomponent/input-diff.js.map +1 -1
- package/dist/ui/components/input/subcomponent/text-diff.d.ts +1 -1
- package/dist/ui/components/input/subcomponent/text-diff.js +5 -5
- package/dist/ui/components/input/subcomponent/text-diff.js.map +1 -1
- package/dist/ui/components/json-viewer/json-viewer.d.ts +1 -1
- package/dist/ui/components/popover/popover.d.ts +1 -1
- package/dist/ui/components/popover/popover.js +3 -3
- package/dist/ui/components/popover/popover.js.map +1 -1
- package/dist/ui/components/radio-group-field/radio-group-field.d.ts +1 -1
- package/dist/ui/components/radio-group-field/radio-group-field.js +2 -2
- package/dist/ui/components/radio-group-field/radio-group-field.js.map +1 -1
- package/dist/ui/components/radio-group-field/radio-group.d.ts +1 -1
- package/dist/ui/components/radio-group-field/radio.d.ts +1 -1
- package/dist/ui/components/radio-group-field/radio.js +4 -4
- package/dist/ui/components/radio-group-field/radio.js.map +1 -1
- package/dist/ui/components/search-autocomplete/index.d.ts +3 -3
- package/dist/ui/components/search-autocomplete/search-autocomplete.d.ts +1 -1
- package/dist/ui/components/search-autocomplete/search-autocomplete.js +16 -16
- package/dist/ui/components/search-autocomplete/search-autocomplete.js.map +1 -1
- package/dist/ui/components/search-autocomplete/types.d.ts +1 -1
- package/dist/ui/components/search-autocomplete/use-search-autocomplete.d.ts +1 -1
- package/dist/ui/components/search-autocomplete/use-search-autocomplete.js.map +1 -1
- package/dist/ui/components/select-field/content.d.ts +1 -1
- package/dist/ui/components/select-field/content.js +10 -9
- package/dist/ui/components/select-field/content.js.map +1 -1
- package/dist/ui/components/select-field/select-field.d.ts +1 -1
- package/dist/ui/components/select-field/select-field.js +2 -2
- package/dist/ui/components/select-field/select-field.js.map +1 -1
- package/dist/ui/components/select-field/selected-content.d.ts +1 -1
- package/dist/ui/components/select-field/selected-content.js +11 -10
- package/dist/ui/components/select-field/selected-content.js.map +1 -1
- package/dist/ui/components/select-field/subcomponents/CommandItemList.d.ts +1 -1
- package/dist/ui/components/select-field/subcomponents/CommandItemList.d.ts.map +1 -1
- package/dist/ui/components/select-field/subcomponents/CommandItemList.js +11 -10
- package/dist/ui/components/select-field/subcomponents/CommandItemList.js.map +1 -1
- package/dist/ui/components/select-field/use-select-field.d.ts +1 -1
- package/dist/ui/components/sidebar/index.d.ts +4 -0
- package/dist/ui/components/sidebar/index.js +3 -0
- package/dist/ui/components/sidebar/sidebar.d.ts +2 -0
- package/dist/ui/components/sidebar/sidebar.js +110 -0
- package/dist/ui/components/sidebar/sidebar.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.d.ts +14 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.js +56 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-header.d.ts +11 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-header.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-header.js +45 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-header.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-item.d.ts +35 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-item.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-item.js +156 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-item.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.d.ts +7 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.js +30 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-provider/index.d.ts +2 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-provider/index.js +2 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-provider.d.ts +2 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-provider.js +268 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-provider.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.d.ts +92 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.js +107 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/index.d.ts +4 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/index.js +4 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.d.ts +10 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.js +22 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.d.ts +10 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.js +22 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.d.ts +8 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.js +85 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.d.ts +16 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.js +21 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton.d.ts +7 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton.js +63 -0
- package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton.js.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/status-icon.d.ts +16 -0
- package/dist/ui/components/sidebar/subcomponents/status-icon.d.ts.map +1 -0
- package/dist/ui/components/sidebar/subcomponents/status-icon.js +43 -0
- package/dist/ui/components/sidebar/subcomponents/status-icon.js.map +1 -0
- package/dist/ui/components/sidebar/types.d.ts +2 -0
- package/dist/ui/components/sidebar/types.js +14 -0
- package/dist/ui/components/sidebar/types.js.map +1 -0
- package/dist/ui/components/sidebar/use-ellipsis.d.ts +10 -0
- package/dist/ui/components/sidebar/use-ellipsis.d.ts.map +1 -0
- package/dist/ui/components/sidebar/use-ellipsis.js +26 -0
- package/dist/ui/components/sidebar/use-ellipsis.js.map +1 -0
- package/dist/ui/components/sidebar/use-sidebar-resize.d.ts +22 -0
- package/dist/ui/components/sidebar/use-sidebar-resize.d.ts.map +1 -0
- package/dist/ui/components/sidebar/use-sidebar-resize.js +72 -0
- package/dist/ui/components/sidebar/use-sidebar-resize.js.map +1 -0
- package/dist/ui/components/sidebar/utils.d.ts +14 -0
- package/dist/ui/components/sidebar/utils.d.ts.map +1 -0
- package/dist/ui/components/sidebar/utils.js +118 -0
- package/dist/ui/components/sidebar/utils.js.map +1 -0
- package/dist/ui/components/text-field/text-field.d.ts +1 -1
- package/dist/ui/components/text-input/text-input-diff.d.ts +1 -1
- package/dist/ui/components/text-input/text-input.d.ts +1 -1
- package/dist/ui/components/text-input/text-input.js +2 -2
- package/dist/ui/components/text-input/text-input.js.map +1 -1
- package/dist/ui/components/text-input/types.d.ts +1 -1
- package/dist/ui/components/tooltip/tooltip.d.ts +1 -1
- package/dist/ui/components/tooltip/tooltip.js +2 -2
- package/dist/ui/components/tooltip/tooltip.js.map +1 -1
- package/dist/ui/components/types.d.ts +1 -1
- package/dist/ui/components/value-transformer/value-transformer.d.ts +1 -1
- package/dist/ui/components/with-field-validation/with-field-validation.d.ts +1 -1
- package/dist/ui/components/with-field-validation/with-field-validation.js +1 -1
- package/dist/ui/components/with-field-validation/with-field-validation.js.map +1 -1
- package/dist/ui/index.d.ts +42 -39
- package/dist/ui/index.js +3 -1
- package/dist/ui/lib/date-picker.d.ts +1 -1
- package/dist/ui/lib/shared-value-transformers.d.ts +1 -1
- package/dist/ui/lib/types.d.ts +1 -1
- package/dist/ui/types.d.ts +2 -2
- package/dist/{use-id-autocomplete-BPHVmVE8.d.ts → use-id-autocomplete-By7YSChC.d.ts} +2 -2
- package/dist/{use-id-autocomplete-BPHVmVE8.d.ts.map → use-id-autocomplete-By7YSChC.d.ts.map} +1 -1
- package/dist/{use-search-autocomplete-Xf7shCtk.d.ts → use-search-autocomplete-IfcQ_gKh.d.ts} +2 -2
- package/dist/{use-search-autocomplete-Xf7shCtk.d.ts.map → use-search-autocomplete-IfcQ_gKh.d.ts.map} +1 -1
- package/dist/{value-transformer-DCiU65Qa.d.ts → value-transformer-DQjqtNih.d.ts} +2 -2
- package/dist/{value-transformer-DCiU65Qa.d.ts.map → value-transformer-DQjqtNih.d.ts.map} +1 -1
- package/dist/{with-field-validation-vt0l1Sp7.d.ts → with-field-validation-Di5D8vU-.d.ts} +2 -2
- package/dist/{with-field-validation-vt0l1Sp7.d.ts.map → with-field-validation-Di5D8vU-.d.ts.map} +1 -1
- package/package.json +9 -5
- package/theme.css +60 -14
- package/dist/command-BBihfa1C.d.ts.map +0 -1
- package/dist/form-group-BauWlFkQ.d.ts.map +0 -1
- package/dist/form-label-Cz_gcj-B.d.ts.map +0 -1
- package/dist/index-DtPJq-vz.d.ts.map +0 -1
- package/dist/input-D11GgWGm.d.ts.map +0 -1
- package/dist/selected-content-q33DjCYy.d.ts.map +0 -1
- package/dist/splitted-input-diff-Ch6IKdEa.d.ts.map +0 -1
- package/dist/src-BgCjYazJ.js.map +0 -1
- /package/dist/{index-CWsYGvaO.d.ts → index--okzibnx.d.ts} +0 -0
- /package/dist/{index-qM4PwHTs.d.ts → index-BLwMeReG.d.ts} +0 -0
- /package/dist/{index-uQcTfU6c.d.ts → index-Cw3C7_1f.d.ts} +0 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { a as PinFilled, o as Pin, s as CaretDown, t as Icon } from "../../../../icon-C4QOpsdI.js";
|
|
2
|
+
import { Tooltip, TooltipProvider as Provider } from "../../tooltip/tooltip.js";
|
|
3
|
+
import { NodeStatus } from "../types.js";
|
|
4
|
+
import { useEllipsis } from "../use-ellipsis.js";
|
|
5
|
+
import { StatusIcon } from "./status-icon.js";
|
|
6
|
+
import { cloneElement, forwardRef, useMemo, useRef } from "react";
|
|
7
|
+
import { twMerge } from "tailwind-merge";
|
|
8
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
//#region src/ui/components/sidebar/subcomponents/sidebar-item.tsx
|
|
10
|
+
const TOOLTIP_DELAY = 700;
|
|
11
|
+
const TOOLTIP_DELAY_LONG = 1728e5;
|
|
12
|
+
const SidebarItem = ({ node, toggleNode, togglePin, searchTerm, searchResults, activeSearchIndex, allowPinning, pinnedMode = false, isPinned = false, isActive = false, style, onChange }) => {
|
|
13
|
+
const paddingLeft = node.depth * 24;
|
|
14
|
+
const isSearchActive = searchResults.length > 0 && searchResults[activeSearchIndex].id === node.id;
|
|
15
|
+
const IconComponent = node.isExpanded ? node.expandedIcon ?? node.icon : node.icon;
|
|
16
|
+
const isDescendenceModified = useMemo(() => {
|
|
17
|
+
const check = (n) => {
|
|
18
|
+
if (n.status !== NodeStatus.UNCHANGED && n.status) return true;
|
|
19
|
+
if (n.children && n.children.length > 0) return n.children.some((child) => check(child));
|
|
20
|
+
return false;
|
|
21
|
+
};
|
|
22
|
+
return check(node);
|
|
23
|
+
}, [node]);
|
|
24
|
+
const hasStatus = node.status && node.status !== NodeStatus.UNCHANGED || isDescendenceModified;
|
|
25
|
+
const computedStyle = {
|
|
26
|
+
...style,
|
|
27
|
+
paddingLeft
|
|
28
|
+
};
|
|
29
|
+
const ellipsisRef = useRef(null);
|
|
30
|
+
const hasEllipsis = useEllipsis(ellipsisRef);
|
|
31
|
+
return /* @__PURE__ */ jsx(Provider, { children: /* @__PURE__ */ jsx(Tooltip, {
|
|
32
|
+
content: node.title,
|
|
33
|
+
triggerAsChild: true,
|
|
34
|
+
side: "bottom",
|
|
35
|
+
delayDuration: hasEllipsis ? TOOLTIP_DELAY : TOOLTIP_DELAY_LONG,
|
|
36
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
37
|
+
style: computedStyle,
|
|
38
|
+
className: twMerge("group/sidebar-item-wrapper flex w-full items-center", !pinnedMode && "pb-2"),
|
|
39
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
40
|
+
tabIndex: 0,
|
|
41
|
+
"data-testid": "sidebar-item",
|
|
42
|
+
id: `sidebar-item-${node.id}`,
|
|
43
|
+
className: twMerge("group/sidebar-item relative flex w-full cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-gray-700 select-none hover:bg-gray-100 dark:text-slate-400 dark:hover:bg-slate-900", hasStatus && "pr-6", allowPinning && (hasStatus ? "hover:pr-12" : "hover:pr-6"), isPinned && (hasStatus ? "pr-12" : "pr-6"), isSearchActive && "bg-yellow-100 dark:bg-[#604B0033]", pinnedMode && "after:absolute after:-top-2.5 after:left-[15px] after:h-4 after:w-px after:bg-gray-300 first:group-first/sidebar-item-wrapper:after:hidden hover:bg-gray-50 dark:hover:bg-slate-600", isActive && "bg-gray-200 font-medium text-gray-900 hover:bg-gray-200 dark:bg-slate-900 dark:text-slate-50 dark:hover:bg-slate-900", node.className),
|
|
44
|
+
onClick: () => {
|
|
45
|
+
toggleNode?.(node.id);
|
|
46
|
+
onChange?.(node);
|
|
47
|
+
},
|
|
48
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
49
|
+
className: "flex max-w-full items-center gap-2",
|
|
50
|
+
children: [
|
|
51
|
+
!pinnedMode && /* @__PURE__ */ jsx("div", {
|
|
52
|
+
className: "-m-2 -mr-1 h-full rounded-md py-2 pr-1 pl-2 hover:bg-gray-200",
|
|
53
|
+
onClick: (e) => {
|
|
54
|
+
e.stopPropagation();
|
|
55
|
+
toggleNode?.(node.id);
|
|
56
|
+
},
|
|
57
|
+
children: /* @__PURE__ */ jsx(CaretDown, {
|
|
58
|
+
width: "16",
|
|
59
|
+
height: "16",
|
|
60
|
+
className: twMerge("min-w-4", node.isExpanded && node.children && node.children.length > 0 ? "" : "-rotate-90", node.children === void 0 || node.children.length === 0 ? "text-gray-300 dark:text-slate-500" : "text-gray-700 dark:text-slate-400")
|
|
61
|
+
})
|
|
62
|
+
}),
|
|
63
|
+
IconComponent ? typeof IconComponent === "string" ? /* @__PURE__ */ jsx(Icon, {
|
|
64
|
+
name: IconComponent,
|
|
65
|
+
size: 16,
|
|
66
|
+
className: "min-w-4"
|
|
67
|
+
}) : /* @__PURE__ */ cloneElement(IconComponent, { className: "min-w-4 w-4" }) : pinnedMode ? /* @__PURE__ */ jsx(PinnedModeCircleIcon, { isPinned }) : null,
|
|
68
|
+
/* @__PURE__ */ jsx(RenderTitle, {
|
|
69
|
+
ref: ellipsisRef,
|
|
70
|
+
title: node.title,
|
|
71
|
+
searchTerm,
|
|
72
|
+
isSearchActive,
|
|
73
|
+
pinnedMode,
|
|
74
|
+
className: ""
|
|
75
|
+
}),
|
|
76
|
+
allowPinning && /* @__PURE__ */ jsx("div", {
|
|
77
|
+
className: twMerge("absolute top-1/2 flex -translate-y-1/2 items-center justify-center", hasStatus ? "right-8" : "right-2", isPinned ? "text-gray-700 hover:text-blue-900 dark:text-slate-50 dark:hover:text-blue-900" : "invisible text-gray-300 group-hover/sidebar-item:visible hover:text-gray-700 dark:text-slate-200 dark:hover:text-slate-100"),
|
|
78
|
+
onClick: (e) => {
|
|
79
|
+
e.stopPropagation();
|
|
80
|
+
togglePin(node.id);
|
|
81
|
+
},
|
|
82
|
+
children: isPinned ? /* @__PURE__ */ jsx(PinFilled, {
|
|
83
|
+
width: "16",
|
|
84
|
+
height: "16"
|
|
85
|
+
}) : /* @__PURE__ */ jsx(Pin, {
|
|
86
|
+
width: "16",
|
|
87
|
+
height: "16"
|
|
88
|
+
})
|
|
89
|
+
}),
|
|
90
|
+
hasStatus && /* @__PURE__ */ jsx("div", {
|
|
91
|
+
className: twMerge("absolute top-1/2 right-2 flex -translate-y-1/2 items-center justify-center", "text-gray-300 group-hover/sidebar-item:visible hover:text-gray-700 dark:text-slate-600 dark:hover:text-slate-500"),
|
|
92
|
+
onClick: (e) => {
|
|
93
|
+
e.stopPropagation();
|
|
94
|
+
togglePin(node.id);
|
|
95
|
+
},
|
|
96
|
+
children: /* @__PURE__ */ jsx(StatusIcon, {
|
|
97
|
+
status: node.status ?? NodeStatus.UNCHANGED,
|
|
98
|
+
isDescendenceModified
|
|
99
|
+
})
|
|
100
|
+
})
|
|
101
|
+
]
|
|
102
|
+
})
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
}) });
|
|
106
|
+
};
|
|
107
|
+
const RenderTitle = /* @__PURE__ */ forwardRef(({ title, searchTerm, isSearchActive, pinnedMode, className }, ref) => {
|
|
108
|
+
return /* @__PURE__ */ jsx("div", {
|
|
109
|
+
ref,
|
|
110
|
+
className: twMerge("truncate text-sm/5", className),
|
|
111
|
+
children: searchTerm && title.toLowerCase().includes(searchTerm.toLowerCase()) && !pinnedMode ? (() => {
|
|
112
|
+
const highlightClass = isSearchActive ? "bg-yellow-300 dark:bg-[#604B00]" : "bg-gray-300 dark:bg-slate-800";
|
|
113
|
+
const parts = [];
|
|
114
|
+
let remaining = title;
|
|
115
|
+
const lowerTerm = searchTerm.toLowerCase();
|
|
116
|
+
let i = 0;
|
|
117
|
+
while (remaining.length > 0) {
|
|
118
|
+
const idx = remaining.toLowerCase().indexOf(lowerTerm);
|
|
119
|
+
if (idx === -1) {
|
|
120
|
+
parts.push(remaining);
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
if (idx > 0) parts.push(remaining.slice(0, idx));
|
|
124
|
+
parts.push(/* @__PURE__ */ jsx("span", {
|
|
125
|
+
className: highlightClass,
|
|
126
|
+
children: remaining.slice(idx, idx + searchTerm.length)
|
|
127
|
+
}, i++));
|
|
128
|
+
remaining = remaining.slice(idx + searchTerm.length);
|
|
129
|
+
}
|
|
130
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: parts });
|
|
131
|
+
})() : title
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
RenderTitle.displayName = "RenderTitle";
|
|
135
|
+
const PinnedModeCircleIcon = ({ isPinned }) => /* @__PURE__ */ jsxs("svg", {
|
|
136
|
+
width: "16",
|
|
137
|
+
height: "16",
|
|
138
|
+
viewBox: "0 0 16 16",
|
|
139
|
+
fill: "none",
|
|
140
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
141
|
+
className: "min-w-4",
|
|
142
|
+
children: [/* @__PURE__ */ jsx("rect", {
|
|
143
|
+
width: "16",
|
|
144
|
+
height: "16",
|
|
145
|
+
rx: "6.4",
|
|
146
|
+
fill: "transparent"
|
|
147
|
+
}), /* @__PURE__ */ jsx("path", {
|
|
148
|
+
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",
|
|
149
|
+
fill: "currentColor",
|
|
150
|
+
className: isPinned ? "text-gray-500 dark:text-slate-500" : "text-gray-300 dark:text-slate-300"
|
|
151
|
+
})]
|
|
152
|
+
});
|
|
153
|
+
//#endregion
|
|
154
|
+
export { SidebarItem };
|
|
155
|
+
|
|
156
|
+
//# sourceMappingURL=sidebar-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-item.js","names":["cloneElement","forwardRef","useMemo","useRef","twMerge","CaretDown","Pin","PinFilled","Tooltip","TooltipProvider","NodeStatus","useEllipsis","StatusIcon","Icon","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 { 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\";\nimport { Icon } from \"../../../../powerhouse/index.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-gray-700 select-none hover:bg-gray-100 dark:text-slate-400 dark:hover:bg-slate-900\",\n hasStatus && \"pr-6\",\n allowPinning && (hasStatus ? \"hover:pr-12\" : \"hover:pr-6\"),\n isPinned && (hasStatus ? \"pr-12\" : \"pr-6\"),\n isSearchActive && \"bg-yellow-100 dark:bg-[#604B0033]\",\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-gray-300 first:group-first/sidebar-item-wrapper:after:hidden hover:bg-gray-50 dark:hover:bg-slate-600\",\n isActive &&\n \"bg-gray-200 font-medium text-gray-900 hover:bg-gray-200 dark:bg-slate-900 dark:text-slate-50 dark:hover:bg-slate-900\",\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:bg-gray-200\"\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-gray-300 dark:text-slate-500\"\n : \"text-gray-700 dark:text-slate-400\",\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-gray-700 hover:text-blue-900 dark:text-slate-50 dark:hover:text-blue-900\"\n : \"invisible text-gray-300 group-hover/sidebar-item:visible hover:text-gray-700 dark:text-slate-200 dark:hover:text-slate-100\",\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-gray-300 group-hover/sidebar-item:visible hover:text-gray-700 dark:text-slate-600 dark:hover:text-slate-500\",\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-yellow-300 dark:bg-[#604B00]\"\n : \"bg-gray-300 dark:bg-slate-800\";\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={\n isPinned\n ? \"text-gray-500 dark:text-slate-500\"\n : \"text-gray-300 dark:text-slate-300\"\n }\n />\n </svg>\n);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/ui/components/sidebar/subcomponents/sidebar-pinning-area.d.ts
|
|
4
|
+
declare const SidebarPinningArea: () => react_jsx_runtime0.JSX.Element;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { SidebarPinningArea };
|
|
7
|
+
//# sourceMappingURL=sidebar-pinning-area.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { SidebarItem } from "./sidebar-item.js";
|
|
2
|
+
import { useSidebar } from "./sidebar-provider/sidebar-provider.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/ui/components/sidebar/subcomponents/sidebar-pinning-area.tsx
|
|
5
|
+
const SidebarPinningArea = () => {
|
|
6
|
+
const { pinnedNodePath, togglePin, activeNodeId, onActiveNodeChange } = useSidebar();
|
|
7
|
+
return /* @__PURE__ */ jsx("div", {
|
|
8
|
+
className: "flex flex-col gap-1 border-b border-gray-300 bg-gray-100 px-2 pt-2 pb-0.5 dark:border-slate-800 dark:bg-slate-700",
|
|
9
|
+
children: pinnedNodePath.map((node, index) => /* @__PURE__ */ jsx(SidebarItem, {
|
|
10
|
+
node: {
|
|
11
|
+
...node,
|
|
12
|
+
depth: 0,
|
|
13
|
+
isExpanded: false
|
|
14
|
+
},
|
|
15
|
+
togglePin,
|
|
16
|
+
searchTerm: "",
|
|
17
|
+
searchResults: [],
|
|
18
|
+
activeSearchIndex: 0,
|
|
19
|
+
allowPinning: true,
|
|
20
|
+
pinnedMode: true,
|
|
21
|
+
isPinned: index === pinnedNodePath.length - 1,
|
|
22
|
+
isActive: activeNodeId === node.id,
|
|
23
|
+
onChange: onActiveNodeChange
|
|
24
|
+
}, node.id))
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { SidebarPinningArea };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=sidebar-pinning-area.js.map
|
|
@@ -0,0 +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-gray-300 bg-gray-100 px-2 pt-2 pb-0.5 dark:border-slate-800 dark:bg-slate-700\">\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"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { NodeStatus } from "../../types.js";
|
|
2
|
+
import { filterStatuses, getMaxDepth, getNodePath, getOpenLevels, isOpenLevel, nodesSearch, sortNodes } from "../../utils.js";
|
|
3
|
+
import { SidebarActionType, initialSidebarState, sidebarReducer } from "./sidebar-reducer.js";
|
|
4
|
+
import { createContext, createRef, useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState } from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
//#region src/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-provider.tsx
|
|
7
|
+
const SidebarContext = /* @__PURE__ */ createContext({
|
|
8
|
+
nodes: [],
|
|
9
|
+
flattenedNodes: [],
|
|
10
|
+
expandedNodes: /* @__PURE__ */ new Set(),
|
|
11
|
+
pinnedNodePath: [],
|
|
12
|
+
maxDepth: 4,
|
|
13
|
+
searchTerm: "",
|
|
14
|
+
searchResults: [],
|
|
15
|
+
isSearching: false,
|
|
16
|
+
activeSearchIndex: 0,
|
|
17
|
+
activeNodeId: void 0,
|
|
18
|
+
isStatusFilterEnabled: false,
|
|
19
|
+
nodeSortType: void 0,
|
|
20
|
+
nodeSortOrder: "asc",
|
|
21
|
+
virtualListRef: /* @__PURE__ */ createRef(),
|
|
22
|
+
toggleNode: () => void 0,
|
|
23
|
+
openNode: () => void 0,
|
|
24
|
+
closeNode: () => void 0,
|
|
25
|
+
togglePin: () => void 0,
|
|
26
|
+
openLevel: () => void 0,
|
|
27
|
+
changeSearchTerm: () => void 0,
|
|
28
|
+
nextSearchResult: () => void 0,
|
|
29
|
+
previousSearchResult: () => void 0,
|
|
30
|
+
setNodes: () => void 0,
|
|
31
|
+
syncActiveNodeId: () => void 0,
|
|
32
|
+
onActiveNodeChange: () => void 0,
|
|
33
|
+
setActiveNodeChangeCallback: () => void 0,
|
|
34
|
+
toggleStatusFilter: () => void 0
|
|
35
|
+
});
|
|
36
|
+
const SidebarProvider = ({ children, nodes: initialNodes }) => {
|
|
37
|
+
const [_state, dispatch] = useReducer(sidebarReducer, {
|
|
38
|
+
...initialSidebarState,
|
|
39
|
+
nodes: initialNodes || []
|
|
40
|
+
});
|
|
41
|
+
const stateRef = useRef(_state);
|
|
42
|
+
const flattenedNodesRef = useRef([]);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
stateRef.current = _state;
|
|
45
|
+
}, [_state]);
|
|
46
|
+
const virtualListRef = useRef(null);
|
|
47
|
+
const [onActiveNodeChange, setOnActiveNodeChange] = useState(() => () => void 0);
|
|
48
|
+
const currentRoots = useMemo(() => {
|
|
49
|
+
let roots = _state.nodes;
|
|
50
|
+
if (_state.pinnedNodePath.length > 0) roots = _state.pinnedNodePath[_state.pinnedNodePath.length - 1].children ?? [];
|
|
51
|
+
if (_state.isStatusFilterEnabled) roots = filterStatuses(roots, [
|
|
52
|
+
NodeStatus.CREATED,
|
|
53
|
+
NodeStatus.MODIFIED,
|
|
54
|
+
NodeStatus.REMOVED,
|
|
55
|
+
NodeStatus.MOVED,
|
|
56
|
+
NodeStatus.DUPLICATED
|
|
57
|
+
]);
|
|
58
|
+
if (_state.nodeSortType !== void 0) return sortNodes(roots, _state.nodeSortType, _state.nodeSortOrder);
|
|
59
|
+
return roots;
|
|
60
|
+
}, [
|
|
61
|
+
_state.nodes,
|
|
62
|
+
_state.pinnedNodePath,
|
|
63
|
+
_state.isStatusFilterEnabled,
|
|
64
|
+
_state.nodeSortType,
|
|
65
|
+
_state.nodeSortOrder
|
|
66
|
+
]);
|
|
67
|
+
const flattenTree = useCallback((nodes) => {
|
|
68
|
+
const flattened = [];
|
|
69
|
+
const dfs = (node, depth) => {
|
|
70
|
+
const flatNode = {
|
|
71
|
+
...node,
|
|
72
|
+
depth,
|
|
73
|
+
isExpanded: _state.expandedNodes.has(node.id)
|
|
74
|
+
};
|
|
75
|
+
flattened.push(flatNode);
|
|
76
|
+
if (Array.isArray(node.children) && _state.expandedNodes.has(node.id)) for (const child of node.children) dfs(child, depth + 1);
|
|
77
|
+
};
|
|
78
|
+
for (const node of nodes) dfs(node, 0);
|
|
79
|
+
return flattened;
|
|
80
|
+
}, [_state.expandedNodes]);
|
|
81
|
+
const flattenedNodes = useMemo(() => {
|
|
82
|
+
return flattenTree(currentRoots);
|
|
83
|
+
}, [currentRoots, flattenTree]);
|
|
84
|
+
useEffect(() => {
|
|
85
|
+
flattenedNodesRef.current = flattenedNodes;
|
|
86
|
+
}, [flattenedNodes]);
|
|
87
|
+
const setActiveNodeChangeCallback = useCallback((callback) => {
|
|
88
|
+
setOnActiveNodeChange(() => callback);
|
|
89
|
+
}, []);
|
|
90
|
+
const syncActiveNodeId = useCallback((nodeId) => {
|
|
91
|
+
dispatch({
|
|
92
|
+
type: SidebarActionType.SYNC_ACTIVE_NODE_ID,
|
|
93
|
+
payload: nodeId
|
|
94
|
+
});
|
|
95
|
+
}, []);
|
|
96
|
+
const openPathToNode = useCallback((nodeId) => {
|
|
97
|
+
const nodePath = getNodePath(currentRoots, nodeId);
|
|
98
|
+
if (nodePath) for (const node of nodePath) dispatch({
|
|
99
|
+
type: SidebarActionType.OPEN_NODE,
|
|
100
|
+
payload: node.id
|
|
101
|
+
});
|
|
102
|
+
}, [currentRoots]);
|
|
103
|
+
const toggleNode = useCallback((nodeId) => {
|
|
104
|
+
dispatch({
|
|
105
|
+
type: SidebarActionType.TOGGLE_NODE,
|
|
106
|
+
payload: nodeId
|
|
107
|
+
});
|
|
108
|
+
}, []);
|
|
109
|
+
const openNode = useCallback((nodeId, openPath, scrollTo) => {
|
|
110
|
+
dispatch({
|
|
111
|
+
type: SidebarActionType.OPEN_NODE,
|
|
112
|
+
payload: nodeId
|
|
113
|
+
});
|
|
114
|
+
if (openPath) openPathToNode(nodeId);
|
|
115
|
+
if (scrollTo) {
|
|
116
|
+
const nodeIndex = flattenedNodesRef.current.findIndex((node) => node.id === nodeId);
|
|
117
|
+
setTimeout(() => {
|
|
118
|
+
virtualListRef.current?.scrollToRow(nodeIndex);
|
|
119
|
+
}, 100);
|
|
120
|
+
}
|
|
121
|
+
}, [openPathToNode]);
|
|
122
|
+
const closeNode = useCallback((nodeId) => {
|
|
123
|
+
dispatch({
|
|
124
|
+
type: SidebarActionType.CLOSE_NODE,
|
|
125
|
+
payload: nodeId
|
|
126
|
+
});
|
|
127
|
+
}, []);
|
|
128
|
+
const maxDepth = useMemo(() => {
|
|
129
|
+
if (_state.pinnedNodePath.length > 0) return getMaxDepth(_state.pinnedNodePath[_state.pinnedNodePath.length - 1].children ?? []);
|
|
130
|
+
return getMaxDepth(_state.nodes);
|
|
131
|
+
}, [_state.nodes, _state.pinnedNodePath]);
|
|
132
|
+
const togglePin = useCallback((nodeId) => {
|
|
133
|
+
const nodePath = stateRef.current.pinnedNodePath.length > 0 && stateRef.current.pinnedNodePath[stateRef.current.pinnedNodePath.length - 1].id === nodeId ? [] : getNodePath(stateRef.current.nodes, nodeId) ?? [];
|
|
134
|
+
dispatch({
|
|
135
|
+
type: SidebarActionType.SET_PINNED_NODE_PATH,
|
|
136
|
+
payload: nodePath
|
|
137
|
+
});
|
|
138
|
+
}, []);
|
|
139
|
+
const openLevel = useCallback((targetLevel) => {
|
|
140
|
+
if (isOpenLevel(currentRoots, stateRef.current.expandedNodes, targetLevel - 1)) dispatch({
|
|
141
|
+
type: SidebarActionType.SET_EXPANDED_NODES,
|
|
142
|
+
payload: /* @__PURE__ */ new Set()
|
|
143
|
+
});
|
|
144
|
+
else dispatch({
|
|
145
|
+
type: SidebarActionType.SET_EXPANDED_NODES,
|
|
146
|
+
payload: getOpenLevels(currentRoots, targetLevel)
|
|
147
|
+
});
|
|
148
|
+
}, [currentRoots]);
|
|
149
|
+
const toggleStatusFilter = useCallback(() => {
|
|
150
|
+
dispatch({ type: SidebarActionType.TOGGLE_STATUS_FILTER });
|
|
151
|
+
}, []);
|
|
152
|
+
const [activeSearchIndex, setActiveSearchIndex] = useState(0);
|
|
153
|
+
useEffect(() => {
|
|
154
|
+
const DEBOUNCE_MS = 300;
|
|
155
|
+
let timeoutId;
|
|
156
|
+
if (_state.searchTerm) {
|
|
157
|
+
dispatch({
|
|
158
|
+
type: SidebarActionType.SET_IS_SEARCHING,
|
|
159
|
+
payload: true
|
|
160
|
+
});
|
|
161
|
+
timeoutId = setTimeout(() => {
|
|
162
|
+
const results = nodesSearch(currentRoots, _state.searchTerm, "dfs");
|
|
163
|
+
dispatch({
|
|
164
|
+
type: SidebarActionType.SET_SEARCH_RESULTS,
|
|
165
|
+
payload: results
|
|
166
|
+
});
|
|
167
|
+
setActiveSearchIndex(0);
|
|
168
|
+
if (results.length > 0) openPathToNode(results[0].id);
|
|
169
|
+
dispatch({
|
|
170
|
+
type: SidebarActionType.SET_IS_SEARCHING,
|
|
171
|
+
payload: false
|
|
172
|
+
});
|
|
173
|
+
}, DEBOUNCE_MS);
|
|
174
|
+
} else {
|
|
175
|
+
dispatch({
|
|
176
|
+
type: SidebarActionType.SET_SEARCH_RESULTS,
|
|
177
|
+
payload: []
|
|
178
|
+
});
|
|
179
|
+
dispatch({
|
|
180
|
+
type: SidebarActionType.SET_IS_SEARCHING,
|
|
181
|
+
payload: false
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
return () => {
|
|
185
|
+
clearTimeout(timeoutId);
|
|
186
|
+
};
|
|
187
|
+
}, [
|
|
188
|
+
currentRoots,
|
|
189
|
+
_state.searchTerm,
|
|
190
|
+
openPathToNode
|
|
191
|
+
]);
|
|
192
|
+
useEffect(() => {
|
|
193
|
+
if (stateRef.current.searchResults.length > 0 && activeSearchIndex >= 0 && activeSearchIndex < stateRef.current.searchResults.length) {
|
|
194
|
+
const { id } = stateRef.current.searchResults[activeSearchIndex];
|
|
195
|
+
for (let i = 0; i < flattenedNodesRef.current.length; i++) if (flattenedNodesRef.current[i].id === id) {
|
|
196
|
+
virtualListRef.current?.scrollToRow(i);
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}, [activeSearchIndex]);
|
|
201
|
+
const nextSearchResult = useCallback(() => {
|
|
202
|
+
const nextIndex = Math.min(stateRef.current.searchResults.length - 1, activeSearchIndex + 1);
|
|
203
|
+
if (nextIndex !== activeSearchIndex) {
|
|
204
|
+
openPathToNode(stateRef.current.searchResults[nextIndex].id);
|
|
205
|
+
setActiveSearchIndex(nextIndex);
|
|
206
|
+
}
|
|
207
|
+
}, [activeSearchIndex, openPathToNode]);
|
|
208
|
+
const previousSearchResult = useCallback(() => {
|
|
209
|
+
const previousIndex = Math.max(0, activeSearchIndex - 1);
|
|
210
|
+
if (previousIndex !== activeSearchIndex) {
|
|
211
|
+
openPathToNode(stateRef.current.searchResults[previousIndex].id);
|
|
212
|
+
setActiveSearchIndex(previousIndex);
|
|
213
|
+
}
|
|
214
|
+
}, [activeSearchIndex, openPathToNode]);
|
|
215
|
+
const setNodes = useCallback((newNodes, sortType, sortOrder) => {
|
|
216
|
+
dispatch({
|
|
217
|
+
type: SidebarActionType.SET_NODES,
|
|
218
|
+
payload: {
|
|
219
|
+
nodes: newNodes,
|
|
220
|
+
sortType,
|
|
221
|
+
sortOrder
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}, [dispatch]);
|
|
225
|
+
const changeSearchTerm = useCallback((newTerm) => {
|
|
226
|
+
dispatch({
|
|
227
|
+
type: SidebarActionType.CHANGE_SEARCH_TERM,
|
|
228
|
+
payload: newTerm
|
|
229
|
+
});
|
|
230
|
+
}, [dispatch]);
|
|
231
|
+
return /* @__PURE__ */ jsx(SidebarContext.Provider, {
|
|
232
|
+
value: {
|
|
233
|
+
nodes: _state.nodes,
|
|
234
|
+
flattenedNodes,
|
|
235
|
+
expandedNodes: _state.expandedNodes,
|
|
236
|
+
pinnedNodePath: _state.pinnedNodePath,
|
|
237
|
+
maxDepth,
|
|
238
|
+
searchTerm: _state.searchTerm,
|
|
239
|
+
searchResults: _state.searchResults,
|
|
240
|
+
isSearching: _state.isSearching,
|
|
241
|
+
activeSearchIndex,
|
|
242
|
+
isStatusFilterEnabled: _state.isStatusFilterEnabled,
|
|
243
|
+
nodeSortType: _state.nodeSortType,
|
|
244
|
+
nodeSortOrder: _state.nodeSortOrder,
|
|
245
|
+
virtualListRef,
|
|
246
|
+
toggleNode,
|
|
247
|
+
openNode,
|
|
248
|
+
closeNode,
|
|
249
|
+
togglePin,
|
|
250
|
+
openLevel,
|
|
251
|
+
changeSearchTerm,
|
|
252
|
+
nextSearchResult,
|
|
253
|
+
previousSearchResult,
|
|
254
|
+
setNodes,
|
|
255
|
+
activeNodeId: _state.activeNodeId,
|
|
256
|
+
syncActiveNodeId,
|
|
257
|
+
onActiveNodeChange,
|
|
258
|
+
setActiveNodeChangeCallback,
|
|
259
|
+
toggleStatusFilter
|
|
260
|
+
},
|
|
261
|
+
children
|
|
262
|
+
});
|
|
263
|
+
};
|
|
264
|
+
const useSidebar = () => useContext(SidebarContext);
|
|
265
|
+
//#endregion
|
|
266
|
+
export { SidebarProvider, useSidebar };
|
|
267
|
+
|
|
268
|
+
//# sourceMappingURL=sidebar-provider.js.map
|
|
@@ -0,0 +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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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { i as NodeSortType, r as NodeSortOrder, s as SidebarNode } from "../../../../../types-CNbvfWjh.js";
|
|
2
|
+
|
|
3
|
+
//#region src/ui/components/sidebar/subcomponents/sidebar-provider/sidebar-reducer.d.ts
|
|
4
|
+
interface SidebarState {
|
|
5
|
+
nodes: SidebarNode[];
|
|
6
|
+
expandedNodes: Set<string>;
|
|
7
|
+
pinnedNodePath: SidebarNode[];
|
|
8
|
+
searchTerm: string;
|
|
9
|
+
searchResults: SidebarNode[];
|
|
10
|
+
isSearching: boolean;
|
|
11
|
+
activeSearchIndex: number;
|
|
12
|
+
activeNodeId?: string;
|
|
13
|
+
isStatusFilterEnabled: boolean;
|
|
14
|
+
nodeSortType?: NodeSortType;
|
|
15
|
+
nodeSortOrder: NodeSortOrder;
|
|
16
|
+
}
|
|
17
|
+
declare const initialSidebarState: SidebarState;
|
|
18
|
+
declare enum SidebarActionType {
|
|
19
|
+
SET_NODES = "SET_NODES",
|
|
20
|
+
TOGGLE_NODE = "TOGGLE_NODE",
|
|
21
|
+
OPEN_NODE = "OPEN_NODE",
|
|
22
|
+
CLOSE_NODE = "CLOSE_NODE",
|
|
23
|
+
CHANGE_SEARCH_TERM = "CHANGE_SEARCH_TERM",
|
|
24
|
+
SET_SEARCH_RESULTS = "SET_SEARCH_RESULTS",
|
|
25
|
+
SET_IS_SEARCHING = "SET_IS_SEARCHING",
|
|
26
|
+
SYNC_ACTIVE_NODE_ID = "SYNC_ACTIVE_NODE_ID",
|
|
27
|
+
TOGGLE_STATUS_FILTER = "TOGGLE_STATUS_FILTER",
|
|
28
|
+
SET_PINNED_NODE_PATH = "SET_PINNED_NODE_PATH",
|
|
29
|
+
SET_EXPANDED_NODES = "SET_EXPANDED_NODES",
|
|
30
|
+
SET_NODES_SORT_TYPE = "SET_NODES_SORT_TYPE",
|
|
31
|
+
SET_NODES_SORT_ORDER = "SET_NODES_SORT_ORDER"
|
|
32
|
+
}
|
|
33
|
+
interface SetNodesAction {
|
|
34
|
+
type: SidebarActionType.SET_NODES;
|
|
35
|
+
payload: {
|
|
36
|
+
nodes: SidebarNode[];
|
|
37
|
+
sortType?: NodeSortType;
|
|
38
|
+
sortOrder?: NodeSortOrder;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
interface ToggleNodeAction {
|
|
42
|
+
type: SidebarActionType.TOGGLE_NODE;
|
|
43
|
+
payload: string;
|
|
44
|
+
}
|
|
45
|
+
interface OpenNodeAction {
|
|
46
|
+
type: SidebarActionType.OPEN_NODE;
|
|
47
|
+
payload: string;
|
|
48
|
+
}
|
|
49
|
+
interface CloseNodeAction {
|
|
50
|
+
type: SidebarActionType.CLOSE_NODE;
|
|
51
|
+
payload: string;
|
|
52
|
+
}
|
|
53
|
+
interface ChangeSearchTermAction {
|
|
54
|
+
type: SidebarActionType.CHANGE_SEARCH_TERM;
|
|
55
|
+
payload: string;
|
|
56
|
+
}
|
|
57
|
+
interface SetSearchResultsAction {
|
|
58
|
+
type: SidebarActionType.SET_SEARCH_RESULTS;
|
|
59
|
+
payload: SidebarNode[];
|
|
60
|
+
}
|
|
61
|
+
interface SetIsSearchingAction {
|
|
62
|
+
type: SidebarActionType.SET_IS_SEARCHING;
|
|
63
|
+
payload: boolean;
|
|
64
|
+
}
|
|
65
|
+
interface SyncActiveNodeIdAction {
|
|
66
|
+
type: SidebarActionType.SYNC_ACTIVE_NODE_ID;
|
|
67
|
+
payload: string | undefined;
|
|
68
|
+
}
|
|
69
|
+
interface ToggleStatusFilterAction {
|
|
70
|
+
type: SidebarActionType.TOGGLE_STATUS_FILTER;
|
|
71
|
+
}
|
|
72
|
+
interface SetPinnedNodePathAction {
|
|
73
|
+
type: SidebarActionType.SET_PINNED_NODE_PATH;
|
|
74
|
+
payload: SidebarNode[];
|
|
75
|
+
}
|
|
76
|
+
interface SetExpandedNodesAction {
|
|
77
|
+
type: SidebarActionType.SET_EXPANDED_NODES;
|
|
78
|
+
payload: Set<string>;
|
|
79
|
+
}
|
|
80
|
+
interface SetNodeSortTypeAction {
|
|
81
|
+
type: SidebarActionType.SET_NODES_SORT_TYPE;
|
|
82
|
+
payload: NodeSortType | undefined;
|
|
83
|
+
}
|
|
84
|
+
interface SetNodeSortOrderAction {
|
|
85
|
+
type: SidebarActionType.SET_NODES_SORT_ORDER;
|
|
86
|
+
payload: NodeSortOrder;
|
|
87
|
+
}
|
|
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;
|
|
90
|
+
//#endregion
|
|
91
|
+
export { SidebarAction, SidebarActionType, SidebarState, initialSidebarState, sidebarReducer };
|
|
92
|
+
//# sourceMappingURL=sidebar-reducer.d.ts.map
|