@ynput/ayon-frontend-shared 0.3.44 → 0.3.46
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 +4 -4
- package/dist/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +4 -4
- package/dist/_virtual/index.cjs15.js +1 -1
- package/dist/_virtual/index.cjs19.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.es15.js +2 -2
- package/dist/_virtual/index.es16.js +2 -2
- package/dist/_virtual/index.es17.js +2 -2
- package/dist/_virtual/index.es18.js +2 -2
- package/dist/_virtual/index.es19.js +2 -2
- 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 +4 -4
- 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/plugins/snapshot/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
- package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
- package/dist/shared/node_modules/prop-types/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.es.js +4 -4
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +4 -4
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +4 -4
- package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js +20 -20
- package/dist/shared/src/components/LinksManager/CellEditingDialog.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.es.js +4 -4
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +4 -4
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +4 -4
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +5 -5
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -4
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -4
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +4 -4
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -4
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +84 -69
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js +4 -4
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +4 -4
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +4 -4
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +4 -4
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +4 -4
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -4
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -4
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +4 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +4 -4
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +4 -4
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +4 -4
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +4 -4
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +4 -4
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +15 -15
- 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.es.js +4 -4
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +4 -4
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +4 -4
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +4 -4
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +4 -4
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +4 -4
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +4 -4
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +4 -4
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +4 -4
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +4 -4
- package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.es.js +4 -4
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js +4 -4
- package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -5
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +83 -86
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.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.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +4 -4
- 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 +31 -23
- 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.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +5 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js +23 -13
- package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.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.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +4 -4
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -4
- 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 +169 -169
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.cjs.js +1 -1
- package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.cjs.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.es.js +13 -13
- package/dist/shared/src/containers/SimpleTable/hooks/useRowKeydown.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.es.js +4 -4
- package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +55 -54
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +14 -14
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.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.es.js +3 -3
- package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
- package/dist/shared/src/context/WebsocketContext.es.js +4 -4
- package/dist/types/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.d.ts +8 -1
- package/dist/types/containers/Slicer/context/SlicerContext.d.ts +6 -1
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { useCallback as a, useMemo as
|
|
3
|
-
import { useSessionStorage as
|
|
1
|
+
import { j as R } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
+
import { useCallback as a, useMemo as k, useContext as w } from "react";
|
|
3
|
+
import { useSessionStorage as j } from "../../../hooks/useSessionStorage.es.js";
|
|
4
4
|
import "../../../context/RemoteModulesContext.es.js";
|
|
5
5
|
import "../../../../../_virtual/runtime.es.js";
|
|
6
6
|
import "../../../../../_virtual/semver.es.js";
|
|
@@ -125,17 +125,10 @@ import "../../../context/ProjectFoldersContextInstance.es.js";
|
|
|
125
125
|
import "react-redux";
|
|
126
126
|
import "custom-protocol-check";
|
|
127
127
|
import "../../ProjectTreeTable/components/GroupSettingsFallback.es.js";
|
|
128
|
-
import {
|
|
129
|
-
import "
|
|
130
|
-
import "
|
|
131
|
-
|
|
132
|
-
import "../../Views/ViewsMenuContainer/ViewsMenuContainer.es.js";
|
|
133
|
-
import "../../Views/ViewsMenu/ViewsMenu.es.js";
|
|
134
|
-
import { useViewUpdateHelper as j } from "../../Views/utils/viewUpdateHelper.es.js";
|
|
135
|
-
import { SlicerContext as w } from "./SlicerContextInstance.es.js";
|
|
136
|
-
import { useSlicerRemotes as G } from "../hooks/useSlicerRemotes.es.js";
|
|
137
|
-
import { useSlicerRowSelection as I } from "../hooks/useSlicerRowSelection.es.js";
|
|
138
|
-
const lo = {
|
|
128
|
+
import { SlicerContext as E } from "./SlicerContextInstance.es.js";
|
|
129
|
+
import { useSlicerRemotes as L } from "../hooks/useSlicerRemotes.es.js";
|
|
130
|
+
import { useSlicerRowSelection as G } from "../hooks/useSlicerRowSelection.es.js";
|
|
131
|
+
const oi = {
|
|
139
132
|
progress: {
|
|
140
133
|
fields: [
|
|
141
134
|
{ value: "hierarchy" },
|
|
@@ -166,93 +159,101 @@ const lo = {
|
|
|
166
159
|
{ value: "entityList" }
|
|
167
160
|
]
|
|
168
161
|
}
|
|
169
|
-
},
|
|
170
|
-
|
|
162
|
+
}, ii = ({
|
|
163
|
+
children: e,
|
|
164
|
+
page: c,
|
|
165
|
+
projectName: P,
|
|
166
|
+
viewSettings: T,
|
|
167
|
+
isLoadingViews: u,
|
|
168
|
+
updateViewSettings: v,
|
|
169
|
+
...s
|
|
170
|
+
}) => {
|
|
171
|
+
const n = s.sliceType ?? T?.sliceType ?? "hierarchy", { rowSelection: i, setRowSelection: r, expanded: l, setExpanded: p } = G({
|
|
171
172
|
sliceType: n,
|
|
172
173
|
page: c,
|
|
173
|
-
projectName:
|
|
174
|
+
projectName: P,
|
|
174
175
|
...s
|
|
175
|
-
}), [
|
|
176
|
+
}), [o, m] = j(
|
|
176
177
|
`slicer-pinned-slice-${c}`,
|
|
177
178
|
null
|
|
178
|
-
),
|
|
179
|
+
), d = a(
|
|
179
180
|
(t) => {
|
|
180
181
|
r(t);
|
|
181
182
|
},
|
|
182
183
|
[r]
|
|
183
|
-
),
|
|
184
|
-
(t,
|
|
184
|
+
), h = a(
|
|
185
|
+
(t, x) => {
|
|
185
186
|
if (s.onSliceTypeChange)
|
|
186
|
-
s.onSliceTypeChange(t,
|
|
187
|
+
s.onSliceTypeChange(t, x);
|
|
187
188
|
else {
|
|
188
189
|
const C = () => {
|
|
189
190
|
};
|
|
190
|
-
|
|
191
|
+
v({ sliceType: t }, C, C, {});
|
|
191
192
|
}
|
|
192
|
-
|
|
193
|
+
o && t === o.sliceType ? (r(o.rowSelection, t), p(o.expanded, t), m(null)) : (console.log("Clearing current pinned slice as switching to a different slice type"), r({}, t), p({}, t)), x && (console.log("Pinning current slice type and selection data", i), m({
|
|
193
194
|
sliceType: n,
|
|
194
|
-
rowSelection:
|
|
195
|
+
rowSelection: i,
|
|
195
196
|
expanded: l
|
|
196
197
|
}));
|
|
197
198
|
},
|
|
198
199
|
[
|
|
199
|
-
|
|
200
|
-
o,
|
|
201
|
-
r,
|
|
200
|
+
v,
|
|
202
201
|
i,
|
|
203
|
-
|
|
202
|
+
r,
|
|
203
|
+
o,
|
|
204
|
+
m,
|
|
204
205
|
l,
|
|
205
206
|
p
|
|
206
207
|
]
|
|
207
|
-
),
|
|
208
|
+
), S = a(
|
|
208
209
|
(t) => {
|
|
209
210
|
p(t);
|
|
210
211
|
},
|
|
211
212
|
[p]
|
|
212
|
-
), { useExtraSlices:
|
|
213
|
+
), { useExtraSlices: y, isLoadingExtraSlices: f, SlicerDropdown: g } = L(), b = k(
|
|
213
214
|
() => ({
|
|
214
|
-
useExtraSlices:
|
|
215
|
+
useExtraSlices: y,
|
|
215
216
|
isLoadingExtraSlices: f,
|
|
216
|
-
SlicerDropdown:
|
|
217
|
+
SlicerDropdown: g,
|
|
217
218
|
// SLICE TYPE
|
|
218
219
|
sliceType: n,
|
|
219
|
-
onSliceTypeChange:
|
|
220
|
+
onSliceTypeChange: h,
|
|
220
221
|
// ROW SELECTION
|
|
221
|
-
rowSelection:
|
|
222
|
-
onRowSelectionChange:
|
|
222
|
+
rowSelection: i,
|
|
223
|
+
onRowSelectionChange: d,
|
|
223
224
|
// PINNED SLICE
|
|
224
|
-
pinnedSlice:
|
|
225
|
-
setPinnedSlice:
|
|
225
|
+
pinnedSlice: o,
|
|
226
|
+
setPinnedSlice: m,
|
|
226
227
|
expanded: l,
|
|
227
|
-
onExpandedChange:
|
|
228
|
+
onExpandedChange: S,
|
|
228
229
|
// loading state
|
|
229
230
|
isViewSyncPending: u
|
|
230
231
|
}),
|
|
231
232
|
[
|
|
232
|
-
|
|
233
|
+
y,
|
|
233
234
|
f,
|
|
234
|
-
|
|
235
|
+
g,
|
|
235
236
|
n,
|
|
236
|
-
|
|
237
|
-
o,
|
|
238
|
-
v,
|
|
237
|
+
h,
|
|
239
238
|
i,
|
|
240
|
-
|
|
239
|
+
d,
|
|
240
|
+
o,
|
|
241
|
+
m,
|
|
241
242
|
l,
|
|
242
|
-
|
|
243
|
+
S,
|
|
243
244
|
u
|
|
244
245
|
]
|
|
245
246
|
);
|
|
246
|
-
return /* @__PURE__ */
|
|
247
|
-
},
|
|
248
|
-
const
|
|
249
|
-
if (
|
|
247
|
+
return /* @__PURE__ */ R.jsx(E.Provider, { value: b, children: e });
|
|
248
|
+
}, ri = () => {
|
|
249
|
+
const e = w(E);
|
|
250
|
+
if (e === void 0)
|
|
250
251
|
throw new Error("useSlicerContext must be used within a SlicerProvider");
|
|
251
|
-
return
|
|
252
|
+
return e;
|
|
252
253
|
};
|
|
253
254
|
export {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
255
|
+
oi as SLICER_PAGES_CONFIG,
|
|
256
|
+
ii as SlicerProvider,
|
|
257
|
+
ri as useSlicerContext
|
|
257
258
|
};
|
|
258
259
|
//# sourceMappingURL=SlicerContext.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlicerContext.es.js","sources":["../../../../../../src/containers/Slicer/context/SlicerContext.tsx"],"sourcesContent":["import {\n useContext,\n ReactNode,\n ForwardRefExoticComponent,\n RefAttributes,\n useCallback,\n useMemo,\n} from 'react'\nimport { ExpandedState, RowSelectionState } from '@tanstack/react-table'\nimport { SliceType } from '@shared/containers/Slicer'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { useSessionStorage } from '@shared/hooks'\nimport type { ProjectModel, Assignees, AttributeModel, ProductType } from '@shared/api'\nimport { SlicerDropdownFallbackProps } from '../components/SlicerDropdownFallback'\nimport { DropdownRef } from '@ynput/ayon-react-components'\nimport { PinnedSlice, SliceTypeField } from '../types'\nimport { useViewsContext, useViewUpdateHelper } from '@shared/containers/Views'\nimport { SlicerContext } from './SlicerContextInstance'\nimport { useSlicerRemotes } from '../hooks/useSlicerRemotes'\nimport { useSlicerRowSelection } from '../hooks/useSlicerRowSelection'\n\nexport const SLICER_PAGES_CONFIG: SlicerConfig = {\n progress: {\n fields: [\n { value: 'hierarchy' },\n { value: 'assignees' },\n { value: 'status' },\n { value: 'taskType' },\n ],\n },\n overview: {\n fields: [\n { value: 'hierarchy' },\n { value: 'assignees' },\n { value: 'status' },\n { value: 'type' },\n { value: 'taskType' },\n { value: 'attributes' },\n { value: 'entityList' },\n ],\n },\n versions: {\n fields: [\n { value: 'hierarchy' },\n { value: 'assignees', label: 'Task assignee' },\n { value: 'status', label: 'Version status' },\n { value: 'author', label: 'Version author' },\n { value: 'productType' },\n { value: 'taskType' },\n { value: 'entityList' },\n ],\n },\n}\n\nexport type OnSliceTypeChange = (sliceType: SliceType, pinCurrent?: boolean) => void\n\nexport type SlicerConfig = {\n [page: string]: {\n fields: SliceTypeField[]\n }\n}\n\ntype ExtraSlices = {\n formatStatuses: (project?: ProjectModel, scopes?: string[]) => SimpleTableRow[]\n formatTaskTypes: (project?: ProjectModel) => SimpleTableRow[]\n formatProductTypes: (productTypes: ProductType[]) => SimpleTableRow[]\n formatTypes: (project?: ProjectModel) => SimpleTableRow[]\n formatAssignees: (assignees: Assignees) => SimpleTableRow[]\n formatAttribute: (attribute: AttributeModel) => SimpleTableRow[]\n formatAuthors: (project?: ProjectModel) => SimpleTableRow[]\n}\n\nexport type UseExtraSlices = () => ExtraSlices\n\ntype OnRowSelectionChange = (selection: RowSelectionState) => void\n\nexport interface SlicerContextValue {\n rowSelection: RowSelectionState\n onRowSelectionChange: OnRowSelectionChange\n expanded: ExpandedState\n onExpandedChange: (expanded: ExpandedState) => void\n sliceType: SliceType\n onSliceTypeChange: OnSliceTypeChange\n isViewSyncPending: boolean\n pinnedSlice: PinnedSlice | null\n setPinnedSlice: React.Dispatch<React.SetStateAction<PinnedSlice | null>>\n useExtraSlices: UseExtraSlices\n isLoadingExtraSlices: boolean\n SlicerDropdown: ForwardRefExoticComponent<\n SlicerDropdownFallbackProps & RefAttributes<DropdownRef>\n >\n}\n\ninterface SlicerProviderProps {\n children: ReactNode\n rowSelection?: RowSelectionState\n setRowSelection?: React.Dispatch<React.SetStateAction<RowSelectionState>>\n expanded?: ExpandedState\n setExpanded?: React.Dispatch<React.SetStateAction<ExpandedState>>\n sliceType?: SliceType\n onSliceTypeChange?: OnSliceTypeChange\n page: string\n projectName: string\n}\n\nexport const SlicerProvider = ({ children, page, projectName, ...props }: SlicerProviderProps) => {\n const { viewSettings, isLoadingViews } = useViewsContext()\n // Get view update helper\n const { updateViewSettings } = useViewUpdateHelper()\n\n // @ts-expect-error - sliceType can be on a view\n const sliceType = props.sliceType ?? viewSettings?.sliceType ?? 'hierarchy'\n\n const { rowSelection, setRowSelection, expanded, setExpanded } = useSlicerRowSelection({\n sliceType,\n page,\n projectName,\n ...props,\n })\n\n // this is used to store another slice type whilst the user is viewing a different slice type\n // mostly used for preserving the hierarchy selection when switching to another slice type\n const [pinnedSlice, setPinnedSlice] = useSessionStorage<PinnedSlice | null>(\n `slicer-pinned-slice-${page}`,\n null,\n )\n\n const onRowSelectionChange = useCallback<OnRowSelectionChange>(\n (selection) => {\n setRowSelection(selection) // updates either hierarchy or other selection based on slice type\n },\n [setRowSelection],\n )\n\n const onSliceTypeChange = useCallback<OnSliceTypeChange>(\n (newSliceType, pinCurrent) => {\n if (props.onSliceTypeChange) {\n props.onSliceTypeChange(newSliceType, pinCurrent)\n } else {\n const noOp = () => {}\n // update the view settings with the new slice type\n updateViewSettings({ sliceType: newSliceType }, noOp, noOp, {})\n }\n\n // remove current row selection as it is no longer relevant to the new slice type\n\n // if going to pinned slice type, restore the pinned slice selection and expanded state\n // and remove the pinned slice\n if (pinnedSlice && newSliceType === pinnedSlice.sliceType) {\n setRowSelection(pinnedSlice.rowSelection, newSliceType)\n setExpanded(pinnedSlice.expanded, newSliceType)\n setPinnedSlice(null)\n } else {\n // clear pinned slice if switching to a different slice type\n console.log('Clearing current pinned slice as switching to a different slice type')\n setRowSelection({}, newSliceType)\n setExpanded({}, newSliceType)\n }\n\n // if pinCurrent is true, store the current slice type and selection data in local storage\n if (pinCurrent) {\n console.log('Pinning current slice type and selection data', rowSelection)\n setPinnedSlice({\n sliceType,\n rowSelection,\n expanded,\n })\n }\n },\n [\n updateViewSettings,\n rowSelection,\n setRowSelection,\n pinnedSlice,\n setPinnedSlice,\n expanded,\n setExpanded,\n ],\n )\n\n const onExpandedChange = useCallback(\n (newExpanded: ExpandedState) => {\n setExpanded(newExpanded)\n },\n [setExpanded],\n )\n\n // extra slices are loaded from the powerpack remote module, with a fallback to default empty functions\n const { useExtraSlices, isLoadingExtraSlices, SlicerDropdown } = useSlicerRemotes()\n\n const value = useMemo(\n () => ({\n useExtraSlices,\n isLoadingExtraSlices,\n SlicerDropdown,\n // SLICE TYPE\n sliceType,\n onSliceTypeChange,\n // ROW SELECTION\n rowSelection,\n onRowSelectionChange,\n // PINNED SLICE\n pinnedSlice,\n setPinnedSlice,\n expanded,\n onExpandedChange,\n // loading state\n isViewSyncPending: isLoadingViews,\n }),\n [\n useExtraSlices,\n isLoadingExtraSlices,\n SlicerDropdown,\n sliceType,\n onSliceTypeChange,\n rowSelection,\n onRowSelectionChange,\n pinnedSlice,\n setPinnedSlice,\n expanded,\n onExpandedChange,\n isLoadingViews,\n ],\n )\n\n return <SlicerContext.Provider value={value}>{children}</SlicerContext.Provider>\n}\n\nexport const useSlicerContext = () => {\n const context = useContext(SlicerContext)\n if (context === undefined) {\n throw new Error('useSlicerContext must be used within a SlicerProvider')\n }\n return context\n}\n\nexport default SlicerContext\n"],"names":["SLICER_PAGES_CONFIG","SlicerProvider","children","page","projectName","props","viewSettings","isLoadingViews","useViewsContext","updateViewSettings","useViewUpdateHelper","sliceType","rowSelection","setRowSelection","expanded","setExpanded","useSlicerRowSelection","pinnedSlice","setPinnedSlice","useSessionStorage","onRowSelectionChange","useCallback","selection","onSliceTypeChange","newSliceType","pinCurrent","noOp","onExpandedChange","newExpanded","useExtraSlices","isLoadingExtraSlices","SlicerDropdown","useSlicerRemotes","value","useMemo","jsx","SlicerContext","useSlicerContext","context","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SlicerContext.es.js","sources":["../../../../../../src/containers/Slicer/context/SlicerContext.tsx"],"sourcesContent":["import {\n useContext,\n ReactNode,\n ForwardRefExoticComponent,\n RefAttributes,\n useCallback,\n useMemo,\n} from 'react'\nimport { ExpandedState, RowSelectionState } from '@tanstack/react-table'\nimport { SliceType } from '@shared/containers/Slicer'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { useSessionStorage } from '@shared/hooks'\nimport type { ProjectModel, Assignees, AttributeModel, ProductType } from '@shared/api'\nimport { SlicerDropdownFallbackProps } from '../components/SlicerDropdownFallback'\nimport { DropdownRef } from '@ynput/ayon-react-components'\nimport { PinnedSlice, SliceTypeField } from '../types'\nimport type { ViewSettings } from '@shared/containers/Views'\nimport type { UpdateViewSettingsFn } from '@shared/containers/Views/utils/viewUpdateHelper'\nimport { SlicerContext } from './SlicerContextInstance'\nimport { useSlicerRemotes } from '../hooks/useSlicerRemotes'\nimport { useSlicerRowSelection } from '../hooks/useSlicerRowSelection'\n\nexport const SLICER_PAGES_CONFIG: SlicerConfig = {\n progress: {\n fields: [\n { value: 'hierarchy' },\n { value: 'assignees' },\n { value: 'status' },\n { value: 'taskType' },\n ],\n },\n overview: {\n fields: [\n { value: 'hierarchy' },\n { value: 'assignees' },\n { value: 'status' },\n { value: 'type' },\n { value: 'taskType' },\n { value: 'attributes' },\n { value: 'entityList' },\n ],\n },\n versions: {\n fields: [\n { value: 'hierarchy' },\n { value: 'assignees', label: 'Task assignee' },\n { value: 'status', label: 'Version status' },\n { value: 'author', label: 'Version author' },\n { value: 'productType' },\n { value: 'taskType' },\n { value: 'entityList' },\n ],\n },\n}\n\nexport type OnSliceTypeChange = (sliceType: SliceType, pinCurrent?: boolean) => void\n\nexport type SlicerConfig = {\n [page: string]: {\n fields: SliceTypeField[]\n }\n}\n\ntype ExtraSlices = {\n formatStatuses: (project?: ProjectModel, scopes?: string[]) => SimpleTableRow[]\n formatTaskTypes: (project?: ProjectModel) => SimpleTableRow[]\n formatProductTypes: (productTypes: ProductType[]) => SimpleTableRow[]\n formatTypes: (project?: ProjectModel) => SimpleTableRow[]\n formatAssignees: (assignees: Assignees) => SimpleTableRow[]\n formatAttribute: (attribute: AttributeModel) => SimpleTableRow[]\n formatAuthors: (project?: ProjectModel) => SimpleTableRow[]\n}\n\nexport type UseExtraSlices = () => ExtraSlices\n\ntype OnRowSelectionChange = (selection: RowSelectionState) => void\n\nexport interface SlicerContextValue {\n rowSelection: RowSelectionState\n onRowSelectionChange: OnRowSelectionChange\n expanded: ExpandedState\n onExpandedChange: (expanded: ExpandedState) => void\n sliceType: SliceType\n onSliceTypeChange: OnSliceTypeChange\n isViewSyncPending: boolean\n pinnedSlice: PinnedSlice | null\n setPinnedSlice: React.Dispatch<React.SetStateAction<PinnedSlice | null>>\n useExtraSlices: UseExtraSlices\n isLoadingExtraSlices: boolean\n SlicerDropdown: ForwardRefExoticComponent<\n SlicerDropdownFallbackProps & RefAttributes<DropdownRef>\n >\n}\n\ninterface SlicerProviderProps {\n children: ReactNode\n rowSelection?: RowSelectionState\n setRowSelection?: React.Dispatch<React.SetStateAction<RowSelectionState>>\n expanded?: ExpandedState\n setExpanded?: React.Dispatch<React.SetStateAction<ExpandedState>>\n sliceType?: SliceType\n onSliceTypeChange?: OnSliceTypeChange\n page: string\n projectName: string\n viewSettings: ViewSettings | undefined\n isLoadingViews: boolean\n updateViewSettings: UpdateViewSettingsFn\n}\n\nexport const SlicerProvider = ({\n children,\n page,\n projectName,\n viewSettings,\n isLoadingViews,\n updateViewSettings,\n ...props\n}: SlicerProviderProps) => {\n // @ts-expect-error - sliceType can be on a view\n const sliceType = props.sliceType ?? viewSettings?.sliceType ?? 'hierarchy'\n\n const { rowSelection, setRowSelection, expanded, setExpanded } = useSlicerRowSelection({\n sliceType,\n page,\n projectName,\n ...props,\n })\n\n // this is used to store another slice type whilst the user is viewing a different slice type\n // mostly used for preserving the hierarchy selection when switching to another slice type\n const [pinnedSlice, setPinnedSlice] = useSessionStorage<PinnedSlice | null>(\n `slicer-pinned-slice-${page}`,\n null,\n )\n\n const onRowSelectionChange = useCallback<OnRowSelectionChange>(\n (selection) => {\n setRowSelection(selection) // updates either hierarchy or other selection based on slice type\n },\n [setRowSelection],\n )\n\n const onSliceTypeChange = useCallback<OnSliceTypeChange>(\n (newSliceType, pinCurrent) => {\n if (props.onSliceTypeChange) {\n props.onSliceTypeChange(newSliceType, pinCurrent)\n } else {\n const noOp = () => {}\n // update the view settings with the new slice type\n updateViewSettings({ sliceType: newSliceType }, noOp, noOp, {})\n }\n\n // remove current row selection as it is no longer relevant to the new slice type\n\n // if going to pinned slice type, restore the pinned slice selection and expanded state\n // and remove the pinned slice\n if (pinnedSlice && newSliceType === pinnedSlice.sliceType) {\n setRowSelection(pinnedSlice.rowSelection, newSliceType)\n setExpanded(pinnedSlice.expanded, newSliceType)\n setPinnedSlice(null)\n } else {\n // clear pinned slice if switching to a different slice type\n console.log('Clearing current pinned slice as switching to a different slice type')\n setRowSelection({}, newSliceType)\n setExpanded({}, newSliceType)\n }\n\n // if pinCurrent is true, store the current slice type and selection data in local storage\n if (pinCurrent) {\n console.log('Pinning current slice type and selection data', rowSelection)\n setPinnedSlice({\n sliceType,\n rowSelection,\n expanded,\n })\n }\n },\n [\n updateViewSettings,\n rowSelection,\n setRowSelection,\n pinnedSlice,\n setPinnedSlice,\n expanded,\n setExpanded,\n ],\n )\n\n const onExpandedChange = useCallback(\n (newExpanded: ExpandedState) => {\n setExpanded(newExpanded)\n },\n [setExpanded],\n )\n\n // extra slices are loaded from the powerpack remote module, with a fallback to default empty functions\n const { useExtraSlices, isLoadingExtraSlices, SlicerDropdown } = useSlicerRemotes()\n\n const value = useMemo(\n () => ({\n useExtraSlices,\n isLoadingExtraSlices,\n SlicerDropdown,\n // SLICE TYPE\n sliceType,\n onSliceTypeChange,\n // ROW SELECTION\n rowSelection,\n onRowSelectionChange,\n // PINNED SLICE\n pinnedSlice,\n setPinnedSlice,\n expanded,\n onExpandedChange,\n // loading state\n isViewSyncPending: isLoadingViews,\n }),\n [\n useExtraSlices,\n isLoadingExtraSlices,\n SlicerDropdown,\n sliceType,\n onSliceTypeChange,\n rowSelection,\n onRowSelectionChange,\n pinnedSlice,\n setPinnedSlice,\n expanded,\n onExpandedChange,\n isLoadingViews,\n ],\n )\n\n return <SlicerContext.Provider value={value}>{children}</SlicerContext.Provider>\n}\n\nexport const useSlicerContext = () => {\n const context = useContext(SlicerContext)\n if (context === undefined) {\n throw new Error('useSlicerContext must be used within a SlicerProvider')\n }\n return context\n}\n\nexport default SlicerContext\n"],"names":["SLICER_PAGES_CONFIG","SlicerProvider","children","page","projectName","viewSettings","isLoadingViews","updateViewSettings","props","sliceType","rowSelection","setRowSelection","expanded","setExpanded","useSlicerRowSelection","pinnedSlice","setPinnedSlice","useSessionStorage","onRowSelectionChange","useCallback","selection","onSliceTypeChange","newSliceType","pinCurrent","noOp","onExpandedChange","newExpanded","useExtraSlices","isLoadingExtraSlices","SlicerDropdown","useSlicerRemotes","value","useMemo","jsx","SlicerContext","useSlicerContext","context","useContext"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react");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/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/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.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("../../../../../_virtual/jsx-runtime.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");const f=require("../../../util/getEntityTypeIcon.cjs.js"),B=require("../../../util/getAttributeIcon.cjs.js");require("uuid");require("../../../util/pubsub.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 F=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContextInstance.cjs.js");require("react-redux");require("custom-protocol-check");const z=require("../../../hooks/useHierarchyTable.cjs.js");require("../../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");const G=require("./useUsersTable.cjs.js"),J=require("./useProjectAnatomySlices.cjs.js"),K=require("../context/SlicerContext.cjs.js"),Q=require("./useSlicerAttributesData.cjs.js"),W=require("./useEntityListsSlice.cjs.js"),X=t=>({id:"noValue",name:"noValue",label:`No ${t}`,icon:"unpublished",subRows:[],data:{id:"noValue"}}),Y=t=>({id:"hasValue",name:"hasValue",label:`Some ${t}`,icon:"check",subRows:[],data:{id:"hasValue"}}),h=[{label:"Hierarchy",value:"hierarchy",icon:"table_rows"},{label:"Assignee",value:"assignees",icon:"person"},{label:"Status",value:"status",icon:"arrow_circle_right"},{label:"Task Type",value:"taskType",icon:f.getEntityTypeIcon("task")},{label:"Folder Type",value:"folderType",icon:f.getEntityTypeIcon("folder")},{label:"Product Type",value:"productType",icon:f.getEntityTypeIcon("product")},{label:"Author",value:"author",icon:"attribution"},{label:"Lists",value:"entityList",icon:"list_alt"}],Z=({sliceFields:t,entityTypes:l=[]})=>{const{sliceType:a,onSliceTypeChange:y,useExtraSlices:q,isLoadingExtraSlices:A}=K.useSlicerContext(),{projectName:c}=F.useProjectContext(),{formatAttribute:V}=q(),L=t.filter(e=>h.some(r=>r.value===e.value)).map(e=>({...h.find(i=>i.value===e.value),...e})),E=t.some(e=>e.value==="attributes"),{attributes:S,isLoading:T}=Q({entityTypes:l});E&&typeof V=="function"&&S.forEach(e=>L.push({label:e.data.title||e.name,value:"attrib."+e.name,icon:B.getAttributeIcon(e.name,e.data.type,!!e.data.enum?.length)}));const[C,D]=n.useState(!1),{project:P,getStatuses:j,getTypes:I,getTaskTypes:k,getProductTypes:R,getAttribute:O,isLoading:o}=J({scopes:l,useExtraSlices:q}),{getData:_,isFetching:m}=z.useHierarchyTable({projectName:c||"",folderTypes:P?.folderTypes||[],includeColors:!0}),{getData:w,isLoading:d}=G({projectName:c,useExtraSlices:q}),{getData:H,isLoading:M,isExpandable:N}=W.useEntityListsSlice(l),g=m||o||d||A||T,u={hierarchy:{getData:_,isLoading:m,isExpandable:!0},assignees:{getData:w,isLoading:d,isExpandable:!1,noValue:!0,hasValue:!0},author:{getData:w,isLoading:d,isExpandable:!1},status:{getData:j,isLoading:o,isExpandable:!1},type:{getData:I,isLoading:o,isExpandable:!0},taskType:{getData:k,isLoading:o,isExpandable:!1},productType:{getData:R,isLoading:!1,isExpandable:!1},entityList:{getData:H,isLoading:M,isExpandable:N}};for(const e of S)u["attrib."+e.name]={getData:()=>O(e),isLoading:T,isExpandable:!1,isAttribute:!0};const x={data:[],isExpandable:!1},[b,v]=n.useState(x),s=u[a],U=(e,r)=>{const i=u[e];if(!i){console.warn(`Slice type ${e} not found`);return}(i.isAttribute&&E||t.some(p=>p.value===e))&&y(e,r)};n.useEffect(()=>{if(g)return;(async()=>{try{if(!s)return;D(!0);const r=await s.getData();if(r===void 0)throw window.alert("Slice options failed to load. This likely means the PowerFeatures addon is out of date. Please update to the latest version."),y("hierarchy",!1),new Error("Slice data is undefined");s.hasValue&&r.unshift(Y(a)),s.noValue&&r.unshift(X(a)),v({data:r,isExpandable:s.isExpandable})}catch(r){console.error("Error fetching slice data:",r),v(x)}finally{D(!1)}})()},[a,c,g]);const $=n.useMemo(()=>{const e=new Map,r=[...b.data];for(;r.length>0;){const i=r.shift();if(i&&(e.set(i.id,i),i.subRows&&i.subRows.length>0))for(const p of i.subRows)r.push(p)}return e},[b.data]);return{sliceOptions:L,table:b,sliceMap:$,isLoading:u[a]&&u[a].isLoading||C||g,sliceType:a,handleSliceTypeChange:U}};exports.default=Z;exports.defaultSliceOptions=h;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react");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/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/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.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("../../../../../_virtual/jsx-runtime.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");const f=require("../../../util/getEntityTypeIcon.cjs.js"),B=require("../../../util/getAttributeIcon.cjs.js");require("uuid");require("../../../util/pubsub.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 F=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContextInstance.cjs.js");require("react-redux");require("custom-protocol-check");const z=require("../../../hooks/useHierarchyTable.cjs.js");require("../../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");const G=require("./useUsersTable.cjs.js"),J=require("./useProjectAnatomySlices.cjs.js"),K=require("../context/SlicerContext.cjs.js"),Q=require("./useSlicerAttributesData.cjs.js"),W=require("./useEntityListsSlice.cjs.js"),X=a=>({id:"noValue",name:"noValue",label:`No ${a}`,icon:"unpublished",subRows:[],data:{id:"noValue"}}),Y=a=>({id:"hasValue",name:"hasValue",label:`Some ${a}`,icon:"check",subRows:[],data:{id:"hasValue"}}),h=[{label:"Hierarchy",value:"hierarchy",icon:"table_rows"},{label:"Assignee",value:"assignees",icon:"person"},{label:"Status",value:"status",icon:"arrow_circle_right"},{label:"Task Type",value:"taskType",icon:f.getEntityTypeIcon("task")},{label:"Folder Type",value:"folderType",icon:f.getEntityTypeIcon("folder")},{label:"Product Type",value:"productType",icon:f.getEntityTypeIcon("product")},{label:"Author",value:"author",icon:"attribution"},{label:"Lists",value:"entityList",icon:"list_alt"}],Z=({sliceFields:a,entityTypes:l=[]})=>{const{sliceType:t,onSliceTypeChange:y,useExtraSlices:q,isLoadingExtraSlices:A}=K.useSlicerContext(),{projectName:c}=F.useProjectContext(),{formatAttribute:V}=q(),L=a.filter(e=>h.some(r=>r.value===e.value)).map(e=>({...h.find(i=>i.value===e.value),...e})),E=a.some(e=>e.value==="attributes"),{attributes:S,isLoading:T}=Q({entityTypes:l});E&&typeof V=="function"&&S.forEach(e=>L.push({label:e.data.title||e.name,value:"attrib."+e.name,icon:B.getAttributeIcon(e.name,e.data.type,!!e.data.enum?.length)}));const[C,D]=n.useState(!1),{project:P,getStatuses:j,getTypes:I,getTaskTypes:k,getProductTypes:R,getAttribute:O,isLoading:o}=J({scopes:l,useExtraSlices:q}),{getData:_,isFetching:m}=z.useHierarchyTable({projectName:c||"",folderTypes:P?.folderTypes||[],includeColors:!0}),{getData:w,isLoading:d}=G({projectName:c,useExtraSlices:q}),{getData:H,isLoading:M,isExpandable:N}=W.useEntityListsSlice(l),g=m||o||d||A&&t!=="hierarchy"||T,u={hierarchy:{getData:_,isLoading:m,isExpandable:!0},assignees:{getData:w,isLoading:d,isExpandable:!1,noValue:!0,hasValue:!0},author:{getData:w,isLoading:d,isExpandable:!1},status:{getData:j,isLoading:o,isExpandable:!1},type:{getData:I,isLoading:o,isExpandable:!0},taskType:{getData:k,isLoading:o,isExpandable:!1},productType:{getData:R,isLoading:!1,isExpandable:!1},entityList:{getData:H,isLoading:M,isExpandable:N}};for(const e of S)u["attrib."+e.name]={getData:()=>O(e),isLoading:T,isExpandable:!1,isAttribute:!0};const x={data:[],isExpandable:!1},[b,v]=n.useState(x),s=u[t],U=(e,r)=>{const i=u[e];if(!i){console.warn(`Slice type ${e} not found`);return}(i.isAttribute&&E||a.some(p=>p.value===e))&&y(e,r)};n.useEffect(()=>{if(g)return;(async()=>{try{if(!s)return;D(!0);const r=await s.getData();if(r===void 0)throw window.alert("Slice options failed to load. This likely means the PowerFeatures addon is out of date. Please update to the latest version."),y("hierarchy",!1),new Error("Slice data is undefined");s.hasValue&&r.unshift(Y(t)),s.noValue&&r.unshift(X(t)),v({data:r,isExpandable:s.isExpandable})}catch(r){console.error("Error fetching slice data:",r),v(x)}finally{D(!1)}})()},[t,c,g]);const $=n.useMemo(()=>{const e=new Map,r=[...b.data];for(;r.length>0;){const i=r.shift();if(i&&(e.set(i.id,i),i.subRows&&i.subRows.length>0))for(const p of i.subRows)r.push(p)}return e},[b.data]);return{sliceOptions:L,table:b,sliceMap:$,isLoading:u[t]&&u[t].isLoading||C||g,sliceType:t,handleSliceTypeChange:U}};exports.default=Z;exports.defaultSliceOptions=h;
|
|
2
2
|
//# sourceMappingURL=useTableDataBySlice.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableDataBySlice.cjs.js","sources":["../../../../../../src/containers/Slicer/hooks/useTableDataBySlice.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { useHierarchyTable } from '@shared/hooks'\nimport useUsersTable from './useUsersTable'\nimport useProjectAnatomySlices from './useProjectAnatomySlices'\nimport { Slice, SliceData, SliceTypeField, TableData } from '../types'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { SliceType } from '@shared/containers/Slicer'\nimport { useSlicerContext } from '../context/SlicerContext'\nimport useSlicerAttributesData from './useSlicerAttributesData'\nimport { useEntityListsSlice } from './useEntityListsSlice'\nimport { getAttributeIcon, getEntityTypeIcon } from '@shared/util'\nimport { useProjectContext } from '@shared/context'\n\ninterface TableDataBySliceProps {\n sliceFields: SliceTypeField[]\n entityTypes?: string[] // entity types\n}\n\nconst getNoValue = (field: string): SimpleTableRow => ({\n id: 'noValue',\n name: 'noValue',\n label: `No ${field}`,\n icon: 'unpublished',\n subRows: [],\n data: {\n id: 'noValue',\n },\n})\n\nconst getSomeValue = (field: string): SimpleTableRow => ({\n id: 'hasValue',\n name: 'hasValue',\n label: `Some ${field}`,\n icon: 'check',\n subRows: [],\n data: {\n id: 'hasValue',\n },\n})\n\nexport const defaultSliceOptions: SliceTypeField[] = [\n {\n label: 'Hierarchy',\n value: 'hierarchy' as SliceType,\n icon: 'table_rows',\n },\n {\n label: 'Assignee',\n value: 'assignees' as SliceType,\n icon: 'person',\n },\n {\n label: 'Status',\n value: 'status' as SliceType,\n icon: 'arrow_circle_right',\n },\n {\n label: 'Task Type',\n value: 'taskType' as SliceType,\n icon: getEntityTypeIcon('task'),\n },\n {\n label: 'Folder Type',\n value: 'folderType' as SliceType,\n icon: getEntityTypeIcon('folder'),\n },\n {\n label: 'Product Type',\n value: 'productType' as SliceType,\n icon: getEntityTypeIcon('product'),\n },\n {\n label: 'Author',\n value: 'author' as SliceType,\n icon: 'attribution',\n },\n {\n label: 'Lists',\n value: 'entityList' as SliceType,\n icon: 'list_alt',\n },\n]\n\nconst useTableDataBySlice = ({\n sliceFields,\n entityTypes = [],\n}: TableDataBySliceProps): TableData => {\n const { sliceType, onSliceTypeChange, useExtraSlices, isLoadingExtraSlices } = useSlicerContext()\n const { projectName } = useProjectContext()\n const { formatAttribute } = useExtraSlices()\n\n const sliceOptions = sliceFields\n .filter((f) => defaultSliceOptions.some((o) => o.value === f.value))\n .map((field) => {\n const defaultOption = defaultSliceOptions.find((opt) => opt.value === field.value)\n // use default option as fallback data\n return {\n ...defaultOption,\n ...field,\n }\n })\n\n const showAttributes = sliceFields.some((field) => field.value === 'attributes')\n const { attributes: slicerAttribs, isLoading: isLoadingAttribs } = useSlicerAttributesData({\n entityTypes,\n })\n\n if (showAttributes && typeof formatAttribute === 'function') {\n slicerAttribs.forEach((attr) =>\n sliceOptions.push({\n label: attr.data.title || attr.name,\n value: 'attrib.' + attr.name,\n icon: getAttributeIcon(attr.name, attr.data.type, !!attr.data.enum?.length),\n }),\n )\n }\n\n const [isLoading, setIsLoading] = useState(false)\n\n // project info\n const {\n project,\n getStatuses,\n getTypes,\n getTaskTypes,\n getProductTypes,\n getAttribute,\n isLoading: isLoadingProject,\n } = useProjectAnatomySlices({ scopes: entityTypes, useExtraSlices })\n\n // Hierarchy\n const { getData: getHierarchyData, isFetching: isLoadingHierarchy } = useHierarchyTable({\n projectName: projectName || '',\n folderTypes: project?.folderTypes || [],\n includeColors: true,\n })\n // Users\n const { getData: getUsersData, isLoading: isUsersLoading } = useUsersTable({\n projectName,\n useExtraSlices,\n })\n // Entity Lists\n const {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n } = useEntityListsSlice(entityTypes)\n const isLoadingData =\n isLoadingHierarchy ||\n isLoadingProject ||\n isUsersLoading ||\n isLoadingExtraSlices ||\n isLoadingAttribs\n\n const builtInSlices: Record<SliceType, SliceData> = {\n hierarchy: {\n getData: getHierarchyData,\n isLoading: isLoadingHierarchy,\n isExpandable: true,\n },\n assignees: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n noValue: true,\n hasValue: true,\n },\n author: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n },\n status: {\n getData: getStatuses,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n type: {\n getData: getTypes,\n isLoading: isLoadingProject,\n isExpandable: true,\n },\n taskType: {\n getData: getTaskTypes,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n productType: {\n getData: getProductTypes,\n isLoading: false,\n isExpandable: false,\n },\n entityList: {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n },\n }\n\n for (const attrib of slicerAttribs) {\n builtInSlices['attrib.' + attrib.name] = {\n getData: () => getAttribute(attrib),\n isLoading: isLoadingAttribs,\n isExpandable: false,\n isAttribute: true,\n }\n }\n\n const initSlice = { data: [], isExpandable: false }\n const [slice, setSlice] = useState<Slice>(initSlice)\n const sliceConfig = builtInSlices[sliceType]\n\n const handleSliceTypeChange = (sliceType: SliceType, pinCurrent?: boolean) => {\n // get slice data object\n const sliceConfig = builtInSlices[sliceType]\n if (!sliceConfig) {\n console.warn(`Slice type ${sliceType} not found`)\n return\n }\n // check slice type is enabled\n if (\n (sliceConfig.isAttribute && showAttributes) ||\n sliceFields.some((field) => field.value === sliceType)\n ) {\n onSliceTypeChange(sliceType, pinCurrent)\n }\n }\n\n useEffect(() => {\n // wait for hierarchy data to load before fetching slice data\n if (isLoadingData) return\n\n const fetchData = async () => {\n try {\n if (!sliceConfig) return\n setIsLoading(true)\n const newData = await sliceConfig.getData()\n\n if (newData === undefined) {\n window.alert(\n 'Slice options failed to load. This likely means the PowerFeatures addon is out of date. Please update to the latest version.',\n )\n // setSlice type to hierarchy\n onSliceTypeChange('hierarchy', false)\n throw new Error('Slice data is undefined')\n }\n\n // add some value option\n if (sliceConfig.hasValue) newData.unshift(getSomeValue(sliceType))\n\n // add no value option\n if (sliceConfig.noValue) newData.unshift(getNoValue(sliceType))\n setSlice({\n data: newData,\n isExpandable: sliceConfig.isExpandable,\n })\n } catch (error) {\n console.error('Error fetching slice data:', error)\n // set to initial empty state\n setSlice(initSlice)\n } finally {\n setIsLoading(false)\n }\n }\n\n fetchData()\n }, [sliceType, projectName, isLoadingData])\n\n // from slice data, flatten into a map of ids to rows\n const sliceMap = useMemo(() => {\n const map = new Map<string, SimpleTableRow>()\n const queue: SimpleTableRow[] = [...slice.data]\n\n while (queue.length > 0) {\n const row = queue.shift()\n if (row) {\n map.set(row.id, row)\n if (row.subRows && row.subRows.length > 0) {\n for (const subRow of row.subRows) {\n queue.push(subRow)\n }\n }\n }\n }\n return map\n }, [slice.data])\n\n return {\n sliceOptions,\n table: slice,\n sliceMap,\n isLoading:\n (builtInSlices[sliceType] && builtInSlices[sliceType].isLoading) ||\n isLoading ||\n isLoadingData,\n sliceType,\n handleSliceTypeChange,\n }\n}\n\nexport default useTableDataBySlice\n"],"names":["getNoValue","field","getSomeValue","defaultSliceOptions","getEntityTypeIcon","useTableDataBySlice","sliceFields","entityTypes","sliceType","onSliceTypeChange","useExtraSlices","isLoadingExtraSlices","useSlicerContext","projectName","useProjectContext","formatAttribute","sliceOptions","f","o","opt","showAttributes","slicerAttribs","isLoadingAttribs","useSlicerAttributesData","attr","getAttributeIcon","isLoading","setIsLoading","useState","project","getStatuses","getTypes","getTaskTypes","getProductTypes","getAttribute","isLoadingProject","useProjectAnatomySlices","getHierarchyData","isLoadingHierarchy","useHierarchyTable","getUsersData","isUsersLoading","useUsersTable","getEntityListsData","isLoadingLists","isEntityListExpandable","useEntityListsSlice","isLoadingData","builtInSlices","attrib","initSlice","slice","setSlice","sliceConfig","handleSliceTypeChange","pinCurrent","useEffect","newData","error","sliceMap","useMemo","map","queue","row","subRow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTableDataBySlice.cjs.js","sources":["../../../../../../src/containers/Slicer/hooks/useTableDataBySlice.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { useHierarchyTable } from '@shared/hooks'\nimport useUsersTable from './useUsersTable'\nimport useProjectAnatomySlices from './useProjectAnatomySlices'\nimport { Slice, SliceData, SliceTypeField, TableData } from '../types'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { SliceType } from '@shared/containers/Slicer'\nimport { useSlicerContext } from '../context/SlicerContext'\nimport useSlicerAttributesData from './useSlicerAttributesData'\nimport { useEntityListsSlice } from './useEntityListsSlice'\nimport { getAttributeIcon, getEntityTypeIcon } from '@shared/util'\nimport { useProjectContext } from '@shared/context'\n\ninterface TableDataBySliceProps {\n sliceFields: SliceTypeField[]\n entityTypes?: string[] // entity types\n}\n\nconst getNoValue = (field: string): SimpleTableRow => ({\n id: 'noValue',\n name: 'noValue',\n label: `No ${field}`,\n icon: 'unpublished',\n subRows: [],\n data: {\n id: 'noValue',\n },\n})\n\nconst getSomeValue = (field: string): SimpleTableRow => ({\n id: 'hasValue',\n name: 'hasValue',\n label: `Some ${field}`,\n icon: 'check',\n subRows: [],\n data: {\n id: 'hasValue',\n },\n})\n\nexport const defaultSliceOptions: SliceTypeField[] = [\n {\n label: 'Hierarchy',\n value: 'hierarchy' as SliceType,\n icon: 'table_rows',\n },\n {\n label: 'Assignee',\n value: 'assignees' as SliceType,\n icon: 'person',\n },\n {\n label: 'Status',\n value: 'status' as SliceType,\n icon: 'arrow_circle_right',\n },\n {\n label: 'Task Type',\n value: 'taskType' as SliceType,\n icon: getEntityTypeIcon('task'),\n },\n {\n label: 'Folder Type',\n value: 'folderType' as SliceType,\n icon: getEntityTypeIcon('folder'),\n },\n {\n label: 'Product Type',\n value: 'productType' as SliceType,\n icon: getEntityTypeIcon('product'),\n },\n {\n label: 'Author',\n value: 'author' as SliceType,\n icon: 'attribution',\n },\n {\n label: 'Lists',\n value: 'entityList' as SliceType,\n icon: 'list_alt',\n },\n]\n\nconst useTableDataBySlice = ({\n sliceFields,\n entityTypes = [],\n}: TableDataBySliceProps): TableData => {\n const { sliceType, onSliceTypeChange, useExtraSlices, isLoadingExtraSlices } = useSlicerContext()\n const { projectName } = useProjectContext()\n const { formatAttribute } = useExtraSlices()\n\n const sliceOptions = sliceFields\n .filter((f) => defaultSliceOptions.some((o) => o.value === f.value))\n .map((field) => {\n const defaultOption = defaultSliceOptions.find((opt) => opt.value === field.value)\n // use default option as fallback data\n return {\n ...defaultOption,\n ...field,\n }\n })\n\n const showAttributes = sliceFields.some((field) => field.value === 'attributes')\n const { attributes: slicerAttribs, isLoading: isLoadingAttribs } = useSlicerAttributesData({\n entityTypes,\n })\n\n if (showAttributes && typeof formatAttribute === 'function') {\n slicerAttribs.forEach((attr) =>\n sliceOptions.push({\n label: attr.data.title || attr.name,\n value: 'attrib.' + attr.name,\n icon: getAttributeIcon(attr.name, attr.data.type, !!attr.data.enum?.length),\n }),\n )\n }\n\n const [isLoading, setIsLoading] = useState(false)\n\n // project info\n const {\n project,\n getStatuses,\n getTypes,\n getTaskTypes,\n getProductTypes,\n getAttribute,\n isLoading: isLoadingProject,\n } = useProjectAnatomySlices({ scopes: entityTypes, useExtraSlices })\n\n // Hierarchy\n const { getData: getHierarchyData, isFetching: isLoadingHierarchy } = useHierarchyTable({\n projectName: projectName || '',\n folderTypes: project?.folderTypes || [],\n includeColors: true,\n })\n // Users\n const { getData: getUsersData, isLoading: isUsersLoading } = useUsersTable({\n projectName,\n useExtraSlices,\n })\n // Entity Lists\n const {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n } = useEntityListsSlice(entityTypes)\n const isLoadingData =\n isLoadingHierarchy ||\n isLoadingProject ||\n isUsersLoading ||\n (isLoadingExtraSlices && sliceType !== 'hierarchy') ||\n isLoadingAttribs\n\n const builtInSlices: Record<SliceType, SliceData> = {\n hierarchy: {\n getData: getHierarchyData,\n isLoading: isLoadingHierarchy,\n isExpandable: true,\n },\n assignees: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n noValue: true,\n hasValue: true,\n },\n author: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n },\n status: {\n getData: getStatuses,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n type: {\n getData: getTypes,\n isLoading: isLoadingProject,\n isExpandable: true,\n },\n taskType: {\n getData: getTaskTypes,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n productType: {\n getData: getProductTypes,\n isLoading: false,\n isExpandable: false,\n },\n entityList: {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n },\n }\n\n for (const attrib of slicerAttribs) {\n builtInSlices['attrib.' + attrib.name] = {\n getData: () => getAttribute(attrib),\n isLoading: isLoadingAttribs,\n isExpandable: false,\n isAttribute: true,\n }\n }\n\n const initSlice = { data: [], isExpandable: false }\n const [slice, setSlice] = useState<Slice>(initSlice)\n const sliceConfig = builtInSlices[sliceType]\n\n const handleSliceTypeChange = (sliceType: SliceType, pinCurrent?: boolean) => {\n // get slice data object\n const sliceConfig = builtInSlices[sliceType]\n if (!sliceConfig) {\n console.warn(`Slice type ${sliceType} not found`)\n return\n }\n // check slice type is enabled\n if (\n (sliceConfig.isAttribute && showAttributes) ||\n sliceFields.some((field) => field.value === sliceType)\n ) {\n onSliceTypeChange(sliceType, pinCurrent)\n }\n }\n\n useEffect(() => {\n // wait for hierarchy data to load before fetching slice data\n if (isLoadingData) return\n\n const fetchData = async () => {\n try {\n if (!sliceConfig) return\n setIsLoading(true)\n const newData = await sliceConfig.getData()\n\n if (newData === undefined) {\n window.alert(\n 'Slice options failed to load. This likely means the PowerFeatures addon is out of date. Please update to the latest version.',\n )\n // setSlice type to hierarchy\n onSliceTypeChange('hierarchy', false)\n throw new Error('Slice data is undefined')\n }\n\n // add some value option\n if (sliceConfig.hasValue) newData.unshift(getSomeValue(sliceType))\n\n // add no value option\n if (sliceConfig.noValue) newData.unshift(getNoValue(sliceType))\n setSlice({\n data: newData,\n isExpandable: sliceConfig.isExpandable,\n })\n } catch (error) {\n console.error('Error fetching slice data:', error)\n // set to initial empty state\n setSlice(initSlice)\n } finally {\n setIsLoading(false)\n }\n }\n\n fetchData()\n }, [sliceType, projectName, isLoadingData])\n\n // from slice data, flatten into a map of ids to rows\n const sliceMap = useMemo(() => {\n const map = new Map<string, SimpleTableRow>()\n const queue: SimpleTableRow[] = [...slice.data]\n\n while (queue.length > 0) {\n const row = queue.shift()\n if (row) {\n map.set(row.id, row)\n if (row.subRows && row.subRows.length > 0) {\n for (const subRow of row.subRows) {\n queue.push(subRow)\n }\n }\n }\n }\n return map\n }, [slice.data])\n\n return {\n sliceOptions,\n table: slice,\n sliceMap,\n isLoading:\n (builtInSlices[sliceType] && builtInSlices[sliceType].isLoading) ||\n isLoading ||\n isLoadingData,\n sliceType,\n handleSliceTypeChange,\n }\n}\n\nexport default useTableDataBySlice\n"],"names":["getNoValue","field","getSomeValue","defaultSliceOptions","getEntityTypeIcon","useTableDataBySlice","sliceFields","entityTypes","sliceType","onSliceTypeChange","useExtraSlices","isLoadingExtraSlices","useSlicerContext","projectName","useProjectContext","formatAttribute","sliceOptions","f","o","opt","showAttributes","slicerAttribs","isLoadingAttribs","useSlicerAttributesData","attr","getAttributeIcon","isLoading","setIsLoading","useState","project","getStatuses","getTypes","getTaskTypes","getProductTypes","getAttribute","isLoadingProject","useProjectAnatomySlices","getHierarchyData","isLoadingHierarchy","useHierarchyTable","getUsersData","isUsersLoading","useUsersTable","getEntityListsData","isLoadingLists","isEntityListExpandable","useEntityListsSlice","isLoadingData","builtInSlices","attrib","initSlice","slice","setSlice","sliceConfig","handleSliceTypeChange","pinCurrent","useEffect","newData","error","sliceMap","useMemo","map","queue","row","subRow"],"mappings":"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"}
|
|
@@ -132,19 +132,19 @@ import Q from "./useProjectAnatomySlices.es.js";
|
|
|
132
132
|
import { useSlicerContext as W } from "../context/SlicerContext.es.js";
|
|
133
133
|
import X from "./useSlicerAttributesData.es.js";
|
|
134
134
|
import { useEntityListsSlice as Y } from "./useEntityListsSlice.es.js";
|
|
135
|
-
const Z = (
|
|
135
|
+
const Z = (r) => ({
|
|
136
136
|
id: "noValue",
|
|
137
137
|
name: "noValue",
|
|
138
|
-
label: `No ${
|
|
138
|
+
label: `No ${r}`,
|
|
139
139
|
icon: "unpublished",
|
|
140
140
|
subRows: [],
|
|
141
141
|
data: {
|
|
142
142
|
id: "noValue"
|
|
143
143
|
}
|
|
144
|
-
}), tt = (
|
|
144
|
+
}), tt = (r) => ({
|
|
145
145
|
id: "hasValue",
|
|
146
146
|
name: "hasValue",
|
|
147
|
-
label: `Some ${
|
|
147
|
+
label: `Some ${r}`,
|
|
148
148
|
icon: "check",
|
|
149
149
|
subRows: [],
|
|
150
150
|
data: {
|
|
@@ -192,13 +192,13 @@ const Z = (e) => ({
|
|
|
192
192
|
icon: "list_alt"
|
|
193
193
|
}
|
|
194
194
|
], Vo = ({
|
|
195
|
-
sliceFields:
|
|
195
|
+
sliceFields: r,
|
|
196
196
|
entityTypes: m = []
|
|
197
197
|
}) => {
|
|
198
|
-
const { sliceType:
|
|
198
|
+
const { sliceType: e, onSliceTypeChange: b, useExtraSlices: n, isLoadingExtraSlices: V } = W(), { projectName: l } = G(), { formatAttribute: k } = n(), h = r.filter((t) => A.some((i) => i.value === t.value)).map((t) => ({
|
|
199
199
|
...A.find((o) => o.value === t.value),
|
|
200
200
|
...t
|
|
201
|
-
})), y =
|
|
201
|
+
})), y = r.some((t) => t.value === "attributes"), { attributes: L, isLoading: E } = X({
|
|
202
202
|
entityTypes: m
|
|
203
203
|
});
|
|
204
204
|
y && typeof k == "function" && L.forEach(
|
|
@@ -227,7 +227,7 @@ const Z = (e) => ({
|
|
|
227
227
|
getData: _,
|
|
228
228
|
isLoading: M,
|
|
229
229
|
isExpandable: U
|
|
230
|
-
} = Y(m), c = S || p || u || V || E, a = {
|
|
230
|
+
} = Y(m), c = S || p || u || V && e !== "hierarchy" || E, a = {
|
|
231
231
|
hierarchy: {
|
|
232
232
|
getData: O,
|
|
233
233
|
isLoading: S,
|
|
@@ -278,13 +278,13 @@ const Z = (e) => ({
|
|
|
278
278
|
isExpandable: !1,
|
|
279
279
|
isAttribute: !0
|
|
280
280
|
};
|
|
281
|
-
const x = { data: [], isExpandable: !1 }, [d, T] = v(x), s = a[
|
|
281
|
+
const x = { data: [], isExpandable: !1 }, [d, T] = v(x), s = a[e], $ = (t, i) => {
|
|
282
282
|
const o = a[t];
|
|
283
283
|
if (!o) {
|
|
284
284
|
console.warn(`Slice type ${t} not found`);
|
|
285
285
|
return;
|
|
286
286
|
}
|
|
287
|
-
(o.isAttribute && y ||
|
|
287
|
+
(o.isAttribute && y || r.some((f) => f.value === t)) && b(t, i);
|
|
288
288
|
};
|
|
289
289
|
B(() => {
|
|
290
290
|
if (c) return;
|
|
@@ -297,7 +297,7 @@ const Z = (e) => ({
|
|
|
297
297
|
throw window.alert(
|
|
298
298
|
"Slice options failed to load. This likely means the PowerFeatures addon is out of date. Please update to the latest version."
|
|
299
299
|
), b("hierarchy", !1), new Error("Slice data is undefined");
|
|
300
|
-
s.hasValue && i.unshift(tt(
|
|
300
|
+
s.hasValue && i.unshift(tt(e)), s.noValue && i.unshift(Z(e)), T({
|
|
301
301
|
data: i,
|
|
302
302
|
isExpandable: s.isExpandable
|
|
303
303
|
});
|
|
@@ -307,7 +307,7 @@ const Z = (e) => ({
|
|
|
307
307
|
D(!1);
|
|
308
308
|
}
|
|
309
309
|
})();
|
|
310
|
-
}, [
|
|
310
|
+
}, [e, l, c]);
|
|
311
311
|
const q = F(() => {
|
|
312
312
|
const t = /* @__PURE__ */ new Map(), i = [...d.data];
|
|
313
313
|
for (; i.length > 0; ) {
|
|
@@ -322,8 +322,8 @@ const Z = (e) => ({
|
|
|
322
322
|
sliceOptions: h,
|
|
323
323
|
table: d,
|
|
324
324
|
sliceMap: q,
|
|
325
|
-
isLoading: a[
|
|
326
|
-
sliceType:
|
|
325
|
+
isLoading: a[e] && a[e].isLoading || C || c,
|
|
326
|
+
sliceType: e,
|
|
327
327
|
handleSliceTypeChange: $
|
|
328
328
|
};
|
|
329
329
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableDataBySlice.es.js","sources":["../../../../../../src/containers/Slicer/hooks/useTableDataBySlice.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { useHierarchyTable } from '@shared/hooks'\nimport useUsersTable from './useUsersTable'\nimport useProjectAnatomySlices from './useProjectAnatomySlices'\nimport { Slice, SliceData, SliceTypeField, TableData } from '../types'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { SliceType } from '@shared/containers/Slicer'\nimport { useSlicerContext } from '../context/SlicerContext'\nimport useSlicerAttributesData from './useSlicerAttributesData'\nimport { useEntityListsSlice } from './useEntityListsSlice'\nimport { getAttributeIcon, getEntityTypeIcon } from '@shared/util'\nimport { useProjectContext } from '@shared/context'\n\ninterface TableDataBySliceProps {\n sliceFields: SliceTypeField[]\n entityTypes?: string[] // entity types\n}\n\nconst getNoValue = (field: string): SimpleTableRow => ({\n id: 'noValue',\n name: 'noValue',\n label: `No ${field}`,\n icon: 'unpublished',\n subRows: [],\n data: {\n id: 'noValue',\n },\n})\n\nconst getSomeValue = (field: string): SimpleTableRow => ({\n id: 'hasValue',\n name: 'hasValue',\n label: `Some ${field}`,\n icon: 'check',\n subRows: [],\n data: {\n id: 'hasValue',\n },\n})\n\nexport const defaultSliceOptions: SliceTypeField[] = [\n {\n label: 'Hierarchy',\n value: 'hierarchy' as SliceType,\n icon: 'table_rows',\n },\n {\n label: 'Assignee',\n value: 'assignees' as SliceType,\n icon: 'person',\n },\n {\n label: 'Status',\n value: 'status' as SliceType,\n icon: 'arrow_circle_right',\n },\n {\n label: 'Task Type',\n value: 'taskType' as SliceType,\n icon: getEntityTypeIcon('task'),\n },\n {\n label: 'Folder Type',\n value: 'folderType' as SliceType,\n icon: getEntityTypeIcon('folder'),\n },\n {\n label: 'Product Type',\n value: 'productType' as SliceType,\n icon: getEntityTypeIcon('product'),\n },\n {\n label: 'Author',\n value: 'author' as SliceType,\n icon: 'attribution',\n },\n {\n label: 'Lists',\n value: 'entityList' as SliceType,\n icon: 'list_alt',\n },\n]\n\nconst useTableDataBySlice = ({\n sliceFields,\n entityTypes = [],\n}: TableDataBySliceProps): TableData => {\n const { sliceType, onSliceTypeChange, useExtraSlices, isLoadingExtraSlices } = useSlicerContext()\n const { projectName } = useProjectContext()\n const { formatAttribute } = useExtraSlices()\n\n const sliceOptions = sliceFields\n .filter((f) => defaultSliceOptions.some((o) => o.value === f.value))\n .map((field) => {\n const defaultOption = defaultSliceOptions.find((opt) => opt.value === field.value)\n // use default option as fallback data\n return {\n ...defaultOption,\n ...field,\n }\n })\n\n const showAttributes = sliceFields.some((field) => field.value === 'attributes')\n const { attributes: slicerAttribs, isLoading: isLoadingAttribs } = useSlicerAttributesData({\n entityTypes,\n })\n\n if (showAttributes && typeof formatAttribute === 'function') {\n slicerAttribs.forEach((attr) =>\n sliceOptions.push({\n label: attr.data.title || attr.name,\n value: 'attrib.' + attr.name,\n icon: getAttributeIcon(attr.name, attr.data.type, !!attr.data.enum?.length),\n }),\n )\n }\n\n const [isLoading, setIsLoading] = useState(false)\n\n // project info\n const {\n project,\n getStatuses,\n getTypes,\n getTaskTypes,\n getProductTypes,\n getAttribute,\n isLoading: isLoadingProject,\n } = useProjectAnatomySlices({ scopes: entityTypes, useExtraSlices })\n\n // Hierarchy\n const { getData: getHierarchyData, isFetching: isLoadingHierarchy } = useHierarchyTable({\n projectName: projectName || '',\n folderTypes: project?.folderTypes || [],\n includeColors: true,\n })\n // Users\n const { getData: getUsersData, isLoading: isUsersLoading } = useUsersTable({\n projectName,\n useExtraSlices,\n })\n // Entity Lists\n const {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n } = useEntityListsSlice(entityTypes)\n const isLoadingData =\n isLoadingHierarchy ||\n isLoadingProject ||\n isUsersLoading ||\n isLoadingExtraSlices ||\n isLoadingAttribs\n\n const builtInSlices: Record<SliceType, SliceData> = {\n hierarchy: {\n getData: getHierarchyData,\n isLoading: isLoadingHierarchy,\n isExpandable: true,\n },\n assignees: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n noValue: true,\n hasValue: true,\n },\n author: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n },\n status: {\n getData: getStatuses,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n type: {\n getData: getTypes,\n isLoading: isLoadingProject,\n isExpandable: true,\n },\n taskType: {\n getData: getTaskTypes,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n productType: {\n getData: getProductTypes,\n isLoading: false,\n isExpandable: false,\n },\n entityList: {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n },\n }\n\n for (const attrib of slicerAttribs) {\n builtInSlices['attrib.' + attrib.name] = {\n getData: () => getAttribute(attrib),\n isLoading: isLoadingAttribs,\n isExpandable: false,\n isAttribute: true,\n }\n }\n\n const initSlice = { data: [], isExpandable: false }\n const [slice, setSlice] = useState<Slice>(initSlice)\n const sliceConfig = builtInSlices[sliceType]\n\n const handleSliceTypeChange = (sliceType: SliceType, pinCurrent?: boolean) => {\n // get slice data object\n const sliceConfig = builtInSlices[sliceType]\n if (!sliceConfig) {\n console.warn(`Slice type ${sliceType} not found`)\n return\n }\n // check slice type is enabled\n if (\n (sliceConfig.isAttribute && showAttributes) ||\n sliceFields.some((field) => field.value === sliceType)\n ) {\n onSliceTypeChange(sliceType, pinCurrent)\n }\n }\n\n useEffect(() => {\n // wait for hierarchy data to load before fetching slice data\n if (isLoadingData) return\n\n const fetchData = async () => {\n try {\n if (!sliceConfig) return\n setIsLoading(true)\n const newData = await sliceConfig.getData()\n\n if (newData === undefined) {\n window.alert(\n 'Slice options failed to load. This likely means the PowerFeatures addon is out of date. Please update to the latest version.',\n )\n // setSlice type to hierarchy\n onSliceTypeChange('hierarchy', false)\n throw new Error('Slice data is undefined')\n }\n\n // add some value option\n if (sliceConfig.hasValue) newData.unshift(getSomeValue(sliceType))\n\n // add no value option\n if (sliceConfig.noValue) newData.unshift(getNoValue(sliceType))\n setSlice({\n data: newData,\n isExpandable: sliceConfig.isExpandable,\n })\n } catch (error) {\n console.error('Error fetching slice data:', error)\n // set to initial empty state\n setSlice(initSlice)\n } finally {\n setIsLoading(false)\n }\n }\n\n fetchData()\n }, [sliceType, projectName, isLoadingData])\n\n // from slice data, flatten into a map of ids to rows\n const sliceMap = useMemo(() => {\n const map = new Map<string, SimpleTableRow>()\n const queue: SimpleTableRow[] = [...slice.data]\n\n while (queue.length > 0) {\n const row = queue.shift()\n if (row) {\n map.set(row.id, row)\n if (row.subRows && row.subRows.length > 0) {\n for (const subRow of row.subRows) {\n queue.push(subRow)\n }\n }\n }\n }\n return map\n }, [slice.data])\n\n return {\n sliceOptions,\n table: slice,\n sliceMap,\n isLoading:\n (builtInSlices[sliceType] && builtInSlices[sliceType].isLoading) ||\n isLoading ||\n isLoadingData,\n sliceType,\n handleSliceTypeChange,\n }\n}\n\nexport default useTableDataBySlice\n"],"names":["getNoValue","field","getSomeValue","defaultSliceOptions","getEntityTypeIcon","useTableDataBySlice","sliceFields","entityTypes","sliceType","onSliceTypeChange","useExtraSlices","isLoadingExtraSlices","useSlicerContext","projectName","useProjectContext","formatAttribute","sliceOptions","f","o","opt","showAttributes","slicerAttribs","isLoadingAttribs","useSlicerAttributesData","attr","getAttributeIcon","isLoading","setIsLoading","useState","project","getStatuses","getTypes","getTaskTypes","getProductTypes","getAttribute","isLoadingProject","useProjectAnatomySlices","getHierarchyData","isLoadingHierarchy","useHierarchyTable","getUsersData","isUsersLoading","useUsersTable","getEntityListsData","isLoadingLists","isEntityListExpandable","useEntityListsSlice","isLoadingData","builtInSlices","attrib","initSlice","slice","setSlice","sliceConfig","handleSliceTypeChange","pinCurrent","useEffect","newData","error","sliceMap","useMemo","map","queue","row","subRow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTableDataBySlice.es.js","sources":["../../../../../../src/containers/Slicer/hooks/useTableDataBySlice.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { useHierarchyTable } from '@shared/hooks'\nimport useUsersTable from './useUsersTable'\nimport useProjectAnatomySlices from './useProjectAnatomySlices'\nimport { Slice, SliceData, SliceTypeField, TableData } from '../types'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { SliceType } from '@shared/containers/Slicer'\nimport { useSlicerContext } from '../context/SlicerContext'\nimport useSlicerAttributesData from './useSlicerAttributesData'\nimport { useEntityListsSlice } from './useEntityListsSlice'\nimport { getAttributeIcon, getEntityTypeIcon } from '@shared/util'\nimport { useProjectContext } from '@shared/context'\n\ninterface TableDataBySliceProps {\n sliceFields: SliceTypeField[]\n entityTypes?: string[] // entity types\n}\n\nconst getNoValue = (field: string): SimpleTableRow => ({\n id: 'noValue',\n name: 'noValue',\n label: `No ${field}`,\n icon: 'unpublished',\n subRows: [],\n data: {\n id: 'noValue',\n },\n})\n\nconst getSomeValue = (field: string): SimpleTableRow => ({\n id: 'hasValue',\n name: 'hasValue',\n label: `Some ${field}`,\n icon: 'check',\n subRows: [],\n data: {\n id: 'hasValue',\n },\n})\n\nexport const defaultSliceOptions: SliceTypeField[] = [\n {\n label: 'Hierarchy',\n value: 'hierarchy' as SliceType,\n icon: 'table_rows',\n },\n {\n label: 'Assignee',\n value: 'assignees' as SliceType,\n icon: 'person',\n },\n {\n label: 'Status',\n value: 'status' as SliceType,\n icon: 'arrow_circle_right',\n },\n {\n label: 'Task Type',\n value: 'taskType' as SliceType,\n icon: getEntityTypeIcon('task'),\n },\n {\n label: 'Folder Type',\n value: 'folderType' as SliceType,\n icon: getEntityTypeIcon('folder'),\n },\n {\n label: 'Product Type',\n value: 'productType' as SliceType,\n icon: getEntityTypeIcon('product'),\n },\n {\n label: 'Author',\n value: 'author' as SliceType,\n icon: 'attribution',\n },\n {\n label: 'Lists',\n value: 'entityList' as SliceType,\n icon: 'list_alt',\n },\n]\n\nconst useTableDataBySlice = ({\n sliceFields,\n entityTypes = [],\n}: TableDataBySliceProps): TableData => {\n const { sliceType, onSliceTypeChange, useExtraSlices, isLoadingExtraSlices } = useSlicerContext()\n const { projectName } = useProjectContext()\n const { formatAttribute } = useExtraSlices()\n\n const sliceOptions = sliceFields\n .filter((f) => defaultSliceOptions.some((o) => o.value === f.value))\n .map((field) => {\n const defaultOption = defaultSliceOptions.find((opt) => opt.value === field.value)\n // use default option as fallback data\n return {\n ...defaultOption,\n ...field,\n }\n })\n\n const showAttributes = sliceFields.some((field) => field.value === 'attributes')\n const { attributes: slicerAttribs, isLoading: isLoadingAttribs } = useSlicerAttributesData({\n entityTypes,\n })\n\n if (showAttributes && typeof formatAttribute === 'function') {\n slicerAttribs.forEach((attr) =>\n sliceOptions.push({\n label: attr.data.title || attr.name,\n value: 'attrib.' + attr.name,\n icon: getAttributeIcon(attr.name, attr.data.type, !!attr.data.enum?.length),\n }),\n )\n }\n\n const [isLoading, setIsLoading] = useState(false)\n\n // project info\n const {\n project,\n getStatuses,\n getTypes,\n getTaskTypes,\n getProductTypes,\n getAttribute,\n isLoading: isLoadingProject,\n } = useProjectAnatomySlices({ scopes: entityTypes, useExtraSlices })\n\n // Hierarchy\n const { getData: getHierarchyData, isFetching: isLoadingHierarchy } = useHierarchyTable({\n projectName: projectName || '',\n folderTypes: project?.folderTypes || [],\n includeColors: true,\n })\n // Users\n const { getData: getUsersData, isLoading: isUsersLoading } = useUsersTable({\n projectName,\n useExtraSlices,\n })\n // Entity Lists\n const {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n } = useEntityListsSlice(entityTypes)\n const isLoadingData =\n isLoadingHierarchy ||\n isLoadingProject ||\n isUsersLoading ||\n (isLoadingExtraSlices && sliceType !== 'hierarchy') ||\n isLoadingAttribs\n\n const builtInSlices: Record<SliceType, SliceData> = {\n hierarchy: {\n getData: getHierarchyData,\n isLoading: isLoadingHierarchy,\n isExpandable: true,\n },\n assignees: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n noValue: true,\n hasValue: true,\n },\n author: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n },\n status: {\n getData: getStatuses,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n type: {\n getData: getTypes,\n isLoading: isLoadingProject,\n isExpandable: true,\n },\n taskType: {\n getData: getTaskTypes,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n productType: {\n getData: getProductTypes,\n isLoading: false,\n isExpandable: false,\n },\n entityList: {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n },\n }\n\n for (const attrib of slicerAttribs) {\n builtInSlices['attrib.' + attrib.name] = {\n getData: () => getAttribute(attrib),\n isLoading: isLoadingAttribs,\n isExpandable: false,\n isAttribute: true,\n }\n }\n\n const initSlice = { data: [], isExpandable: false }\n const [slice, setSlice] = useState<Slice>(initSlice)\n const sliceConfig = builtInSlices[sliceType]\n\n const handleSliceTypeChange = (sliceType: SliceType, pinCurrent?: boolean) => {\n // get slice data object\n const sliceConfig = builtInSlices[sliceType]\n if (!sliceConfig) {\n console.warn(`Slice type ${sliceType} not found`)\n return\n }\n // check slice type is enabled\n if (\n (sliceConfig.isAttribute && showAttributes) ||\n sliceFields.some((field) => field.value === sliceType)\n ) {\n onSliceTypeChange(sliceType, pinCurrent)\n }\n }\n\n useEffect(() => {\n // wait for hierarchy data to load before fetching slice data\n if (isLoadingData) return\n\n const fetchData = async () => {\n try {\n if (!sliceConfig) return\n setIsLoading(true)\n const newData = await sliceConfig.getData()\n\n if (newData === undefined) {\n window.alert(\n 'Slice options failed to load. This likely means the PowerFeatures addon is out of date. Please update to the latest version.',\n )\n // setSlice type to hierarchy\n onSliceTypeChange('hierarchy', false)\n throw new Error('Slice data is undefined')\n }\n\n // add some value option\n if (sliceConfig.hasValue) newData.unshift(getSomeValue(sliceType))\n\n // add no value option\n if (sliceConfig.noValue) newData.unshift(getNoValue(sliceType))\n setSlice({\n data: newData,\n isExpandable: sliceConfig.isExpandable,\n })\n } catch (error) {\n console.error('Error fetching slice data:', error)\n // set to initial empty state\n setSlice(initSlice)\n } finally {\n setIsLoading(false)\n }\n }\n\n fetchData()\n }, [sliceType, projectName, isLoadingData])\n\n // from slice data, flatten into a map of ids to rows\n const sliceMap = useMemo(() => {\n const map = new Map<string, SimpleTableRow>()\n const queue: SimpleTableRow[] = [...slice.data]\n\n while (queue.length > 0) {\n const row = queue.shift()\n if (row) {\n map.set(row.id, row)\n if (row.subRows && row.subRows.length > 0) {\n for (const subRow of row.subRows) {\n queue.push(subRow)\n }\n }\n }\n }\n return map\n }, [slice.data])\n\n return {\n sliceOptions,\n table: slice,\n sliceMap,\n isLoading:\n (builtInSlices[sliceType] && builtInSlices[sliceType].isLoading) ||\n isLoading ||\n isLoadingData,\n sliceType,\n handleSliceTypeChange,\n }\n}\n\nexport default useTableDataBySlice\n"],"names":["getNoValue","field","getSomeValue","defaultSliceOptions","getEntityTypeIcon","useTableDataBySlice","sliceFields","entityTypes","sliceType","onSliceTypeChange","useExtraSlices","isLoadingExtraSlices","useSlicerContext","projectName","useProjectContext","formatAttribute","sliceOptions","f","o","opt","showAttributes","slicerAttribs","isLoadingAttribs","useSlicerAttributesData","attr","getAttributeIcon","isLoading","setIsLoading","useState","project","getStatuses","getTypes","getTaskTypes","getProductTypes","getAttribute","isLoadingProject","useProjectAnatomySlices","getHierarchyData","isLoadingHierarchy","useHierarchyTable","getUsersData","isUsersLoading","useUsersTable","getEntityListsData","isLoadingLists","isEntityListExpandable","useEntityListsSlice","isLoadingData","builtInSlices","attrib","initSlice","slice","setSlice","sliceConfig","handleSliceTypeChange","pinCurrent","useEffect","newData","error","sliceMap","useMemo","map","queue","row","subRow"],"mappings":"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"}
|