@ynput/ayon-frontend-shared 0.3.40 → 0.3.42

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 (730) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +29 -27
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +225 -223
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +25 -16
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/_virtual/index.cjs15.js +1 -1
  11. package/dist/_virtual/index.cjs19.js +1 -1
  12. package/dist/_virtual/index.cjs4.js +1 -1
  13. package/dist/_virtual/index.cjs5.js +1 -1
  14. package/dist/_virtual/index.cjs6.js +1 -1
  15. package/dist/_virtual/index.cjs8.js +1 -1
  16. package/dist/_virtual/index.es15.js +2 -2
  17. package/dist/_virtual/index.es16.js +2 -2
  18. package/dist/_virtual/index.es17.js +2 -2
  19. package/dist/_virtual/index.es18.js +2 -2
  20. package/dist/_virtual/index.es19.js +2 -2
  21. package/dist/_virtual/index.es4.js +5 -2
  22. package/dist/_virtual/index.es4.js.map +1 -1
  23. package/dist/_virtual/index.es5.js +2 -5
  24. package/dist/_virtual/index.es5.js.map +1 -1
  25. package/dist/_virtual/index.es6.js +2 -2
  26. package/dist/_virtual/index.es8.js +2 -2
  27. package/dist/api.cjs.js +1 -1
  28. package/dist/api.es.js +227 -227
  29. package/dist/index.cjs.js +1 -1
  30. package/dist/index.es.js +16 -14
  31. package/dist/index.es.js.map +1 -1
  32. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  33. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  34. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  35. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  36. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  37. package/dist/node_modules/remove-accents/index.es.js +1 -1
  38. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  39. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  40. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  41. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  42. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  43. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  44. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.cjs.js +1 -1
  45. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
  46. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
  47. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
  48. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
  49. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
  50. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
  51. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
  52. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  53. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  54. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  55. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  56. package/dist/shared/src/api/generated/graphql.cjs.js +55 -79
  57. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  58. package/dist/shared/src/api/generated/graphql.es.js +278 -154
  59. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  60. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  61. package/dist/shared/src/api/generated/graphqlLinks.es.js +70 -19
  62. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  63. package/dist/shared/src/api/queries/activities/updateActivities.cjs.js +1 -1
  64. package/dist/shared/src/api/queries/activities/updateActivities.cjs.js.map +1 -1
  65. package/dist/shared/src/api/queries/activities/updateActivities.es.js +40 -43
  66. package/dist/shared/src/api/queries/activities/updateActivities.es.js.map +1 -1
  67. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  68. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  69. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +149 -55
  70. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  71. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
  72. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
  73. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  74. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  75. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +105 -51
  76. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  77. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  78. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  79. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  80. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  81. package/dist/shared/src/api/queries/entityLists/getLists.es.js +178 -130
  82. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  83. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  84. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  85. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +94 -40
  86. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  87. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  88. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  89. package/dist/shared/src/api/queries/folders/getFolders.es.js +109 -55
  90. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  91. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js +1 -1
  92. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js.map +1 -1
  93. package/dist/shared/src/api/queries/grouping/getGrouping.es.js +6 -21
  94. package/dist/shared/src/api/queries/grouping/getGrouping.es.js.map +1 -1
  95. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  96. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  97. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +117 -63
  98. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  99. package/dist/shared/src/api/queries/links/getLinks.cjs.js +1 -1
  100. package/dist/shared/src/api/queries/links/getLinks.cjs.js.map +1 -1
  101. package/dist/shared/src/api/queries/links/getLinks.es.js +108 -54
  102. package/dist/shared/src/api/queries/links/getLinks.es.js.map +1 -1
  103. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  104. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  105. package/dist/shared/src/api/queries/overview/getOverview.es.js +220 -167
  106. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  107. package/dist/shared/src/api/queries/products/createProduct.cjs.js +1 -1
  108. package/dist/shared/src/api/queries/products/createProduct.cjs.js.map +1 -1
  109. package/dist/shared/src/api/queries/products/createProduct.es.js +7 -46
  110. package/dist/shared/src/api/queries/products/createProduct.es.js.map +1 -1
  111. package/dist/shared/src/api/queries/products/getProduct.cjs.js +2 -0
  112. package/dist/shared/src/api/queries/products/getProduct.cjs.js.map +1 -0
  113. package/dist/shared/src/api/queries/products/getProduct.es.js +52 -0
  114. package/dist/shared/src/api/queries/products/getProduct.es.js.map +1 -0
  115. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
  116. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
  117. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +133 -80
  118. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
  119. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  120. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  121. package/dist/shared/src/api/queries/review/getReview.es.js +127 -75
  122. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  123. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  124. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  125. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +142 -90
  126. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  127. package/dist/shared/src/api/queries/users/getUsers.cjs.js +4 -2
  128. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  129. package/dist/shared/src/api/queries/users/getUsers.es.js +2 -0
  130. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  131. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  132. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  133. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +537 -331
  134. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  135. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
  136. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
  137. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +124 -29
  138. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
  139. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +5 -5
  140. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  141. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +140 -45
  142. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  143. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  144. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  145. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +9 -7
  146. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  147. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  148. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +4 -4
  149. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +4 -4
  150. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
  151. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +113 -18
  152. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
  153. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +2 -2
  154. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
  155. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +108 -13
  156. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
  157. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  158. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +3 -3
  159. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
  160. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
  161. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +119 -24
  162. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
  163. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
  164. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
  165. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +97 -2
  166. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
  167. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  168. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  169. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +9 -7
  170. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  171. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  172. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  173. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +9 -7
  174. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  175. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  176. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +5 -5
  177. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  178. package/dist/shared/src/components/LinksManager/LinksManager.es.js +9 -9
  179. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  180. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  181. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +9 -7
  182. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  183. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  184. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +4 -4
  185. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  186. package/dist/shared/src/components/Menu/Menu.es.js +7 -7
  187. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  188. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  189. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +23 -21
  190. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  191. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  192. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  193. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +57 -55
  194. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  195. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  196. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  197. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +19 -16
  198. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  199. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  200. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  201. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +10 -8
  202. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  203. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  204. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  205. package/dist/shared/src/components/RenameForm/RenameForm.es.js +9 -7
  206. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  207. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  208. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  209. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +9 -7
  210. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  211. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  212. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  213. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +10 -8
  214. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  215. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  216. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  217. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +9 -7
  218. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  219. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  220. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  221. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +9 -7
  222. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  223. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  224. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  225. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +340 -354
  226. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  227. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  228. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  229. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +11 -9
  230. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  231. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  232. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  233. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +9 -7
  234. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  235. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  236. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  237. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +122 -27
  238. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  239. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
  240. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  241. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +117 -22
  242. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  243. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  244. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  245. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +9 -7
  246. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  247. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  248. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  249. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +13 -11
  250. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  251. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  252. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  253. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +9 -7
  254. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  255. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  256. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  257. package/dist/shared/src/containers/Actions/Actions.es.js +42 -42
  258. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  259. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +2 -2
  260. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  261. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +28 -28
  262. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  263. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js +22 -19
  264. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js.map +1 -1
  265. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js +25 -22
  266. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js.map +1 -1
  267. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  268. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  269. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +9 -7
  270. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  271. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  272. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  273. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +119 -124
  274. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  275. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  276. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  277. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +9 -7
  278. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  279. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  280. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  281. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +9 -7
  282. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  283. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  284. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  285. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +139 -128
  286. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  287. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js +6 -6
  288. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
  289. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js +1 -1
  290. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
  291. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +2 -0
  292. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -0
  293. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +148 -0
  294. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -0
  295. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.cjs.js +29 -0
  296. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.cjs.js.map +1 -0
  297. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.es.js +34 -0
  298. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.es.js.map +1 -0
  299. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  300. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  301. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +13 -11
  302. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  303. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +5 -5
  304. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
  305. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +115 -20
  306. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
  307. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  308. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  309. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +9 -7
  310. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  311. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  312. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  313. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +23 -21
  314. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  315. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  316. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  317. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +9 -7
  318. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  319. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  320. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  321. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +9 -7
  322. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  323. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js +2 -0
  324. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js.map +1 -0
  325. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js +9 -0
  326. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js.map +1 -0
  327. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js +1 -1
  328. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js.map +1 -1
  329. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js +12 -12
  330. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js.map +1 -1
  331. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  332. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  333. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +105 -10
  334. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  335. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
  336. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
  337. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  338. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -2
  339. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  340. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +31 -29
  342. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  343. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  344. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  345. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +9 -7
  346. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  347. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  348. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  349. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +9 -7
  350. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  351. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  352. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  353. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +9 -7
  354. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  355. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
  356. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
  357. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +106 -11
  358. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
  359. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  360. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  361. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +122 -27
  362. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  363. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  364. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  365. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +9 -7
  366. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  367. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  368. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  369. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +91 -80
  370. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  371. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  372. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  373. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +9 -7
  374. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  375. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  376. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  377. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +119 -24
  378. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  379. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  380. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  381. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +29 -29
  382. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  383. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  384. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  385. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +9 -7
  386. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  387. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  388. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  389. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +13 -11
  390. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  391. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
  392. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
  393. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +104 -9
  394. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
  395. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +1 -1
  396. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +1 -1
  397. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  398. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  399. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +9 -7
  400. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  401. package/dist/shared/src/containers/Feed/helpers/getActivityUserName.cjs.js +2 -0
  402. package/dist/shared/src/containers/Feed/helpers/getActivityUserName.cjs.js.map +1 -0
  403. package/dist/shared/src/containers/Feed/helpers/getActivityUserName.es.js +5 -0
  404. package/dist/shared/src/containers/Feed/helpers/getActivityUserName.es.js.map +1 -0
  405. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  406. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  407. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +185 -87
  408. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  409. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  410. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  411. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +105 -10
  412. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  413. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  414. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  415. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +108 -13
  416. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  417. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  418. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  419. package/dist/shared/src/containers/ListTable/ListTable.es.js +22 -20
  420. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  421. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  422. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  423. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +9 -7
  424. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  425. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  426. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  427. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +9 -7
  428. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  429. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  430. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +622 -616
  432. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  433. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  434. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +72 -70
  436. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  437. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  438. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +9 -7
  440. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  441. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  442. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  443. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +9 -7
  444. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  445. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  446. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  447. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +9 -7
  448. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  449. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  450. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  451. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +9 -7
  452. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  453. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  454. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  455. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +23 -21
  456. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  457. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  458. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  459. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +9 -7
  460. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  461. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  462. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  463. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +178 -83
  464. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  465. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  466. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  467. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +31 -29
  468. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  469. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  470. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  471. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +24 -22
  472. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  473. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  474. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  475. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +9 -7
  476. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  477. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  478. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  479. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +9 -7
  480. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  481. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  482. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  483. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +26 -24
  484. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  485. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  486. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  487. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +9 -7
  488. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  489. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  490. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  491. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +72 -72
  492. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  493. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  494. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  495. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +26 -24
  496. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  497. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  498. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  499. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +25 -23
  500. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  502. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  503. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +9 -7
  504. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  505. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  506. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  507. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +9 -7
  508. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  509. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  510. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  511. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +10 -8
  512. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  513. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  514. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  515. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +24 -22
  516. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  517. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js +1 -1
  518. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.cjs.js.map +1 -1
  519. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js +13 -16
  520. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSelectedFolders.es.js.map +1 -1
  521. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  522. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  523. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +48 -42
  524. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  525. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  527. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +38 -36
  528. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  529. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  530. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  531. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +9 -7
  532. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  533. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  535. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +10 -8
  536. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  537. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  539. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +9 -7
  540. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  541. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  542. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  543. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +11 -9
  544. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  545. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +4 -4
  547. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  548. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  549. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +25 -23
  550. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  552. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  553. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +9 -7
  554. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  555. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +4 -4
  557. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +4 -4
  558. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +175 -80
  560. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  561. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +5 -5
  562. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +107 -12
  564. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  565. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  566. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  567. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +42 -40
  568. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  569. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  570. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  571. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +9 -7
  572. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  573. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  574. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  575. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +57 -70
  576. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  577. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  578. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  579. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +9 -7
  580. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  581. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  582. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  583. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +273 -124
  584. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  585. package/dist/shared/src/containers/Slicer/context/SlicerContextInstance.cjs.js +2 -0
  586. package/dist/shared/src/containers/Slicer/context/SlicerContextInstance.cjs.js.map +1 -0
  587. package/dist/shared/src/containers/Slicer/context/SlicerContextInstance.es.js +6 -0
  588. package/dist/shared/src/containers/Slicer/context/SlicerContextInstance.es.js.map +1 -0
  589. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  590. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  591. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +4 -2
  592. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  593. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +2 -0
  594. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -0
  595. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +156 -0
  596. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -0
  597. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +2 -0
  598. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -0
  599. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +187 -0
  600. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -0
  601. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +2 -0
  602. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -0
  603. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +143 -0
  604. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -0
  605. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  606. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  607. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +47 -43
  608. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  609. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js +1 -1
  610. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -1
  611. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js +8 -13
  612. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -1
  613. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.cjs.js +2 -0
  614. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.cjs.js.map +1 -0
  615. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.es.js +8 -0
  616. package/dist/shared/src/containers/Slicer/util/getSelectionDataState.es.js.map +1 -0
  617. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
  618. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  619. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +124 -29
  620. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  621. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  622. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +2 -2
  623. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  624. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  625. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +8 -6
  626. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  627. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  628. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  629. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +113 -18
  630. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  631. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  632. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  633. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +158 -84
  634. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  635. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  636. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +2 -2
  637. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  639. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  640. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  641. package/dist/shared/src/context/DetailsPanelContext.es.js +64 -63
  642. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  643. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  644. package/dist/shared/src/context/PowerpackContext.es.js +2 -2
  645. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  646. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  647. package/dist/shared/src/context/ProjectContext.es.js +83 -66
  648. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  649. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  650. package/dist/shared/src/context/ProjectFoldersContext.es.js +2 -2
  651. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  652. package/dist/shared/src/context/SubtasksModulesContext.es.js +2 -2
  653. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  654. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  655. package/dist/shared/src/context/UriContext.es.js +1 -1
  656. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  657. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  658. package/dist/shared/src/context/WebsocketContext.es.js +18 -16
  659. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  660. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  661. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  662. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +2 -2
  663. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
  664. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
  665. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +115 -20
  666. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
  667. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  668. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  669. package/dist/shared/src/util/getBundleMode.cjs.js +2 -0
  670. package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -0
  671. package/dist/shared/src/util/getBundleMode.es.js +118 -0
  672. package/dist/shared/src/util/getBundleMode.es.js.map +1 -0
  673. package/dist/types/api/generated/graphql.d.ts +640 -887
  674. package/dist/types/api/generated/graphqlLinks.d.ts +190 -284
  675. package/dist/types/api/queries/activities/getActivities.d.ts +144 -137
  676. package/dist/types/api/queries/activities/updateActivities.d.ts +288 -274
  677. package/dist/types/api/queries/columnStats/columnStats.d.ts +3 -21
  678. package/dist/types/api/queries/entities/getEntity.d.ts +144 -137
  679. package/dist/types/api/queries/entities/getEntityPanel.d.ts +144 -137
  680. package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +3 -1
  681. package/dist/types/api/queries/entities/updateEntity.d.ts +144 -137
  682. package/dist/types/api/queries/entityLists/getLists.d.ts +1406 -1712
  683. package/dist/types/api/queries/entityLists/types.d.ts +1 -0
  684. package/dist/types/api/queries/folders/getFolderDeleteInfo.d.ts +66 -66
  685. package/dist/types/api/queries/overview/getOverview.d.ts +630 -623
  686. package/dist/types/api/queries/products/createProduct.d.ts +2 -2
  687. package/dist/types/api/queries/products/getFolderProducts.d.ts +32 -32
  688. package/dist/types/api/queries/products/getProduct.d.ts +259 -0
  689. package/dist/types/api/queries/project/getProject.d.ts +264 -257
  690. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +192 -185
  691. package/dist/types/api/queries/users/getUsers.d.ts +177 -170
  692. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +784 -770
  693. package/dist/types/api/queries/versions/updateVersions.d.ts +106 -143
  694. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
  695. package/dist/types/containers/Actions/Actions.d.ts +3 -2
  696. package/dist/types/containers/Actions/ActionsDropdown/ActionsDropdown.d.ts +3 -2
  697. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.d.ts +3 -2
  698. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.d.ts +7 -0
  699. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.d.ts +2 -0
  700. package/dist/types/containers/DetailsPanel/helpers/buildEntityTypeIcons.d.ts +4 -0
  701. package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +1 -1
  702. package/dist/types/containers/Feed/helpers/getActivityUserName.d.ts +4 -0
  703. package/dist/types/containers/ProjectTreeTable/hooks/useSelectedFolders.d.ts +2 -2
  704. package/dist/types/containers/ProjectTreeTable/hooks/useSortBySettings.d.ts +6 -1
  705. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +1 -0
  706. package/dist/types/containers/Slicer/components/Slicer.d.ts +1 -1
  707. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +14 -19
  708. package/dist/types/containers/Slicer/context/SlicerContextInstance.d.ts +2 -0
  709. package/dist/types/containers/Slicer/hooks/index.d.ts +4 -1
  710. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +1 -0
  711. package/dist/types/containers/Slicer/hooks/useSlicerRemotes.d.ts +6 -0
  712. package/dist/types/containers/Slicer/hooks/useSlicerRowSelection.d.ts +20 -0
  713. package/dist/types/containers/Slicer/hooks/useSlicerSplitter.d.ts +9 -0
  714. package/dist/types/containers/Slicer/types.d.ts +7 -0
  715. package/dist/types/containers/Slicer/util/createFilterFromSlicer.d.ts +5 -3
  716. package/dist/types/containers/Slicer/util/getSelectionDataState.d.ts +3 -0
  717. package/dist/types/containers/Slicer/util/index.d.ts +1 -0
  718. package/dist/types/context/DetailsPanelContext.d.ts +2 -1
  719. package/dist/types/context/ProjectContext.d.ts +2 -1
  720. package/dist/types/util/getBundleMode.d.ts +4 -0
  721. package/dist/types/util/index.d.ts +1 -0
  722. package/dist/util.cjs.js +1 -1
  723. package/dist/util.es.js +33 -30
  724. package/dist/util.es.js.map +1 -1
  725. package/package.json +3 -3
  726. package/dist/shared/src/containers/Slicer/hooks/useSlicerViewSync.cjs.js +0 -2
  727. package/dist/shared/src/containers/Slicer/hooks/useSlicerViewSync.cjs.js.map +0 -1
  728. package/dist/shared/src/containers/Slicer/hooks/useSlicerViewSync.es.js +0 -22
  729. package/dist/shared/src/containers/Slicer/hooks/useSlicerViewSync.es.js.map +0 -1
  730. package/dist/types/containers/Slicer/hooks/useSlicerViewSync.d.ts +0 -8
@@ -1,132 +1,206 @@
1
- import { useViewsContext as z } from "../../context/ViewsContext.es.js";
2
1
  import "lodash";
3
2
  import "react-toastify";
4
3
  import "uuid";
5
- import { convertColumnConfigToTanstackStates as Q, convertTanstackStatesToColumnConfig as T } from "../../../../util/columnConfigConverter.es.js";
4
+ import { convertColumnConfigToTanstackStates as b, convertTanstackStatesToColumnConfig as T } from "../../../../util/columnConfigConverter.es.js";
5
+ import "../../../../api/base/client.es.js";
6
+ import "../../../../api/generated/graphql.es.js";
7
+ import "../../../../api/generated/graphqlLinks.es.js";
8
+ import "../../../../api/generated/access.es.js";
9
+ import "../../../../api/generated/actions.es.js";
10
+ import "../../../../api/generated/activityFeed.es.js";
11
+ import "../../../../api/generated/addons.es.js";
12
+ import "../../../../api/generated/anatomy.es.js";
13
+ import "../../../../api/generated/attributes.es.js";
14
+ import "../../../../api/generated/authentication.es.js";
15
+ import "../../../../api/generated/bundles.es.js";
16
+ import "../../../../api/generated/configuration.es.js";
17
+ import "../../../../api/generated/dataImport.es.js";
18
+ import "../../../../api/generated/desktop.es.js";
19
+ import "../../../../api/generated/entityLists.es.js";
20
+ import "../../../../api/generated/events.es.js";
21
+ import "../../../../api/generated/files.es.js";
22
+ import "../../../../api/generated/folders.es.js";
23
+ import "../../../../api/generated/inbox.es.js";
24
+ import "../../../../api/generated/links.es.js";
25
+ import "../../../../api/generated/market.es.js";
26
+ import "../../../../api/generated/onboarding.es.js";
27
+ import "../../../../api/generated/operations.es.js";
28
+ import "../../../../api/generated/products.es.js";
29
+ import "../../../../api/generated/projectDashboard.es.js";
30
+ import "../../../../api/generated/projects.es.js";
31
+ import "../../../../api/generated/projectFolders.es.js";
32
+ import "../../../../api/generated/reviewables.es.js";
33
+ import "../../../../api/generated/services.es.js";
34
+ import "../../../../api/generated/system.es.js";
35
+ import "../../../../api/generated/tasks.es.js";
36
+ import "../../../../api/generated/teams.es.js";
37
+ import "../../../../api/generated/thumbnails.es.js";
38
+ import "../../../../api/generated/uRIs.es.js";
39
+ import "../../../../api/generated/users.es.js";
40
+ import "../../../../api/generated/versions.es.js";
41
+ import "../../../../api/generated/workfiles.es.js";
42
+ import "../../../../api/generated/ynputCloud.es.js";
43
+ import "../../../../api/generated/grouping.es.js";
44
+ import "../../../../api/generated/views.es.js";
45
+ import "../../../../api/queries/actions/getActions.es.js";
46
+ import "../../../../api/queries/activities/getActivities.es.js";
47
+ import "../../../../api/queries/activities/updateActivities.es.js";
48
+ import "../../../../api/queries/activities/updateReaction.es.js";
49
+ import "../../../../api/queries/activities/getMentions.es.js";
50
+ import "../../../../api/queries/activities/getCategories.es.js";
51
+ import "../../../../api/queries/addons/getAddons.es.js";
52
+ import "../../../../api/queries/addons/updateAddons.es.js";
53
+ import "../../../../api/queries/attributes/getAttributes.es.js";
54
+ import "../../../../api/queries/attributes/updateAttributes.es.js";
55
+ import "../../../../api/queries/authentication/getAuthentication.es.js";
56
+ import "../../../../api/queries/cloud/cloud.es.js";
57
+ import "../../../../api/queries/columnStats/metricTargets.es.js";
58
+ import "../../../../api/queries/config/getConfig.es.js";
59
+ import "../../../../api/queries/config/updateConfig.es.js";
60
+ import "../../../../api/queries/entities/getEntity.es.js";
61
+ import "../../../../api/queries/entities/getEntityPanel.es.js";
62
+ import "../../../../api/queries/overview/getOverview.es.js";
63
+ import "../../../../api/queries/overview/updateOverview.es.js";
64
+ import "../../../../api/queries/versions/getVersionsProducts.es.js";
65
+ import "../../../../api/queries/links/getEntityLinks.es.js";
66
+ import "../../../../api/queries/entities/updateEntity.es.js";
67
+ import "../../../../api/queries/entityLists/getLists.es.js";
68
+ import "../../../../api/queries/entityLists/updateLists.es.js";
69
+ import "../../../../api/queries/entityLists/getListsAttributes.es.js";
70
+ import "../../../../api/queries/entityLists/listItemsColumnStats.es.js";
71
+ import "../../../../api/queries/entityLists/updateListsAttributes.es.js";
72
+ import "../../../../api/queries/entityLists/listFolders.es.js";
73
+ import "../../../../api/queries/folders/getFolders.es.js";
74
+ import "../../../../api/queries/folders/getFolderDeleteInfo.es.js";
75
+ import "../../../../api/queries/grouping/getGrouping.es.js";
76
+ import "../../../../api/queries/links/updateLinks.es.js";
77
+ import "../../../../api/queries/links/getLinks.es.js";
78
+ import "../../../../api/queries/permissions/getPermissions.es.js";
79
+ import "../../../../api/queries/products/createProduct.es.js";
80
+ import "../../../../api/queries/products/getFolderProducts.es.js";
81
+ import "../../../../api/queries/project/getProject.es.js";
82
+ import "../../../../api/queries/project/updateProject.es.js";
83
+ import "../../../../api/queries/projectFolders/projectFolders.es.js";
84
+ import "../../../../api/queries/review/getReview.es.js";
85
+ import "../../../../api/queries/review/updateReview.es.js";
86
+ import "../../../../api/queries/share/share.es.js";
87
+ import "../../../../api/queries/system/getSystem.es.js";
88
+ import "../../../../api/queries/tasks/getTasks.es.js";
89
+ import "../../../../api/queries/tasks/updateTasks.es.js";
90
+ import "../../../../api/queries/teams/getTeams.es.js";
91
+ import "../../../../api/queries/userDashboard/getUserDashboard.es.js";
92
+ import "../../../../api/queries/users/getUsers.es.js";
93
+ import "../../../../api/queries/users/updateUsers.es.js";
94
+ import "../../../../api/queries/users/guests.es.js";
95
+ import "../../../../api/queries/versions/updateVersions.es.js";
96
+ import "../../../../api/queries/views/getViews.es.js";
97
+ import "../../../../api/queries/views/updateViews.es.js";
98
+ import "../../../../api/queries/watchers/getWatchers.es.js";
99
+ import "../../../../api/queries/uris/getUris.es.js";
6
100
  import "../../../../util/pubsub.es.js";
7
- import { useState as d, useEffect as h, useMemo as B, useCallback as i } from "react";
8
- const S = ({ viewSettings: m, updateViewSettings: s }) => {
9
- const [O, F] = d(null), [k, n] = d(null), [M, t] = d(null), { selectedView: g, workingView: U, isViewWorking: j, editingViewId: L } = z(), [r, v] = d({ summaries: {}, scopes: {}, formats: {} }), x = j ? L || U?.id || "working" : g?.id;
10
- h(() => {
11
- v({ summaries: {}, scopes: {}, formats: {} });
12
- }, [x]);
13
- const f = m, J = f?.filter ?? {}, N = f?.showHierarchy ?? !0, w = f?.sliceType, G = B(
14
- () => Q(f),
15
- [JSON.stringify(m)]
101
+ import { useState as f, useMemo as j, useEffect as h, useCallback as l } from "react";
102
+ const Nr = ({ viewSettings: i, updateViewSettings: r }) => {
103
+ const [d, C] = f(null), [F, m] = f(null), [v, c] = f(null), n = i, M = n?.filter ?? {}, O = n?.showHierarchy ?? !0, B = n?.sliceType, g = j(
104
+ () => b(n),
105
+ [JSON.stringify(i)]
16
106
  );
17
107
  h(() => {
18
- F(null);
19
- }, [JSON.stringify(m?.filter)]), h(() => {
20
- n(null);
108
+ C(null);
109
+ }, [JSON.stringify(i?.filter)]), h(() => {
110
+ m(null);
21
111
  }, [
22
- m?.showHierarchy,
23
- m?.groupBy
112
+ i?.showHierarchy,
113
+ i?.groupBy
24
114
  ]), h(() => {
25
- t(null);
26
- }, [JSON.stringify(m?.columns)]);
27
- const P = O !== null ? O : J, A = k !== null ? k : N, l = M || G, a = B(() => Object.keys(r.summaries).length || Object.keys(r.scopes).length || Object.keys(r.formats).length ? {
28
- ...l,
29
- columnSummaries: { ...l.columnSummaries, ...r.summaries },
30
- columnSummaryScopes: {
31
- ...l.columnSummaryScopes,
32
- ...r.scopes
33
- },
34
- columnSummaryFormats: {
35
- ...l.columnSummaryFormats,
36
- ...r.formats
37
- }
38
- } : l, [l, r]), D = i(() => {
39
- }, []), E = i(
115
+ c(null);
116
+ }, [JSON.stringify(i?.columns)]);
117
+ const U = d !== null ? d : M, k = F !== null ? F : O, p = v || g, L = l(() => {
118
+ }, []), J = l(
40
119
  async (o) => {
41
- await s({ sliceType: o }, D, o, {
120
+ await r({ sliceType: o }, L, o, {
42
121
  errorMessage: "Failed to update slicer type"
43
122
  });
44
123
  },
45
- [s]
46
- ), I = i(
124
+ [r]
125
+ ), N = l(
47
126
  async (o) => {
48
- await s({ filter: o }, F, o, {
127
+ await r({ filter: o }, C, o, {
49
128
  errorMessage: "Failed to update filter settings"
50
129
  });
51
130
  },
52
- [s]
53
- ), K = i(
131
+ [r]
132
+ ), x = l(
54
133
  async (o) => {
55
- if (o && a?.groupBy) {
56
- const e = { ...a, groupBy: void 0 };
57
- t(e);
58
- const u = T(e);
59
- await s(
60
- { ...u, showHierarchy: !0 },
61
- n,
134
+ if (o && p?.groupBy) {
135
+ const t = { ...p, groupBy: void 0 };
136
+ c(t);
137
+ const s = T(t);
138
+ await r(
139
+ { ...s, showHierarchy: !0 },
140
+ m,
62
141
  o,
63
142
  { errorMessage: "Failed to update hierarchy setting" }
64
143
  );
65
144
  return;
66
145
  }
67
- await s(
146
+ await r(
68
147
  { showHierarchy: o },
69
- n,
148
+ m,
70
149
  o,
71
150
  { errorMessage: "Failed to update hierarchy setting" }
72
151
  );
73
152
  },
74
- [s, a]
75
- ), W = i(
76
- async (o, e) => {
77
- (o.columnSummaries || o.columnSummaryScopes || o.columnSummaryFormats) && v((c) => ({
78
- summaries: { ...c.summaries, ...o.columnSummaries || {} },
79
- scopes: { ...c.scopes, ...o.columnSummaryScopes || {} },
80
- formats: { ...c.formats, ...o.columnSummaryFormats || {} }
81
- }));
82
- const u = e || [
153
+ [r, p]
154
+ ), G = l(
155
+ async (o, t) => {
156
+ const s = t || [
83
157
  ...o.columnOrder || [],
84
158
  ...Object.keys(o.columnVisibility || {}),
85
159
  ...o.columnPinning?.left || [],
86
160
  ...o.columnPinning?.right || []
87
- ].filter(Boolean).filter((c, H, y) => y.indexOf(c) === H), p = T(o, u), C = !!o.groupBy;
88
- C && n(!1), await s(
89
- C ? { ...p, showHierarchy: !1 } : p,
90
- t,
161
+ ].filter(Boolean).filter((y, H, e) => e.indexOf(y) === H), a = T(o, s), u = !!o.groupBy;
162
+ u && m(!1), await r(
163
+ u ? { ...a, showHierarchy: !1 } : a,
164
+ c,
91
165
  o,
92
166
  { errorMessage: "Failed to update columns" }
93
167
  );
94
168
  },
95
- [s]
96
- ), q = i(
97
- async (o, e, u) => {
98
- const p = {
99
- showHierarchy: e,
169
+ [r]
170
+ ), P = l(
171
+ async (o, t, s) => {
172
+ const a = {
173
+ showHierarchy: t,
100
174
  groupBy: o,
101
- groupSortByDesc: o ? u ?? !1 : void 0
102
- }, c = {
103
- ...a,
104
- groupBy: o ? { id: o, desc: u ?? !1 } : void 0
175
+ groupSortByDesc: o ? s ?? !1 : void 0
176
+ }, y = {
177
+ ...p,
178
+ groupBy: o ? { id: o, desc: s ?? !1 } : void 0
105
179
  };
106
- await s(
107
- p,
108
- (y) => {
109
- y === null ? (n(null), t(null)) : (n(y.showHierarchy), t(y.columns));
180
+ await r(
181
+ a,
182
+ (e) => {
183
+ e === null ? (m(null), c(null)) : (m(e.showHierarchy), c(e.columns));
110
184
  },
111
- { showHierarchy: e, columns: c },
185
+ { showHierarchy: t, columns: y },
112
186
  { errorMessage: "Failed to update grouping" }
113
187
  );
114
188
  },
115
- [s, a]
189
+ [r, p]
116
190
  );
117
191
  return {
118
- filters: P,
119
- onUpdateFilters: I,
120
- showHierarchy: A,
121
- onUpdateHierarchy: K,
122
- columns: a,
123
- onUpdateColumns: W,
124
- onUpdateGroupBy: q,
125
- sliceType: w,
126
- onUpdateSliceType: E
192
+ filters: U,
193
+ onUpdateFilters: N,
194
+ showHierarchy: k,
195
+ onUpdateHierarchy: x,
196
+ columns: p,
197
+ onUpdateColumns: G,
198
+ onUpdateGroupBy: P,
199
+ sliceType: B,
200
+ onUpdateSliceType: J
127
201
  };
128
202
  };
129
203
  export {
130
- S as useOverviewViewSettings
204
+ Nr as useOverviewViewSettings
131
205
  };
132
206
  //# sourceMappingURL=useOverviewViewSettings.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOverviewViewSettings.es.js","sources":["../../../../../../../src/containers/Views/hooks/pages/useOverviewViewSettings.ts"],"sourcesContent":["/**\n * Unified hook for managing all overview page view settings.\n *\n * The hook handles:\n * - Filter settings (QueryFilter format)\n * - Hierarchy visibility toggle\n * - Column configurations (ColumnsConfig format)\n *\n * Must be used within a ViewsProvider context.\n */\n\nimport { useViewsContext } from '../../context/ViewsContext'\nimport { OverviewSettings } from '@shared/api'\nimport { ColumnsConfig } from '@shared/containers/ProjectTreeTable'\nimport {\n convertColumnConfigToTanstackStates,\n convertTanstackStatesToColumnConfig,\n} from '@shared/util'\nimport { UpdateViewSettingsFn } from '../../utils/viewUpdateHelper'\nimport { useState, useEffect, useCallback, useMemo } from 'react'\n\n// Import the internal QueryFilter type that the app uses\nimport { QueryFilter } from '@shared/containers/ProjectTreeTable/types/operations'\nimport {\n SummaryCalc,\n SummaryFormat,\n RowScope,\n} from '@shared/containers/ProjectTreeTable/types/summaryTypes'\n\ntype Return = {\n // Filter management\n filters: QueryFilter\n onUpdateFilters: (filters: QueryFilter) => void\n\n // Hierarchy management\n showHierarchy: boolean\n onUpdateHierarchy: (showHierarchy: boolean) => void\n\n // Column management\n columns: ColumnsConfig\n onUpdateColumns: (columns: ColumnsConfig, allColumnIds?: string[]) => void\n // Atomic groupBy + showHierarchy update (avoids 2-PATCH race)\n onUpdateGroupBy: (groupBy: string | undefined, showHierarchy: boolean, desc?: boolean) => void\n // Slicer type management\n sliceType: string | undefined\n onUpdateSliceType: (sliceType: string) => void\n}\n\ntype Props = {\n viewSettings: OverviewSettings | undefined\n updateViewSettings: UpdateViewSettingsFn\n}\n\nexport const useOverviewViewSettings = ({ viewSettings, updateViewSettings }: Props): Return => {\n // Local state for immediate updates\n const [localFilters, setLocalFilters] = useState<QueryFilter | null>(null)\n const [localHierarchy, setLocalHierarchy] = useState<boolean | null>(null)\n const [localColumns, setLocalColumns] = useState<ColumnsConfig | null>(null)\n\n // Backend drops summary/summaryScope/summaryFormat from ColumnItemModel, so\n // the post-save refetch would revert them — hold the selections here, session only.\n const { selectedView, workingView, isViewWorking, editingViewId } = useViewsContext()\n const [summaryOverrides, setSummaryOverrides] = useState<{\n summaries: Record<string, SummaryCalc>\n scopes: Record<string, RowScope>\n formats: Record<string, SummaryFormat>\n }>({ summaries: {}, scopes: {}, formats: {} })\n\n // Editing a named view forks to the working view (selectedView.id flips), but\n // editingViewId keeps pointing at the origin, so the key stays stable while editing.\n const viewKey = isViewWorking\n ? editingViewId || workingView?.id || 'working'\n : selectedView?.id\n\n // Reset overrides when a different view's settings come on screen\n useEffect(() => {\n setSummaryOverrides({ summaries: {}, scopes: {}, formats: {} })\n }, [viewKey])\n\n // Get server settings\n const overviewSettings = viewSettings as OverviewSettings\n const serverFilters = (overviewSettings?.filter as any) ?? {}\n const serverHierarchy = overviewSettings?.showHierarchy ?? true\n const serverSliceType = overviewSettings?.sliceType\n\n const serverColumns = useMemo(\n () => convertColumnConfigToTanstackStates(overviewSettings),\n [JSON.stringify(viewSettings)],\n )\n\n // Sync local state with server when the relevant setting fields change.\n // Use per-field deps (not JSON.stringify(viewSettings)) so a change to one\n // field does not clear in-flight local state for unrelated fields, which\n // would cause a visible flicker during rapid sequential updates.\n useEffect(() => {\n setLocalFilters(null)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify((viewSettings as OverviewSettings)?.filter)])\n\n useEffect(() => {\n setLocalHierarchy(null)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n (viewSettings as OverviewSettings)?.showHierarchy,\n (viewSettings as OverviewSettings)?.groupBy,\n ])\n\n useEffect(() => {\n setLocalColumns(null)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify((viewSettings as OverviewSettings)?.columns)])\n\n // Use local state if available, otherwise use server state\n const filters = localFilters !== null ? localFilters : serverFilters\n const showHierarchy = localHierarchy !== null ? localHierarchy : serverHierarchy\n const columnsBase = localColumns || serverColumns\n const columns = useMemo(() => {\n const hasOverrides =\n Object.keys(summaryOverrides.summaries).length ||\n Object.keys(summaryOverrides.scopes).length ||\n Object.keys(summaryOverrides.formats).length\n if (!hasOverrides) return columnsBase\n return {\n ...columnsBase,\n columnSummaries: { ...columnsBase.columnSummaries, ...summaryOverrides.summaries },\n columnSummaryScopes: {\n ...columnsBase.columnSummaryScopes,\n ...summaryOverrides.scopes,\n },\n columnSummaryFormats: {\n ...columnsBase.columnSummaryFormats,\n ...summaryOverrides.formats,\n },\n }\n }, [columnsBase, summaryOverrides])\n\n // Slice type update handler\n const noop = useCallback(() => {}, [])\n const onUpdateSliceType = useCallback(\n async (newSliceType: string) => {\n await updateViewSettings({ sliceType: newSliceType }, noop, newSliceType, {\n errorMessage: 'Failed to update slicer type',\n })\n },\n [updateViewSettings],\n )\n\n // Filter update handler\n const onUpdateFilters = useCallback(\n async (newFilters: QueryFilter) => {\n await updateViewSettings({ filter: newFilters as any }, setLocalFilters, newFilters, {\n errorMessage: 'Failed to update filter settings',\n })\n },\n [updateViewSettings],\n )\n\n // Hierarchy update handler\n const onUpdateHierarchy = useCallback(\n async (newShowHierarchy: boolean) => {\n // If turning hierarchy ON while grouped, clear groupBy in the same update\n if (newShowHierarchy && (columns as ColumnsConfig)?.groupBy) {\n const clearedColumns: ColumnsConfig = { ...columns, groupBy: undefined }\n // Optimistically update local columns to remove grouping\n setLocalColumns(clearedColumns)\n const settings = convertTanstackStatesToColumnConfig(clearedColumns)\n await updateViewSettings(\n { ...settings, showHierarchy: true },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n return\n }\n\n await updateViewSettings(\n { showHierarchy: newShowHierarchy },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n },\n [updateViewSettings, columns],\n )\n\n // Column update handler\n const onUpdateColumns = useCallback(\n async (tableSettings: ColumnsConfig, allColumnIds?: string[]) => {\n // Keep the summary footer choices alive across the working-view refetch\n // (backend drops these fields, so server state can't be trusted for them).\n if (\n tableSettings.columnSummaries ||\n tableSettings.columnSummaryScopes ||\n tableSettings.columnSummaryFormats\n ) {\n setSummaryOverrides((prev) => ({\n summaries: { ...prev.summaries, ...(tableSettings.columnSummaries || {}) },\n scopes: { ...prev.scopes, ...(tableSettings.columnSummaryScopes || {}) },\n formats: { ...prev.formats, ...(tableSettings.columnSummaryFormats || {}) },\n }))\n }\n\n // Derive a stable allColumnIds if not provided to preserve order and grouping on server\n const derivedAll =\n allColumnIds ||\n [\n ...(tableSettings.columnOrder || []),\n ...Object.keys(tableSettings.columnVisibility || {}),\n ...((tableSettings.columnPinning?.left as string[]) || []),\n ...((tableSettings.columnPinning?.right as string[]) || []),\n ]\n .filter(Boolean)\n .filter((v, i, a) => a.indexOf(v) === i)\n\n const settings = convertTanstackStatesToColumnConfig(tableSettings, derivedAll)\n const hasGroupBy = !!tableSettings.groupBy\n\n // If grouping is being set, turn off hierarchy in the same update for consistency\n if (hasGroupBy) {\n // Optimistically reflect hierarchy off\n setLocalHierarchy(false)\n }\n\n await updateViewSettings(\n hasGroupBy ? { ...settings, showHierarchy: false } : settings,\n setLocalColumns,\n tableSettings,\n { errorMessage: 'Failed to update columns' },\n )\n },\n [updateViewSettings],\n )\n\n // Atomic groupBy + showHierarchy update.\n // Merges both fields into a single PATCH to avoid a race where two sequential\n // updateViewSettings calls both capture the same pre-update viewSettings snapshot\n // and the second overwrites the first.\n const onUpdateGroupBy = useCallback(\n async (groupBy: string | undefined, newShowHierarchy: boolean, desc?: boolean) => {\n const updates: Partial<OverviewSettings> = {\n showHierarchy: newShowHierarchy,\n groupBy: groupBy,\n groupSortByDesc: groupBy ? desc ?? false : undefined,\n }\n\n const baseColumns = columns as ColumnsConfig\n const newLocalColumns: ColumnsConfig = {\n ...baseColumns,\n groupBy: groupBy ? { id: groupBy, desc: desc ?? false } : undefined,\n }\n\n // Combined setter lets updateViewSettings manage optimism/reset for both\n // local states atomically (so error paths don't leave one stale).\n const combinedSetter = (value: { showHierarchy: boolean; columns: ColumnsConfig } | null) => {\n if (value === null) {\n setLocalHierarchy(null)\n setLocalColumns(null)\n } else {\n setLocalHierarchy(value.showHierarchy)\n setLocalColumns(value.columns)\n }\n }\n\n await updateViewSettings(\n updates,\n combinedSetter,\n { showHierarchy: newShowHierarchy, columns: newLocalColumns },\n { errorMessage: 'Failed to update grouping' },\n )\n },\n [updateViewSettings, columns],\n )\n\n return {\n filters,\n onUpdateFilters,\n showHierarchy,\n onUpdateHierarchy,\n columns,\n onUpdateColumns,\n onUpdateGroupBy,\n sliceType: serverSliceType,\n onUpdateSliceType,\n }\n}\n"],"names":["useOverviewViewSettings","viewSettings","updateViewSettings","localFilters","setLocalFilters","useState","localHierarchy","setLocalHierarchy","localColumns","setLocalColumns","selectedView","workingView","isViewWorking","editingViewId","useViewsContext","summaryOverrides","setSummaryOverrides","viewKey","useEffect","overviewSettings","serverFilters","serverHierarchy","serverSliceType","serverColumns","useMemo","convertColumnConfigToTanstackStates","filters","showHierarchy","columnsBase","columns","noop","useCallback","onUpdateSliceType","newSliceType","onUpdateFilters","newFilters","onUpdateHierarchy","newShowHierarchy","clearedColumns","settings","convertTanstackStatesToColumnConfig","onUpdateColumns","tableSettings","allColumnIds","prev","derivedAll","v","i","a","hasGroupBy","onUpdateGroupBy","groupBy","desc","updates","newLocalColumns","value"],"mappings":";;;;;;;AAqDO,MAAMA,IAA0B,CAAC,EAAE,cAAAC,GAAc,oBAAAC,QAAwC;AAE9F,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAA6B,IAAI,GACnE,CAACC,GAAgBC,CAAiB,IAAIF,EAAyB,IAAI,GACnE,CAACG,GAAcC,CAAe,IAAIJ,EAA+B,IAAI,GAIrE,EAAE,cAAAK,GAAc,aAAAC,GAAa,eAAAC,GAAe,eAAAC,EAAA,IAAkBC,EAAA,GAC9D,CAACC,GAAkBC,CAAmB,IAAIX,EAI7C,EAAE,WAAW,CAAA,GAAI,QAAQ,CAAA,GAAI,SAAS,CAAA,GAAI,GAIvCY,IAAUL,IACZC,KAAiBF,GAAa,MAAM,YACpCD,GAAc;AAGlB,EAAAQ,EAAU,MAAM;AACd,IAAAF,EAAoB,EAAE,WAAW,CAAA,GAAI,QAAQ,IAAI,SAAS,CAAA,GAAI;AAAA,EAChE,GAAG,CAACC,CAAO,CAAC;AAGZ,QAAME,IAAmBlB,GACnBmB,IAAiBD,GAAkB,UAAkB,CAAA,GACrDE,IAAkBF,GAAkB,iBAAiB,IACrDG,IAAkBH,GAAkB,WAEpCI,IAAgBC;AAAA,IACpB,MAAMC,EAAoCN,CAAgB;AAAA,IAC1D,CAAC,KAAK,UAAUlB,CAAY,CAAC;AAAA,EAAA;AAO/B,EAAAiB,EAAU,MAAM;AACd,IAAAd,EAAgB,IAAI;AAAA,EAEtB,GAAG,CAAC,KAAK,UAAWH,GAAmC,MAAM,CAAC,CAAC,GAE/DiB,EAAU,MAAM;AACd,IAAAX,EAAkB,IAAI;AAAA,EAExB,GAAG;AAAA,IACAN,GAAmC;AAAA,IACnCA,GAAmC;AAAA,EAAA,CACrC,GAEDiB,EAAU,MAAM;AACd,IAAAT,EAAgB,IAAI;AAAA,EAEtB,GAAG,CAAC,KAAK,UAAWR,GAAmC,OAAO,CAAC,CAAC;AAGhE,QAAMyB,IAAUvB,MAAiB,OAAOA,IAAeiB,GACjDO,IAAgBrB,MAAmB,OAAOA,IAAiBe,GAC3DO,IAAcpB,KAAgBe,GAC9BM,IAAUL,EAAQ,MAEpB,OAAO,KAAKT,EAAiB,SAAS,EAAE,UACxC,OAAO,KAAKA,EAAiB,MAAM,EAAE,UACrC,OAAO,KAAKA,EAAiB,OAAO,EAAE,SAEjC;AAAA,IACL,GAAGa;AAAA,IACH,iBAAiB,EAAE,GAAGA,EAAY,iBAAiB,GAAGb,EAAiB,UAAA;AAAA,IACvE,qBAAqB;AAAA,MACnB,GAAGa,EAAY;AAAA,MACf,GAAGb,EAAiB;AAAA,IAAA;AAAA,IAEtB,sBAAsB;AAAA,MACpB,GAAGa,EAAY;AAAA,MACf,GAAGb,EAAiB;AAAA,IAAA;AAAA,EACtB,IAXwBa,GAazB,CAACA,GAAab,CAAgB,CAAC,GAG5Be,IAAOC,EAAY,MAAM;AAAA,EAAC,GAAG,CAAA,CAAE,GAC/BC,IAAoBD;AAAA,IACxB,OAAOE,MAAyB;AAC9B,YAAM/B,EAAmB,EAAE,WAAW+B,EAAA,GAAgBH,GAAMG,GAAc;AAAA,QACxE,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAAC/B,CAAkB;AAAA,EAAA,GAIfgC,IAAkBH;AAAA,IACtB,OAAOI,MAA4B;AACjC,YAAMjC,EAAmB,EAAE,QAAQiC,EAAA,GAAqB/B,GAAiB+B,GAAY;AAAA,QACnF,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAACjC,CAAkB;AAAA,EAAA,GAIfkC,IAAoBL;AAAA,IACxB,OAAOM,MAA8B;AAEnC,UAAIA,KAAqBR,GAA2B,SAAS;AAC3D,cAAMS,IAAgC,EAAE,GAAGT,GAAS,SAAS,OAAA;AAE7D,QAAApB,EAAgB6B,CAAc;AAC9B,cAAMC,IAAWC,EAAoCF,CAAc;AACnE,cAAMpC;AAAA,UACJ,EAAE,GAAGqC,GAAU,eAAe,GAAA;AAAA,UAC9BhC;AAAA,UACA8B;AAAA,UACA,EAAE,cAAc,qCAAA;AAAA,QAAqC;AAEvD;AAAA,MACF;AAEA,YAAMnC;AAAA,QACJ,EAAE,eAAemC,EAAA;AAAA,QACjB9B;AAAA,QACA8B;AAAA,QACA,EAAE,cAAc,qCAAA;AAAA,MAAqC;AAAA,IAEzD;AAAA,IACA,CAACnC,GAAoB2B,CAAO;AAAA,EAAA,GAIxBY,IAAkBV;AAAA,IACtB,OAAOW,GAA8BC,MAA4B;AAG/D,OACED,EAAc,mBACdA,EAAc,uBACdA,EAAc,yBAEd1B,EAAoB,CAAC4B,OAAU;AAAA,QAC7B,WAAW,EAAE,GAAGA,EAAK,WAAW,GAAIF,EAAc,mBAAmB,GAAC;AAAA,QACtE,QAAQ,EAAE,GAAGE,EAAK,QAAQ,GAAIF,EAAc,uBAAuB,GAAC;AAAA,QACpE,SAAS,EAAE,GAAGE,EAAK,SAAS,GAAIF,EAAc,wBAAwB,CAAA,EAAC;AAAA,MAAG,EAC1E;AAIJ,YAAMG,IACJF,KACA;AAAA,QACE,GAAID,EAAc,eAAe,CAAA;AAAA,QACjC,GAAG,OAAO,KAAKA,EAAc,oBAAoB,CAAA,CAAE;AAAA,QACnD,GAAKA,EAAc,eAAe,QAAqB,CAAA;AAAA,QACvD,GAAKA,EAAc,eAAe,SAAsB,CAAA;AAAA,MAAC,EAExD,OAAO,OAAO,EACd,OAAO,CAACI,GAAGC,GAAGC,MAAMA,EAAE,QAAQF,CAAC,MAAMC,CAAC,GAErCR,IAAWC,EAAoCE,GAAeG,CAAU,GACxEI,IAAa,CAAC,CAACP,EAAc;AAGnC,MAAIO,KAEF1C,EAAkB,EAAK,GAGzB,MAAML;AAAA,QACJ+C,IAAa,EAAE,GAAGV,GAAU,eAAe,OAAUA;AAAA,QACrD9B;AAAA,QACAiC;AAAA,QACA,EAAE,cAAc,2BAAA;AAAA,MAA2B;AAAA,IAE/C;AAAA,IACA,CAACxC,CAAkB;AAAA,EAAA,GAOfgD,IAAkBnB;AAAA,IACtB,OAAOoB,GAA6Bd,GAA2Be,MAAmB;AAChF,YAAMC,IAAqC;AAAA,QACzC,eAAehB;AAAA,QACf,SAAAc;AAAA,QACA,iBAAiBA,IAAUC,KAAQ,KAAQ;AAAA,MAAA,GAIvCE,IAAiC;AAAA,QACrC,GAFkBzB;AAAA,QAGlB,SAASsB,IAAU,EAAE,IAAIA,GAAS,MAAMC,KAAQ,OAAU;AAAA,MAAA;AAe5D,YAAMlD;AAAA,QACJmD;AAAA,QAXqB,CAACE,MAAqE;AAC3F,UAAIA,MAAU,QACZhD,EAAkB,IAAI,GACtBE,EAAgB,IAAI,MAEpBF,EAAkBgD,EAAM,aAAa,GACrC9C,EAAgB8C,EAAM,OAAO;AAAA,QAEjC;AAAA,QAKE,EAAE,eAAelB,GAAkB,SAASiB,EAAA;AAAA,QAC5C,EAAE,cAAc,4BAAA;AAAA,MAA4B;AAAA,IAEhD;AAAA,IACA,CAACpD,GAAoB2B,CAAO;AAAA,EAAA;AAG9B,SAAO;AAAA,IACL,SAAAH;AAAA,IACA,iBAAAQ;AAAA,IACA,eAAAP;AAAA,IACA,mBAAAS;AAAA,IACA,SAAAP;AAAA,IACA,iBAAAY;AAAA,IACA,iBAAAS;AAAA,IACA,WAAW5B;AAAA,IACX,mBAAAU;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useOverviewViewSettings.es.js","sources":["../../../../../../../src/containers/Views/hooks/pages/useOverviewViewSettings.ts"],"sourcesContent":["/**\n * Unified hook for managing all overview page view settings.\n *\n * The hook handles:\n * - Filter settings (QueryFilter format)\n * - Hierarchy visibility toggle\n * - Column configurations (ColumnsConfig format)\n *\n * Must be used within a ViewsProvider context.\n */\n\nimport { OverviewSettings } from '@shared/api'\nimport { ColumnsConfig } from '@shared/containers/ProjectTreeTable'\nimport {\n convertColumnConfigToTanstackStates,\n convertTanstackStatesToColumnConfig,\n} from '@shared/util'\nimport { UpdateViewSettingsFn } from '../../utils/viewUpdateHelper'\nimport { useState, useEffect, useCallback, useMemo } from 'react'\n\n// Import the internal QueryFilter type that the app uses\nimport { QueryFilter } from '@shared/containers/ProjectTreeTable/types/operations'\n\ntype Return = {\n // Filter management\n filters: QueryFilter\n onUpdateFilters: (filters: QueryFilter) => void\n\n // Hierarchy management\n showHierarchy: boolean\n onUpdateHierarchy: (showHierarchy: boolean) => void\n\n // Column management\n columns: ColumnsConfig\n onUpdateColumns: (columns: ColumnsConfig, allColumnIds?: string[]) => void\n // Atomic groupBy + showHierarchy update (avoids 2-PATCH race)\n onUpdateGroupBy: (groupBy: string | undefined, showHierarchy: boolean, desc?: boolean) => void\n // Slicer type management\n sliceType: string | undefined\n onUpdateSliceType: (sliceType: string) => void\n}\n\ntype Props = {\n viewSettings: OverviewSettings | undefined\n updateViewSettings: UpdateViewSettingsFn\n}\n\nexport const useOverviewViewSettings = ({ viewSettings, updateViewSettings }: Props): Return => {\n // Local state for immediate updates\n const [localFilters, setLocalFilters] = useState<QueryFilter | null>(null)\n const [localHierarchy, setLocalHierarchy] = useState<boolean | null>(null)\n const [localColumns, setLocalColumns] = useState<ColumnsConfig | null>(null)\n\n // Get server settings\n const overviewSettings = viewSettings as OverviewSettings\n const serverFilters = (overviewSettings?.filter as any) ?? {}\n const serverHierarchy = overviewSettings?.showHierarchy ?? true\n const serverSliceType = overviewSettings?.sliceType\n\n const serverColumns = useMemo(\n () => convertColumnConfigToTanstackStates(overviewSettings),\n [JSON.stringify(viewSettings)],\n )\n\n // Sync local state with server when the relevant setting fields change.\n // Use per-field deps (not JSON.stringify(viewSettings)) so a change to one\n // field does not clear in-flight local state for unrelated fields, which\n // would cause a visible flicker during rapid sequential updates.\n useEffect(() => {\n setLocalFilters(null)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify((viewSettings as OverviewSettings)?.filter)])\n\n useEffect(() => {\n setLocalHierarchy(null)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n (viewSettings as OverviewSettings)?.showHierarchy,\n (viewSettings as OverviewSettings)?.groupBy,\n ])\n\n useEffect(() => {\n setLocalColumns(null)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify((viewSettings as OverviewSettings)?.columns)])\n\n // Use local state if available, otherwise use server state\n const filters = localFilters !== null ? localFilters : serverFilters\n const showHierarchy = localHierarchy !== null ? localHierarchy : serverHierarchy\n const columns = localColumns || serverColumns\n\n // Slice type update handler\n const noop = useCallback(() => {}, [])\n const onUpdateSliceType = useCallback(\n async (newSliceType: string) => {\n await updateViewSettings({ sliceType: newSliceType }, noop, newSliceType, {\n errorMessage: 'Failed to update slicer type',\n })\n },\n [updateViewSettings],\n )\n\n // Filter update handler\n const onUpdateFilters = useCallback(\n async (newFilters: QueryFilter) => {\n await updateViewSettings({ filter: newFilters as any }, setLocalFilters, newFilters, {\n errorMessage: 'Failed to update filter settings',\n })\n },\n [updateViewSettings],\n )\n\n // Hierarchy update handler\n const onUpdateHierarchy = useCallback(\n async (newShowHierarchy: boolean) => {\n // If turning hierarchy ON while grouped, clear groupBy in the same update\n if (newShowHierarchy && (columns as ColumnsConfig)?.groupBy) {\n const clearedColumns: ColumnsConfig = { ...columns, groupBy: undefined }\n // Optimistically update local columns to remove grouping\n setLocalColumns(clearedColumns)\n const settings = convertTanstackStatesToColumnConfig(clearedColumns)\n await updateViewSettings(\n { ...settings, showHierarchy: true },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n return\n }\n\n await updateViewSettings(\n { showHierarchy: newShowHierarchy },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n },\n [updateViewSettings, columns],\n )\n\n // Column update handler\n const onUpdateColumns = useCallback(\n async (tableSettings: ColumnsConfig, allColumnIds?: string[]) => {\n // Derive a stable allColumnIds if not provided to preserve order and grouping on server\n const derivedAll =\n allColumnIds ||\n [\n ...(tableSettings.columnOrder || []),\n ...Object.keys(tableSettings.columnVisibility || {}),\n ...((tableSettings.columnPinning?.left as string[]) || []),\n ...((tableSettings.columnPinning?.right as string[]) || []),\n ]\n .filter(Boolean)\n .filter((v, i, a) => a.indexOf(v) === i)\n\n const settings = convertTanstackStatesToColumnConfig(tableSettings, derivedAll)\n const hasGroupBy = !!tableSettings.groupBy\n\n // If grouping is being set, turn off hierarchy in the same update for consistency\n if (hasGroupBy) {\n // Optimistically reflect hierarchy off\n setLocalHierarchy(false)\n }\n\n await updateViewSettings(\n hasGroupBy ? { ...settings, showHierarchy: false } : settings,\n setLocalColumns,\n tableSettings,\n { errorMessage: 'Failed to update columns' },\n )\n },\n [updateViewSettings],\n )\n\n // Atomic groupBy + showHierarchy update.\n // Merges both fields into a single PATCH to avoid a race where two sequential\n // updateViewSettings calls both capture the same pre-update viewSettings snapshot\n // and the second overwrites the first.\n const onUpdateGroupBy = useCallback(\n async (groupBy: string | undefined, newShowHierarchy: boolean, desc?: boolean) => {\n const updates: Partial<OverviewSettings> = {\n showHierarchy: newShowHierarchy,\n groupBy: groupBy,\n groupSortByDesc: groupBy ? desc ?? false : undefined,\n }\n\n const baseColumns = columns as ColumnsConfig\n const newLocalColumns: ColumnsConfig = {\n ...baseColumns,\n groupBy: groupBy ? { id: groupBy, desc: desc ?? false } : undefined,\n }\n\n // Combined setter lets updateViewSettings manage optimism/reset for both\n // local states atomically (so error paths don't leave one stale).\n const combinedSetter = (value: { showHierarchy: boolean; columns: ColumnsConfig } | null) => {\n if (value === null) {\n setLocalHierarchy(null)\n setLocalColumns(null)\n } else {\n setLocalHierarchy(value.showHierarchy)\n setLocalColumns(value.columns)\n }\n }\n\n await updateViewSettings(\n updates,\n combinedSetter,\n { showHierarchy: newShowHierarchy, columns: newLocalColumns },\n { errorMessage: 'Failed to update grouping' },\n )\n },\n [updateViewSettings, columns],\n )\n\n return {\n filters,\n onUpdateFilters,\n showHierarchy,\n onUpdateHierarchy,\n columns,\n onUpdateColumns,\n onUpdateGroupBy,\n sliceType: serverSliceType,\n onUpdateSliceType,\n }\n}\n"],"names":["useOverviewViewSettings","viewSettings","updateViewSettings","localFilters","setLocalFilters","useState","localHierarchy","setLocalHierarchy","localColumns","setLocalColumns","overviewSettings","serverFilters","serverHierarchy","serverSliceType","serverColumns","useMemo","convertColumnConfigToTanstackStates","useEffect","filters","showHierarchy","columns","noop","useCallback","onUpdateSliceType","newSliceType","onUpdateFilters","newFilters","onUpdateHierarchy","newShowHierarchy","clearedColumns","settings","convertTanstackStatesToColumnConfig","onUpdateColumns","tableSettings","allColumnIds","derivedAll","v","i","a","hasGroupBy","onUpdateGroupBy","groupBy","desc","updates","newLocalColumns","value"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const O=require("../../../../../_virtual/jsx-runtime.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/updateActivities.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/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");const S=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const q=require("react"),j=require("../ViewsMenu/ViewsMenu.cjs.js"),F=require("@ynput/ayon-react-components"),G=require("../utils/generateWorkingView.cjs.js"),y=require("react-toastify"),K=require("../../../hooks/useLoadModule.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("lodash");require("../../../context/RemoteModulesContext.cjs.js");const v=require("../../../context/PowerpackContext.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/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("react-redux");require("custom-protocol-check");require("../../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("uuid");require("../../../util/pubsub.cjs.js");const Q=require("../utils/getCustomViewsFallback.cjs.js"),o=require("../types.cjs.js"),T=({viewsList:w,workingView:n,viewType:a,viewAlias:u,projectName:m,currentUser:V,useWorkingView:g,editingViewId:I,collapsed:t,setCollapsed:h,onSelect:s,onEdit:D,onSave:$,onResetWorkingView:c,selectedId:l})=>{const{powerLicense:d}=v.usePowerpack(),[C]=S.useCreateViewMutation(),R=q.useMemo(()=>w.map(e=>({...e,isOwner:e.owner===V?.name,highlighted:I===e.id?"save":void 0})),[w,V,I]),x={id:o.WORKING_VIEW_ID,label:g?`Personal ${u.toLowerCase()}`:`Working ${u.toLowerCase()}`,startContent:g&&O.jsxRuntimeExports.jsx(F.Icon,{icon:"person"}),isEditable:!1},E=q.useCallback(async()=>{let e=n?.id;if(!n)try{console.warn(`No working ${u.toLowerCase()} found, creating a new one`);const r=G.generateWorkingView();await C({payload:r,viewType:a,projectName:m}).unwrap(),e=r.id}catch(r){y.toast.error(`Failed to create working ${u}: ${r}`)}s(e)},[n,a,C,m,s]),P=async e=>{try{await $(e),s(e)}catch(r){y.toast.error(r)}},[B,{isLoading:z}]=K.useLoadModule({addon:"powerpack",remote:"views",module:"getCustomViews",fallback:Q.getCustomViewsFallback,skip:!a||!d}),{myViews:_,sharedViews:k,allPrivateViews:p}=B({viewsList:R,onEdit:D,onSelect:s,onSave:P}),f=q.useCallback(e=>{h({...t,[e]:!t[e]})},[t,h]),W=q.useMemo(()=>[{id:"myViews",title:`My ${u.toLowerCase()}s`,items:_},{id:"sharedViews",title:`Shared ${u.toLowerCase()}s`,items:k},{id:"allPrivateViews",title:`All private ${u.toLowerCase()}s`,items:p}],[_,k,p]),L=q.useMemo(()=>({...x,onClick:E,isEditable:!!c,onResetView:c}),[E,c]);return q.useMemo(()=>{const e=[L],r=W.filter(i=>d&&(i.items?.length||0)>0);return r.length>0&&e.push(j.VIEW_DIVIDER),r.forEach(i=>{const M=!!t[i.id];if(e.push({type:"section",id:i.id,title:i.title,collapsed:M,onToggle:()=>f(i.id)}),!M)e.push(...i.items);else if(l){const b=i.items.find(N=>N.id===l);b&&e.push(b)}}),e},[L,W,t,f,l,d])};exports.BASE_VIEW_ID=o.BASE_VIEW_ID;exports.NEW_VIEW_ID=o.NEW_VIEW_ID;exports.WORKING_VIEW_ID=o.WORKING_VIEW_ID;exports.default=T;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const O=require("../../../../../_virtual/jsx-runtime.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/updateActivities.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/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");const S=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const q=require("react"),j=require("../ViewsMenu/ViewsMenu.cjs.js"),F=require("@ynput/ayon-react-components"),G=require("../utils/generateWorkingView.cjs.js"),y=require("react-toastify"),K=require("../../../hooks/useLoadModule.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("lodash");require("../../../context/RemoteModulesContext.cjs.js");const v=require("../../../context/PowerpackContext.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("uuid");require("../../../util/pubsub.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("react-redux");require("custom-protocol-check");require("../../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");const Q=require("../utils/getCustomViewsFallback.cjs.js"),o=require("../types.cjs.js"),T=({viewsList:w,workingView:n,viewType:a,viewAlias:u,projectName:m,currentUser:V,useWorkingView:g,editingViewId:I,collapsed:t,setCollapsed:h,onSelect:s,onEdit:D,onSave:$,onResetWorkingView:c,selectedId:l})=>{const{powerLicense:d}=v.usePowerpack(),[C]=S.useCreateViewMutation(),R=q.useMemo(()=>w.map(e=>({...e,isOwner:e.owner===V?.name,highlighted:I===e.id?"save":void 0})),[w,V,I]),x={id:o.WORKING_VIEW_ID,label:g?`Personal ${u.toLowerCase()}`:`Working ${u.toLowerCase()}`,startContent:g&&O.jsxRuntimeExports.jsx(F.Icon,{icon:"person"}),isEditable:!1},E=q.useCallback(async()=>{let e=n?.id;if(!n)try{console.warn(`No working ${u.toLowerCase()} found, creating a new one`);const r=G.generateWorkingView();await C({payload:r,viewType:a,projectName:m}).unwrap(),e=r.id}catch(r){y.toast.error(`Failed to create working ${u}: ${r}`)}s(e)},[n,a,C,m,s]),P=async e=>{try{await $(e),s(e)}catch(r){y.toast.error(r)}},[B,{isLoading:z}]=K.useLoadModule({addon:"powerpack",remote:"views",module:"getCustomViews",fallback:Q.getCustomViewsFallback,skip:!a||!d}),{myViews:_,sharedViews:k,allPrivateViews:p}=B({viewsList:R,onEdit:D,onSelect:s,onSave:P}),f=q.useCallback(e=>{h({...t,[e]:!t[e]})},[t,h]),W=q.useMemo(()=>[{id:"myViews",title:`My ${u.toLowerCase()}s`,items:_},{id:"sharedViews",title:`Shared ${u.toLowerCase()}s`,items:k},{id:"allPrivateViews",title:`All private ${u.toLowerCase()}s`,items:p}],[_,k,p]),L=q.useMemo(()=>({...x,onClick:E,isEditable:!!c,onResetView:c}),[E,c]);return q.useMemo(()=>{const e=[L],r=W.filter(i=>d&&(i.items?.length||0)>0);return r.length>0&&e.push(j.VIEW_DIVIDER),r.forEach(i=>{const M=!!t[i.id];if(e.push({type:"section",id:i.id,title:i.title,collapsed:M,onToggle:()=>f(i.id)}),!M)e.push(...i.items);else if(l){const b=i.items.find(N=>N.id===l);b&&e.push(b)}}),e},[L,W,t,f,l,d])};exports.BASE_VIEW_ID=o.BASE_VIEW_ID;exports.NEW_VIEW_ID=o.NEW_VIEW_ID;exports.WORKING_VIEW_ID=o.WORKING_VIEW_ID;exports.default=T;
2
2
  //# sourceMappingURL=useBuildViewMenuItems.cjs.js.map
@@ -107,6 +107,8 @@ import "../../../context/RemoteModulesContext.es.js";
107
107
  import { usePowerpack as q } from "../../../context/PowerpackContext.es.js";
108
108
  import "../../../context/UriContext.es.js";
109
109
  import "../../../context/DetailsPanelContextInstance.es.js";
110
+ import "uuid";
111
+ import "../../../util/pubsub.es.js";
110
112
  import "../../../context/SubtasksModulesContextInstance.es.js";
111
113
  import "../../../context/ThumbnailUploaderContext.es.js";
112
114
  import "../../../context/SettingsPanelContext.es.js";
@@ -124,8 +126,6 @@ import "../../../context/ProjectFoldersContext.es.js";
124
126
  import "react-redux";
125
127
  import "custom-protocol-check";
126
128
  import "../../ProjectTreeTable/components/GroupSettingsFallback.es.js";
127
- import "uuid";
128
- import "../../../util/pubsub.es.js";
129
129
  import { getCustomViewsFallback as z } from "../utils/getCustomViewsFallback.es.js";
130
130
  import { WORKING_VIEW_ID as H } from "../types.es.js";
131
131
  import { BASE_VIEW_ID as Ir, NEW_VIEW_ID as Er } from "../types.es.js";
@@ -1 +1 @@
1
- {"version":3,"file":"viewUpdateHelper.cjs.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * Sequential updateViewSettings calls in the same event tick MUST chain correctly:\n * the second call has to see the first call's changes. Closure-captured\n * `viewSettings` does not refresh between sync calls (no re-render yet), so we\n * read the latest settings from the RTK Query cache at call time instead.\n * RTK's updateView mutation performs an optimistic cache write in\n * `onQueryStarted`, so the cache is already up-to-date by the time the next\n * call reads it.\n */\n\nimport {\n CreateViewApiArg,\n EntityIdResponse,\n useCreateViewMutation,\n useUpdateViewMutation,\n viewsQueries,\n} from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useStore } from 'react-redux'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\n// Module-level flag shared across every useViewUpdateHelper instance. Set true\n// when a mutation has been dispatched in the current tick (RTK cache is now\n// optimistically fresh); reset on the next microtask. Must be module-level so\n// that two different hook instances (e.g. ProjectOverviewDataProvider +\n// ProjectOverviewContext) coordinate correctly when writes flow through one\n// and subsequent reads come from the other in the same event tick.\nlet cacheDirtyThisTick = false\nconst markCacheDirty = () => {\n if (cacheDirtyThisTick) return\n cacheDirtyThisTick = true\n queueMicrotask(() => {\n cacheDirtyThisTick = false\n })\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport interface LatestSettingsResult {\n settings?: any\n workingViewId?: string\n}\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onApplyViewChanges: (arg: any, viewId?: string) => Promise<EntityIdResponse | void>,\n // Reads latest effective settings from RTK Query cache at call time. Required to\n // prevent stale-closure races when two updates fire in the same tick.\n getLatest: () => LatestSettingsResult,\n // Invoked synchronously right after the mutation is dispatched. The caller\n // uses this to flip a \"cache is fresh this tick\" flag so subsequent sync\n // calls in the same tick read the just-updated cache instead of stale state.\n markCacheDirty: () => void,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Read latest settings from RTK cache (includes prior same-tick optimistic writes).\n // Fallback to closure-captured value if cache has nothing (first render, etc.).\n const { settings: latestSettingsFromCache, workingViewId: latestWorkingViewIdFromCache } =\n getLatest()\n const latestSettings = latestSettingsFromCache ?? viewSettings\n\n // If we have no settings baseline at all (neither from cache nor from context),\n // abort to prevent writing a partial payload that would overwrite saved settings.\n // This is a defence-in-depth guard; in normal flow isLoadingViews prevents callers\n // from triggering updates before data is available.\n if (latestSettings === undefined) {\n console.warn(\n 'updateViewSettings: no settings baseline available, aborting to prevent data loss.',\n )\n return\n }\n\n // Create settings with updates\n const newSettings = { ...latestSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n const viewId = latestWorkingViewIdFromCache ?? workingView?.id\n if (viewId) {\n newWorkingView.id = viewId\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n // only include the fields that are updating (just settings)\n const payload = viewId ? { settings: newSettings } : newWorkingView\n\n const promise = onApplyViewChanges(\n {\n payload,\n viewType: viewType,\n projectName: projectName,\n },\n viewId,\n )\n\n // Mutation dispatch above ran onQueryStarted synchronously → RTK cache now\n // reflects `newSettings`. Signal this so any subsequent sync call in the\n // same tick reads the fresh cache instead of the stale closure baseline.\n markCacheDirty()\n\n // if not already on the working view: set that the settings have been changed to show the little blue save button and switch to the working view\n // Note: selectedView?.id is always a real UUID from the server, never the WORKING_VIEW_ID sentinel.\n if (!wasWorking || selectedView?.id !== viewId) {\n if (selectedView) {\n onSettingsChanged(true)\n }\n setSelectedView(newWorkingViewId as string)\n }\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n const [updateView] = useUpdateViewMutation()\n\n const viewContext = useViewsContext()\n const store = useStore()\n\n const onApplyViewChanges = useCallback(\n async (arg: any, viewId?: string) => {\n if (viewId) {\n // Filter the payload to only include valid patch fields\n // and ideally only include fields that are actually being updated.\n // Expecting the caller to provide only the fields they want to update in the payload.\n const patchPayload: any = {}\n const patchFields = ['label', 'owner', 'settings']\n patchFields.forEach((key) => {\n if (arg.payload[key] !== undefined) {\n patchPayload[key] = arg.payload[key]\n }\n })\n\n return await updateView({\n viewType: arg.viewType,\n projectName: arg.projectName,\n viewId,\n payload: patchPayload,\n }).unwrap()\n } else {\n return await createView(arg).unwrap()\n }\n },\n [createView, updateView],\n )\n\n // Returns cached settings when a same-tick prior write has refreshed the\n // cache. Otherwise returns undefined and the caller falls back to the\n // closure-captured viewSettings (correct baseline for the first write in a\n // tick, including the named-view → working-view fork).\n const getLatest = useCallback((): LatestSettingsResult => {\n const { viewType, projectName, selectedView, workingView } = viewContext\n if (!viewType) return {}\n\n const state = store.getState() as any\n\n // 1. Get the working view from the store — most authoritative after optimistic writes.\n const workingViewEntry = viewsQueries.endpoints.getWorkingView.select({\n viewType,\n projectName,\n })(state)\n const storeWorkingViewId = workingViewEntry?.data?.id\n // Prefer the store's working view ID over the potentially stale context closure value.\n const resolvedWorkingViewId = storeWorkingViewId || workingView?.id\n\n // 2. Determine the currently targeted view ID.\n // Use the store's getDefaultView cache (updated optimistically by setSelectedView) so that\n // an in-flight selection change is visible before React re-renders the context.\n const defaultViewEntry = viewsQueries.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n const targetViewId = defaultViewEntry?.data?.id || selectedView?.id\n\n // 3. Determine if the working view is active.\n // IMPORTANT: use !!resolvedWorkingViewId to avoid the undefined === undefined false-positive\n // that would occur on a new project before any working view exists.\n // Note: WORKING_VIEW_ID ('_working_') is a UI-only sentinel; it never appears in\n // server-side cache IDs, so there is no point checking for it here.\n const isWorkingViewActive =\n (!!resolvedWorkingViewId && targetViewId === resolvedWorkingViewId) || cacheDirtyThisTick\n\n // 4. If the working view is active, use its cache as the baseline to prevent stale merges.\n if (isWorkingViewActive && workingViewEntry?.data?.settings) {\n return {\n settings: workingViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n // 5. For named views: use the defaultView cache settings as the baseline.\n // This is populated by the initial useGetDefaultViewQuery fetch and is more reliable\n // than the getView endpoint cache (which is only fetched on-demand when editing).\n if (defaultViewEntry?.data?.settings) {\n return {\n settings: defaultViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n return { workingViewId: resolvedWorkingViewId }\n }, [store, viewContext])\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) =>\n await updateViewSettings(...args, viewContext, onApplyViewChanges, getLatest, markCacheDirty),\n [viewContext, onApplyViewChanges, getLatest],\n )\n\n return {\n updateViewSettings: updateViewSettingsHandler,\n onCreateView: onApplyViewChanges,\n getLatestSettings: getLatest,\n markCacheDirty,\n }\n}\n"],"names":["cacheDirtyThisTick","markCacheDirty","updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onApplyViewChanges","getLatest","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","latestSettingsFromCache","latestWorkingViewIdFromCache","latestSettings","newSettings","newWorkingView","generateWorkingView","viewId","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","updateView","useUpdateViewMutation","useViewsContext","store","useStore","useCallback","arg","patchPayload","key","state","workingViewEntry","viewsQueries","resolvedWorkingViewId","defaultViewEntry","targetViewId","args"],"mappings":"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"}
1
+ {"version":3,"file":"viewUpdateHelper.cjs.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * Sequential updateViewSettings calls in the same event tick MUST chain correctly:\n * the second call has to see the first call's changes. Closure-captured\n * `viewSettings` does not refresh between sync calls (no re-render yet), so we\n * read the latest settings from the RTK Query cache at call time instead.\n * RTK's updateView mutation performs an optimistic cache write in\n * `onQueryStarted`, so the cache is already up-to-date by the time the next\n * call reads it.\n */\n\nimport {\n EntityIdResponse,\n useCreateViewMutation,\n useUpdateViewMutation,\n viewsQueries,\n} from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useStore } from 'react-redux'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\n// Module-level flag shared across every useViewUpdateHelper instance. Set true\n// when a mutation has been dispatched in the current tick (RTK cache is now\n// optimistically fresh); reset on the next microtask. Must be module-level so\n// that two different hook instances (e.g. ProjectOverviewDataProvider +\n// ProjectOverviewContext) coordinate correctly when writes flow through one\n// and subsequent reads come from the other in the same event tick.\nlet cacheDirtyThisTick = false\nconst markCacheDirty = () => {\n if (cacheDirtyThisTick) return\n cacheDirtyThisTick = true\n queueMicrotask(() => {\n cacheDirtyThisTick = false\n })\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport interface LatestSettingsResult {\n settings?: any\n workingViewId?: string\n}\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onApplyViewChanges: (arg: any, viewId?: string) => Promise<EntityIdResponse | void>,\n // Reads latest effective settings from RTK Query cache at call time. Required to\n // prevent stale-closure races when two updates fire in the same tick.\n getLatest: () => LatestSettingsResult,\n // Invoked synchronously right after the mutation is dispatched. The caller\n // uses this to flip a \"cache is fresh this tick\" flag so subsequent sync\n // calls in the same tick read the just-updated cache instead of stale state.\n markCacheDirty: () => void,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Read latest settings from RTK cache (includes prior same-tick optimistic writes).\n // Fallback to closure-captured value if cache has nothing (first render, etc.).\n const { settings: latestSettingsFromCache, workingViewId: latestWorkingViewIdFromCache } =\n getLatest()\n const latestSettings = latestSettingsFromCache ?? viewSettings\n\n // If we have no settings baseline at all (neither from cache nor from context),\n // abort to prevent writing a partial payload that would overwrite saved settings.\n // This is a defence-in-depth guard; in normal flow isLoadingViews prevents callers\n // from triggering updates before data is available.\n if (latestSettings === undefined) {\n console.warn(\n 'updateViewSettings: no settings baseline available, aborting to prevent data loss.',\n )\n return\n }\n\n // Create settings with updates\n const newSettings = { ...latestSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n const viewId = latestWorkingViewIdFromCache ?? workingView?.id\n if (viewId) {\n newWorkingView.id = viewId\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n // only include the fields that are updating (just settings)\n const payload = viewId ? { settings: newSettings } : newWorkingView\n\n const promise = onApplyViewChanges(\n {\n payload,\n viewType: viewType,\n projectName: projectName,\n },\n viewId,\n )\n\n // Mutation dispatch above ran onQueryStarted synchronously → RTK cache now\n // reflects `newSettings`. Signal this so any subsequent sync call in the\n // same tick reads the fresh cache instead of the stale closure baseline.\n markCacheDirty()\n\n // if not already on the working view: set that the settings have been changed to show the little blue save button and switch to the working view\n // Note: selectedView?.id is always a real UUID from the server, never the WORKING_VIEW_ID sentinel.\n if (!wasWorking || selectedView?.id !== viewId) {\n if (selectedView) {\n onSettingsChanged(true)\n }\n setSelectedView(newWorkingViewId as string)\n }\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n const [updateView] = useUpdateViewMutation()\n\n const viewContext = useViewsContext()\n const store = useStore()\n\n const onApplyViewChanges = useCallback(\n async (arg: any, viewId?: string) => {\n if (viewId) {\n // Filter the payload to only include valid patch fields\n // and ideally only include fields that are actually being updated.\n // Expecting the caller to provide only the fields they want to update in the payload.\n const patchPayload: any = {}\n const patchFields = ['label', 'owner', 'settings']\n patchFields.forEach((key) => {\n if (arg.payload[key] !== undefined) {\n patchPayload[key] = arg.payload[key]\n }\n })\n\n return await updateView({\n viewType: arg.viewType,\n projectName: arg.projectName,\n viewId,\n payload: patchPayload,\n }).unwrap()\n } else {\n return await createView(arg).unwrap()\n }\n },\n [createView, updateView],\n )\n\n // Returns cached settings when a same-tick prior write has refreshed the\n // cache. Otherwise returns undefined and the caller falls back to the\n // closure-captured viewSettings (correct baseline for the first write in a\n // tick, including the named-view → working-view fork).\n const getLatest = useCallback((): LatestSettingsResult => {\n const { viewType, projectName, selectedView, workingView } = viewContext\n if (!viewType) return {}\n\n const state = store.getState() as any\n\n // 1. Get the working view from the store — most authoritative after optimistic writes.\n const workingViewEntry = viewsQueries.endpoints.getWorkingView.select({\n viewType,\n projectName,\n })(state)\n const storeWorkingViewId = workingViewEntry?.data?.id\n // Prefer the store's working view ID over the potentially stale context closure value.\n const resolvedWorkingViewId = storeWorkingViewId || workingView?.id\n\n // 2. Determine the currently targeted view ID.\n // Use the store's getDefaultView cache (updated optimistically by setSelectedView) so that\n // an in-flight selection change is visible before React re-renders the context.\n const defaultViewEntry = viewsQueries.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n const targetViewId = defaultViewEntry?.data?.id || selectedView?.id\n\n // 3. Determine if the working view is active.\n // IMPORTANT: use !!resolvedWorkingViewId to avoid the undefined === undefined false-positive\n // that would occur on a new project before any working view exists.\n // Note: WORKING_VIEW_ID ('_working_') is a UI-only sentinel; it never appears in\n // server-side cache IDs, so there is no point checking for it here.\n const isWorkingViewActive =\n (!!resolvedWorkingViewId && targetViewId === resolvedWorkingViewId) || cacheDirtyThisTick\n\n // 4. If the working view is active, use its cache as the baseline to prevent stale merges.\n if (isWorkingViewActive && workingViewEntry?.data?.settings) {\n return {\n settings: workingViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n // 5. For named views: use the defaultView cache settings as the baseline.\n // This is populated by the initial useGetDefaultViewQuery fetch and is more reliable\n // than the getView endpoint cache (which is only fetched on-demand when editing).\n if (defaultViewEntry?.data?.settings) {\n return {\n settings: defaultViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n return { workingViewId: resolvedWorkingViewId }\n }, [store, viewContext])\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) =>\n await updateViewSettings(...args, viewContext, onApplyViewChanges, getLatest, markCacheDirty),\n [viewContext, onApplyViewChanges, getLatest],\n )\n\n return {\n updateViewSettings: updateViewSettingsHandler,\n onCreateView: onApplyViewChanges,\n getLatestSettings: getLatest,\n markCacheDirty,\n }\n}\n"],"names":["cacheDirtyThisTick","markCacheDirty","updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onApplyViewChanges","getLatest","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","latestSettingsFromCache","latestWorkingViewIdFromCache","latestSettings","newSettings","newWorkingView","generateWorkingView","viewId","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","updateView","useUpdateViewMutation","useViewsContext","store","useStore","useCallback","arg","patchPayload","key","state","workingViewEntry","viewsQueries","resolvedWorkingViewId","defaultViewEntry","targetViewId","args"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"viewUpdateHelper.es.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * Sequential updateViewSettings calls in the same event tick MUST chain correctly:\n * the second call has to see the first call's changes. Closure-captured\n * `viewSettings` does not refresh between sync calls (no re-render yet), so we\n * read the latest settings from the RTK Query cache at call time instead.\n * RTK's updateView mutation performs an optimistic cache write in\n * `onQueryStarted`, so the cache is already up-to-date by the time the next\n * call reads it.\n */\n\nimport {\n CreateViewApiArg,\n EntityIdResponse,\n useCreateViewMutation,\n useUpdateViewMutation,\n viewsQueries,\n} from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useStore } from 'react-redux'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\n// Module-level flag shared across every useViewUpdateHelper instance. Set true\n// when a mutation has been dispatched in the current tick (RTK cache is now\n// optimistically fresh); reset on the next microtask. Must be module-level so\n// that two different hook instances (e.g. ProjectOverviewDataProvider +\n// ProjectOverviewContext) coordinate correctly when writes flow through one\n// and subsequent reads come from the other in the same event tick.\nlet cacheDirtyThisTick = false\nconst markCacheDirty = () => {\n if (cacheDirtyThisTick) return\n cacheDirtyThisTick = true\n queueMicrotask(() => {\n cacheDirtyThisTick = false\n })\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport interface LatestSettingsResult {\n settings?: any\n workingViewId?: string\n}\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onApplyViewChanges: (arg: any, viewId?: string) => Promise<EntityIdResponse | void>,\n // Reads latest effective settings from RTK Query cache at call time. Required to\n // prevent stale-closure races when two updates fire in the same tick.\n getLatest: () => LatestSettingsResult,\n // Invoked synchronously right after the mutation is dispatched. The caller\n // uses this to flip a \"cache is fresh this tick\" flag so subsequent sync\n // calls in the same tick read the just-updated cache instead of stale state.\n markCacheDirty: () => void,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Read latest settings from RTK cache (includes prior same-tick optimistic writes).\n // Fallback to closure-captured value if cache has nothing (first render, etc.).\n const { settings: latestSettingsFromCache, workingViewId: latestWorkingViewIdFromCache } =\n getLatest()\n const latestSettings = latestSettingsFromCache ?? viewSettings\n\n // If we have no settings baseline at all (neither from cache nor from context),\n // abort to prevent writing a partial payload that would overwrite saved settings.\n // This is a defence-in-depth guard; in normal flow isLoadingViews prevents callers\n // from triggering updates before data is available.\n if (latestSettings === undefined) {\n console.warn(\n 'updateViewSettings: no settings baseline available, aborting to prevent data loss.',\n )\n return\n }\n\n // Create settings with updates\n const newSettings = { ...latestSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n const viewId = latestWorkingViewIdFromCache ?? workingView?.id\n if (viewId) {\n newWorkingView.id = viewId\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n // only include the fields that are updating (just settings)\n const payload = viewId ? { settings: newSettings } : newWorkingView\n\n const promise = onApplyViewChanges(\n {\n payload,\n viewType: viewType,\n projectName: projectName,\n },\n viewId,\n )\n\n // Mutation dispatch above ran onQueryStarted synchronously → RTK cache now\n // reflects `newSettings`. Signal this so any subsequent sync call in the\n // same tick reads the fresh cache instead of the stale closure baseline.\n markCacheDirty()\n\n // if not already on the working view: set that the settings have been changed to show the little blue save button and switch to the working view\n // Note: selectedView?.id is always a real UUID from the server, never the WORKING_VIEW_ID sentinel.\n if (!wasWorking || selectedView?.id !== viewId) {\n if (selectedView) {\n onSettingsChanged(true)\n }\n setSelectedView(newWorkingViewId as string)\n }\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n const [updateView] = useUpdateViewMutation()\n\n const viewContext = useViewsContext()\n const store = useStore()\n\n const onApplyViewChanges = useCallback(\n async (arg: any, viewId?: string) => {\n if (viewId) {\n // Filter the payload to only include valid patch fields\n // and ideally only include fields that are actually being updated.\n // Expecting the caller to provide only the fields they want to update in the payload.\n const patchPayload: any = {}\n const patchFields = ['label', 'owner', 'settings']\n patchFields.forEach((key) => {\n if (arg.payload[key] !== undefined) {\n patchPayload[key] = arg.payload[key]\n }\n })\n\n return await updateView({\n viewType: arg.viewType,\n projectName: arg.projectName,\n viewId,\n payload: patchPayload,\n }).unwrap()\n } else {\n return await createView(arg).unwrap()\n }\n },\n [createView, updateView],\n )\n\n // Returns cached settings when a same-tick prior write has refreshed the\n // cache. Otherwise returns undefined and the caller falls back to the\n // closure-captured viewSettings (correct baseline for the first write in a\n // tick, including the named-view → working-view fork).\n const getLatest = useCallback((): LatestSettingsResult => {\n const { viewType, projectName, selectedView, workingView } = viewContext\n if (!viewType) return {}\n\n const state = store.getState() as any\n\n // 1. Get the working view from the store — most authoritative after optimistic writes.\n const workingViewEntry = viewsQueries.endpoints.getWorkingView.select({\n viewType,\n projectName,\n })(state)\n const storeWorkingViewId = workingViewEntry?.data?.id\n // Prefer the store's working view ID over the potentially stale context closure value.\n const resolvedWorkingViewId = storeWorkingViewId || workingView?.id\n\n // 2. Determine the currently targeted view ID.\n // Use the store's getDefaultView cache (updated optimistically by setSelectedView) so that\n // an in-flight selection change is visible before React re-renders the context.\n const defaultViewEntry = viewsQueries.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n const targetViewId = defaultViewEntry?.data?.id || selectedView?.id\n\n // 3. Determine if the working view is active.\n // IMPORTANT: use !!resolvedWorkingViewId to avoid the undefined === undefined false-positive\n // that would occur on a new project before any working view exists.\n // Note: WORKING_VIEW_ID ('_working_') is a UI-only sentinel; it never appears in\n // server-side cache IDs, so there is no point checking for it here.\n const isWorkingViewActive =\n (!!resolvedWorkingViewId && targetViewId === resolvedWorkingViewId) || cacheDirtyThisTick\n\n // 4. If the working view is active, use its cache as the baseline to prevent stale merges.\n if (isWorkingViewActive && workingViewEntry?.data?.settings) {\n return {\n settings: workingViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n // 5. For named views: use the defaultView cache settings as the baseline.\n // This is populated by the initial useGetDefaultViewQuery fetch and is more reliable\n // than the getView endpoint cache (which is only fetched on-demand when editing).\n if (defaultViewEntry?.data?.settings) {\n return {\n settings: defaultViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n return { workingViewId: resolvedWorkingViewId }\n }, [store, viewContext])\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) =>\n await updateViewSettings(...args, viewContext, onApplyViewChanges, getLatest, markCacheDirty),\n [viewContext, onApplyViewChanges, getLatest],\n )\n\n return {\n updateViewSettings: updateViewSettingsHandler,\n onCreateView: onApplyViewChanges,\n getLatestSettings: getLatest,\n markCacheDirty,\n }\n}\n"],"names":["cacheDirtyThisTick","markCacheDirty","updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onApplyViewChanges","getLatest","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","latestSettingsFromCache","latestWorkingViewIdFromCache","latestSettings","newSettings","newWorkingView","generateWorkingView","viewId","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","updateView","useUpdateViewMutation","useViewsContext","store","useStore","useCallback","arg","patchPayload","key","state","workingViewEntry","viewsQueries","resolvedWorkingViewId","defaultViewEntry","targetViewId","args"],"mappings":"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"}
1
+ {"version":3,"file":"viewUpdateHelper.es.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * Sequential updateViewSettings calls in the same event tick MUST chain correctly:\n * the second call has to see the first call's changes. Closure-captured\n * `viewSettings` does not refresh between sync calls (no re-render yet), so we\n * read the latest settings from the RTK Query cache at call time instead.\n * RTK's updateView mutation performs an optimistic cache write in\n * `onQueryStarted`, so the cache is already up-to-date by the time the next\n * call reads it.\n */\n\nimport {\n EntityIdResponse,\n useCreateViewMutation,\n useUpdateViewMutation,\n viewsQueries,\n} from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useStore } from 'react-redux'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\n// Module-level flag shared across every useViewUpdateHelper instance. Set true\n// when a mutation has been dispatched in the current tick (RTK cache is now\n// optimistically fresh); reset on the next microtask. Must be module-level so\n// that two different hook instances (e.g. ProjectOverviewDataProvider +\n// ProjectOverviewContext) coordinate correctly when writes flow through one\n// and subsequent reads come from the other in the same event tick.\nlet cacheDirtyThisTick = false\nconst markCacheDirty = () => {\n if (cacheDirtyThisTick) return\n cacheDirtyThisTick = true\n queueMicrotask(() => {\n cacheDirtyThisTick = false\n })\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport interface LatestSettingsResult {\n settings?: any\n workingViewId?: string\n}\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onApplyViewChanges: (arg: any, viewId?: string) => Promise<EntityIdResponse | void>,\n // Reads latest effective settings from RTK Query cache at call time. Required to\n // prevent stale-closure races when two updates fire in the same tick.\n getLatest: () => LatestSettingsResult,\n // Invoked synchronously right after the mutation is dispatched. The caller\n // uses this to flip a \"cache is fresh this tick\" flag so subsequent sync\n // calls in the same tick read the just-updated cache instead of stale state.\n markCacheDirty: () => void,\n): Promise<void> => {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n\n if (!viewType) throw new Error('No view type provided for updating view settings')\n\n const previousSelectedViewId = selectedView?.id\n const wasWorking = selectedView?.working\n\n try {\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Read latest settings from RTK cache (includes prior same-tick optimistic writes).\n // Fallback to closure-captured value if cache has nothing (first render, etc.).\n const { settings: latestSettingsFromCache, workingViewId: latestWorkingViewIdFromCache } =\n getLatest()\n const latestSettings = latestSettingsFromCache ?? viewSettings\n\n // If we have no settings baseline at all (neither from cache nor from context),\n // abort to prevent writing a partial payload that would overwrite saved settings.\n // This is a defence-in-depth guard; in normal flow isLoadingViews prevents callers\n // from triggering updates before data is available.\n if (latestSettings === undefined) {\n console.warn(\n 'updateViewSettings: no settings baseline available, aborting to prevent data loss.',\n )\n return\n }\n\n // Create settings with updates\n const newSettings = { ...latestSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n\n // Ensure the payload uses the consistent ID if we already have a working view\n const viewId = latestWorkingViewIdFromCache ?? workingView?.id\n if (viewId) {\n newWorkingView.id = viewId\n }\n const newWorkingViewId = newWorkingView.id\n\n // Make API call in background\n // only include the fields that are updating (just settings)\n const payload = viewId ? { settings: newSettings } : newWorkingView\n\n const promise = onApplyViewChanges(\n {\n payload,\n viewType: viewType,\n projectName: projectName,\n },\n viewId,\n )\n\n // Mutation dispatch above ran onQueryStarted synchronously → RTK cache now\n // reflects `newSettings`. Signal this so any subsequent sync call in the\n // same tick reads the fresh cache instead of the stale closure baseline.\n markCacheDirty()\n\n // if not already on the working view: set that the settings have been changed to show the little blue save button and switch to the working view\n // Note: selectedView?.id is always a real UUID from the server, never the WORKING_VIEW_ID sentinel.\n if (!wasWorking || selectedView?.id !== viewId) {\n if (selectedView) {\n onSettingsChanged(true)\n }\n setSelectedView(newWorkingViewId as string)\n }\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n\n if (previousSelectedViewId) {\n setSelectedView(previousSelectedViewId)\n }\n\n if (selectedView && !wasWorking) {\n onSettingsChanged(false)\n }\n\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n const [updateView] = useUpdateViewMutation()\n\n const viewContext = useViewsContext()\n const store = useStore()\n\n const onApplyViewChanges = useCallback(\n async (arg: any, viewId?: string) => {\n if (viewId) {\n // Filter the payload to only include valid patch fields\n // and ideally only include fields that are actually being updated.\n // Expecting the caller to provide only the fields they want to update in the payload.\n const patchPayload: any = {}\n const patchFields = ['label', 'owner', 'settings']\n patchFields.forEach((key) => {\n if (arg.payload[key] !== undefined) {\n patchPayload[key] = arg.payload[key]\n }\n })\n\n return await updateView({\n viewType: arg.viewType,\n projectName: arg.projectName,\n viewId,\n payload: patchPayload,\n }).unwrap()\n } else {\n return await createView(arg).unwrap()\n }\n },\n [createView, updateView],\n )\n\n // Returns cached settings when a same-tick prior write has refreshed the\n // cache. Otherwise returns undefined and the caller falls back to the\n // closure-captured viewSettings (correct baseline for the first write in a\n // tick, including the named-view → working-view fork).\n const getLatest = useCallback((): LatestSettingsResult => {\n const { viewType, projectName, selectedView, workingView } = viewContext\n if (!viewType) return {}\n\n const state = store.getState() as any\n\n // 1. Get the working view from the store — most authoritative after optimistic writes.\n const workingViewEntry = viewsQueries.endpoints.getWorkingView.select({\n viewType,\n projectName,\n })(state)\n const storeWorkingViewId = workingViewEntry?.data?.id\n // Prefer the store's working view ID over the potentially stale context closure value.\n const resolvedWorkingViewId = storeWorkingViewId || workingView?.id\n\n // 2. Determine the currently targeted view ID.\n // Use the store's getDefaultView cache (updated optimistically by setSelectedView) so that\n // an in-flight selection change is visible before React re-renders the context.\n const defaultViewEntry = viewsQueries.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n const targetViewId = defaultViewEntry?.data?.id || selectedView?.id\n\n // 3. Determine if the working view is active.\n // IMPORTANT: use !!resolvedWorkingViewId to avoid the undefined === undefined false-positive\n // that would occur on a new project before any working view exists.\n // Note: WORKING_VIEW_ID ('_working_') is a UI-only sentinel; it never appears in\n // server-side cache IDs, so there is no point checking for it here.\n const isWorkingViewActive =\n (!!resolvedWorkingViewId && targetViewId === resolvedWorkingViewId) || cacheDirtyThisTick\n\n // 4. If the working view is active, use its cache as the baseline to prevent stale merges.\n if (isWorkingViewActive && workingViewEntry?.data?.settings) {\n return {\n settings: workingViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n // 5. For named views: use the defaultView cache settings as the baseline.\n // This is populated by the initial useGetDefaultViewQuery fetch and is more reliable\n // than the getView endpoint cache (which is only fetched on-demand when editing).\n if (defaultViewEntry?.data?.settings) {\n return {\n settings: defaultViewEntry.data.settings,\n workingViewId: resolvedWorkingViewId,\n }\n }\n\n return { workingViewId: resolvedWorkingViewId }\n }, [store, viewContext])\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) =>\n await updateViewSettings(...args, viewContext, onApplyViewChanges, getLatest, markCacheDirty),\n [viewContext, onApplyViewChanges, getLatest],\n )\n\n return {\n updateViewSettings: updateViewSettingsHandler,\n onCreateView: onApplyViewChanges,\n getLatestSettings: getLatest,\n markCacheDirty,\n }\n}\n"],"names":["cacheDirtyThisTick","markCacheDirty","updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onApplyViewChanges","getLatest","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","previousSelectedViewId","wasWorking","latestSettingsFromCache","latestWorkingViewIdFromCache","latestSettings","newSettings","newWorkingView","generateWorkingView","viewId","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","updateView","useUpdateViewMutation","useViewsContext","store","useStore","useCallback","arg","patchPayload","key","state","workingViewEntry","viewsQueries","resolvedWorkingViewId","defaultViewEntry","targetViewId","args"],"mappings":"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"}