@ynput/ayon-frontend-shared 0.4.1 → 0.4.3
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 +37 -201
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +252 -512
- package/dist/ProjectTreeTable.es.js.map +1 -1
- package/dist/Slicer.cjs.js +1 -1
- package/dist/Slicer.es.js +31 -233
- package/dist/Slicer.es.js.map +1 -1
- package/dist/_virtual/index.cjs22.js +1 -1
- package/dist/_virtual/index.cjs23.js +1 -1
- package/dist/_virtual/index.cjs24.js +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.es22.js +3 -3
- package/dist/_virtual/index.es23.js +5 -5
- package/dist/_virtual/index.es24.js +5 -5
- package/dist/_virtual/index.es4.js +2 -5
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es5.js +5 -2
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +2 -2
- package/dist/_virtual/index.es8.js +2 -2
- package/dist/api.cjs.js +1 -1
- package/dist/api.es.js +446 -445
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +83 -82
- package/dist/components.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +43 -130
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime/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/react-is/index.cjs.js +1 -1
- package/dist/shared/node_modules/react-is/index.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +85 -27
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +126 -64
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
- package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getCategories.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getCategories.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +55 -151
- package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
- package/dist/shared/src/api/queries/addons/updateAddons.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/addons/updateAddons.es.js.map +1 -1
- package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +36 -36
- package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +58 -113
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.es.js +67 -118
- package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
- package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/listFolders.es.js +40 -95
- package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
- package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.es.js.map +1 -1
- package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
- package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/folders/getFolders.es.js +68 -119
- package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
- package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
- package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/links/getEntityLinks.es.js +73 -128
- package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
- package/dist/shared/src/api/queries/links/updateLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/links/updateLinks.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.es.js +229 -282
- package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/products/getFolderProducts.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/products/getFolderProducts.es.js.map +1 -1
- package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
- package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +80 -134
- package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
- package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
- package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/review/getReview.es.js +95 -152
- package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
- package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/share/share.es.js.map +1 -1
- package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +88 -141
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
- package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
- package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +30 -80
- package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
- package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js.map +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
- package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
- package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
- package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
- package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.cjs.js.map +1 -1
- package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.es.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +28 -30
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
- package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +29 -125
- package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
- package/dist/shared/src/components/Chips/Chips.cjs.js +12 -6
- package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
- package/dist/shared/src/components/Chips/Chips.es.js +69 -62
- package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
- package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +3 -3
- package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
- package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +16 -310
- package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
- package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js +5 -5
- package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js.map +1 -1
- package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js +49 -145
- package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +5 -5
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +45 -141
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +30 -166
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +9 -195
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +2 -2
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +5 -200
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +4 -4
- package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +18 -114
- package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +2 -2
- package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +13 -109
- package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +11 -316
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +23 -119
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +0 -111
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js.map +1 -1
- package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
- package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +12 -314
- package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +86 -273
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +34 -335
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
- package/dist/shared/src/components/EntityPath/EntityPath.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/EntityPath.es.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +15 -310
- package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
- package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js.map +1 -1
- package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js.map +1 -1
- package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js.map +1 -1
- package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js +89 -293
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
- package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js +2 -2
- package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js.map +1 -1
- package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js +10 -106
- package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js.map +1 -1
- package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js +1 -1
- package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js.map +1 -1
- package/dist/shared/src/components/InfoMessage/InfoMessage.es.js +6 -5
- package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.es.js +51 -346
- package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +7 -212
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +2 -205
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
- package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
- package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
- package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +4 -185
- package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
- package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
- package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
- package/dist/shared/src/components/Menu/Menu.es.js +48 -343
- package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
- package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuItem.es.js +20 -316
- package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
- package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuList.es.js +74 -373
- package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +2 -2
- package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +16 -315
- package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +48 -346
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +134 -304
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +78 -371
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -299
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +34 -334
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +30 -331
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +5 -5
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.es.js +77 -372
- package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +114 -309
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +66 -365
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +14 -316
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- 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 +70 -72
- 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.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js +24 -326
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +335 -534
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +7 -7
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +29 -329
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +4 -4
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +53 -355
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +95 -394
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +39 -8
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
- package/dist/shared/src/components/SyncButton/SyncButton.cjs.js +2 -2
- package/dist/shared/src/components/SyncButton/SyncButton.cjs.js.map +1 -1
- package/dist/shared/src/components/SyncButton/SyncButton.es.js +52 -165
- package/dist/shared/src/components/SyncButton/SyncButton.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +3 -3
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +35 -334
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +26 -122
- package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +22 -118
- package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +13 -13
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +99 -300
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +61 -262
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
- package/dist/shared/src/config/plannerFeatures.cjs.js.map +1 -1
- package/dist/shared/src/config/plannerFeatures.es.js.map +1 -1
- package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -1
- package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -210
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionIcon.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionIcon.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +51 -250
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +20 -323
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
- package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
- package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +151 -334
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +3 -3
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +27 -329
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +39 -236
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +65 -255
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +16 -317
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +61 -354
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +5 -5
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +20 -116
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +2 -306
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js +51 -147
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -202
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +9 -9
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -320
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +13 -217
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +22 -323
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +27 -307
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +10 -106
- package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -209
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
- 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 +74 -373
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +20 -324
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +6 -6
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +32 -338
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +3 -3
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +12 -318
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +11 -107
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +23 -228
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +27 -123
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.es.js +65 -245
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -309
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +145 -421
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +18 -317
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +24 -120
- package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +42 -331
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +227 -372
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +38 -341
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +22 -324
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +9 -105
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +21 -324
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js +16 -26
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js +2 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js.map +1 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js +14 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js.map +1 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +2 -15
- package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +62 -361
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +57 -356
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +14 -310
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js +34 -238
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +24 -18
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +26 -25
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +67 -163
- package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +18 -8
- package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +10 -106
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +13 -109
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.es.js +115 -284
- package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js +56 -177
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +46 -343
- package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableWidgets.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableWidgets.es.js.map +1 -1
- package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.es.js.map +1 -1
- package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js +3 -3
- package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js.map +1 -1
- package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js +170 -459
- package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js.map +1 -1
- package/dist/shared/src/containers/NewEntity/components/TypeEditor.cjs.js.map +1 -1
- package/dist/shared/src/containers/NewEntity/components/TypeEditor.es.js.map +1 -1
- package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js +1 -1
- package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js +117 -314
- package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +613 -883
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +6 -0
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +14 -8
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +289 -413
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +75 -375
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +32 -204
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +38 -124
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +7 -7
- package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +35 -131
- package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +97 -292
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +243 -441
- 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.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +156 -330
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -208
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +120 -420
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +71 -245
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js +3 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +83 -179
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +13 -317
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +59 -233
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +74 -248
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +147 -439
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +23 -197
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +32 -206
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +32 -332
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +135 -335
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +29 -203
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +36 -204
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +78 -282
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +31 -232
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +24 -198
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +43 -217
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +167 -467
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +41 -215
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js.map +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.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +14 -315
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +5 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +159 -441
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +5 -5
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +40 -332
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +9 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +47 -31
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +28 -9
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +58 -39
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js +22 -194
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +53 -25
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +150 -103
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +9 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +66 -57
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +3 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +52 -348
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +5 -5
- package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +77 -364
- package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +28 -202
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +37 -333
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +5 -5
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +130 -424
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +19 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +119 -196
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +5 -5
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -108
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js +6 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js +11 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js.map +1 -0
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +20 -217
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +231 -527
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
- package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/Slicer.es.js +69 -367
- package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +2 -2
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +18 -318
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +2 -2
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +24 -328
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
- 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 +69 -370
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +27 -228
- package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js +34 -236
- package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +5 -309
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +7 -311
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +11 -314
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +13 -316
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +34 -338
- package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +11 -316
- package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.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 +72 -368
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +24 -120
- package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +35 -336
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +55 -354
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +40 -335
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js +89 -287
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +17 -113
- package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +45 -141
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +22 -216
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
- package/dist/shared/src/containers/Views/types.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/types.es.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +47 -46
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
- package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonContext.es.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.es.js +19 -115
- package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
- package/dist/shared/src/context/DeleteEntitiesContext.cjs.js +1 -1
- package/dist/shared/src/context/DeleteEntitiesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DeleteEntitiesContext.es.js +1 -1
- package/dist/shared/src/context/DeleteEntitiesContext.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +66 -362
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/EntityUpdatesContext.cjs.js +1 -1
- package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/EntityUpdatesContext.es.js +61 -358
- package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.es.js +42 -344
- package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.es.js +1 -1
- package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.es.js +26 -231
- package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.es.js +23 -324
- package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
- package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +1 -1
- package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ThumbnailUploaderContext.es.js +17 -21
- package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
- package/dist/shared/src/context/UriContext.cjs.js +1 -1
- package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
- package/dist/shared/src/context/UriContext.es.js +2 -2
- package/dist/shared/src/context/UriContext.es.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.es.js +28 -229
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -208
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +11 -314
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.es.js +30 -333
- package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
- package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
- package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +19 -115
- package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -212
- package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
- package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js +1 -1
- package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
- package/dist/shared/src/util/buildHierarchicalTableRows.es.js +36 -33
- package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
- package/dist/shared/src/util/checkName.cjs.js.map +1 -1
- package/dist/shared/src/util/checkName.es.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
- package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
- package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
- package/dist/shared/src/util/getBundleMode.cjs.js +1 -1
- package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -1
- package/dist/shared/src/util/getBundleMode.es.js +16 -112
- package/dist/shared/src/util/getBundleMode.es.js.map +1 -1
- package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
- package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
- package/dist/shared/src/util/getPriorityOptions.cjs.js.map +1 -1
- package/dist/shared/src/util/getPriorityOptions.es.js.map +1 -1
- package/dist/shared/src/util/iconUtils.cjs.js.map +1 -1
- package/dist/shared/src/util/iconUtils.es.js.map +1 -1
- package/dist/shared/src/util/mentionTypeOptions.cjs.js +2 -0
- package/dist/shared/src/util/mentionTypeOptions.cjs.js.map +1 -0
- package/dist/shared/src/util/mentionTypeOptions.es.js +16 -0
- package/dist/shared/src/util/mentionTypeOptions.es.js.map +1 -0
- package/dist/shared/src/util/parseFilename.cjs.js +2 -0
- package/dist/shared/src/util/parseFilename.cjs.js.map +1 -0
- package/dist/shared/src/util/parseFilename.es.js +8 -0
- package/dist/shared/src/util/parseFilename.es.js.map +1 -0
- package/dist/shared/src/util/uriUtils.cjs.js.map +1 -1
- package/dist/shared/src/util/uriUtils.es.js.map +1 -1
- package/dist/types/api/base/index.d.ts +1 -1
- package/dist/types/api/generated/graphql.d.ts +76 -2
- package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
- package/dist/types/api/queries/activities/getActivities.d.ts +32 -2
- package/dist/types/api/queries/activities/getCategories.d.ts +1 -1
- package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +1 -1
- package/dist/types/api/queries/entities/getEntity.d.ts +16 -1
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +16 -1
- package/dist/types/api/queries/entities/updateEntity.d.ts +16 -1
- package/dist/types/api/queries/entityLists/getLists.d.ts +319 -305
- package/dist/types/api/queries/overview/getOverview.d.ts +49 -18
- package/dist/types/api/queries/project/getProject.d.ts +76 -61
- package/dist/types/api/queries/system/getSystem.d.ts +1 -1
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +16 -1
- package/dist/types/api/queries/users/getUsers.d.ts +16 -1
- package/dist/types/api/queries/versions/getVersionsProducts.d.ts +32 -2
- package/dist/types/api/queries/views/getViews.d.ts +1 -1
- package/dist/types/components/DetailsPanelDetails/DetailsSection.d.ts +1 -1
- package/dist/types/components/Menu/Menu.d.ts +1 -1
- package/dist/types/components/Menu/MenuList.d.ts +1 -1
- package/dist/types/components/Powerpack/PowerpackButton.d.ts +1 -1
- package/dist/types/components/ProjectTableSettings/ColumnsSettings.d.ts +1 -1
- package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +2 -2
- package/dist/types/components/ProjectTableSettings/TableSettingsFallback.d.ts +1 -1
- package/dist/types/components/RemotePage/ProjectPageRemote.d.ts +1 -1
- package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +4 -2
- package/dist/types/components/RenameForm/RenameForm.d.ts +1 -1
- package/dist/types/components/ReviewablesList/SortableReviewableCard.d.ts +1 -1
- package/dist/types/components/ReviewablesList/useReviewablesUpload.d.ts +2 -2
- package/dist/types/components/ReviewablesSelector/Card.d.ts +1 -1
- package/dist/types/components/SearchFilter/filterScopeRegistry.d.ts +1 -1
- package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
- package/dist/types/components/SettingsPanel/SettingsPanel.d.ts +1 -1
- package/dist/types/components/SubtasksManager/SubtasksManagerWrapper.d.ts +4 -1
- package/dist/types/components/SyncButton/SyncButton.d.ts +1 -1
- package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +1 -2
- package/dist/types/config/plannerFeatures.d.ts +1 -1
- package/dist/types/config/powerpackFeatures.d.ts +1 -1
- package/dist/types/containers/Actions/Actions.d.ts +2 -2
- package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +1 -1
- package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +1 -1
- package/dist/types/containers/DetailsPanel/DetailsPanel.d.ts +1 -1
- package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.d.ts +2 -2
- package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.d.ts +1 -1
- package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.d.ts +2 -2
- package/dist/types/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.d.ts +1 -1
- package/dist/types/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.d.ts +3 -3
- package/dist/types/containers/DetailsPanel/containers/DetailsPanelSubtasks.d.ts +1 -1
- package/dist/types/containers/DetailsPanel/helpers/buildEntityTypeIcons.d.ts +1 -1
- package/dist/types/containers/DetailsPanel/helpers/getEntityPathData.d.ts +1 -1
- package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +1 -1
- package/dist/types/containers/DetailsPanel/hooks/useGetEntityPath.d.ts +1 -1
- package/dist/types/containers/EntityPickerDialog/components/EntityTypeTable.d.ts +1 -1
- package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
- package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +1 -1
- package/dist/types/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.d.ts +1 -1
- package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.styled.d.ts +2 -2
- package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +1 -1
- package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.styled.d.ts +1 -1
- package/dist/types/containers/Feed/components/CommentInput/modules/index.d.ts +1 -1
- package/dist/types/containers/Feed/components/CommentInput/quillFormats.d.ts +1 -0
- package/dist/types/containers/Feed/components/CommentInput/types.d.ts +1 -12
- package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +1 -1
- package/dist/types/containers/Feed/context/FeedContext.d.ts +1 -1
- package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +1 -0
- package/dist/types/containers/Feed/hooks/useLastVersionReview.d.ts +1 -1
- package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +1 -1
- package/dist/types/containers/Feed/mentionHelpers/getMentionUsers.d.ts +1 -1
- package/dist/types/containers/Feed/mentionHelpers/getMentionVersions.d.ts +2 -2
- package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/constants.d.ts +3 -0
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -3
- package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +4 -5
- package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +2 -2
- package/dist/types/containers/ProjectTreeTable/hooks/useMoveEntities.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/hooks/usePasteLinks.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +6 -5
- package/dist/types/containers/ProjectTreeTable/utils/getEntityViewerIds.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/utils/sanitizeQueryFilter.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/widgets/LinksWidget.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/widgets/NameWidget.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/widgets/SubtasksWidget.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/widgets/wrapMode.d.ts +2 -0
- package/dist/types/containers/Slicer/components/Slicer.d.ts +2 -2
- package/dist/types/containers/Slicer/components/SlicerDropdownFallback.d.ts +1 -1
- package/dist/types/containers/Slicer/context/SlicerContext.d.ts +3 -4
- package/dist/types/containers/Slicer/hooks/useEntityListsSlice.d.ts +1 -1
- package/dist/types/containers/Slicer/hooks/useHierarchyContextMenuItems.d.ts +3 -3
- package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +1 -1
- package/dist/types/containers/Slicer/hooks/useSlicerCounts.d.ts +1 -1
- package/dist/types/containers/Slicer/hooks/useUsersTable.d.ts +1 -1
- package/dist/types/containers/Slicer/types.d.ts +1 -1
- package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
- package/dist/types/containers/Views/hooks/pages/useListsViewSettings.d.ts +1 -1
- package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +1 -1
- package/dist/types/containers/Views/types.d.ts +1 -1
- package/dist/types/context/AddonContext.d.ts +1 -1
- package/dist/types/context/AddonProjectContext.d.ts +2 -2
- package/dist/types/context/DetailsPanelContext.d.ts +2 -2
- package/dist/types/context/SubtasksModulesContext.d.ts +1 -1
- package/dist/types/hooks/useHierarchyTable.d.ts +1 -1
- package/dist/types/util/buildHierarchicalTableRows.d.ts +3 -1
- package/dist/types/util/columnConfigConverter.d.ts +1 -1
- package/dist/types/util/getBundleMode.d.ts +1 -1
- package/dist/types/util/getGroupByDataType.d.ts +1 -1
- package/dist/types/util/index.d.ts +2 -0
- package/dist/types/util/mentionTypeOptions.d.ts +12 -0
- package/dist/types/util/parseFilename.d.ts +1 -0
- package/dist/types/util/uriUtils.d.ts +1 -1
- package/dist/util.cjs.js +1 -1
- package/dist/util.es.js +24 -20
- package/dist/util.es.js.map +1 -1
- package/package.json +1 -1
- package/dist/shared/src/components/ThumbnailSimple/index.cjs.js +0 -2
- package/dist/shared/src/components/ThumbnailSimple/index.cjs.js.map +0 -1
- package/dist/shared/src/components/ThumbnailSimple/index.es.js +0 -6
- package/dist/shared/src/components/ThumbnailSimple/index.es.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectTreeTable.es.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, CSSProperties, useCallback, UIEventHandler, FC } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Table,\n Header,\n HeaderGroup,\n RowData,\n ExpandedState,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n isEntityExpandable,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport { RowDragHandleCellContent, ColumnHeaderMenu } from './components'\nimport { TableFooterRow } from './components/TableFooterRow'\nimport type { FieldStats } from '@shared/api'\nimport { getCommonPinningStyles, getColumnWidth } from './utils/pinningUtils'\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\nimport { InfoMessage, FilterErrorActions } from '@shared/components'\nimport HeaderActionButton from './components/HeaderActionButton'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\nimport { useMenuContext } from '../../context/MenuContext'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from './constants'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport useCellContextMenu, {\n HeaderLabel,\n ContextMenuItemConstructors,\n} from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\nimport useDynamicRowHeight from './hooks/useDynamicRowHeight'\n\nimport { useProjectDataContext } from '@shared/containers'\n\n// Utility function imports\nimport { isGroupId } from './hooks/useBuildGroupByTableData'\nimport { CellId, getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { isEntityRestricted, isTargetReadOnly } from './utils/restrictedEntity'\nimport { createPortal } from 'react-dom'\nimport { Button, Icon } from '@ynput/ayon-react-components'\nimport {\n ProjectTableAttribute,\n BuiltInFieldOptions,\n MainCountLabels,\n SummaryCellContentProps,\n} from './types'\nimport { EnumItem } from '@shared/api'\nimport { ToggleExpandAll, useProjectTableContext, parseRowId } from './context/ProjectTableContext'\nimport {\n checkColumnVisibility,\n ensureAtLeastOneVisibleColumn,\n getEntityViewierIds,\n getReadOnlyLists,\n getTableFieldOptions,\n isFilterError,\n getFilterErrorMessage,\n getEntitiesLabelFromScopes,\n extractQueryErrorMessage,\n} from './utils'\nimport { EntityUpdate } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n useDndContext,\n type UniqueIdentifier,\n // Removed: DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, DragEndEvent, DragStartEvent, Active, Over, useSensor, useSensors\n} from '@dnd-kit/core'\nimport type { NewEntityOpenConfig } from '@shared/containers/NewEntity'\n// import { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport {\n SortableContext,\n verticalListSortingStrategy,\n useSortable,\n horizontalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { useProjectContext, usePowerpack, setDetailsPanelTabForScope } from '@shared/context'\nimport { useLoadModule } from '@shared/hooks'\nimport { EDIT_TRIGGER_CLASS } from './widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { upperFirst } from 'lodash'\nimport { ColumnsConfig } from './types/columnConfig'\n\ntype CellUpdate = (\n entity: Omit<EntityUpdate, 'id'> & { id?: string },\n config?: { selection?: string[] },\n) => Promise<void>\n\n// rendered while the powerpack summaries remote is unavailable (no license / old addon)\nconst SummaryCellContentFallback: FC<SummaryCellContentProps> = () => null\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: CellUpdate\n toggleExpandAll?: ToggleExpandAll\n selection?: string[]\n columnsConfig?: ColumnsConfig\n loadingLinksEntityIds?: Set<string>\n }\n}\n\nconst matchesColumnId = (id: string, subscribers: string[]) => {\n return subscribers.some((sub) => {\n if (sub.includes('*')) {\n // Escape all regex special characters\n const escaped = sub.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n // Replace escaped '*' (\\*) with regex '.*'\n const pattern = '^' + escaped.replace(/\\\\\\*/g, '.*') + '$'\n const regex = new RegExp(pattern)\n return regex.test(id)\n }\n return id === sub\n })\n}\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n onScrollBottom?: React.HTMLAttributes<HTMLDivElement>['onScroll']\n onOpenNew?: (type: 'folder' | 'task', config?: NewEntityOpenConfig) => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n includeLinks?: boolean\n isLoading?: boolean\n isExpandable?: boolean // if true, show the expand/collapse icons\n enableSorting?: boolean\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n columnsConfig?: ColumnsConfig // Configure column behavior (display, styling, etc.)\n showColumnSummaries?: boolean // render the fixed summary footer row\n fieldStats?: FieldStats[] // primary-entity stats (tasks/versions) feeding the footer\n groupFieldStats?: FieldStats[] // group-entity stats (folders/products) for the 'all' row scope\n fieldStatsLoading?: boolean // footer stats still loading - click-through shimmer over values\n fieldStatsError?: any // error fetching footer stats\n mainCountLabels?: MainCountLabels // labels for the main cell dual count (defaults folders/tasks)\n onScrollBottomGroupBy?: (groupValue: string) => void // Handle scroll to bottom for grouped data\n contextMenuItems?: ContextMenuItemConstructors // Additional context menu items to merge with defaults\n onColumnVisibleChange?: (changes: Record<string, boolean>) => void\n onColumnVisibleChangeSubscribed?: string[]\n // called whenever the set of rows currently rendered in the viewport changes\n // (entity ids, not row ids - group suffixes are stripped)\n onVisibleRowsChange?: (entityIds: string[]) => void\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n onScroll,\n onScrollBottom, // when the user scrolls to the bottom of the table, this callback is called\n onOpenNew,\n readOnly,\n excludedColumns,\n excludedSorting,\n extraColumns,\n includeLinks,\n isLoading: isLoadingProp,\n isExpandable,\n enableSorting = true,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n columnsConfig,\n showColumnSummaries = false,\n fieldStats,\n groupFieldStats,\n fieldStatsLoading,\n fieldStatsError,\n mainCountLabels,\n onScrollBottomGroupBy, // Destructure new prop for group-by load more\n contextMenuItems: propsContextMenuItems, // Additional context menu items from props\n onColumnVisibleChange,\n onColumnVisibleChangeSubscribed,\n onVisibleRowsChange,\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n setAllColumns,\n sorting,\n sortingOnChange,\n columnPinningOnChange,\n columnSizingOnChange,\n defaultColumnVisibility,\n columnVisibilityOnChange,\n columnOrderOnChange,\n groupBy,\n columnSummaries,\n updateColumnSummary,\n columnSummaryScopes,\n updateColumnSummaryScope,\n columnSummaryFormats,\n updateColumnSummaryFormat,\n } = useColumnSettingsContext()\n const { productTypes, projectName, ...projectInfo } = useProjectContext()\n\n const {\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n softError,\n softErrorAction,\n isInitialized,\n expanded,\n updateExpanded,\n toggleExpandAll,\n showHierarchy,\n isFlatFolderView,\n fetchNextPage,\n scopes, // or entityTypes\n getEntityById,\n onResetView,\n overrideGroupBy,\n loadingLinksEntityIds,\n queryFilters,\n } = useProjectTableContext()\n const isGrouping = !!groupBy || !!overrideGroupBy\n\n const filterError = isFilterError(error, queryFilters)\n const filterErrorMessage = getFilterErrorMessage(getEntitiesLabelFromScopes(scopes))\n\n // Parent (folder/product) summary scope only applies when those entities are\n // actually on screen: hierarchy view, grouping by a parent entity, or the\n // Products tab's product tree (product parent rows -> 'product' in scopes).\n const groupField = overrideGroupBy?.id ?? groupBy?.id\n const groupFieldId = Array.isArray(groupField) ? groupField[0] : groupField\n const parentScopeApplicable =\n showHierarchy ||\n ['hierarchy', 'folder', 'product'].includes(groupFieldId ?? '') ||\n scopes.includes('product')\n\n const { writableFields } = useProjectDataContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const {\n statuses = [],\n folderTypes = [],\n taskTypes = [],\n tags = [],\n linkTypes = [],\n } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, scopes, tags],\n )\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n // reference of how many rows are currently rendered in the table\n const tableRowsCountRef = useRef(0)\n\n // Selection context\n const { registerGrid } = useSelectionCellsContext()\n\n // generate loading attrib and rows\n const { loadingAttrib, loadingRows } = useMemo(() => {\n // count the number of children in tbody\n const tableRowsCount = tableContainerRef.current?.querySelectorAll('tbody tr').length || 0\n const loadingAttrib = generateDummyAttributes()\n const loadingRows = generateLoadingRows(\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, writableFields, readOnly),\n [attribFields, writableFields, readOnly],\n )\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities } = useCellEditing()\n\n const handleCellUpdate: CellUpdate = useCallback(\n async (entity, config) => {\n const { selection = [] } = config || {}\n const entitiesToUpdate: EntityUpdate[] = []\n if (!selection?.length) {\n entitiesToUpdate.push({ ...entity, id: entity.id || entity.rowId })\n } else {\n // if includeSelection is true, update all the selected cells with the same columnId\n const { field, value, isAttrib } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n // ignore row selection column\n if (colId === ROW_SELECTION_COLUMN_ID) continue\n\n const entity = getEntityById(rowId || '')\n if (!entity) {\n console.warn(`Entity with ID ${rowId} not found for cell update.`)\n continue\n }\n\n if ((!colId?.includes('attrib_') || colId?.replace('attrib_', '') === field) && rowId) {\n entitiesToUpdate.push({\n field: field,\n rowId: rowId,\n id: entity.entityId,\n value: value,\n isAttrib: isAttrib,\n type: entity.entityType,\n })\n }\n }\n }\n\n if (!entitiesToUpdate.length) {\n console.warn('No entities to update, skipping updateEntities call.')\n toast.warn('No entities to update.')\n return\n }\n\n await updateEntities(entitiesToUpdate, true)\n },\n [updateEntities, getEntityById, selectedCells],\n )\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n\n const getNameLabelHeader = () => {\n if (scopes.includes('version')) return 'Product / Version'\n return scopes.map((s) => upperFirst(s)).join(' / ')\n }\n\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n scopes,\n attribs: columnAttribs,\n links: linkTypes,\n includeLinks,\n showHierarchy,\n isFlatFolderView,\n options,\n extraColumns,\n excluded: excludedColumns,\n excludedSorting,\n groupBy,\n nameLabel: getNameLabelHeader(),\n })\n\n if (sortableRows && enableSorting) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [\n scopes,\n JSON.stringify(columnAttribs), // columnAttribs is unstable between renders\n showHierarchy,\n isFlatFolderView,\n isExpandable,\n options,\n linkTypes,\n includeLinks,\n extraColumns,\n excludedColumns,\n excludedSorting,\n sortableRows,\n enableSorting,\n groupBy,\n ])\n\n // Keep ColumnSettingsProvider's allColumns ref up to date\n useEffect(() => {\n const ids = columns.map((c) => c.id!).filter(Boolean)\n setAllColumns(ids)\n }, [columns, setAllColumns])\n\n const resolvedColumnVisibility = useMemo(() => {\n const merged = { ...columnVisibility }\n columns.forEach((col) => {\n // @ts-ignore\n const explicitVisible = col.visible\n if (col.id && merged[col.id] === undefined) {\n if (explicitVisible !== undefined) {\n merged[col.id] = explicitVisible\n } else {\n merged[col.id] = checkColumnVisibility({}, col.id, defaultColumnVisibility)\n }\n }\n })\n return ensureAtLeastOneVisibleColumn(merged, columns.map((c) => c.id as string).filter(Boolean))\n }, [columnVisibility, defaultColumnVisibility, columns])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => !!isExpandable || showHierarchy || isFlatFolderView || isGrouping,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n enableSorting,\n getSortedRowModel: getSortedRowModel(),\n sortDescFirst: false,\n manualSorting: !clientSorting,\n onSortingChange: sortingOnChange,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningOnChange,\n onColumnSizingChange: columnSizingOnChange,\n onColumnVisibilityChange: columnVisibilityOnChange,\n onColumnOrderChange: columnOrderOnChange,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility: resolvedColumnVisibility,\n columnOrder,\n },\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreRows: fetchNextPage,\n selection: Array.from(selectedCells),\n columnsConfig,\n loadingLinksEntityIds,\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n columnSizing,\n columnOrder,\n })\n\n // Track column visibility changes for subscribed columns\n const prevVisibleRef = useRef<Record<string, boolean>>({})\n const virtualItems = columnVirtualizer.getVirtualItems()\n\n // Subscribe to column visibility changes\n useEffect(() => {\n if (!onColumnVisibleChange || !onColumnVisibleChangeSubscribed?.length) return\n\n const visibleColumnIds = new Set(virtualItems.map((item) => visibleColumns[item.index]?.id))\n const changes: Record<string, boolean> = {}\n let hasChanged = false\n\n // We only care about columns that match the subscription patterns\n const subscribedColumns = table\n .getAllLeafColumns()\n .filter((col) => matchesColumnId(col.id, onColumnVisibleChangeSubscribed))\n\n subscribedColumns.forEach((col) => {\n const isVisible = visibleColumnIds.has(col.id)\n if (prevVisibleRef.current[col.id] !== isVisible) {\n changes[col.id] = isVisible\n hasChanged = true\n prevVisibleRef.current[col.id] = isVisible\n }\n })\n\n if (hasChanged) {\n onColumnVisibleChange(changes)\n }\n }, [virtualItems, onColumnVisibleChange, onColumnVisibleChangeSubscribed, visibleColumns, table])\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n // Summary footer is a powerpack feature.\n // popup hidden for now: also expose `setPowerpackDialog, isLoading: isLicenseLoading`\n const { powerLicense } = usePowerpack()\n const [RemoteSummaryCellContent, { isLoaded: isFooterLoaded, isLoading: isFooterModuleLoading }] =\n useLoadModule<FC<SummaryCellContentProps>>({\n addon: 'powerpack',\n remote: 'views',\n module: 'SummaryCellContent',\n fallback: SummaryCellContentFallback,\n skip: !showColumnSummaries || !powerLicense,\n })\n // Free-user upsell row hidden for now (too many power-feature prompts); keep for later.\n // Render the row as soon as the module is loading or loaded (not on load failure),\n // so skeletons show during the load instead of the row popping in late.\n const summariesEnabled =\n showColumnSummaries &&\n powerLicense &&\n (isFooterLoaded || isFooterModuleLoading) &&\n !!rows.length\n // Full skeleton only while the remote module itself is loading (no cell to\n // render yet). Stats loading is handled per-cell so the footer stays clickable.\n const footerModuleLoading = isFooterModuleLoading || !isFooterLoaded\n\n // Unique selected entities for the footer's \"N selected\" count, deduped by\n // entityId (group headers / load-more rows excluded). Marked cells win: when\n // any cell is selected we count only those and ignore checkbox row-selection;\n // whole-row selection counts on its own.\n const selectedRowCount = useMemo(() => {\n const cellEntities = new Set<string>()\n const rowEntities = new Set<string>()\n for (const cellId of selectedCells) {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || isGroupId(rowId)) continue\n\n const id = getEntityById(rowId)?.entityId\n if (!id) continue\n if (colId === ROW_SELECTION_COLUMN_ID) rowEntities.add(id)\n else cellEntities.add(id)\n }\n return cellEntities.size || rowEntities.size\n }, [selectedCells, getEntityById])\n // only show the upsell once the license check resolves, so licensed users\n // don't see the bolt flash before the addon loads\n // const showSummaryPowerFeature = !isLicenseLoading && !powerLicense\n\n // Calculate dynamic row height based on user setting from Customize panel\n const { getRowHeight, defaultRowHeight } = useDynamicRowHeight()\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, EnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n // Get column IDs for drag-and-drop from context columnOrder (exclude non-draggable columns)\n // This ensures SortableContext items match what the drag handlers use\n const columnOrderIds = useMemo(() => {\n return columnOrder.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n }, [columnOrder])\n\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const combinedScrollHandler: UIEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n // Call the original onScroll if provided\n onScroll?.(e)\n\n if (onScrollBottom) {\n const containerRefElement = e.currentTarget\n // When not grouping (or when hierarchy+slicer relies on tasksList), we trigger standard fetchNextPage\n // The table itself handles showing tasks.\n if (containerRefElement && !groupBy && (!showHierarchy || !isFlatFolderView)) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n //once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n if (scrollHeight - scrollTop - clientHeight < 500 && !isLoading) {\n onScrollBottom(e)\n }\n }\n }\n\n // Handle scroll-to-bottom for grouped data\n if (onScrollBottomGroupBy && groupBy) {\n const containerRefElement = e.currentTarget\n // look for a load more button\n const loadMoreButton = containerRefElement?.querySelector('.load-more')\n // get load more button id\n const loadMoreButtonId = loadMoreButton?.getAttribute('id')\n const groupValue = loadMoreButtonId?.split('-')[2] // assuming the id is in the format 'load-more-groupValue'\n if (groupValue) {\n onScrollBottomGroupBy(groupValue)\n }\n }\n },\n [onScroll, onScrollBottom, onScrollBottomGroupBy, showHierarchy, groupBy, isLoading],\n )\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n visibleColumns={visibleColumns}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={combinedScrollHandler}\n {...pt?.container}\n data-column-dnd-container\n className={clsx(\n 'table-container',\n {\n resizing: table.getState().columnSizingInfo.isResizingColumn,\n },\n pt?.container?.className,\n )}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n cursor: table.getState().columnSizingInfo.isResizingColumn ? 'col-resize' : undefined,\n // stretch tbody to the container so the column dividers fill the empty\n // space below the rows; also pins the summary footer to the bottom\n minHeight: '100%',\n gridTemplateRows: 'auto 1fr auto',\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n columnOrderIds={columnOrderIds}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n isFilterError={filterError}\n filterErrorMessage={filterErrorMessage}\n isLoading={isLoading}\n isGrouping={isGrouping}\n getRowHeight={getRowHeight}\n defaultRowHeight={defaultRowHeight}\n onResetView={onResetView}\n contextMenuItems={propsContextMenuItems}\n onVisibleRowsChange={onVisibleRowsChange}\n />\n {summariesEnabled && !error && (\n <TableFooterRow\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={footerModuleLoading}\n statsLoading={!!fieldStatsLoading}\n error={fieldStatsError}\n // Free-user upsell hidden for now; keep for later:\n // onClick={showSummaryPowerFeature ? () => setPowerpackDialog('columnSummaries') : undefined}\n renderCellContent={(columnId) => (\n <RemoteSummaryCellContent\n columnId={columnId}\n attribs={attribFields}\n fieldStats={fieldStats}\n groupFieldStats={groupFieldStats}\n calc={columnSummaries[columnId]}\n onCalcChange={(calc) => updateColumnSummary(columnId, calc)}\n format={columnSummaryFormats[columnId]}\n onFormatChange={(format) => updateColumnSummaryFormat(columnId, format)}\n scope={columnSummaryScopes[columnId]}\n onScopeChange={(scope) => updateColumnSummaryScope(columnId, scope)}\n mainCountLabels={mainCountLabels}\n fieldOptions={options}\n parentScopeApplicable={parentScopeApplicable}\n selectedCount={selectedRowCount}\n />\n )}\n // Power feature cell for community users (hidden for now), shows a bolt hint in the name column:\n // renderCellContent={(columnId) =>\n // showSummaryPowerFeature && columnId === 'name' ? (\n // <Styled.SummaryPowerFeature>\n // <Icon icon=\"bolt\" filled />\n // Summaries\n // </Styled.SummaryPowerFeature>\n // ) : null\n // }\n />\n )}\n </table>\n </Styled.TableContainer>\n {softError && (\n <Styled.SoftErrorBanner>\n <InfoMessage variant=\"warning\" message={softError} action={softErrorAction} />\n </Styled.SoftErrorBanner>\n )}\n </Styled.TableWrapper>\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: defaultRowHeight,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n <ColumnDragOverlay table={table} />\n </>\n )\n } else {\n return (\n <>\n {tableUiContent}\n <ColumnDragOverlay table={table} />\n </>\n )\n }\n}\n\n/**\n * Isolated component for column drag overlay.\n * This prevents the entire table from re-rendering on every drag frame.\n */\ninterface ColumnDragOverlayProps {\n table: Table<TableRow>\n}\n\nconst ColumnDragOverlay = ({ table }: ColumnDragOverlayProps) => {\n const { active } = useDndContext()\n\n // Only process if dragging a column\n const isColumnDrag = active?.data?.current?.type === 'column'\n const activeColumnId = isColumnDrag ? (active?.id as string) : null\n\n const draggedColumnHeader = useMemo(() => {\n if (!activeColumnId) return null\n return table.getHeaderGroups()[0]?.headers.find((h) => h.id === activeColumnId) || null\n }, [activeColumnId, table])\n\n if (!activeColumnId || !draggedColumnHeader) return null\n\n return createPortal(\n <DragOverlay dropAnimation={null}>\n <Styled.HeaderCell\n style={{\n width: draggedColumnHeader.column.getSize(),\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n display: 'flex',\n alignItems: 'center',\n minHeight: 34,\n }}\n >\n <Styled.TableCellContent className=\"bold header\">\n {flexRender(\n draggedColumnHeader.column.columnDef.header,\n draggedColumnHeader.getContext(),\n )}\n </Styled.TableCellContent>\n </Styled.HeaderCell>\n </DragOverlay>,\n document.body,\n )\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n columnOrderIds: string[]\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n columnOrderIds={columnOrderIds}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n columnOrderIds: string[]\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n const { active } = useDndContext()\n const isColumnDrag = active?.data?.current?.type === 'column'\n const isDraggedColumnPinned = isColumnDrag && (active?.data?.current?.isPinned ?? false)\n\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n <SortableContext items={columnOrderIds} strategy={horizontalListSortingStrategy}>\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n // Exclude certain columns from being draggable\n const isDraggable =\n header.id !== DRAG_HANDLE_COLUMN_ID && header.id !== ROW_SELECTION_COLUMN_ID\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n isDraggable={isDraggable}\n isColumnDrag={isColumnDrag}\n isDraggedColumnPinned={isDraggedColumnPinned}\n />\n )\n })}\n </SortableContext>\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n isDraggable?: boolean\n isColumnDrag?: boolean\n isDraggedColumnPinned?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n isDraggable = true,\n isColumnDrag,\n isDraggedColumnPinned,\n}: TableHeadCellProps) => {\n const { column } = header\n const sorting = column.getIsSorted()\n const menuId = `column-header-menu-${column.id}`\n const { menuOpen } = useMenuContext()\n const isOpen = menuOpen === menuId\n const { columnPinning, sorting: sortingState, updateSorting } = useColumnSettingsContext()\n\n // toggle sort via the same direct updateSorting call the Customize panel uses;\n // routing through TanStack's onSortingChange did not apply under manualSorting.\n const handleToggleSort = () => {\n const current = sortingState?.find((s) => s.id === column.id)\n const next = !current\n ? [{ id: column.id, desc: false }]\n : !current.desc\n ? [{ id: column.id, desc: true }]\n : []\n updateSorting(next)\n }\n\n // Check if this column is pinned\n const isThisColumnPinned = columnPinning.left?.includes(column.id) || false\n\n // useSortable for column drag-and-drop\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: column.id,\n data: { type: 'column', isPinned: isThisColumnPinned },\n disabled: !isDraggable,\n })\n\n const isDraggingInSameSection = isColumnDrag && isDraggedColumnPinned === isThisColumnPinned\n\n // Build drag styles\n const getDragStyle = (): CSSProperties => {\n if (isDragging) {\n return {\n transform: CSS.Translate.toString(transform!),\n transition,\n visibility: 'hidden',\n zIndex: 200,\n }\n }\n if (isDraggingInSameSection && transform) {\n // For pinned columns, temporarily remove sticky positioning during drag animation\n const pinnedOverride = isThisColumnPinned\n ? { position: 'relative' as const, left: 'auto' }\n : {}\n return { transform: CSS.Translate.toString(transform), transition, ...pinnedOverride }\n }\n return {}\n }\n\n // Prevent drag when clicking action buttons\n const preventDragFromActions = {\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: React.MouseEvent) => e.stopPropagation(),\n }\n\n return (\n <Styled.HeaderCell\n ref={setNodeRef}\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n resizing: column.getIsResizing(),\n dragging: isDragging,\n draggable: isDraggable,\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth(column.id),\n ...getDragStyle(),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent\n className={clsx('bold', 'header')}\n {...(isDraggable ? { ...attributes, ...listeners } : {})}\n >\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\" $isOpen={isOpen} {...preventDragFromActions}>\n {/* Column drag handle */}\n\n {(canHide || canPin || canSort) && (\n <ColumnHeaderMenu\n className=\"header-menu\"\n header={header}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n isResizing={column.getIsResizing()}\n menuId={menuId}\n isOpen={isOpen}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon=\"sort\"\n className={clsx('sort-button', { visible: sorting })}\n style={{\n transform: sorting === 'desc' ? 'rotate(180deg) scaleX(-1)' : 'none',\n }}\n onClick={handleToggleSort}\n selected={!!column.getIsSorted()}\n />\n )}\n\n {/* COLUMN PINNING - only show on pinned columns (exclude selection column) */}\n {column.getIsPinned() &&\n column.id !== ROW_SELECTION_COLUMN_ID &&\n column.id !== DRAG_HANDLE_COLUMN_ID && (\n <HeaderActionButton\n icon=\"push_pin\"\n className={clsx('pin-button', 'visible')}\n onClick={() => column.pin(false)}\n selected\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: (e: React.MouseEvent) => {\n e.stopPropagation()\n header.getResizeHandler()(e)\n },\n onTouchStart: header.getResizeHandler(),\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task', config?: NewEntityOpenConfig) => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n isFilterError?: boolean\n filterErrorMessage?: string\n isLoading: boolean\n isGrouping: boolean\n getRowHeight: (row: TableRow) => number\n defaultRowHeight: number\n onResetView?: () => void\n contextMenuItems?: ContextMenuItemConstructors\n onVisibleRowsChange?: (entityIds: string[]) => void\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n isFilterError: filterError,\n filterErrorMessage,\n isLoading,\n isGrouping,\n getRowHeight,\n defaultRowHeight,\n onResetView,\n contextMenuItems,\n onVisibleRowsChange,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const cellContextMenuHook = useCellContextMenu({\n attribs,\n onOpenNew,\n headerLabels,\n contextMenuItems,\n })\n\n const handleTableBodyContextMenu = cellContextMenuHook.handleTableBodyContextMenu\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: (index) => {\n // Calculate dynamic row height based on specific row data\n const row = rows[index]\n return row ? getRowHeight(row.original) : defaultRowHeight\n },\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Notify the consumer whenever the set of rendered (visible) entity ids changes,\n // so data fetching can be scoped to what's actually on screen. Only fires when\n // the resolved id list actually differs, to avoid spamming updates on every\n // render (rowVirtualizer.getVirtualItems() returns a new array each call).\n const prevVisibleRowIdsRef = useRef<string>('')\n useEffect(() => {\n if (!onVisibleRowsChange) return\n\n const ids = virtualRows\n .map((virtualRow) => rows[virtualRow.index] && parseRowId(rows[virtualRow.index].id))\n .filter(Boolean) as string[]\n const uniqueIds = Array.from(new Set(ids))\n const key = uniqueIds.join(',')\n\n if (key === prevVisibleRowIdsRef.current) return\n prevVisibleRowIdsRef.current = key\n\n onVisibleRowsChange(uniqueIds)\n }, [virtualRows, rows, onVisibleRowsChange])\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n // vertical column lines painted behind the rows so they extend into the empty\n // space between the last row and the summary footer\n const visibleLeafColumns = table.getVisibleLeafColumns()\n const columnDividerLefts = useMemo(() => {\n const lefts: string[] = []\n const sizeVars: string[] = []\n for (let i = 0; i < visibleLeafColumns.length - 1; i++) {\n const column = visibleLeafColumns[i]\n // selection column is forced to 20px in CSS while its size var reports defaultColumn.minSize\n sizeVars.push(column.id === ROW_SELECTION_COLUMN_ID ? '20' : `var(--col-${column.id}-size)`)\n lefts.push(`calc((${sizeVars.join(' + ')}) * 1px)`)\n }\n return lefts\n }, [visibleLeafColumns])\n\n const tbodyContent = (\n <tbody\n style={{\n minHeight: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n >\n <Styled.ColumnDividers aria-hidden>\n {columnDividerLefts.map((left, i) => (\n <div key={i} style={{ left }} />\n ))}\n </Styled.ColumnDividers>\n {virtualRows.map((virtualRow) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id} // stable per-row identity; dnd-kit matches on row.id via SortableContext, not this key\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n isGrouping={isGrouping}\n rowHeight={getRowHeight(row.original)}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n {filterError ? (\n <EmptyPlaceholder message={filterErrorMessage} icon=\"filter_alt_off\">\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset filters\"\n icon=\"replay\"\n onClick={onResetView}\n />\n )}\n <FilterErrorActions errorMessage={extractQueryErrorMessage(error)} />\n </EmptyPlaceholder>\n ) : (\n <EmptyPlaceholder message=\"No items found\" error={error}>\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset filters\"\n icon=\"replay\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n )}\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (!rows.length && !isLoading) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\">\n {onResetView && (\n <Button variant=\"filled\" label=\"Reset filters\" icon=\"replay\" onClick={onResetView} />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n isGrouping: boolean\n rowHeight: number\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n isGrouping = false,\n rowHeight,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n // Track actual DOM element node\n const rowHtmlElementRef = useRef<HTMLTableRowElement | null>(null)\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n rowHtmlElementRef.current = node\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: rowHeight, // Use dynamic row height\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={cell.id}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: rowHeight,\n pointerEvents: 'all',\n cursor: 'grab',\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n rowHeight={rowHeight}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n rowHeight?: number\n}\n\nconst TD = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n rowHeight,\n ...props\n}: TableCellProps) => {\n const { getEntityById, onOpenPlayer } = useProjectTableContext()\n\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n focusCell,\n getCellBorderClasses,\n clearSelection,\n selectedCells,\n setSelectedCells,\n setAnchorCell,\n setFocusedCellId,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing, setEditingCellId, editingCellId } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n const isMultipleSelected = selectedCells.size > 1\n\n return (\n <Styled.TD\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n expandable:\n !!cell.row.originalSubRows && isEntityExpandable(cell.row.original.entityType),\n 'multiple-selected': isMultipleSelected,\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n height: rowHeight,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // check we are not clicking in a dropdown\n if (target.closest('.options')) return\n\n e.currentTarget.focus()\n\n // Handle double-click via e.detail (browser's native click count).\n // We handle it here in mousedown instead of relying on the dblclick event,\n // because the 1st mousedown triggers React state updates that can replace\n // the DOM node, preventing the native dblclick event from firing.\n if (e.detail === 2) {\n // comments cells are read-only but their double-click opens the details panel, so don't block them here\n const isReadOnly = isTargetReadOnly(e) && cell.column.id !== 'comments'\n if (isReadOnly || isEntityRestricted(cell.row.original.entityType) || isGroup) {\n e.preventDefault()\n return\n }\n\n // name column: select row to open details panel\n // comments column: same — comments are read and written in the details panel feed\n if (['name', 'comments'].includes(cell.column.id) && !target.closest('.expander')) {\n // all ProjectTreeTable pages render their details panel under the 'overview' scope\n if (cell.column.id === 'comments') setDetailsPanelTabForScope('overview', 'feed')\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n const additive = e.metaKey || e.ctrlKey\n const position = parseCellId(rowSelectionCellId)\n\n setSelectedCells((prev) => {\n const newSelection = additive ? new Set(prev) : new Set<CellId>()\n newSelection.add(rowSelectionCellId)\n newSelection.add(cellId)\n return newSelection\n })\n if (position) {\n setAnchorCell(position)\n setFocusedCellId(rowSelectionCellId)\n }\n }\n // thumbnail: open viewer\n else if (cell.column.id === 'thumbnail') {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.row.original.entityId || cell.row.id)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n }\n // other cells: start editing\n else {\n setEditingCellId(cellId)\n }\n\n e.preventDefault()\n return\n }\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n // check if this is a restricted entity - prevent editing\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // if clicking on an edit trigger, start editing\n if (target.closest('.' + EDIT_TRIGGER_CLASS) && !isRestricted) {\n // Select the cell first if not already selected\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n setEditingCellId(cellId)\n return\n }\n\n // If there's an active edit on a different cell, blur it first to save changes\n if (editingCellId && editingCellId !== cellId) {\n // Find the currently editing input and blur it\n const editingInput = document.querySelector(\n `#${editingCellId} input, #${editingCellId} [role=\"textbox\"]`,\n ) as HTMLElement\n if (editingInput) {\n editingInput.blur()\n // Wait a tick for the blur event to process and save\n setTimeout(() => {\n proceedWithSelection()\n }, 0)\n return\n }\n }\n\n proceedWithSelection()\n\n function proceedWithSelection() {\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n startSelection(cellId, additive)\n }\n\n // Prevent default browser behavior to ensure focus stays on the cell\n e.preventDefault()\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // check not selecting am edit trigger\n const target = e.target as HTMLElement\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) return\n\n // Left button is pressed during mouse move - drag selection\n // Note: extendSelection is always called to allow drag to continue through cells\n // Restricted cells will be filtered out later\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n // Double-click is primarily handled in onMouseDown via e.detail === 2.\n // Prevent default to avoid text selection on double-click.\n e.preventDefault()\n }}\n onContextMenu={(e) => {\n e.preventDefault()\n // if the cell is not selected, select it and deselect all others\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n }\n }}\n onKeyDown={() => {\n // keyboard events are handled in useKeyboardNavigation hook\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TD>\n )\n}\n"],"names":["SummaryCellContentFallback","matchesColumnId","id","subscribers","sub","pattern","ProjectTreeTable","scope","sliceId","onScroll","onScrollBottom","onOpenNew","readOnly","excludedColumns","excludedSorting","extraColumns","includeLinks","isLoadingProp","isExpandable","enableSorting","clientSorting","sortableRows","onRowReorder","dndActiveId","columnsConfig","showColumnSummaries","fieldStats","groupFieldStats","fieldStatsLoading","fieldStatsError","mainCountLabels","onScrollBottomGroupBy","propsContextMenuItems","onColumnVisibleChange","onColumnVisibleChangeSubscribed","onVisibleRowsChange","pt","props","columnVisibility","columnPinning","columnOrder","columnSizing","setAllColumns","sorting","sortingOnChange","columnPinningOnChange","columnSizingOnChange","defaultColumnVisibility","columnVisibilityOnChange","columnOrderOnChange","groupBy","columnSummaries","updateColumnSummary","columnSummaryScopes","updateColumnSummaryScope","columnSummaryFormats","updateColumnSummaryFormat","useColumnSettingsContext","productTypes","projectName","projectInfo","useProjectContext","tableData","attribFields","entitiesMap","users","isLoadingData","error","softError","softErrorAction","isInitialized","expanded","updateExpanded","toggleExpandAll","showHierarchy","isFlatFolderView","fetchNextPage","scopes","getEntityById","onResetView","overrideGroupBy","loadingLinksEntityIds","queryFilters","useProjectTableContext","isGrouping","filterError","isFilterError","filterErrorMessage","getFilterErrorMessage","getEntitiesLabelFromScopes","groupField","groupFieldId","parentScopeApplicable","writableFields","useProjectDataContext","isLoading","statuses","folderTypes","taskTypes","tags","linkTypes","options","useMemo","getTableFieldOptions","tableContainerRef","useRef","tableRowsCountRef","registerGrid","useSelectionCellsContext","loadingAttrib","loadingRows","tableRowsCount","generateDummyAttributes","generateLoadingRows","showLoadingRows","readOnlyColumns","readOnlyAttribs","getReadOnlyLists","selectedCells","updateEntities","useCellEditing","handleCellUpdate","useCallback","entity","config","selection","entitiesToUpdate","field","value","isAttrib","cellId","colId","rowId","parseCellId","ROW_SELECTION_COLUMN_ID","toast","columnAttribs","getNameLabelHeader","s","upperFirst","columns","baseColumns","buildTreeTableColumns","DRAG_HANDLE_COLUMN_ID","useEffect","ids","c","resolvedColumnVisibility","merged","col","explicitVisible","checkColumnVisibility","ensureAtLeastOneVisibleColumn","table","useReactTable","row","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","leftPins","contextLeftPins","rows","rowIds","colIdsSortedByPinning","a","b","colA","colB","visibleColumns","columnVirtualizer","virtualPaddingLeft","virtualPaddingRight","useColumnVirtualization","prevVisibleRef","virtualItems","visibleColumnIds","item","changes","hasChanged","isVisible","columnSizeVars","useCustomColumnWidthVars","powerLicense","usePowerpack","RemoteSummaryCellContent","isFooterLoaded","isFooterModuleLoading","useLoadModule","summariesEnabled","footerModuleLoading","selectedRowCount","cellEntities","rowEntities","isGroupId","getRowHeight","defaultRowHeight","useDynamicRowHeight","attribByField","acc","attrib","rowOrderIds","columnOrderIds","draggedRowData","r","combinedScrollHandler","containerRefElement","scrollHeight","scrollTop","clientHeight","groupValue","tableUiContent","jsx","ClipboardProvider","jsxs","Styled.TableWrapper","Styled.TableContainer","clsx","TableHead","TableBody","TableFooterRow","columnId","calc","format","Styled.SoftErrorBanner","InfoMessage","dragOverlayPortal","createPortal","DragOverlay","overlayRowInstance","tableWidth","Styled.TR","vc","cell","cellStyleBase","getCommonPinningStyles","getColumnWidth","Styled.TD","Icon","TD","getCellId","Fragment","ColumnDragOverlay","active","useDndContext","activeColumnId","draggedColumnHeader","h","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.TableHeader","headerGroup","TableHeadRow","virtualColumns","isColumnDrag","isDraggedColumnPinned","Styled.ColumnHeader","SortableContext","horizontalListSortingStrategy","virtualColumn","header","isDraggable","TableHeadCell","canFilter","canHide","canSort","canPin","canResize","isReadOnly","column","menuId","menuOpen","useMenuContext","isOpen","sortingState","updateSorting","handleToggleSort","current","next","isThisColumnPinned","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","isDraggingInSameSection","getDragStyle","CSS","pinnedOverride","preventDragFromActions","e","Styled.HeaderButtons","ColumnHeaderMenu","HeaderActionButton","Styled.ResizedHandler","attribs","contextMenuItems","headerLabels","headerId","handleTableBodyContextMenu","useCellContextMenu","rowVirtualizer","useVirtualizer","index","element","virtualRows","prevVisibleRowIdsRef","virtualRow","parseRowId","uniqueIds","key","measureRowElement","node","useKeyboardNavigation","visibleLeafColumns","columnDividerLefts","lefts","sizeVars","i","tbodyContent","Styled.ColumnDividers","left","TableBodyRow","Styled.AnimatedEmptyPlaceholder","EmptyPlaceholder","Button","FilterErrorActions","extractQueryErrorMessage","verticalListSortingStrategy","visibleCells","paddingLeft","paddingRight","rowRef","dataIndex","offsetTop","rowHeight","sortable","rowHtmlElementRef","combinedRef","style","RowDragHandleCellContent","className","onOpenPlayer","isCellSelected","isCellFocused","startSelection","extendSelection","endSelection","selectCell","focusCell","getCellBorderClasses","clearSelection","setSelectedCells","setAnchorCell","setFocusedCellId","isRowSelected","useSelectedRowsContext","isEditing","setEditingCellId","editingCellId","borderClasses","isLastLeftPinnedColumn","isRowSelectionColumn","isGroup","isMultipleSelected","isEntityExpandable","target","isTargetReadOnly","isEntityRestricted","setDetailsPanelTabForScope","rowSelectionCellId","additive","position","prev","newSelection","targetIds","getEntityViewierIds","isRestricted","EDIT_TRIGGER_CLASS","editingInput","proceedWithSelection"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectTreeTable.es.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, CSSProperties, useCallback, UIEventHandler, FC } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Table,\n Header,\n HeaderGroup,\n RowData,\n ExpandedState,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n getNameColumnLabel,\n isEntityExpandable,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport { RowDragHandleCellContent, ColumnHeaderMenu } from './components'\nimport { TableFooterRow } from './components/TableFooterRow'\nimport type { FieldStats } from '@shared/api'\nimport { getCommonPinningStyles, getColumnWidth } from './utils/pinningUtils'\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\nimport InfoMessage from '@shared/components/InfoMessage/InfoMessage'\nimport { FilterErrorActions } from '@shared/components/FilterErrorActions/FilterErrorActions'\nimport HeaderActionButton from './components/HeaderActionButton'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\nimport { useMenuContext } from '../../context/MenuContext'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from './constants'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport useCellContextMenu, {\n HeaderLabel,\n ContextMenuItemConstructors,\n} from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\nimport useDynamicRowHeight from './hooks/useDynamicRowHeight'\n\nimport { useProjectDataContext } from './context/ProjectDataContext'\n\n// Utility function imports\nimport { isGroupId } from './hooks/useBuildGroupByTableData'\nimport { CellId, getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { isEntityRestricted, isTargetReadOnly } from './utils/restrictedEntity'\nimport { createPortal } from 'react-dom'\nimport { Button, Icon } from '@ynput/ayon-react-components'\nimport {\n ProjectTableAttribute,\n BuiltInFieldOptions,\n MainCountLabels,\n SummaryCellContentProps,\n} from './types'\nimport type { EnumItem } from '@shared/api'\nimport { ToggleExpandAll, useProjectTableContext, parseRowId } from './context/ProjectTableContext'\nimport {\n checkColumnVisibility,\n ensureAtLeastOneVisibleColumn,\n getEntityViewierIds,\n getReadOnlyLists,\n getTableFieldOptions,\n isFilterError,\n getFilterErrorMessage,\n getEntitiesLabelFromScopes,\n extractQueryErrorMessage,\n} from './utils'\nimport { EntityUpdate } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n useDndContext,\n type UniqueIdentifier,\n // Removed: DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, DragEndEvent, DragStartEvent, Active, Over, useSensor, useSensors\n} from '@dnd-kit/core'\nimport type { NewEntityOpenConfig } from '@shared/containers/NewEntity/context/NewEntityContext'\n// import { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport {\n SortableContext,\n verticalListSortingStrategy,\n useSortable,\n horizontalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { useProjectContext } from '@shared/context/ProjectContext'\nimport { usePowerpack } from '@shared/context/PowerpackContext'\nimport { setDetailsPanelTabForScope } from '@shared/context/DetailsPanelContext'\nimport { useLoadModule } from '@shared/hooks/useLoadModule'\nimport { EDIT_TRIGGER_CLASS } from './widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { ColumnsConfig } from './types/columnConfig'\n\ntype CellUpdate = (\n entity: Omit<EntityUpdate, 'id'> & { id?: string },\n config?: { selection?: string[] },\n) => Promise<void>\n\n// rendered while the powerpack summaries remote is unavailable (no license / old addon)\nconst SummaryCellContentFallback: FC<SummaryCellContentProps> = () => null\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: CellUpdate\n toggleExpandAll?: ToggleExpandAll\n selection?: string[]\n columnsConfig?: ColumnsConfig\n loadingLinksEntityIds?: Set<string>\n }\n}\n\nconst matchesColumnId = (id: string, subscribers: string[]) => {\n return subscribers.some((sub) => {\n if (sub.includes('*')) {\n // Escape all regex special characters\n const escaped = sub.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n // Replace escaped '*' (\\*) with regex '.*'\n const pattern = '^' + escaped.replace(/\\\\\\*/g, '.*') + '$'\n const regex = new RegExp(pattern)\n return regex.test(id)\n }\n return id === sub\n })\n}\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n onScrollBottom?: React.HTMLAttributes<HTMLDivElement>['onScroll']\n onOpenNew?: (type: 'folder' | 'task', config?: NewEntityOpenConfig) => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n includeLinks?: boolean\n isLoading?: boolean\n isExpandable?: boolean // if true, show the expand/collapse icons\n enableSorting?: boolean\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n columnsConfig?: ColumnsConfig // Configure column behavior (display, styling, etc.)\n showColumnSummaries?: boolean // render the fixed summary footer row\n fieldStats?: FieldStats[] // primary-entity stats (tasks/versions) feeding the footer\n groupFieldStats?: FieldStats[] // group-entity stats (folders/products) for the 'all' row scope\n fieldStatsLoading?: boolean // footer stats still loading - click-through shimmer over values\n fieldStatsError?: any // error fetching footer stats\n mainCountLabels?: MainCountLabels // labels for the main cell dual count (defaults folders/tasks)\n onScrollBottomGroupBy?: (groupValue: string) => void // Handle scroll to bottom for grouped data\n contextMenuItems?: ContextMenuItemConstructors // Additional context menu items to merge with defaults\n onColumnVisibleChange?: (changes: Record<string, boolean>) => void\n onColumnVisibleChangeSubscribed?: string[]\n // called whenever the set of rows currently rendered in the viewport changes\n // (entity ids, not row ids - group suffixes are stripped)\n onVisibleRowsChange?: (entityIds: string[]) => void\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n onScroll,\n onScrollBottom, // when the user scrolls to the bottom of the table, this callback is called\n onOpenNew,\n readOnly,\n excludedColumns,\n excludedSorting,\n extraColumns,\n includeLinks,\n isLoading: isLoadingProp,\n isExpandable,\n enableSorting = true,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n columnsConfig,\n showColumnSummaries = false,\n fieldStats,\n groupFieldStats,\n fieldStatsLoading,\n fieldStatsError,\n mainCountLabels,\n onScrollBottomGroupBy, // Destructure new prop for group-by load more\n contextMenuItems: propsContextMenuItems, // Additional context menu items from props\n onColumnVisibleChange,\n onColumnVisibleChangeSubscribed,\n onVisibleRowsChange,\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n setAllColumns,\n sorting,\n sortingOnChange,\n columnPinningOnChange,\n columnSizingOnChange,\n defaultColumnVisibility,\n columnVisibilityOnChange,\n columnOrderOnChange,\n groupBy,\n columnSummaries,\n updateColumnSummary,\n columnSummaryScopes,\n updateColumnSummaryScope,\n columnSummaryFormats,\n updateColumnSummaryFormat,\n } = useColumnSettingsContext()\n const { productTypes, projectName, ...projectInfo } = useProjectContext()\n\n const {\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n softError,\n softErrorAction,\n isInitialized,\n expanded,\n updateExpanded,\n toggleExpandAll,\n showHierarchy,\n isFlatFolderView,\n fetchNextPage,\n scopes, // or entityTypes\n getEntityById,\n onResetView,\n overrideGroupBy,\n loadingLinksEntityIds,\n queryFilters,\n } = useProjectTableContext()\n const isGrouping = !!groupBy || !!overrideGroupBy\n\n const filterError = isFilterError(error, queryFilters)\n const filterErrorMessage = getFilterErrorMessage(getEntitiesLabelFromScopes(scopes))\n\n // Parent (folder/product) summary scope only applies when those entities are\n // actually on screen: hierarchy view, grouping by a parent entity, or the\n // Products tab's product tree (product parent rows -> 'product' in scopes).\n const groupField = overrideGroupBy?.id ?? groupBy?.id\n const groupFieldId = Array.isArray(groupField) ? groupField[0] : groupField\n const parentScopeApplicable =\n showHierarchy ||\n ['hierarchy', 'folder', 'product'].includes(groupFieldId ?? '') ||\n scopes.includes('product')\n\n const { writableFields } = useProjectDataContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const {\n statuses = [],\n folderTypes = [],\n taskTypes = [],\n tags = [],\n linkTypes = [],\n } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, scopes, tags],\n )\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n // reference of how many rows are currently rendered in the table\n const tableRowsCountRef = useRef(0)\n\n // Selection context\n const { registerGrid } = useSelectionCellsContext()\n\n // generate loading attrib and rows\n const { loadingAttrib, loadingRows } = useMemo(() => {\n // count the number of children in tbody\n const tableRowsCount = tableContainerRef.current?.querySelectorAll('tbody tr').length || 0\n const loadingAttrib = generateDummyAttributes()\n const loadingRows = generateLoadingRows(\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, writableFields, readOnly),\n [attribFields, writableFields, readOnly],\n )\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities } = useCellEditing()\n\n const handleCellUpdate: CellUpdate = useCallback(\n async (entity, config) => {\n const { selection = [] } = config || {}\n const entitiesToUpdate: EntityUpdate[] = []\n if (!selection?.length) {\n entitiesToUpdate.push({ ...entity, id: entity.id || entity.rowId })\n } else {\n // if includeSelection is true, update all the selected cells with the same columnId\n const { field, value, isAttrib } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n // ignore row selection column\n if (colId === ROW_SELECTION_COLUMN_ID) continue\n\n const entity = getEntityById(rowId || '')\n if (!entity) {\n console.warn(`Entity with ID ${rowId} not found for cell update.`)\n continue\n }\n\n if ((!colId?.includes('attrib_') || colId?.replace('attrib_', '') === field) && rowId) {\n entitiesToUpdate.push({\n field: field,\n rowId: rowId,\n id: entity.entityId,\n value: value,\n isAttrib: isAttrib,\n type: entity.entityType,\n })\n }\n }\n }\n\n if (!entitiesToUpdate.length) {\n console.warn('No entities to update, skipping updateEntities call.')\n toast.warn('No entities to update.')\n return\n }\n\n await updateEntities(entitiesToUpdate, true)\n },\n [updateEntities, getEntityById, selectedCells],\n )\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n\n const getNameLabelHeader = () => {\n return getNameColumnLabel(scopes)\n }\n\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n scopes,\n attribs: columnAttribs,\n links: linkTypes,\n includeLinks,\n showHierarchy,\n isFlatFolderView,\n options,\n extraColumns,\n excluded: excludedColumns,\n excludedSorting,\n groupBy,\n nameLabel: getNameLabelHeader(),\n })\n\n if (sortableRows && enableSorting) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [\n scopes,\n JSON.stringify(columnAttribs), // columnAttribs is unstable between renders\n showHierarchy,\n isFlatFolderView,\n isExpandable,\n options,\n linkTypes,\n includeLinks,\n extraColumns,\n excludedColumns,\n excludedSorting,\n sortableRows,\n enableSorting,\n groupBy,\n ])\n\n // Keep ColumnSettingsProvider's allColumns ref up to date\n useEffect(() => {\n const ids = columns.map((c) => c.id!).filter(Boolean)\n setAllColumns(ids)\n }, [columns, setAllColumns])\n\n const resolvedColumnVisibility = useMemo(() => {\n const merged = { ...columnVisibility }\n columns.forEach((col) => {\n // @ts-ignore\n const explicitVisible = col.visible\n if (col.id && merged[col.id] === undefined) {\n if (explicitVisible !== undefined) {\n merged[col.id] = explicitVisible\n } else {\n merged[col.id] = checkColumnVisibility({}, col.id, defaultColumnVisibility)\n }\n }\n })\n return ensureAtLeastOneVisibleColumn(merged, columns.map((c) => c.id as string).filter(Boolean))\n }, [columnVisibility, defaultColumnVisibility, columns])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => !!isExpandable || showHierarchy || isFlatFolderView || isGrouping,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n enableSorting,\n getSortedRowModel: getSortedRowModel(),\n sortDescFirst: false,\n manualSorting: !clientSorting,\n onSortingChange: sortingOnChange,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningOnChange,\n onColumnSizingChange: columnSizingOnChange,\n onColumnVisibilityChange: columnVisibilityOnChange,\n onColumnOrderChange: columnOrderOnChange,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility: resolvedColumnVisibility,\n columnOrder,\n },\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreRows: fetchNextPage,\n selection: Array.from(selectedCells),\n columnsConfig,\n loadingLinksEntityIds,\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n columnSizing,\n columnOrder,\n })\n\n // Track column visibility changes for subscribed columns\n const prevVisibleRef = useRef<Record<string, boolean>>({})\n const virtualItems = columnVirtualizer.getVirtualItems()\n\n // Subscribe to column visibility changes\n useEffect(() => {\n if (!onColumnVisibleChange || !onColumnVisibleChangeSubscribed?.length) return\n\n const visibleColumnIds = new Set(virtualItems.map((item) => visibleColumns[item.index]?.id))\n const changes: Record<string, boolean> = {}\n let hasChanged = false\n\n // We only care about columns that match the subscription patterns\n const subscribedColumns = table\n .getAllLeafColumns()\n .filter((col) => matchesColumnId(col.id, onColumnVisibleChangeSubscribed))\n\n subscribedColumns.forEach((col) => {\n const isVisible = visibleColumnIds.has(col.id)\n if (prevVisibleRef.current[col.id] !== isVisible) {\n changes[col.id] = isVisible\n hasChanged = true\n prevVisibleRef.current[col.id] = isVisible\n }\n })\n\n if (hasChanged) {\n onColumnVisibleChange(changes)\n }\n }, [virtualItems, onColumnVisibleChange, onColumnVisibleChangeSubscribed, visibleColumns, table])\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n // Summary footer is a powerpack feature.\n // popup hidden for now: also expose `setPowerpackDialog, isLoading: isLicenseLoading`\n const { powerLicense } = usePowerpack()\n const [RemoteSummaryCellContent, { isLoaded: isFooterLoaded, isLoading: isFooterModuleLoading }] =\n useLoadModule<FC<SummaryCellContentProps>>({\n addon: 'powerpack',\n remote: 'views',\n module: 'SummaryCellContent',\n fallback: SummaryCellContentFallback,\n skip: !showColumnSummaries || !powerLicense,\n })\n // Free-user upsell row hidden for now (too many power-feature prompts); keep for later.\n // Render the row as soon as the module is loading or loaded (not on load failure),\n // so skeletons show during the load instead of the row popping in late.\n const summariesEnabled =\n showColumnSummaries &&\n powerLicense &&\n (isFooterLoaded || isFooterModuleLoading) &&\n !!rows.length\n // Full skeleton only while the remote module itself is loading (no cell to\n // render yet). Stats loading is handled per-cell so the footer stays clickable.\n const footerModuleLoading = isFooterModuleLoading || !isFooterLoaded\n\n // Unique selected entities for the footer's \"N selected\" count, deduped by\n // entityId (group headers / load-more rows excluded). Marked cells win: when\n // any cell is selected we count only those and ignore checkbox row-selection;\n // whole-row selection counts on its own.\n const selectedRowCount = useMemo(() => {\n const cellEntities = new Set<string>()\n const rowEntities = new Set<string>()\n for (const cellId of selectedCells) {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || isGroupId(rowId)) continue\n\n const id = getEntityById(rowId)?.entityId\n if (!id) continue\n if (colId === ROW_SELECTION_COLUMN_ID) rowEntities.add(id)\n else cellEntities.add(id)\n }\n return cellEntities.size || rowEntities.size\n }, [selectedCells, getEntityById])\n // only show the upsell once the license check resolves, so licensed users\n // don't see the bolt flash before the addon loads\n // const showSummaryPowerFeature = !isLicenseLoading && !powerLicense\n\n // Calculate dynamic row height based on user setting from Customize panel\n const { getRowHeight, defaultRowHeight } = useDynamicRowHeight()\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, EnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n // Get column IDs for drag-and-drop from context columnOrder (exclude non-draggable columns)\n // This ensures SortableContext items match what the drag handlers use\n const columnOrderIds = useMemo(() => {\n return columnOrder.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n }, [columnOrder])\n\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const combinedScrollHandler: UIEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n // Call the original onScroll if provided\n onScroll?.(e)\n\n if (onScrollBottom) {\n const containerRefElement = e.currentTarget\n // When not grouping (or when hierarchy+slicer relies on tasksList), we trigger standard fetchNextPage\n // The table itself handles showing tasks.\n if (containerRefElement && !groupBy && (!showHierarchy || !isFlatFolderView)) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n //once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n if (scrollHeight - scrollTop - clientHeight < 500 && !isLoading) {\n onScrollBottom(e)\n }\n }\n }\n\n // Handle scroll-to-bottom for grouped data\n if (onScrollBottomGroupBy && groupBy) {\n const containerRefElement = e.currentTarget\n // look for a load more button\n const loadMoreButton = containerRefElement?.querySelector('.load-more')\n // get load more button id\n const loadMoreButtonId = loadMoreButton?.getAttribute('id')\n const groupValue = loadMoreButtonId?.split('-')[2] // assuming the id is in the format 'load-more-groupValue'\n if (groupValue) {\n onScrollBottomGroupBy(groupValue)\n }\n }\n },\n [onScroll, onScrollBottom, onScrollBottomGroupBy, showHierarchy, groupBy, isLoading],\n )\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n visibleColumns={visibleColumns}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={combinedScrollHandler}\n {...pt?.container}\n data-column-dnd-container\n className={clsx(\n 'table-container',\n {\n resizing: table.getState().columnSizingInfo.isResizingColumn,\n },\n pt?.container?.className,\n )}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n cursor: table.getState().columnSizingInfo.isResizingColumn ? 'col-resize' : undefined,\n // stretch tbody to the container so the column dividers fill the empty\n // space below the rows; also pins the summary footer to the bottom\n minHeight: '100%',\n gridTemplateRows: 'auto 1fr auto',\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n columnOrderIds={columnOrderIds}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n isFilterError={filterError}\n filterErrorMessage={filterErrorMessage}\n isLoading={isLoading}\n isGrouping={isGrouping}\n getRowHeight={getRowHeight}\n defaultRowHeight={defaultRowHeight}\n onResetView={onResetView}\n contextMenuItems={propsContextMenuItems}\n onVisibleRowsChange={onVisibleRowsChange}\n />\n {summariesEnabled && !error && (\n <TableFooterRow\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={footerModuleLoading}\n statsLoading={!!fieldStatsLoading}\n error={fieldStatsError}\n // Free-user upsell hidden for now; keep for later:\n // onClick={showSummaryPowerFeature ? () => setPowerpackDialog('columnSummaries') : undefined}\n renderCellContent={(columnId) => (\n <RemoteSummaryCellContent\n columnId={columnId}\n attribs={attribFields}\n fieldStats={fieldStats}\n groupFieldStats={groupFieldStats}\n calc={columnSummaries[columnId]}\n onCalcChange={(calc) => updateColumnSummary(columnId, calc)}\n format={columnSummaryFormats[columnId]}\n onFormatChange={(format) => updateColumnSummaryFormat(columnId, format)}\n scope={columnSummaryScopes[columnId]}\n onScopeChange={(scope) => updateColumnSummaryScope(columnId, scope)}\n mainCountLabels={mainCountLabels}\n fieldOptions={options}\n parentScopeApplicable={parentScopeApplicable}\n selectedCount={selectedRowCount}\n />\n )}\n // Power feature cell for community users (hidden for now), shows a bolt hint in the name column:\n // renderCellContent={(columnId) =>\n // showSummaryPowerFeature && columnId === 'name' ? (\n // <Styled.SummaryPowerFeature>\n // <Icon icon=\"bolt\" filled />\n // Summaries\n // </Styled.SummaryPowerFeature>\n // ) : null\n // }\n />\n )}\n </table>\n </Styled.TableContainer>\n {softError && (\n <Styled.SoftErrorBanner>\n <InfoMessage variant=\"warning\" message={softError} action={softErrorAction} />\n </Styled.SoftErrorBanner>\n )}\n </Styled.TableWrapper>\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: defaultRowHeight,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n <ColumnDragOverlay table={table} />\n </>\n )\n } else {\n return (\n <>\n {tableUiContent}\n <ColumnDragOverlay table={table} />\n </>\n )\n }\n}\n\n/**\n * Isolated component for column drag overlay.\n * This prevents the entire table from re-rendering on every drag frame.\n */\ninterface ColumnDragOverlayProps {\n table: Table<TableRow>\n}\n\nconst ColumnDragOverlay = ({ table }: ColumnDragOverlayProps) => {\n const { active } = useDndContext()\n\n // Only process if dragging a column\n const isColumnDrag = active?.data?.current?.type === 'column'\n const activeColumnId = isColumnDrag ? (active?.id as string) : null\n\n const draggedColumnHeader = useMemo(() => {\n if (!activeColumnId) return null\n return table.getHeaderGroups()[0]?.headers.find((h) => h.id === activeColumnId) || null\n }, [activeColumnId, table])\n\n if (!activeColumnId || !draggedColumnHeader) return null\n\n return createPortal(\n <DragOverlay dropAnimation={null}>\n <Styled.HeaderCell\n style={{\n width: draggedColumnHeader.column.getSize(),\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n display: 'flex',\n alignItems: 'center',\n minHeight: 34,\n }}\n >\n <Styled.TableCellContent className=\"bold header\">\n {flexRender(\n draggedColumnHeader.column.columnDef.header,\n draggedColumnHeader.getContext(),\n )}\n </Styled.TableCellContent>\n </Styled.HeaderCell>\n </DragOverlay>,\n document.body,\n )\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n columnOrderIds: string[]\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n columnOrderIds={columnOrderIds}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n columnOrderIds: string[]\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n const { active } = useDndContext()\n const isColumnDrag = active?.data?.current?.type === 'column'\n const isDraggedColumnPinned = isColumnDrag && (active?.data?.current?.isPinned ?? false)\n\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n <SortableContext items={columnOrderIds} strategy={horizontalListSortingStrategy}>\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n // Exclude certain columns from being draggable\n const isDraggable =\n header.id !== DRAG_HANDLE_COLUMN_ID && header.id !== ROW_SELECTION_COLUMN_ID\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n isDraggable={isDraggable}\n isColumnDrag={isColumnDrag}\n isDraggedColumnPinned={isDraggedColumnPinned}\n />\n )\n })}\n </SortableContext>\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n isDraggable?: boolean\n isColumnDrag?: boolean\n isDraggedColumnPinned?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n isDraggable = true,\n isColumnDrag,\n isDraggedColumnPinned,\n}: TableHeadCellProps) => {\n const { column } = header\n const sorting = column.getIsSorted()\n const menuId = `column-header-menu-${column.id}`\n const { menuOpen } = useMenuContext()\n const isOpen = menuOpen === menuId\n const { columnPinning, sorting: sortingState, updateSorting } = useColumnSettingsContext()\n\n // toggle sort via the same direct updateSorting call the Customize panel uses;\n // routing through TanStack's onSortingChange did not apply under manualSorting.\n const handleToggleSort = () => {\n const current = sortingState?.find((s) => s.id === column.id)\n const next = !current\n ? [{ id: column.id, desc: false }]\n : !current.desc\n ? [{ id: column.id, desc: true }]\n : []\n updateSorting(next)\n }\n\n // Check if this column is pinned\n const isThisColumnPinned = columnPinning.left?.includes(column.id) || false\n\n // useSortable for column drag-and-drop\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: column.id,\n data: { type: 'column', isPinned: isThisColumnPinned },\n disabled: !isDraggable,\n })\n\n const isDraggingInSameSection = isColumnDrag && isDraggedColumnPinned === isThisColumnPinned\n\n // Build drag styles\n const getDragStyle = (): CSSProperties => {\n if (isDragging) {\n return {\n transform: CSS.Translate.toString(transform!),\n transition,\n visibility: 'hidden',\n zIndex: 200,\n }\n }\n if (isDraggingInSameSection && transform) {\n // For pinned columns, temporarily remove sticky positioning during drag animation\n const pinnedOverride = isThisColumnPinned\n ? { position: 'relative' as const, left: 'auto' }\n : {}\n return { transform: CSS.Translate.toString(transform), transition, ...pinnedOverride }\n }\n return {}\n }\n\n // Prevent drag when clicking action buttons\n const preventDragFromActions = {\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: React.MouseEvent) => e.stopPropagation(),\n }\n\n return (\n <Styled.HeaderCell\n ref={setNodeRef}\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n resizing: column.getIsResizing(),\n dragging: isDragging,\n draggable: isDraggable,\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth(column.id),\n ...getDragStyle(),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent\n className={clsx('bold', 'header')}\n {...(isDraggable ? { ...attributes, ...listeners } : {})}\n >\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\" $isOpen={isOpen} {...preventDragFromActions}>\n {/* Column drag handle */}\n\n {(canHide || canPin || canSort) && (\n <ColumnHeaderMenu\n className=\"header-menu\"\n header={header}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n isResizing={column.getIsResizing()}\n menuId={menuId}\n isOpen={isOpen}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon=\"sort\"\n className={clsx('sort-button', { visible: sorting })}\n style={{\n transform: sorting === 'desc' ? 'rotate(180deg) scaleX(-1)' : 'none',\n }}\n onClick={handleToggleSort}\n selected={!!column.getIsSorted()}\n />\n )}\n\n {/* COLUMN PINNING - only show on pinned columns (exclude selection column) */}\n {column.getIsPinned() &&\n column.id !== ROW_SELECTION_COLUMN_ID &&\n column.id !== DRAG_HANDLE_COLUMN_ID && (\n <HeaderActionButton\n icon=\"push_pin\"\n className={clsx('pin-button', 'visible')}\n onClick={() => column.pin(false)}\n selected\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: (e: React.MouseEvent) => {\n e.stopPropagation()\n header.getResizeHandler()(e)\n },\n onTouchStart: header.getResizeHandler(),\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task', config?: NewEntityOpenConfig) => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n isFilterError?: boolean\n filterErrorMessage?: string\n isLoading: boolean\n isGrouping: boolean\n getRowHeight: (row: TableRow) => number\n defaultRowHeight: number\n onResetView?: () => void\n contextMenuItems?: ContextMenuItemConstructors\n onVisibleRowsChange?: (entityIds: string[]) => void\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n isFilterError: filterError,\n filterErrorMessage,\n isLoading,\n isGrouping,\n getRowHeight,\n defaultRowHeight,\n onResetView,\n contextMenuItems,\n onVisibleRowsChange,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const cellContextMenuHook = useCellContextMenu({\n attribs,\n onOpenNew,\n headerLabels,\n contextMenuItems,\n })\n\n const handleTableBodyContextMenu = cellContextMenuHook.handleTableBodyContextMenu\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: (index) => {\n // Calculate dynamic row height based on specific row data\n const row = rows[index]\n return row ? getRowHeight(row.original) : defaultRowHeight\n },\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Notify the consumer whenever the set of rendered (visible) entity ids changes,\n // so data fetching can be scoped to what's actually on screen. Only fires when\n // the resolved id list actually differs, to avoid spamming updates on every\n // render (rowVirtualizer.getVirtualItems() returns a new array each call).\n const prevVisibleRowIdsRef = useRef<string>('')\n useEffect(() => {\n if (!onVisibleRowsChange) return\n\n const ids = virtualRows\n .map((virtualRow) => rows[virtualRow.index] && parseRowId(rows[virtualRow.index].id))\n .filter(Boolean) as string[]\n const uniqueIds = Array.from(new Set(ids))\n const key = uniqueIds.join(',')\n\n if (key === prevVisibleRowIdsRef.current) return\n prevVisibleRowIdsRef.current = key\n\n onVisibleRowsChange(uniqueIds)\n }, [virtualRows, rows, onVisibleRowsChange])\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n // vertical column lines painted behind the rows so they extend into the empty\n // space between the last row and the summary footer\n const visibleLeafColumns = table.getVisibleLeafColumns()\n const columnDividerLefts = useMemo(() => {\n const lefts: string[] = []\n const sizeVars: string[] = []\n for (let i = 0; i < visibleLeafColumns.length - 1; i++) {\n const column = visibleLeafColumns[i]\n // selection column is forced to 20px in CSS while its size var reports defaultColumn.minSize\n sizeVars.push(column.id === ROW_SELECTION_COLUMN_ID ? '20' : `var(--col-${column.id}-size)`)\n lefts.push(`calc((${sizeVars.join(' + ')}) * 1px)`)\n }\n return lefts\n }, [visibleLeafColumns])\n\n const tbodyContent = (\n <tbody\n style={{\n minHeight: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n >\n <Styled.ColumnDividers aria-hidden>\n {columnDividerLefts.map((left, i) => (\n <div key={i} style={{ left }} />\n ))}\n </Styled.ColumnDividers>\n {virtualRows.map((virtualRow) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id} // stable per-row identity; dnd-kit matches on row.id via SortableContext, not this key\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n isGrouping={isGrouping}\n rowHeight={getRowHeight(row.original)}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n {filterError ? (\n <EmptyPlaceholder message={filterErrorMessage} icon=\"filter_alt_off\">\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset filters\"\n icon=\"replay\"\n onClick={onResetView}\n />\n )}\n <FilterErrorActions errorMessage={extractQueryErrorMessage(error)} />\n </EmptyPlaceholder>\n ) : (\n <EmptyPlaceholder message=\"No items found\" error={error}>\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset filters\"\n icon=\"replay\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n )}\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (!rows.length && !isLoading) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\">\n {onResetView && (\n <Button variant=\"filled\" label=\"Reset filters\" icon=\"replay\" onClick={onResetView} />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n isGrouping: boolean\n rowHeight: number\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n isGrouping = false,\n rowHeight,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n // Track actual DOM element node\n const rowHtmlElementRef = useRef<HTMLTableRowElement | null>(null)\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n rowHtmlElementRef.current = node\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: rowHeight, // Use dynamic row height\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={cell.id}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: rowHeight,\n pointerEvents: 'all',\n cursor: 'grab',\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n rowHeight={rowHeight}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n rowHeight?: number\n}\n\nconst TD = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n rowHeight,\n ...props\n}: TableCellProps) => {\n const { getEntityById, onOpenPlayer } = useProjectTableContext()\n\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n focusCell,\n getCellBorderClasses,\n clearSelection,\n selectedCells,\n setSelectedCells,\n setAnchorCell,\n setFocusedCellId,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing, setEditingCellId, editingCellId } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n const isMultipleSelected = selectedCells.size > 1\n\n return (\n <Styled.TD\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n expandable:\n !!cell.row.originalSubRows && isEntityExpandable(cell.row.original.entityType),\n 'multiple-selected': isMultipleSelected,\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n height: rowHeight,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // check we are not clicking in a dropdown\n if (target.closest('.options')) return\n\n e.currentTarget.focus()\n\n // Handle double-click via e.detail (browser's native click count).\n // We handle it here in mousedown instead of relying on the dblclick event,\n // because the 1st mousedown triggers React state updates that can replace\n // the DOM node, preventing the native dblclick event from firing.\n if (e.detail === 2) {\n // comments cells are read-only but their double-click opens the details panel, so don't block them here\n const isReadOnly = isTargetReadOnly(e) && cell.column.id !== 'comments'\n if (isReadOnly || isEntityRestricted(cell.row.original.entityType) || isGroup) {\n e.preventDefault()\n return\n }\n\n // name column: select row to open details panel\n // comments column: same — comments are read and written in the details panel feed\n if (['name', 'comments'].includes(cell.column.id) && !target.closest('.expander')) {\n // all ProjectTreeTable pages render their details panel under the 'overview' scope\n if (cell.column.id === 'comments') setDetailsPanelTabForScope('overview', 'feed')\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n const additive = e.metaKey || e.ctrlKey\n const position = parseCellId(rowSelectionCellId)\n\n setSelectedCells((prev) => {\n const newSelection = additive ? new Set(prev) : new Set<CellId>()\n newSelection.add(rowSelectionCellId)\n newSelection.add(cellId)\n return newSelection\n })\n if (position) {\n setAnchorCell(position)\n setFocusedCellId(rowSelectionCellId)\n }\n }\n // thumbnail: open viewer\n else if (cell.column.id === 'thumbnail') {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.row.original.entityId || cell.row.id)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n }\n // other cells: start editing\n else {\n setEditingCellId(cellId)\n }\n\n e.preventDefault()\n return\n }\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n // check if this is a restricted entity - prevent editing\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // if clicking on an edit trigger, start editing\n if (target.closest('.' + EDIT_TRIGGER_CLASS) && !isRestricted) {\n // Select the cell first if not already selected\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n setEditingCellId(cellId)\n return\n }\n\n // If there's an active edit on a different cell, blur it first to save changes\n if (editingCellId && editingCellId !== cellId) {\n // Find the currently editing input and blur it\n const editingInput = document.querySelector(\n `#${editingCellId} input, #${editingCellId} [role=\"textbox\"]`,\n ) as HTMLElement\n if (editingInput) {\n editingInput.blur()\n // Wait a tick for the blur event to process and save\n setTimeout(() => {\n proceedWithSelection()\n }, 0)\n return\n }\n }\n\n proceedWithSelection()\n\n function proceedWithSelection() {\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n startSelection(cellId, additive)\n }\n\n // Prevent default browser behavior to ensure focus stays on the cell\n e.preventDefault()\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // check not selecting am edit trigger\n const target = e.target as HTMLElement\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) return\n\n // Left button is pressed during mouse move - drag selection\n // Note: extendSelection is always called to allow drag to continue through cells\n // Restricted cells will be filtered out later\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n // Double-click is primarily handled in onMouseDown via e.detail === 2.\n // Prevent default to avoid text selection on double-click.\n e.preventDefault()\n }}\n onContextMenu={(e) => {\n e.preventDefault()\n // if the cell is not selected, select it and deselect all others\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n }\n }}\n onKeyDown={() => {\n // keyboard events are handled in useKeyboardNavigation hook\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TD>\n )\n}\n"],"names":["SummaryCellContentFallback","matchesColumnId","id","subscribers","sub","pattern","ProjectTreeTable","scope","sliceId","onScroll","onScrollBottom","onOpenNew","readOnly","excludedColumns","excludedSorting","extraColumns","includeLinks","isLoadingProp","isExpandable","enableSorting","clientSorting","sortableRows","onRowReorder","dndActiveId","columnsConfig","showColumnSummaries","fieldStats","groupFieldStats","fieldStatsLoading","fieldStatsError","mainCountLabels","onScrollBottomGroupBy","propsContextMenuItems","onColumnVisibleChange","onColumnVisibleChangeSubscribed","onVisibleRowsChange","pt","props","columnVisibility","columnPinning","columnOrder","columnSizing","setAllColumns","sorting","sortingOnChange","columnPinningOnChange","columnSizingOnChange","defaultColumnVisibility","columnVisibilityOnChange","columnOrderOnChange","groupBy","columnSummaries","updateColumnSummary","columnSummaryScopes","updateColumnSummaryScope","columnSummaryFormats","updateColumnSummaryFormat","useColumnSettingsContext","productTypes","projectName","projectInfo","useProjectContext","tableData","attribFields","entitiesMap","users","isLoadingData","error","softError","softErrorAction","isInitialized","expanded","updateExpanded","toggleExpandAll","showHierarchy","isFlatFolderView","fetchNextPage","scopes","getEntityById","onResetView","overrideGroupBy","loadingLinksEntityIds","queryFilters","useProjectTableContext","isGrouping","filterError","isFilterError","filterErrorMessage","getFilterErrorMessage","getEntitiesLabelFromScopes","groupField","groupFieldId","parentScopeApplicable","writableFields","useProjectDataContext","isLoading","statuses","folderTypes","taskTypes","tags","linkTypes","options","useMemo","getTableFieldOptions","tableContainerRef","useRef","tableRowsCountRef","registerGrid","useSelectionCellsContext","loadingAttrib","loadingRows","tableRowsCount","generateDummyAttributes","generateLoadingRows","showLoadingRows","readOnlyColumns","readOnlyAttribs","getReadOnlyLists","selectedCells","updateEntities","useCellEditing","handleCellUpdate","useCallback","entity","config","selection","entitiesToUpdate","field","value","isAttrib","cellId","colId","rowId","parseCellId","ROW_SELECTION_COLUMN_ID","toast","columnAttribs","getNameLabelHeader","getNameColumnLabel","columns","baseColumns","buildTreeTableColumns","DRAG_HANDLE_COLUMN_ID","useEffect","ids","c","resolvedColumnVisibility","merged","col","explicitVisible","checkColumnVisibility","ensureAtLeastOneVisibleColumn","table","useReactTable","row","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","leftPins","contextLeftPins","rows","rowIds","colIdsSortedByPinning","b","colA","colB","visibleColumns","columnVirtualizer","virtualPaddingLeft","virtualPaddingRight","useColumnVirtualization","prevVisibleRef","virtualItems","visibleColumnIds","item","changes","hasChanged","isVisible","columnSizeVars","useCustomColumnWidthVars","powerLicense","usePowerpack","RemoteSummaryCellContent","isFooterLoaded","isFooterModuleLoading","useLoadModule","summariesEnabled","footerModuleLoading","selectedRowCount","cellEntities","rowEntities","isGroupId","getRowHeight","defaultRowHeight","useDynamicRowHeight","attribByField","acc","attrib","rowOrderIds","columnOrderIds","draggedRowData","r","combinedScrollHandler","e","containerRefElement","scrollHeight","scrollTop","clientHeight","groupValue","tableUiContent","jsx","ClipboardProvider","jsxs","Styled.TableWrapper","Styled.TableContainer","clsx","TableHead","TableBody","TableFooterRow","columnId","calc","format","Styled.SoftErrorBanner","InfoMessage","dragOverlayPortal","createPortal","DragOverlay","overlayRowInstance","tableWidth","Styled.TR","vc","cell","cellStyleBase","getCommonPinningStyles","getColumnWidth","Styled.TD","Icon","TD","getCellId","Fragment","ColumnDragOverlay","active","useDndContext","activeColumnId","draggedColumnHeader","h","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.TableHeader","headerGroup","TableHeadRow","virtualColumns","isColumnDrag","isDraggedColumnPinned","Styled.ColumnHeader","SortableContext","horizontalListSortingStrategy","virtualColumn","header","isDraggable","TableHeadCell","canFilter","canHide","canSort","canPin","canResize","isReadOnly","column","menuId","menuOpen","useMenuContext","isOpen","sortingState","updateSorting","handleToggleSort","current","s","next","isThisColumnPinned","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","isDraggingInSameSection","getDragStyle","CSS","pinnedOverride","preventDragFromActions","Styled.HeaderButtons","ColumnHeaderMenu","HeaderActionButton","Styled.ResizedHandler","attribs","contextMenuItems","headerLabels","headerId","handleTableBodyContextMenu","useCellContextMenu","rowVirtualizer","useVirtualizer","index","element","virtualRows","prevVisibleRowIdsRef","virtualRow","parseRowId","uniqueIds","key","measureRowElement","node","useKeyboardNavigation","visibleLeafColumns","columnDividerLefts","lefts","sizeVars","i","tbodyContent","Styled.ColumnDividers","left","TableBodyRow","Styled.AnimatedEmptyPlaceholder","EmptyPlaceholder","Button","FilterErrorActions","extractQueryErrorMessage","verticalListSortingStrategy","visibleCells","paddingLeft","paddingRight","rowRef","dataIndex","offsetTop","rowHeight","sortable","rowHtmlElementRef","combinedRef","style","RowDragHandleCellContent","className","onOpenPlayer","isCellSelected","isCellFocused","startSelection","extendSelection","endSelection","selectCell","focusCell","getCellBorderClasses","clearSelection","setSelectedCells","setAnchorCell","setFocusedCellId","isRowSelected","useSelectedRowsContext","isEditing","setEditingCellId","editingCellId","borderClasses","isLastLeftPinnedColumn","isRowSelectionColumn","isGroup","isMultipleSelected","isEntityExpandable","target","isTargetReadOnly","isEntityRestricted","setDetailsPanelTabForScope","rowSelectionCellId","additive","position","prev","newSelection","targetIds","getEntityViewierIds","isRestricted","EDIT_TRIGGER_CLASS","editingInput","proceedWithSelection"],"mappings":"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"}
|
|
@@ -43,6 +43,12 @@
|
|
|
43
43
|
user-select: none;
|
|
44
44
|
padding-right: 0;
|
|
45
45
|
|
|
46
|
+
/* header cells have content-driven height, so size containment would collapse them */
|
|
47
|
+
&:not(.header) {
|
|
48
|
+
container-type: size;
|
|
49
|
+
container-name: cell;
|
|
50
|
+
}
|
|
51
|
+
|
|
46
52
|
&.bold {
|
|
47
53
|
font-weight: 600;
|
|
48
54
|
}
|