@ynput/ayon-frontend-shared 0.3.37 → 0.3.39
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/DetailsPanel.cjs.js +1 -1
- package/dist/DetailsPanel.es.js +25 -24
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.es6.js +2 -2
- package/dist/_virtual/index.es8.js +2 -2
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +12 -11
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/utils.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/utils.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/utils.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/utils.es.js +1 -1
- package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
- package/dist/shared/node_modules/react-is/index.es.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +3 -2
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +5 -4
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +5 -4
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +5 -4
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +5 -4
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +5 -4
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +5 -4
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +5 -4
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.es.js +5 -4
- package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +5 -4
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +6 -5
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +5 -4
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js +5 -4
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +254 -240
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +7 -6
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +5 -4
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +5 -4
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +9 -8
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +5 -4
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +5 -4
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +5 -4
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +5 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +5 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +5 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +5 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +5 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +17 -16
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +5 -4
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +5 -4
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +5 -4
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +5 -4
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +5 -4
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +5 -4
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +5 -4
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +5 -4
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +5 -4
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +7 -6
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +5 -4
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +9 -8
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +5 -4
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.es.js +5 -4
- package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js +3 -2
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +5 -4
- package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +171 -168
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +87 -85
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +63 -58
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +8 -7
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +248 -207
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +16 -15
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js +66 -55
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +47 -45
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +11 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +76 -51
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +5 -4
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +5 -4
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +5 -4
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +5 -4
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +5 -4
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.es.js +7 -6
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/widgets/LinksWidget.d.ts +1 -0
- package/package.json +2 -2
package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnSettingsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\nimport { SummaryCalc, SummaryFormat, RowScope } from '../types/summaryTypes'\nimport { isEqual } from 'lodash'\nimport { checkColumnVisibility } from '../utils'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n defaultColumnVisibility?: VisibilityState\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n defaultColumnVisibility,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const columnOrderTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const prevRowHeightRef = React.useRef<number | undefined>(undefined)\n const lockedAspectRatioRef = React.useRef<number | null>(null)\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState | null>(null)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => {\n const allKnownIds = allColumnsRef.current\n // Expand sparse columnVisibility to explicit values for all known columns so that\n // \"undefined\" is never ambiguous when columns are saved and reloaded.\n // Special columns (drag-handle, row-selection) are always injected by the provider,\n // so they must never be persisted — strip them from visibility and order entirely.\n const specialIds = new Set([DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n if (allKnownIds.length > 0) {\n const resolvedVisibility = { ...next.columnVisibility }\n allKnownIds.forEach((id) => {\n if (!specialIds.has(id) && resolvedVisibility[id] === undefined) {\n resolvedVisibility[id] = checkColumnVisibility({}, id, defaultColumnVisibility)\n }\n })\n // Remove special columns from visibility and order before persisting\n specialIds.forEach((id) => delete resolvedVisibility[id])\n const resolvedOrder = (next.columnOrder ?? []).filter((id) => !specialIds.has(id))\n onChange(\n { ...next, columnVisibility: resolvedVisibility, columnOrder: resolvedOrder },\n allKnownIds,\n )\n } else {\n onChange(next, allKnownIds)\n }\n }\n const columnsConfig = config as ColumnsConfig\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight = 34,\n columnSummaries: columnSummariesInit = {},\n columnSummaryScopes: columnSummaryScopesInit = {},\n columnSummaryFormats: columnSummaryFormatsInit = {},\n } = columnsConfig || {}\n\n // Clear internal row height when config changes (e.g., when switching views)\n // This happens during render, before the component uses the value\n if (prevRowHeightRef.current !== configRowHeight && prevRowHeightRef.current !== undefined) {\n // Config changed, clear internal state\n if (internalRowHeight !== null) {\n setInternalRowHeight(null)\n }\n // Clear any pending timeout\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n rowHeightTimeoutRef.current = null\n }\n }\n prevRowHeightRef.current = configRowHeight\n\n // Use internal row height during adjustments, otherwise use config value\n const rowHeight = internalRowHeight ?? configRowHeight\n\n const sorting = [...sortingInit]\n // Use internal column order for immediate UI updates, otherwise use config value\n const columnOrderBase = internalColumnOrder ?? [...columnOrderInit]\n const columnOrder = [...columnOrderBase]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode (except folder grouping), always pin the name column\n // and ensure it is first in column order\n if (groupBy && groupBy.id !== 'folder') {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n\n const newPinnedColumns = pinnedColumns.filter((col) =>\n checkColumnVisibility(visibility, col, defaultColumnVisibility),\n )\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n // Filter out special columns that are added dynamically\n const filteredOrder = order.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n\n const newPinning = updatePinningOrderOnOrderChange(filteredOrder)\n\n // Update UI immediately (optimistic)\n setInternalColumnOrder(filteredOrder)\n\n // Clear any existing timeout to debounce API calls\n if (columnOrderTimeoutRef.current) {\n clearTimeout(columnOrderTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n columnOrderTimeoutRef.current = setTimeout(() => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: filteredOrder,\n columnPinning: newPinning,\n })\n // Clear internal state after persistence\n setInternalColumnOrder(null)\n }, 300)\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateColumnSummary = (columnId: string, calc: SummaryCalc) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaries: { ...columnSummariesInit, [columnId]: calc },\n })\n }\n\n const updateColumnSummaryScope = (columnId: string, scope: RowScope) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryScopes: { ...columnSummaryScopesInit, [columnId]: scope },\n })\n }\n\n const updateColumnSummaryFormat = (columnId: string, format: SummaryFormat) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryFormats: { ...columnSummaryFormatsInit, [columnId]: format },\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeight = React.useCallback(\n (newRowHeight: number) => {\n // Lock the aspect ratio on first call if not already locked\n if (lockedAspectRatioRef.current === null) {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n lockedAspectRatioRef.current = currentThumbnailWidth / currentRowHeight\n }\n const newThumbnailWidth = lockedAspectRatioRef.current * newRowHeight\n\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n },\n [columnsSizingExternal, configRowHeight],\n )\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = React.useCallback(\n (newRowHeight: number) => {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n const currentRatio = currentThumbnailWidth / currentRowHeight\n\n const newThumbnailWidth = currentRatio * newRowHeight\n\n // Update UI immediately\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n columnSizing: {\n ...columnsSizingExternal,\n thumbnail: newThumbnailWidth,\n },\n })\n\n // Clean up internal state after API call completes\n setInternalRowHeight(null)\n setInternalColumnSizing(null)\n lockedAspectRatioRef.current = null\n }, 300)\n },\n [\n columnsConfig,\n onChangeWithColumns,\n columnsSizingExternal,\n configRowHeight,\n internalColumnSizing,\n ],\n )\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const nextFull = typeof updater === 'function' ? updater(columnVisibility) : updater\n\n // Calculate sparse version: only keys that are different from defaults\n const sparseNext: VisibilityState = {}\n Object.keys(nextFull).forEach((key) => {\n const defaultValue = checkColumnVisibility({}, key, defaultColumnVisibility)\n if (nextFull[key] !== defaultValue) {\n sparseNext[key] = nextFull[key]\n }\n })\n\n if (isEqual(sparseNext, columnVisibility)) return\n setColumnVisibility(sparseNext)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n if (isEqual(newPinning, columnPinning)) return\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n if (isEqual(newOrder, columnOrder)) return\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n if (isEqual(newSizing, columnSizing)) return\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n if (isEqual(newSorting, sorting)) return\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n defaultColumnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // column summary calc\n columnSummaries: columnSummariesInit,\n updateColumnSummary,\n // column summary row scope\n columnSummaryScopes: columnSummaryScopesInit,\n updateColumnSummaryScope,\n // column summary display format\n columnSummaryFormats: columnSummaryFormatsInit,\n updateColumnSummaryFormat,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","defaultColumnVisibility","allColumnsRef","React","resizingTimeoutRef","rowHeightTimeoutRef","columnOrderTimeoutRef","prevRowHeightRef","lockedAspectRatioRef","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","internalColumnOrder","setInternalColumnOrder","setAllColumns","allColumnIds","onChangeWithColumns","next","allKnownIds","specialIds","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","resolvedVisibility","id","checkColumnVisibility","resolvedOrder","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","columnSummariesInit","columnSummaryScopesInit","columnSummaryFormatsInit","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","filteredPinned","nameIndex","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumns","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","updateColumnVisibility","updateColumnOrder","filteredOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateColumnSummary","columnId","calc","updateColumnSummaryScope","scope","updateColumnSummaryFormat","format","updateGroupBy","updateGroupByConfig","updateRowHeight","newRowHeight","currentThumbnailWidth","currentRowHeight","newThumbnailWidth","updateRowHeightWithPersistence","columnVisibilityOnChange","updater","nextFull","sparseNext","key","defaultValue","isEqual","columnPinningOnChange","functionalUpdate","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ColumnSettingsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\nimport { SummaryCalc, SummaryFormat, RowScope } from '../types/summaryTypes'\nimport { isEqual } from 'lodash'\nimport { checkColumnVisibility } from '../utils'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n defaultColumnVisibility?: VisibilityState\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n defaultColumnVisibility,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const columnOrderTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const prevRowHeightRef = React.useRef<number | undefined>(undefined)\n const lockedAspectRatioRef = React.useRef<number | null>(null)\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState | null>(null)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => {\n const allKnownIds = allColumnsRef.current\n // Expand sparse columnVisibility to explicit values for all known columns so that\n // \"undefined\" is never ambiguous when columns are saved and reloaded.\n // Special columns (drag-handle, row-selection) are always injected by the provider,\n // so they must never be persisted — strip them from visibility and order entirely.\n const specialIds = new Set([DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n if (allKnownIds.length > 0) {\n const resolvedVisibility = { ...next.columnVisibility }\n allKnownIds.forEach((id) => {\n if (!specialIds.has(id) && resolvedVisibility[id] === undefined) {\n resolvedVisibility[id] = checkColumnVisibility({}, id, defaultColumnVisibility)\n }\n })\n // Remove special columns from visibility and order before persisting\n specialIds.forEach((id) => delete resolvedVisibility[id])\n const resolvedOrder = (next.columnOrder ?? []).filter((id) => !specialIds.has(id))\n onChange(\n { ...next, columnVisibility: resolvedVisibility, columnOrder: resolvedOrder },\n allKnownIds,\n )\n } else {\n onChange(next, allKnownIds)\n }\n }\n const columnsConfig = config as ColumnsConfig\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight = 34,\n columnSummaries: columnSummariesInit = {},\n columnSummaryScopes: columnSummaryScopesInit = {},\n columnSummaryFormats: columnSummaryFormatsInit = {},\n } = columnsConfig || {}\n\n // Clear internal row height when config changes (e.g., when switching views)\n // This happens during render, before the component uses the value\n if (prevRowHeightRef.current !== configRowHeight && prevRowHeightRef.current !== undefined) {\n // Config changed, clear internal state\n if (internalRowHeight !== null) {\n setInternalRowHeight(null)\n }\n // Clear any pending timeout\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n rowHeightTimeoutRef.current = null\n }\n }\n prevRowHeightRef.current = configRowHeight\n\n // Use internal row height during adjustments, otherwise use config value\n const rowHeight = internalRowHeight ?? configRowHeight\n\n const sorting = [...sortingInit]\n // Use internal column order for immediate UI updates, otherwise use config value\n const columnOrderBase = internalColumnOrder ?? [...columnOrderInit]\n const columnOrder = [...columnOrderBase]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode (except folder grouping), always pin the name column\n // and ensure it is first in column order\n if (groupBy && groupBy.id !== 'folder') {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n\n const newPinnedColumns = pinnedColumns.filter((col) =>\n checkColumnVisibility(visibility, col, defaultColumnVisibility),\n )\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n // Filter out special columns that are added dynamically\n const filteredOrder = order.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n\n const newPinning = updatePinningOrderOnOrderChange(filteredOrder)\n\n // Update UI immediately (optimistic)\n setInternalColumnOrder(filteredOrder)\n\n // Clear any existing timeout to debounce API calls\n if (columnOrderTimeoutRef.current) {\n clearTimeout(columnOrderTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n columnOrderTimeoutRef.current = setTimeout(() => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: filteredOrder,\n columnPinning: newPinning,\n })\n // Clear internal state after persistence\n setInternalColumnOrder(null)\n }, 300)\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateColumnSummary = (columnId: string, calc: SummaryCalc) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaries: { ...columnSummariesInit, [columnId]: calc },\n })\n }\n\n const updateColumnSummaryScope = (columnId: string, scope: RowScope) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryScopes: { ...columnSummaryScopesInit, [columnId]: scope },\n })\n }\n\n const updateColumnSummaryFormat = (columnId: string, format: SummaryFormat) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryFormats: { ...columnSummaryFormatsInit, [columnId]: format },\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeight = React.useCallback(\n (newRowHeight: number) => {\n // Lock the aspect ratio on first call if not already locked\n if (lockedAspectRatioRef.current === null) {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n lockedAspectRatioRef.current = currentThumbnailWidth / currentRowHeight\n }\n const newThumbnailWidth = lockedAspectRatioRef.current * newRowHeight\n\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n },\n [columnsSizingExternal, configRowHeight],\n )\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = React.useCallback(\n (newRowHeight: number) => {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n const currentRatio = currentThumbnailWidth / currentRowHeight\n\n const newThumbnailWidth = currentRatio * newRowHeight\n\n // Update UI immediately\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n columnSizing: {\n ...columnsSizingExternal,\n thumbnail: newThumbnailWidth,\n },\n })\n\n // Clean up internal state after API call completes\n setInternalRowHeight(null)\n setInternalColumnSizing(null)\n lockedAspectRatioRef.current = null\n }, 300)\n },\n [\n columnsConfig,\n onChangeWithColumns,\n columnsSizingExternal,\n configRowHeight,\n internalColumnSizing,\n ],\n )\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const nextFull = typeof updater === 'function' ? updater(columnVisibility) : updater\n\n // Calculate sparse version: only keys that are different from defaults\n const sparseNext: VisibilityState = {}\n Object.keys(nextFull).forEach((key) => {\n const defaultValue = checkColumnVisibility({}, key, defaultColumnVisibility)\n if (nextFull[key] !== defaultValue) {\n sparseNext[key] = nextFull[key]\n }\n })\n\n if (isEqual(sparseNext, columnVisibility)) return\n setColumnVisibility(sparseNext)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n if (isEqual(newPinning, columnPinning)) return\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n if (isEqual(newOrder, columnOrder)) return\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n if (isEqual(newSizing, columnSizing)) return\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n if (isEqual(newSorting, sorting)) return\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n defaultColumnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // column summary calc\n columnSummaries: columnSummariesInit,\n updateColumnSummary,\n // column summary row scope\n columnSummaryScopes: columnSummaryScopesInit,\n updateColumnSummaryScope,\n // column summary display format\n columnSummaryFormats: columnSummaryFormatsInit,\n updateColumnSummaryFormat,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","defaultColumnVisibility","allColumnsRef","React","resizingTimeoutRef","rowHeightTimeoutRef","columnOrderTimeoutRef","prevRowHeightRef","lockedAspectRatioRef","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","internalColumnOrder","setInternalColumnOrder","setAllColumns","allColumnIds","onChangeWithColumns","next","allKnownIds","specialIds","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","resolvedVisibility","id","checkColumnVisibility","resolvedOrder","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","columnSummariesInit","columnSummaryScopesInit","columnSummaryFormatsInit","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","filteredPinned","nameIndex","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumns","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","updateColumnVisibility","updateColumnOrder","filteredOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateColumnSummary","columnId","calc","updateColumnSummaryScope","scope","updateColumnSummaryFormat","format","updateGroupBy","updateGroupByConfig","updateRowHeight","newRowHeight","currentThumbnailWidth","currentRowHeight","newThumbnailWidth","updateRowHeightWithPersistence","columnVisibilityOnChange","updater","nextFull","sparseNext","key","defaultValue","isEqual","columnPinningOnChange","functionalUpdate","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
|
|
@@ -209,8 +209,7 @@ import "../widgets/CellWidget.es.js";
|
|
|
209
209
|
import "../widgets/EntityNameWidget.es.js";
|
|
210
210
|
import "../widgets/GroupHeaderWidget.es.js";
|
|
211
211
|
import "../widgets/ThumbnailWidget.es.js";
|
|
212
|
-
import "
|
|
213
|
-
import "./SelectedRowsContext.es.js";
|
|
212
|
+
import "../widgets/LinksWidget.es.js";
|
|
214
213
|
import "../../../components/LinksManager/LinksManager.styled.es.js";
|
|
215
214
|
import "./ProjectTableContext.es.js";
|
|
216
215
|
import "../widgets/EmptyWidget.es.js";
|
|
@@ -227,6 +226,8 @@ import "./SelectionCellsContext.es.js";
|
|
|
227
226
|
import "./ProjectDataContext.es.js";
|
|
228
227
|
import "./CellEditingContext.es.js";
|
|
229
228
|
import "../components/TableFooterRow.es.js";
|
|
229
|
+
import "./SelectedRowsContext.es.js";
|
|
230
|
+
import "./DetailsPanelEntityContext.es.js";
|
|
230
231
|
import "../../EntityPickerDialog/EntityPickerDialog.es.js";
|
|
231
232
|
import "../../Slicer/components/Slicer.es.js";
|
|
232
233
|
import "../../Slicer/context/SlicerContext.es.js";
|
|
@@ -289,7 +290,7 @@ import "../../../components/Menu/MenuItem.es.js";
|
|
|
289
290
|
import "../../../components/ReviewablesSelector/ReviewablesSelector.es.js";
|
|
290
291
|
import "../../../components/ColumnHeaderMenuUI.es.js";
|
|
291
292
|
import { checkColumnVisibility as B } from "../utils/checkColumnVisibility.es.js";
|
|
292
|
-
const
|
|
293
|
+
const qn = ({
|
|
293
294
|
children: q,
|
|
294
295
|
config: K,
|
|
295
296
|
onChange: v,
|
|
@@ -562,6 +563,6 @@ const Mn = ({
|
|
|
562
563
|
);
|
|
563
564
|
};
|
|
564
565
|
export {
|
|
565
|
-
|
|
566
|
+
qn as ColumnSettingsProvider
|
|
566
567
|
};
|
|
567
568
|
//# sourceMappingURL=ColumnSettingsProvider.es.js.map
|
package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnSettingsProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\nimport { SummaryCalc, SummaryFormat, RowScope } from '../types/summaryTypes'\nimport { isEqual } from 'lodash'\nimport { checkColumnVisibility } from '../utils'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n defaultColumnVisibility?: VisibilityState\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n defaultColumnVisibility,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const columnOrderTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const prevRowHeightRef = React.useRef<number | undefined>(undefined)\n const lockedAspectRatioRef = React.useRef<number | null>(null)\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState | null>(null)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => {\n const allKnownIds = allColumnsRef.current\n // Expand sparse columnVisibility to explicit values for all known columns so that\n // \"undefined\" is never ambiguous when columns are saved and reloaded.\n // Special columns (drag-handle, row-selection) are always injected by the provider,\n // so they must never be persisted — strip them from visibility and order entirely.\n const specialIds = new Set([DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n if (allKnownIds.length > 0) {\n const resolvedVisibility = { ...next.columnVisibility }\n allKnownIds.forEach((id) => {\n if (!specialIds.has(id) && resolvedVisibility[id] === undefined) {\n resolvedVisibility[id] = checkColumnVisibility({}, id, defaultColumnVisibility)\n }\n })\n // Remove special columns from visibility and order before persisting\n specialIds.forEach((id) => delete resolvedVisibility[id])\n const resolvedOrder = (next.columnOrder ?? []).filter((id) => !specialIds.has(id))\n onChange(\n { ...next, columnVisibility: resolvedVisibility, columnOrder: resolvedOrder },\n allKnownIds,\n )\n } else {\n onChange(next, allKnownIds)\n }\n }\n const columnsConfig = config as ColumnsConfig\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight = 34,\n columnSummaries: columnSummariesInit = {},\n columnSummaryScopes: columnSummaryScopesInit = {},\n columnSummaryFormats: columnSummaryFormatsInit = {},\n } = columnsConfig || {}\n\n // Clear internal row height when config changes (e.g., when switching views)\n // This happens during render, before the component uses the value\n if (prevRowHeightRef.current !== configRowHeight && prevRowHeightRef.current !== undefined) {\n // Config changed, clear internal state\n if (internalRowHeight !== null) {\n setInternalRowHeight(null)\n }\n // Clear any pending timeout\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n rowHeightTimeoutRef.current = null\n }\n }\n prevRowHeightRef.current = configRowHeight\n\n // Use internal row height during adjustments, otherwise use config value\n const rowHeight = internalRowHeight ?? configRowHeight\n\n const sorting = [...sortingInit]\n // Use internal column order for immediate UI updates, otherwise use config value\n const columnOrderBase = internalColumnOrder ?? [...columnOrderInit]\n const columnOrder = [...columnOrderBase]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode (except folder grouping), always pin the name column\n // and ensure it is first in column order\n if (groupBy && groupBy.id !== 'folder') {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n\n const newPinnedColumns = pinnedColumns.filter((col) =>\n checkColumnVisibility(visibility, col, defaultColumnVisibility),\n )\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n // Filter out special columns that are added dynamically\n const filteredOrder = order.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n\n const newPinning = updatePinningOrderOnOrderChange(filteredOrder)\n\n // Update UI immediately (optimistic)\n setInternalColumnOrder(filteredOrder)\n\n // Clear any existing timeout to debounce API calls\n if (columnOrderTimeoutRef.current) {\n clearTimeout(columnOrderTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n columnOrderTimeoutRef.current = setTimeout(() => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: filteredOrder,\n columnPinning: newPinning,\n })\n // Clear internal state after persistence\n setInternalColumnOrder(null)\n }, 300)\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateColumnSummary = (columnId: string, calc: SummaryCalc) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaries: { ...columnSummariesInit, [columnId]: calc },\n })\n }\n\n const updateColumnSummaryScope = (columnId: string, scope: RowScope) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryScopes: { ...columnSummaryScopesInit, [columnId]: scope },\n })\n }\n\n const updateColumnSummaryFormat = (columnId: string, format: SummaryFormat) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryFormats: { ...columnSummaryFormatsInit, [columnId]: format },\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeight = React.useCallback(\n (newRowHeight: number) => {\n // Lock the aspect ratio on first call if not already locked\n if (lockedAspectRatioRef.current === null) {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n lockedAspectRatioRef.current = currentThumbnailWidth / currentRowHeight\n }\n const newThumbnailWidth = lockedAspectRatioRef.current * newRowHeight\n\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n },\n [columnsSizingExternal, configRowHeight],\n )\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = React.useCallback(\n (newRowHeight: number) => {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n const currentRatio = currentThumbnailWidth / currentRowHeight\n\n const newThumbnailWidth = currentRatio * newRowHeight\n\n // Update UI immediately\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n columnSizing: {\n ...columnsSizingExternal,\n thumbnail: newThumbnailWidth,\n },\n })\n\n // Clean up internal state after API call completes\n setInternalRowHeight(null)\n setInternalColumnSizing(null)\n lockedAspectRatioRef.current = null\n }, 300)\n },\n [\n columnsConfig,\n onChangeWithColumns,\n columnsSizingExternal,\n configRowHeight,\n internalColumnSizing,\n ],\n )\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const nextFull = typeof updater === 'function' ? updater(columnVisibility) : updater\n\n // Calculate sparse version: only keys that are different from defaults\n const sparseNext: VisibilityState = {}\n Object.keys(nextFull).forEach((key) => {\n const defaultValue = checkColumnVisibility({}, key, defaultColumnVisibility)\n if (nextFull[key] !== defaultValue) {\n sparseNext[key] = nextFull[key]\n }\n })\n\n if (isEqual(sparseNext, columnVisibility)) return\n setColumnVisibility(sparseNext)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n if (isEqual(newPinning, columnPinning)) return\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n if (isEqual(newOrder, columnOrder)) return\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n if (isEqual(newSizing, columnSizing)) return\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n if (isEqual(newSorting, sorting)) return\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n defaultColumnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // column summary calc\n columnSummaries: columnSummariesInit,\n updateColumnSummary,\n // column summary row scope\n columnSummaryScopes: columnSummaryScopesInit,\n updateColumnSummaryScope,\n // column summary display format\n columnSummaryFormats: columnSummaryFormatsInit,\n updateColumnSummaryFormat,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","defaultColumnVisibility","allColumnsRef","React","resizingTimeoutRef","rowHeightTimeoutRef","columnOrderTimeoutRef","prevRowHeightRef","lockedAspectRatioRef","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","internalColumnOrder","setInternalColumnOrder","setAllColumns","allColumnIds","onChangeWithColumns","next","allKnownIds","specialIds","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","resolvedVisibility","id","checkColumnVisibility","resolvedOrder","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","columnSummariesInit","columnSummaryScopesInit","columnSummaryFormatsInit","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","filteredPinned","nameIndex","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumns","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","updateColumnVisibility","updateColumnOrder","filteredOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateColumnSummary","columnId","calc","updateColumnSummaryScope","scope","updateColumnSummaryFormat","format","updateGroupBy","updateGroupByConfig","updateRowHeight","newRowHeight","currentThumbnailWidth","currentRowHeight","newThumbnailWidth","updateRowHeightWithPersistence","columnVisibilityOnChange","updater","nextFull","sparseNext","key","defaultValue","isEqual","columnPinningOnChange","functionalUpdate","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ColumnSettingsProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\nimport { SummaryCalc, SummaryFormat, RowScope } from '../types/summaryTypes'\nimport { isEqual } from 'lodash'\nimport { checkColumnVisibility } from '../utils'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n defaultColumnVisibility?: VisibilityState\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n defaultColumnVisibility,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const columnOrderTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const prevRowHeightRef = React.useRef<number | undefined>(undefined)\n const lockedAspectRatioRef = React.useRef<number | null>(null)\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState | null>(null)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => {\n const allKnownIds = allColumnsRef.current\n // Expand sparse columnVisibility to explicit values for all known columns so that\n // \"undefined\" is never ambiguous when columns are saved and reloaded.\n // Special columns (drag-handle, row-selection) are always injected by the provider,\n // so they must never be persisted — strip them from visibility and order entirely.\n const specialIds = new Set([DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n if (allKnownIds.length > 0) {\n const resolvedVisibility = { ...next.columnVisibility }\n allKnownIds.forEach((id) => {\n if (!specialIds.has(id) && resolvedVisibility[id] === undefined) {\n resolvedVisibility[id] = checkColumnVisibility({}, id, defaultColumnVisibility)\n }\n })\n // Remove special columns from visibility and order before persisting\n specialIds.forEach((id) => delete resolvedVisibility[id])\n const resolvedOrder = (next.columnOrder ?? []).filter((id) => !specialIds.has(id))\n onChange(\n { ...next, columnVisibility: resolvedVisibility, columnOrder: resolvedOrder },\n allKnownIds,\n )\n } else {\n onChange(next, allKnownIds)\n }\n }\n const columnsConfig = config as ColumnsConfig\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight = 34,\n columnSummaries: columnSummariesInit = {},\n columnSummaryScopes: columnSummaryScopesInit = {},\n columnSummaryFormats: columnSummaryFormatsInit = {},\n } = columnsConfig || {}\n\n // Clear internal row height when config changes (e.g., when switching views)\n // This happens during render, before the component uses the value\n if (prevRowHeightRef.current !== configRowHeight && prevRowHeightRef.current !== undefined) {\n // Config changed, clear internal state\n if (internalRowHeight !== null) {\n setInternalRowHeight(null)\n }\n // Clear any pending timeout\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n rowHeightTimeoutRef.current = null\n }\n }\n prevRowHeightRef.current = configRowHeight\n\n // Use internal row height during adjustments, otherwise use config value\n const rowHeight = internalRowHeight ?? configRowHeight\n\n const sorting = [...sortingInit]\n // Use internal column order for immediate UI updates, otherwise use config value\n const columnOrderBase = internalColumnOrder ?? [...columnOrderInit]\n const columnOrder = [...columnOrderBase]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode (except folder grouping), always pin the name column\n // and ensure it is first in column order\n if (groupBy && groupBy.id !== 'folder') {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n\n const newPinnedColumns = pinnedColumns.filter((col) =>\n checkColumnVisibility(visibility, col, defaultColumnVisibility),\n )\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n // Filter out special columns that are added dynamically\n const filteredOrder = order.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n\n const newPinning = updatePinningOrderOnOrderChange(filteredOrder)\n\n // Update UI immediately (optimistic)\n setInternalColumnOrder(filteredOrder)\n\n // Clear any existing timeout to debounce API calls\n if (columnOrderTimeoutRef.current) {\n clearTimeout(columnOrderTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n columnOrderTimeoutRef.current = setTimeout(() => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: filteredOrder,\n columnPinning: newPinning,\n })\n // Clear internal state after persistence\n setInternalColumnOrder(null)\n }, 300)\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateColumnSummary = (columnId: string, calc: SummaryCalc) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaries: { ...columnSummariesInit, [columnId]: calc },\n })\n }\n\n const updateColumnSummaryScope = (columnId: string, scope: RowScope) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryScopes: { ...columnSummaryScopesInit, [columnId]: scope },\n })\n }\n\n const updateColumnSummaryFormat = (columnId: string, format: SummaryFormat) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryFormats: { ...columnSummaryFormatsInit, [columnId]: format },\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeight = React.useCallback(\n (newRowHeight: number) => {\n // Lock the aspect ratio on first call if not already locked\n if (lockedAspectRatioRef.current === null) {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n lockedAspectRatioRef.current = currentThumbnailWidth / currentRowHeight\n }\n const newThumbnailWidth = lockedAspectRatioRef.current * newRowHeight\n\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n },\n [columnsSizingExternal, configRowHeight],\n )\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = React.useCallback(\n (newRowHeight: number) => {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n const currentRatio = currentThumbnailWidth / currentRowHeight\n\n const newThumbnailWidth = currentRatio * newRowHeight\n\n // Update UI immediately\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n columnSizing: {\n ...columnsSizingExternal,\n thumbnail: newThumbnailWidth,\n },\n })\n\n // Clean up internal state after API call completes\n setInternalRowHeight(null)\n setInternalColumnSizing(null)\n lockedAspectRatioRef.current = null\n }, 300)\n },\n [\n columnsConfig,\n onChangeWithColumns,\n columnsSizingExternal,\n configRowHeight,\n internalColumnSizing,\n ],\n )\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const nextFull = typeof updater === 'function' ? updater(columnVisibility) : updater\n\n // Calculate sparse version: only keys that are different from defaults\n const sparseNext: VisibilityState = {}\n Object.keys(nextFull).forEach((key) => {\n const defaultValue = checkColumnVisibility({}, key, defaultColumnVisibility)\n if (nextFull[key] !== defaultValue) {\n sparseNext[key] = nextFull[key]\n }\n })\n\n if (isEqual(sparseNext, columnVisibility)) return\n setColumnVisibility(sparseNext)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n if (isEqual(newPinning, columnPinning)) return\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n if (isEqual(newOrder, columnOrder)) return\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n if (isEqual(newSizing, columnSizing)) return\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n if (isEqual(newSorting, sorting)) return\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n defaultColumnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // column summary calc\n columnSummaries: columnSummariesInit,\n updateColumnSummary,\n // column summary row scope\n columnSummaryScopes: columnSummaryScopesInit,\n updateColumnSummaryScope,\n // column summary display format\n columnSummaryFormats: columnSummaryFormatsInit,\n updateColumnSummaryFormat,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","defaultColumnVisibility","allColumnsRef","React","resizingTimeoutRef","rowHeightTimeoutRef","columnOrderTimeoutRef","prevRowHeightRef","lockedAspectRatioRef","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","internalColumnOrder","setInternalColumnOrder","setAllColumns","allColumnIds","onChangeWithColumns","next","allKnownIds","specialIds","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","resolvedVisibility","id","checkColumnVisibility","resolvedOrder","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","columnSummariesInit","columnSummaryScopesInit","columnSummaryFormatsInit","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","filteredPinned","nameIndex","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumns","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","updateColumnVisibility","updateColumnOrder","filteredOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateColumnSummary","columnId","calc","updateColumnSummaryScope","scope","updateColumnSummaryFormat","format","updateGroupBy","updateGroupByConfig","updateRowHeight","newRowHeight","currentThumbnailWidth","currentRowHeight","newThumbnailWidth","updateRowHeightWithPersistence","columnVisibilityOnChange","updater","nextFull","sparseNext","key","defaultValue","isEqual","columnPinningOnChange","functionalUpdate","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectTableContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ProjectTableContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { EntityMap, TableRow } from '../types/table'\nimport {\n FindInheritedValueFromAncestors,\n GetAncestorsOf,\n GetInheritedDependents,\n FindNonInheritedValues,\n} from '../hooks/useFolderRelationships'\nimport { RowId } from '../utils/cellUtils'\n\nimport { ProjectTableProviderProps } from './ProjectTableProvider'\nimport type { SubtasksManagerProps } from '@shared/components'\n\nexport type ToggleExpandAll = (rowIds: RowId[], expand?: boolean) => void\nexport type ToggleExpands = (rowIds: RowId[], expand?: boolean) => void\n\nexport interface ProjectTableContextType {\n isInitialized: ProjectTableProviderProps['isInitialized']\n isLoading: ProjectTableProviderProps['isLoading']\n users: ProjectTableProviderProps['users']\n // Attributes\n attribFields: ProjectTableProviderProps['attribFields']\n attribFieldsScoped: ProjectTableProviderProps['attribFields']\n error?: string\n scopes: ProjectTableProviderProps['scopes']\n\n // Data\n tableData: TableRow[]\n tasksMap: ProjectTableProviderProps['tasksMap']\n foldersMap: ProjectTableProviderProps['foldersMap']\n entitiesMap: ProjectTableProviderProps['entitiesMap']\n fetchNextPage: ProjectTableProviderProps['fetchNextPage']\n reloadTableData: ProjectTableProviderProps['reloadTableData']\n getEntityById: (id: string, field?: string) => EntityMap | undefined // if the entity is not found, we explicity search for the field\n\n // grouping\n groups: ProjectTableProviderProps['groups']\n overrideGroupBy?: ProjectTableProviderProps['overrideGroupBy']\n\n // Filters\n queryFilters: ProjectTableProviderProps['queryFilters']\n\n // Hierarchy\n showHierarchy: ProjectTableProviderProps['showHierarchy']\n updateShowHierarchy: ProjectTableProviderProps['updateShowHierarchy']\n hierarchyOptions?: ProjectTableProviderProps['hierarchyOptions']\n hierarchyActive?: ProjectTableProviderProps['hierarchyActive']\n\n // Flat folder view\n isFlatFolderView?: boolean\n\n // Expanded state\n expanded: ProjectTableProviderProps['expanded']\n setExpanded: ProjectTableProviderProps['setExpanded']\n toggleExpanded: ProjectTableProviderProps['toggleExpanded']\n updateExpanded: ProjectTableProviderProps['updateExpanded']\n toggleExpandAll: ToggleExpandAll\n toggleExpands: ToggleExpands // expand/collapse multiple rows at once\n\n // Folder Relationships\n getInheritedDependents: GetInheritedDependents\n findInheritedValueFromAncestors: FindInheritedValueFromAncestors\n findNonInheritedValues: FindNonInheritedValues\n getAncestorsOf: GetAncestorsOf\n\n // Context menu\n contextMenuItems: ProjectTableProviderProps['contextMenuItems']\n\n // Powerpack context\n powerpack?: ProjectTableProviderProps['powerpack']\n\n // remote modules\n modules: ProjectTableProviderProps['modules']\n\n // SubtasksManager\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n\n // player\n playerOpen?: ProjectTableProviderProps['playerOpen']\n onOpenPlayer?: ProjectTableProviderProps['onOpenPlayer']\n\n // Views\n onResetView?: () => void\n\n // router hooks\n useParams?: typeof useParams\n useNavigate?: typeof useNavigate\n useLocation?: typeof useLocation\n useSearchParams?: typeof useSearchParams\n}\n\nexport const ProjectTableContext = createContext<ProjectTableContextType | undefined>(undefined)\n\nexport const useProjectTableContext = () => {\n const context = useContext(ProjectTableContext)\n if (!context) {\n throw new Error('useProjectTableContext must be used within a ProjectTableProvider')\n }\n return context\n}\n"],"names":["ProjectTableContext","createContext","useProjectTableContext","context","useContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectTableContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ProjectTableContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { EntityMap, TableRow } from '../types/table'\nimport {\n FindInheritedValueFromAncestors,\n GetAncestorsOf,\n GetInheritedDependents,\n FindNonInheritedValues,\n} from '../hooks/useFolderRelationships'\nimport { RowId } from '../utils/cellUtils'\n\nimport { ProjectTableProviderProps } from './ProjectTableProvider'\nimport type { SubtasksManagerProps } from '@shared/components'\n\nexport type ToggleExpandAll = (rowIds: RowId[], expand?: boolean) => void\nexport type ToggleExpands = (rowIds: RowId[], expand?: boolean) => void\n\nexport interface ProjectTableContextType {\n isInitialized: ProjectTableProviderProps['isInitialized']\n isLoading: ProjectTableProviderProps['isLoading']\n users: ProjectTableProviderProps['users']\n // Attributes\n attribFields: ProjectTableProviderProps['attribFields']\n attribFieldsScoped: ProjectTableProviderProps['attribFields']\n error?: string\n scopes: ProjectTableProviderProps['scopes']\n\n // Data\n tableData: TableRow[]\n tasksMap: ProjectTableProviderProps['tasksMap']\n foldersMap: ProjectTableProviderProps['foldersMap']\n entitiesMap: ProjectTableProviderProps['entitiesMap']\n fetchNextPage: ProjectTableProviderProps['fetchNextPage']\n reloadTableData: ProjectTableProviderProps['reloadTableData']\n getEntityById: (id: string, field?: string) => EntityMap | undefined // if the entity is not found, we explicity search for the field\n loadingLinksEntityIds?: Set<string>\n\n // grouping\n groups: ProjectTableProviderProps['groups']\n overrideGroupBy?: ProjectTableProviderProps['overrideGroupBy']\n\n // Filters\n queryFilters: ProjectTableProviderProps['queryFilters']\n\n // Hierarchy\n showHierarchy: ProjectTableProviderProps['showHierarchy']\n updateShowHierarchy: ProjectTableProviderProps['updateShowHierarchy']\n hierarchyOptions?: ProjectTableProviderProps['hierarchyOptions']\n hierarchyActive?: ProjectTableProviderProps['hierarchyActive']\n\n // Flat folder view\n isFlatFolderView?: boolean\n\n // Expanded state\n expanded: ProjectTableProviderProps['expanded']\n setExpanded: ProjectTableProviderProps['setExpanded']\n toggleExpanded: ProjectTableProviderProps['toggleExpanded']\n updateExpanded: ProjectTableProviderProps['updateExpanded']\n toggleExpandAll: ToggleExpandAll\n toggleExpands: ToggleExpands // expand/collapse multiple rows at once\n\n // Folder Relationships\n getInheritedDependents: GetInheritedDependents\n findInheritedValueFromAncestors: FindInheritedValueFromAncestors\n findNonInheritedValues: FindNonInheritedValues\n getAncestorsOf: GetAncestorsOf\n\n // Context menu\n contextMenuItems: ProjectTableProviderProps['contextMenuItems']\n\n // Powerpack context\n powerpack?: ProjectTableProviderProps['powerpack']\n\n // remote modules\n modules: ProjectTableProviderProps['modules']\n\n // SubtasksManager\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n\n // player\n playerOpen?: ProjectTableProviderProps['playerOpen']\n onOpenPlayer?: ProjectTableProviderProps['onOpenPlayer']\n\n // Views\n onResetView?: () => void\n\n // router hooks\n useParams?: typeof useParams\n useNavigate?: typeof useNavigate\n useLocation?: typeof useLocation\n useSearchParams?: typeof useSearchParams\n}\n\nexport const ProjectTableContext = createContext<ProjectTableContextType | undefined>(undefined)\n\nexport const useProjectTableContext = () => {\n const context = useContext(ProjectTableContext)\n if (!context) {\n throw new Error('useProjectTableContext must be used within a ProjectTableProvider')\n }\n return context\n}\n"],"names":["ProjectTableContext","createContext","useProjectTableContext","context","useContext"],"mappings":"yGA6FaA,EAAsBC,EAAAA,cAAmD,MAAS,EAElFC,EAAyB,IAAM,CAC1C,MAAMC,EAAUC,EAAAA,WAAWJ,CAAmB,EAC9C,GAAI,CAACG,EACH,MAAM,IAAI,MAAM,mEAAmE,EAErF,OAAOA,CACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectTableContext.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ProjectTableContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { EntityMap, TableRow } from '../types/table'\nimport {\n FindInheritedValueFromAncestors,\n GetAncestorsOf,\n GetInheritedDependents,\n FindNonInheritedValues,\n} from '../hooks/useFolderRelationships'\nimport { RowId } from '../utils/cellUtils'\n\nimport { ProjectTableProviderProps } from './ProjectTableProvider'\nimport type { SubtasksManagerProps } from '@shared/components'\n\nexport type ToggleExpandAll = (rowIds: RowId[], expand?: boolean) => void\nexport type ToggleExpands = (rowIds: RowId[], expand?: boolean) => void\n\nexport interface ProjectTableContextType {\n isInitialized: ProjectTableProviderProps['isInitialized']\n isLoading: ProjectTableProviderProps['isLoading']\n users: ProjectTableProviderProps['users']\n // Attributes\n attribFields: ProjectTableProviderProps['attribFields']\n attribFieldsScoped: ProjectTableProviderProps['attribFields']\n error?: string\n scopes: ProjectTableProviderProps['scopes']\n\n // Data\n tableData: TableRow[]\n tasksMap: ProjectTableProviderProps['tasksMap']\n foldersMap: ProjectTableProviderProps['foldersMap']\n entitiesMap: ProjectTableProviderProps['entitiesMap']\n fetchNextPage: ProjectTableProviderProps['fetchNextPage']\n reloadTableData: ProjectTableProviderProps['reloadTableData']\n getEntityById: (id: string, field?: string) => EntityMap | undefined // if the entity is not found, we explicity search for the field\n\n // grouping\n groups: ProjectTableProviderProps['groups']\n overrideGroupBy?: ProjectTableProviderProps['overrideGroupBy']\n\n // Filters\n queryFilters: ProjectTableProviderProps['queryFilters']\n\n // Hierarchy\n showHierarchy: ProjectTableProviderProps['showHierarchy']\n updateShowHierarchy: ProjectTableProviderProps['updateShowHierarchy']\n hierarchyOptions?: ProjectTableProviderProps['hierarchyOptions']\n hierarchyActive?: ProjectTableProviderProps['hierarchyActive']\n\n // Flat folder view\n isFlatFolderView?: boolean\n\n // Expanded state\n expanded: ProjectTableProviderProps['expanded']\n setExpanded: ProjectTableProviderProps['setExpanded']\n toggleExpanded: ProjectTableProviderProps['toggleExpanded']\n updateExpanded: ProjectTableProviderProps['updateExpanded']\n toggleExpandAll: ToggleExpandAll\n toggleExpands: ToggleExpands // expand/collapse multiple rows at once\n\n // Folder Relationships\n getInheritedDependents: GetInheritedDependents\n findInheritedValueFromAncestors: FindInheritedValueFromAncestors\n findNonInheritedValues: FindNonInheritedValues\n getAncestorsOf: GetAncestorsOf\n\n // Context menu\n contextMenuItems: ProjectTableProviderProps['contextMenuItems']\n\n // Powerpack context\n powerpack?: ProjectTableProviderProps['powerpack']\n\n // remote modules\n modules: ProjectTableProviderProps['modules']\n\n // SubtasksManager\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n\n // player\n playerOpen?: ProjectTableProviderProps['playerOpen']\n onOpenPlayer?: ProjectTableProviderProps['onOpenPlayer']\n\n // Views\n onResetView?: () => void\n\n // router hooks\n useParams?: typeof useParams\n useNavigate?: typeof useNavigate\n useLocation?: typeof useLocation\n useSearchParams?: typeof useSearchParams\n}\n\nexport const ProjectTableContext = createContext<ProjectTableContextType | undefined>(undefined)\n\nexport const useProjectTableContext = () => {\n const context = useContext(ProjectTableContext)\n if (!context) {\n throw new Error('useProjectTableContext must be used within a ProjectTableProvider')\n }\n return context\n}\n"],"names":["ProjectTableContext","createContext","useProjectTableContext","context","useContext"],"mappings":";
|
|
1
|
+
{"version":3,"file":"ProjectTableContext.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ProjectTableContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'\nimport { EntityMap, TableRow } from '../types/table'\nimport {\n FindInheritedValueFromAncestors,\n GetAncestorsOf,\n GetInheritedDependents,\n FindNonInheritedValues,\n} from '../hooks/useFolderRelationships'\nimport { RowId } from '../utils/cellUtils'\n\nimport { ProjectTableProviderProps } from './ProjectTableProvider'\nimport type { SubtasksManagerProps } from '@shared/components'\n\nexport type ToggleExpandAll = (rowIds: RowId[], expand?: boolean) => void\nexport type ToggleExpands = (rowIds: RowId[], expand?: boolean) => void\n\nexport interface ProjectTableContextType {\n isInitialized: ProjectTableProviderProps['isInitialized']\n isLoading: ProjectTableProviderProps['isLoading']\n users: ProjectTableProviderProps['users']\n // Attributes\n attribFields: ProjectTableProviderProps['attribFields']\n attribFieldsScoped: ProjectTableProviderProps['attribFields']\n error?: string\n scopes: ProjectTableProviderProps['scopes']\n\n // Data\n tableData: TableRow[]\n tasksMap: ProjectTableProviderProps['tasksMap']\n foldersMap: ProjectTableProviderProps['foldersMap']\n entitiesMap: ProjectTableProviderProps['entitiesMap']\n fetchNextPage: ProjectTableProviderProps['fetchNextPage']\n reloadTableData: ProjectTableProviderProps['reloadTableData']\n getEntityById: (id: string, field?: string) => EntityMap | undefined // if the entity is not found, we explicity search for the field\n loadingLinksEntityIds?: Set<string>\n\n // grouping\n groups: ProjectTableProviderProps['groups']\n overrideGroupBy?: ProjectTableProviderProps['overrideGroupBy']\n\n // Filters\n queryFilters: ProjectTableProviderProps['queryFilters']\n\n // Hierarchy\n showHierarchy: ProjectTableProviderProps['showHierarchy']\n updateShowHierarchy: ProjectTableProviderProps['updateShowHierarchy']\n hierarchyOptions?: ProjectTableProviderProps['hierarchyOptions']\n hierarchyActive?: ProjectTableProviderProps['hierarchyActive']\n\n // Flat folder view\n isFlatFolderView?: boolean\n\n // Expanded state\n expanded: ProjectTableProviderProps['expanded']\n setExpanded: ProjectTableProviderProps['setExpanded']\n toggleExpanded: ProjectTableProviderProps['toggleExpanded']\n updateExpanded: ProjectTableProviderProps['updateExpanded']\n toggleExpandAll: ToggleExpandAll\n toggleExpands: ToggleExpands // expand/collapse multiple rows at once\n\n // Folder Relationships\n getInheritedDependents: GetInheritedDependents\n findInheritedValueFromAncestors: FindInheritedValueFromAncestors\n findNonInheritedValues: FindNonInheritedValues\n getAncestorsOf: GetAncestorsOf\n\n // Context menu\n contextMenuItems: ProjectTableProviderProps['contextMenuItems']\n\n // Powerpack context\n powerpack?: ProjectTableProviderProps['powerpack']\n\n // remote modules\n modules: ProjectTableProviderProps['modules']\n\n // SubtasksManager\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n\n // player\n playerOpen?: ProjectTableProviderProps['playerOpen']\n onOpenPlayer?: ProjectTableProviderProps['onOpenPlayer']\n\n // Views\n onResetView?: () => void\n\n // router hooks\n useParams?: typeof useParams\n useNavigate?: typeof useNavigate\n useLocation?: typeof useLocation\n useSearchParams?: typeof useSearchParams\n}\n\nexport const ProjectTableContext = createContext<ProjectTableContextType | undefined>(undefined)\n\nexport const useProjectTableContext = () => {\n const context = useContext(ProjectTableContext)\n if (!context) {\n throw new Error('useProjectTableContext must be used within a ProjectTableProvider')\n }\n return context\n}\n"],"names":["ProjectTableContext","createContext","useProjectTableContext","context","useContext"],"mappings":";AA6FO,MAAMA,IAAsBC,EAAmD,MAAS,GAElFC,IAAyB,MAAM;AAC1C,QAAMC,IAAUC,EAAWJ,CAAmB;AAC9C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,mEAAmE;AAErF,SAAOA;AACT;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const be=require("../../../../../_virtual/jsx-runtime.cjs.js"),f=require("react"),Pe=require("../hooks/useBuildProjectDataTable.cjs.js"),je=require("../hooks/useFolderRelationships.cjs.js"),B=require("../hooks/useBuildGroupByTableData.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("lodash");require("react-toastify");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("uuid");require("../../../util/pubsub.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");const Ee=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");const Ce=require("./ColumnSettingsContext.cjs.js"),Se=require("./ProjectTableContext.cjs.js"),D=g=>g?.split(B.ROW_ID_SEPARATOR)[0]||g,Te=({children:g,foldersMap:s,tableRows:d,tasksMap:n,entitiesMap:t,tasksByFolderMap:P,selectedFolders:A,expanded:o,showHierarchy:j,loadingTasks:I,isLoadingMore:x,isLoading:G,error:O,isInitialized:N,users:_,attribFields:c,scopes:h,groups:b,groupRowFunc:w,overrideGroupBy:E,queryFilters:L,updateShowHierarchy:p,toggleExpanded:W,updateExpanded:z,fetchNextPage:J,reloadTableData:K,setExpanded:a,contextMenuItems:Q,powerpack:U,modules:X,loadingLinksEntityIds:Y,groupByConfig:Z,hierarchyOptions:$,hierarchyActive:H,isFlatFolderView:y,SubtasksManager:V,playerOpen:k,onOpenPlayer:F,onResetView:M,useParams:ee,useNavigate:re,useLocation:ue,useSearchParams:ie})=>{const{attrib:qe}=Ee.useProjectContext(),{groupBy:te,groupByConfig:{showEmpty:C=!1}={}}=Ce.useColumnSettingsContext(),oe=Pe({foldersMap:s,tasksMap:n,rows:d,tasksByFolderMap:P,expanded:o,showHierarchy:j,isFlatFolderView:y,showEmptyFolders:C,loadingTasks:I,isLoadingMore:x,selectedFolders:A}),m=y?void 0:E||te,ne=B.default({entities:t,entityType:Z?.entityType||"unknown",groups:b,attribFields:c,showEmpty:C,groupRowFunc:w}),se=f.useMemo(()=>c.filter(i=>i.scope?.some(q=>h.includes(q))),[c,h]),S=f.useMemo(()=>!!m&&ne(m),[m,t,b]),ce=m&&!y&&S?S:oe,T=f.useCallback((i,q="entityId")=>{if(typeof i!="string"){console.warn("getEntityById called with non-string id:",i);return}const e=D(i);if(s.has(e))return s.get(e);if(n.has(e))return n.get(e);if(t.has(e))return t.get(e);for(const[u,r]of t)if(r[q]===e)return r},[s,n,t]),{getInheritedDependents:ae,getChildrenEntities:v,findInheritedValueFromAncestors:le,findNonInheritedValues:fe,getAncestorsOf:ge}=je({entitiesMap:t,tasksMap:n,tasksByFolderMap:P,getEntityById:T,projectAttrib:qe,attribFields:c}),ye=f.useCallback((i,q)=>{const e=typeof o=="object"?o:{},u={...e};i.forEach(r=>{const R=v(r).map(l=>l.id),he=e[r]||!1;(q!==void 0?!q:he)?(u[r]=!1,R.forEach(l=>{u[l]=!1})):(u[r]=!0,R.forEach(l=>{u[l]=!0}))}),a(u)},[o,v,a]),me=f.useCallback((i,q)=>{const e=typeof o=="object"?o:{},u={...e};i.forEach(r=>{q!==void 0?u[r]=q:u[r]=!e[r]}),a(u)},[o,a]);return be.jsxRuntimeExports.jsx(Se.ProjectTableContext.Provider,{value:{tableData:ce,isInitialized:N,isLoading:G,error:O,attribFields:c,attribFieldsScoped:se,scopes:h,users:_,tasksMap:n,foldersMap:s,entitiesMap:t,fetchNextPage:J,reloadTableData:K,groups:b,overrideGroupBy:E,queryFilters:L,loadingLinksEntityIds:Y,showHierarchy:j,updateShowHierarchy:p,hierarchyOptions:$,hierarchyActive:H,isFlatFolderView:y,expanded:o,setExpanded:a,toggleExpanded:W,updateExpanded:z,toggleExpandAll:ye,toggleExpands:me,getEntityById:T,getInheritedDependents:ae,findInheritedValueFromAncestors:le,findNonInheritedValues:fe,getAncestorsOf:ge,contextMenuItems:Q,powerpack:U,modules:X,SubtasksManager:V,playerOpen:k,onOpenPlayer:F,onResetView:M,useParams:ee,useNavigate:re,useLocation:ue,useSearchParams:ie},children:g})};exports.ProjectTableProvider=Te;exports.parseRowId=D;
|
|
2
2
|
//# sourceMappingURL=ProjectTableProvider.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectTableProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ProjectTableProvider.tsx"],"sourcesContent":["/**\n * Project Table Context\n *\n * This context serves as the central data management layer for the project table component.\n * It performs three main functions:\n *\n * 1. **Props Forwarding**: Acts as a bridge to forward essential props (project info, users,\n * attributes, filters, etc.) down to child components throughout the table hierarchy.\n *\n * 2. **Table Data Structure Building**: Transforms raw project data into structured table rows\n * that can be consumed by the table component. This includes processing folders, tasks,\n * and entities into a unified table format.\n *\n * 3. **Multi-Modal Data Presentation**: Supports three different data presentation modes:\n * - **Hierarchy Mode**: Builds nested folder/task relationships with expandable rows\n * - **Tasks List Mode**: Flattened view of tasks without hierarchical structure\n * - **Groups Mode**: Groups entities by specified criteria (entity type, custom groups)\n *\n * The context also provides utility functions for entity relationships, expansion state\n * management, filtering, and folder inheritance operations.\n */\nimport { ReactNode, useCallback, useMemo } from 'react'\nimport { useParams, useNavigate, useLocation, useSearchParams } from 'react-router-dom'\nimport { ExpandedState, OnChangeFn } from '@tanstack/react-table'\nimport useBuildProjectDataTable from '../hooks/useBuildProjectDataTable'\nimport {\n EntitiesMap,\n EntityMap,\n FolderNodeMap,\n TableRow,\n TaskNodeMap,\n TasksByFolderMap,\n} from '../types/table'\nimport useFolderRelationships from '../hooks/useFolderRelationships'\nimport { ProjectModel } from '../types/project'\nimport { ProjectTableAttribute, LoadingTasks } from '../types'\nimport { QueryFilter } from '../types/folders'\nimport { ContextMenuItemConstructors } from '../hooks/useCellContextMenu'\nimport { EntityGroup } from '@shared/api'\nimport useBuildGroupByTableData, {\n GroupByEntityType,\n ROW_ID_SEPARATOR,\n} from '../hooks/useBuildGroupByTableData'\nimport { PowerpackContextType, useProjectContext } from '@shared/context'\nimport { TableGroupBy, useColumnSettingsContext } from './ColumnSettingsContext'\nimport { ProjectTableModulesType } from '@shared/hooks'\nimport { ProjectTableContext, ProjectTableContextType } from './ProjectTableContext'\nimport type { SubtasksManagerProps } from '@shared/components'\n\nexport const parseRowId = (rowId: string) => rowId?.split(ROW_ID_SEPARATOR)[0] || rowId\n\nexport type TableUser = {\n name: string\n fullName?: string\n}\n\nexport interface ProjectTableProviderProps {\n children: ReactNode\n isInitialized: boolean\n\n // loading\n isLoading: boolean\n isLoadingMore: boolean\n loadingTasks?: LoadingTasks\n error?: string\n users: TableUser[]\n // Attributes\n attribFields: ProjectTableAttribute[]\n scopes: string[]\n\n // Flat folder view\n isFlatFolderView?: boolean\n\n // data\n tasksMap: TaskNodeMap\n foldersMap: FolderNodeMap\n entitiesMap: EntitiesMap\n tasksByFolderMap: TasksByFolderMap\n tableRows?: TableRow[] // any extra rows that we want to add to the table\n selectedFolders?: string[]\n\n // grouping\n groups: EntityGroup[]\n groupRowFunc?: (node: any) => TableRow\n overrideGroupBy?: TableGroupBy\n\n // data functions\n fetchNextPage: (value?: string) => void\n reloadTableData: () => void\n\n // Filters\n queryFilters: {\n filter: QueryFilter | undefined\n filterString?: string\n search: string | undefined\n }\n\n // Hierarchy\n showHierarchy: boolean\n updateShowHierarchy: (showHierarchy: boolean) => void\n\n // Expanded state\n expanded: ExpandedState\n toggleExpanded: (id: string) => void\n updateExpanded: OnChangeFn<ExpandedState>\n setExpanded: React.Dispatch<React.SetStateAction<ExpandedState>>\n\n // context menu\n contextMenuItems: ContextMenuItemConstructors\n\n // powerpack context\n powerpack?: PowerpackContextType\n\n // remote modules\n modules: ProjectTableModulesType\n\n groupByConfig?: {\n entityType?: GroupByEntityType\n }\n\n // Custom hierarchy-like options for the group-by settings panel\n // Overrides the default Hierarchy/Folder options when provided\n hierarchyOptions?: Array<{ value: string; label: string; icon: string }>\n\n // Whether hierarchy mode is active (for panel display only)\n // Used when showHierarchy must stay false for table internals (e.g. infinite scroll)\n // but the panel should still highlight the hierarchy option\n hierarchyActive?: boolean\n\n // SubtasksManager component\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n\n // player\n playerOpen?: boolean\n onOpenPlayer?: (\n targetIds: {\n taskId?: string\n folderId?: string\n productId?: string\n versionId?: string\n },\n config?: { quickView?: boolean },\n ) => void\n // views\n onResetView?: () => void\n // router hooks\n useParams?: typeof useParams\n useNavigate?: typeof useNavigate\n useLocation?: typeof useLocation\n useSearchParams?: typeof useSearchParams\n}\n\nexport const ProjectTableProvider = ({\n children,\n foldersMap,\n tableRows,\n tasksMap,\n entitiesMap,\n tasksByFolderMap,\n selectedFolders,\n expanded,\n showHierarchy,\n loadingTasks,\n isLoadingMore,\n isLoading,\n error,\n isInitialized,\n users,\n attribFields,\n scopes,\n groups,\n groupRowFunc,\n overrideGroupBy,\n queryFilters,\n updateShowHierarchy,\n toggleExpanded,\n updateExpanded,\n fetchNextPage,\n reloadTableData,\n setExpanded,\n contextMenuItems,\n powerpack,\n modules,\n groupByConfig,\n hierarchyOptions,\n hierarchyActive,\n isFlatFolderView,\n SubtasksManager,\n // player\n playerOpen,\n onOpenPlayer,\n // views\n onResetView,\n useParams,\n useNavigate,\n useLocation,\n useSearchParams,\n}: ProjectTableProviderProps) => {\n const { attrib: projectAttrib } = useProjectContext()\n const { groupBy: columnSettingsGroupBy, groupByConfig: { showEmpty: showEmptyGroups = false } = {} } =\n useColumnSettingsContext()\n\n // DATA TO TABLE\n const defaultTableData = useBuildProjectDataTable({\n foldersMap,\n tasksMap,\n rows: tableRows,\n tasksByFolderMap,\n expanded,\n showHierarchy,\n isFlatFolderView,\n showEmptyFolders: showEmptyGroups,\n loadingTasks,\n isLoadingMore,\n selectedFolders,\n })\n\n // overrideGroupBy (from view dropdown) takes priority over Customize panel's groupBy.\n // In flat folder view, ignore both — the 'folder' sentinel persisted on the server\n // must not leak into grouping logic (it's only used to distinguish the mode from 'none').\n const effectiveGroupBy = isFlatFolderView ? undefined : (overrideGroupBy || columnSettingsGroupBy)\n\n const buildGroupByTableData = useBuildGroupByTableData({\n entities: entitiesMap,\n entityType: groupByConfig?.entityType || 'unknown',\n groups: groups,\n attribFields,\n showEmpty: showEmptyGroups,\n groupRowFunc,\n })\n\n const attribFieldsScoped = useMemo(\n () => attribFields.filter((attrib) => attrib.scope?.some((scope) => scopes.includes(scope))),\n [attribFields, scopes],\n )\n\n // if we are grouping by something, we ignore current tableData and format the data based on the groupBy\n const groupedTableData = useMemo(\n () => !!effectiveGroupBy && buildGroupByTableData(effectiveGroupBy),\n [effectiveGroupBy, entitiesMap, groups],\n )\n\n const tableData = effectiveGroupBy && !isFlatFolderView && groupedTableData ? groupedTableData : defaultTableData\n\n const getEntityById = useCallback(\n (id: string, field: string = 'entityId'): EntityMap | undefined => {\n // defensive check to ensure id is a string\n if (typeof id !== 'string') {\n console.warn('getEntityById called with non-string id:', id)\n return undefined\n }\n // always parse the id to remove any suffixes\n // this can happen if the id is a group by id (we need to make the row id unique)\n const parsedId = parseRowId(id)\n if (foldersMap.has(parsedId)) {\n return foldersMap.get(parsedId)\n } else if (tasksMap.has(parsedId)) {\n return tasksMap.get(parsedId)\n } else if (entitiesMap.has(parsedId)) {\n return entitiesMap.get(parsedId)\n }\n\n // if we have not found the entity at all, double check through the maps using field (entityId)\n for (const [_, entity] of entitiesMap) {\n if (entity[field as keyof EntityMap] === parsedId) {\n return entity\n }\n }\n\n // Return undefined if not found\n return undefined\n },\n [foldersMap, tasksMap, entitiesMap],\n )\n\n // get folder relationship functions\n const {\n getInheritedDependents,\n getChildrenEntities,\n findInheritedValueFromAncestors,\n findNonInheritedValues,\n getAncestorsOf,\n } = useFolderRelationships({\n entitiesMap,\n tasksMap,\n tasksByFolderMap,\n getEntityById,\n projectAttrib,\n attribFields: attribFields,\n })\n\n const toggleExpandAll: ProjectTableContextType['toggleExpandAll'] = useCallback(\n (rowIds, expandAll) => {\n const expandedState = typeof expanded === 'object' ? expanded : {}\n\n const newExpandedState = { ...expandedState }\n\n rowIds.forEach((rowId) => {\n // get all children of the rowId using tableData\n const childIds = getChildrenEntities(rowId).map((child) => child.id)\n // check if the rowId is expanded\n const isExpanded = expandedState[rowId] || false\n\n if (expandAll !== undefined ? !expandAll : isExpanded) {\n // collapse all children\n newExpandedState[rowId] = false\n childIds.forEach((id) => {\n newExpandedState[id] = false\n })\n } else {\n // expand all children\n newExpandedState[rowId] = true\n childIds.forEach((id) => {\n newExpandedState[id] = true\n })\n }\n })\n\n setExpanded(newExpandedState)\n },\n [expanded, getChildrenEntities, setExpanded],\n )\n\n const toggleExpands: ProjectTableContextType['toggleExpands'] = useCallback(\n (rowIds, expand) => {\n const expandedState = typeof expanded === 'object' ? expanded : {}\n const newExpandedState = { ...expandedState }\n\n rowIds.forEach((rowId) => {\n if (expand !== undefined) {\n // Use the provided expand parameter\n newExpandedState[rowId] = expand\n } else {\n // Toggle based on current state\n newExpandedState[rowId] = !expandedState[rowId]\n }\n })\n\n setExpanded(newExpandedState)\n },\n [expanded, setExpanded],\n )\n\n return (\n <ProjectTableContext.Provider\n value={{\n // from this context\n tableData,\n // forwarded on\n isInitialized,\n isLoading,\n error,\n attribFields,\n attribFieldsScoped,\n scopes,\n users,\n tasksMap,\n foldersMap,\n entitiesMap,\n fetchNextPage,\n reloadTableData,\n groups,\n overrideGroupBy,\n queryFilters,\n // hierarchy\n showHierarchy,\n updateShowHierarchy,\n hierarchyOptions,\n hierarchyActive,\n // flat folder view\n isFlatFolderView,\n // expanded state\n expanded,\n setExpanded,\n toggleExpanded,\n updateExpanded,\n toggleExpandAll,\n toggleExpands,\n getEntityById,\n // folder relationships\n getInheritedDependents,\n findInheritedValueFromAncestors,\n findNonInheritedValues,\n getAncestorsOf,\n // context menu\n contextMenuItems,\n // powerpack context\n powerpack,\n modules,\n // SubtasksManager\n SubtasksManager,\n // player\n playerOpen,\n onOpenPlayer,\n // views\n onResetView,\n // router hooks\n useParams,\n useNavigate,\n useLocation,\n useSearchParams,\n }}\n >\n {children}\n </ProjectTableContext.Provider>\n )\n}\n"],"names":["parseRowId","rowId","ROW_ID_SEPARATOR","ProjectTableProvider","children","foldersMap","tableRows","tasksMap","entitiesMap","tasksByFolderMap","selectedFolders","expanded","showHierarchy","loadingTasks","isLoadingMore","isLoading","error","isInitialized","users","attribFields","scopes","groups","groupRowFunc","overrideGroupBy","queryFilters","updateShowHierarchy","toggleExpanded","updateExpanded","fetchNextPage","reloadTableData","setExpanded","contextMenuItems","powerpack","modules","groupByConfig","hierarchyOptions","hierarchyActive","isFlatFolderView","SubtasksManager","playerOpen","onOpenPlayer","onResetView","useParams","useNavigate","useLocation","useSearchParams","projectAttrib","useProjectContext","columnSettingsGroupBy","showEmptyGroups","useColumnSettingsContext","defaultTableData","useBuildProjectDataTable","effectiveGroupBy","buildGroupByTableData","useBuildGroupByTableData","attribFieldsScoped","useMemo","attrib","scope","groupedTableData","tableData","getEntityById","useCallback","id","field","parsedId","_","entity","getInheritedDependents","getChildrenEntities","findInheritedValueFromAncestors","findNonInheritedValues","getAncestorsOf","useFolderRelationships","toggleExpandAll","rowIds","expandAll","expandedState","newExpandedState","childIds","child","isExpanded","toggleExpands","expand","jsx","ProjectTableContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectTableProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ProjectTableProvider.tsx"],"sourcesContent":["/**\n * Project Table Context\n *\n * This context serves as the central data management layer for the project table component.\n * It performs three main functions:\n *\n * 1. **Props Forwarding**: Acts as a bridge to forward essential props (project info, users,\n * attributes, filters, etc.) down to child components throughout the table hierarchy.\n *\n * 2. **Table Data Structure Building**: Transforms raw project data into structured table rows\n * that can be consumed by the table component. This includes processing folders, tasks,\n * and entities into a unified table format.\n *\n * 3. **Multi-Modal Data Presentation**: Supports three different data presentation modes:\n * - **Hierarchy Mode**: Builds nested folder/task relationships with expandable rows\n * - **Tasks List Mode**: Flattened view of tasks without hierarchical structure\n * - **Groups Mode**: Groups entities by specified criteria (entity type, custom groups)\n *\n * The context also provides utility functions for entity relationships, expansion state\n * management, filtering, and folder inheritance operations.\n */\nimport { ReactNode, useCallback, useMemo } from 'react'\nimport { useParams, useNavigate, useLocation, useSearchParams } from 'react-router-dom'\nimport { ExpandedState, OnChangeFn } from '@tanstack/react-table'\nimport useBuildProjectDataTable from '../hooks/useBuildProjectDataTable'\nimport {\n EntitiesMap,\n EntityMap,\n FolderNodeMap,\n TableRow,\n TaskNodeMap,\n TasksByFolderMap,\n} from '../types/table'\nimport useFolderRelationships from '../hooks/useFolderRelationships'\nimport { ProjectModel } from '../types/project'\nimport { ProjectTableAttribute, LoadingTasks } from '../types'\nimport { QueryFilter } from '../types/folders'\nimport { ContextMenuItemConstructors } from '../hooks/useCellContextMenu'\nimport { EntityGroup } from '@shared/api'\nimport useBuildGroupByTableData, {\n GroupByEntityType,\n ROW_ID_SEPARATOR,\n} from '../hooks/useBuildGroupByTableData'\nimport { PowerpackContextType, useProjectContext } from '@shared/context'\nimport { TableGroupBy, useColumnSettingsContext } from './ColumnSettingsContext'\nimport { ProjectTableModulesType } from '@shared/hooks'\nimport { ProjectTableContext, ProjectTableContextType } from './ProjectTableContext'\nimport type { SubtasksManagerProps } from '@shared/components'\n\nexport const parseRowId = (rowId: string) => rowId?.split(ROW_ID_SEPARATOR)[0] || rowId\n\nexport type TableUser = {\n name: string\n fullName?: string\n}\n\nexport interface ProjectTableProviderProps {\n children: ReactNode\n isInitialized: boolean\n\n // loading\n isLoading: boolean\n isLoadingMore: boolean\n loadingTasks?: LoadingTasks\n error?: string\n users: TableUser[]\n // Attributes\n attribFields: ProjectTableAttribute[]\n scopes: string[]\n\n // Flat folder view\n isFlatFolderView?: boolean\n\n // data\n tasksMap: TaskNodeMap\n foldersMap: FolderNodeMap\n entitiesMap: EntitiesMap\n tasksByFolderMap: TasksByFolderMap\n tableRows?: TableRow[] // any extra rows that we want to add to the table\n selectedFolders?: string[]\n\n // grouping\n groups: EntityGroup[]\n groupRowFunc?: (node: any) => TableRow\n overrideGroupBy?: TableGroupBy\n\n // links loading\n loadingLinksEntityIds?: Set<string>\n\n // data functions\n fetchNextPage: (value?: string) => void\n reloadTableData: () => void\n\n // Filters\n queryFilters: {\n filter: QueryFilter | undefined\n filterString?: string\n search: string | undefined\n }\n\n // Hierarchy\n showHierarchy: boolean\n updateShowHierarchy: (showHierarchy: boolean) => void\n\n // Expanded state\n expanded: ExpandedState\n toggleExpanded: (id: string) => void\n updateExpanded: OnChangeFn<ExpandedState>\n setExpanded: React.Dispatch<React.SetStateAction<ExpandedState>>\n\n // context menu\n contextMenuItems: ContextMenuItemConstructors\n\n // powerpack context\n powerpack?: PowerpackContextType\n\n // remote modules\n modules: ProjectTableModulesType\n\n groupByConfig?: {\n entityType?: GroupByEntityType\n }\n\n // Custom hierarchy-like options for the group-by settings panel\n // Overrides the default Hierarchy/Folder options when provided\n hierarchyOptions?: Array<{ value: string; label: string; icon: string }>\n\n // Whether hierarchy mode is active (for panel display only)\n // Used when showHierarchy must stay false for table internals (e.g. infinite scroll)\n // but the panel should still highlight the hierarchy option\n hierarchyActive?: boolean\n\n // SubtasksManager component\n SubtasksManager?: React.ComponentType<SubtasksManagerProps>\n\n // player\n playerOpen?: boolean\n onOpenPlayer?: (\n targetIds: {\n taskId?: string\n folderId?: string\n productId?: string\n versionId?: string\n },\n config?: { quickView?: boolean },\n ) => void\n // views\n onResetView?: () => void\n // router hooks\n useParams?: typeof useParams\n useNavigate?: typeof useNavigate\n useLocation?: typeof useLocation\n useSearchParams?: typeof useSearchParams\n}\n\nexport const ProjectTableProvider = ({\n children,\n foldersMap,\n tableRows,\n tasksMap,\n entitiesMap,\n tasksByFolderMap,\n selectedFolders,\n expanded,\n showHierarchy,\n loadingTasks,\n isLoadingMore,\n isLoading,\n error,\n isInitialized,\n users,\n attribFields,\n scopes,\n groups,\n groupRowFunc,\n overrideGroupBy,\n queryFilters,\n updateShowHierarchy,\n toggleExpanded,\n updateExpanded,\n fetchNextPage,\n reloadTableData,\n setExpanded,\n contextMenuItems,\n powerpack,\n modules,\n loadingLinksEntityIds,\n groupByConfig,\n hierarchyOptions,\n hierarchyActive,\n isFlatFolderView,\n SubtasksManager,\n // player\n playerOpen,\n onOpenPlayer,\n // views\n onResetView,\n useParams,\n useNavigate,\n useLocation,\n useSearchParams,\n}: ProjectTableProviderProps) => {\n const { attrib: projectAttrib } = useProjectContext()\n const {\n groupBy: columnSettingsGroupBy,\n groupByConfig: { showEmpty: showEmptyGroups = false } = {},\n } = useColumnSettingsContext()\n\n // DATA TO TABLE\n const defaultTableData = useBuildProjectDataTable({\n foldersMap,\n tasksMap,\n rows: tableRows,\n tasksByFolderMap,\n expanded,\n showHierarchy,\n isFlatFolderView,\n showEmptyFolders: showEmptyGroups,\n loadingTasks,\n isLoadingMore,\n selectedFolders,\n })\n\n // overrideGroupBy (from view dropdown) takes priority over Customize panel's groupBy.\n // In flat folder view, ignore both — the 'folder' sentinel persisted on the server\n // must not leak into grouping logic (it's only used to distinguish the mode from 'none').\n const effectiveGroupBy = isFlatFolderView ? undefined : overrideGroupBy || columnSettingsGroupBy\n\n const buildGroupByTableData = useBuildGroupByTableData({\n entities: entitiesMap,\n entityType: groupByConfig?.entityType || 'unknown',\n groups: groups,\n attribFields,\n showEmpty: showEmptyGroups,\n groupRowFunc,\n })\n\n const attribFieldsScoped = useMemo(\n () => attribFields.filter((attrib) => attrib.scope?.some((scope) => scopes.includes(scope))),\n [attribFields, scopes],\n )\n\n // if we are grouping by something, we ignore current tableData and format the data based on the groupBy\n const groupedTableData = useMemo(\n () => !!effectiveGroupBy && buildGroupByTableData(effectiveGroupBy),\n [effectiveGroupBy, entitiesMap, groups],\n )\n\n const tableData =\n effectiveGroupBy && !isFlatFolderView && groupedTableData ? groupedTableData : defaultTableData\n\n const getEntityById = useCallback(\n (id: string, field: string = 'entityId'): EntityMap | undefined => {\n // defensive check to ensure id is a string\n if (typeof id !== 'string') {\n console.warn('getEntityById called with non-string id:', id)\n return undefined\n }\n // always parse the id to remove any suffixes\n // this can happen if the id is a group by id (we need to make the row id unique)\n const parsedId = parseRowId(id)\n if (foldersMap.has(parsedId)) {\n return foldersMap.get(parsedId)\n } else if (tasksMap.has(parsedId)) {\n return tasksMap.get(parsedId)\n } else if (entitiesMap.has(parsedId)) {\n return entitiesMap.get(parsedId)\n }\n\n // if we have not found the entity at all, double check through the maps using field (entityId)\n for (const [_, entity] of entitiesMap) {\n if (entity[field as keyof EntityMap] === parsedId) {\n return entity\n }\n }\n\n // Return undefined if not found\n return undefined\n },\n [foldersMap, tasksMap, entitiesMap],\n )\n\n // get folder relationship functions\n const {\n getInheritedDependents,\n getChildrenEntities,\n findInheritedValueFromAncestors,\n findNonInheritedValues,\n getAncestorsOf,\n } = useFolderRelationships({\n entitiesMap,\n tasksMap,\n tasksByFolderMap,\n getEntityById,\n projectAttrib,\n attribFields: attribFields,\n })\n\n const toggleExpandAll: ProjectTableContextType['toggleExpandAll'] = useCallback(\n (rowIds, expandAll) => {\n const expandedState = typeof expanded === 'object' ? expanded : {}\n\n const newExpandedState = { ...expandedState }\n\n rowIds.forEach((rowId) => {\n // get all children of the rowId using tableData\n const childIds = getChildrenEntities(rowId).map((child) => child.id)\n // check if the rowId is expanded\n const isExpanded = expandedState[rowId] || false\n\n if (expandAll !== undefined ? !expandAll : isExpanded) {\n // collapse all children\n newExpandedState[rowId] = false\n childIds.forEach((id) => {\n newExpandedState[id] = false\n })\n } else {\n // expand all children\n newExpandedState[rowId] = true\n childIds.forEach((id) => {\n newExpandedState[id] = true\n })\n }\n })\n\n setExpanded(newExpandedState)\n },\n [expanded, getChildrenEntities, setExpanded],\n )\n\n const toggleExpands: ProjectTableContextType['toggleExpands'] = useCallback(\n (rowIds, expand) => {\n const expandedState = typeof expanded === 'object' ? expanded : {}\n const newExpandedState = { ...expandedState }\n\n rowIds.forEach((rowId) => {\n if (expand !== undefined) {\n // Use the provided expand parameter\n newExpandedState[rowId] = expand\n } else {\n // Toggle based on current state\n newExpandedState[rowId] = !expandedState[rowId]\n }\n })\n\n setExpanded(newExpandedState)\n },\n [expanded, setExpanded],\n )\n\n return (\n <ProjectTableContext.Provider\n value={{\n // from this context\n tableData,\n // forwarded on\n isInitialized,\n isLoading,\n error,\n attribFields,\n attribFieldsScoped,\n scopes,\n users,\n tasksMap,\n foldersMap,\n entitiesMap,\n fetchNextPage,\n reloadTableData,\n groups,\n overrideGroupBy,\n queryFilters,\n loadingLinksEntityIds,\n // hierarchy\n showHierarchy,\n updateShowHierarchy,\n hierarchyOptions,\n hierarchyActive,\n // flat folder view\n isFlatFolderView,\n // expanded state\n expanded,\n setExpanded,\n toggleExpanded,\n updateExpanded,\n toggleExpandAll,\n toggleExpands,\n getEntityById,\n // folder relationships\n getInheritedDependents,\n findInheritedValueFromAncestors,\n findNonInheritedValues,\n getAncestorsOf,\n // context menu\n contextMenuItems,\n // powerpack context\n powerpack,\n modules,\n // SubtasksManager\n SubtasksManager,\n // player\n playerOpen,\n onOpenPlayer,\n // views\n onResetView,\n // router hooks\n useParams,\n useNavigate,\n useLocation,\n useSearchParams,\n }}\n >\n {children}\n </ProjectTableContext.Provider>\n )\n}\n"],"names":["parseRowId","rowId","ROW_ID_SEPARATOR","ProjectTableProvider","children","foldersMap","tableRows","tasksMap","entitiesMap","tasksByFolderMap","selectedFolders","expanded","showHierarchy","loadingTasks","isLoadingMore","isLoading","error","isInitialized","users","attribFields","scopes","groups","groupRowFunc","overrideGroupBy","queryFilters","updateShowHierarchy","toggleExpanded","updateExpanded","fetchNextPage","reloadTableData","setExpanded","contextMenuItems","powerpack","modules","loadingLinksEntityIds","groupByConfig","hierarchyOptions","hierarchyActive","isFlatFolderView","SubtasksManager","playerOpen","onOpenPlayer","onResetView","useParams","useNavigate","useLocation","useSearchParams","projectAttrib","useProjectContext","columnSettingsGroupBy","showEmptyGroups","useColumnSettingsContext","defaultTableData","useBuildProjectDataTable","effectiveGroupBy","buildGroupByTableData","useBuildGroupByTableData","attribFieldsScoped","useMemo","attrib","scope","groupedTableData","tableData","getEntityById","useCallback","id","field","parsedId","_","entity","getInheritedDependents","getChildrenEntities","findInheritedValueFromAncestors","findNonInheritedValues","getAncestorsOf","useFolderRelationships","toggleExpandAll","rowIds","expandAll","expandedState","newExpandedState","childIds","child","isExpanded","toggleExpands","expand","jsx","ProjectTableContext"],"mappings":"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"}
|