@ynput/ayon-frontend-shared 0.4.1 → 0.4.2

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.
Files changed (1096) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +37 -201
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +248 -512
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +31 -233
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/components.cjs.js +1 -1
  11. package/dist/components.es.js +83 -82
  12. package/dist/components.es.js.map +1 -1
  13. package/dist/index.cjs.js +1 -1
  14. package/dist/index.es.js +32 -130
  15. package/dist/index.es.js.map +1 -1
  16. package/dist/shared/src/api/generated/graphql.cjs.js +8 -7
  17. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  18. package/dist/shared/src/api/generated/graphql.es.js +18 -17
  19. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  20. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  21. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  22. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  23. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  24. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  25. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  26. package/dist/shared/src/api/queries/activities/getCategories.cjs.js.map +1 -1
  27. package/dist/shared/src/api/queries/activities/getCategories.es.js.map +1 -1
  28. package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js.map +1 -1
  29. package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js.map +1 -1
  30. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  31. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  32. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  33. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  34. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +55 -151
  35. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  36. package/dist/shared/src/api/queries/addons/updateAddons.cjs.js.map +1 -1
  37. package/dist/shared/src/api/queries/addons/updateAddons.es.js.map +1 -1
  38. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  40. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
  41. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
  42. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  44. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  45. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  46. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  47. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  48. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +58 -113
  49. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  50. package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
  52. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  53. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  54. package/dist/shared/src/api/queries/entityLists/getLists.es.js +67 -118
  55. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  56. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  57. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  58. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +40 -95
  59. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  60. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  61. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  62. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.cjs.js.map +1 -1
  63. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.es.js.map +1 -1
  64. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  65. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  66. package/dist/shared/src/api/queries/folders/getFolders.es.js +68 -119
  67. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  69. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +73 -128
  71. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/links/updateLinks.cjs.js.map +1 -1
  73. package/dist/shared/src/api/queries/links/updateLinks.es.js.map +1 -1
  74. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  75. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  76. package/dist/shared/src/api/queries/overview/getOverview.es.js +229 -282
  77. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  78. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  80. package/dist/shared/src/api/queries/products/getFolderProducts.cjs.js.map +1 -1
  81. package/dist/shared/src/api/queries/products/getFolderProducts.es.js.map +1 -1
  82. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
  83. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
  84. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +80 -134
  85. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
  86. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  87. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  88. package/dist/shared/src/api/queries/review/getReview.es.js +95 -152
  89. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  90. package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/share/share.es.js.map +1 -1
  92. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  93. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  94. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  95. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  96. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +88 -141
  97. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  98. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  100. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  101. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  102. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +30 -80
  103. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  104. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js.map +1 -1
  105. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js.map +1 -1
  106. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  109. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  110. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  111. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  112. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  113. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  114. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.cjs.js.map +1 -1
  115. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.es.js.map +1 -1
  116. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  117. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  118. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +28 -30
  119. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  120. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
  121. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
  122. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +29 -125
  123. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
  124. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +3 -3
  125. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  126. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +16 -310
  127. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  128. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js +5 -5
  129. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js.map +1 -1
  130. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js +49 -145
  131. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js.map +1 -1
  132. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +5 -5
  133. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  134. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +45 -141
  135. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  136. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  137. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  138. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +26 -182
  139. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  140. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  142. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +9 -195
  143. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  144. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +2 -2
  145. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  146. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +5 -200
  147. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  148. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +4 -4
  149. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
  150. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +18 -114
  151. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
  152. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +2 -2
  153. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
  154. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +13 -109
  155. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
  156. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  157. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  158. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +11 -316
  159. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  160. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
  161. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
  162. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +23 -119
  163. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
  164. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
  165. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
  166. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +0 -111
  167. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
  168. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js +1 -1
  169. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js.map +1 -1
  170. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js +1 -1
  171. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js.map +1 -1
  172. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  173. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  174. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +12 -314
  175. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  176. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  177. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  178. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +86 -273
  179. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  180. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  181. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  182. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +34 -335
  183. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  184. package/dist/shared/src/components/EntityPath/EntityPath.cjs.js.map +1 -1
  185. package/dist/shared/src/components/EntityPath/EntityPath.es.js.map +1 -1
  186. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  187. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  188. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +15 -310
  189. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  190. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js.map +1 -1
  191. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js.map +1 -1
  192. package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js.map +1 -1
  193. package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js.map +1 -1
  194. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  195. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  196. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +89 -293
  197. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  198. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js +2 -2
  199. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js.map +1 -1
  200. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js +10 -106
  201. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js.map +1 -1
  202. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js +1 -1
  203. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js.map +1 -1
  204. package/dist/shared/src/components/InfoMessage/InfoMessage.es.js +6 -5
  205. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  206. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  207. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  208. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  209. package/dist/shared/src/components/LinksManager/LinksManager.es.js +51 -346
  210. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  211. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  212. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  213. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +7 -212
  214. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  215. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  216. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  217. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +2 -205
  218. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  219. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  220. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  221. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +4 -185
  222. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  223. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  224. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  225. package/dist/shared/src/components/Menu/Menu.es.js +48 -343
  226. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  227. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  228. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  229. package/dist/shared/src/components/Menu/MenuItem.es.js +20 -316
  230. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  231. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  232. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  233. package/dist/shared/src/components/Menu/MenuList.es.js +74 -373
  234. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  235. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +2 -2
  236. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  237. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +16 -315
  238. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  239. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  240. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  241. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +48 -346
  242. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  243. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
  244. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  245. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +134 -304
  246. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  247. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  248. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  249. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +74 -367
  250. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  251. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  252. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  253. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -299
  254. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  255. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  256. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  257. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +34 -334
  258. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  259. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  260. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  261. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +30 -331
  262. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  263. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +5 -5
  264. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  265. package/dist/shared/src/components/RenameForm/RenameForm.es.js +77 -372
  266. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  267. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  268. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  269. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +114 -309
  270. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  271. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  272. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  273. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +66 -365
  274. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  275. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  276. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  277. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +14 -316
  278. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  279. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  280. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  281. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +70 -72
  282. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  283. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  284. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  285. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +24 -326
  286. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  287. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js.map +1 -1
  288. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js.map +1 -1
  289. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  290. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  291. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +335 -534
  292. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  293. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +7 -7
  294. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  295. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +29 -329
  296. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  297. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +4 -4
  298. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  299. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +53 -355
  300. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  301. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  302. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  303. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +95 -394
  304. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  305. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js +2 -2
  306. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js.map +1 -1
  307. package/dist/shared/src/components/SyncButton/SyncButton.es.js +52 -165
  308. package/dist/shared/src/components/SyncButton/SyncButton.es.js.map +1 -1
  309. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +3 -3
  310. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  311. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +35 -334
  312. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  313. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  314. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  315. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +26 -122
  316. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  317. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
  318. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  319. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +22 -118
  320. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  321. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +13 -13
  322. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  323. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +99 -300
  324. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  325. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  326. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  327. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +61 -262
  328. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  329. package/dist/shared/src/config/plannerFeatures.cjs.js.map +1 -1
  330. package/dist/shared/src/config/plannerFeatures.es.js.map +1 -1
  331. package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -1
  332. package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -1
  333. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  334. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -210
  336. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  337. package/dist/shared/src/containers/Actions/ActionIcon.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/Actions/ActionIcon.es.js.map +1 -1
  339. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  340. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/Actions/Actions.es.js +51 -250
  342. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  343. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  345. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  346. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +20 -323
  348. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  349. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
  351. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js.map +1 -1
  353. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +143 -327
  356. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +3 -3
  358. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +27 -329
  360. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  362. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +39 -236
  364. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  366. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +65 -255
  368. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  370. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +16 -317
  372. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  374. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +61 -354
  376. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  377. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +5 -5
  378. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
  379. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +20 -116
  380. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
  381. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  382. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +2 -306
  384. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  385. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js +1 -1
  386. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js.map +1 -1
  387. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js +51 -147
  388. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js.map +1 -1
  389. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  390. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -202
  392. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  393. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js.map +1 -1
  395. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -1
  396. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -1
  397. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.es.js.map +1 -1
  399. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +9 -9
  400. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  401. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -320
  402. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  403. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  404. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  405. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +13 -217
  406. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  407. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  408. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  409. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +22 -323
  410. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  411. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  412. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  413. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +27 -307
  414. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  415. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.cjs.js.map +1 -1
  416. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.es.js.map +1 -1
  417. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js.map +1 -1
  418. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js.map +1 -1
  419. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.cjs.js.map +1 -1
  420. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.es.js.map +1 -1
  421. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js.map +1 -1
  423. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  424. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  425. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +10 -106
  426. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  427. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
  428. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
  429. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  430. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -209
  432. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  433. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  434. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +74 -373
  436. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  437. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  438. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +20 -324
  440. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  441. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +6 -6
  442. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  443. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +32 -338
  444. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  445. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +3 -3
  446. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  447. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +12 -318
  448. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  449. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
  450. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
  451. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +11 -107
  452. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
  453. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  454. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  455. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +23 -228
  456. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  457. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  458. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  459. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +27 -123
  460. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  461. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.es.js.map +1 -1
  463. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  464. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  465. package/dist/shared/src/containers/Feed/Feed.es.js +65 -245
  466. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  467. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js.map +1 -1
  468. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.es.js.map +1 -1
  469. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  470. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  471. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -309
  472. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  473. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  474. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  475. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +145 -421
  476. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  477. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  478. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  479. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +18 -317
  480. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  481. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  482. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  483. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +24 -120
  484. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  485. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  486. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  487. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +42 -331
  488. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  489. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.es.js.map +1 -1
  491. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  492. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  493. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +227 -372
  494. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  495. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
  496. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
  497. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  498. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  499. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +38 -341
  500. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  501. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  502. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  503. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +22 -324
  504. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  505. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
  506. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
  507. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +9 -105
  508. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
  509. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  510. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  511. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +21 -324
  512. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  513. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js +1 -1
  514. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js.map +1 -1
  515. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js +16 -26
  516. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js.map +1 -1
  517. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js +2 -0
  518. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js.map +1 -0
  519. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js +14 -0
  520. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js.map +1 -0
  521. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +1 -1
  522. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -1
  523. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +2 -15
  524. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -1
  525. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
  526. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  527. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +62 -361
  528. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  529. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  530. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  531. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +57 -356
  532. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  533. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  534. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  535. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +14 -310
  536. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  537. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  538. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  539. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +34 -238
  540. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  541. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  542. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  543. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +67 -163
  544. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  545. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  546. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +18 -8
  547. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  548. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  549. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  550. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +10 -106
  551. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  552. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.cjs.js.map +1 -1
  553. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.es.js.map +1 -1
  554. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  555. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +13 -109
  557. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  558. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  559. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ListTable/ListTable.es.js +115 -284
  561. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  562. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  563. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +44 -177
  565. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  566. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  567. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  568. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +46 -343
  569. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  570. package/dist/shared/src/containers/ListTable/ListTableWidgets.cjs.js.map +1 -1
  571. package/dist/shared/src/containers/ListTable/ListTableWidgets.es.js.map +1 -1
  572. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.cjs.js.map +1 -1
  573. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.es.js.map +1 -1
  574. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js +3 -3
  575. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js.map +1 -1
  576. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js +170 -459
  577. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js.map +1 -1
  578. package/dist/shared/src/containers/NewEntity/components/TypeEditor.cjs.js.map +1 -1
  579. package/dist/shared/src/containers/NewEntity/components/TypeEditor.es.js.map +1 -1
  580. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js +1 -1
  581. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js.map +1 -1
  582. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js +117 -314
  583. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +590 -859
  587. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +245 -391
  591. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +75 -375
  595. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +32 -204
  599. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  601. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  602. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +27 -124
  603. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  604. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +7 -7
  605. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +35 -131
  607. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +97 -292
  611. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  612. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
  613. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  614. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +243 -441
  615. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  616. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +156 -330
  619. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  620. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -208
  623. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  624. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  626. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +120 -420
  627. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  628. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +71 -245
  631. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  632. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js.map +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js +3 -3
  634. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js.map +1 -1
  635. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.cjs.js.map +1 -1
  636. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.es.js.map +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
  639. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  640. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +83 -179
  642. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  643. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  644. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  645. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +13 -317
  646. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  647. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  648. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  649. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +59 -233
  650. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  651. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  652. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  653. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +74 -248
  654. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  655. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  656. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  657. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +147 -439
  658. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  659. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  660. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  661. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +23 -197
  662. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  663. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  664. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  665. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +32 -206
  666. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  667. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  668. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  669. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +32 -332
  670. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  671. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  672. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  673. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +135 -335
  674. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  675. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
  676. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
  677. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  678. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  679. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +29 -203
  680. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  681. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  682. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  683. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +36 -204
  684. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  685. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  686. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  687. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +78 -282
  688. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  689. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  690. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  691. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +31 -232
  692. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  693. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  694. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  695. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +24 -198
  696. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  697. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  698. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  699. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +29 -203
  700. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  701. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  702. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  703. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +167 -467
  704. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  705. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  706. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  707. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +41 -215
  708. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  709. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
  710. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
  711. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js.map +1 -1
  712. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js.map +1 -1
  713. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js.map +1 -1
  714. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js.map +1 -1
  715. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  716. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  717. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js.map +1 -1
  718. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js.map +1 -1
  719. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
  720. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -1
  721. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js.map +1 -1
  722. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js.map +1 -1
  723. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
  724. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
  725. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.cjs.js.map +1 -1
  726. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.es.js.map +1 -1
  727. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -1
  728. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -1
  729. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +2 -2
  730. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  731. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +14 -315
  732. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  733. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  734. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  735. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +113 -398
  736. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  737. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +5 -5
  738. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  739. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +40 -332
  740. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  741. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  742. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  743. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js +1 -1
  744. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js.map +1 -1
  745. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js +22 -194
  746. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js.map +1 -1
  747. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  748. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  749. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  750. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  751. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +3 -3
  752. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  753. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +52 -348
  754. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  755. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +5 -5
  756. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  757. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +77 -364
  758. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  759. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  760. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  761. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +28 -202
  762. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  763. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  764. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  765. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +36 -333
  766. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  767. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +5 -5
  768. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  769. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +130 -424
  770. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  771. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +4 -4
  772. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  773. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +80 -176
  774. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  775. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +5 -5
  776. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  777. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -108
  778. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  779. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  780. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  781. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +20 -217
  782. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  783. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  784. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  785. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +231 -527
  786. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  787. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  788. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  789. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +69 -367
  790. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  791. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +2 -2
  792. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  793. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +18 -318
  794. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  795. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +2 -2
  796. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  797. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +24 -328
  798. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  799. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  800. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  801. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +69 -370
  802. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  803. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  804. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  805. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +27 -228
  806. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  807. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js +1 -1
  808. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js.map +1 -1
  809. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js +34 -236
  810. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js.map +1 -1
  811. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  812. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  813. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +5 -309
  814. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  815. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  816. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  817. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +7 -311
  818. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  819. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +1 -1
  820. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -1
  821. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +11 -314
  822. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -1
  823. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  824. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  825. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +13 -316
  826. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  827. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  828. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  829. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +34 -338
  830. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  831. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  832. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  833. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +11 -316
  834. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  835. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  836. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  837. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +72 -368
  838. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  839. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  840. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  841. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -1
  842. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -1
  843. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
  844. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  845. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +24 -120
  846. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  847. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  848. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  849. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  850. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  851. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +35 -336
  852. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  853. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  854. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  855. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +55 -354
  856. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  857. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  858. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  859. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +40 -335
  860. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  861. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  862. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  863. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +59 -262
  864. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  865. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  866. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  867. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +17 -113
  868. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  869. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  870. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  871. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +45 -141
  872. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  873. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -1
  874. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -1
  875. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  876. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  877. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +22 -216
  878. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  879. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  880. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  881. package/dist/shared/src/containers/Views/types.cjs.js.map +1 -1
  882. package/dist/shared/src/containers/Views/types.es.js.map +1 -1
  883. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js.map +1 -1
  884. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js.map +1 -1
  885. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
  886. package/dist/shared/src/context/AddonContext.es.js.map +1 -1
  887. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  888. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  889. package/dist/shared/src/context/AddonProjectContext.es.js +19 -115
  890. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  891. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js +1 -1
  892. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js.map +1 -1
  893. package/dist/shared/src/context/DeleteEntitiesContext.es.js +1 -1
  894. package/dist/shared/src/context/DeleteEntitiesContext.es.js.map +1 -1
  895. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  896. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  897. package/dist/shared/src/context/DetailsPanelContext.es.js +66 -362
  898. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  899. package/dist/shared/src/context/EntityUpdatesContext.cjs.js +1 -1
  900. package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -1
  901. package/dist/shared/src/context/EntityUpdatesContext.es.js +61 -358
  902. package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -1
  903. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  904. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  905. package/dist/shared/src/context/PowerpackContext.es.js +42 -344
  906. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  907. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  908. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  909. package/dist/shared/src/context/ProjectFoldersContext.es.js +26 -231
  910. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  911. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  912. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  913. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  914. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  915. package/dist/shared/src/context/SubtasksModulesContext.es.js +23 -324
  916. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  917. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +1 -1
  918. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
  919. package/dist/shared/src/context/ThumbnailUploaderContext.es.js +17 -21
  920. package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
  921. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  922. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  923. package/dist/shared/src/context/UriContext.es.js +2 -2
  924. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  925. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  926. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  927. package/dist/shared/src/context/WebsocketContext.es.js +28 -229
  928. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  929. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  930. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  931. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -208
  932. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  933. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  934. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  935. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +11 -314
  936. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  937. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  938. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  939. package/dist/shared/src/hooks/useHierarchyTable.es.js +30 -333
  940. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  941. package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
  942. package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
  943. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
  944. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
  945. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +19 -115
  946. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
  947. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  948. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  949. package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -212
  950. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  951. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  952. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  953. package/dist/shared/src/util/checkName.cjs.js.map +1 -1
  954. package/dist/shared/src/util/checkName.es.js.map +1 -1
  955. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  956. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  957. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  958. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  959. package/dist/shared/src/util/getBundleMode.cjs.js +1 -1
  960. package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -1
  961. package/dist/shared/src/util/getBundleMode.es.js +16 -112
  962. package/dist/shared/src/util/getBundleMode.es.js.map +1 -1
  963. package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
  964. package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
  965. package/dist/shared/src/util/getPriorityOptions.cjs.js.map +1 -1
  966. package/dist/shared/src/util/getPriorityOptions.es.js.map +1 -1
  967. package/dist/shared/src/util/iconUtils.cjs.js.map +1 -1
  968. package/dist/shared/src/util/iconUtils.es.js.map +1 -1
  969. package/dist/shared/src/util/mentionTypeOptions.cjs.js +2 -0
  970. package/dist/shared/src/util/mentionTypeOptions.cjs.js.map +1 -0
  971. package/dist/shared/src/util/mentionTypeOptions.es.js +16 -0
  972. package/dist/shared/src/util/mentionTypeOptions.es.js.map +1 -0
  973. package/dist/shared/src/util/parseFilename.cjs.js +2 -0
  974. package/dist/shared/src/util/parseFilename.cjs.js.map +1 -0
  975. package/dist/shared/src/util/parseFilename.es.js +8 -0
  976. package/dist/shared/src/util/parseFilename.es.js.map +1 -0
  977. package/dist/shared/src/util/uriUtils.cjs.js.map +1 -1
  978. package/dist/shared/src/util/uriUtils.es.js.map +1 -1
  979. package/dist/types/api/base/index.d.ts +1 -1
  980. package/dist/types/api/generated/graphql.d.ts +5 -2
  981. package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
  982. package/dist/types/api/queries/activities/getActivities.d.ts +4 -2
  983. package/dist/types/api/queries/activities/getCategories.d.ts +1 -1
  984. package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +1 -1
  985. package/dist/types/api/queries/entities/getEntity.d.ts +2 -1
  986. package/dist/types/api/queries/entities/getEntityPanel.d.ts +2 -1
  987. package/dist/types/api/queries/entities/updateEntity.d.ts +2 -1
  988. package/dist/types/api/queries/entityLists/getLists.d.ts +305 -305
  989. package/dist/types/api/queries/overview/getOverview.d.ts +35 -18
  990. package/dist/types/api/queries/project/getProject.d.ts +62 -61
  991. package/dist/types/api/queries/system/getSystem.d.ts +1 -1
  992. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +2 -1
  993. package/dist/types/api/queries/users/getUsers.d.ts +2 -1
  994. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +4 -2
  995. package/dist/types/api/queries/views/getViews.d.ts +1 -1
  996. package/dist/types/components/DetailsPanelDetails/DetailsSection.d.ts +1 -1
  997. package/dist/types/components/Menu/Menu.d.ts +1 -1
  998. package/dist/types/components/Menu/MenuList.d.ts +1 -1
  999. package/dist/types/components/Powerpack/PowerpackButton.d.ts +1 -1
  1000. package/dist/types/components/ProjectTableSettings/ColumnsSettings.d.ts +1 -1
  1001. package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +2 -2
  1002. package/dist/types/components/ProjectTableSettings/TableSettingsFallback.d.ts +1 -1
  1003. package/dist/types/components/RemotePage/ProjectPageRemote.d.ts +1 -1
  1004. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +4 -2
  1005. package/dist/types/components/RenameForm/RenameForm.d.ts +1 -1
  1006. package/dist/types/components/ReviewablesList/SortableReviewableCard.d.ts +1 -1
  1007. package/dist/types/components/ReviewablesList/useReviewablesUpload.d.ts +2 -2
  1008. package/dist/types/components/ReviewablesSelector/Card.d.ts +1 -1
  1009. package/dist/types/components/SearchFilter/filterScopeRegistry.d.ts +1 -1
  1010. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
  1011. package/dist/types/components/SettingsPanel/SettingsPanel.d.ts +1 -1
  1012. package/dist/types/components/SyncButton/SyncButton.d.ts +1 -1
  1013. package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +1 -2
  1014. package/dist/types/config/plannerFeatures.d.ts +1 -1
  1015. package/dist/types/config/powerpackFeatures.d.ts +1 -1
  1016. package/dist/types/containers/Actions/Actions.d.ts +2 -2
  1017. package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +1 -1
  1018. package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +1 -1
  1019. package/dist/types/containers/DetailsPanel/DetailsPanel.d.ts +1 -1
  1020. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.d.ts +2 -2
  1021. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.d.ts +1 -1
  1022. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.d.ts +2 -2
  1023. package/dist/types/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.d.ts +1 -1
  1024. package/dist/types/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.d.ts +3 -3
  1025. package/dist/types/containers/DetailsPanel/containers/DetailsPanelSubtasks.d.ts +1 -1
  1026. package/dist/types/containers/DetailsPanel/helpers/buildEntityTypeIcons.d.ts +1 -1
  1027. package/dist/types/containers/DetailsPanel/helpers/getEntityPathData.d.ts +1 -1
  1028. package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +1 -1
  1029. package/dist/types/containers/DetailsPanel/hooks/useGetEntityPath.d.ts +1 -1
  1030. package/dist/types/containers/EntityPickerDialog/components/EntityTypeTable.d.ts +1 -1
  1031. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
  1032. package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +1 -1
  1033. package/dist/types/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.d.ts +1 -1
  1034. package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.styled.d.ts +2 -2
  1035. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +1 -1
  1036. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.styled.d.ts +1 -1
  1037. package/dist/types/containers/Feed/components/CommentInput/modules/index.d.ts +1 -1
  1038. package/dist/types/containers/Feed/components/CommentInput/quillFormats.d.ts +1 -0
  1039. package/dist/types/containers/Feed/components/CommentInput/types.d.ts +1 -12
  1040. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +1 -1
  1041. package/dist/types/containers/Feed/context/FeedContext.d.ts +1 -1
  1042. package/dist/types/containers/Feed/hooks/useLastVersionReview.d.ts +1 -1
  1043. package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +1 -1
  1044. package/dist/types/containers/Feed/mentionHelpers/getMentionUsers.d.ts +1 -1
  1045. package/dist/types/containers/Feed/mentionHelpers/getMentionVersions.d.ts +2 -2
  1046. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -1
  1047. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -1
  1048. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -3
  1049. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +1 -1
  1050. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +4 -5
  1051. package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +1 -1
  1052. package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +2 -2
  1053. package/dist/types/containers/ProjectTreeTable/hooks/useMoveEntities.d.ts +1 -1
  1054. package/dist/types/containers/ProjectTreeTable/hooks/usePasteLinks.d.ts +1 -1
  1055. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +1 -1
  1056. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +6 -5
  1057. package/dist/types/containers/ProjectTreeTable/utils/getEntityViewerIds.d.ts +1 -1
  1058. package/dist/types/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.d.ts +1 -1
  1059. package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +1 -1
  1060. package/dist/types/containers/ProjectTreeTable/utils/sanitizeQueryFilter.d.ts +1 -1
  1061. package/dist/types/containers/ProjectTreeTable/widgets/LinksWidget.d.ts +1 -1
  1062. package/dist/types/containers/ProjectTreeTable/widgets/NameWidget.d.ts +1 -1
  1063. package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +2 -1
  1064. package/dist/types/containers/Slicer/components/Slicer.d.ts +2 -2
  1065. package/dist/types/containers/Slicer/components/SlicerDropdownFallback.d.ts +1 -1
  1066. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +3 -4
  1067. package/dist/types/containers/Slicer/hooks/useEntityListsSlice.d.ts +1 -1
  1068. package/dist/types/containers/Slicer/hooks/useHierarchyContextMenuItems.d.ts +3 -3
  1069. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +1 -1
  1070. package/dist/types/containers/Slicer/hooks/useSlicerCounts.d.ts +1 -1
  1071. package/dist/types/containers/Slicer/hooks/useUsersTable.d.ts +1 -1
  1072. package/dist/types/containers/Slicer/types.d.ts +1 -1
  1073. package/dist/types/containers/Views/hooks/pages/useListsViewSettings.d.ts +1 -1
  1074. package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +1 -1
  1075. package/dist/types/containers/Views/types.d.ts +1 -1
  1076. package/dist/types/context/AddonContext.d.ts +1 -1
  1077. package/dist/types/context/AddonProjectContext.d.ts +2 -2
  1078. package/dist/types/context/DetailsPanelContext.d.ts +2 -2
  1079. package/dist/types/context/SubtasksModulesContext.d.ts +1 -1
  1080. package/dist/types/hooks/useHierarchyTable.d.ts +1 -1
  1081. package/dist/types/util/buildHierarchicalTableRows.d.ts +1 -1
  1082. package/dist/types/util/columnConfigConverter.d.ts +1 -1
  1083. package/dist/types/util/getBundleMode.d.ts +1 -1
  1084. package/dist/types/util/getGroupByDataType.d.ts +1 -1
  1085. package/dist/types/util/index.d.ts +2 -0
  1086. package/dist/types/util/mentionTypeOptions.d.ts +12 -0
  1087. package/dist/types/util/parseFilename.d.ts +1 -0
  1088. package/dist/types/util/uriUtils.d.ts +1 -1
  1089. package/dist/util.cjs.js +1 -1
  1090. package/dist/util.es.js +24 -20
  1091. package/dist/util.es.js.map +1 -1
  1092. package/package.json +1 -1
  1093. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js +0 -2
  1094. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js.map +0 -1
  1095. package/dist/shared/src/components/ThumbnailSimple/index.es.js +0 -6
  1096. package/dist/shared/src/components/ThumbnailSimple/index.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ClipboardContext.es.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.es.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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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const he=require("../../../../../_virtual/jsx-runtime.cjs.js"),c=require("react"),R=require("@tanstack/react-table"),Oe=require("./ColumnSettingsContext.cjs.js"),h=require("lodash"),d=require("../constants.cjs.js");require("@ynput/ayon-react-components");require("../../../components/SearchFilter/filterDates.cjs.js");require("date-fns");require("short-uuid");const Se=require("../utils/columnIds.cjs.js");require("react-toastify");require("uuid");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("../../../util/pubsub.cjs.js");require("clsx");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("react-dom");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("react-markdown");require("remark-gfm");require("rehype-raw");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../../Feed/components/CommentInput/modules/index.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.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("../../../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");require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContextInstance.cjs.js");require("../../../context/EntityUpdatesContextInstance.cjs.js");require("../../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */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("remark-emoji");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/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.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("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../Feed/components/FeedSearchFilter.cjs.js");require("@tanstack/react-virtual");require("../buildTreeTableColumns.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("./ProjectTableQueriesContext.cjs.js");require("./ProjectTableContextInstance.cjs.js");require("./ClipboardContext.cjs.js");require("./SelectionCellsContext.cjs.js");require("./ProjectDataContextInstance.cjs.js");require("./CellEditingContext.cjs.js");require("../../NewEntity/components/NewEntity.cjs.js");require("../../Slicer/components/Slicer.cjs.js");require("../../Slicer/context/SlicerContextInstance.cjs.js");require("../../Slicer/components/SlicerDropdownFallback.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("react-redux");require("../../NewEntity/context/NewEntityContextInstance.cjs.js");require("../../NewEntity/components/NewEntityForm.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../components/TableFooterRow.cjs.js");require("./SelectedRowsContext.cjs.js");require("./DetailsPanelEntityContext.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("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.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("../../Views/context/ViewsContextInstance.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../ListTable/ListTableRow.cjs.js");require("../../ListTable/ListTable.styled.cjs.js");require("../../../context/DeleteEntitiesContext.cjs.js");require("custom-protocol-check");require("../components/GroupSettingsFallback.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/InfoMessage/InfoMessage.cjs.js");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/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("../../../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");const V=require("../utils/checkColumnVisibility.cjs.js"),pe=({children:j,config:k,onChange:H,defaultColumnVisibility:O})=>{const N=c.useRef([]),P=c.useRef(null),f=c.useRef(null),I=c.useRef(null),w=c.useRef(void 0),S=c.useRef(null),[p,g]=c.useState(null),[D,b]=c.useState(null),[G,L]=c.useState(null),K=e=>{N.current=Array.from(new Set(e))},n=e=>{const r=N.current,u=new Set([d.DRAG_HANDLE_COLUMN_ID,d.ROW_SELECTION_COLUMN_ID]);if(r.length>0){const i={...e.columnVisibility};r.forEach(m=>{!u.has(m)&&i[m]===void 0&&(i[m]=V.checkColumnVisibility({},m,O))}),u.forEach(m=>delete i[m]);const l=(e.columnOrder??[]).filter(m=>!u.has(m));H({...e,columnVisibility:i,columnOrder:l},r)}else H(e,r)},q=Se.normalizeColumnsConfig(k),{columnOrder:J=[],columnPinning:Q={},columnVisibility:X={},columnSizing:s={},sorting:Y=[],groupBy:y,groupByConfig:z={},rowHeight:a=34,columnSummaries:v={},columnSummaryScopes:x={},columnSummaryFormats:A={}}=q||{};w.current!==a&&w.current!==void 0&&(D!==null&&b(null),f.current&&(clearTimeout(f.current),f.current=null)),w.current=a;const Z=D??a,T=[...Y],t=[...G??[...J]],o={...Q},E=["thumbnail","name","subType","status","tags"];if(E.forEach((e,r)=>{if(!t.includes(e)){const u=E[r-1],i=E[r+1];if(!u||!t.includes(u))t.unshift(e);else{const l=t.indexOf(u);t.splice(l+1,0,e)}i&&o?.left&&o?.left.includes(i)&&(o.left=[e,...o?.left||[]])}}),y&&y.id!=="folder"){if(!o.left?.includes("name"))o.left=["name",...o?.left||[]];else{const e=o.left.filter(r=>r!=="name");o.left=["name",...e]}if(t.includes("name")){const e=t.indexOf("name");t.splice(e,1)}t.unshift("name")}t.unshift(d.DRAG_HANDLE_COLUMN_ID,d.ROW_SELECTION_COLUMN_ID);const C={...X};y&&!C.name&&(C.name=!0);const U=e=>{n({...q,columnVisibility:e})},W=e=>{n({...q,columnOrder:e})},B=e=>{n({...q,columnPinning:e})},_=p||s,M=e=>{g(e),P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{n({...q,columnSizing:e}),g(null)},500)},$=e=>{const r={...o},i=(r.left||[]).filter(l=>V.checkColumnVisibility(e,l,O));return{...r,left:i}},ee=e=>{const r={...o},u=r.left||[],i=e.filter(l=>u.includes(l));return{...r,left:i}},re=e=>[...t].sort((r,u)=>{const i=e.left?.includes(r)?1:0;return(e.left?.includes(u)?1:0)-i}),ie=e=>{const r=$(e);n({...q,columnVisibility:e,columnPinning:r})},ue=e=>{const r=e.filter(i=>i!==d.DRAG_HANDLE_COLUMN_ID&&i!==d.ROW_SELECTION_COLUMN_ID),u=ee(r);L(r),I.current&&clearTimeout(I.current),I.current=setTimeout(()=>{n({...q,columnOrder:r,columnPinning:u}),L(null)},300)},ne=e=>{const r=re(e);n({...q,columnOrder:r,columnPinning:e})},F=e=>{n({...q,sorting:e})},qe=(e,r)=>{n({...q,columnSummaries:{...v,[e]:r}})},te=(e,r)=>{n({...q,columnSummaryScopes:{...x,[e]:r}})},oe=(e,r)=>{n({...q,columnSummaryFormats:{...A,[e]:r}})},le=e=>{n({...q,groupBy:e})},ce=e=>{n({...q,groupByConfig:{...z,...e}})},se=c.useCallback(e=>{if(S.current===null){const u=s.thumbnail||63,i=a||34;S.current=u/i}const r=S.current*e;b(e),g({...p||s,thumbnail:r})},[s,a]),me=c.useCallback(e=>{const l=(s.thumbnail||63)/(a||34)*e;b(e),g({...p||s,thumbnail:l}),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{n({...q,rowHeight:e,columnSizing:{...s,thumbnail:l}}),b(null),g(null),S.current=null},300)},[q,n,s,a,p]),ae=e=>{const r=typeof e=="function"?e(C):e,u={};Object.keys(r).forEach(i=>{const l=V.checkColumnVisibility({},i,O);r[i]!==l&&(u[i]=r[i])}),!h.isEqual(u,C)&&U(u)},fe=e=>{const r=R.functionalUpdate(e,o);h.isEqual(r,o)||B(r)},de=e=>{const r=R.functionalUpdate(e,t);h.isEqual(r,t)||W(r)},ge=e=>{const r=R.functionalUpdate(e,_);h.isEqual(r,_)||M(r)},Ce=e=>{const r=R.functionalUpdate(e,T);h.isEqual(r,T)||F(r)};return he.jsxRuntimeExports.jsx(Oe.ColumnSettingsContext.Provider,{value:{setAllColumns:K,columnVisibility:C,defaultColumnVisibility:O,setColumnVisibility:U,updateColumnVisibility:ie,columnVisibilityOnChange:ae,columnPinning:o,setColumnPinning:B,updateColumnPinning:ne,columnPinningOnChange:fe,columnOrder:t,setColumnOrder:W,updateColumnOrder:ue,columnOrderOnChange:de,columnSizing:_,setColumnSizing:M,columnSizingOnChange:ge,columnSummaries:v,updateColumnSummary:qe,columnSummaryScopes:x,updateColumnSummaryScope:te,columnSummaryFormats:A,updateColumnSummaryFormat:oe,sorting:T,updateSorting:F,sortingOnChange:Ce,groupBy:y,updateGroupBy:le,groupByConfig:z,updateGroupByConfig:ce,rowHeight:Z,updateRowHeight:se,updateRowHeightWithPersistence:me,setColumnsConfig:e=>n(e)},children:j})};exports.ColumnSettingsProvider=pe;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const he=require("../../../../../_virtual/jsx-runtime.cjs.js"),s=require("react"),R=require("@tanstack/react-table"),Oe=require("./ColumnSettingsContext.cjs.js"),h=require("lodash"),d=require("../constants.cjs.js");require("@ynput/ayon-react-components");require("../../../components/SearchFilter/filterDates.cjs.js");require("date-fns");require("short-uuid");const Se=require("../utils/columnIds.cjs.js");require("react-toastify");require("uuid");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../util/pubsub.cjs.js");require("clsx");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("react-router-dom");require("./CellEditingContext.cjs.js");require("./SelectionCellsContext.cjs.js");require("./ProjectTableQueriesContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("./ProjectTableContextInstance.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/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("./ClipboardContext.cjs.js");require("./SelectedRowsContext.cjs.js");require("./DetailsPanelEntityContext.cjs.js");;/* empty css */require("../../ContextMenu/ContextMenuContext.cjs.js");require("../../../context/DeleteEntitiesContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("./ProjectDataContextInstance.cjs.js");require("../../../context/ProjectFoldersContextInstance.cjs.js");require("../buildTreeTableColumns.cjs.js");const V=require("../utils/checkColumnVisibility.cjs.js"),pe=({children:j,config:k,onChange:H,defaultColumnVisibility:O})=>{const N=s.useRef([]),P=s.useRef(null),f=s.useRef(null),I=s.useRef(null),w=s.useRef(void 0),S=s.useRef(null),[p,g]=s.useState(null),[D,b]=s.useState(null),[G,L]=s.useState(null),K=e=>{N.current=Array.from(new Set(e))},u=e=>{const r=N.current,i=new Set([d.DRAG_HANDLE_COLUMN_ID,d.ROW_SELECTION_COLUMN_ID]);if(r.length>0){const n={...e.columnVisibility};r.forEach(q=>{!i.has(q)&&n[q]===void 0&&(n[q]=V.checkColumnVisibility({},q,O))}),i.forEach(q=>delete n[q]);const c=(e.columnOrder??[]).filter(q=>!i.has(q));H({...e,columnVisibility:n,columnOrder:c},r)}else H(e,r)},t=Se.normalizeColumnsConfig(k),{columnOrder:J=[],columnPinning:Q={},columnVisibility:X={},columnSizing:m={},sorting:Y=[],groupBy:y,groupByConfig:z={},rowHeight:a=34,columnSummaries:v={},columnSummaryScopes:x={},columnSummaryFormats:A={}}=t||{};w.current!==a&&w.current!==void 0&&(D!==null&&b(null),f.current&&(clearTimeout(f.current),f.current=null)),w.current=a;const Z=D??a,T=[...Y],o=[...G??[...J]],l={...Q},E=["thumbnail","name","subType","status","tags"];if(E.forEach((e,r)=>{if(!o.includes(e)){const i=E[r-1],n=E[r+1];if(!i||!o.includes(i))o.unshift(e);else{const c=o.indexOf(i);o.splice(c+1,0,e)}n&&l?.left&&l?.left.includes(n)&&(l.left=[e,...l?.left||[]])}}),y&&y.id!=="folder"){if(!l.left?.includes("name"))l.left=["name",...l?.left||[]];else{const e=l.left.filter(r=>r!=="name");l.left=["name",...e]}if(o.includes("name")){const e=o.indexOf("name");o.splice(e,1)}o.unshift("name")}o.unshift(d.DRAG_HANDLE_COLUMN_ID,d.ROW_SELECTION_COLUMN_ID);const C={...X};y&&!C.name&&(C.name=!0);const U=e=>{u({...t,columnVisibility:e})},W=e=>{u({...t,columnOrder:e})},B=e=>{u({...t,columnPinning:e})},_=p||m,M=e=>{g(e),P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{u({...t,columnSizing:e}),g(null)},500)},$=e=>{const r={...l},n=(r.left||[]).filter(c=>V.checkColumnVisibility(e,c,O));return{...r,left:n}},ee=e=>{const r={...l},i=r.left||[],n=e.filter(c=>i.includes(c));return{...r,left:n}},re=e=>[...o].sort((r,i)=>{const n=e.left?.includes(r)?1:0;return(e.left?.includes(i)?1:0)-n}),ne=e=>{const r=$(e);u({...t,columnVisibility:e,columnPinning:r})},ie=e=>{const r=e.filter(n=>n!==d.DRAG_HANDLE_COLUMN_ID&&n!==d.ROW_SELECTION_COLUMN_ID),i=ee(r);L(r),I.current&&clearTimeout(I.current),I.current=setTimeout(()=>{u({...t,columnOrder:r,columnPinning:i}),L(null)},300)},ue=e=>{const r=re(e);u({...t,columnOrder:r,columnPinning:e})},F=e=>{u({...t,sorting:e})},te=(e,r)=>{u({...t,columnSummaries:{...v,[e]:r}})},oe=(e,r)=>{u({...t,columnSummaryScopes:{...x,[e]:r}})},le=(e,r)=>{u({...t,columnSummaryFormats:{...A,[e]:r}})},ce=e=>{u({...t,groupBy:e})},se=e=>{u({...t,groupByConfig:{...z,...e}})},me=s.useCallback(e=>{if(S.current===null){const i=m.thumbnail||63,n=a||34;S.current=i/n}const r=S.current*e;b(e),g({...p||m,thumbnail:r})},[m,a]),qe=s.useCallback(e=>{const c=(m.thumbnail||63)/(a||34)*e;b(e),g({...p||m,thumbnail:c}),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{u({...t,rowHeight:e,columnSizing:{...m,thumbnail:c}}),b(null),g(null),S.current=null},300)},[t,u,m,a,p]),ae=e=>{const r=typeof e=="function"?e(C):e,i={};Object.keys(r).forEach(n=>{const c=V.checkColumnVisibility({},n,O);r[n]!==c&&(i[n]=r[n])}),!h.isEqual(i,C)&&U(i)},fe=e=>{const r=R.functionalUpdate(e,l);h.isEqual(r,l)||B(r)},de=e=>{const r=R.functionalUpdate(e,o);h.isEqual(r,o)||W(r)},ge=e=>{const r=R.functionalUpdate(e,_);h.isEqual(r,_)||M(r)},Ce=e=>{const r=R.functionalUpdate(e,T);h.isEqual(r,T)||F(r)};return he.jsxRuntimeExports.jsx(Oe.ColumnSettingsContext.Provider,{value:{setAllColumns:K,columnVisibility:C,defaultColumnVisibility:O,setColumnVisibility:U,updateColumnVisibility:ne,columnVisibilityOnChange:ae,columnPinning:l,setColumnPinning:B,updateColumnPinning:ue,columnPinningOnChange:fe,columnOrder:o,setColumnOrder:W,updateColumnOrder:ie,columnOrderOnChange:de,columnSizing:_,setColumnSizing:M,columnSizingOnChange:ge,columnSummaries:v,updateColumnSummary:te,columnSummaryScopes:x,updateColumnSummaryScope:oe,columnSummaryFormats:A,updateColumnSummaryFormat:le,sorting:T,updateSorting:F,sortingOnChange:Ce,groupBy:y,updateGroupBy:ce,groupByConfig:z,updateGroupByConfig:se,rowHeight:Z,updateRowHeight:me,updateRowHeightWithPersistence:qe,setColumnsConfig:e=>u(e)},children:j})};exports.ColumnSettingsProvider=pe;
2
2
  //# sourceMappingURL=ColumnSettingsProvider.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSettingsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\nimport { SummaryCalc, SummaryFormat, RowScope } from '../types/summaryTypes'\nimport { isEqual } from 'lodash'\nimport { checkColumnVisibility } from '../utils'\nimport { normalizeColumnsConfig } from '../utils/columnIds'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n defaultColumnVisibility?: VisibilityState\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n defaultColumnVisibility,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const columnOrderTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const prevRowHeightRef = React.useRef<number | undefined>(undefined)\n const lockedAspectRatioRef = React.useRef<number | null>(null)\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState | null>(null)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => {\n const allKnownIds = allColumnsRef.current\n // Expand sparse columnVisibility to explicit values for all known columns so that\n // \"undefined\" is never ambiguous when columns are saved and reloaded.\n // Special columns (drag-handle, row-selection) are always injected by the provider,\n // so they must never be persisted — strip them from visibility and order entirely.\n const specialIds = new Set([DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n if (allKnownIds.length > 0) {\n const resolvedVisibility = { ...next.columnVisibility }\n allKnownIds.forEach((id) => {\n if (!specialIds.has(id) && resolvedVisibility[id] === undefined) {\n resolvedVisibility[id] = checkColumnVisibility({}, id, defaultColumnVisibility)\n }\n })\n // Remove special columns from visibility and order before persisting\n specialIds.forEach((id) => delete resolvedVisibility[id])\n const resolvedOrder = (next.columnOrder ?? []).filter((id) => !specialIds.has(id))\n onChange(\n { ...next, columnVisibility: resolvedVisibility, columnOrder: resolvedOrder },\n allKnownIds,\n )\n } else {\n onChange(next, allKnownIds)\n }\n }\n const columnsConfig = normalizeColumnsConfig(config as ColumnsConfig | undefined)\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight = 34,\n columnSummaries: columnSummariesInit = {},\n columnSummaryScopes: columnSummaryScopesInit = {},\n columnSummaryFormats: columnSummaryFormatsInit = {},\n } = columnsConfig || {}\n\n // Clear internal row height when config changes (e.g., when switching views)\n // This happens during render, before the component uses the value\n if (prevRowHeightRef.current !== configRowHeight && prevRowHeightRef.current !== undefined) {\n // Config changed, clear internal state\n if (internalRowHeight !== null) {\n setInternalRowHeight(null)\n }\n // Clear any pending timeout\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n rowHeightTimeoutRef.current = null\n }\n }\n prevRowHeightRef.current = configRowHeight\n\n // Use internal row height during adjustments, otherwise use config value\n const rowHeight = internalRowHeight ?? configRowHeight\n\n const sorting = [...sortingInit]\n // Use internal column order for immediate UI updates, otherwise use config value\n const columnOrderBase = internalColumnOrder ?? [...columnOrderInit]\n const columnOrder = [...columnOrderBase]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode (except folder grouping), always pin the name column\n // and ensure it is first in column order\n if (groupBy && groupBy.id !== 'folder') {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n\n const newPinnedColumns = pinnedColumns.filter((col) =>\n checkColumnVisibility(visibility, col, defaultColumnVisibility),\n )\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n // Filter out special columns that are added dynamically\n const filteredOrder = order.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n\n const newPinning = updatePinningOrderOnOrderChange(filteredOrder)\n\n // Update UI immediately (optimistic)\n setInternalColumnOrder(filteredOrder)\n\n // Clear any existing timeout to debounce API calls\n if (columnOrderTimeoutRef.current) {\n clearTimeout(columnOrderTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n columnOrderTimeoutRef.current = setTimeout(() => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: filteredOrder,\n columnPinning: newPinning,\n })\n // Clear internal state after persistence\n setInternalColumnOrder(null)\n }, 300)\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateColumnSummary = (columnId: string, calc: SummaryCalc) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaries: { ...columnSummariesInit, [columnId]: calc },\n })\n }\n\n const updateColumnSummaryScope = (columnId: string, scope: RowScope) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryScopes: { ...columnSummaryScopesInit, [columnId]: scope },\n })\n }\n\n const updateColumnSummaryFormat = (columnId: string, format: SummaryFormat) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryFormats: { ...columnSummaryFormatsInit, [columnId]: format },\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeight = React.useCallback(\n (newRowHeight: number) => {\n // Lock the aspect ratio on first call if not already locked\n if (lockedAspectRatioRef.current === null) {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n lockedAspectRatioRef.current = currentThumbnailWidth / currentRowHeight\n }\n const newThumbnailWidth = lockedAspectRatioRef.current * newRowHeight\n\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n },\n [columnsSizingExternal, configRowHeight],\n )\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = React.useCallback(\n (newRowHeight: number) => {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n const currentRatio = currentThumbnailWidth / currentRowHeight\n\n const newThumbnailWidth = currentRatio * newRowHeight\n\n // Update UI immediately\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n columnSizing: {\n ...columnsSizingExternal,\n thumbnail: newThumbnailWidth,\n },\n })\n\n // Clean up internal state after API call completes\n setInternalRowHeight(null)\n setInternalColumnSizing(null)\n lockedAspectRatioRef.current = null\n }, 300)\n },\n [\n columnsConfig,\n onChangeWithColumns,\n columnsSizingExternal,\n configRowHeight,\n internalColumnSizing,\n ],\n )\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const nextFull = typeof updater === 'function' ? updater(columnVisibility) : updater\n\n // Calculate sparse version: only keys that are different from defaults\n const sparseNext: VisibilityState = {}\n Object.keys(nextFull).forEach((key) => {\n const defaultValue = checkColumnVisibility({}, key, defaultColumnVisibility)\n if (nextFull[key] !== defaultValue) {\n sparseNext[key] = nextFull[key]\n }\n })\n\n if (isEqual(sparseNext, columnVisibility)) return\n setColumnVisibility(sparseNext)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n if (isEqual(newPinning, columnPinning)) return\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n if (isEqual(newOrder, columnOrder)) return\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n if (isEqual(newSizing, columnSizing)) return\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n if (isEqual(newSorting, sorting)) return\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n defaultColumnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // column summary calc\n columnSummaries: columnSummariesInit,\n updateColumnSummary,\n // column summary row scope\n columnSummaryScopes: columnSummaryScopesInit,\n updateColumnSummaryScope,\n // column summary display format\n columnSummaryFormats: columnSummaryFormatsInit,\n updateColumnSummaryFormat,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","defaultColumnVisibility","allColumnsRef","React","resizingTimeoutRef","rowHeightTimeoutRef","columnOrderTimeoutRef","prevRowHeightRef","lockedAspectRatioRef","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","internalColumnOrder","setInternalColumnOrder","setAllColumns","allColumnIds","onChangeWithColumns","next","allKnownIds","specialIds","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","resolvedVisibility","id","checkColumnVisibility","resolvedOrder","columnsConfig","normalizeColumnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","columnSummariesInit","columnSummaryScopesInit","columnSummaryFormatsInit","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","filteredPinned","nameIndex","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumns","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","updateColumnVisibility","updateColumnOrder","filteredOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateColumnSummary","columnId","calc","updateColumnSummaryScope","scope","updateColumnSummaryFormat","format","updateGroupBy","updateGroupByConfig","updateRowHeight","newRowHeight","currentThumbnailWidth","currentRowHeight","newThumbnailWidth","updateRowHeightWithPersistence","columnVisibilityOnChange","updater","nextFull","sparseNext","key","defaultValue","isEqual","columnPinningOnChange","functionalUpdate","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnSettingsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\nimport { SummaryCalc, SummaryFormat, RowScope } from '../types/summaryTypes'\nimport { isEqual } from 'lodash'\nimport { checkColumnVisibility } from '../utils'\nimport { normalizeColumnsConfig } from '../utils/columnIds'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n defaultColumnVisibility?: VisibilityState\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n defaultColumnVisibility,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const columnOrderTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const prevRowHeightRef = React.useRef<number | undefined>(undefined)\n const lockedAspectRatioRef = React.useRef<number | null>(null)\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState | null>(null)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => {\n const allKnownIds = allColumnsRef.current\n // Expand sparse columnVisibility to explicit values for all known columns so that\n // \"undefined\" is never ambiguous when columns are saved and reloaded.\n // Special columns (drag-handle, row-selection) are always injected by the provider,\n // so they must never be persisted — strip them from visibility and order entirely.\n const specialIds = new Set([DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n if (allKnownIds.length > 0) {\n const resolvedVisibility = { ...next.columnVisibility }\n allKnownIds.forEach((id) => {\n if (!specialIds.has(id) && resolvedVisibility[id] === undefined) {\n resolvedVisibility[id] = checkColumnVisibility({}, id, defaultColumnVisibility)\n }\n })\n // Remove special columns from visibility and order before persisting\n specialIds.forEach((id) => delete resolvedVisibility[id])\n const resolvedOrder = (next.columnOrder ?? []).filter((id) => !specialIds.has(id))\n onChange(\n { ...next, columnVisibility: resolvedVisibility, columnOrder: resolvedOrder },\n allKnownIds,\n )\n } else {\n onChange(next, allKnownIds)\n }\n }\n const columnsConfig = normalizeColumnsConfig(config as ColumnsConfig | undefined)\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight = 34,\n columnSummaries: columnSummariesInit = {},\n columnSummaryScopes: columnSummaryScopesInit = {},\n columnSummaryFormats: columnSummaryFormatsInit = {},\n } = columnsConfig || {}\n\n // Clear internal row height when config changes (e.g., when switching views)\n // This happens during render, before the component uses the value\n if (prevRowHeightRef.current !== configRowHeight && prevRowHeightRef.current !== undefined) {\n // Config changed, clear internal state\n if (internalRowHeight !== null) {\n setInternalRowHeight(null)\n }\n // Clear any pending timeout\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n rowHeightTimeoutRef.current = null\n }\n }\n prevRowHeightRef.current = configRowHeight\n\n // Use internal row height during adjustments, otherwise use config value\n const rowHeight = internalRowHeight ?? configRowHeight\n\n const sorting = [...sortingInit]\n // Use internal column order for immediate UI updates, otherwise use config value\n const columnOrderBase = internalColumnOrder ?? [...columnOrderInit]\n const columnOrder = [...columnOrderBase]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode (except folder grouping), always pin the name column\n // and ensure it is first in column order\n if (groupBy && groupBy.id !== 'folder') {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n\n const newPinnedColumns = pinnedColumns.filter((col) =>\n checkColumnVisibility(visibility, col, defaultColumnVisibility),\n )\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n // Filter out special columns that are added dynamically\n const filteredOrder = order.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n\n const newPinning = updatePinningOrderOnOrderChange(filteredOrder)\n\n // Update UI immediately (optimistic)\n setInternalColumnOrder(filteredOrder)\n\n // Clear any existing timeout to debounce API calls\n if (columnOrderTimeoutRef.current) {\n clearTimeout(columnOrderTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n columnOrderTimeoutRef.current = setTimeout(() => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: filteredOrder,\n columnPinning: newPinning,\n })\n // Clear internal state after persistence\n setInternalColumnOrder(null)\n }, 300)\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateColumnSummary = (columnId: string, calc: SummaryCalc) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaries: { ...columnSummariesInit, [columnId]: calc },\n })\n }\n\n const updateColumnSummaryScope = (columnId: string, scope: RowScope) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryScopes: { ...columnSummaryScopesInit, [columnId]: scope },\n })\n }\n\n const updateColumnSummaryFormat = (columnId: string, format: SummaryFormat) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryFormats: { ...columnSummaryFormatsInit, [columnId]: format },\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeight = React.useCallback(\n (newRowHeight: number) => {\n // Lock the aspect ratio on first call if not already locked\n if (lockedAspectRatioRef.current === null) {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n lockedAspectRatioRef.current = currentThumbnailWidth / currentRowHeight\n }\n const newThumbnailWidth = lockedAspectRatioRef.current * newRowHeight\n\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n },\n [columnsSizingExternal, configRowHeight],\n )\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = React.useCallback(\n (newRowHeight: number) => {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n const currentRatio = currentThumbnailWidth / currentRowHeight\n\n const newThumbnailWidth = currentRatio * newRowHeight\n\n // Update UI immediately\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n columnSizing: {\n ...columnsSizingExternal,\n thumbnail: newThumbnailWidth,\n },\n })\n\n // Clean up internal state after API call completes\n setInternalRowHeight(null)\n setInternalColumnSizing(null)\n lockedAspectRatioRef.current = null\n }, 300)\n },\n [\n columnsConfig,\n onChangeWithColumns,\n columnsSizingExternal,\n configRowHeight,\n internalColumnSizing,\n ],\n )\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const nextFull = typeof updater === 'function' ? updater(columnVisibility) : updater\n\n // Calculate sparse version: only keys that are different from defaults\n const sparseNext: VisibilityState = {}\n Object.keys(nextFull).forEach((key) => {\n const defaultValue = checkColumnVisibility({}, key, defaultColumnVisibility)\n if (nextFull[key] !== defaultValue) {\n sparseNext[key] = nextFull[key]\n }\n })\n\n if (isEqual(sparseNext, columnVisibility)) return\n setColumnVisibility(sparseNext)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n if (isEqual(newPinning, columnPinning)) return\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n if (isEqual(newOrder, columnOrder)) return\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n if (isEqual(newSizing, columnSizing)) return\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n if (isEqual(newSorting, sorting)) return\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n defaultColumnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // column summary calc\n columnSummaries: columnSummariesInit,\n updateColumnSummary,\n // column summary row scope\n columnSummaryScopes: columnSummaryScopesInit,\n updateColumnSummaryScope,\n // column summary display format\n columnSummaryFormats: columnSummaryFormatsInit,\n updateColumnSummaryFormat,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","defaultColumnVisibility","allColumnsRef","React","resizingTimeoutRef","rowHeightTimeoutRef","columnOrderTimeoutRef","prevRowHeightRef","lockedAspectRatioRef","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","internalColumnOrder","setInternalColumnOrder","setAllColumns","allColumnIds","onChangeWithColumns","next","allKnownIds","specialIds","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","resolvedVisibility","id","checkColumnVisibility","resolvedOrder","columnsConfig","normalizeColumnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","columnSummariesInit","columnSummaryScopesInit","columnSummaryFormatsInit","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","filteredPinned","nameIndex","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumns","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","updateColumnVisibility","updateColumnOrder","filteredOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateColumnSummary","columnId","calc","updateColumnSummaryScope","scope","updateColumnSummaryFormat","format","updateGroupBy","updateGroupByConfig","updateRowHeight","newRowHeight","currentThumbnailWidth","currentRowHeight","newThumbnailWidth","updateRowHeightWithPersistence","columnVisibilityOnChange","updater","nextFull","sparseNext","key","defaultValue","isEqual","columnPinningOnChange","functionalUpdate","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}