@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,6 +1,6 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const xe=require("../../../../../_virtual/jsx-runtime.cjs.js"),j=require("react"),H=require("../constants.cjs.js"),Ee=require("./SelectionCellsContext.cjs.js"),ve=require("./CellEditingContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");const Se=require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("lodash");require("react-toastify");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");const be=require("../../../util/getEntityId.cjs.js");require("../../../util/pubsub.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");const _e=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContextInstance.cjs.js");require("../../../context/EntityUpdatesContextInstance.cjs.js");require("../../ContextMenu/ContextMenuContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("clsx");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/AttributeEditor/AttributeEditor.cjs.js");require("../../../components/AttributeEditor/attributeTypeMap.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("date-fns");require("../../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../../../components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js");require("../../../components/DeleteEntitiesConfirm/DeleteEntitiesConfirmDialog.styled.cjs.js");require("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../../components/DetailsPanelDetails/BorderedSection.cjs.js");require("../../../components/QuillListStyles/QuillListStyles.cjs.js");require("../../../components/DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("rehype-raw");require("../../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../../Feed/components/CommentInput/modules/index.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../../components/InfoMessage/InfoMessage.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../components/Feedback/FeedbackContextInstance.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/FreeTrialLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/ProjectTableSettings/ColumnsSettings.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("react-router-dom");require("../../Slicer/components/Slicer.cjs.js");require("../../Slicer/context/SlicerContextInstance.cjs.js");require("../../Slicer/components/SlicerDropdownFallback.cjs.js");require("../../NewEntity/components/NewEntity.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../buildTreeTableColumns.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");const $=require("./clipboard/clipboardUtils.cjs.js"),Le=require("./clipboard/clipboardValidation.cjs.js"),z=require("./clipboard/clipboardSubtasks.cjs.js"),Re=require("./clipboard/clipboardComments.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("short-uuid");require("../utils/columnIds.cjs.js");const _=require("../utils/cellUtils.cjs.js");require("./ProjectTableQueriesContext.cjs.js");const Oe=require("./ProjectTableContext.cjs.js");require("./ColumnSettingsContext.cjs.js");require("./SelectedRowsContext.cjs.js");require("./DetailsPanelEntityContext.cjs.js");require("./ProjectDataContextInstance.cjs.js");require("../components/TableFooterRow.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/EnumCellValue.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/MarkdownWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/EntityWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../widgets/LinksWidget.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../../NewEntity/context/NewEntityContextInstance.cjs.js");require("../../NewEntity/components/NewEntityForm.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/SearchFilter/CustomDateRangeDialog.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/SyncButton/SyncButton.cjs.js");require("../../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContextInstance.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../../components/ColumnHeaderMenuUI.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../Feed/components/ActivityFieldChange/ActivityFieldChange.styled.cjs.js");require("../../Feed/components/ActivityFieldChange/FieldValue.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("../../Feed/components/FeedSearchFilter.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js");require("../../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../../DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js");require("../../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("uuid");require("../../Views/context/ViewsContextInstance.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../ListTable/ListTableRow.cjs.js");require("../../ListTable/ListTable.styled.cjs.js");require("../../../context/DeleteEntitiesContext.cjs.js");const De=require("../hooks/usePasteLinks.cjs.js"),ye=j.createContext(void 0),Ne=new Set(["version","version_entity","product","productBaseType","task_entity"]),$e={folder_entity:"folder",task_entity:"taskLabel",version_entity:"versionName"},Ae=({children:Y,entitiesMap:B,columnEnums:le,columnReadOnly:Ie,visibleColumns:Q})=>{const{selectedCells:M,gridMap:I,focusedCellId:ge}=Ee.useSelectionCellsContext(),{updateEntities:ce,history:ue}=ve.useCellEditing(),{pasteTableLinks:de}=De(),{getEntityById:G,attribFields:J,tableData:qe}=Oe.useProjectTableContext(),pe=j.useMemo(()=>{const n=new Map,c=a=>{for(const d of a)n.set(d.id,d),d.subRows?.length&&c(d.subRows)};return c(qe||[]),n},[qe]),{projectName:Z}=_e.useProjectContext(),[ee]=Se.useUpdateSubtasksMutation(),ae=j.useCallback(async(n,c)=>{const{headers:a,fullRow:d}=c||{};try{const E=Q.map(g=>g.id).filter(g=>g!==H.ROW_SELECTION_COLUMN_ID),k=new Map;n.forEach(g=>{const t=_.parseCellId(g);if(!t)return;const{rowId:l,colId:L}=t;L===H.ROW_SELECTION_COLUMN_ID||!E.includes(L)||(k.has(l)||k.set(l,new Set),k.get(l)?.add(L))}),d&&n.filter(t=>_.parseCellId(t)?.rowId&&_.parseCellId(t)?.colId===H.ROW_SELECTION_COLUMN_ID).map(t=>_.parseCellId(t)?.rowId).forEach(t=>{k.has(t)||k.set(t,new Set),Array.from(I.colIdToIndex.keys()).forEach(L=>{k.get(t)?.add(L)})});const f=Array.from(k.keys()).sort((g,t)=>{const l=I.rowIdToIndex.get(g)??1/0,L=I.rowIdToIndex.get(t)??1/0;return l-L});let A="";const ie=f[0];if(!ie)return"";const se=Array.from(k.get(ie)||[]).sort((g,t)=>{const l=I.colIdToIndex.get(g)??1/0,L=I.colIdToIndex.get(t)??1/0;return l-L});if(a&&se.length>0){const g=[];for(const t of se){const l=t;g.push(`${l.replace(/"/g,'""')}`)}A+=g.join(" ")+`
|
|
2
|
-
`}for(const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const xe=require("../../../../../_virtual/jsx-runtime.cjs.js"),j=require("react"),H=require("../constants.cjs.js"),Ee=require("./SelectionCellsContext.cjs.js"),ve=require("./CellEditingContext.cjs.js"),Se=require("../../../context/ProjectContext.cjs.js"),_=require("../utils/cellUtils.cjs.js"),_e=require("../hooks/usePasteLinks.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");const Le=require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const $=require("./clipboard/clipboardUtils.cjs.js"),Re=require("./clipboard/clipboardValidation.cjs.js"),z=require("./clipboard/clipboardSubtasks.cjs.js"),Oe=require("./clipboard/clipboardComments.cjs.js"),De=require("./ProjectTableContext.cjs.js");require("lodash");require("react-toastify");const ye=require("../../../util/getEntityId.cjs.js");require("../../../util/pubsub.cjs.js");const Ie=j.createContext(void 0),Ne=new Set(["version","version_entity","product","productBaseType","task_entity"]),$e={folder_entity:"folder",task_entity:"taskLabel",version_entity:"versionName"},Ae=({children:Y,entitiesMap:B,columnEnums:ce,columnReadOnly:ge,visibleColumns:Q})=>{const{selectedCells:M,gridMap:g,focusedCellId:qe}=Ee.useSelectionCellsContext(),{updateEntities:ue,history:ae}=ve.useCellEditing(),{pasteTableLinks:de}=_e(),{getEntityById:G,attribFields:J,tableData:pe}=De.useProjectTableContext(),fe=j.useMemo(()=>{const i=new Map,u=l=>{for(const d of l)i.set(d.id,d),d.subRows?.length&&u(d.subRows)};return u(pe||[]),i},[pe]),{projectName:Z}=Se.useProjectContext(),[ee]=Le.useUpdateSubtasksMutation(),le=j.useCallback(async(i,u)=>{const{headers:l,fullRow:d}=u||{};try{const E=Q.map(q=>q.id).filter(q=>q!==H.ROW_SELECTION_COLUMN_ID),k=new Map;i.forEach(q=>{const r=_.parseCellId(q);if(!r)return;const{rowId:c,colId:L}=r;L===H.ROW_SELECTION_COLUMN_ID||!E.includes(L)||(k.has(c)||k.set(c,new Set),k.get(c)?.add(L))}),d&&i.filter(r=>_.parseCellId(r)?.rowId&&_.parseCellId(r)?.colId===H.ROW_SELECTION_COLUMN_ID).map(r=>_.parseCellId(r)?.rowId).forEach(r=>{k.has(r)||k.set(r,new Set),Array.from(g.colIdToIndex.keys()).forEach(L=>{k.get(r)?.add(L)})});const b=Array.from(k.keys()).sort((q,r)=>{const c=g.rowIdToIndex.get(q)??1/0,L=g.rowIdToIndex.get(r)??1/0;return c-L});let A="";const se=b[0];if(!se)return"";const oe=Array.from(k.get(se)||[]).sort((q,r)=>{const c=g.colIdToIndex.get(q)??1/0,L=g.colIdToIndex.get(r)??1/0;return c-L});if(l&&oe.length>0){const q=[];for(const r of oe){const c=r;q.push(`${c.replace(/"/g,'""')}`)}A+=q.join(" ")+`
|
|
2
|
+
`}for(const q of b){const r=G(q);if(!r){console.warn(`Entity not found for rowId: ${q}`);continue}const c=fe.get(q),P=Array.from(k.get(q)||[]).sort((f,m)=>{const W=g.colIdToIndex.get(f)??1/0,F=g.colIdToIndex.get(m)??1/0;return W-F}).filter(f=>f!==H.ROW_SELECTION_COLUMN_ID),N=[];for(const f of P){let m="";if(f.startsWith("link_"))m=_.getLinkEntityIdsByColumnId(r.links,f);else if(f==="subtasks"){const R=_.getCellValue(r,f)||[];m=z.subtasksToTSV(R,r.id,r.name)}else if(f==="comments"){const R=_.getCellValue(r,"latestComments")||[];m=Oe.commentsToText(R)}else{const R=$e[f]||f;let e=_.getCellValue(r,R);if(f==="folder_entity"&&typeof e!="string"){const t=e||r.product?.folder,s="parents"in r?r.parents:void 0;e=t?.label||t?.name||s?.[s.length-1]||""}if(c&&(Ne.has(f)||e===void 0||e===null||e===""||typeof e=="object")){const t=_.getCellValue(c,R);t!=null&&t!==""&&(e=t)}if(!e){const t=J.find(s=>s.name===f.replace("attrib_",""));t&&t.data.type==="boolean"?e=!1:t&&t.data.type.includes("list_of")&&(e=[])}if(m=e!=null?String(e):"",f==="name"&&(m=$.getEntityPath(r.entityId||r.id,B)||c?.label||c?.name||r.label||r.name||""),f==="subType"){const t=c?.subType??r.subType;typeof t=="string"&&t?m=t:("folderType"in r&&(m=r.folderType||""),"taskType"in r&&(m=r.taskType||""))}}const W=m.replace(/"/g,'""'),F=f!=="subtasks"&&(m.includes(`
|
|
3
3
|
`)||m.includes(" ")||m.includes('"'));N.push(F?`"${W}"`:W)}A+=N.join(" ")+`
|
|
4
|
-
`}return A}catch(E){console.error("Failed to copy to clipboard:",E)}},[M,
|
|
5
|
-
`),
|
|
4
|
+
`}return A}catch(E){console.error("Failed to copy to clipboard:",E)}},[M,qe,g,B,G,Q,fe]),he=async()=>{const i=await be();if(!i)return!1;const u=$.parseClipboardText(i);return u.length===0?!1:u.every(l=>l.values.every(d=>d.split(",").every(E=>ye.validateEntityId(E))))},te=j.useCallback(async(i,u)=>{if(i=i||Array.from(M),!i.length)return;const l=await le(i,{fullRow:u});if(l){if(!navigator.clipboard){$.clipboardError("Clipboard API not supported in this browser.");return}if(!window.isSecureContext){$.clipboardError("Clipboard operations require a secure HTTPS context.");return}try{await navigator.clipboard.writeText(l)}catch(d){$.clipboardError(`Failed to copy to clipboard: ${d.message}`)}}},[M,B,g]),me=j.useCallback(async(i,u,l)=>{if(i=i||Array.from(M),!!i.length)try{const d=await le(i,{headers:!0,fullRow:l});if(!d)return;const E=new Blob([d],{type:"text/csv"}),k=URL.createObjectURL(E),b=document.createElement("a");b.href=k;const A=i.length;b.download=`${u}-export-${A}_cells-${new Date().toISOString().slice(0,10)}.csv`,b.click(),URL.revokeObjectURL(k)}catch(d){console.error("Failed to copy to clipboard:",d)}},[M,B,g,le]),be=async()=>{if(!navigator.clipboard){$.clipboardError("Clipboard API not supported in this browser.");return}if(!window.isSecureContext){$.clipboardError("Clipboard operations require a secure HTTPS context.");return}let i;try{return i=await navigator.clipboard.readText(),i}catch(u){$.clipboardError(`Failed to read from clipboard: ${u.message}`);return}},re=j.useCallback(async(i,u)=>{const{method:l="replace"}=u||{};if(!i.length)return;const d=await be();if(!d)return;let E=!1,k=d;z.isSubtasksTSV(d)&&(E=!0);const b=$.parseClipboardText(d);if(!b.length)return;const A=b.length===1&&b[0].values.length===1,se=Q.map(e=>e.id).filter(e=>e!==H.ROW_SELECTION_COLUMN_ID),oe=(e,t,s)=>{const y={};return s&&s.length>0?s.forEach((p,o)=>{const h=t.find(a=>a===p||a.replace("attrib_","")===p||a===`attrib_${p}`||a.toLowerCase()===p.toLowerCase());h&&o<e.values.length&&(y[h]=e.values[o])}):t.forEach((p,o)=>{o<e.values.length&&(y[p]=e.values[o])}),y},q=b[0]?.colIds||void 0,r=new Map;Array.from(i).forEach(e=>{const t=_.parseCellId(e);if(!t)return;const{rowId:s,colId:y}=t;y===H.ROW_SELECTION_COLUMN_ID||!se.includes(y)||(r.has(s)||r.set(s,new Set),r.get(s)?.add(y))});const c=Array.from(r.keys()).sort((e,t)=>{const s=g.rowIdToIndex.get(e)??1/0,y=g.rowIdToIndex.get(t)??1/0;return s-y}),L=c[0],P=Array.from(r.get(L)||[]).sort((e,t)=>{const s=g.colIdToIndex.get(e)??1/0,y=g.colIdToIndex.get(t)??1/0;return s-y});for(let e=0;e<c.length;e++){const t=c[e],s=_.getEntityDataById(t,B)?.entityType==="folder",y=e%b.length,p=b[y],o=A?{[P[0]]:b[0].values[0]}:oe(p,P,q);for(const h of P){const a=o[h]||"";if(!Re.validateClipboardData({colId:h,isFolder:s,pasteValue:a,parsedData:b,columnEnums:ce,columnReadOnly:ge,rowIndex:e,colIndex:P.indexOf(h),isSingleCellValue:A,attribFields:J}))return}}const N=new Map;for(let e=0;e<P.length;e++){const t=P[e];if(t==="name")continue;if(t==="subtasks"){let o=[],h=!1;if(E){const a=k.trim().split(`
|
|
5
|
+
`),I=a[0].toLowerCase(),O=I.includes("label")&&I.includes("name")&&I.includes("start date")&&I.includes("end date")&&I.includes("assignees")&&I.includes("status")?a.slice(1):a,D=new Map,K=[];O.forEach(V=>{const v=z.tsvToSubtasks(V);if(v.length===0)return;const C=v[0],U=`${C.taskId||""}|${C.taskName||""}`;D.has(U)||(D.set(U,[]),K.push(U)),D.get(U).push(C)}),K.forEach(V=>{const[v,C]=V.split("|");o.push({taskId:v||void 0,taskName:C||void 0,subtasks:D.get(V)||[]})}),h=o.length<=1}for(let a=0;a<c.length;a++){const I=c[a],w=_.getEntityDataById(I,B)?.entityType;if(w!=="task")continue;const O=G(I),D=O?.entityId||I,K=`${I}-${w}`;N.has(K)||N.set(K,{rowId:I,id:D,type:w,fields:{},attrib:{},links:{}});const V=N.get(K),v=O&&"subtasks"in O&&O.subtasks||[];V.previousSubtasks=v;let C=[];if(E){if(h&&o.length>0)C=o[0].subtasks;else if(o.length>0){const n=a%o.length;C=o[n].subtasks}}else if(A){const n=b[0].values[0];C=z.tsvToSubtasks(n)}else{const n=a%b.length,T=b[n],x=e%T.values.length,S=T.values[x];C=z.tsvToSubtasks(S)}if(!C||C.length===0)continue;const U=C.map((n,T)=>({id:ye.getEntityId(),name:z.sanitizeSubtaskName(n.name||n.label||`Subtask ${T+1}`),label:n.label||"",assignees:n.assignees||[],description:n.label||"",startDate:n.startDate,endDate:n.endDate,isDone:n.isDone||!1}));if(l==="merge"){const n=[...v],T=new Set(v.map(x=>{const S=(x.label||"").toLowerCase(),ne=(x.name||"").toLowerCase();return`${S}|${ne}`}));for(const x of U){const S=(x.label||"").toLowerCase(),ne=(x.name||"").toLowerCase(),ie=`${S}|${ne}`;T.has(ie)||n.push(x)}V.subtasks=n}else{const n=U.map(T=>{const x=v.find(S=>(S.label||"").toLowerCase()===(T.label||"").toLowerCase()&&(S.name||"").toLowerCase()===(T.name||"").toLowerCase());return{...T,id:x?.id||T.id}});V.subtasks=n}}continue}let s=!1,y=!1,p="string";if(c.length>0){const o=c[0];if(G(o))if(s=t.startsWith("attrib_"),y=t.startsWith("link_"),t==="status"||t==="subType")p="string",s=!1;else if(t==="tags"||t==="assignees")p="array";else if(s){const a=t.replace("attrib_",""),I=J.find(w=>w.name===a);if(I)switch(I.data.type){case"boolean":p="boolean";break;case"float":case"integer":p="number";break;case"list_of_strings":case"list_of_any":case"list_of_integers":case"list_of_submodels":p="array";break;default:p="string"}}else y&&(p="array")}for(let o=0;o<c.length;o++){const h=c[o],a=_.getEntityDataById(h,B)?.entityType,I=a==="folder";let w;if(A)w=b[0].values[0];else{const U=o%b.length,n=b[U];if(n.values.length>P.length){const T=g.colIdToIndex.get(P[0])??0,x=Array.from(g.colIdToIndex.keys()).filter(X=>X!==H.ROW_SELECTION_COLUMN_ID).sort((X,Te)=>{const we=g.colIdToIndex.get(X)??1/0,ke=g.colIdToIndex.get(Te)??1/0;return we-ke}),S=x.findIndex(X=>g.colIdToIndex.get(X)===T),ie=x.slice(S,S+n.values.length).indexOf(t);w=n.values[ie]||n.values[ie%n.values.length]}else{const T=e%n.values.length;w=n.values[T]}}let O=t.split("_").pop()||t;if(t==="subType"&&(O=I?"folderType":"taskType",s=!1,!w))continue;const D=$.processFieldValue(w,p),V=G(h)?.entityId||h,v=`${h}-${a}`;!N.has(v)&&a&&N.set(v,{rowId:h,id:V,type:a,fields:{},attrib:{},links:{}});const C=N.get(v);if(y){const[U,n,T,x,S]=t.split("_");C.links[`${n}|${T}|${x}_${S}`]=D}else s?C.attrib[O]=D:C.fields[O]=D}}const f=[],m=new Map;N.forEach(e=>{Object.entries(e.fields).forEach(([t,s])=>{f.push({rowId:e.rowId,id:e.id,type:e.type,field:t,value:s})}),Object.entries(e.attrib).forEach(([t,s])=>{f.push({rowId:e.rowId,id:e.id,type:e.type,field:t,value:s,isAttrib:!0})}),Object.entries(e.links).forEach(([t,s])=>{const[y,p]=t.split("_"),o=y.split("|");if(o.length>=3){const h=o[0],a=o[1],I=o[2],w=`${h}|${a}|${I}`,O=p==="out"?I:a,D=`${e.id}-${w}-${p}`;m.set(D,{rowId:e.rowId,sourceEntityId:e.id,sourceEntityType:e.type,linkType:w,direction:p,targetEntityType:O,operation:l,targetEntityIds:Array.isArray(s)?s:[]})}})});const W=Array.from(m.values()),F=[];N.forEach(e=>{e.subtasks&&F.push({taskId:e.id,subtasks:e.subtasks,previousSubtasks:e.previousSubtasks})});const R=[];if(f.length>0&&R.push(ue(f)),W.length>0&&R.push(de(W)),F.length>0){ae&&F.forEach(({taskId:t,subtasks:s,previousSubtasks:y})=>{const p=y||[],o=s||[],h=()=>{ee({projectName:Z,taskId:t,subtasks:p}).unwrap().catch(()=>{})},a=()=>{ee({projectName:Z,taskId:t,subtasks:o}).unwrap().catch(()=>{})};ae.pushHistory([h],[a])});const e=F.map(({taskId:t,subtasks:s})=>ee({projectName:Z,taskId:t,subtasks:s}).unwrap());R.push(...e)}if(R.length>0)try{await Promise.all(R)}catch(e){console.error("Error updating entities:",e),$.clipboardError(`Paste failed: ${e||e?.message||"Unknown error"}`)}},[M,g,B,ue,de,ce,G,Q,J,Z,ee,ae]);j.useEffect(()=>{const i=async u=>{if((u.ctrlKey||u.metaKey)&&u.key==="c"){const l=document.activeElement,d=l?.closest("table")!==null||l?.closest(".table-container")!==null||l?.tagName==="TD"||l?.tagName==="TH",E=l?.tagName==="INPUT"||l?.tagName==="TEXTAREA"||l?.isContentEditable;if((window.getSelection()?.toString().length??!1)&&!d||E&&!d)return;M.size>0&&await te()}if((u.ctrlKey||u.metaKey)&&u.key==="v"){const l=document.activeElement;if(l&&(l.tagName==="INPUT"||l.tagName==="TEXTAREA"||l.isContentEditable))if(await he())u.preventDefault();else return;re(Array.from(M),{method:u.shiftKey?"merge":"replace"})}};return window.addEventListener("keydown",i),()=>{window.removeEventListener("keydown",i)}},[te,re]);const Ce=j.useMemo(()=>({copyToClipboard:te,pasteFromClipboard:re,exportCSV:me}),[te,re]);return xe.jsxRuntimeExports.jsx(Ie.Provider,{value:Ce,children:Y})},Pe=()=>{const Y=j.useContext(Ie);if(Y===void 0)throw new Error("useClipboard must be used within a ClipboardProvider");return Y};exports.ClipboardProvider=Ae;exports.useClipboard=Pe;
|
|
6
6
|
//# sourceMappingURL=ClipboardContext.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipboardContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ClipboardContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useMemo } from 'react'\n\n// Contexts\nimport { ROW_SELECTION_COLUMN_ID } from '../constants'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport { useCellEditing } from './CellEditingContext'\nimport { useProjectContext } from '@shared/context'\n\n// Utils\nimport {\n getCellValue,\n getEntityDataById,\n getLinkEntityIdsByColumnId,\n parseCellId,\n} from '../utils/cellUtils'\n\n// Types\nimport { TableRow } from '../types/table'\nimport { EntityUpdate } from '../hooks/useUpdateTableData'\nimport usePasteLinks, { LinkUpdate } from '../hooks/usePasteLinks'\nimport { useUpdateSubtasksMutation } from '@shared/api'\n\n// Import from the new modular files\nimport {\n getEntityPath,\n parseClipboardText,\n clipboardError,\n processFieldValue,\n subtasksToTSV,\n isSubtasksTSV,\n tsvToSubtasks,\n sanitizeSubtaskName,\n commentsToText,\n} from './clipboard'\nimport { validateClipboardData } from './clipboard/clipboardValidation'\nimport { ClipboardContextType, ClipboardProviderProps } from './clipboard/clipboardTypes'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport { validateEntityId, getEntityId } from '@shared/util'\n\nconst ClipboardContext = createContext<ClipboardContextType | undefined>(undefined)\n\nconst DISPLAY_PREFERRED_COLS = new Set([\n 'version',\n 'version_entity',\n 'product',\n 'productBaseType',\n 'task_entity',\n])\n\nconst DISPLAY_COLUMN_FIELDS: Record<string, string> = {\n folder_entity: 'folder',\n task_entity: 'taskLabel',\n version_entity: 'versionName',\n}\n\nexport const ClipboardProvider: React.FC<ClipboardProviderProps> = ({\n children,\n entitiesMap,\n columnEnums,\n columnReadOnly,\n visibleColumns,\n}) => {\n // Get selection information from SelectionContext\n const { selectedCells, gridMap, focusedCellId } = useSelectionCellsContext()\n const { updateEntities, history } = useCellEditing()\n const { pasteTableLinks } = usePasteLinks()\n const { getEntityById, attribFields, tableData } = useProjectTableContext()\n\n const displayRowsById = useMemo(() => {\n const map = new Map<string, TableRow>()\n const walk = (rows: TableRow[]) => {\n for (const row of rows) {\n map.set(row.id, row)\n if (row.subRows?.length) walk(row.subRows as TableRow[])\n }\n }\n walk(tableData || [])\n return map\n }, [tableData])\n const { projectName } = useProjectContext()\n const [updateSubtasks] = useUpdateSubtasksMutation()\n\n const getSelectionData = useCallback(\n async (selected: string[], config?: { headers?: boolean; fullRow?: boolean }) => {\n const { headers, fullRow } = config || {}\n try {\n // Get visible columns in display order, excluding row selection\n const visibleColumnIds = visibleColumns\n .map((col) => col.id)\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n\n // Organize selected cells by row, filtering to only visible columns\n const cellsByRow = new Map<string, Set<string>>()\n\n // Parse all selected cells and organize by rowId and colId\n selected.forEach((cellId) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n const { rowId, colId } = position\n if (colId === ROW_SELECTION_COLUMN_ID || !visibleColumnIds.includes(colId)) return\n\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n\n cellsByRow.get(rowId)?.add(colId)\n })\n\n if (fullRow) {\n const selectedRows = selected\n .filter(\n (cellId) =>\n parseCellId(cellId)?.rowId &&\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID,\n )\n .map((cellId) => parseCellId(cellId)?.rowId) as string[]\n\n // select the whole row\n // For rows with selection cells, add all available columns\n selectedRows.forEach((rowId) => {\n // add the rowId if it doesn't exist\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n const allColumns = Array.from(gridMap.colIdToIndex.keys())\n allColumns.forEach((colId) => {\n cellsByRow.get(rowId)?.add(colId)\n })\n })\n }\n\n // Get sorted row IDs based on their index in the grid\n const sortedRows = Array.from(cellsByRow.keys()).sort((a, b) => {\n const indexA = gridMap.rowIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.rowIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Build clipboard text\n let clipboardText = ''\n\n // Get the first row to determine columns\n const firstRowId = sortedRows[0]\n if (!firstRowId) return ''\n\n // Get all column IDs for the first row, sorted by their index in the grid\n const colIds = Array.from(cellsByRow.get(firstRowId) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Include headers if requested\n if (headers && colIds.length > 0) {\n const headerValues: string[] = []\n\n for (const colId of colIds) {\n // Use colId as the column name since we don't have direct access to column names\n const columnName = colId\n headerValues.push(`${columnName.replace(/\"/g, '\"\"')}`)\n }\n\n clipboardText += headerValues.join('\\t') + '\\n'\n }\n\n for (const rowId of sortedRows) {\n // Get the entity for this row\n const entity = getEntityById(rowId)\n\n if (!entity) {\n console.warn(`Entity not found for rowId: ${rowId}`)\n continue\n }\n\n const displayRow = displayRowsById.get(rowId)\n\n // Get all column IDs for this row, sorted by their index in the grid\n const colIds = Array.from(cellsByRow.get(rowId) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Filter out the row selection column from the copied data\n const filteredColIds = colIds.filter((colId) => colId !== ROW_SELECTION_COLUMN_ID)\n\n const rowValues: string[] = []\n\n // For each column in this row\n for (const colId of filteredColIds) {\n // Determine the value based on the column ID\n let cellValue = ''\n\n // special handling of link cells\n if (colId.startsWith('link_')) {\n // @ts-expect-error - only complaining about missing __typename\n cellValue = getLinkEntityIdsByColumnId(entity.links, colId)\n } else if (colId === 'subtasks') {\n // Special handling for subtasks - convert to TSV format\n // @ts-ignore\n const subtasks = getCellValue(entity, colId) || []\n cellValue = subtasksToTSV(subtasks, entity.id, entity.name)\n } else if (colId === 'comments') {\n // @ts-ignore\n const comments = getCellValue(entity, 'latestComments') || []\n cellValue = commentsToText(comments)\n } else {\n // @ts-ignore\n const sourceField = DISPLAY_COLUMN_FIELDS[colId] || colId\n let foundValue = getCellValue(entity, sourceField)\n\n // folder is an object on some entities (product/task) or nested under\n // product (version) - copy the display name the cell shows,\n // falling back to the last parent (parent folder name on tasks/folders)\n if (colId === 'folder_entity' && typeof foundValue !== 'string') {\n const folder = foundValue || (entity as any).product?.folder\n const parents = 'parents' in entity ? entity.parents : undefined\n foundValue = folder?.label || folder?.name || parents?.[parents.length - 1] || ''\n }\n\n // Raw entity nodes (flat lists) either lack display-computed columns or hold a\n // non-string value (product/task object, numeric version) — prefer the built\n // display row, which is exactly what the cell shows.\n if (\n displayRow &&\n (DISPLAY_PREFERRED_COLS.has(colId) ||\n foundValue === undefined ||\n foundValue === null ||\n foundValue === '' ||\n typeof foundValue === 'object')\n ) {\n const displayValue = getCellValue(displayRow, sourceField)\n if (displayValue !== undefined && displayValue !== null && displayValue !== '') {\n foundValue = displayValue\n }\n }\n\n if (!foundValue) {\n // we should look for the default value set out in attribFields\n const field = attribFields.find((f) => f.name === colId.replace('attrib_', ''))\n if (field && field.data.type === 'boolean') {\n foundValue = false // default boolean value\n } else if (field && field.data.type.includes('list_of')) {\n foundValue = [] // default list value\n }\n }\n\n // convert to string if foundValue is not undefined or null use empty string otherwise\n cellValue = foundValue !== undefined && foundValue !== null ? String(foundValue) : ''\n\n // Hierarchical tables resolve a full path; flat lists (raw nodes keyed by row id)\n // can't, so fall back to the built display row label/name the cell shows\n if (colId === 'name') {\n cellValue =\n getEntityPath(entity.entityId || entity.id, entitiesMap) ||\n (displayRow as any)?.label ||\n displayRow?.name ||\n (entity as any).label ||\n entity.name ||\n ''\n }\n\n if (colId === 'subType') {\n // built display rows resolve subType (folder/task/product); raw nodes fall back to type fields\n const resolvedSubType = (displayRow as any)?.subType ?? (entity as any).subType\n if (typeof resolvedSubType === 'string' && resolvedSubType) {\n cellValue = resolvedSubType\n } else {\n if ('folderType' in entity) {\n cellValue = entity.folderType || ''\n }\n if ('taskType' in entity) {\n cellValue = entity.taskType || ''\n }\n }\n }\n }\n\n // Wrap multi-line / tab / quote values in quotes so spreadsheets keep them in one\n // cell. Subtasks embed tabs+newlines as real grid structure for paste round-trips —\n // leave them raw so they stay multi-row/column.\n const escaped = cellValue.replace(/\"/g, '\"\"')\n const needsQuoting =\n colId !== 'subtasks' &&\n (cellValue.includes('\\n') || cellValue.includes('\\t') || cellValue.includes('\"'))\n rowValues.push(needsQuoting ? `\"${escaped}\"` : escaped)\n }\n\n // Add row to clipboard text\n clipboardText += rowValues.join('\\t') + '\\n'\n }\n\n return clipboardText\n } catch (error) {\n console.error('Failed to copy to clipboard:', error)\n }\n },\n [\n selectedCells,\n focusedCellId,\n gridMap,\n entitiesMap,\n getEntityById,\n visibleColumns,\n displayRowsById,\n ],\n )\n\n const doesClipboardContainId = async () => {\n // check if the clipboard contains a valid ID\n const clipboardText = await getClipboardString()\n if (!clipboardText) return false\n const parsedData = parseClipboardText(clipboardText)\n if (parsedData.length === 0) return false\n return parsedData.every((row) => {\n return row.values.every((value) => value.split(',').every((v) => validateEntityId(v)))\n })\n }\n\n const copyToClipboard: ClipboardContextType['copyToClipboard'] = useCallback(\n async (selected, fullRow) => {\n selected = selected || Array.from(selectedCells)\n if (!selected.length) return\n const clipboardText = await getSelectionData(selected, { fullRow })\n if (!clipboardText) {\n return\n }\n if (!navigator.clipboard) {\n clipboardError('Clipboard API not supported in this browser.')\n return\n }\n if (!window.isSecureContext) {\n clipboardError('Clipboard operations require a secure HTTPS context.')\n return\n }\n try {\n await navigator.clipboard.writeText(clipboardText)\n } catch (error: any) {\n clipboardError(`Failed to copy to clipboard: ${error.message}`)\n }\n },\n [selectedCells, entitiesMap, gridMap],\n )\n\n const exportCSV: ClipboardContextType['exportCSV'] = useCallback(\n async (selected, projectName, fullRow) => {\n selected = selected || Array.from(selectedCells)\n if (!selected.length) return\n\n try {\n // Get clipboard text with headers included for CSV export\n const clipboardText = await getSelectionData(selected, { headers: true, fullRow })\n if (!clipboardText) return\n\n // create a csv file and download it\n const blob = new Blob([clipboardText], { type: 'text/csv' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n const selectedCount = selected.length\n a.download = `${projectName}-export-${selectedCount}_cells-${new Date()\n .toISOString()\n .slice(0, 10)}.csv`\n a.click()\n URL.revokeObjectURL(url)\n } catch (error) {\n console.error('Failed to copy to clipboard:', error)\n }\n },\n [selectedCells, entitiesMap, gridMap, getSelectionData],\n )\n\n const getClipboardString = async (): Promise<string | void> => {\n if (!navigator.clipboard) {\n clipboardError('Clipboard API not supported in this browser.')\n return\n }\n if (!window.isSecureContext) {\n clipboardError('Clipboard operations require a secure HTTPS context.')\n return\n }\n let clipboardText: string\n try {\n clipboardText = await navigator.clipboard.readText()\n return clipboardText\n } catch (error: any) {\n clipboardError(`Failed to read from clipboard: ${error.message}`)\n return\n }\n }\n\n const pasteFromClipboard: ClipboardContextType['pasteFromClipboard'] = useCallback(\n async (selected, config) => {\n const { method = 'replace' } = config || {}\n if (!selected.length) return\n\n const clipboardText = await getClipboardString()\n if (!clipboardText) return\n\n // Check if this is subtasks TSV data first, before normal parsing\n let isSubtasksData = false\n let subtasksClipboardText = clipboardText\n if (isSubtasksTSV(clipboardText)) {\n isSubtasksData = true\n }\n\n // Parse the clipboard text\n const parsedData = parseClipboardText(clipboardText)\n if (!parsedData.length) return\n\n // Determine if we have a single value in the clipboard (one row, one column)\n const isSingleCellValue = parsedData.length === 1 && parsedData[0].values.length === 1\n\n // Get visible columns in display order, excluding row selection\n const visibleColumnIds = visibleColumns\n .map((col) => col.id)\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n\n // Helper function to map clipboard values to visible columns\n const mapClipboardToVisibleColumns = (\n clipboardRow: any,\n visibleColumnIds: string[],\n clipboardHeaders?: string[],\n ) => {\n const mappedValues: Record<string, string> = {}\n\n if (clipboardHeaders && clipboardHeaders.length > 0) {\n // Map by header names when available\n clipboardHeaders.forEach((header: string, index: number) => {\n const matchingColId = visibleColumnIds.find(\n (colId) =>\n colId === header ||\n colId.replace('attrib_', '') === header ||\n colId === `attrib_${header}` ||\n colId.toLowerCase() === header.toLowerCase(),\n )\n\n if (matchingColId && index < clipboardRow.values.length) {\n mappedValues[matchingColId] = clipboardRow.values[index]\n }\n })\n } else {\n // Fallback: map by position, but only to visible columns\n visibleColumnIds.forEach((colId, index) => {\n if (index < clipboardRow.values.length) {\n mappedValues[colId] = clipboardRow.values[index]\n }\n })\n }\n\n return mappedValues\n }\n\n // Extract headers if they exist (assuming first row might be headers from external source)\n // You might need to detect this differently based on your clipboard format\n const clipboardHeaders = parsedData[0]?.colIds || undefined\n\n // Organize selected cells by row, filtering to only visible columns\n const cellsByRow = new Map<string, Set<string>>()\n\n Array.from(selected).forEach((cellId) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n const { rowId, colId } = position\n if (colId === ROW_SELECTION_COLUMN_ID || !visibleColumnIds.includes(colId)) return\n\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n cellsByRow.get(rowId)?.add(colId)\n })\n\n // Get sorted row IDs and column IDs\n const sortedRows = Array.from(cellsByRow.keys()).sort((a, b) => {\n const indexA = gridMap.rowIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.rowIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n const firstRow = sortedRows[0]\n const selectedColIds = Array.from(cellsByRow.get(firstRow) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // First pass: validate all values\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const isFolder = getEntityDataById<'folder'>(rowId, entitiesMap)?.entityType === 'folder'\n\n const pasteRowIndex = rowIndex % parsedData.length\n const clipboardRow = parsedData[pasteRowIndex]\n\n // Map clipboard data to visible columns\n const mappedValues = isSingleCellValue\n ? { [selectedColIds[0]]: parsedData[0].values[0] }\n : mapClipboardToVisibleColumns(clipboardRow, selectedColIds, clipboardHeaders)\n\n // Validate each mapped value\n for (const colId of selectedColIds) {\n const pasteValue = mappedValues[colId] || ''\n\n const isValid = validateClipboardData({\n colId,\n isFolder,\n pasteValue,\n parsedData,\n columnEnums,\n columnReadOnly,\n rowIndex,\n colIndex: selectedColIds.indexOf(colId),\n isSingleCellValue,\n attribFields,\n })\n\n if (!isValid) return\n }\n }\n\n // Create a map to consolidate updates for the same entity\n const entitiesToUpdateMap = new Map<\n string,\n {\n rowId: string\n id: string\n type: string\n fields: Record<string, any>\n attrib: Record<string, any>\n links: Record<string, string[]>\n subtasks?: any[]\n previousSubtasks?: any[]\n }\n >()\n\n // For each column, prepare updates\n for (let colIndex = 0; colIndex < selectedColIds.length; colIndex++) {\n const colId = selectedColIds[colIndex]\n\n // Skip special handling for 'name' which we don't want to paste\n if (colId === 'name') continue\n\n // Special handling for subtasks column\n if (colId === 'subtasks') {\n // For subtasks, group them by source task so each group can be applied to different cells\n let subtaskGroups: Array<{ taskId?: string; taskName?: string; subtasks: any[] }> = []\n let isFromSingleSourceTask = false\n\n if (isSubtasksData) {\n // Parse all subtask data to understand the source grouping\n const allLines = subtasksClipboardText.trim().split('\\n')\n\n // Check for header\n const firstLine = allLines[0].toLowerCase()\n const hasHeader =\n firstLine.includes('label') &&\n firstLine.includes('name') &&\n firstLine.includes('start date') &&\n firstLine.includes('end date') &&\n firstLine.includes('assignees') &&\n firstLine.includes('status')\n\n const dataLines = hasHeader ? allLines.slice(1) : allLines\n\n // Parse all lines and group by source taskId\n const groupMap = new Map<string, any[]>()\n const groupOrder: string[] = []\n\n dataLines.forEach((line) => {\n const parsed = tsvToSubtasks(line)\n if (parsed.length === 0) return\n\n const subtask = parsed[0]\n const groupKey = `${subtask.taskId || ''}|${subtask.taskName || ''}`\n\n if (!groupMap.has(groupKey)) {\n groupMap.set(groupKey, [])\n groupOrder.push(groupKey)\n }\n groupMap.get(groupKey)!.push(subtask)\n })\n\n // Create groups in order\n groupOrder.forEach((groupKey) => {\n const [taskId, taskName] = groupKey.split('|')\n subtaskGroups.push({\n taskId: taskId || undefined,\n taskName: taskName || undefined,\n subtasks: groupMap.get(groupKey) || [],\n })\n })\n\n // Check if all subtasks come from the same source task\n isFromSingleSourceTask = subtaskGroups.length <= 1\n }\n\n // Handle subtasks paste for each selected row\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const entityType = getEntityDataById(rowId, entitiesMap)?.entityType\n\n // Subtasks only apply to tasks\n if (entityType !== 'task') continue\n\n // Get entity to access entityId (important for list items where rowId is list item ID)\n const entity = getEntityById(rowId)\n const actualEntityId = entity?.entityId || rowId\n\n // Get or create entity entry in the map\n const entityKey = `${rowId}-${entityType}`\n if (!entitiesToUpdateMap.has(entityKey)) {\n entitiesToUpdateMap.set(entityKey, {\n rowId,\n id: actualEntityId,\n type: entityType,\n fields: {},\n attrib: {},\n links: {},\n })\n }\n\n const entityData = entitiesToUpdateMap.get(entityKey)!\n // Get existing subtasks from entity\n const existingSubtasks = (entity && 'subtasks' in entity && entity.subtasks) || []\n // store previous subtasks for history/undo\n entityData.previousSubtasks = existingSubtasks\n\n let subtasksToProcess: any[] = []\n\n if (isSubtasksData) {\n if (isFromSingleSourceTask && subtaskGroups.length > 0) {\n // All subtasks from one source - apply to all cells\n subtasksToProcess = subtaskGroups[0].subtasks\n } else if (subtaskGroups.length > 0) {\n // Multiple groups - distribute by row (like regular data does with modulo)\n const groupIndex = rowIndex % subtaskGroups.length\n subtasksToProcess = subtaskGroups[groupIndex].subtasks\n }\n } else {\n // For parsed clipboard data, get the appropriate row\n if (isSingleCellValue) {\n const pasteValue = parsedData[0].values[0]\n subtasksToProcess = tsvToSubtasks(pasteValue)\n } else {\n const pasteRowIndex = rowIndex % parsedData.length\n const clipboardRow = parsedData[pasteRowIndex]\n const pasteColIndex = colIndex % clipboardRow.values.length\n const pasteValue = clipboardRow.values[pasteColIndex]\n subtasksToProcess = tsvToSubtasks(pasteValue)\n }\n }\n\n // Skip if no subtasks to process\n if (!subtasksToProcess || subtasksToProcess.length === 0) continue\n\n // Create normalized subtasks from parsed data\n const newSubtasks = subtasksToProcess.map((st, index) => ({\n id: getEntityId(),\n name: sanitizeSubtaskName(st.name || st.label || `Subtask ${index + 1}`),\n label: st.label || '',\n assignees: st.assignees || [],\n description: st.label || '',\n startDate: st.startDate,\n endDate: st.endDate,\n isDone: st.isDone || false,\n }))\n\n // Handle merge vs replace\n if (method === 'merge') {\n // Merge new subtasks with existing ones, removing duplicates by label and name\n const mergedSubtasks = [...existingSubtasks]\n const existingIdentifiers = new Set(\n existingSubtasks.map((st) => {\n const label = (st.label || '').toLowerCase()\n const name = (st.name || '').toLowerCase()\n return `${label}|${name}`\n }),\n )\n\n // Add new subtasks that don't already exist\n for (const newSubtask of newSubtasks) {\n const label = (newSubtask.label || '').toLowerCase()\n const name = (newSubtask.name || '').toLowerCase()\n const identifier = `${label}|${name}`\n if (!existingIdentifiers.has(identifier)) {\n mergedSubtasks.push(newSubtask)\n }\n }\n entityData.subtasks = mergedSubtasks\n } else {\n // Replace mode: use new subtasks, preserving IDs for any matching label and name\n const replacedSubtasks = newSubtasks.map((newSt) => {\n // Try to find existing subtask with matching label and name to preserve ID\n const existingMatch = existingSubtasks.find(\n (est) =>\n (est.label || '').toLowerCase() === (newSt.label || '').toLowerCase() &&\n (est.name || '').toLowerCase() === (newSt.name || '').toLowerCase(),\n )\n return {\n ...newSt,\n id: existingMatch?.id || newSt.id,\n }\n })\n entityData.subtasks = replacedSubtasks\n }\n }\n continue\n }\n\n // Check if this is an attribute field by examining the first entity\n let isAttrib = false,\n isLink = false\n // Check if the field potentially contains array values\n let fieldValueType: 'string' | 'number' | 'boolean' | 'array' = 'string'\n\n if (sortedRows.length > 0) {\n const firstRowId = sortedRows[0]\n const entity = getEntityById(firstRowId)\n if (entity) {\n isAttrib = colId.startsWith('attrib_')\n isLink = colId.startsWith('link_')\n\n // Determine field type based on type or attrib type\n if (colId === 'status' || colId === 'subType') {\n // status and subType are strings\n fieldValueType = 'string'\n // special case to avoid treating subType as attrib (not sure if this is needed)\n isAttrib = false\n } else if (colId === 'tags' || colId === 'assignees') {\n // tags and assignees are always arrays\n fieldValueType = 'array'\n } else if (isAttrib) {\n // find type based on attribFields\n const fieldName = colId.replace('attrib_', '')\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (attribField) {\n const dataType = attribField.data.type\n switch (dataType) {\n case 'boolean':\n fieldValueType = 'boolean'\n break\n case 'float':\n case 'integer':\n fieldValueType = 'number'\n break\n case 'list_of_strings':\n case 'list_of_any':\n case 'list_of_integers':\n case 'list_of_submodels':\n fieldValueType = 'array'\n break\n default:\n // everything else is string\n fieldValueType = 'string'\n }\n }\n } else if (isLink) {\n // links are always arrays\n fieldValueType = 'array'\n }\n }\n }\n\n // Process each row individually\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const entityType = getEntityDataById(rowId, entitiesMap)?.entityType\n const isFolder = entityType === 'folder'\n\n // Get the appropriate value from the clipboard data\n let pasteValue\n if (isSingleCellValue) {\n pasteValue = parsedData[0].values[0]\n } else {\n const pasteRowIndex = rowIndex % parsedData.length\n // Map visible column index to clipboard data index\n // When clipboard contains hidden columns, we need to skip over values\n // that correspond to hidden columns when pasting to visible columns\n const clipboardRow = parsedData[pasteRowIndex]\n\n // If clipboard has more values than visible columns being pasted to,\n // it likely contains hidden column data. We need to reconstruct the original\n // column order that was copied by finding which columns would have been included.\n if (clipboardRow.values.length > selectedColIds.length) {\n // The clipboard data was created from consecutive columns in grid order.\n // We need to find which consecutive columns would result in this clipboard data.\n // Start from the first visible column and extend the range to match clipboard length.\n const firstVisibleColIndex = gridMap.colIdToIndex.get(selectedColIds[0]) ?? 0\n\n // Get all columns sorted by grid position\n const allGridColumns = Array.from(gridMap.colIdToIndex.keys())\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n .sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Find the starting position in the grid columns array\n const startGridPos = allGridColumns.findIndex(\n (id) => gridMap.colIdToIndex.get(id) === firstVisibleColIndex,\n )\n\n // The original copied columns are the consecutive ones starting from this position\n const originalCopiedColumns = allGridColumns.slice(\n startGridPos,\n startGridPos + clipboardRow.values.length,\n )\n\n // Find this column's position in the original copied columns\n const clipboardColIndex = originalCopiedColumns.indexOf(colId)\n pasteValue =\n clipboardRow.values[clipboardColIndex] ||\n clipboardRow.values[clipboardColIndex % clipboardRow.values.length]\n // Pasting value from hidden columns detection\n } else {\n // Normal case: map clipboard column index using modulo\n const pasteColIndex = colIndex % clipboardRow.values.length\n pasteValue = clipboardRow.values[pasteColIndex]\n // Pasting value normally\n }\n }\n\n let fieldToUpdate = colId.split('_').pop() || colId\n\n // Special handling for subType (convert to folderType or taskType)\n if (colId === 'subType') {\n fieldToUpdate = isFolder ? 'folderType' : 'taskType'\n isAttrib = false\n\n // Skip empty values for enum fields\n if (!pasteValue) continue\n }\n\n // Process the value based on its type\n const processedValue = processFieldValue(pasteValue, fieldValueType)\n\n // Get entity to access entityId (important for list items where rowId is list item ID)\n const entity = getEntityById(rowId)\n const actualEntityId = entity?.entityId || rowId\n\n // Get or create entity entry in the map\n const entityKey = `${rowId}-${entityType}`\n if (!entitiesToUpdateMap.has(entityKey) && entityType) {\n entitiesToUpdateMap.set(entityKey, {\n rowId,\n id: actualEntityId,\n type: entityType,\n fields: {},\n attrib: {},\n links: {},\n })\n }\n\n const entityData = entitiesToUpdateMap.get(entityKey)!\n\n // Add the field to the appropriate place\n if (isLink) {\n const [_link, linkType, inType, outType, direction] = colId.split('_')\n // final-task|folder|task\n entityData.links[`${linkType}|${inType}|${outType}_${direction}`] = processedValue\n } else if (isAttrib) {\n entityData.attrib[fieldToUpdate] = processedValue\n } else {\n entityData.fields[fieldToUpdate] = processedValue\n }\n }\n }\n\n // Convert the consolidated map to EntityUpdate array and LinkUpdate array\n const allEntityUpdates: EntityUpdate[] = []\n const linkUpdatesMap = new Map<string, LinkUpdate>()\n\n entitiesToUpdateMap.forEach((entity) => {\n // For regular fields, create one update per field\n Object.entries(entity.fields).forEach(([field, value]) => {\n allEntityUpdates.push({\n rowId: entity.rowId,\n id: entity.id,\n type: entity.type,\n field,\n value,\n })\n })\n\n // For attributes, create one update per attribute\n Object.entries(entity.attrib).forEach(([field, value]) => {\n allEntityUpdates.push({\n rowId: entity.rowId,\n id: entity.id,\n type: entity.type,\n field,\n value,\n isAttrib: true,\n })\n })\n\n // For links, create LinkUpdate objects\n Object.entries(entity.links).forEach(([linkKey, targetEntityIds]) => {\n // Parse the linkKey: \"linkType|inType|outType_direction\"\n const [linkTypePart, direction] = linkKey.split('_')\n const linkTypeParts = linkTypePart.split('|')\n\n if (linkTypeParts.length >= 3) {\n const linkTypeName = linkTypeParts[0]\n const inType = linkTypeParts[1]\n const outType = linkTypeParts[2]\n\n // Reconstruct the full linkType in the required format: name|input_type|output_type\n const linkType = `${linkTypeName}|${inType}|${outType}`\n\n // Determine target entity type based on direction\n const targetEntityType = direction === 'out' ? outType : inType\n\n // Create a unique key for this link operation\n const linkUpdateKey = `${entity.id}-${linkType}-${direction}`\n\n linkUpdatesMap.set(linkUpdateKey, {\n rowId: entity.rowId,\n sourceEntityId: entity.id,\n sourceEntityType: entity.type,\n linkType,\n direction: direction as 'in' | 'out',\n targetEntityType,\n operation: method,\n targetEntityIds: Array.isArray(targetEntityIds) ? targetEntityIds : [],\n })\n }\n })\n })\n\n const allLinkUpdates = Array.from(linkUpdatesMap.values())\n\n // Collect subtasks updates\n const subtasksUpdates: Array<{ taskId: string; subtasks: any[]; previousSubtasks?: any[] }> =\n []\n entitiesToUpdateMap.forEach((entity) => {\n if (entity.subtasks) {\n subtasksUpdates.push({\n taskId: entity.id,\n subtasks: entity.subtasks,\n previousSubtasks: entity.previousSubtasks,\n })\n }\n })\n\n // Make separate calls to update entities, links, and subtasks\n const updatePromises: Promise<void>[] = []\n\n if (allEntityUpdates.length > 0) {\n updatePromises.push(updateEntities(allEntityUpdates))\n }\n\n if (allLinkUpdates.length > 0) {\n updatePromises.push(pasteTableLinks(allLinkUpdates))\n }\n\n if (subtasksUpdates.length > 0) {\n // push undo/redo history entries for subtasks updates\n if (history) {\n subtasksUpdates.forEach(({ taskId, subtasks, previousSubtasks }) => {\n const prev = previousSubtasks || []\n const next = subtasks || []\n const undoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: prev })\n .unwrap()\n .catch(() => {})\n }\n const redoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: next })\n .unwrap()\n .catch(() => {})\n }\n history.pushHistory([undoCallback], [redoCallback])\n })\n }\n // Update subtasks for each task\n const subtasksPromises = subtasksUpdates.map(({ taskId, subtasks }) =>\n updateSubtasks({ projectName, taskId, subtasks }).unwrap(),\n )\n updatePromises.push(...subtasksPromises)\n }\n\n if (updatePromises.length > 0) {\n try {\n await Promise.all(updatePromises)\n } catch (error: any) {\n console.error('Error updating entities:', error)\n clipboardError(`Paste failed: ${error || error?.message || 'Unknown error'}`)\n }\n }\n },\n [\n selectedCells,\n gridMap,\n entitiesMap,\n updateEntities,\n pasteTableLinks,\n columnEnums,\n getEntityById,\n visibleColumns,\n attribFields,\n projectName,\n updateSubtasks,\n history,\n ],\n )\n\n // Set up keyboard event listeners\n useEffect(() => {\n const handleKeyDown = async (e: KeyboardEvent) => {\n // Copy functionality (Ctrl+C or Command+C)\n if ((e.ctrlKey || e.metaKey) && e.key === 'c') {\n const activeEl = document.activeElement as HTMLElement | null\n\n const isTableFocused =\n activeEl?.closest('table') !== null ||\n activeEl?.closest('.table-container') !== null ||\n activeEl?.tagName === 'TD' ||\n activeEl?.tagName === 'TH'\n\n // Check if there's a text selection in an input/textarea/contenteditable\n const isEditableElement =\n activeEl?.tagName === 'INPUT' ||\n activeEl?.tagName === 'TEXTAREA' ||\n activeEl?.isContentEditable\n\n const hasTextSelection = window.getSelection()?.toString().length ?? 0 > 0\n\n // If user has text selected elsewhere, let browser copy that\n if (hasTextSelection && !isTableFocused) {\n return // Let browser handle\n }\n\n // If focus is in an editable element, let browser handle\n if (isEditableElement && !isTableFocused) {\n return // Let browser handle\n }\n // If cells are selected, copy table data (even if focus moved away)\n if (selectedCells.size > 0) {\n await copyToClipboard()\n } else {\n // No cells selected, allowing default browser copy\n }\n }\n // Paste functionality (Ctrl+V or Command+V)\n if ((e.ctrlKey || e.metaKey) && e.key === 'v') {\n // don't execute paste if focus is inside an input, textarea, or content‐editable element\n const activeEl = document.activeElement as HTMLElement | null\n\n if (\n activeEl &&\n (activeEl.tagName === 'INPUT' ||\n activeEl.tagName === 'TEXTAREA' ||\n activeEl.isContentEditable)\n ) {\n // focus is inside an input, textarea, or content-editable element\n const allEntityIds = await doesClipboardContainId()\n // we might still want to paste if the clipboard contains valid entity IDs\n if (allEntityIds) {\n // prevent pasting into input fields and handle as paste on the cell\n e.preventDefault()\n } else {\n // skip pasting\n return\n }\n }\n pasteFromClipboard(Array.from(selectedCells), {\n method: e.shiftKey ? 'merge' : 'replace', // Use shift key to determine paste method\n })\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [copyToClipboard, pasteFromClipboard])\n\n const value = useMemo(\n () => ({\n copyToClipboard,\n pasteFromClipboard,\n exportCSV,\n }),\n [copyToClipboard, pasteFromClipboard],\n )\n\n return <ClipboardContext.Provider value={value}>{children}</ClipboardContext.Provider>\n}\n\nexport const useClipboard = (): ClipboardContextType => {\n const context = useContext(ClipboardContext)\n if (context === undefined) {\n throw new Error('useClipboard must be used within a ClipboardProvider')\n }\n return context\n}\n"],"names":["ClipboardContext","createContext","DISPLAY_PREFERRED_COLS","DISPLAY_COLUMN_FIELDS","ClipboardProvider","children","entitiesMap","columnEnums","columnReadOnly","visibleColumns","selectedCells","gridMap","focusedCellId","useSelectionCellsContext","updateEntities","history","useCellEditing","pasteTableLinks","usePasteLinks","getEntityById","attribFields","tableData","useProjectTableContext","displayRowsById","useMemo","map","walk","rows","row","projectName","useProjectContext","updateSubtasks","useUpdateSubtasksMutation","getSelectionData","useCallback","selected","config","headers","fullRow","visibleColumnIds","col","id","ROW_SELECTION_COLUMN_ID","cellsByRow","cellId","position","parseCellId","rowId","colId","sortedRows","a","b","indexA","indexB","clipboardText","firstRowId","colIds","headerValues","columnName","entity","displayRow","filteredColIds","rowValues","cellValue","getLinkEntityIdsByColumnId","subtasks","getCellValue","subtasksToTSV","comments","commentsToText","sourceField","foundValue","folder","parents","displayValue","field","f","getEntityPath","resolvedSubType","escaped","needsQuoting","error","doesClipboardContainId","getClipboardString","parsedData","parseClipboardText","value","v","validateEntityId","copyToClipboard","clipboardError","exportCSV","blob","url","selectedCount","pasteFromClipboard","method","isSubtasksData","subtasksClipboardText","isSubtasksTSV","isSingleCellValue","mapClipboardToVisibleColumns","clipboardRow","clipboardHeaders","mappedValues","header","index","matchingColId","firstRow","selectedColIds","rowIndex","isFolder","getEntityDataById","pasteRowIndex","pasteValue","validateClipboardData","entitiesToUpdateMap","colIndex","subtaskGroups","isFromSingleSourceTask","allLines","firstLine","dataLines","groupMap","groupOrder","line","parsed","tsvToSubtasks","subtask","groupKey","taskId","taskName","entityType","actualEntityId","entityKey","entityData","existingSubtasks","subtasksToProcess","groupIndex","pasteColIndex","newSubtasks","st","getEntityId","sanitizeSubtaskName","mergedSubtasks","existingIdentifiers","label","name","newSubtask","identifier","replacedSubtasks","newSt","existingMatch","est","isAttrib","isLink","fieldValueType","fieldName","attribField","firstVisibleColIndex","allGridColumns","startGridPos","clipboardColIndex","fieldToUpdate","processedValue","processFieldValue","_link","linkType","inType","outType","direction","allEntityUpdates","linkUpdatesMap","linkKey","targetEntityIds","linkTypePart","linkTypeParts","linkTypeName","targetEntityType","linkUpdateKey","allLinkUpdates","subtasksUpdates","updatePromises","previousSubtasks","prev","next","undoCallback","redoCallback","subtasksPromises","useEffect","handleKeyDown","e","activeEl","isTableFocused","isEditableElement","jsx","useClipboard","context","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ClipboardContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ClipboardContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useMemo } from 'react'\n\n// Contexts\nimport { ROW_SELECTION_COLUMN_ID } from '../constants'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport { useCellEditing } from './CellEditingContext'\nimport { useProjectContext } from '@shared/context/ProjectContext'\n\n// Utils\nimport {\n getCellValue,\n getEntityDataById,\n getLinkEntityIdsByColumnId,\n parseCellId,\n} from '../utils/cellUtils'\n\n// Types\nimport { TableRow } from '../types/table'\nimport { EntityUpdate } from '../hooks/useUpdateTableData'\nimport usePasteLinks, { LinkUpdate } from '../hooks/usePasteLinks'\nimport { useUpdateSubtasksMutation } from '@shared/api'\n\n// Import from the new modular files\nimport {\n getEntityPath,\n parseClipboardText,\n clipboardError,\n processFieldValue,\n subtasksToTSV,\n isSubtasksTSV,\n tsvToSubtasks,\n sanitizeSubtaskName,\n commentsToText,\n} from './clipboard'\nimport { validateClipboardData } from './clipboard/clipboardValidation'\nimport { ClipboardContextType, ClipboardProviderProps } from './clipboard/clipboardTypes'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport { validateEntityId, getEntityId } from '@shared/util'\n\nconst ClipboardContext = createContext<ClipboardContextType | undefined>(undefined)\n\nconst DISPLAY_PREFERRED_COLS = new Set([\n 'version',\n 'version_entity',\n 'product',\n 'productBaseType',\n 'task_entity',\n])\n\nconst DISPLAY_COLUMN_FIELDS: Record<string, string> = {\n folder_entity: 'folder',\n task_entity: 'taskLabel',\n version_entity: 'versionName',\n}\n\nexport const ClipboardProvider: React.FC<ClipboardProviderProps> = ({\n children,\n entitiesMap,\n columnEnums,\n columnReadOnly,\n visibleColumns,\n}) => {\n // Get selection information from SelectionContext\n const { selectedCells, gridMap, focusedCellId } = useSelectionCellsContext()\n const { updateEntities, history } = useCellEditing()\n const { pasteTableLinks } = usePasteLinks()\n const { getEntityById, attribFields, tableData } = useProjectTableContext()\n\n const displayRowsById = useMemo(() => {\n const map = new Map<string, TableRow>()\n const walk = (rows: TableRow[]) => {\n for (const row of rows) {\n map.set(row.id, row)\n if (row.subRows?.length) walk(row.subRows as TableRow[])\n }\n }\n walk(tableData || [])\n return map\n }, [tableData])\n const { projectName } = useProjectContext()\n const [updateSubtasks] = useUpdateSubtasksMutation()\n\n const getSelectionData = useCallback(\n async (selected: string[], config?: { headers?: boolean; fullRow?: boolean }) => {\n const { headers, fullRow } = config || {}\n try {\n // Get visible columns in display order, excluding row selection\n const visibleColumnIds = visibleColumns\n .map((col) => col.id)\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n\n // Organize selected cells by row, filtering to only visible columns\n const cellsByRow = new Map<string, Set<string>>()\n\n // Parse all selected cells and organize by rowId and colId\n selected.forEach((cellId) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n const { rowId, colId } = position\n if (colId === ROW_SELECTION_COLUMN_ID || !visibleColumnIds.includes(colId)) return\n\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n\n cellsByRow.get(rowId)?.add(colId)\n })\n\n if (fullRow) {\n const selectedRows = selected\n .filter(\n (cellId) =>\n parseCellId(cellId)?.rowId &&\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID,\n )\n .map((cellId) => parseCellId(cellId)?.rowId) as string[]\n\n // select the whole row\n // For rows with selection cells, add all available columns\n selectedRows.forEach((rowId) => {\n // add the rowId if it doesn't exist\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n const allColumns = Array.from(gridMap.colIdToIndex.keys())\n allColumns.forEach((colId) => {\n cellsByRow.get(rowId)?.add(colId)\n })\n })\n }\n\n // Get sorted row IDs based on their index in the grid\n const sortedRows = Array.from(cellsByRow.keys()).sort((a, b) => {\n const indexA = gridMap.rowIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.rowIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Build clipboard text\n let clipboardText = ''\n\n // Get the first row to determine columns\n const firstRowId = sortedRows[0]\n if (!firstRowId) return ''\n\n // Get all column IDs for the first row, sorted by their index in the grid\n const colIds = Array.from(cellsByRow.get(firstRowId) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Include headers if requested\n if (headers && colIds.length > 0) {\n const headerValues: string[] = []\n\n for (const colId of colIds) {\n // Use colId as the column name since we don't have direct access to column names\n const columnName = colId\n headerValues.push(`${columnName.replace(/\"/g, '\"\"')}`)\n }\n\n clipboardText += headerValues.join('\\t') + '\\n'\n }\n\n for (const rowId of sortedRows) {\n // Get the entity for this row\n const entity = getEntityById(rowId)\n\n if (!entity) {\n console.warn(`Entity not found for rowId: ${rowId}`)\n continue\n }\n\n const displayRow = displayRowsById.get(rowId)\n\n // Get all column IDs for this row, sorted by their index in the grid\n const colIds = Array.from(cellsByRow.get(rowId) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Filter out the row selection column from the copied data\n const filteredColIds = colIds.filter((colId) => colId !== ROW_SELECTION_COLUMN_ID)\n\n const rowValues: string[] = []\n\n // For each column in this row\n for (const colId of filteredColIds) {\n // Determine the value based on the column ID\n let cellValue = ''\n\n // special handling of link cells\n if (colId.startsWith('link_')) {\n // @ts-expect-error - only complaining about missing __typename\n cellValue = getLinkEntityIdsByColumnId(entity.links, colId)\n } else if (colId === 'subtasks') {\n // Special handling for subtasks - convert to TSV format\n // @ts-ignore\n const subtasks = getCellValue(entity, colId) || []\n cellValue = subtasksToTSV(subtasks, entity.id, entity.name)\n } else if (colId === 'comments') {\n // @ts-ignore\n const comments = getCellValue(entity, 'latestComments') || []\n cellValue = commentsToText(comments)\n } else {\n // @ts-ignore\n const sourceField = DISPLAY_COLUMN_FIELDS[colId] || colId\n let foundValue = getCellValue(entity, sourceField)\n\n // folder is an object on some entities (product/task) or nested under\n // product (version) - copy the display name the cell shows,\n // falling back to the last parent (parent folder name on tasks/folders)\n if (colId === 'folder_entity' && typeof foundValue !== 'string') {\n const folder = foundValue || (entity as any).product?.folder\n const parents = 'parents' in entity ? entity.parents : undefined\n foundValue = folder?.label || folder?.name || parents?.[parents.length - 1] || ''\n }\n\n // Raw entity nodes (flat lists) either lack display-computed columns or hold a\n // non-string value (product/task object, numeric version) — prefer the built\n // display row, which is exactly what the cell shows.\n if (\n displayRow &&\n (DISPLAY_PREFERRED_COLS.has(colId) ||\n foundValue === undefined ||\n foundValue === null ||\n foundValue === '' ||\n typeof foundValue === 'object')\n ) {\n const displayValue = getCellValue(displayRow, sourceField)\n if (displayValue !== undefined && displayValue !== null && displayValue !== '') {\n foundValue = displayValue\n }\n }\n\n if (!foundValue) {\n // we should look for the default value set out in attribFields\n const field = attribFields.find((f) => f.name === colId.replace('attrib_', ''))\n if (field && field.data.type === 'boolean') {\n foundValue = false // default boolean value\n } else if (field && field.data.type.includes('list_of')) {\n foundValue = [] // default list value\n }\n }\n\n // convert to string if foundValue is not undefined or null use empty string otherwise\n cellValue = foundValue !== undefined && foundValue !== null ? String(foundValue) : ''\n\n // Hierarchical tables resolve a full path; flat lists (raw nodes keyed by row id)\n // can't, so fall back to the built display row label/name the cell shows\n if (colId === 'name') {\n cellValue =\n getEntityPath(entity.entityId || entity.id, entitiesMap) ||\n (displayRow as any)?.label ||\n displayRow?.name ||\n (entity as any).label ||\n entity.name ||\n ''\n }\n\n if (colId === 'subType') {\n // built display rows resolve subType (folder/task/product); raw nodes fall back to type fields\n const resolvedSubType = (displayRow as any)?.subType ?? (entity as any).subType\n if (typeof resolvedSubType === 'string' && resolvedSubType) {\n cellValue = resolvedSubType\n } else {\n if ('folderType' in entity) {\n cellValue = entity.folderType || ''\n }\n if ('taskType' in entity) {\n cellValue = entity.taskType || ''\n }\n }\n }\n }\n\n // Wrap multi-line / tab / quote values in quotes so spreadsheets keep them in one\n // cell. Subtasks embed tabs+newlines as real grid structure for paste round-trips —\n // leave them raw so they stay multi-row/column.\n const escaped = cellValue.replace(/\"/g, '\"\"')\n const needsQuoting =\n colId !== 'subtasks' &&\n (cellValue.includes('\\n') || cellValue.includes('\\t') || cellValue.includes('\"'))\n rowValues.push(needsQuoting ? `\"${escaped}\"` : escaped)\n }\n\n // Add row to clipboard text\n clipboardText += rowValues.join('\\t') + '\\n'\n }\n\n return clipboardText\n } catch (error) {\n console.error('Failed to copy to clipboard:', error)\n }\n },\n [\n selectedCells,\n focusedCellId,\n gridMap,\n entitiesMap,\n getEntityById,\n visibleColumns,\n displayRowsById,\n ],\n )\n\n const doesClipboardContainId = async () => {\n // check if the clipboard contains a valid ID\n const clipboardText = await getClipboardString()\n if (!clipboardText) return false\n const parsedData = parseClipboardText(clipboardText)\n if (parsedData.length === 0) return false\n return parsedData.every((row) => {\n return row.values.every((value) => value.split(',').every((v) => validateEntityId(v)))\n })\n }\n\n const copyToClipboard: ClipboardContextType['copyToClipboard'] = useCallback(\n async (selected, fullRow) => {\n selected = selected || Array.from(selectedCells)\n if (!selected.length) return\n const clipboardText = await getSelectionData(selected, { fullRow })\n if (!clipboardText) {\n return\n }\n if (!navigator.clipboard) {\n clipboardError('Clipboard API not supported in this browser.')\n return\n }\n if (!window.isSecureContext) {\n clipboardError('Clipboard operations require a secure HTTPS context.')\n return\n }\n try {\n await navigator.clipboard.writeText(clipboardText)\n } catch (error: any) {\n clipboardError(`Failed to copy to clipboard: ${error.message}`)\n }\n },\n [selectedCells, entitiesMap, gridMap],\n )\n\n const exportCSV: ClipboardContextType['exportCSV'] = useCallback(\n async (selected, projectName, fullRow) => {\n selected = selected || Array.from(selectedCells)\n if (!selected.length) return\n\n try {\n // Get clipboard text with headers included for CSV export\n const clipboardText = await getSelectionData(selected, { headers: true, fullRow })\n if (!clipboardText) return\n\n // create a csv file and download it\n const blob = new Blob([clipboardText], { type: 'text/csv' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n const selectedCount = selected.length\n a.download = `${projectName}-export-${selectedCount}_cells-${new Date()\n .toISOString()\n .slice(0, 10)}.csv`\n a.click()\n URL.revokeObjectURL(url)\n } catch (error) {\n console.error('Failed to copy to clipboard:', error)\n }\n },\n [selectedCells, entitiesMap, gridMap, getSelectionData],\n )\n\n const getClipboardString = async (): Promise<string | void> => {\n if (!navigator.clipboard) {\n clipboardError('Clipboard API not supported in this browser.')\n return\n }\n if (!window.isSecureContext) {\n clipboardError('Clipboard operations require a secure HTTPS context.')\n return\n }\n let clipboardText: string\n try {\n clipboardText = await navigator.clipboard.readText()\n return clipboardText\n } catch (error: any) {\n clipboardError(`Failed to read from clipboard: ${error.message}`)\n return\n }\n }\n\n const pasteFromClipboard: ClipboardContextType['pasteFromClipboard'] = useCallback(\n async (selected, config) => {\n const { method = 'replace' } = config || {}\n if (!selected.length) return\n\n const clipboardText = await getClipboardString()\n if (!clipboardText) return\n\n // Check if this is subtasks TSV data first, before normal parsing\n let isSubtasksData = false\n let subtasksClipboardText = clipboardText\n if (isSubtasksTSV(clipboardText)) {\n isSubtasksData = true\n }\n\n // Parse the clipboard text\n const parsedData = parseClipboardText(clipboardText)\n if (!parsedData.length) return\n\n // Determine if we have a single value in the clipboard (one row, one column)\n const isSingleCellValue = parsedData.length === 1 && parsedData[0].values.length === 1\n\n // Get visible columns in display order, excluding row selection\n const visibleColumnIds = visibleColumns\n .map((col) => col.id)\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n\n // Helper function to map clipboard values to visible columns\n const mapClipboardToVisibleColumns = (\n clipboardRow: any,\n visibleColumnIds: string[],\n clipboardHeaders?: string[],\n ) => {\n const mappedValues: Record<string, string> = {}\n\n if (clipboardHeaders && clipboardHeaders.length > 0) {\n // Map by header names when available\n clipboardHeaders.forEach((header: string, index: number) => {\n const matchingColId = visibleColumnIds.find(\n (colId) =>\n colId === header ||\n colId.replace('attrib_', '') === header ||\n colId === `attrib_${header}` ||\n colId.toLowerCase() === header.toLowerCase(),\n )\n\n if (matchingColId && index < clipboardRow.values.length) {\n mappedValues[matchingColId] = clipboardRow.values[index]\n }\n })\n } else {\n // Fallback: map by position, but only to visible columns\n visibleColumnIds.forEach((colId, index) => {\n if (index < clipboardRow.values.length) {\n mappedValues[colId] = clipboardRow.values[index]\n }\n })\n }\n\n return mappedValues\n }\n\n // Extract headers if they exist (assuming first row might be headers from external source)\n // You might need to detect this differently based on your clipboard format\n const clipboardHeaders = parsedData[0]?.colIds || undefined\n\n // Organize selected cells by row, filtering to only visible columns\n const cellsByRow = new Map<string, Set<string>>()\n\n Array.from(selected).forEach((cellId) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n const { rowId, colId } = position\n if (colId === ROW_SELECTION_COLUMN_ID || !visibleColumnIds.includes(colId)) return\n\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n cellsByRow.get(rowId)?.add(colId)\n })\n\n // Get sorted row IDs and column IDs\n const sortedRows = Array.from(cellsByRow.keys()).sort((a, b) => {\n const indexA = gridMap.rowIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.rowIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n const firstRow = sortedRows[0]\n const selectedColIds = Array.from(cellsByRow.get(firstRow) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // First pass: validate all values\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const isFolder = getEntityDataById<'folder'>(rowId, entitiesMap)?.entityType === 'folder'\n\n const pasteRowIndex = rowIndex % parsedData.length\n const clipboardRow = parsedData[pasteRowIndex]\n\n // Map clipboard data to visible columns\n const mappedValues = isSingleCellValue\n ? { [selectedColIds[0]]: parsedData[0].values[0] }\n : mapClipboardToVisibleColumns(clipboardRow, selectedColIds, clipboardHeaders)\n\n // Validate each mapped value\n for (const colId of selectedColIds) {\n const pasteValue = mappedValues[colId] || ''\n\n const isValid = validateClipboardData({\n colId,\n isFolder,\n pasteValue,\n parsedData,\n columnEnums,\n columnReadOnly,\n rowIndex,\n colIndex: selectedColIds.indexOf(colId),\n isSingleCellValue,\n attribFields,\n })\n\n if (!isValid) return\n }\n }\n\n // Create a map to consolidate updates for the same entity\n const entitiesToUpdateMap = new Map<\n string,\n {\n rowId: string\n id: string\n type: string\n fields: Record<string, any>\n attrib: Record<string, any>\n links: Record<string, string[]>\n subtasks?: any[]\n previousSubtasks?: any[]\n }\n >()\n\n // For each column, prepare updates\n for (let colIndex = 0; colIndex < selectedColIds.length; colIndex++) {\n const colId = selectedColIds[colIndex]\n\n // Skip special handling for 'name' which we don't want to paste\n if (colId === 'name') continue\n\n // Special handling for subtasks column\n if (colId === 'subtasks') {\n // For subtasks, group them by source task so each group can be applied to different cells\n let subtaskGroups: Array<{ taskId?: string; taskName?: string; subtasks: any[] }> = []\n let isFromSingleSourceTask = false\n\n if (isSubtasksData) {\n // Parse all subtask data to understand the source grouping\n const allLines = subtasksClipboardText.trim().split('\\n')\n\n // Check for header\n const firstLine = allLines[0].toLowerCase()\n const hasHeader =\n firstLine.includes('label') &&\n firstLine.includes('name') &&\n firstLine.includes('start date') &&\n firstLine.includes('end date') &&\n firstLine.includes('assignees') &&\n firstLine.includes('status')\n\n const dataLines = hasHeader ? allLines.slice(1) : allLines\n\n // Parse all lines and group by source taskId\n const groupMap = new Map<string, any[]>()\n const groupOrder: string[] = []\n\n dataLines.forEach((line) => {\n const parsed = tsvToSubtasks(line)\n if (parsed.length === 0) return\n\n const subtask = parsed[0]\n const groupKey = `${subtask.taskId || ''}|${subtask.taskName || ''}`\n\n if (!groupMap.has(groupKey)) {\n groupMap.set(groupKey, [])\n groupOrder.push(groupKey)\n }\n groupMap.get(groupKey)!.push(subtask)\n })\n\n // Create groups in order\n groupOrder.forEach((groupKey) => {\n const [taskId, taskName] = groupKey.split('|')\n subtaskGroups.push({\n taskId: taskId || undefined,\n taskName: taskName || undefined,\n subtasks: groupMap.get(groupKey) || [],\n })\n })\n\n // Check if all subtasks come from the same source task\n isFromSingleSourceTask = subtaskGroups.length <= 1\n }\n\n // Handle subtasks paste for each selected row\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const entityType = getEntityDataById(rowId, entitiesMap)?.entityType\n\n // Subtasks only apply to tasks\n if (entityType !== 'task') continue\n\n // Get entity to access entityId (important for list items where rowId is list item ID)\n const entity = getEntityById(rowId)\n const actualEntityId = entity?.entityId || rowId\n\n // Get or create entity entry in the map\n const entityKey = `${rowId}-${entityType}`\n if (!entitiesToUpdateMap.has(entityKey)) {\n entitiesToUpdateMap.set(entityKey, {\n rowId,\n id: actualEntityId,\n type: entityType,\n fields: {},\n attrib: {},\n links: {},\n })\n }\n\n const entityData = entitiesToUpdateMap.get(entityKey)!\n // Get existing subtasks from entity\n const existingSubtasks = (entity && 'subtasks' in entity && entity.subtasks) || []\n // store previous subtasks for history/undo\n entityData.previousSubtasks = existingSubtasks\n\n let subtasksToProcess: any[] = []\n\n if (isSubtasksData) {\n if (isFromSingleSourceTask && subtaskGroups.length > 0) {\n // All subtasks from one source - apply to all cells\n subtasksToProcess = subtaskGroups[0].subtasks\n } else if (subtaskGroups.length > 0) {\n // Multiple groups - distribute by row (like regular data does with modulo)\n const groupIndex = rowIndex % subtaskGroups.length\n subtasksToProcess = subtaskGroups[groupIndex].subtasks\n }\n } else {\n // For parsed clipboard data, get the appropriate row\n if (isSingleCellValue) {\n const pasteValue = parsedData[0].values[0]\n subtasksToProcess = tsvToSubtasks(pasteValue)\n } else {\n const pasteRowIndex = rowIndex % parsedData.length\n const clipboardRow = parsedData[pasteRowIndex]\n const pasteColIndex = colIndex % clipboardRow.values.length\n const pasteValue = clipboardRow.values[pasteColIndex]\n subtasksToProcess = tsvToSubtasks(pasteValue)\n }\n }\n\n // Skip if no subtasks to process\n if (!subtasksToProcess || subtasksToProcess.length === 0) continue\n\n // Create normalized subtasks from parsed data\n const newSubtasks = subtasksToProcess.map((st, index) => ({\n id: getEntityId(),\n name: sanitizeSubtaskName(st.name || st.label || `Subtask ${index + 1}`),\n label: st.label || '',\n assignees: st.assignees || [],\n description: st.label || '',\n startDate: st.startDate,\n endDate: st.endDate,\n isDone: st.isDone || false,\n }))\n\n // Handle merge vs replace\n if (method === 'merge') {\n // Merge new subtasks with existing ones, removing duplicates by label and name\n const mergedSubtasks = [...existingSubtasks]\n const existingIdentifiers = new Set(\n existingSubtasks.map((st) => {\n const label = (st.label || '').toLowerCase()\n const name = (st.name || '').toLowerCase()\n return `${label}|${name}`\n }),\n )\n\n // Add new subtasks that don't already exist\n for (const newSubtask of newSubtasks) {\n const label = (newSubtask.label || '').toLowerCase()\n const name = (newSubtask.name || '').toLowerCase()\n const identifier = `${label}|${name}`\n if (!existingIdentifiers.has(identifier)) {\n mergedSubtasks.push(newSubtask)\n }\n }\n entityData.subtasks = mergedSubtasks\n } else {\n // Replace mode: use new subtasks, preserving IDs for any matching label and name\n const replacedSubtasks = newSubtasks.map((newSt) => {\n // Try to find existing subtask with matching label and name to preserve ID\n const existingMatch = existingSubtasks.find(\n (est) =>\n (est.label || '').toLowerCase() === (newSt.label || '').toLowerCase() &&\n (est.name || '').toLowerCase() === (newSt.name || '').toLowerCase(),\n )\n return {\n ...newSt,\n id: existingMatch?.id || newSt.id,\n }\n })\n entityData.subtasks = replacedSubtasks\n }\n }\n continue\n }\n\n // Check if this is an attribute field by examining the first entity\n let isAttrib = false,\n isLink = false\n // Check if the field potentially contains array values\n let fieldValueType: 'string' | 'number' | 'boolean' | 'array' = 'string'\n\n if (sortedRows.length > 0) {\n const firstRowId = sortedRows[0]\n const entity = getEntityById(firstRowId)\n if (entity) {\n isAttrib = colId.startsWith('attrib_')\n isLink = colId.startsWith('link_')\n\n // Determine field type based on type or attrib type\n if (colId === 'status' || colId === 'subType') {\n // status and subType are strings\n fieldValueType = 'string'\n // special case to avoid treating subType as attrib (not sure if this is needed)\n isAttrib = false\n } else if (colId === 'tags' || colId === 'assignees') {\n // tags and assignees are always arrays\n fieldValueType = 'array'\n } else if (isAttrib) {\n // find type based on attribFields\n const fieldName = colId.replace('attrib_', '')\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (attribField) {\n const dataType = attribField.data.type\n switch (dataType) {\n case 'boolean':\n fieldValueType = 'boolean'\n break\n case 'float':\n case 'integer':\n fieldValueType = 'number'\n break\n case 'list_of_strings':\n case 'list_of_any':\n case 'list_of_integers':\n case 'list_of_submodels':\n fieldValueType = 'array'\n break\n default:\n // everything else is string\n fieldValueType = 'string'\n }\n }\n } else if (isLink) {\n // links are always arrays\n fieldValueType = 'array'\n }\n }\n }\n\n // Process each row individually\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const entityType = getEntityDataById(rowId, entitiesMap)?.entityType\n const isFolder = entityType === 'folder'\n\n // Get the appropriate value from the clipboard data\n let pasteValue\n if (isSingleCellValue) {\n pasteValue = parsedData[0].values[0]\n } else {\n const pasteRowIndex = rowIndex % parsedData.length\n // Map visible column index to clipboard data index\n // When clipboard contains hidden columns, we need to skip over values\n // that correspond to hidden columns when pasting to visible columns\n const clipboardRow = parsedData[pasteRowIndex]\n\n // If clipboard has more values than visible columns being pasted to,\n // it likely contains hidden column data. We need to reconstruct the original\n // column order that was copied by finding which columns would have been included.\n if (clipboardRow.values.length > selectedColIds.length) {\n // The clipboard data was created from consecutive columns in grid order.\n // We need to find which consecutive columns would result in this clipboard data.\n // Start from the first visible column and extend the range to match clipboard length.\n const firstVisibleColIndex = gridMap.colIdToIndex.get(selectedColIds[0]) ?? 0\n\n // Get all columns sorted by grid position\n const allGridColumns = Array.from(gridMap.colIdToIndex.keys())\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n .sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Find the starting position in the grid columns array\n const startGridPos = allGridColumns.findIndex(\n (id) => gridMap.colIdToIndex.get(id) === firstVisibleColIndex,\n )\n\n // The original copied columns are the consecutive ones starting from this position\n const originalCopiedColumns = allGridColumns.slice(\n startGridPos,\n startGridPos + clipboardRow.values.length,\n )\n\n // Find this column's position in the original copied columns\n const clipboardColIndex = originalCopiedColumns.indexOf(colId)\n pasteValue =\n clipboardRow.values[clipboardColIndex] ||\n clipboardRow.values[clipboardColIndex % clipboardRow.values.length]\n // Pasting value from hidden columns detection\n } else {\n // Normal case: map clipboard column index using modulo\n const pasteColIndex = colIndex % clipboardRow.values.length\n pasteValue = clipboardRow.values[pasteColIndex]\n // Pasting value normally\n }\n }\n\n let fieldToUpdate = colId.split('_').pop() || colId\n\n // Special handling for subType (convert to folderType or taskType)\n if (colId === 'subType') {\n fieldToUpdate = isFolder ? 'folderType' : 'taskType'\n isAttrib = false\n\n // Skip empty values for enum fields\n if (!pasteValue) continue\n }\n\n // Process the value based on its type\n const processedValue = processFieldValue(pasteValue, fieldValueType)\n\n // Get entity to access entityId (important for list items where rowId is list item ID)\n const entity = getEntityById(rowId)\n const actualEntityId = entity?.entityId || rowId\n\n // Get or create entity entry in the map\n const entityKey = `${rowId}-${entityType}`\n if (!entitiesToUpdateMap.has(entityKey) && entityType) {\n entitiesToUpdateMap.set(entityKey, {\n rowId,\n id: actualEntityId,\n type: entityType,\n fields: {},\n attrib: {},\n links: {},\n })\n }\n\n const entityData = entitiesToUpdateMap.get(entityKey)!\n\n // Add the field to the appropriate place\n if (isLink) {\n const [_link, linkType, inType, outType, direction] = colId.split('_')\n // final-task|folder|task\n entityData.links[`${linkType}|${inType}|${outType}_${direction}`] = processedValue\n } else if (isAttrib) {\n entityData.attrib[fieldToUpdate] = processedValue\n } else {\n entityData.fields[fieldToUpdate] = processedValue\n }\n }\n }\n\n // Convert the consolidated map to EntityUpdate array and LinkUpdate array\n const allEntityUpdates: EntityUpdate[] = []\n const linkUpdatesMap = new Map<string, LinkUpdate>()\n\n entitiesToUpdateMap.forEach((entity) => {\n // For regular fields, create one update per field\n Object.entries(entity.fields).forEach(([field, value]) => {\n allEntityUpdates.push({\n rowId: entity.rowId,\n id: entity.id,\n type: entity.type,\n field,\n value,\n })\n })\n\n // For attributes, create one update per attribute\n Object.entries(entity.attrib).forEach(([field, value]) => {\n allEntityUpdates.push({\n rowId: entity.rowId,\n id: entity.id,\n type: entity.type,\n field,\n value,\n isAttrib: true,\n })\n })\n\n // For links, create LinkUpdate objects\n Object.entries(entity.links).forEach(([linkKey, targetEntityIds]) => {\n // Parse the linkKey: \"linkType|inType|outType_direction\"\n const [linkTypePart, direction] = linkKey.split('_')\n const linkTypeParts = linkTypePart.split('|')\n\n if (linkTypeParts.length >= 3) {\n const linkTypeName = linkTypeParts[0]\n const inType = linkTypeParts[1]\n const outType = linkTypeParts[2]\n\n // Reconstruct the full linkType in the required format: name|input_type|output_type\n const linkType = `${linkTypeName}|${inType}|${outType}`\n\n // Determine target entity type based on direction\n const targetEntityType = direction === 'out' ? outType : inType\n\n // Create a unique key for this link operation\n const linkUpdateKey = `${entity.id}-${linkType}-${direction}`\n\n linkUpdatesMap.set(linkUpdateKey, {\n rowId: entity.rowId,\n sourceEntityId: entity.id,\n sourceEntityType: entity.type,\n linkType,\n direction: direction as 'in' | 'out',\n targetEntityType,\n operation: method,\n targetEntityIds: Array.isArray(targetEntityIds) ? targetEntityIds : [],\n })\n }\n })\n })\n\n const allLinkUpdates = Array.from(linkUpdatesMap.values())\n\n // Collect subtasks updates\n const subtasksUpdates: Array<{ taskId: string; subtasks: any[]; previousSubtasks?: any[] }> =\n []\n entitiesToUpdateMap.forEach((entity) => {\n if (entity.subtasks) {\n subtasksUpdates.push({\n taskId: entity.id,\n subtasks: entity.subtasks,\n previousSubtasks: entity.previousSubtasks,\n })\n }\n })\n\n // Make separate calls to update entities, links, and subtasks\n const updatePromises: Promise<void>[] = []\n\n if (allEntityUpdates.length > 0) {\n updatePromises.push(updateEntities(allEntityUpdates))\n }\n\n if (allLinkUpdates.length > 0) {\n updatePromises.push(pasteTableLinks(allLinkUpdates))\n }\n\n if (subtasksUpdates.length > 0) {\n // push undo/redo history entries for subtasks updates\n if (history) {\n subtasksUpdates.forEach(({ taskId, subtasks, previousSubtasks }) => {\n const prev = previousSubtasks || []\n const next = subtasks || []\n const undoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: prev })\n .unwrap()\n .catch(() => {})\n }\n const redoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: next })\n .unwrap()\n .catch(() => {})\n }\n history.pushHistory([undoCallback], [redoCallback])\n })\n }\n // Update subtasks for each task\n const subtasksPromises = subtasksUpdates.map(({ taskId, subtasks }) =>\n updateSubtasks({ projectName, taskId, subtasks }).unwrap(),\n )\n updatePromises.push(...subtasksPromises)\n }\n\n if (updatePromises.length > 0) {\n try {\n await Promise.all(updatePromises)\n } catch (error: any) {\n console.error('Error updating entities:', error)\n clipboardError(`Paste failed: ${error || error?.message || 'Unknown error'}`)\n }\n }\n },\n [\n selectedCells,\n gridMap,\n entitiesMap,\n updateEntities,\n pasteTableLinks,\n columnEnums,\n getEntityById,\n visibleColumns,\n attribFields,\n projectName,\n updateSubtasks,\n history,\n ],\n )\n\n // Set up keyboard event listeners\n useEffect(() => {\n const handleKeyDown = async (e: KeyboardEvent) => {\n // Copy functionality (Ctrl+C or Command+C)\n if ((e.ctrlKey || e.metaKey) && e.key === 'c') {\n const activeEl = document.activeElement as HTMLElement | null\n\n const isTableFocused =\n activeEl?.closest('table') !== null ||\n activeEl?.closest('.table-container') !== null ||\n activeEl?.tagName === 'TD' ||\n activeEl?.tagName === 'TH'\n\n // Check if there's a text selection in an input/textarea/contenteditable\n const isEditableElement =\n activeEl?.tagName === 'INPUT' ||\n activeEl?.tagName === 'TEXTAREA' ||\n activeEl?.isContentEditable\n\n const hasTextSelection = window.getSelection()?.toString().length ?? 0 > 0\n\n // If user has text selected elsewhere, let browser copy that\n if (hasTextSelection && !isTableFocused) {\n return // Let browser handle\n }\n\n // If focus is in an editable element, let browser handle\n if (isEditableElement && !isTableFocused) {\n return // Let browser handle\n }\n // If cells are selected, copy table data (even if focus moved away)\n if (selectedCells.size > 0) {\n await copyToClipboard()\n } else {\n // No cells selected, allowing default browser copy\n }\n }\n // Paste functionality (Ctrl+V or Command+V)\n if ((e.ctrlKey || e.metaKey) && e.key === 'v') {\n // don't execute paste if focus is inside an input, textarea, or content‐editable element\n const activeEl = document.activeElement as HTMLElement | null\n\n if (\n activeEl &&\n (activeEl.tagName === 'INPUT' ||\n activeEl.tagName === 'TEXTAREA' ||\n activeEl.isContentEditable)\n ) {\n // focus is inside an input, textarea, or content-editable element\n const allEntityIds = await doesClipboardContainId()\n // we might still want to paste if the clipboard contains valid entity IDs\n if (allEntityIds) {\n // prevent pasting into input fields and handle as paste on the cell\n e.preventDefault()\n } else {\n // skip pasting\n return\n }\n }\n pasteFromClipboard(Array.from(selectedCells), {\n method: e.shiftKey ? 'merge' : 'replace', // Use shift key to determine paste method\n })\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [copyToClipboard, pasteFromClipboard])\n\n const value = useMemo(\n () => ({\n copyToClipboard,\n pasteFromClipboard,\n exportCSV,\n }),\n [copyToClipboard, pasteFromClipboard],\n )\n\n return <ClipboardContext.Provider value={value}>{children}</ClipboardContext.Provider>\n}\n\nexport const useClipboard = (): ClipboardContextType => {\n const context = useContext(ClipboardContext)\n if (context === undefined) {\n throw new Error('useClipboard must be used within a ClipboardProvider')\n }\n return context\n}\n"],"names":["ClipboardContext","createContext","DISPLAY_PREFERRED_COLS","DISPLAY_COLUMN_FIELDS","ClipboardProvider","children","entitiesMap","columnEnums","columnReadOnly","visibleColumns","selectedCells","gridMap","focusedCellId","useSelectionCellsContext","updateEntities","history","useCellEditing","pasteTableLinks","usePasteLinks","getEntityById","attribFields","tableData","useProjectTableContext","displayRowsById","useMemo","map","walk","rows","row","projectName","useProjectContext","updateSubtasks","useUpdateSubtasksMutation","getSelectionData","useCallback","selected","config","headers","fullRow","visibleColumnIds","col","id","ROW_SELECTION_COLUMN_ID","cellsByRow","cellId","position","parseCellId","rowId","colId","sortedRows","a","b","indexA","indexB","clipboardText","firstRowId","colIds","headerValues","columnName","entity","displayRow","filteredColIds","rowValues","cellValue","getLinkEntityIdsByColumnId","subtasks","getCellValue","subtasksToTSV","comments","commentsToText","sourceField","foundValue","folder","parents","displayValue","field","f","getEntityPath","resolvedSubType","escaped","needsQuoting","error","doesClipboardContainId","getClipboardString","parsedData","parseClipboardText","value","v","validateEntityId","copyToClipboard","clipboardError","exportCSV","blob","url","selectedCount","pasteFromClipboard","method","isSubtasksData","subtasksClipboardText","isSubtasksTSV","isSingleCellValue","mapClipboardToVisibleColumns","clipboardRow","clipboardHeaders","mappedValues","header","index","matchingColId","firstRow","selectedColIds","rowIndex","isFolder","getEntityDataById","pasteRowIndex","pasteValue","validateClipboardData","entitiesToUpdateMap","colIndex","subtaskGroups","isFromSingleSourceTask","allLines","firstLine","dataLines","groupMap","groupOrder","line","parsed","tsvToSubtasks","subtask","groupKey","taskId","taskName","entityType","actualEntityId","entityKey","entityData","existingSubtasks","subtasksToProcess","groupIndex","pasteColIndex","newSubtasks","st","getEntityId","sanitizeSubtaskName","mergedSubtasks","existingIdentifiers","label","name","newSubtask","identifier","replacedSubtasks","newSt","existingMatch","est","isAttrib","isLink","fieldValueType","fieldName","attribField","firstVisibleColIndex","allGridColumns","startGridPos","clipboardColIndex","fieldToUpdate","processedValue","processFieldValue","_link","linkType","inType","outType","direction","allEntityUpdates","linkUpdatesMap","linkKey","targetEntityIds","linkTypePart","linkTypeParts","linkTypeName","targetEntityType","linkUpdateKey","allLinkUpdates","subtasksUpdates","updatePromises","previousSubtasks","prev","next","undoCallback","redoCallback","subtasksPromises","useEffect","handleKeyDown","e","activeEl","isTableFocused","isEditableElement","jsx","useClipboard","context","useContext"],"mappings":"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"}
|