@ynput/ayon-frontend-shared 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1190) 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 +252 -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/_virtual/index.cjs22.js +1 -1
  11. package/dist/_virtual/index.cjs23.js +1 -1
  12. package/dist/_virtual/index.cjs24.js +1 -1
  13. package/dist/_virtual/index.cjs4.js +1 -1
  14. package/dist/_virtual/index.cjs5.js +1 -1
  15. package/dist/_virtual/index.cjs6.js +1 -1
  16. package/dist/_virtual/index.cjs8.js +1 -1
  17. package/dist/_virtual/index.es22.js +3 -3
  18. package/dist/_virtual/index.es23.js +5 -5
  19. package/dist/_virtual/index.es24.js +5 -5
  20. package/dist/_virtual/index.es4.js +2 -5
  21. package/dist/_virtual/index.es4.js.map +1 -1
  22. package/dist/_virtual/index.es5.js +5 -2
  23. package/dist/_virtual/index.es5.js.map +1 -1
  24. package/dist/_virtual/index.es6.js +2 -2
  25. package/dist/_virtual/index.es8.js +2 -2
  26. package/dist/api.cjs.js +1 -1
  27. package/dist/api.es.js +446 -445
  28. package/dist/components.cjs.js +1 -1
  29. package/dist/components.es.js +83 -82
  30. package/dist/components.es.js.map +1 -1
  31. package/dist/index.cjs.js +1 -1
  32. package/dist/index.es.js +43 -130
  33. package/dist/index.es.js.map +1 -1
  34. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  35. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  36. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  37. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  38. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  39. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  40. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  41. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  42. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  43. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  44. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  45. package/dist/node_modules/remove-accents/index.es.js +1 -1
  46. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  47. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  48. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  49. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  50. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  51. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  52. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  53. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  54. package/dist/shared/src/api/generated/graphql.cjs.js +85 -27
  55. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  56. package/dist/shared/src/api/generated/graphql.es.js +126 -64
  57. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  58. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  59. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  60. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  61. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  62. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  63. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  64. package/dist/shared/src/api/queries/activities/getCategories.cjs.js.map +1 -1
  65. package/dist/shared/src/api/queries/activities/getCategories.es.js.map +1 -1
  66. package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js.map +1 -1
  67. package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  69. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  70. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  71. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  72. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +55 -151
  73. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  74. package/dist/shared/src/api/queries/addons/updateAddons.cjs.js.map +1 -1
  75. package/dist/shared/src/api/queries/addons/updateAddons.es.js.map +1 -1
  76. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  77. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  78. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
  80. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
  81. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  82. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +36 -36
  83. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  84. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  85. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  86. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  87. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  88. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +58 -113
  89. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  90. package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
  92. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  93. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  94. package/dist/shared/src/api/queries/entityLists/getLists.es.js +67 -118
  95. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  96. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  97. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  98. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +40 -95
  99. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  100. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  101. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  102. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.cjs.js.map +1 -1
  103. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.es.js.map +1 -1
  104. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  105. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  106. package/dist/shared/src/api/queries/folders/getFolders.es.js +68 -119
  107. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  109. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  110. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +73 -128
  111. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  112. package/dist/shared/src/api/queries/links/updateLinks.cjs.js.map +1 -1
  113. package/dist/shared/src/api/queries/links/updateLinks.es.js.map +1 -1
  114. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  115. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  116. package/dist/shared/src/api/queries/overview/getOverview.es.js +229 -282
  117. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  118. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  119. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  120. package/dist/shared/src/api/queries/products/getFolderProducts.cjs.js.map +1 -1
  121. package/dist/shared/src/api/queries/products/getFolderProducts.es.js.map +1 -1
  122. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
  123. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
  124. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +80 -134
  125. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
  126. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  127. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  128. package/dist/shared/src/api/queries/review/getReview.es.js +95 -152
  129. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  130. package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -1
  131. package/dist/shared/src/api/queries/share/share.es.js.map +1 -1
  132. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  133. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  134. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  135. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  136. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +88 -141
  137. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  138. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  139. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  140. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  141. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  142. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +30 -80
  143. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  144. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js.map +1 -1
  145. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js.map +1 -1
  146. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  147. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  148. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  149. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  150. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  151. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  152. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  153. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  154. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.cjs.js.map +1 -1
  155. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.es.js.map +1 -1
  156. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  157. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  158. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +28 -30
  159. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  160. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
  161. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
  162. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +29 -125
  163. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
  164. package/dist/shared/src/components/Chips/Chips.cjs.js +12 -6
  165. package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
  166. package/dist/shared/src/components/Chips/Chips.es.js +69 -62
  167. package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
  168. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +3 -3
  169. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  170. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +16 -310
  171. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  172. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js +5 -5
  173. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js.map +1 -1
  174. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js +49 -145
  175. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js.map +1 -1
  176. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +5 -5
  177. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  178. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +45 -141
  179. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  180. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  181. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  182. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +30 -166
  183. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  184. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  185. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  186. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +9 -195
  187. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  188. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +2 -2
  189. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  190. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +5 -200
  191. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  192. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +4 -4
  193. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
  194. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +18 -114
  195. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
  196. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +2 -2
  197. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
  198. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +13 -109
  199. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
  200. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  201. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  202. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +11 -316
  203. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  204. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
  205. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
  206. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +23 -119
  207. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
  208. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
  209. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
  210. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +0 -111
  211. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
  212. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js +1 -1
  213. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js.map +1 -1
  214. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js +1 -1
  215. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js.map +1 -1
  216. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  217. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  218. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +12 -314
  219. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  220. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  221. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  222. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +86 -273
  223. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  224. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  225. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  226. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +34 -335
  227. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  228. package/dist/shared/src/components/EntityPath/EntityPath.cjs.js.map +1 -1
  229. package/dist/shared/src/components/EntityPath/EntityPath.es.js.map +1 -1
  230. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  231. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  232. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +15 -310
  233. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  234. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js.map +1 -1
  235. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js.map +1 -1
  236. package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js.map +1 -1
  237. package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js.map +1 -1
  238. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  239. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  240. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +89 -293
  241. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  242. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js +2 -2
  243. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js.map +1 -1
  244. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js +10 -106
  245. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js.map +1 -1
  246. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js +1 -1
  247. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js.map +1 -1
  248. package/dist/shared/src/components/InfoMessage/InfoMessage.es.js +6 -5
  249. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  250. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  251. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  252. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  253. package/dist/shared/src/components/LinksManager/LinksManager.es.js +51 -346
  254. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  255. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  256. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  257. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +7 -212
  258. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  259. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  260. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  261. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +2 -205
  262. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  263. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  264. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  265. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +4 -185
  266. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  267. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  268. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  269. package/dist/shared/src/components/Menu/Menu.es.js +48 -343
  270. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  271. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  272. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  273. package/dist/shared/src/components/Menu/MenuItem.es.js +20 -316
  274. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  275. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  276. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  277. package/dist/shared/src/components/Menu/MenuList.es.js +74 -373
  278. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  279. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +2 -2
  280. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  281. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +16 -315
  282. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  283. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  284. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  285. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +48 -346
  286. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  287. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
  288. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  289. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +134 -304
  290. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  291. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  292. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  293. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +78 -371
  294. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  295. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  296. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  297. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -299
  298. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  299. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  300. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  301. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +34 -334
  302. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  303. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  304. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  305. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +30 -331
  306. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  307. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +5 -5
  308. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  309. package/dist/shared/src/components/RenameForm/RenameForm.es.js +77 -372
  310. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  311. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  312. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  313. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +114 -309
  314. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  315. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  316. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  317. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +66 -365
  318. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  319. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  320. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  321. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +14 -316
  322. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  323. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  324. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  325. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +70 -72
  326. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  327. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  328. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  329. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +24 -326
  330. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  331. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js.map +1 -1
  332. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js.map +1 -1
  333. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  334. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  335. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +335 -534
  336. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  337. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +7 -7
  338. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  339. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +29 -329
  340. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  341. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +4 -4
  342. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  343. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +53 -355
  344. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  345. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  346. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  347. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +95 -394
  348. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  349. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  350. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  351. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +39 -8
  352. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  353. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js +2 -2
  354. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js.map +1 -1
  355. package/dist/shared/src/components/SyncButton/SyncButton.es.js +52 -165
  356. package/dist/shared/src/components/SyncButton/SyncButton.es.js.map +1 -1
  357. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +3 -3
  358. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  359. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +35 -334
  360. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  361. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  362. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  363. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +26 -122
  364. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  365. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
  366. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  367. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +22 -118
  368. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  369. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +13 -13
  370. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  371. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +99 -300
  372. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  373. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  374. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  375. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +61 -262
  376. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  377. package/dist/shared/src/config/plannerFeatures.cjs.js.map +1 -1
  378. package/dist/shared/src/config/plannerFeatures.es.js.map +1 -1
  379. package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -1
  380. package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -1
  381. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  382. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -210
  384. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  385. package/dist/shared/src/containers/Actions/ActionIcon.cjs.js.map +1 -1
  386. package/dist/shared/src/containers/Actions/ActionIcon.es.js.map +1 -1
  387. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  388. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  389. package/dist/shared/src/containers/Actions/Actions.es.js +51 -250
  390. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  391. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  392. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  393. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  394. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  395. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +20 -323
  396. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  397. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
  399. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js.map +1 -1
  400. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js.map +1 -1
  401. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  402. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  403. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +151 -334
  404. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  405. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +3 -3
  406. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  407. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +27 -329
  408. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  409. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  410. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  411. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +39 -236
  412. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  413. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  414. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  415. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +65 -255
  416. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  417. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  418. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  419. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +16 -317
  420. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  421. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  422. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  423. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +61 -354
  424. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  425. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +5 -5
  426. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
  427. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +20 -116
  428. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
  429. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  430. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +2 -306
  432. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  433. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js +1 -1
  434. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js +51 -147
  436. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js.map +1 -1
  437. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  438. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -202
  440. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  441. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js.map +1 -1
  442. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js.map +1 -1
  443. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -1
  444. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -1
  445. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js.map +1 -1
  446. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.es.js.map +1 -1
  447. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +9 -9
  448. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  449. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -320
  450. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  451. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  452. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  453. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +13 -217
  454. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  455. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  456. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  457. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +22 -323
  458. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  459. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  460. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  461. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +27 -307
  462. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  463. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.cjs.js.map +1 -1
  464. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.es.js.map +1 -1
  465. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js.map +1 -1
  466. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js.map +1 -1
  467. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.cjs.js.map +1 -1
  468. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.es.js.map +1 -1
  469. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js.map +1 -1
  470. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js.map +1 -1
  471. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  472. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  473. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +10 -106
  474. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  475. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
  476. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
  477. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  478. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  479. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -209
  480. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  481. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  482. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  483. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +74 -373
  484. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  485. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  486. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  487. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +20 -324
  488. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  489. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +6 -6
  490. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  491. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +32 -338
  492. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  493. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +3 -3
  494. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  495. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +12 -318
  496. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  497. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
  498. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
  499. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +11 -107
  500. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
  501. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  502. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  503. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +23 -228
  504. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  505. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  506. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  507. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +27 -123
  508. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  509. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.cjs.js.map +1 -1
  510. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.es.js.map +1 -1
  511. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  512. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  513. package/dist/shared/src/containers/Feed/Feed.es.js +65 -245
  514. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  515. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js.map +1 -1
  516. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.es.js.map +1 -1
  517. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  518. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  519. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -309
  520. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  521. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  522. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  523. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +145 -421
  524. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  525. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  526. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  527. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +18 -317
  528. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  529. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  530. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  531. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +24 -120
  532. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  533. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  534. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  535. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +42 -331
  536. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  537. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js.map +1 -1
  538. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.es.js.map +1 -1
  539. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  540. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  541. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +227 -372
  542. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  543. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
  544. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
  545. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  546. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  547. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +38 -341
  548. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  549. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  550. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  551. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +22 -324
  552. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  553. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
  554. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
  555. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +9 -105
  556. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
  557. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  558. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  559. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +21 -324
  560. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  561. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js +1 -1
  562. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js.map +1 -1
  563. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js +16 -26
  564. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js.map +1 -1
  565. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js +2 -0
  566. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js.map +1 -0
  567. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js +14 -0
  568. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js.map +1 -0
  569. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +1 -1
  570. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -1
  571. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +2 -15
  572. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -1
  573. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
  574. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  575. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +62 -361
  576. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  577. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  578. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  579. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +57 -356
  580. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  581. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  582. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  583. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +14 -310
  584. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  585. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  586. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  587. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +34 -238
  588. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  589. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
  590. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
  591. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +24 -18
  592. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
  593. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +1 -1
  594. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -1
  595. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +26 -25
  596. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -1
  597. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  598. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  599. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +67 -163
  600. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  601. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  602. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +18 -8
  603. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  604. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  605. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +10 -106
  607. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  608. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.cjs.js.map +1 -1
  609. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.es.js.map +1 -1
  610. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  611. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  612. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +13 -109
  613. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  614. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  615. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  616. package/dist/shared/src/containers/ListTable/ListTable.es.js +115 -284
  617. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  618. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  619. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  620. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +56 -177
  621. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  622. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  623. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  624. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +46 -343
  625. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  626. package/dist/shared/src/containers/ListTable/ListTableWidgets.cjs.js.map +1 -1
  627. package/dist/shared/src/containers/ListTable/ListTableWidgets.es.js.map +1 -1
  628. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.cjs.js.map +1 -1
  629. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.es.js.map +1 -1
  630. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js +3 -3
  631. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js.map +1 -1
  632. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js +170 -459
  633. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js.map +1 -1
  634. package/dist/shared/src/containers/NewEntity/components/TypeEditor.cjs.js.map +1 -1
  635. package/dist/shared/src/containers/NewEntity/components/TypeEditor.es.js.map +1 -1
  636. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js +1 -1
  637. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js +117 -314
  639. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js.map +1 -1
  640. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  642. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +613 -883
  643. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  644. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +6 -0
  645. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  646. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +14 -8
  647. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  648. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  649. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  650. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +289 -413
  651. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  652. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  653. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  654. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +75 -375
  655. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  656. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  657. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  658. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +32 -204
  659. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  660. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  661. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  662. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +38 -124
  663. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  664. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +7 -7
  665. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -1
  666. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +35 -131
  667. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -1
  668. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +1 -1
  669. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -1
  670. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -3
  671. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -1
  672. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  673. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  674. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +97 -292
  675. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  676. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
  677. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  678. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +243 -441
  679. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  680. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  681. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  682. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +156 -330
  683. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  684. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  685. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  686. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -208
  687. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  688. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  689. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  690. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +120 -420
  691. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  692. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  693. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  694. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +71 -245
  695. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  696. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js.map +1 -1
  697. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js +3 -3
  698. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js.map +1 -1
  699. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.cjs.js.map +1 -1
  700. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.es.js.map +1 -1
  701. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
  702. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
  703. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  704. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  705. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +83 -179
  706. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  707. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  708. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  709. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +13 -317
  710. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  711. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  712. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  713. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +59 -233
  714. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  715. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  716. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  717. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +74 -248
  718. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  719. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  720. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  721. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +147 -439
  722. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  723. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  724. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  725. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +23 -197
  726. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  727. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  728. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  729. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +32 -206
  730. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  731. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  732. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  733. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +32 -332
  734. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  735. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  736. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  737. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +135 -335
  738. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  739. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
  740. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
  741. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  742. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  743. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +29 -203
  744. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  745. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  746. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  747. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +36 -204
  748. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  749. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  750. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  751. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +78 -282
  752. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  753. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  754. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  755. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +31 -232
  756. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  757. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  758. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  759. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +24 -198
  760. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  761. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  762. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  763. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +43 -217
  764. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  765. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  766. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  767. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +167 -467
  768. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  769. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  770. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  771. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +41 -215
  772. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  773. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
  774. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
  775. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js.map +1 -1
  776. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js.map +1 -1
  777. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js.map +1 -1
  778. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js.map +1 -1
  779. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  780. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  781. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js.map +1 -1
  782. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js.map +1 -1
  783. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
  784. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -1
  785. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js.map +1 -1
  786. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js.map +1 -1
  787. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
  788. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
  789. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.cjs.js.map +1 -1
  790. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.es.js.map +1 -1
  791. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -1
  792. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -1
  793. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +2 -2
  794. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  795. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +14 -315
  796. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  797. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +5 -3
  798. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  799. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +159 -441
  800. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  801. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +5 -5
  802. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  803. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +40 -332
  804. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  805. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +9 -1
  806. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
  807. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +47 -31
  808. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
  809. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +28 -9
  810. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  811. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +58 -39
  812. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  813. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js +1 -1
  814. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js.map +1 -1
  815. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js +22 -194
  816. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js.map +1 -1
  817. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +53 -25
  818. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  819. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +150 -103
  820. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  821. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +9 -2
  822. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  823. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +66 -57
  824. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  825. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +3 -3
  826. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  827. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +52 -348
  828. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  829. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +5 -5
  830. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  831. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +77 -364
  832. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  833. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  834. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  835. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +28 -202
  836. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  837. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  838. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  839. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +37 -333
  840. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  841. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +5 -5
  842. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  843. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +130 -424
  844. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  845. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +19 -3
  846. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  847. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +119 -196
  848. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  849. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +5 -5
  850. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  851. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -108
  852. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  853. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js +6 -0
  854. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js.map +1 -0
  855. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js +11 -0
  856. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js.map +1 -0
  857. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  858. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  859. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +20 -217
  860. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  861. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  862. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  863. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +231 -527
  864. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  865. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  866. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  867. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +69 -367
  868. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  869. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +2 -2
  870. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  871. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +18 -318
  872. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  873. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +2 -2
  874. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  875. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +24 -328
  876. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  877. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  878. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  879. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +69 -370
  880. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  881. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  882. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  883. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +27 -228
  884. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  885. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js +1 -1
  886. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js.map +1 -1
  887. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js +34 -236
  888. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js.map +1 -1
  889. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  890. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  891. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +5 -309
  892. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  893. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  894. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  895. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +7 -311
  896. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  897. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +1 -1
  898. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -1
  899. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +11 -314
  900. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -1
  901. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  902. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  903. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +13 -316
  904. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  905. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  906. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  907. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +34 -338
  908. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  909. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  910. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  911. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +11 -316
  912. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  913. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  914. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  915. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +72 -368
  916. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  917. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  918. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  919. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -1
  920. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -1
  921. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
  922. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  923. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +24 -120
  924. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  925. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  926. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  927. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  928. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  929. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +35 -336
  930. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  931. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  932. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  933. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +55 -354
  934. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  935. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  936. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  937. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +40 -335
  938. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  939. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  940. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  941. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +89 -287
  942. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  943. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  944. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  945. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +17 -113
  946. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  947. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  948. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  949. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +45 -141
  950. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  951. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -1
  952. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -1
  953. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  954. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  955. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +22 -216
  956. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  957. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  958. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  959. package/dist/shared/src/containers/Views/types.cjs.js.map +1 -1
  960. package/dist/shared/src/containers/Views/types.es.js.map +1 -1
  961. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js.map +1 -1
  962. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js.map +1 -1
  963. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  964. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  965. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +47 -46
  966. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  967. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
  968. package/dist/shared/src/context/AddonContext.es.js.map +1 -1
  969. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  970. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  971. package/dist/shared/src/context/AddonProjectContext.es.js +19 -115
  972. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  973. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js +1 -1
  974. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js.map +1 -1
  975. package/dist/shared/src/context/DeleteEntitiesContext.es.js +1 -1
  976. package/dist/shared/src/context/DeleteEntitiesContext.es.js.map +1 -1
  977. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  978. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  979. package/dist/shared/src/context/DetailsPanelContext.es.js +66 -362
  980. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  981. package/dist/shared/src/context/EntityUpdatesContext.cjs.js +1 -1
  982. package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -1
  983. package/dist/shared/src/context/EntityUpdatesContext.es.js +61 -358
  984. package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -1
  985. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  986. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  987. package/dist/shared/src/context/PowerpackContext.es.js +42 -344
  988. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  989. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  990. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  991. package/dist/shared/src/context/ProjectContext.es.js +1 -1
  992. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  993. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  994. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  995. package/dist/shared/src/context/ProjectFoldersContext.es.js +26 -231
  996. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  997. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  998. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  999. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  1000. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  1001. package/dist/shared/src/context/SubtasksModulesContext.es.js +23 -324
  1002. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  1003. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +1 -1
  1004. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
  1005. package/dist/shared/src/context/ThumbnailUploaderContext.es.js +17 -21
  1006. package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
  1007. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  1008. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  1009. package/dist/shared/src/context/UriContext.es.js +2 -2
  1010. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  1011. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  1012. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  1013. package/dist/shared/src/context/WebsocketContext.es.js +28 -229
  1014. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  1015. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  1016. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  1017. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -208
  1018. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  1019. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  1020. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  1021. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +11 -314
  1022. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  1023. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  1024. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  1025. package/dist/shared/src/hooks/useHierarchyTable.es.js +30 -333
  1026. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  1027. package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
  1028. package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
  1029. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
  1030. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
  1031. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +19 -115
  1032. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
  1033. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  1034. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  1035. package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -212
  1036. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  1037. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js +1 -1
  1038. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  1039. package/dist/shared/src/util/buildHierarchicalTableRows.es.js +36 -33
  1040. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  1041. package/dist/shared/src/util/checkName.cjs.js.map +1 -1
  1042. package/dist/shared/src/util/checkName.es.js.map +1 -1
  1043. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  1044. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  1045. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  1046. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  1047. package/dist/shared/src/util/getBundleMode.cjs.js +1 -1
  1048. package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -1
  1049. package/dist/shared/src/util/getBundleMode.es.js +16 -112
  1050. package/dist/shared/src/util/getBundleMode.es.js.map +1 -1
  1051. package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
  1052. package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
  1053. package/dist/shared/src/util/getPriorityOptions.cjs.js.map +1 -1
  1054. package/dist/shared/src/util/getPriorityOptions.es.js.map +1 -1
  1055. package/dist/shared/src/util/iconUtils.cjs.js.map +1 -1
  1056. package/dist/shared/src/util/iconUtils.es.js.map +1 -1
  1057. package/dist/shared/src/util/mentionTypeOptions.cjs.js +2 -0
  1058. package/dist/shared/src/util/mentionTypeOptions.cjs.js.map +1 -0
  1059. package/dist/shared/src/util/mentionTypeOptions.es.js +16 -0
  1060. package/dist/shared/src/util/mentionTypeOptions.es.js.map +1 -0
  1061. package/dist/shared/src/util/parseFilename.cjs.js +2 -0
  1062. package/dist/shared/src/util/parseFilename.cjs.js.map +1 -0
  1063. package/dist/shared/src/util/parseFilename.es.js +8 -0
  1064. package/dist/shared/src/util/parseFilename.es.js.map +1 -0
  1065. package/dist/shared/src/util/uriUtils.cjs.js.map +1 -1
  1066. package/dist/shared/src/util/uriUtils.es.js.map +1 -1
  1067. package/dist/types/api/base/index.d.ts +1 -1
  1068. package/dist/types/api/generated/graphql.d.ts +76 -2
  1069. package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
  1070. package/dist/types/api/queries/activities/getActivities.d.ts +32 -2
  1071. package/dist/types/api/queries/activities/getCategories.d.ts +1 -1
  1072. package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +1 -1
  1073. package/dist/types/api/queries/entities/getEntity.d.ts +16 -1
  1074. package/dist/types/api/queries/entities/getEntityPanel.d.ts +16 -1
  1075. package/dist/types/api/queries/entities/updateEntity.d.ts +16 -1
  1076. package/dist/types/api/queries/entityLists/getLists.d.ts +319 -305
  1077. package/dist/types/api/queries/overview/getOverview.d.ts +49 -18
  1078. package/dist/types/api/queries/project/getProject.d.ts +76 -61
  1079. package/dist/types/api/queries/system/getSystem.d.ts +1 -1
  1080. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +16 -1
  1081. package/dist/types/api/queries/users/getUsers.d.ts +16 -1
  1082. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +32 -2
  1083. package/dist/types/api/queries/views/getViews.d.ts +1 -1
  1084. package/dist/types/components/DetailsPanelDetails/DetailsSection.d.ts +1 -1
  1085. package/dist/types/components/Menu/Menu.d.ts +1 -1
  1086. package/dist/types/components/Menu/MenuList.d.ts +1 -1
  1087. package/dist/types/components/Powerpack/PowerpackButton.d.ts +1 -1
  1088. package/dist/types/components/ProjectTableSettings/ColumnsSettings.d.ts +1 -1
  1089. package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +2 -2
  1090. package/dist/types/components/ProjectTableSettings/TableSettingsFallback.d.ts +1 -1
  1091. package/dist/types/components/RemotePage/ProjectPageRemote.d.ts +1 -1
  1092. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +4 -2
  1093. package/dist/types/components/RenameForm/RenameForm.d.ts +1 -1
  1094. package/dist/types/components/ReviewablesList/SortableReviewableCard.d.ts +1 -1
  1095. package/dist/types/components/ReviewablesList/useReviewablesUpload.d.ts +2 -2
  1096. package/dist/types/components/ReviewablesSelector/Card.d.ts +1 -1
  1097. package/dist/types/components/SearchFilter/filterScopeRegistry.d.ts +1 -1
  1098. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
  1099. package/dist/types/components/SettingsPanel/SettingsPanel.d.ts +1 -1
  1100. package/dist/types/components/SubtasksManager/SubtasksManagerWrapper.d.ts +4 -1
  1101. package/dist/types/components/SyncButton/SyncButton.d.ts +1 -1
  1102. package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +1 -2
  1103. package/dist/types/config/plannerFeatures.d.ts +1 -1
  1104. package/dist/types/config/powerpackFeatures.d.ts +1 -1
  1105. package/dist/types/containers/Actions/Actions.d.ts +2 -2
  1106. package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +1 -1
  1107. package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +1 -1
  1108. package/dist/types/containers/DetailsPanel/DetailsPanel.d.ts +1 -1
  1109. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.d.ts +2 -2
  1110. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.d.ts +1 -1
  1111. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.d.ts +2 -2
  1112. package/dist/types/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.d.ts +1 -1
  1113. package/dist/types/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.d.ts +3 -3
  1114. package/dist/types/containers/DetailsPanel/containers/DetailsPanelSubtasks.d.ts +1 -1
  1115. package/dist/types/containers/DetailsPanel/helpers/buildEntityTypeIcons.d.ts +1 -1
  1116. package/dist/types/containers/DetailsPanel/helpers/getEntityPathData.d.ts +1 -1
  1117. package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +1 -1
  1118. package/dist/types/containers/DetailsPanel/hooks/useGetEntityPath.d.ts +1 -1
  1119. package/dist/types/containers/EntityPickerDialog/components/EntityTypeTable.d.ts +1 -1
  1120. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
  1121. package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +1 -1
  1122. package/dist/types/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.d.ts +1 -1
  1123. package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.styled.d.ts +2 -2
  1124. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +1 -1
  1125. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.styled.d.ts +1 -1
  1126. package/dist/types/containers/Feed/components/CommentInput/modules/index.d.ts +1 -1
  1127. package/dist/types/containers/Feed/components/CommentInput/quillFormats.d.ts +1 -0
  1128. package/dist/types/containers/Feed/components/CommentInput/types.d.ts +1 -12
  1129. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +1 -1
  1130. package/dist/types/containers/Feed/context/FeedContext.d.ts +1 -1
  1131. package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +1 -0
  1132. package/dist/types/containers/Feed/hooks/useLastVersionReview.d.ts +1 -1
  1133. package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +1 -1
  1134. package/dist/types/containers/Feed/mentionHelpers/getMentionUsers.d.ts +1 -1
  1135. package/dist/types/containers/Feed/mentionHelpers/getMentionVersions.d.ts +2 -2
  1136. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -1
  1137. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +2 -1
  1138. package/dist/types/containers/ProjectTreeTable/constants.d.ts +3 -0
  1139. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -3
  1140. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +1 -1
  1141. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +4 -5
  1142. package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +1 -1
  1143. package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +2 -2
  1144. package/dist/types/containers/ProjectTreeTable/hooks/useMoveEntities.d.ts +1 -1
  1145. package/dist/types/containers/ProjectTreeTable/hooks/usePasteLinks.d.ts +1 -1
  1146. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +1 -1
  1147. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +6 -5
  1148. package/dist/types/containers/ProjectTreeTable/utils/getEntityViewerIds.d.ts +1 -1
  1149. package/dist/types/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.d.ts +1 -1
  1150. package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +1 -1
  1151. package/dist/types/containers/ProjectTreeTable/utils/sanitizeQueryFilter.d.ts +1 -1
  1152. package/dist/types/containers/ProjectTreeTable/widgets/LinksWidget.d.ts +1 -1
  1153. package/dist/types/containers/ProjectTreeTable/widgets/NameWidget.d.ts +1 -1
  1154. package/dist/types/containers/ProjectTreeTable/widgets/SubtasksWidget.d.ts +1 -0
  1155. package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +2 -1
  1156. package/dist/types/containers/ProjectTreeTable/widgets/wrapMode.d.ts +2 -0
  1157. package/dist/types/containers/Slicer/components/Slicer.d.ts +2 -2
  1158. package/dist/types/containers/Slicer/components/SlicerDropdownFallback.d.ts +1 -1
  1159. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +3 -4
  1160. package/dist/types/containers/Slicer/hooks/useEntityListsSlice.d.ts +1 -1
  1161. package/dist/types/containers/Slicer/hooks/useHierarchyContextMenuItems.d.ts +3 -3
  1162. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +1 -1
  1163. package/dist/types/containers/Slicer/hooks/useSlicerCounts.d.ts +1 -1
  1164. package/dist/types/containers/Slicer/hooks/useUsersTable.d.ts +1 -1
  1165. package/dist/types/containers/Slicer/types.d.ts +1 -1
  1166. package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
  1167. package/dist/types/containers/Views/hooks/pages/useListsViewSettings.d.ts +1 -1
  1168. package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +1 -1
  1169. package/dist/types/containers/Views/types.d.ts +1 -1
  1170. package/dist/types/context/AddonContext.d.ts +1 -1
  1171. package/dist/types/context/AddonProjectContext.d.ts +2 -2
  1172. package/dist/types/context/DetailsPanelContext.d.ts +2 -2
  1173. package/dist/types/context/SubtasksModulesContext.d.ts +1 -1
  1174. package/dist/types/hooks/useHierarchyTable.d.ts +1 -1
  1175. package/dist/types/util/buildHierarchicalTableRows.d.ts +3 -1
  1176. package/dist/types/util/columnConfigConverter.d.ts +1 -1
  1177. package/dist/types/util/getBundleMode.d.ts +1 -1
  1178. package/dist/types/util/getGroupByDataType.d.ts +1 -1
  1179. package/dist/types/util/index.d.ts +2 -0
  1180. package/dist/types/util/mentionTypeOptions.d.ts +12 -0
  1181. package/dist/types/util/parseFilename.d.ts +1 -0
  1182. package/dist/types/util/uriUtils.d.ts +1 -1
  1183. package/dist/util.cjs.js +1 -1
  1184. package/dist/util.es.js +24 -20
  1185. package/dist/util.es.js.map +1 -1
  1186. package/package.json +1 -1
  1187. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js +0 -2
  1188. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js.map +0 -1
  1189. package/dist/shared/src/components/ThumbnailSimple/index.es.js +0 -6
  1190. package/dist/shared/src/components/ThumbnailSimple/index.es.js.map +0 -1
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const xe=require("../../../../../_virtual/jsx-runtime.cjs.js"),j=require("react"),H=require("../constants.cjs.js"),Ee=require("./SelectionCellsContext.cjs.js"),ve=require("./CellEditingContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");const Se=require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("lodash");require("react-toastify");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");const be=require("../../../util/getEntityId.cjs.js");require("../../../util/pubsub.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");const _e=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContextInstance.cjs.js");require("../../../context/EntityUpdatesContextInstance.cjs.js");require("../../ContextMenu/ContextMenuContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("clsx");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/AttributeEditor/AttributeEditor.cjs.js");require("../../../components/AttributeEditor/attributeTypeMap.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("date-fns");require("../../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../../../components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js");require("../../../components/DeleteEntitiesConfirm/DeleteEntitiesConfirmDialog.styled.cjs.js");require("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../../components/DetailsPanelDetails/BorderedSection.cjs.js");require("../../../components/QuillListStyles/QuillListStyles.cjs.js");require("../../../components/DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("rehype-raw");require("../../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../../Feed/components/CommentInput/modules/index.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../../components/InfoMessage/InfoMessage.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../components/Feedback/FeedbackContextInstance.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/FreeTrialLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/ProjectTableSettings/ColumnsSettings.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("react-router-dom");require("../../Slicer/components/Slicer.cjs.js");require("../../Slicer/context/SlicerContextInstance.cjs.js");require("../../Slicer/components/SlicerDropdownFallback.cjs.js");require("../../NewEntity/components/NewEntity.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../buildTreeTableColumns.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");const $=require("./clipboard/clipboardUtils.cjs.js"),Le=require("./clipboard/clipboardValidation.cjs.js"),z=require("./clipboard/clipboardSubtasks.cjs.js"),Re=require("./clipboard/clipboardComments.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("short-uuid");require("../utils/columnIds.cjs.js");const _=require("../utils/cellUtils.cjs.js");require("./ProjectTableQueriesContext.cjs.js");const Oe=require("./ProjectTableContext.cjs.js");require("./ColumnSettingsContext.cjs.js");require("./SelectedRowsContext.cjs.js");require("./DetailsPanelEntityContext.cjs.js");require("./ProjectDataContextInstance.cjs.js");require("../components/TableFooterRow.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/EnumCellValue.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/MarkdownWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/EntityWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../widgets/LinksWidget.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../../NewEntity/context/NewEntityContextInstance.cjs.js");require("../../NewEntity/components/NewEntityForm.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/SearchFilter/CustomDateRangeDialog.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/SyncButton/SyncButton.cjs.js");require("../../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContextInstance.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../../components/ColumnHeaderMenuUI.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../Feed/components/ActivityFieldChange/ActivityFieldChange.styled.cjs.js");require("../../Feed/components/ActivityFieldChange/FieldValue.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("../../Feed/components/FeedSearchFilter.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js");require("../../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../../DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js");require("../../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("uuid");require("../../Views/context/ViewsContextInstance.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../ListTable/ListTableRow.cjs.js");require("../../ListTable/ListTable.styled.cjs.js");require("../../../context/DeleteEntitiesContext.cjs.js");const De=require("../hooks/usePasteLinks.cjs.js"),ye=j.createContext(void 0),Ne=new Set(["version","version_entity","product","productBaseType","task_entity"]),$e={folder_entity:"folder",task_entity:"taskLabel",version_entity:"versionName"},Ae=({children:Y,entitiesMap:B,columnEnums:le,columnReadOnly:Ie,visibleColumns:Q})=>{const{selectedCells:M,gridMap:I,focusedCellId:ge}=Ee.useSelectionCellsContext(),{updateEntities:ce,history:ue}=ve.useCellEditing(),{pasteTableLinks:de}=De(),{getEntityById:G,attribFields:J,tableData:qe}=Oe.useProjectTableContext(),pe=j.useMemo(()=>{const n=new Map,c=a=>{for(const d of a)n.set(d.id,d),d.subRows?.length&&c(d.subRows)};return c(qe||[]),n},[qe]),{projectName:Z}=_e.useProjectContext(),[ee]=Se.useUpdateSubtasksMutation(),ae=j.useCallback(async(n,c)=>{const{headers:a,fullRow:d}=c||{};try{const E=Q.map(g=>g.id).filter(g=>g!==H.ROW_SELECTION_COLUMN_ID),k=new Map;n.forEach(g=>{const t=_.parseCellId(g);if(!t)return;const{rowId:l,colId:L}=t;L===H.ROW_SELECTION_COLUMN_ID||!E.includes(L)||(k.has(l)||k.set(l,new Set),k.get(l)?.add(L))}),d&&n.filter(t=>_.parseCellId(t)?.rowId&&_.parseCellId(t)?.colId===H.ROW_SELECTION_COLUMN_ID).map(t=>_.parseCellId(t)?.rowId).forEach(t=>{k.has(t)||k.set(t,new Set),Array.from(I.colIdToIndex.keys()).forEach(L=>{k.get(t)?.add(L)})});const f=Array.from(k.keys()).sort((g,t)=>{const l=I.rowIdToIndex.get(g)??1/0,L=I.rowIdToIndex.get(t)??1/0;return l-L});let A="";const ie=f[0];if(!ie)return"";const se=Array.from(k.get(ie)||[]).sort((g,t)=>{const l=I.colIdToIndex.get(g)??1/0,L=I.colIdToIndex.get(t)??1/0;return l-L});if(a&&se.length>0){const g=[];for(const t of se){const l=t;g.push(`${l.replace(/"/g,'""')}`)}A+=g.join(" ")+`
2
- `}for(const g of f){const t=G(g);if(!t){console.warn(`Entity not found for rowId: ${g}`);continue}const l=pe.get(g),P=Array.from(k.get(g)||[]).sort((p,m)=>{const W=I.colIdToIndex.get(p)??1/0,F=I.colIdToIndex.get(m)??1/0;return W-F}).filter(p=>p!==H.ROW_SELECTION_COLUMN_ID),N=[];for(const p of P){let m="";if(p.startsWith("link_"))m=_.getLinkEntityIdsByColumnId(t.links,p);else if(p==="subtasks"){const R=_.getCellValue(t,p)||[];m=z.subtasksToTSV(R,t.id,t.name)}else if(p==="comments"){const R=_.getCellValue(t,"latestComments")||[];m=Re.commentsToText(R)}else{const R=$e[p]||p;let e=_.getCellValue(t,R);if(p==="folder_entity"&&typeof e!="string"){const r=e||t.product?.folder,i="parents"in t?t.parents:void 0;e=r?.label||r?.name||i?.[i.length-1]||""}if(l&&(Ne.has(p)||e===void 0||e===null||e===""||typeof e=="object")){const r=_.getCellValue(l,R);r!=null&&r!==""&&(e=r)}if(!e){const r=J.find(i=>i.name===p.replace("attrib_",""));r&&r.data.type==="boolean"?e=!1:r&&r.data.type.includes("list_of")&&(e=[])}if(m=e!=null?String(e):"",p==="name"&&(m=$.getEntityPath(t.entityId||t.id,B)||l?.label||l?.name||t.label||t.name||""),p==="subType"){const r=l?.subType??t.subType;typeof r=="string"&&r?m=r:("folderType"in t&&(m=t.folderType||""),"taskType"in t&&(m=t.taskType||""))}}const W=m.replace(/"/g,'""'),F=p!=="subtasks"&&(m.includes(`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const xe=require("../../../../../_virtual/jsx-runtime.cjs.js"),j=require("react"),H=require("../constants.cjs.js"),Ee=require("./SelectionCellsContext.cjs.js"),ve=require("./CellEditingContext.cjs.js"),Se=require("../../../context/ProjectContext.cjs.js"),_=require("../utils/cellUtils.cjs.js"),_e=require("../hooks/usePasteLinks.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/bundles/getBundles.cjs.js");require("../../../api/queries/bundles/updateBundles.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/columnStats/groupCounts.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");const Le=require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const $=require("./clipboard/clipboardUtils.cjs.js"),Re=require("./clipboard/clipboardValidation.cjs.js"),z=require("./clipboard/clipboardSubtasks.cjs.js"),Oe=require("./clipboard/clipboardComments.cjs.js"),De=require("./ProjectTableContext.cjs.js");require("lodash");require("react-toastify");const ye=require("../../../util/getEntityId.cjs.js");require("../../../util/pubsub.cjs.js");const Ie=j.createContext(void 0),Ne=new Set(["version","version_entity","product","productBaseType","task_entity"]),$e={folder_entity:"folder",task_entity:"taskLabel",version_entity:"versionName"},Ae=({children:Y,entitiesMap:B,columnEnums:ce,columnReadOnly:ge,visibleColumns:Q})=>{const{selectedCells:M,gridMap:g,focusedCellId:qe}=Ee.useSelectionCellsContext(),{updateEntities:ue,history:ae}=ve.useCellEditing(),{pasteTableLinks:de}=_e(),{getEntityById:G,attribFields:J,tableData:pe}=De.useProjectTableContext(),fe=j.useMemo(()=>{const i=new Map,u=l=>{for(const d of l)i.set(d.id,d),d.subRows?.length&&u(d.subRows)};return u(pe||[]),i},[pe]),{projectName:Z}=Se.useProjectContext(),[ee]=Le.useUpdateSubtasksMutation(),le=j.useCallback(async(i,u)=>{const{headers:l,fullRow:d}=u||{};try{const E=Q.map(q=>q.id).filter(q=>q!==H.ROW_SELECTION_COLUMN_ID),k=new Map;i.forEach(q=>{const r=_.parseCellId(q);if(!r)return;const{rowId:c,colId:L}=r;L===H.ROW_SELECTION_COLUMN_ID||!E.includes(L)||(k.has(c)||k.set(c,new Set),k.get(c)?.add(L))}),d&&i.filter(r=>_.parseCellId(r)?.rowId&&_.parseCellId(r)?.colId===H.ROW_SELECTION_COLUMN_ID).map(r=>_.parseCellId(r)?.rowId).forEach(r=>{k.has(r)||k.set(r,new Set),Array.from(g.colIdToIndex.keys()).forEach(L=>{k.get(r)?.add(L)})});const b=Array.from(k.keys()).sort((q,r)=>{const c=g.rowIdToIndex.get(q)??1/0,L=g.rowIdToIndex.get(r)??1/0;return c-L});let A="";const se=b[0];if(!se)return"";const oe=Array.from(k.get(se)||[]).sort((q,r)=>{const c=g.colIdToIndex.get(q)??1/0,L=g.colIdToIndex.get(r)??1/0;return c-L});if(l&&oe.length>0){const q=[];for(const r of oe){const c=r;q.push(`${c.replace(/"/g,'""')}`)}A+=q.join(" ")+`
2
+ `}for(const q of b){const r=G(q);if(!r){console.warn(`Entity not found for rowId: ${q}`);continue}const c=fe.get(q),P=Array.from(k.get(q)||[]).sort((f,m)=>{const W=g.colIdToIndex.get(f)??1/0,F=g.colIdToIndex.get(m)??1/0;return W-F}).filter(f=>f!==H.ROW_SELECTION_COLUMN_ID),N=[];for(const f of P){let m="";if(f.startsWith("link_"))m=_.getLinkEntityIdsByColumnId(r.links,f);else if(f==="subtasks"){const R=_.getCellValue(r,f)||[];m=z.subtasksToTSV(R,r.id,r.name)}else if(f==="comments"){const R=_.getCellValue(r,"latestComments")||[];m=Oe.commentsToText(R)}else{const R=$e[f]||f;let e=_.getCellValue(r,R);if(f==="folder_entity"&&typeof e!="string"){const t=e||r.product?.folder,s="parents"in r?r.parents:void 0;e=t?.label||t?.name||s?.[s.length-1]||""}if(c&&(Ne.has(f)||e===void 0||e===null||e===""||typeof e=="object")){const t=_.getCellValue(c,R);t!=null&&t!==""&&(e=t)}if(!e){const t=J.find(s=>s.name===f.replace("attrib_",""));t&&t.data.type==="boolean"?e=!1:t&&t.data.type.includes("list_of")&&(e=[])}if(m=e!=null?String(e):"",f==="name"&&(m=$.getEntityPath(r.entityId||r.id,B)||c?.label||c?.name||r.label||r.name||""),f==="subType"){const t=c?.subType??r.subType;typeof t=="string"&&t?m=t:("folderType"in r&&(m=r.folderType||""),"taskType"in r&&(m=r.taskType||""))}}const W=m.replace(/"/g,'""'),F=f!=="subtasks"&&(m.includes(`
3
3
  `)||m.includes(" ")||m.includes('"'));N.push(F?`"${W}"`:W)}A+=N.join(" ")+`
4
- `}return A}catch(E){console.error("Failed to copy to clipboard:",E)}},[M,ge,I,B,G,Q,pe]),he=async()=>{const n=await fe();if(!n)return!1;const c=$.parseClipboardText(n);return c.length===0?!1:c.every(a=>a.values.every(d=>d.split(",").every(E=>be.validateEntityId(E))))},re=j.useCallback(async(n,c)=>{if(n=n||Array.from(M),!n.length)return;const a=await ae(n,{fullRow:c});if(a){if(!navigator.clipboard){$.clipboardError("Clipboard API not supported in this browser.");return}if(!window.isSecureContext){$.clipboardError("Clipboard operations require a secure HTTPS context.");return}try{await navigator.clipboard.writeText(a)}catch(d){$.clipboardError(`Failed to copy to clipboard: ${d.message}`)}}},[M,B,I]),me=j.useCallback(async(n,c,a)=>{if(n=n||Array.from(M),!!n.length)try{const d=await ae(n,{headers:!0,fullRow:a});if(!d)return;const E=new Blob([d],{type:"text/csv"}),k=URL.createObjectURL(E),f=document.createElement("a");f.href=k;const A=n.length;f.download=`${c}-export-${A}_cells-${new Date().toISOString().slice(0,10)}.csv`,f.click(),URL.revokeObjectURL(k)}catch(d){console.error("Failed to copy to clipboard:",d)}},[M,B,I,ae]),fe=async()=>{if(!navigator.clipboard){$.clipboardError("Clipboard API not supported in this browser.");return}if(!window.isSecureContext){$.clipboardError("Clipboard operations require a secure HTTPS context.");return}let n;try{return n=await navigator.clipboard.readText(),n}catch(c){$.clipboardError(`Failed to read from clipboard: ${c.message}`);return}},te=j.useCallback(async(n,c)=>{const{method:a="replace"}=c||{};if(!n.length)return;const d=await fe();if(!d)return;let E=!1,k=d;z.isSubtasksTSV(d)&&(E=!0);const f=$.parseClipboardText(d);if(!f.length)return;const A=f.length===1&&f[0].values.length===1,ie=Q.map(e=>e.id).filter(e=>e!==H.ROW_SELECTION_COLUMN_ID),se=(e,r,i)=>{const b={};return i&&i.length>0?i.forEach((q,s)=>{const h=r.find(u=>u===q||u.replace("attrib_","")===q||u===`attrib_${q}`||u.toLowerCase()===q.toLowerCase());h&&s<e.values.length&&(b[h]=e.values[s])}):r.forEach((q,s)=>{s<e.values.length&&(b[q]=e.values[s])}),b},g=f[0]?.colIds||void 0,t=new Map;Array.from(n).forEach(e=>{const r=_.parseCellId(e);if(!r)return;const{rowId:i,colId:b}=r;b===H.ROW_SELECTION_COLUMN_ID||!ie.includes(b)||(t.has(i)||t.set(i,new Set),t.get(i)?.add(b))});const l=Array.from(t.keys()).sort((e,r)=>{const i=I.rowIdToIndex.get(e)??1/0,b=I.rowIdToIndex.get(r)??1/0;return i-b}),L=l[0],P=Array.from(t.get(L)||[]).sort((e,r)=>{const i=I.colIdToIndex.get(e)??1/0,b=I.colIdToIndex.get(r)??1/0;return i-b});for(let e=0;e<l.length;e++){const r=l[e],i=_.getEntityDataById(r,B)?.entityType==="folder",b=e%f.length,q=f[b],s=A?{[P[0]]:f[0].values[0]}:se(q,P,g);for(const h of P){const u=s[h]||"";if(!Le.validateClipboardData({colId:h,isFolder:i,pasteValue:u,parsedData:f,columnEnums:le,columnReadOnly:Ie,rowIndex:e,colIndex:P.indexOf(h),isSingleCellValue:A,attribFields:J}))return}}const N=new Map;for(let e=0;e<P.length;e++){const r=P[e];if(r==="name")continue;if(r==="subtasks"){let s=[],h=!1;if(E){const u=k.trim().split(`
5
- `),y=u[0].toLowerCase(),O=y.includes("label")&&y.includes("name")&&y.includes("start date")&&y.includes("end date")&&y.includes("assignees")&&y.includes("status")?u.slice(1):u,D=new Map,K=[];O.forEach(V=>{const v=z.tsvToSubtasks(V);if(v.length===0)return;const C=v[0],U=`${C.taskId||""}|${C.taskName||""}`;D.has(U)||(D.set(U,[]),K.push(U)),D.get(U).push(C)}),K.forEach(V=>{const[v,C]=V.split("|");s.push({taskId:v||void 0,taskName:C||void 0,subtasks:D.get(V)||[]})}),h=s.length<=1}for(let u=0;u<l.length;u++){const y=l[u],w=_.getEntityDataById(y,B)?.entityType;if(w!=="task")continue;const O=G(y),D=O?.entityId||y,K=`${y}-${w}`;N.has(K)||N.set(K,{rowId:y,id:D,type:w,fields:{},attrib:{},links:{}});const V=N.get(K),v=O&&"subtasks"in O&&O.subtasks||[];V.previousSubtasks=v;let C=[];if(E){if(h&&s.length>0)C=s[0].subtasks;else if(s.length>0){const o=u%s.length;C=s[o].subtasks}}else if(A){const o=f[0].values[0];C=z.tsvToSubtasks(o)}else{const o=u%f.length,T=f[o],x=e%T.values.length,S=T.values[x];C=z.tsvToSubtasks(S)}if(!C||C.length===0)continue;const U=C.map((o,T)=>({id:be.getEntityId(),name:z.sanitizeSubtaskName(o.name||o.label||`Subtask ${T+1}`),label:o.label||"",assignees:o.assignees||[],description:o.label||"",startDate:o.startDate,endDate:o.endDate,isDone:o.isDone||!1}));if(a==="merge"){const o=[...v],T=new Set(v.map(x=>{const S=(x.label||"").toLowerCase(),oe=(x.name||"").toLowerCase();return`${S}|${oe}`}));for(const x of U){const S=(x.label||"").toLowerCase(),oe=(x.name||"").toLowerCase(),ne=`${S}|${oe}`;T.has(ne)||o.push(x)}V.subtasks=o}else{const o=U.map(T=>{const x=v.find(S=>(S.label||"").toLowerCase()===(T.label||"").toLowerCase()&&(S.name||"").toLowerCase()===(T.name||"").toLowerCase());return{...T,id:x?.id||T.id}});V.subtasks=o}}continue}let i=!1,b=!1,q="string";if(l.length>0){const s=l[0];if(G(s))if(i=r.startsWith("attrib_"),b=r.startsWith("link_"),r==="status"||r==="subType")q="string",i=!1;else if(r==="tags"||r==="assignees")q="array";else if(i){const u=r.replace("attrib_",""),y=J.find(w=>w.name===u);if(y)switch(y.data.type){case"boolean":q="boolean";break;case"float":case"integer":q="number";break;case"list_of_strings":case"list_of_any":case"list_of_integers":case"list_of_submodels":q="array";break;default:q="string"}}else b&&(q="array")}for(let s=0;s<l.length;s++){const h=l[s],u=_.getEntityDataById(h,B)?.entityType,y=u==="folder";let w;if(A)w=f[0].values[0];else{const U=s%f.length,o=f[U];if(o.values.length>P.length){const T=I.colIdToIndex.get(P[0])??0,x=Array.from(I.colIdToIndex.keys()).filter(X=>X!==H.ROW_SELECTION_COLUMN_ID).sort((X,Te)=>{const we=I.colIdToIndex.get(X)??1/0,ke=I.colIdToIndex.get(Te)??1/0;return we-ke}),S=x.findIndex(X=>I.colIdToIndex.get(X)===T),ne=x.slice(S,S+o.values.length).indexOf(r);w=o.values[ne]||o.values[ne%o.values.length]}else{const T=e%o.values.length;w=o.values[T]}}let O=r.split("_").pop()||r;if(r==="subType"&&(O=y?"folderType":"taskType",i=!1,!w))continue;const D=$.processFieldValue(w,q),V=G(h)?.entityId||h,v=`${h}-${u}`;!N.has(v)&&u&&N.set(v,{rowId:h,id:V,type:u,fields:{},attrib:{},links:{}});const C=N.get(v);if(b){const[U,o,T,x,S]=r.split("_");C.links[`${o}|${T}|${x}_${S}`]=D}else i?C.attrib[O]=D:C.fields[O]=D}}const p=[],m=new Map;N.forEach(e=>{Object.entries(e.fields).forEach(([r,i])=>{p.push({rowId:e.rowId,id:e.id,type:e.type,field:r,value:i})}),Object.entries(e.attrib).forEach(([r,i])=>{p.push({rowId:e.rowId,id:e.id,type:e.type,field:r,value:i,isAttrib:!0})}),Object.entries(e.links).forEach(([r,i])=>{const[b,q]=r.split("_"),s=b.split("|");if(s.length>=3){const h=s[0],u=s[1],y=s[2],w=`${h}|${u}|${y}`,O=q==="out"?y:u,D=`${e.id}-${w}-${q}`;m.set(D,{rowId:e.rowId,sourceEntityId:e.id,sourceEntityType:e.type,linkType:w,direction:q,targetEntityType:O,operation:a,targetEntityIds:Array.isArray(i)?i:[]})}})});const W=Array.from(m.values()),F=[];N.forEach(e=>{e.subtasks&&F.push({taskId:e.id,subtasks:e.subtasks,previousSubtasks:e.previousSubtasks})});const R=[];if(p.length>0&&R.push(ce(p)),W.length>0&&R.push(de(W)),F.length>0){ue&&F.forEach(({taskId:r,subtasks:i,previousSubtasks:b})=>{const q=b||[],s=i||[],h=()=>{ee({projectName:Z,taskId:r,subtasks:q}).unwrap().catch(()=>{})},u=()=>{ee({projectName:Z,taskId:r,subtasks:s}).unwrap().catch(()=>{})};ue.pushHistory([h],[u])});const e=F.map(({taskId:r,subtasks:i})=>ee({projectName:Z,taskId:r,subtasks:i}).unwrap());R.push(...e)}if(R.length>0)try{await Promise.all(R)}catch(e){console.error("Error updating entities:",e),$.clipboardError(`Paste failed: ${e||e?.message||"Unknown error"}`)}},[M,I,B,ce,de,le,G,Q,J,Z,ee,ue]);j.useEffect(()=>{const n=async c=>{if((c.ctrlKey||c.metaKey)&&c.key==="c"){const a=document.activeElement,d=a?.closest("table")!==null||a?.closest(".table-container")!==null||a?.tagName==="TD"||a?.tagName==="TH",E=a?.tagName==="INPUT"||a?.tagName==="TEXTAREA"||a?.isContentEditable;if((window.getSelection()?.toString().length??!1)&&!d||E&&!d)return;M.size>0&&await re()}if((c.ctrlKey||c.metaKey)&&c.key==="v"){const a=document.activeElement;if(a&&(a.tagName==="INPUT"||a.tagName==="TEXTAREA"||a.isContentEditable))if(await he())c.preventDefault();else return;te(Array.from(M),{method:c.shiftKey?"merge":"replace"})}};return window.addEventListener("keydown",n),()=>{window.removeEventListener("keydown",n)}},[re,te]);const Ce=j.useMemo(()=>({copyToClipboard:re,pasteFromClipboard:te,exportCSV:me}),[re,te]);return xe.jsxRuntimeExports.jsx(ye.Provider,{value:Ce,children:Y})},Pe=()=>{const Y=j.useContext(ye);if(Y===void 0)throw new Error("useClipboard must be used within a ClipboardProvider");return Y};exports.ClipboardProvider=Ae;exports.useClipboard=Pe;
4
+ `}return A}catch(E){console.error("Failed to copy to clipboard:",E)}},[M,qe,g,B,G,Q,fe]),he=async()=>{const i=await be();if(!i)return!1;const u=$.parseClipboardText(i);return u.length===0?!1:u.every(l=>l.values.every(d=>d.split(",").every(E=>ye.validateEntityId(E))))},te=j.useCallback(async(i,u)=>{if(i=i||Array.from(M),!i.length)return;const l=await le(i,{fullRow:u});if(l){if(!navigator.clipboard){$.clipboardError("Clipboard API not supported in this browser.");return}if(!window.isSecureContext){$.clipboardError("Clipboard operations require a secure HTTPS context.");return}try{await navigator.clipboard.writeText(l)}catch(d){$.clipboardError(`Failed to copy to clipboard: ${d.message}`)}}},[M,B,g]),me=j.useCallback(async(i,u,l)=>{if(i=i||Array.from(M),!!i.length)try{const d=await le(i,{headers:!0,fullRow:l});if(!d)return;const E=new Blob([d],{type:"text/csv"}),k=URL.createObjectURL(E),b=document.createElement("a");b.href=k;const A=i.length;b.download=`${u}-export-${A}_cells-${new Date().toISOString().slice(0,10)}.csv`,b.click(),URL.revokeObjectURL(k)}catch(d){console.error("Failed to copy to clipboard:",d)}},[M,B,g,le]),be=async()=>{if(!navigator.clipboard){$.clipboardError("Clipboard API not supported in this browser.");return}if(!window.isSecureContext){$.clipboardError("Clipboard operations require a secure HTTPS context.");return}let i;try{return i=await navigator.clipboard.readText(),i}catch(u){$.clipboardError(`Failed to read from clipboard: ${u.message}`);return}},re=j.useCallback(async(i,u)=>{const{method:l="replace"}=u||{};if(!i.length)return;const d=await be();if(!d)return;let E=!1,k=d;z.isSubtasksTSV(d)&&(E=!0);const b=$.parseClipboardText(d);if(!b.length)return;const A=b.length===1&&b[0].values.length===1,se=Q.map(e=>e.id).filter(e=>e!==H.ROW_SELECTION_COLUMN_ID),oe=(e,t,s)=>{const y={};return s&&s.length>0?s.forEach((p,o)=>{const h=t.find(a=>a===p||a.replace("attrib_","")===p||a===`attrib_${p}`||a.toLowerCase()===p.toLowerCase());h&&o<e.values.length&&(y[h]=e.values[o])}):t.forEach((p,o)=>{o<e.values.length&&(y[p]=e.values[o])}),y},q=b[0]?.colIds||void 0,r=new Map;Array.from(i).forEach(e=>{const t=_.parseCellId(e);if(!t)return;const{rowId:s,colId:y}=t;y===H.ROW_SELECTION_COLUMN_ID||!se.includes(y)||(r.has(s)||r.set(s,new Set),r.get(s)?.add(y))});const c=Array.from(r.keys()).sort((e,t)=>{const s=g.rowIdToIndex.get(e)??1/0,y=g.rowIdToIndex.get(t)??1/0;return s-y}),L=c[0],P=Array.from(r.get(L)||[]).sort((e,t)=>{const s=g.colIdToIndex.get(e)??1/0,y=g.colIdToIndex.get(t)??1/0;return s-y});for(let e=0;e<c.length;e++){const t=c[e],s=_.getEntityDataById(t,B)?.entityType==="folder",y=e%b.length,p=b[y],o=A?{[P[0]]:b[0].values[0]}:oe(p,P,q);for(const h of P){const a=o[h]||"";if(!Re.validateClipboardData({colId:h,isFolder:s,pasteValue:a,parsedData:b,columnEnums:ce,columnReadOnly:ge,rowIndex:e,colIndex:P.indexOf(h),isSingleCellValue:A,attribFields:J}))return}}const N=new Map;for(let e=0;e<P.length;e++){const t=P[e];if(t==="name")continue;if(t==="subtasks"){let o=[],h=!1;if(E){const a=k.trim().split(`
5
+ `),I=a[0].toLowerCase(),O=I.includes("label")&&I.includes("name")&&I.includes("start date")&&I.includes("end date")&&I.includes("assignees")&&I.includes("status")?a.slice(1):a,D=new Map,K=[];O.forEach(V=>{const v=z.tsvToSubtasks(V);if(v.length===0)return;const C=v[0],U=`${C.taskId||""}|${C.taskName||""}`;D.has(U)||(D.set(U,[]),K.push(U)),D.get(U).push(C)}),K.forEach(V=>{const[v,C]=V.split("|");o.push({taskId:v||void 0,taskName:C||void 0,subtasks:D.get(V)||[]})}),h=o.length<=1}for(let a=0;a<c.length;a++){const I=c[a],w=_.getEntityDataById(I,B)?.entityType;if(w!=="task")continue;const O=G(I),D=O?.entityId||I,K=`${I}-${w}`;N.has(K)||N.set(K,{rowId:I,id:D,type:w,fields:{},attrib:{},links:{}});const V=N.get(K),v=O&&"subtasks"in O&&O.subtasks||[];V.previousSubtasks=v;let C=[];if(E){if(h&&o.length>0)C=o[0].subtasks;else if(o.length>0){const n=a%o.length;C=o[n].subtasks}}else if(A){const n=b[0].values[0];C=z.tsvToSubtasks(n)}else{const n=a%b.length,T=b[n],x=e%T.values.length,S=T.values[x];C=z.tsvToSubtasks(S)}if(!C||C.length===0)continue;const U=C.map((n,T)=>({id:ye.getEntityId(),name:z.sanitizeSubtaskName(n.name||n.label||`Subtask ${T+1}`),label:n.label||"",assignees:n.assignees||[],description:n.label||"",startDate:n.startDate,endDate:n.endDate,isDone:n.isDone||!1}));if(l==="merge"){const n=[...v],T=new Set(v.map(x=>{const S=(x.label||"").toLowerCase(),ne=(x.name||"").toLowerCase();return`${S}|${ne}`}));for(const x of U){const S=(x.label||"").toLowerCase(),ne=(x.name||"").toLowerCase(),ie=`${S}|${ne}`;T.has(ie)||n.push(x)}V.subtasks=n}else{const n=U.map(T=>{const x=v.find(S=>(S.label||"").toLowerCase()===(T.label||"").toLowerCase()&&(S.name||"").toLowerCase()===(T.name||"").toLowerCase());return{...T,id:x?.id||T.id}});V.subtasks=n}}continue}let s=!1,y=!1,p="string";if(c.length>0){const o=c[0];if(G(o))if(s=t.startsWith("attrib_"),y=t.startsWith("link_"),t==="status"||t==="subType")p="string",s=!1;else if(t==="tags"||t==="assignees")p="array";else if(s){const a=t.replace("attrib_",""),I=J.find(w=>w.name===a);if(I)switch(I.data.type){case"boolean":p="boolean";break;case"float":case"integer":p="number";break;case"list_of_strings":case"list_of_any":case"list_of_integers":case"list_of_submodels":p="array";break;default:p="string"}}else y&&(p="array")}for(let o=0;o<c.length;o++){const h=c[o],a=_.getEntityDataById(h,B)?.entityType,I=a==="folder";let w;if(A)w=b[0].values[0];else{const U=o%b.length,n=b[U];if(n.values.length>P.length){const T=g.colIdToIndex.get(P[0])??0,x=Array.from(g.colIdToIndex.keys()).filter(X=>X!==H.ROW_SELECTION_COLUMN_ID).sort((X,Te)=>{const we=g.colIdToIndex.get(X)??1/0,ke=g.colIdToIndex.get(Te)??1/0;return we-ke}),S=x.findIndex(X=>g.colIdToIndex.get(X)===T),ie=x.slice(S,S+n.values.length).indexOf(t);w=n.values[ie]||n.values[ie%n.values.length]}else{const T=e%n.values.length;w=n.values[T]}}let O=t.split("_").pop()||t;if(t==="subType"&&(O=I?"folderType":"taskType",s=!1,!w))continue;const D=$.processFieldValue(w,p),V=G(h)?.entityId||h,v=`${h}-${a}`;!N.has(v)&&a&&N.set(v,{rowId:h,id:V,type:a,fields:{},attrib:{},links:{}});const C=N.get(v);if(y){const[U,n,T,x,S]=t.split("_");C.links[`${n}|${T}|${x}_${S}`]=D}else s?C.attrib[O]=D:C.fields[O]=D}}const f=[],m=new Map;N.forEach(e=>{Object.entries(e.fields).forEach(([t,s])=>{f.push({rowId:e.rowId,id:e.id,type:e.type,field:t,value:s})}),Object.entries(e.attrib).forEach(([t,s])=>{f.push({rowId:e.rowId,id:e.id,type:e.type,field:t,value:s,isAttrib:!0})}),Object.entries(e.links).forEach(([t,s])=>{const[y,p]=t.split("_"),o=y.split("|");if(o.length>=3){const h=o[0],a=o[1],I=o[2],w=`${h}|${a}|${I}`,O=p==="out"?I:a,D=`${e.id}-${w}-${p}`;m.set(D,{rowId:e.rowId,sourceEntityId:e.id,sourceEntityType:e.type,linkType:w,direction:p,targetEntityType:O,operation:l,targetEntityIds:Array.isArray(s)?s:[]})}})});const W=Array.from(m.values()),F=[];N.forEach(e=>{e.subtasks&&F.push({taskId:e.id,subtasks:e.subtasks,previousSubtasks:e.previousSubtasks})});const R=[];if(f.length>0&&R.push(ue(f)),W.length>0&&R.push(de(W)),F.length>0){ae&&F.forEach(({taskId:t,subtasks:s,previousSubtasks:y})=>{const p=y||[],o=s||[],h=()=>{ee({projectName:Z,taskId:t,subtasks:p}).unwrap().catch(()=>{})},a=()=>{ee({projectName:Z,taskId:t,subtasks:o}).unwrap().catch(()=>{})};ae.pushHistory([h],[a])});const e=F.map(({taskId:t,subtasks:s})=>ee({projectName:Z,taskId:t,subtasks:s}).unwrap());R.push(...e)}if(R.length>0)try{await Promise.all(R)}catch(e){console.error("Error updating entities:",e),$.clipboardError(`Paste failed: ${e||e?.message||"Unknown error"}`)}},[M,g,B,ue,de,ce,G,Q,J,Z,ee,ae]);j.useEffect(()=>{const i=async u=>{if((u.ctrlKey||u.metaKey)&&u.key==="c"){const l=document.activeElement,d=l?.closest("table")!==null||l?.closest(".table-container")!==null||l?.tagName==="TD"||l?.tagName==="TH",E=l?.tagName==="INPUT"||l?.tagName==="TEXTAREA"||l?.isContentEditable;if((window.getSelection()?.toString().length??!1)&&!d||E&&!d)return;M.size>0&&await te()}if((u.ctrlKey||u.metaKey)&&u.key==="v"){const l=document.activeElement;if(l&&(l.tagName==="INPUT"||l.tagName==="TEXTAREA"||l.isContentEditable))if(await he())u.preventDefault();else return;re(Array.from(M),{method:u.shiftKey?"merge":"replace"})}};return window.addEventListener("keydown",i),()=>{window.removeEventListener("keydown",i)}},[te,re]);const Ce=j.useMemo(()=>({copyToClipboard:te,pasteFromClipboard:re,exportCSV:me}),[te,re]);return xe.jsxRuntimeExports.jsx(Ie.Provider,{value:Ce,children:Y})},Pe=()=>{const Y=j.useContext(Ie);if(Y===void 0)throw new Error("useClipboard must be used within a ClipboardProvider");return Y};exports.ClipboardProvider=Ae;exports.useClipboard=Pe;
6
6
  //# sourceMappingURL=ClipboardContext.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClipboardContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ClipboardContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useMemo } from 'react'\n\n// Contexts\nimport { ROW_SELECTION_COLUMN_ID } from '../constants'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport { useCellEditing } from './CellEditingContext'\nimport { useProjectContext } from '@shared/context'\n\n// Utils\nimport {\n getCellValue,\n getEntityDataById,\n getLinkEntityIdsByColumnId,\n parseCellId,\n} from '../utils/cellUtils'\n\n// Types\nimport { TableRow } from '../types/table'\nimport { EntityUpdate } from '../hooks/useUpdateTableData'\nimport usePasteLinks, { LinkUpdate } from '../hooks/usePasteLinks'\nimport { useUpdateSubtasksMutation } from '@shared/api'\n\n// Import from the new modular files\nimport {\n getEntityPath,\n parseClipboardText,\n clipboardError,\n processFieldValue,\n subtasksToTSV,\n isSubtasksTSV,\n tsvToSubtasks,\n sanitizeSubtaskName,\n commentsToText,\n} from './clipboard'\nimport { validateClipboardData } from './clipboard/clipboardValidation'\nimport { ClipboardContextType, ClipboardProviderProps } from './clipboard/clipboardTypes'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport { validateEntityId, getEntityId } from '@shared/util'\n\nconst ClipboardContext = createContext<ClipboardContextType | undefined>(undefined)\n\nconst DISPLAY_PREFERRED_COLS = new Set([\n 'version',\n 'version_entity',\n 'product',\n 'productBaseType',\n 'task_entity',\n])\n\nconst DISPLAY_COLUMN_FIELDS: Record<string, string> = {\n folder_entity: 'folder',\n task_entity: 'taskLabel',\n version_entity: 'versionName',\n}\n\nexport const ClipboardProvider: React.FC<ClipboardProviderProps> = ({\n children,\n entitiesMap,\n columnEnums,\n columnReadOnly,\n visibleColumns,\n}) => {\n // Get selection information from SelectionContext\n const { selectedCells, gridMap, focusedCellId } = useSelectionCellsContext()\n const { updateEntities, history } = useCellEditing()\n const { pasteTableLinks } = usePasteLinks()\n const { getEntityById, attribFields, tableData } = useProjectTableContext()\n\n const displayRowsById = useMemo(() => {\n const map = new Map<string, TableRow>()\n const walk = (rows: TableRow[]) => {\n for (const row of rows) {\n map.set(row.id, row)\n if (row.subRows?.length) walk(row.subRows as TableRow[])\n }\n }\n walk(tableData || [])\n return map\n }, [tableData])\n const { projectName } = useProjectContext()\n const [updateSubtasks] = useUpdateSubtasksMutation()\n\n const getSelectionData = useCallback(\n async (selected: string[], config?: { headers?: boolean; fullRow?: boolean }) => {\n const { headers, fullRow } = config || {}\n try {\n // Get visible columns in display order, excluding row selection\n const visibleColumnIds = visibleColumns\n .map((col) => col.id)\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n\n // Organize selected cells by row, filtering to only visible columns\n const cellsByRow = new Map<string, Set<string>>()\n\n // Parse all selected cells and organize by rowId and colId\n selected.forEach((cellId) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n const { rowId, colId } = position\n if (colId === ROW_SELECTION_COLUMN_ID || !visibleColumnIds.includes(colId)) return\n\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n\n cellsByRow.get(rowId)?.add(colId)\n })\n\n if (fullRow) {\n const selectedRows = selected\n .filter(\n (cellId) =>\n parseCellId(cellId)?.rowId &&\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID,\n )\n .map((cellId) => parseCellId(cellId)?.rowId) as string[]\n\n // select the whole row\n // For rows with selection cells, add all available columns\n selectedRows.forEach((rowId) => {\n // add the rowId if it doesn't exist\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n const allColumns = Array.from(gridMap.colIdToIndex.keys())\n allColumns.forEach((colId) => {\n cellsByRow.get(rowId)?.add(colId)\n })\n })\n }\n\n // Get sorted row IDs based on their index in the grid\n const sortedRows = Array.from(cellsByRow.keys()).sort((a, b) => {\n const indexA = gridMap.rowIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.rowIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Build clipboard text\n let clipboardText = ''\n\n // Get the first row to determine columns\n const firstRowId = sortedRows[0]\n if (!firstRowId) return ''\n\n // Get all column IDs for the first row, sorted by their index in the grid\n const colIds = Array.from(cellsByRow.get(firstRowId) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Include headers if requested\n if (headers && colIds.length > 0) {\n const headerValues: string[] = []\n\n for (const colId of colIds) {\n // Use colId as the column name since we don't have direct access to column names\n const columnName = colId\n headerValues.push(`${columnName.replace(/\"/g, '\"\"')}`)\n }\n\n clipboardText += headerValues.join('\\t') + '\\n'\n }\n\n for (const rowId of sortedRows) {\n // Get the entity for this row\n const entity = getEntityById(rowId)\n\n if (!entity) {\n console.warn(`Entity not found for rowId: ${rowId}`)\n continue\n }\n\n const displayRow = displayRowsById.get(rowId)\n\n // Get all column IDs for this row, sorted by their index in the grid\n const colIds = Array.from(cellsByRow.get(rowId) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Filter out the row selection column from the copied data\n const filteredColIds = colIds.filter((colId) => colId !== ROW_SELECTION_COLUMN_ID)\n\n const rowValues: string[] = []\n\n // For each column in this row\n for (const colId of filteredColIds) {\n // Determine the value based on the column ID\n let cellValue = ''\n\n // special handling of link cells\n if (colId.startsWith('link_')) {\n // @ts-expect-error - only complaining about missing __typename\n cellValue = getLinkEntityIdsByColumnId(entity.links, colId)\n } else if (colId === 'subtasks') {\n // Special handling for subtasks - convert to TSV format\n // @ts-ignore\n const subtasks = getCellValue(entity, colId) || []\n cellValue = subtasksToTSV(subtasks, entity.id, entity.name)\n } else if (colId === 'comments') {\n // @ts-ignore\n const comments = getCellValue(entity, 'latestComments') || []\n cellValue = commentsToText(comments)\n } else {\n // @ts-ignore\n const sourceField = DISPLAY_COLUMN_FIELDS[colId] || colId\n let foundValue = getCellValue(entity, sourceField)\n\n // folder is an object on some entities (product/task) or nested under\n // product (version) - copy the display name the cell shows,\n // falling back to the last parent (parent folder name on tasks/folders)\n if (colId === 'folder_entity' && typeof foundValue !== 'string') {\n const folder = foundValue || (entity as any).product?.folder\n const parents = 'parents' in entity ? entity.parents : undefined\n foundValue = folder?.label || folder?.name || parents?.[parents.length - 1] || ''\n }\n\n // Raw entity nodes (flat lists) either lack display-computed columns or hold a\n // non-string value (product/task object, numeric version) — prefer the built\n // display row, which is exactly what the cell shows.\n if (\n displayRow &&\n (DISPLAY_PREFERRED_COLS.has(colId) ||\n foundValue === undefined ||\n foundValue === null ||\n foundValue === '' ||\n typeof foundValue === 'object')\n ) {\n const displayValue = getCellValue(displayRow, sourceField)\n if (displayValue !== undefined && displayValue !== null && displayValue !== '') {\n foundValue = displayValue\n }\n }\n\n if (!foundValue) {\n // we should look for the default value set out in attribFields\n const field = attribFields.find((f) => f.name === colId.replace('attrib_', ''))\n if (field && field.data.type === 'boolean') {\n foundValue = false // default boolean value\n } else if (field && field.data.type.includes('list_of')) {\n foundValue = [] // default list value\n }\n }\n\n // convert to string if foundValue is not undefined or null use empty string otherwise\n cellValue = foundValue !== undefined && foundValue !== null ? String(foundValue) : ''\n\n // Hierarchical tables resolve a full path; flat lists (raw nodes keyed by row id)\n // can't, so fall back to the built display row label/name the cell shows\n if (colId === 'name') {\n cellValue =\n getEntityPath(entity.entityId || entity.id, entitiesMap) ||\n (displayRow as any)?.label ||\n displayRow?.name ||\n (entity as any).label ||\n entity.name ||\n ''\n }\n\n if (colId === 'subType') {\n // built display rows resolve subType (folder/task/product); raw nodes fall back to type fields\n const resolvedSubType = (displayRow as any)?.subType ?? (entity as any).subType\n if (typeof resolvedSubType === 'string' && resolvedSubType) {\n cellValue = resolvedSubType\n } else {\n if ('folderType' in entity) {\n cellValue = entity.folderType || ''\n }\n if ('taskType' in entity) {\n cellValue = entity.taskType || ''\n }\n }\n }\n }\n\n // Wrap multi-line / tab / quote values in quotes so spreadsheets keep them in one\n // cell. Subtasks embed tabs+newlines as real grid structure for paste round-trips —\n // leave them raw so they stay multi-row/column.\n const escaped = cellValue.replace(/\"/g, '\"\"')\n const needsQuoting =\n colId !== 'subtasks' &&\n (cellValue.includes('\\n') || cellValue.includes('\\t') || cellValue.includes('\"'))\n rowValues.push(needsQuoting ? `\"${escaped}\"` : escaped)\n }\n\n // Add row to clipboard text\n clipboardText += rowValues.join('\\t') + '\\n'\n }\n\n return clipboardText\n } catch (error) {\n console.error('Failed to copy to clipboard:', error)\n }\n },\n [\n selectedCells,\n focusedCellId,\n gridMap,\n entitiesMap,\n getEntityById,\n visibleColumns,\n displayRowsById,\n ],\n )\n\n const doesClipboardContainId = async () => {\n // check if the clipboard contains a valid ID\n const clipboardText = await getClipboardString()\n if (!clipboardText) return false\n const parsedData = parseClipboardText(clipboardText)\n if (parsedData.length === 0) return false\n return parsedData.every((row) => {\n return row.values.every((value) => value.split(',').every((v) => validateEntityId(v)))\n })\n }\n\n const copyToClipboard: ClipboardContextType['copyToClipboard'] = useCallback(\n async (selected, fullRow) => {\n selected = selected || Array.from(selectedCells)\n if (!selected.length) return\n const clipboardText = await getSelectionData(selected, { fullRow })\n if (!clipboardText) {\n return\n }\n if (!navigator.clipboard) {\n clipboardError('Clipboard API not supported in this browser.')\n return\n }\n if (!window.isSecureContext) {\n clipboardError('Clipboard operations require a secure HTTPS context.')\n return\n }\n try {\n await navigator.clipboard.writeText(clipboardText)\n } catch (error: any) {\n clipboardError(`Failed to copy to clipboard: ${error.message}`)\n }\n },\n [selectedCells, entitiesMap, gridMap],\n )\n\n const exportCSV: ClipboardContextType['exportCSV'] = useCallback(\n async (selected, projectName, fullRow) => {\n selected = selected || Array.from(selectedCells)\n if (!selected.length) return\n\n try {\n // Get clipboard text with headers included for CSV export\n const clipboardText = await getSelectionData(selected, { headers: true, fullRow })\n if (!clipboardText) return\n\n // create a csv file and download it\n const blob = new Blob([clipboardText], { type: 'text/csv' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n const selectedCount = selected.length\n a.download = `${projectName}-export-${selectedCount}_cells-${new Date()\n .toISOString()\n .slice(0, 10)}.csv`\n a.click()\n URL.revokeObjectURL(url)\n } catch (error) {\n console.error('Failed to copy to clipboard:', error)\n }\n },\n [selectedCells, entitiesMap, gridMap, getSelectionData],\n )\n\n const getClipboardString = async (): Promise<string | void> => {\n if (!navigator.clipboard) {\n clipboardError('Clipboard API not supported in this browser.')\n return\n }\n if (!window.isSecureContext) {\n clipboardError('Clipboard operations require a secure HTTPS context.')\n return\n }\n let clipboardText: string\n try {\n clipboardText = await navigator.clipboard.readText()\n return clipboardText\n } catch (error: any) {\n clipboardError(`Failed to read from clipboard: ${error.message}`)\n return\n }\n }\n\n const pasteFromClipboard: ClipboardContextType['pasteFromClipboard'] = useCallback(\n async (selected, config) => {\n const { method = 'replace' } = config || {}\n if (!selected.length) return\n\n const clipboardText = await getClipboardString()\n if (!clipboardText) return\n\n // Check if this is subtasks TSV data first, before normal parsing\n let isSubtasksData = false\n let subtasksClipboardText = clipboardText\n if (isSubtasksTSV(clipboardText)) {\n isSubtasksData = true\n }\n\n // Parse the clipboard text\n const parsedData = parseClipboardText(clipboardText)\n if (!parsedData.length) return\n\n // Determine if we have a single value in the clipboard (one row, one column)\n const isSingleCellValue = parsedData.length === 1 && parsedData[0].values.length === 1\n\n // Get visible columns in display order, excluding row selection\n const visibleColumnIds = visibleColumns\n .map((col) => col.id)\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n\n // Helper function to map clipboard values to visible columns\n const mapClipboardToVisibleColumns = (\n clipboardRow: any,\n visibleColumnIds: string[],\n clipboardHeaders?: string[],\n ) => {\n const mappedValues: Record<string, string> = {}\n\n if (clipboardHeaders && clipboardHeaders.length > 0) {\n // Map by header names when available\n clipboardHeaders.forEach((header: string, index: number) => {\n const matchingColId = visibleColumnIds.find(\n (colId) =>\n colId === header ||\n colId.replace('attrib_', '') === header ||\n colId === `attrib_${header}` ||\n colId.toLowerCase() === header.toLowerCase(),\n )\n\n if (matchingColId && index < clipboardRow.values.length) {\n mappedValues[matchingColId] = clipboardRow.values[index]\n }\n })\n } else {\n // Fallback: map by position, but only to visible columns\n visibleColumnIds.forEach((colId, index) => {\n if (index < clipboardRow.values.length) {\n mappedValues[colId] = clipboardRow.values[index]\n }\n })\n }\n\n return mappedValues\n }\n\n // Extract headers if they exist (assuming first row might be headers from external source)\n // You might need to detect this differently based on your clipboard format\n const clipboardHeaders = parsedData[0]?.colIds || undefined\n\n // Organize selected cells by row, filtering to only visible columns\n const cellsByRow = new Map<string, Set<string>>()\n\n Array.from(selected).forEach((cellId) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n const { rowId, colId } = position\n if (colId === ROW_SELECTION_COLUMN_ID || !visibleColumnIds.includes(colId)) return\n\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n cellsByRow.get(rowId)?.add(colId)\n })\n\n // Get sorted row IDs and column IDs\n const sortedRows = Array.from(cellsByRow.keys()).sort((a, b) => {\n const indexA = gridMap.rowIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.rowIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n const firstRow = sortedRows[0]\n const selectedColIds = Array.from(cellsByRow.get(firstRow) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // First pass: validate all values\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const isFolder = getEntityDataById<'folder'>(rowId, entitiesMap)?.entityType === 'folder'\n\n const pasteRowIndex = rowIndex % parsedData.length\n const clipboardRow = parsedData[pasteRowIndex]\n\n // Map clipboard data to visible columns\n const mappedValues = isSingleCellValue\n ? { [selectedColIds[0]]: parsedData[0].values[0] }\n : mapClipboardToVisibleColumns(clipboardRow, selectedColIds, clipboardHeaders)\n\n // Validate each mapped value\n for (const colId of selectedColIds) {\n const pasteValue = mappedValues[colId] || ''\n\n const isValid = validateClipboardData({\n colId,\n isFolder,\n pasteValue,\n parsedData,\n columnEnums,\n columnReadOnly,\n rowIndex,\n colIndex: selectedColIds.indexOf(colId),\n isSingleCellValue,\n attribFields,\n })\n\n if (!isValid) return\n }\n }\n\n // Create a map to consolidate updates for the same entity\n const entitiesToUpdateMap = new Map<\n string,\n {\n rowId: string\n id: string\n type: string\n fields: Record<string, any>\n attrib: Record<string, any>\n links: Record<string, string[]>\n subtasks?: any[]\n previousSubtasks?: any[]\n }\n >()\n\n // For each column, prepare updates\n for (let colIndex = 0; colIndex < selectedColIds.length; colIndex++) {\n const colId = selectedColIds[colIndex]\n\n // Skip special handling for 'name' which we don't want to paste\n if (colId === 'name') continue\n\n // Special handling for subtasks column\n if (colId === 'subtasks') {\n // For subtasks, group them by source task so each group can be applied to different cells\n let subtaskGroups: Array<{ taskId?: string; taskName?: string; subtasks: any[] }> = []\n let isFromSingleSourceTask = false\n\n if (isSubtasksData) {\n // Parse all subtask data to understand the source grouping\n const allLines = subtasksClipboardText.trim().split('\\n')\n\n // Check for header\n const firstLine = allLines[0].toLowerCase()\n const hasHeader =\n firstLine.includes('label') &&\n firstLine.includes('name') &&\n firstLine.includes('start date') &&\n firstLine.includes('end date') &&\n firstLine.includes('assignees') &&\n firstLine.includes('status')\n\n const dataLines = hasHeader ? allLines.slice(1) : allLines\n\n // Parse all lines and group by source taskId\n const groupMap = new Map<string, any[]>()\n const groupOrder: string[] = []\n\n dataLines.forEach((line) => {\n const parsed = tsvToSubtasks(line)\n if (parsed.length === 0) return\n\n const subtask = parsed[0]\n const groupKey = `${subtask.taskId || ''}|${subtask.taskName || ''}`\n\n if (!groupMap.has(groupKey)) {\n groupMap.set(groupKey, [])\n groupOrder.push(groupKey)\n }\n groupMap.get(groupKey)!.push(subtask)\n })\n\n // Create groups in order\n groupOrder.forEach((groupKey) => {\n const [taskId, taskName] = groupKey.split('|')\n subtaskGroups.push({\n taskId: taskId || undefined,\n taskName: taskName || undefined,\n subtasks: groupMap.get(groupKey) || [],\n })\n })\n\n // Check if all subtasks come from the same source task\n isFromSingleSourceTask = subtaskGroups.length <= 1\n }\n\n // Handle subtasks paste for each selected row\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const entityType = getEntityDataById(rowId, entitiesMap)?.entityType\n\n // Subtasks only apply to tasks\n if (entityType !== 'task') continue\n\n // Get entity to access entityId (important for list items where rowId is list item ID)\n const entity = getEntityById(rowId)\n const actualEntityId = entity?.entityId || rowId\n\n // Get or create entity entry in the map\n const entityKey = `${rowId}-${entityType}`\n if (!entitiesToUpdateMap.has(entityKey)) {\n entitiesToUpdateMap.set(entityKey, {\n rowId,\n id: actualEntityId,\n type: entityType,\n fields: {},\n attrib: {},\n links: {},\n })\n }\n\n const entityData = entitiesToUpdateMap.get(entityKey)!\n // Get existing subtasks from entity\n const existingSubtasks = (entity && 'subtasks' in entity && entity.subtasks) || []\n // store previous subtasks for history/undo\n entityData.previousSubtasks = existingSubtasks\n\n let subtasksToProcess: any[] = []\n\n if (isSubtasksData) {\n if (isFromSingleSourceTask && subtaskGroups.length > 0) {\n // All subtasks from one source - apply to all cells\n subtasksToProcess = subtaskGroups[0].subtasks\n } else if (subtaskGroups.length > 0) {\n // Multiple groups - distribute by row (like regular data does with modulo)\n const groupIndex = rowIndex % subtaskGroups.length\n subtasksToProcess = subtaskGroups[groupIndex].subtasks\n }\n } else {\n // For parsed clipboard data, get the appropriate row\n if (isSingleCellValue) {\n const pasteValue = parsedData[0].values[0]\n subtasksToProcess = tsvToSubtasks(pasteValue)\n } else {\n const pasteRowIndex = rowIndex % parsedData.length\n const clipboardRow = parsedData[pasteRowIndex]\n const pasteColIndex = colIndex % clipboardRow.values.length\n const pasteValue = clipboardRow.values[pasteColIndex]\n subtasksToProcess = tsvToSubtasks(pasteValue)\n }\n }\n\n // Skip if no subtasks to process\n if (!subtasksToProcess || subtasksToProcess.length === 0) continue\n\n // Create normalized subtasks from parsed data\n const newSubtasks = subtasksToProcess.map((st, index) => ({\n id: getEntityId(),\n name: sanitizeSubtaskName(st.name || st.label || `Subtask ${index + 1}`),\n label: st.label || '',\n assignees: st.assignees || [],\n description: st.label || '',\n startDate: st.startDate,\n endDate: st.endDate,\n isDone: st.isDone || false,\n }))\n\n // Handle merge vs replace\n if (method === 'merge') {\n // Merge new subtasks with existing ones, removing duplicates by label and name\n const mergedSubtasks = [...existingSubtasks]\n const existingIdentifiers = new Set(\n existingSubtasks.map((st) => {\n const label = (st.label || '').toLowerCase()\n const name = (st.name || '').toLowerCase()\n return `${label}|${name}`\n }),\n )\n\n // Add new subtasks that don't already exist\n for (const newSubtask of newSubtasks) {\n const label = (newSubtask.label || '').toLowerCase()\n const name = (newSubtask.name || '').toLowerCase()\n const identifier = `${label}|${name}`\n if (!existingIdentifiers.has(identifier)) {\n mergedSubtasks.push(newSubtask)\n }\n }\n entityData.subtasks = mergedSubtasks\n } else {\n // Replace mode: use new subtasks, preserving IDs for any matching label and name\n const replacedSubtasks = newSubtasks.map((newSt) => {\n // Try to find existing subtask with matching label and name to preserve ID\n const existingMatch = existingSubtasks.find(\n (est) =>\n (est.label || '').toLowerCase() === (newSt.label || '').toLowerCase() &&\n (est.name || '').toLowerCase() === (newSt.name || '').toLowerCase(),\n )\n return {\n ...newSt,\n id: existingMatch?.id || newSt.id,\n }\n })\n entityData.subtasks = replacedSubtasks\n }\n }\n continue\n }\n\n // Check if this is an attribute field by examining the first entity\n let isAttrib = false,\n isLink = false\n // Check if the field potentially contains array values\n let fieldValueType: 'string' | 'number' | 'boolean' | 'array' = 'string'\n\n if (sortedRows.length > 0) {\n const firstRowId = sortedRows[0]\n const entity = getEntityById(firstRowId)\n if (entity) {\n isAttrib = colId.startsWith('attrib_')\n isLink = colId.startsWith('link_')\n\n // Determine field type based on type or attrib type\n if (colId === 'status' || colId === 'subType') {\n // status and subType are strings\n fieldValueType = 'string'\n // special case to avoid treating subType as attrib (not sure if this is needed)\n isAttrib = false\n } else if (colId === 'tags' || colId === 'assignees') {\n // tags and assignees are always arrays\n fieldValueType = 'array'\n } else if (isAttrib) {\n // find type based on attribFields\n const fieldName = colId.replace('attrib_', '')\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (attribField) {\n const dataType = attribField.data.type\n switch (dataType) {\n case 'boolean':\n fieldValueType = 'boolean'\n break\n case 'float':\n case 'integer':\n fieldValueType = 'number'\n break\n case 'list_of_strings':\n case 'list_of_any':\n case 'list_of_integers':\n case 'list_of_submodels':\n fieldValueType = 'array'\n break\n default:\n // everything else is string\n fieldValueType = 'string'\n }\n }\n } else if (isLink) {\n // links are always arrays\n fieldValueType = 'array'\n }\n }\n }\n\n // Process each row individually\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const entityType = getEntityDataById(rowId, entitiesMap)?.entityType\n const isFolder = entityType === 'folder'\n\n // Get the appropriate value from the clipboard data\n let pasteValue\n if (isSingleCellValue) {\n pasteValue = parsedData[0].values[0]\n } else {\n const pasteRowIndex = rowIndex % parsedData.length\n // Map visible column index to clipboard data index\n // When clipboard contains hidden columns, we need to skip over values\n // that correspond to hidden columns when pasting to visible columns\n const clipboardRow = parsedData[pasteRowIndex]\n\n // If clipboard has more values than visible columns being pasted to,\n // it likely contains hidden column data. We need to reconstruct the original\n // column order that was copied by finding which columns would have been included.\n if (clipboardRow.values.length > selectedColIds.length) {\n // The clipboard data was created from consecutive columns in grid order.\n // We need to find which consecutive columns would result in this clipboard data.\n // Start from the first visible column and extend the range to match clipboard length.\n const firstVisibleColIndex = gridMap.colIdToIndex.get(selectedColIds[0]) ?? 0\n\n // Get all columns sorted by grid position\n const allGridColumns = Array.from(gridMap.colIdToIndex.keys())\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n .sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Find the starting position in the grid columns array\n const startGridPos = allGridColumns.findIndex(\n (id) => gridMap.colIdToIndex.get(id) === firstVisibleColIndex,\n )\n\n // The original copied columns are the consecutive ones starting from this position\n const originalCopiedColumns = allGridColumns.slice(\n startGridPos,\n startGridPos + clipboardRow.values.length,\n )\n\n // Find this column's position in the original copied columns\n const clipboardColIndex = originalCopiedColumns.indexOf(colId)\n pasteValue =\n clipboardRow.values[clipboardColIndex] ||\n clipboardRow.values[clipboardColIndex % clipboardRow.values.length]\n // Pasting value from hidden columns detection\n } else {\n // Normal case: map clipboard column index using modulo\n const pasteColIndex = colIndex % clipboardRow.values.length\n pasteValue = clipboardRow.values[pasteColIndex]\n // Pasting value normally\n }\n }\n\n let fieldToUpdate = colId.split('_').pop() || colId\n\n // Special handling for subType (convert to folderType or taskType)\n if (colId === 'subType') {\n fieldToUpdate = isFolder ? 'folderType' : 'taskType'\n isAttrib = false\n\n // Skip empty values for enum fields\n if (!pasteValue) continue\n }\n\n // Process the value based on its type\n const processedValue = processFieldValue(pasteValue, fieldValueType)\n\n // Get entity to access entityId (important for list items where rowId is list item ID)\n const entity = getEntityById(rowId)\n const actualEntityId = entity?.entityId || rowId\n\n // Get or create entity entry in the map\n const entityKey = `${rowId}-${entityType}`\n if (!entitiesToUpdateMap.has(entityKey) && entityType) {\n entitiesToUpdateMap.set(entityKey, {\n rowId,\n id: actualEntityId,\n type: entityType,\n fields: {},\n attrib: {},\n links: {},\n })\n }\n\n const entityData = entitiesToUpdateMap.get(entityKey)!\n\n // Add the field to the appropriate place\n if (isLink) {\n const [_link, linkType, inType, outType, direction] = colId.split('_')\n // final-task|folder|task\n entityData.links[`${linkType}|${inType}|${outType}_${direction}`] = processedValue\n } else if (isAttrib) {\n entityData.attrib[fieldToUpdate] = processedValue\n } else {\n entityData.fields[fieldToUpdate] = processedValue\n }\n }\n }\n\n // Convert the consolidated map to EntityUpdate array and LinkUpdate array\n const allEntityUpdates: EntityUpdate[] = []\n const linkUpdatesMap = new Map<string, LinkUpdate>()\n\n entitiesToUpdateMap.forEach((entity) => {\n // For regular fields, create one update per field\n Object.entries(entity.fields).forEach(([field, value]) => {\n allEntityUpdates.push({\n rowId: entity.rowId,\n id: entity.id,\n type: entity.type,\n field,\n value,\n })\n })\n\n // For attributes, create one update per attribute\n Object.entries(entity.attrib).forEach(([field, value]) => {\n allEntityUpdates.push({\n rowId: entity.rowId,\n id: entity.id,\n type: entity.type,\n field,\n value,\n isAttrib: true,\n })\n })\n\n // For links, create LinkUpdate objects\n Object.entries(entity.links).forEach(([linkKey, targetEntityIds]) => {\n // Parse the linkKey: \"linkType|inType|outType_direction\"\n const [linkTypePart, direction] = linkKey.split('_')\n const linkTypeParts = linkTypePart.split('|')\n\n if (linkTypeParts.length >= 3) {\n const linkTypeName = linkTypeParts[0]\n const inType = linkTypeParts[1]\n const outType = linkTypeParts[2]\n\n // Reconstruct the full linkType in the required format: name|input_type|output_type\n const linkType = `${linkTypeName}|${inType}|${outType}`\n\n // Determine target entity type based on direction\n const targetEntityType = direction === 'out' ? outType : inType\n\n // Create a unique key for this link operation\n const linkUpdateKey = `${entity.id}-${linkType}-${direction}`\n\n linkUpdatesMap.set(linkUpdateKey, {\n rowId: entity.rowId,\n sourceEntityId: entity.id,\n sourceEntityType: entity.type,\n linkType,\n direction: direction as 'in' | 'out',\n targetEntityType,\n operation: method,\n targetEntityIds: Array.isArray(targetEntityIds) ? targetEntityIds : [],\n })\n }\n })\n })\n\n const allLinkUpdates = Array.from(linkUpdatesMap.values())\n\n // Collect subtasks updates\n const subtasksUpdates: Array<{ taskId: string; subtasks: any[]; previousSubtasks?: any[] }> =\n []\n entitiesToUpdateMap.forEach((entity) => {\n if (entity.subtasks) {\n subtasksUpdates.push({\n taskId: entity.id,\n subtasks: entity.subtasks,\n previousSubtasks: entity.previousSubtasks,\n })\n }\n })\n\n // Make separate calls to update entities, links, and subtasks\n const updatePromises: Promise<void>[] = []\n\n if (allEntityUpdates.length > 0) {\n updatePromises.push(updateEntities(allEntityUpdates))\n }\n\n if (allLinkUpdates.length > 0) {\n updatePromises.push(pasteTableLinks(allLinkUpdates))\n }\n\n if (subtasksUpdates.length > 0) {\n // push undo/redo history entries for subtasks updates\n if (history) {\n subtasksUpdates.forEach(({ taskId, subtasks, previousSubtasks }) => {\n const prev = previousSubtasks || []\n const next = subtasks || []\n const undoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: prev })\n .unwrap()\n .catch(() => {})\n }\n const redoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: next })\n .unwrap()\n .catch(() => {})\n }\n history.pushHistory([undoCallback], [redoCallback])\n })\n }\n // Update subtasks for each task\n const subtasksPromises = subtasksUpdates.map(({ taskId, subtasks }) =>\n updateSubtasks({ projectName, taskId, subtasks }).unwrap(),\n )\n updatePromises.push(...subtasksPromises)\n }\n\n if (updatePromises.length > 0) {\n try {\n await Promise.all(updatePromises)\n } catch (error: any) {\n console.error('Error updating entities:', error)\n clipboardError(`Paste failed: ${error || error?.message || 'Unknown error'}`)\n }\n }\n },\n [\n selectedCells,\n gridMap,\n entitiesMap,\n updateEntities,\n pasteTableLinks,\n columnEnums,\n getEntityById,\n visibleColumns,\n attribFields,\n projectName,\n updateSubtasks,\n history,\n ],\n )\n\n // Set up keyboard event listeners\n useEffect(() => {\n const handleKeyDown = async (e: KeyboardEvent) => {\n // Copy functionality (Ctrl+C or Command+C)\n if ((e.ctrlKey || e.metaKey) && e.key === 'c') {\n const activeEl = document.activeElement as HTMLElement | null\n\n const isTableFocused =\n activeEl?.closest('table') !== null ||\n activeEl?.closest('.table-container') !== null ||\n activeEl?.tagName === 'TD' ||\n activeEl?.tagName === 'TH'\n\n // Check if there's a text selection in an input/textarea/contenteditable\n const isEditableElement =\n activeEl?.tagName === 'INPUT' ||\n activeEl?.tagName === 'TEXTAREA' ||\n activeEl?.isContentEditable\n\n const hasTextSelection = window.getSelection()?.toString().length ?? 0 > 0\n\n // If user has text selected elsewhere, let browser copy that\n if (hasTextSelection && !isTableFocused) {\n return // Let browser handle\n }\n\n // If focus is in an editable element, let browser handle\n if (isEditableElement && !isTableFocused) {\n return // Let browser handle\n }\n // If cells are selected, copy table data (even if focus moved away)\n if (selectedCells.size > 0) {\n await copyToClipboard()\n } else {\n // No cells selected, allowing default browser copy\n }\n }\n // Paste functionality (Ctrl+V or Command+V)\n if ((e.ctrlKey || e.metaKey) && e.key === 'v') {\n // don't execute paste if focus is inside an input, textarea, or content‐editable element\n const activeEl = document.activeElement as HTMLElement | null\n\n if (\n activeEl &&\n (activeEl.tagName === 'INPUT' ||\n activeEl.tagName === 'TEXTAREA' ||\n activeEl.isContentEditable)\n ) {\n // focus is inside an input, textarea, or content-editable element\n const allEntityIds = await doesClipboardContainId()\n // we might still want to paste if the clipboard contains valid entity IDs\n if (allEntityIds) {\n // prevent pasting into input fields and handle as paste on the cell\n e.preventDefault()\n } else {\n // skip pasting\n return\n }\n }\n pasteFromClipboard(Array.from(selectedCells), {\n method: e.shiftKey ? 'merge' : 'replace', // Use shift key to determine paste method\n })\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [copyToClipboard, pasteFromClipboard])\n\n const value = useMemo(\n () => ({\n copyToClipboard,\n pasteFromClipboard,\n exportCSV,\n }),\n [copyToClipboard, pasteFromClipboard],\n )\n\n return <ClipboardContext.Provider value={value}>{children}</ClipboardContext.Provider>\n}\n\nexport const useClipboard = (): ClipboardContextType => {\n const context = useContext(ClipboardContext)\n if (context === undefined) {\n throw new Error('useClipboard must be used within a ClipboardProvider')\n }\n return context\n}\n"],"names":["ClipboardContext","createContext","DISPLAY_PREFERRED_COLS","DISPLAY_COLUMN_FIELDS","ClipboardProvider","children","entitiesMap","columnEnums","columnReadOnly","visibleColumns","selectedCells","gridMap","focusedCellId","useSelectionCellsContext","updateEntities","history","useCellEditing","pasteTableLinks","usePasteLinks","getEntityById","attribFields","tableData","useProjectTableContext","displayRowsById","useMemo","map","walk","rows","row","projectName","useProjectContext","updateSubtasks","useUpdateSubtasksMutation","getSelectionData","useCallback","selected","config","headers","fullRow","visibleColumnIds","col","id","ROW_SELECTION_COLUMN_ID","cellsByRow","cellId","position","parseCellId","rowId","colId","sortedRows","a","b","indexA","indexB","clipboardText","firstRowId","colIds","headerValues","columnName","entity","displayRow","filteredColIds","rowValues","cellValue","getLinkEntityIdsByColumnId","subtasks","getCellValue","subtasksToTSV","comments","commentsToText","sourceField","foundValue","folder","parents","displayValue","field","f","getEntityPath","resolvedSubType","escaped","needsQuoting","error","doesClipboardContainId","getClipboardString","parsedData","parseClipboardText","value","v","validateEntityId","copyToClipboard","clipboardError","exportCSV","blob","url","selectedCount","pasteFromClipboard","method","isSubtasksData","subtasksClipboardText","isSubtasksTSV","isSingleCellValue","mapClipboardToVisibleColumns","clipboardRow","clipboardHeaders","mappedValues","header","index","matchingColId","firstRow","selectedColIds","rowIndex","isFolder","getEntityDataById","pasteRowIndex","pasteValue","validateClipboardData","entitiesToUpdateMap","colIndex","subtaskGroups","isFromSingleSourceTask","allLines","firstLine","dataLines","groupMap","groupOrder","line","parsed","tsvToSubtasks","subtask","groupKey","taskId","taskName","entityType","actualEntityId","entityKey","entityData","existingSubtasks","subtasksToProcess","groupIndex","pasteColIndex","newSubtasks","st","getEntityId","sanitizeSubtaskName","mergedSubtasks","existingIdentifiers","label","name","newSubtask","identifier","replacedSubtasks","newSt","existingMatch","est","isAttrib","isLink","fieldValueType","fieldName","attribField","firstVisibleColIndex","allGridColumns","startGridPos","clipboardColIndex","fieldToUpdate","processedValue","processFieldValue","_link","linkType","inType","outType","direction","allEntityUpdates","linkUpdatesMap","linkKey","targetEntityIds","linkTypePart","linkTypeParts","linkTypeName","targetEntityType","linkUpdateKey","allLinkUpdates","subtasksUpdates","updatePromises","previousSubtasks","prev","next","undoCallback","redoCallback","subtasksPromises","useEffect","handleKeyDown","e","activeEl","isTableFocused","isEditableElement","jsx","useClipboard","context","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"ClipboardContext.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ClipboardContext.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useMemo } from 'react'\n\n// Contexts\nimport { ROW_SELECTION_COLUMN_ID } from '../constants'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport { useCellEditing } from './CellEditingContext'\nimport { useProjectContext } from '@shared/context/ProjectContext'\n\n// Utils\nimport {\n getCellValue,\n getEntityDataById,\n getLinkEntityIdsByColumnId,\n parseCellId,\n} from '../utils/cellUtils'\n\n// Types\nimport { TableRow } from '../types/table'\nimport { EntityUpdate } from '../hooks/useUpdateTableData'\nimport usePasteLinks, { LinkUpdate } from '../hooks/usePasteLinks'\nimport { useUpdateSubtasksMutation } from '@shared/api'\n\n// Import from the new modular files\nimport {\n getEntityPath,\n parseClipboardText,\n clipboardError,\n processFieldValue,\n subtasksToTSV,\n isSubtasksTSV,\n tsvToSubtasks,\n sanitizeSubtaskName,\n commentsToText,\n} from './clipboard'\nimport { validateClipboardData } from './clipboard/clipboardValidation'\nimport { ClipboardContextType, ClipboardProviderProps } from './clipboard/clipboardTypes'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport { validateEntityId, getEntityId } from '@shared/util'\n\nconst ClipboardContext = createContext<ClipboardContextType | undefined>(undefined)\n\nconst DISPLAY_PREFERRED_COLS = new Set([\n 'version',\n 'version_entity',\n 'product',\n 'productBaseType',\n 'task_entity',\n])\n\nconst DISPLAY_COLUMN_FIELDS: Record<string, string> = {\n folder_entity: 'folder',\n task_entity: 'taskLabel',\n version_entity: 'versionName',\n}\n\nexport const ClipboardProvider: React.FC<ClipboardProviderProps> = ({\n children,\n entitiesMap,\n columnEnums,\n columnReadOnly,\n visibleColumns,\n}) => {\n // Get selection information from SelectionContext\n const { selectedCells, gridMap, focusedCellId } = useSelectionCellsContext()\n const { updateEntities, history } = useCellEditing()\n const { pasteTableLinks } = usePasteLinks()\n const { getEntityById, attribFields, tableData } = useProjectTableContext()\n\n const displayRowsById = useMemo(() => {\n const map = new Map<string, TableRow>()\n const walk = (rows: TableRow[]) => {\n for (const row of rows) {\n map.set(row.id, row)\n if (row.subRows?.length) walk(row.subRows as TableRow[])\n }\n }\n walk(tableData || [])\n return map\n }, [tableData])\n const { projectName } = useProjectContext()\n const [updateSubtasks] = useUpdateSubtasksMutation()\n\n const getSelectionData = useCallback(\n async (selected: string[], config?: { headers?: boolean; fullRow?: boolean }) => {\n const { headers, fullRow } = config || {}\n try {\n // Get visible columns in display order, excluding row selection\n const visibleColumnIds = visibleColumns\n .map((col) => col.id)\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n\n // Organize selected cells by row, filtering to only visible columns\n const cellsByRow = new Map<string, Set<string>>()\n\n // Parse all selected cells and organize by rowId and colId\n selected.forEach((cellId) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n const { rowId, colId } = position\n if (colId === ROW_SELECTION_COLUMN_ID || !visibleColumnIds.includes(colId)) return\n\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n\n cellsByRow.get(rowId)?.add(colId)\n })\n\n if (fullRow) {\n const selectedRows = selected\n .filter(\n (cellId) =>\n parseCellId(cellId)?.rowId &&\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID,\n )\n .map((cellId) => parseCellId(cellId)?.rowId) as string[]\n\n // select the whole row\n // For rows with selection cells, add all available columns\n selectedRows.forEach((rowId) => {\n // add the rowId if it doesn't exist\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n const allColumns = Array.from(gridMap.colIdToIndex.keys())\n allColumns.forEach((colId) => {\n cellsByRow.get(rowId)?.add(colId)\n })\n })\n }\n\n // Get sorted row IDs based on their index in the grid\n const sortedRows = Array.from(cellsByRow.keys()).sort((a, b) => {\n const indexA = gridMap.rowIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.rowIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Build clipboard text\n let clipboardText = ''\n\n // Get the first row to determine columns\n const firstRowId = sortedRows[0]\n if (!firstRowId) return ''\n\n // Get all column IDs for the first row, sorted by their index in the grid\n const colIds = Array.from(cellsByRow.get(firstRowId) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Include headers if requested\n if (headers && colIds.length > 0) {\n const headerValues: string[] = []\n\n for (const colId of colIds) {\n // Use colId as the column name since we don't have direct access to column names\n const columnName = colId\n headerValues.push(`${columnName.replace(/\"/g, '\"\"')}`)\n }\n\n clipboardText += headerValues.join('\\t') + '\\n'\n }\n\n for (const rowId of sortedRows) {\n // Get the entity for this row\n const entity = getEntityById(rowId)\n\n if (!entity) {\n console.warn(`Entity not found for rowId: ${rowId}`)\n continue\n }\n\n const displayRow = displayRowsById.get(rowId)\n\n // Get all column IDs for this row, sorted by their index in the grid\n const colIds = Array.from(cellsByRow.get(rowId) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Filter out the row selection column from the copied data\n const filteredColIds = colIds.filter((colId) => colId !== ROW_SELECTION_COLUMN_ID)\n\n const rowValues: string[] = []\n\n // For each column in this row\n for (const colId of filteredColIds) {\n // Determine the value based on the column ID\n let cellValue = ''\n\n // special handling of link cells\n if (colId.startsWith('link_')) {\n // @ts-expect-error - only complaining about missing __typename\n cellValue = getLinkEntityIdsByColumnId(entity.links, colId)\n } else if (colId === 'subtasks') {\n // Special handling for subtasks - convert to TSV format\n // @ts-ignore\n const subtasks = getCellValue(entity, colId) || []\n cellValue = subtasksToTSV(subtasks, entity.id, entity.name)\n } else if (colId === 'comments') {\n // @ts-ignore\n const comments = getCellValue(entity, 'latestComments') || []\n cellValue = commentsToText(comments)\n } else {\n // @ts-ignore\n const sourceField = DISPLAY_COLUMN_FIELDS[colId] || colId\n let foundValue = getCellValue(entity, sourceField)\n\n // folder is an object on some entities (product/task) or nested under\n // product (version) - copy the display name the cell shows,\n // falling back to the last parent (parent folder name on tasks/folders)\n if (colId === 'folder_entity' && typeof foundValue !== 'string') {\n const folder = foundValue || (entity as any).product?.folder\n const parents = 'parents' in entity ? entity.parents : undefined\n foundValue = folder?.label || folder?.name || parents?.[parents.length - 1] || ''\n }\n\n // Raw entity nodes (flat lists) either lack display-computed columns or hold a\n // non-string value (product/task object, numeric version) — prefer the built\n // display row, which is exactly what the cell shows.\n if (\n displayRow &&\n (DISPLAY_PREFERRED_COLS.has(colId) ||\n foundValue === undefined ||\n foundValue === null ||\n foundValue === '' ||\n typeof foundValue === 'object')\n ) {\n const displayValue = getCellValue(displayRow, sourceField)\n if (displayValue !== undefined && displayValue !== null && displayValue !== '') {\n foundValue = displayValue\n }\n }\n\n if (!foundValue) {\n // we should look for the default value set out in attribFields\n const field = attribFields.find((f) => f.name === colId.replace('attrib_', ''))\n if (field && field.data.type === 'boolean') {\n foundValue = false // default boolean value\n } else if (field && field.data.type.includes('list_of')) {\n foundValue = [] // default list value\n }\n }\n\n // convert to string if foundValue is not undefined or null use empty string otherwise\n cellValue = foundValue !== undefined && foundValue !== null ? String(foundValue) : ''\n\n // Hierarchical tables resolve a full path; flat lists (raw nodes keyed by row id)\n // can't, so fall back to the built display row label/name the cell shows\n if (colId === 'name') {\n cellValue =\n getEntityPath(entity.entityId || entity.id, entitiesMap) ||\n (displayRow as any)?.label ||\n displayRow?.name ||\n (entity as any).label ||\n entity.name ||\n ''\n }\n\n if (colId === 'subType') {\n // built display rows resolve subType (folder/task/product); raw nodes fall back to type fields\n const resolvedSubType = (displayRow as any)?.subType ?? (entity as any).subType\n if (typeof resolvedSubType === 'string' && resolvedSubType) {\n cellValue = resolvedSubType\n } else {\n if ('folderType' in entity) {\n cellValue = entity.folderType || ''\n }\n if ('taskType' in entity) {\n cellValue = entity.taskType || ''\n }\n }\n }\n }\n\n // Wrap multi-line / tab / quote values in quotes so spreadsheets keep them in one\n // cell. Subtasks embed tabs+newlines as real grid structure for paste round-trips —\n // leave them raw so they stay multi-row/column.\n const escaped = cellValue.replace(/\"/g, '\"\"')\n const needsQuoting =\n colId !== 'subtasks' &&\n (cellValue.includes('\\n') || cellValue.includes('\\t') || cellValue.includes('\"'))\n rowValues.push(needsQuoting ? `\"${escaped}\"` : escaped)\n }\n\n // Add row to clipboard text\n clipboardText += rowValues.join('\\t') + '\\n'\n }\n\n return clipboardText\n } catch (error) {\n console.error('Failed to copy to clipboard:', error)\n }\n },\n [\n selectedCells,\n focusedCellId,\n gridMap,\n entitiesMap,\n getEntityById,\n visibleColumns,\n displayRowsById,\n ],\n )\n\n const doesClipboardContainId = async () => {\n // check if the clipboard contains a valid ID\n const clipboardText = await getClipboardString()\n if (!clipboardText) return false\n const parsedData = parseClipboardText(clipboardText)\n if (parsedData.length === 0) return false\n return parsedData.every((row) => {\n return row.values.every((value) => value.split(',').every((v) => validateEntityId(v)))\n })\n }\n\n const copyToClipboard: ClipboardContextType['copyToClipboard'] = useCallback(\n async (selected, fullRow) => {\n selected = selected || Array.from(selectedCells)\n if (!selected.length) return\n const clipboardText = await getSelectionData(selected, { fullRow })\n if (!clipboardText) {\n return\n }\n if (!navigator.clipboard) {\n clipboardError('Clipboard API not supported in this browser.')\n return\n }\n if (!window.isSecureContext) {\n clipboardError('Clipboard operations require a secure HTTPS context.')\n return\n }\n try {\n await navigator.clipboard.writeText(clipboardText)\n } catch (error: any) {\n clipboardError(`Failed to copy to clipboard: ${error.message}`)\n }\n },\n [selectedCells, entitiesMap, gridMap],\n )\n\n const exportCSV: ClipboardContextType['exportCSV'] = useCallback(\n async (selected, projectName, fullRow) => {\n selected = selected || Array.from(selectedCells)\n if (!selected.length) return\n\n try {\n // Get clipboard text with headers included for CSV export\n const clipboardText = await getSelectionData(selected, { headers: true, fullRow })\n if (!clipboardText) return\n\n // create a csv file and download it\n const blob = new Blob([clipboardText], { type: 'text/csv' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n const selectedCount = selected.length\n a.download = `${projectName}-export-${selectedCount}_cells-${new Date()\n .toISOString()\n .slice(0, 10)}.csv`\n a.click()\n URL.revokeObjectURL(url)\n } catch (error) {\n console.error('Failed to copy to clipboard:', error)\n }\n },\n [selectedCells, entitiesMap, gridMap, getSelectionData],\n )\n\n const getClipboardString = async (): Promise<string | void> => {\n if (!navigator.clipboard) {\n clipboardError('Clipboard API not supported in this browser.')\n return\n }\n if (!window.isSecureContext) {\n clipboardError('Clipboard operations require a secure HTTPS context.')\n return\n }\n let clipboardText: string\n try {\n clipboardText = await navigator.clipboard.readText()\n return clipboardText\n } catch (error: any) {\n clipboardError(`Failed to read from clipboard: ${error.message}`)\n return\n }\n }\n\n const pasteFromClipboard: ClipboardContextType['pasteFromClipboard'] = useCallback(\n async (selected, config) => {\n const { method = 'replace' } = config || {}\n if (!selected.length) return\n\n const clipboardText = await getClipboardString()\n if (!clipboardText) return\n\n // Check if this is subtasks TSV data first, before normal parsing\n let isSubtasksData = false\n let subtasksClipboardText = clipboardText\n if (isSubtasksTSV(clipboardText)) {\n isSubtasksData = true\n }\n\n // Parse the clipboard text\n const parsedData = parseClipboardText(clipboardText)\n if (!parsedData.length) return\n\n // Determine if we have a single value in the clipboard (one row, one column)\n const isSingleCellValue = parsedData.length === 1 && parsedData[0].values.length === 1\n\n // Get visible columns in display order, excluding row selection\n const visibleColumnIds = visibleColumns\n .map((col) => col.id)\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n\n // Helper function to map clipboard values to visible columns\n const mapClipboardToVisibleColumns = (\n clipboardRow: any,\n visibleColumnIds: string[],\n clipboardHeaders?: string[],\n ) => {\n const mappedValues: Record<string, string> = {}\n\n if (clipboardHeaders && clipboardHeaders.length > 0) {\n // Map by header names when available\n clipboardHeaders.forEach((header: string, index: number) => {\n const matchingColId = visibleColumnIds.find(\n (colId) =>\n colId === header ||\n colId.replace('attrib_', '') === header ||\n colId === `attrib_${header}` ||\n colId.toLowerCase() === header.toLowerCase(),\n )\n\n if (matchingColId && index < clipboardRow.values.length) {\n mappedValues[matchingColId] = clipboardRow.values[index]\n }\n })\n } else {\n // Fallback: map by position, but only to visible columns\n visibleColumnIds.forEach((colId, index) => {\n if (index < clipboardRow.values.length) {\n mappedValues[colId] = clipboardRow.values[index]\n }\n })\n }\n\n return mappedValues\n }\n\n // Extract headers if they exist (assuming first row might be headers from external source)\n // You might need to detect this differently based on your clipboard format\n const clipboardHeaders = parsedData[0]?.colIds || undefined\n\n // Organize selected cells by row, filtering to only visible columns\n const cellsByRow = new Map<string, Set<string>>()\n\n Array.from(selected).forEach((cellId) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n const { rowId, colId } = position\n if (colId === ROW_SELECTION_COLUMN_ID || !visibleColumnIds.includes(colId)) return\n\n if (!cellsByRow.has(rowId)) {\n cellsByRow.set(rowId, new Set())\n }\n cellsByRow.get(rowId)?.add(colId)\n })\n\n // Get sorted row IDs and column IDs\n const sortedRows = Array.from(cellsByRow.keys()).sort((a, b) => {\n const indexA = gridMap.rowIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.rowIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n const firstRow = sortedRows[0]\n const selectedColIds = Array.from(cellsByRow.get(firstRow) || []).sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // First pass: validate all values\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const isFolder = getEntityDataById<'folder'>(rowId, entitiesMap)?.entityType === 'folder'\n\n const pasteRowIndex = rowIndex % parsedData.length\n const clipboardRow = parsedData[pasteRowIndex]\n\n // Map clipboard data to visible columns\n const mappedValues = isSingleCellValue\n ? { [selectedColIds[0]]: parsedData[0].values[0] }\n : mapClipboardToVisibleColumns(clipboardRow, selectedColIds, clipboardHeaders)\n\n // Validate each mapped value\n for (const colId of selectedColIds) {\n const pasteValue = mappedValues[colId] || ''\n\n const isValid = validateClipboardData({\n colId,\n isFolder,\n pasteValue,\n parsedData,\n columnEnums,\n columnReadOnly,\n rowIndex,\n colIndex: selectedColIds.indexOf(colId),\n isSingleCellValue,\n attribFields,\n })\n\n if (!isValid) return\n }\n }\n\n // Create a map to consolidate updates for the same entity\n const entitiesToUpdateMap = new Map<\n string,\n {\n rowId: string\n id: string\n type: string\n fields: Record<string, any>\n attrib: Record<string, any>\n links: Record<string, string[]>\n subtasks?: any[]\n previousSubtasks?: any[]\n }\n >()\n\n // For each column, prepare updates\n for (let colIndex = 0; colIndex < selectedColIds.length; colIndex++) {\n const colId = selectedColIds[colIndex]\n\n // Skip special handling for 'name' which we don't want to paste\n if (colId === 'name') continue\n\n // Special handling for subtasks column\n if (colId === 'subtasks') {\n // For subtasks, group them by source task so each group can be applied to different cells\n let subtaskGroups: Array<{ taskId?: string; taskName?: string; subtasks: any[] }> = []\n let isFromSingleSourceTask = false\n\n if (isSubtasksData) {\n // Parse all subtask data to understand the source grouping\n const allLines = subtasksClipboardText.trim().split('\\n')\n\n // Check for header\n const firstLine = allLines[0].toLowerCase()\n const hasHeader =\n firstLine.includes('label') &&\n firstLine.includes('name') &&\n firstLine.includes('start date') &&\n firstLine.includes('end date') &&\n firstLine.includes('assignees') &&\n firstLine.includes('status')\n\n const dataLines = hasHeader ? allLines.slice(1) : allLines\n\n // Parse all lines and group by source taskId\n const groupMap = new Map<string, any[]>()\n const groupOrder: string[] = []\n\n dataLines.forEach((line) => {\n const parsed = tsvToSubtasks(line)\n if (parsed.length === 0) return\n\n const subtask = parsed[0]\n const groupKey = `${subtask.taskId || ''}|${subtask.taskName || ''}`\n\n if (!groupMap.has(groupKey)) {\n groupMap.set(groupKey, [])\n groupOrder.push(groupKey)\n }\n groupMap.get(groupKey)!.push(subtask)\n })\n\n // Create groups in order\n groupOrder.forEach((groupKey) => {\n const [taskId, taskName] = groupKey.split('|')\n subtaskGroups.push({\n taskId: taskId || undefined,\n taskName: taskName || undefined,\n subtasks: groupMap.get(groupKey) || [],\n })\n })\n\n // Check if all subtasks come from the same source task\n isFromSingleSourceTask = subtaskGroups.length <= 1\n }\n\n // Handle subtasks paste for each selected row\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const entityType = getEntityDataById(rowId, entitiesMap)?.entityType\n\n // Subtasks only apply to tasks\n if (entityType !== 'task') continue\n\n // Get entity to access entityId (important for list items where rowId is list item ID)\n const entity = getEntityById(rowId)\n const actualEntityId = entity?.entityId || rowId\n\n // Get or create entity entry in the map\n const entityKey = `${rowId}-${entityType}`\n if (!entitiesToUpdateMap.has(entityKey)) {\n entitiesToUpdateMap.set(entityKey, {\n rowId,\n id: actualEntityId,\n type: entityType,\n fields: {},\n attrib: {},\n links: {},\n })\n }\n\n const entityData = entitiesToUpdateMap.get(entityKey)!\n // Get existing subtasks from entity\n const existingSubtasks = (entity && 'subtasks' in entity && entity.subtasks) || []\n // store previous subtasks for history/undo\n entityData.previousSubtasks = existingSubtasks\n\n let subtasksToProcess: any[] = []\n\n if (isSubtasksData) {\n if (isFromSingleSourceTask && subtaskGroups.length > 0) {\n // All subtasks from one source - apply to all cells\n subtasksToProcess = subtaskGroups[0].subtasks\n } else if (subtaskGroups.length > 0) {\n // Multiple groups - distribute by row (like regular data does with modulo)\n const groupIndex = rowIndex % subtaskGroups.length\n subtasksToProcess = subtaskGroups[groupIndex].subtasks\n }\n } else {\n // For parsed clipboard data, get the appropriate row\n if (isSingleCellValue) {\n const pasteValue = parsedData[0].values[0]\n subtasksToProcess = tsvToSubtasks(pasteValue)\n } else {\n const pasteRowIndex = rowIndex % parsedData.length\n const clipboardRow = parsedData[pasteRowIndex]\n const pasteColIndex = colIndex % clipboardRow.values.length\n const pasteValue = clipboardRow.values[pasteColIndex]\n subtasksToProcess = tsvToSubtasks(pasteValue)\n }\n }\n\n // Skip if no subtasks to process\n if (!subtasksToProcess || subtasksToProcess.length === 0) continue\n\n // Create normalized subtasks from parsed data\n const newSubtasks = subtasksToProcess.map((st, index) => ({\n id: getEntityId(),\n name: sanitizeSubtaskName(st.name || st.label || `Subtask ${index + 1}`),\n label: st.label || '',\n assignees: st.assignees || [],\n description: st.label || '',\n startDate: st.startDate,\n endDate: st.endDate,\n isDone: st.isDone || false,\n }))\n\n // Handle merge vs replace\n if (method === 'merge') {\n // Merge new subtasks with existing ones, removing duplicates by label and name\n const mergedSubtasks = [...existingSubtasks]\n const existingIdentifiers = new Set(\n existingSubtasks.map((st) => {\n const label = (st.label || '').toLowerCase()\n const name = (st.name || '').toLowerCase()\n return `${label}|${name}`\n }),\n )\n\n // Add new subtasks that don't already exist\n for (const newSubtask of newSubtasks) {\n const label = (newSubtask.label || '').toLowerCase()\n const name = (newSubtask.name || '').toLowerCase()\n const identifier = `${label}|${name}`\n if (!existingIdentifiers.has(identifier)) {\n mergedSubtasks.push(newSubtask)\n }\n }\n entityData.subtasks = mergedSubtasks\n } else {\n // Replace mode: use new subtasks, preserving IDs for any matching label and name\n const replacedSubtasks = newSubtasks.map((newSt) => {\n // Try to find existing subtask with matching label and name to preserve ID\n const existingMatch = existingSubtasks.find(\n (est) =>\n (est.label || '').toLowerCase() === (newSt.label || '').toLowerCase() &&\n (est.name || '').toLowerCase() === (newSt.name || '').toLowerCase(),\n )\n return {\n ...newSt,\n id: existingMatch?.id || newSt.id,\n }\n })\n entityData.subtasks = replacedSubtasks\n }\n }\n continue\n }\n\n // Check if this is an attribute field by examining the first entity\n let isAttrib = false,\n isLink = false\n // Check if the field potentially contains array values\n let fieldValueType: 'string' | 'number' | 'boolean' | 'array' = 'string'\n\n if (sortedRows.length > 0) {\n const firstRowId = sortedRows[0]\n const entity = getEntityById(firstRowId)\n if (entity) {\n isAttrib = colId.startsWith('attrib_')\n isLink = colId.startsWith('link_')\n\n // Determine field type based on type or attrib type\n if (colId === 'status' || colId === 'subType') {\n // status and subType are strings\n fieldValueType = 'string'\n // special case to avoid treating subType as attrib (not sure if this is needed)\n isAttrib = false\n } else if (colId === 'tags' || colId === 'assignees') {\n // tags and assignees are always arrays\n fieldValueType = 'array'\n } else if (isAttrib) {\n // find type based on attribFields\n const fieldName = colId.replace('attrib_', '')\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (attribField) {\n const dataType = attribField.data.type\n switch (dataType) {\n case 'boolean':\n fieldValueType = 'boolean'\n break\n case 'float':\n case 'integer':\n fieldValueType = 'number'\n break\n case 'list_of_strings':\n case 'list_of_any':\n case 'list_of_integers':\n case 'list_of_submodels':\n fieldValueType = 'array'\n break\n default:\n // everything else is string\n fieldValueType = 'string'\n }\n }\n } else if (isLink) {\n // links are always arrays\n fieldValueType = 'array'\n }\n }\n }\n\n // Process each row individually\n for (let rowIndex = 0; rowIndex < sortedRows.length; rowIndex++) {\n const rowId = sortedRows[rowIndex]\n const entityType = getEntityDataById(rowId, entitiesMap)?.entityType\n const isFolder = entityType === 'folder'\n\n // Get the appropriate value from the clipboard data\n let pasteValue\n if (isSingleCellValue) {\n pasteValue = parsedData[0].values[0]\n } else {\n const pasteRowIndex = rowIndex % parsedData.length\n // Map visible column index to clipboard data index\n // When clipboard contains hidden columns, we need to skip over values\n // that correspond to hidden columns when pasting to visible columns\n const clipboardRow = parsedData[pasteRowIndex]\n\n // If clipboard has more values than visible columns being pasted to,\n // it likely contains hidden column data. We need to reconstruct the original\n // column order that was copied by finding which columns would have been included.\n if (clipboardRow.values.length > selectedColIds.length) {\n // The clipboard data was created from consecutive columns in grid order.\n // We need to find which consecutive columns would result in this clipboard data.\n // Start from the first visible column and extend the range to match clipboard length.\n const firstVisibleColIndex = gridMap.colIdToIndex.get(selectedColIds[0]) ?? 0\n\n // Get all columns sorted by grid position\n const allGridColumns = Array.from(gridMap.colIdToIndex.keys())\n .filter((id) => id !== ROW_SELECTION_COLUMN_ID)\n .sort((a, b) => {\n const indexA = gridMap.colIdToIndex.get(a) ?? Infinity\n const indexB = gridMap.colIdToIndex.get(b) ?? Infinity\n return indexA - indexB\n })\n\n // Find the starting position in the grid columns array\n const startGridPos = allGridColumns.findIndex(\n (id) => gridMap.colIdToIndex.get(id) === firstVisibleColIndex,\n )\n\n // The original copied columns are the consecutive ones starting from this position\n const originalCopiedColumns = allGridColumns.slice(\n startGridPos,\n startGridPos + clipboardRow.values.length,\n )\n\n // Find this column's position in the original copied columns\n const clipboardColIndex = originalCopiedColumns.indexOf(colId)\n pasteValue =\n clipboardRow.values[clipboardColIndex] ||\n clipboardRow.values[clipboardColIndex % clipboardRow.values.length]\n // Pasting value from hidden columns detection\n } else {\n // Normal case: map clipboard column index using modulo\n const pasteColIndex = colIndex % clipboardRow.values.length\n pasteValue = clipboardRow.values[pasteColIndex]\n // Pasting value normally\n }\n }\n\n let fieldToUpdate = colId.split('_').pop() || colId\n\n // Special handling for subType (convert to folderType or taskType)\n if (colId === 'subType') {\n fieldToUpdate = isFolder ? 'folderType' : 'taskType'\n isAttrib = false\n\n // Skip empty values for enum fields\n if (!pasteValue) continue\n }\n\n // Process the value based on its type\n const processedValue = processFieldValue(pasteValue, fieldValueType)\n\n // Get entity to access entityId (important for list items where rowId is list item ID)\n const entity = getEntityById(rowId)\n const actualEntityId = entity?.entityId || rowId\n\n // Get or create entity entry in the map\n const entityKey = `${rowId}-${entityType}`\n if (!entitiesToUpdateMap.has(entityKey) && entityType) {\n entitiesToUpdateMap.set(entityKey, {\n rowId,\n id: actualEntityId,\n type: entityType,\n fields: {},\n attrib: {},\n links: {},\n })\n }\n\n const entityData = entitiesToUpdateMap.get(entityKey)!\n\n // Add the field to the appropriate place\n if (isLink) {\n const [_link, linkType, inType, outType, direction] = colId.split('_')\n // final-task|folder|task\n entityData.links[`${linkType}|${inType}|${outType}_${direction}`] = processedValue\n } else if (isAttrib) {\n entityData.attrib[fieldToUpdate] = processedValue\n } else {\n entityData.fields[fieldToUpdate] = processedValue\n }\n }\n }\n\n // Convert the consolidated map to EntityUpdate array and LinkUpdate array\n const allEntityUpdates: EntityUpdate[] = []\n const linkUpdatesMap = new Map<string, LinkUpdate>()\n\n entitiesToUpdateMap.forEach((entity) => {\n // For regular fields, create one update per field\n Object.entries(entity.fields).forEach(([field, value]) => {\n allEntityUpdates.push({\n rowId: entity.rowId,\n id: entity.id,\n type: entity.type,\n field,\n value,\n })\n })\n\n // For attributes, create one update per attribute\n Object.entries(entity.attrib).forEach(([field, value]) => {\n allEntityUpdates.push({\n rowId: entity.rowId,\n id: entity.id,\n type: entity.type,\n field,\n value,\n isAttrib: true,\n })\n })\n\n // For links, create LinkUpdate objects\n Object.entries(entity.links).forEach(([linkKey, targetEntityIds]) => {\n // Parse the linkKey: \"linkType|inType|outType_direction\"\n const [linkTypePart, direction] = linkKey.split('_')\n const linkTypeParts = linkTypePart.split('|')\n\n if (linkTypeParts.length >= 3) {\n const linkTypeName = linkTypeParts[0]\n const inType = linkTypeParts[1]\n const outType = linkTypeParts[2]\n\n // Reconstruct the full linkType in the required format: name|input_type|output_type\n const linkType = `${linkTypeName}|${inType}|${outType}`\n\n // Determine target entity type based on direction\n const targetEntityType = direction === 'out' ? outType : inType\n\n // Create a unique key for this link operation\n const linkUpdateKey = `${entity.id}-${linkType}-${direction}`\n\n linkUpdatesMap.set(linkUpdateKey, {\n rowId: entity.rowId,\n sourceEntityId: entity.id,\n sourceEntityType: entity.type,\n linkType,\n direction: direction as 'in' | 'out',\n targetEntityType,\n operation: method,\n targetEntityIds: Array.isArray(targetEntityIds) ? targetEntityIds : [],\n })\n }\n })\n })\n\n const allLinkUpdates = Array.from(linkUpdatesMap.values())\n\n // Collect subtasks updates\n const subtasksUpdates: Array<{ taskId: string; subtasks: any[]; previousSubtasks?: any[] }> =\n []\n entitiesToUpdateMap.forEach((entity) => {\n if (entity.subtasks) {\n subtasksUpdates.push({\n taskId: entity.id,\n subtasks: entity.subtasks,\n previousSubtasks: entity.previousSubtasks,\n })\n }\n })\n\n // Make separate calls to update entities, links, and subtasks\n const updatePromises: Promise<void>[] = []\n\n if (allEntityUpdates.length > 0) {\n updatePromises.push(updateEntities(allEntityUpdates))\n }\n\n if (allLinkUpdates.length > 0) {\n updatePromises.push(pasteTableLinks(allLinkUpdates))\n }\n\n if (subtasksUpdates.length > 0) {\n // push undo/redo history entries for subtasks updates\n if (history) {\n subtasksUpdates.forEach(({ taskId, subtasks, previousSubtasks }) => {\n const prev = previousSubtasks || []\n const next = subtasks || []\n const undoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: prev })\n .unwrap()\n .catch(() => {})\n }\n const redoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: next })\n .unwrap()\n .catch(() => {})\n }\n history.pushHistory([undoCallback], [redoCallback])\n })\n }\n // Update subtasks for each task\n const subtasksPromises = subtasksUpdates.map(({ taskId, subtasks }) =>\n updateSubtasks({ projectName, taskId, subtasks }).unwrap(),\n )\n updatePromises.push(...subtasksPromises)\n }\n\n if (updatePromises.length > 0) {\n try {\n await Promise.all(updatePromises)\n } catch (error: any) {\n console.error('Error updating entities:', error)\n clipboardError(`Paste failed: ${error || error?.message || 'Unknown error'}`)\n }\n }\n },\n [\n selectedCells,\n gridMap,\n entitiesMap,\n updateEntities,\n pasteTableLinks,\n columnEnums,\n getEntityById,\n visibleColumns,\n attribFields,\n projectName,\n updateSubtasks,\n history,\n ],\n )\n\n // Set up keyboard event listeners\n useEffect(() => {\n const handleKeyDown = async (e: KeyboardEvent) => {\n // Copy functionality (Ctrl+C or Command+C)\n if ((e.ctrlKey || e.metaKey) && e.key === 'c') {\n const activeEl = document.activeElement as HTMLElement | null\n\n const isTableFocused =\n activeEl?.closest('table') !== null ||\n activeEl?.closest('.table-container') !== null ||\n activeEl?.tagName === 'TD' ||\n activeEl?.tagName === 'TH'\n\n // Check if there's a text selection in an input/textarea/contenteditable\n const isEditableElement =\n activeEl?.tagName === 'INPUT' ||\n activeEl?.tagName === 'TEXTAREA' ||\n activeEl?.isContentEditable\n\n const hasTextSelection = window.getSelection()?.toString().length ?? 0 > 0\n\n // If user has text selected elsewhere, let browser copy that\n if (hasTextSelection && !isTableFocused) {\n return // Let browser handle\n }\n\n // If focus is in an editable element, let browser handle\n if (isEditableElement && !isTableFocused) {\n return // Let browser handle\n }\n // If cells are selected, copy table data (even if focus moved away)\n if (selectedCells.size > 0) {\n await copyToClipboard()\n } else {\n // No cells selected, allowing default browser copy\n }\n }\n // Paste functionality (Ctrl+V or Command+V)\n if ((e.ctrlKey || e.metaKey) && e.key === 'v') {\n // don't execute paste if focus is inside an input, textarea, or content‐editable element\n const activeEl = document.activeElement as HTMLElement | null\n\n if (\n activeEl &&\n (activeEl.tagName === 'INPUT' ||\n activeEl.tagName === 'TEXTAREA' ||\n activeEl.isContentEditable)\n ) {\n // focus is inside an input, textarea, or content-editable element\n const allEntityIds = await doesClipboardContainId()\n // we might still want to paste if the clipboard contains valid entity IDs\n if (allEntityIds) {\n // prevent pasting into input fields and handle as paste on the cell\n e.preventDefault()\n } else {\n // skip pasting\n return\n }\n }\n pasteFromClipboard(Array.from(selectedCells), {\n method: e.shiftKey ? 'merge' : 'replace', // Use shift key to determine paste method\n })\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [copyToClipboard, pasteFromClipboard])\n\n const value = useMemo(\n () => ({\n copyToClipboard,\n pasteFromClipboard,\n exportCSV,\n }),\n [copyToClipboard, pasteFromClipboard],\n )\n\n return <ClipboardContext.Provider value={value}>{children}</ClipboardContext.Provider>\n}\n\nexport const useClipboard = (): ClipboardContextType => {\n const context = useContext(ClipboardContext)\n if (context === undefined) {\n throw new Error('useClipboard must be used within a ClipboardProvider')\n }\n return context\n}\n"],"names":["ClipboardContext","createContext","DISPLAY_PREFERRED_COLS","DISPLAY_COLUMN_FIELDS","ClipboardProvider","children","entitiesMap","columnEnums","columnReadOnly","visibleColumns","selectedCells","gridMap","focusedCellId","useSelectionCellsContext","updateEntities","history","useCellEditing","pasteTableLinks","usePasteLinks","getEntityById","attribFields","tableData","useProjectTableContext","displayRowsById","useMemo","map","walk","rows","row","projectName","useProjectContext","updateSubtasks","useUpdateSubtasksMutation","getSelectionData","useCallback","selected","config","headers","fullRow","visibleColumnIds","col","id","ROW_SELECTION_COLUMN_ID","cellsByRow","cellId","position","parseCellId","rowId","colId","sortedRows","a","b","indexA","indexB","clipboardText","firstRowId","colIds","headerValues","columnName","entity","displayRow","filteredColIds","rowValues","cellValue","getLinkEntityIdsByColumnId","subtasks","getCellValue","subtasksToTSV","comments","commentsToText","sourceField","foundValue","folder","parents","displayValue","field","f","getEntityPath","resolvedSubType","escaped","needsQuoting","error","doesClipboardContainId","getClipboardString","parsedData","parseClipboardText","value","v","validateEntityId","copyToClipboard","clipboardError","exportCSV","blob","url","selectedCount","pasteFromClipboard","method","isSubtasksData","subtasksClipboardText","isSubtasksTSV","isSingleCellValue","mapClipboardToVisibleColumns","clipboardRow","clipboardHeaders","mappedValues","header","index","matchingColId","firstRow","selectedColIds","rowIndex","isFolder","getEntityDataById","pasteRowIndex","pasteValue","validateClipboardData","entitiesToUpdateMap","colIndex","subtaskGroups","isFromSingleSourceTask","allLines","firstLine","dataLines","groupMap","groupOrder","line","parsed","tsvToSubtasks","subtask","groupKey","taskId","taskName","entityType","actualEntityId","entityKey","entityData","existingSubtasks","subtasksToProcess","groupIndex","pasteColIndex","newSubtasks","st","getEntityId","sanitizeSubtaskName","mergedSubtasks","existingIdentifiers","label","name","newSubtask","identifier","replacedSubtasks","newSt","existingMatch","est","isAttrib","isLink","fieldValueType","fieldName","attribField","firstVisibleColIndex","allGridColumns","startGridPos","clipboardColIndex","fieldToUpdate","processedValue","processFieldValue","_link","linkType","inType","outType","direction","allEntityUpdates","linkUpdatesMap","linkKey","targetEntityIds","linkTypePart","linkTypeParts","linkTypeName","targetEntityType","linkUpdateKey","allLinkUpdates","subtasksUpdates","updatePromises","previousSubtasks","prev","next","undoCallback","redoCallback","subtasksPromises","useEffect","handleKeyDown","e","activeEl","isTableFocused","isEditableElement","jsx","useClipboard","context","useContext"],"mappings":"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"}