@ynput/ayon-frontend-shared 0.3.46 → 0.3.48

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 (761) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +38 -35
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +231 -228
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +193 -25
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/Views.cjs.js +1 -1
  11. package/dist/Views.es.js +27 -26
  12. package/dist/_virtual/index.cjs15.js +1 -1
  13. package/dist/_virtual/index.cjs18.js +1 -1
  14. package/dist/_virtual/index.cjs19.js +1 -1
  15. package/dist/_virtual/index.cjs22.js +1 -1
  16. package/dist/_virtual/index.cjs23.js +1 -1
  17. package/dist/_virtual/index.cjs24.js +1 -1
  18. package/dist/_virtual/index.cjs4.js +1 -1
  19. package/dist/_virtual/index.cjs5.js +1 -1
  20. package/dist/_virtual/index.cjs6.js +1 -1
  21. package/dist/_virtual/index.cjs8.js +1 -1
  22. package/dist/_virtual/index.cjs9.js +1 -1
  23. package/dist/_virtual/index.es10.js +2 -2
  24. package/dist/_virtual/index.es11.js +2 -2
  25. package/dist/_virtual/index.es13.js +2 -2
  26. package/dist/_virtual/index.es14.js +2 -2
  27. package/dist/_virtual/index.es15.js +2 -2
  28. package/dist/_virtual/index.es16.js +2 -2
  29. package/dist/_virtual/index.es17.js +2 -2
  30. package/dist/_virtual/index.es18.js +5 -2
  31. package/dist/_virtual/index.es18.js.map +1 -1
  32. package/dist/_virtual/index.es19.js +2 -2
  33. package/dist/_virtual/index.es22.js +3 -3
  34. package/dist/_virtual/index.es23.js +5 -5
  35. package/dist/_virtual/index.es24.js +5 -5
  36. package/dist/_virtual/index.es4.js +2 -5
  37. package/dist/_virtual/index.es4.js.map +1 -1
  38. package/dist/_virtual/index.es5.js +5 -2
  39. package/dist/_virtual/index.es5.js.map +1 -1
  40. package/dist/_virtual/index.es6.js +2 -2
  41. package/dist/_virtual/index.es8.js +2 -2
  42. package/dist/_virtual/index.es9.js +2 -5
  43. package/dist/_virtual/index.es9.js.map +1 -1
  44. package/dist/api.cjs.js +1 -1
  45. package/dist/api.es.js +347 -344
  46. package/dist/api.es.js.map +1 -1
  47. package/dist/components.cjs.js +1 -1
  48. package/dist/components.es.js +41 -39
  49. package/dist/components.es.js.map +1 -1
  50. package/dist/context.cjs.js +1 -1
  51. package/dist/context.es.js +55 -48
  52. package/dist/context.es.js.map +1 -1
  53. package/dist/index.cjs.js +1 -1
  54. package/dist/index.es.js +24 -21
  55. package/dist/index.es.js.map +1 -1
  56. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  57. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  58. package/dist/node_modules/react-use-websocket/dist/index.cjs.js +1 -1
  59. package/dist/node_modules/react-use-websocket/dist/index.es.js +1 -1
  60. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  61. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  62. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  63. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  64. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  65. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  66. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  67. package/dist/node_modules/remove-accents/index.es.js +1 -1
  68. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  69. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  70. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  71. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  72. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  73. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  74. package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.cjs.js +1 -1
  75. package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.es.js +1 -1
  76. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.cjs.js +1 -1
  77. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
  78. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
  79. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
  80. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
  81. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
  82. package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.cjs.js +1 -1
  83. package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.es.js +1 -1
  84. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
  85. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
  86. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.cjs.js +1 -1
  87. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.es.js +1 -1
  88. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js +1 -1
  89. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js.map +1 -1
  90. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.es.js +1 -1
  91. package/dist/shared/node_modules/@module-federation/sdk/dist/index.cjs.js +1 -1
  92. package/dist/shared/node_modules/@module-federation/sdk/dist/index.es.js +1 -1
  93. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  94. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  95. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  96. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js.map +1 -1
  97. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  98. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  99. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js.map +1 -1
  100. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  101. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  102. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js.map +1 -1
  103. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  104. package/dist/shared/src/api/generated/graphql.cjs.js +3 -3
  105. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  106. package/dist/shared/src/api/generated/graphql.es.js +3 -3
  107. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/actions/refreshActiveAndPurgeOthers.cjs.js +2 -0
  109. package/dist/shared/src/api/queries/actions/refreshActiveAndPurgeOthers.cjs.js.map +1 -0
  110. package/dist/shared/src/api/queries/actions/refreshActiveAndPurgeOthers.es.js +42 -0
  111. package/dist/shared/src/api/queries/actions/refreshActiveAndPurgeOthers.es.js.map +1 -0
  112. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -1
  113. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  114. package/dist/shared/src/api/queries/activities/getActivities.es.js +121 -156
  115. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  116. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js +1 -1
  117. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  118. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +93 -68
  119. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  120. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  121. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  122. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +63 -56
  123. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  124. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +1 -1
  125. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  126. package/dist/shared/src/api/queries/entities/updateEntity.es.js +120 -119
  127. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  128. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  129. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  130. package/dist/shared/src/api/queries/entityLists/getLists.es.js +70 -62
  131. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  132. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  133. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  134. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  135. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  136. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +85 -85
  137. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  138. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  139. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  140. package/dist/shared/src/api/queries/overview/getOverview.es.js +267 -259
  141. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  142. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  143. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  144. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +85 -79
  145. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  146. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  147. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  148. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +170 -2
  149. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  150. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  151. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  152. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +18 -15
  153. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  154. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  155. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  156. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +165 -2
  157. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  158. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +2 -2
  159. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  160. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +164 -2
  161. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  162. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  163. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  164. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +174 -2
  165. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  166. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  167. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  168. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +173 -2
  169. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  170. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  171. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  172. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +5 -2
  173. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  174. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  175. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  176. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +16 -13
  177. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  178. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  179. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  180. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +168 -2
  181. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  182. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  183. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  184. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +260 -89
  185. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  186. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  187. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  188. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +44 -78
  189. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  190. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  191. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  192. package/dist/shared/src/components/LinksManager/LinksManager.es.js +172 -2
  193. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  194. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  195. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  196. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +5 -2
  197. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  198. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  199. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  200. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +173 -2
  201. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  202. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  203. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  204. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +158 -2
  205. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  206. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  207. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  208. package/dist/shared/src/components/Menu/Menu.es.js +171 -2
  209. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  210. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  211. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  212. package/dist/shared/src/components/Menu/MenuItem.es.js +167 -0
  213. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  214. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  215. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  216. package/dist/shared/src/components/Menu/MenuList.es.js +209 -40
  217. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  218. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  219. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  220. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +171 -2
  221. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  222. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  223. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  224. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +170 -2
  225. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  226. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  227. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  228. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +16 -13
  229. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  230. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  231. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  232. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +82 -79
  233. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  234. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  235. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  236. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +169 -3
  237. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  238. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  239. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  240. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +12 -9
  241. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  242. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  243. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  244. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +5 -2
  245. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  246. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  247. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  248. package/dist/shared/src/components/RenameForm/RenameForm.es.js +5 -2
  249. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  250. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  251. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  252. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +41 -38
  253. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  254. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  255. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  256. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +19 -16
  257. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  258. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  259. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  260. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +17 -14
  261. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  262. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  263. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  264. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +18 -15
  265. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  266. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  267. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  268. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +453 -284
  269. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  270. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +2 -2
  271. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  272. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +172 -2
  273. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  274. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  275. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  276. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +18 -15
  277. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  278. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  279. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  280. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +18 -15
  281. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  282. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js +52 -0
  283. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js.map +1 -0
  284. package/dist/shared/src/components/SyncButton/SyncButton.es.js +265 -0
  285. package/dist/shared/src/components/SyncButton/SyncButton.es.js.map +1 -0
  286. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  287. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  288. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +171 -2
  289. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  290. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  291. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  292. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +18 -15
  293. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  294. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  295. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  296. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +20 -17
  297. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  298. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  299. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  300. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +18 -15
  301. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  302. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  303. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  304. package/dist/shared/src/containers/Actions/Actions.es.js +213 -44
  305. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  306. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  307. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  308. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +18 -15
  309. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  310. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  311. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  312. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +39 -36
  313. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  314. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  315. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  316. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +18 -15
  317. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  318. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  319. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  320. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +19 -16
  321. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  322. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  323. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  324. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +51 -48
  325. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  326. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  327. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  328. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +173 -3
  329. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  330. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  331. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  332. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +18 -15
  333. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  334. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  335. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  336. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +18 -15
  337. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  338. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  339. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  340. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +168 -2
  341. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  342. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  343. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +32 -29
  345. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  346. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  347. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  348. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +18 -15
  349. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  350. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  351. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +81 -78
  353. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  355. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  356. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +144 -2
  357. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  358. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  359. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  360. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +174 -2
  361. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  362. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  363. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  364. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +18 -15
  365. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  366. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  367. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  368. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +18 -15
  369. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  370. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  371. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  372. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +18 -15
  373. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  374. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  375. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  376. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +18 -15
  377. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  378. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  379. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  380. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +178 -7
  381. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  382. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  383. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  384. package/dist/shared/src/containers/Feed/Feed.es.js +206 -59
  385. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  386. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  387. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  388. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +18 -15
  389. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  390. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  391. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  392. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +19 -16
  393. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  394. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  395. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  396. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +18 -15
  397. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  398. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js +1 -1
  399. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js.map +1 -1
  400. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js +16 -16
  401. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js.map +1 -1
  402. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.cjs.js +1 -1
  403. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.cjs.js.map +1 -1
  404. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.es.js +30 -17
  405. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.es.js.map +1 -1
  406. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.cjs.js +11 -0
  407. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.cjs.js.map +1 -0
  408. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.es.js +27 -0
  409. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.es.js.map +1 -0
  410. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  411. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  412. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +20 -17
  413. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  414. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  415. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  416. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +218 -39
  417. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  418. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  419. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  420. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +78 -75
  421. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  422. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  423. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  424. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +22 -19
  425. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  426. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  427. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  428. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +173 -2
  429. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  430. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  431. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  432. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +173 -2
  433. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  434. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
  435. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  436. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +181 -14
  437. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  438. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  439. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  440. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +169 -2
  441. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  442. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  443. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  444. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +80 -77
  445. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  446. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  447. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  448. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +197 -26
  449. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  450. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.cjs.js +1 -1
  451. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.cjs.js.map +1 -1
  452. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.es.js +9 -8
  453. package/dist/shared/src/containers/Feed/helpers/groupActivityVersions.es.js.map +1 -1
  454. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  455. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  456. package/dist/shared/src/containers/ListTable/ListTable.es.js +24 -21
  457. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  458. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  459. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  460. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +18 -15
  461. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  462. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  463. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  464. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +17 -14
  465. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  466. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  467. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  468. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +5 -2
  469. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  470. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  471. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  472. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +18 -15
  473. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  474. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  475. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  476. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +5 -2
  477. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  478. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  479. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  480. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +84 -81
  481. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  482. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  483. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  484. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +17 -14
  485. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  486. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  487. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  488. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +18 -15
  489. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  490. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -5
  491. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +508 -321
  493. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  494. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  495. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  496. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +18 -15
  497. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  498. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  499. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  500. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +175 -4
  501. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  502. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  503. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  504. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +176 -6
  505. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  506. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  507. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  508. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +18 -15
  509. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  510. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  511. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  512. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +174 -2
  513. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  514. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  515. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  516. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +21 -18
  517. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  518. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  519. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  520. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +18 -15
  521. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  522. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  523. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  524. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +18 -15
  525. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  527. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  528. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +18 -15
  529. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  530. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  531. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  532. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +18 -15
  533. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  535. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  536. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +5 -2
  537. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  539. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  540. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +406 -396
  541. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  542. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  543. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  544. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +18 -15
  545. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  547. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  548. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +18 -15
  549. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  550. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  552. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +19 -17
  553. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  554. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  555. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +5 -2
  557. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +5 -2
  561. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  562. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +18 -15
  565. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  566. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  567. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  568. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +18 -15
  569. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  570. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  571. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  572. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +265 -95
  573. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  574. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  575. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  576. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +29 -26
  577. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  578. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  579. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  580. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +18 -15
  581. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  582. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  583. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +94 -91
  585. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +3 -3
  587. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +25 -22
  589. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  591. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +20 -17
  593. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +4 -4
  595. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +188 -34
  597. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  599. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +18 -15
  601. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  602. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  603. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  604. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +25 -22
  605. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +2 -2
  607. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +225 -61
  609. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  610. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  611. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  612. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +18 -15
  613. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  614. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  615. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  616. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +21 -18
  617. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  618. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js +1 -1
  619. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js.map +1 -1
  620. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js +37 -37
  621. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js.map +1 -1
  622. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  623. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  624. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +353 -51
  625. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  626. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  627. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  628. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +172 -2
  629. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  630. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  631. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  632. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +18 -15
  633. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  634. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  635. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  636. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +216 -45
  637. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  638. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  639. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  640. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +185 -13
  641. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  642. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  643. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  644. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +174 -2
  645. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  646. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  647. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  648. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +40 -289
  649. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  650. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  651. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  652. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +174 -2
  653. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  654. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  655. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  656. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +173 -2
  657. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  658. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  659. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  660. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +174 -2
  661. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  662. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  663. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  664. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +174 -2
  665. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  666. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  667. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  668. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +227 -53
  669. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  670. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  671. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  672. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +176 -6
  673. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  674. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  675. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  676. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +5 -2
  677. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  678. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  679. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  680. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +185 -18
  681. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  682. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  683. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  684. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +209 -38
  685. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  686. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  687. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  688. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +180 -10
  689. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  690. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  691. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  692. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +107 -73
  693. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  694. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  695. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  696. package/dist/shared/src/context/DetailsPanelContext.es.js +210 -38
  697. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  698. package/dist/shared/src/context/EntityUpdatesContext.cjs.js +2 -0
  699. package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -0
  700. package/dist/shared/src/context/EntityUpdatesContext.es.js +392 -0
  701. package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -0
  702. package/dist/shared/src/context/EntityUpdatesContextInstance.cjs.js +2 -0
  703. package/dist/shared/src/context/EntityUpdatesContextInstance.cjs.js.map +1 -0
  704. package/dist/shared/src/context/EntityUpdatesContextInstance.es.js +6 -0
  705. package/dist/shared/src/context/EntityUpdatesContextInstance.es.js.map +1 -0
  706. package/dist/shared/src/context/MenuContext.es.js +3 -3
  707. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  708. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  709. package/dist/shared/src/context/PowerpackContext.es.js +178 -6
  710. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  711. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  712. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  713. package/dist/shared/src/context/ProjectFoldersContext.es.js +196 -24
  714. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  715. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  716. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  717. package/dist/shared/src/context/SubtasksModulesContext.es.js +176 -4
  718. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  719. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  720. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  721. package/dist/shared/src/context/WebsocketContext.es.js +52 -45
  722. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  723. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  724. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  725. package/dist/shared/src/hooks/useEntityUpdate.es.js +174 -2
  726. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  727. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  728. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  729. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +174 -2
  730. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  731. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  732. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  733. package/dist/shared/src/hooks/useHierarchyTable.es.js +174 -2
  734. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  735. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  736. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  737. package/dist/shared/src/hooks/useUserProjectConfig.es.js +174 -2
  738. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  739. package/dist/types/api/generated/graphql.d.ts +3 -3
  740. package/dist/types/api/queries/actions/index.d.ts +1 -0
  741. package/dist/types/api/queries/actions/refreshActiveAndPurgeOthers.d.ts +11 -0
  742. package/dist/types/api/queries/activities/getActivities.d.ts +65 -855
  743. package/dist/types/api/queries/activities/util/activitiesHelpers.d.ts +19 -0
  744. package/dist/types/api/queries/links/getEntityLinks.d.ts +4 -2
  745. package/dist/types/components/SyncButton/SyncButton.d.ts +11 -0
  746. package/dist/types/components/SyncButton/index.d.ts +1 -0
  747. package/dist/types/components/index.d.ts +1 -0
  748. package/dist/types/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.d.ts +7 -0
  749. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.d.ts +3 -0
  750. package/dist/types/containers/Feed/hooks/useGetFeedActivitiesData.d.ts +3 -42
  751. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -4
  752. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +10 -2
  753. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +9 -2
  754. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +1 -0
  755. package/dist/types/containers/Slicer/hooks/useSelectedEntityIds.d.ts +7 -1
  756. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +7 -0
  757. package/dist/types/context/EntityUpdatesContext.d.ts +44 -0
  758. package/dist/types/context/EntityUpdatesContextInstance.d.ts +2 -0
  759. package/dist/types/context/ProjectFoldersContext.d.ts +2 -2
  760. package/dist/types/context/index.d.ts +1 -0
  761. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getFolders.cjs.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\nimport { api as eventsApi } from '@shared/api/generated/events'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n async onCacheEntryAdded(\n args,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n const { projectName } = args || {}\n const patchFields = (args as any)?.patch as string[] | undefined\n\n const topicFieldMap: Record<string, string> = {\n 'entity.folder.label_changed': 'label',\n 'entity.folder.renamed': 'name',\n 'entity.folder.type_changed': 'folderType',\n 'entity.folder.status_changed': 'status',\n 'entity.folder.tags_changed': 'tags',\n 'entity.folder.attrib_changed': 'attrib',\n }\n\n const topics = ['entity.folder', 'entity.folder.created', 'entity.folder.deleted']\n const tokens: (string | undefined)[] = []\n\n // Simplified trailing debounce approach:\n // - Collect updated folder IDs for 2000ms window\n // - If a creation topic appears, perform one full list refetch (within debounce window)\n // - Otherwise, fetch each pending event and patch existing cache entries only\n const MIN_INTERVAL = 2000\n const pendingMessages = new Map<string, any>()\n let resyncFlag = false // full list refetch needed (created or deleted)\n let timer: ReturnType<typeof setTimeout> | null = null\n let processing = false\n\n const clearTimer = () => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n }\n\n const schedule = () => {\n clearTimer()\n timer = setTimeout(run, MIN_INTERVAL)\n }\n\n // All non-created/deleted events are treated as incremental updates.\n const run = async () => {\n clearTimer()\n if (processing || !projectName) return\n processing = true\n try {\n if (resyncFlag) {\n resyncFlag = false\n try {\n // get full folder list and update cache - done for created events\n const result = await dispatch(\n foldersApi.endpoints.getFolderList.initiate(\n // @ts-expect-error realtime flag to avoid toggling global isFetching for watchers\n { ...args, realtime: true },\n { forceRefetch: true },\n ),\n ).unwrap()\n updateCachedData(() => result)\n } catch {\n /* ignore */\n console.warn('Failed to refetch folder list on resync')\n } finally {\n pendingMessages.clear()\n }\n return\n }\n\n if (pendingMessages.size === 0) return\n const messages = Array.from(pendingMessages.values())\n pendingMessages.clear()\n type Patch = {\n folderId: string\n partial?: Record<string, any>\n attribMerge?: Record<string, any>\n updatedAt?: string\n }\n const patches: Patch[] = []\n await Promise.all(\n messages.map(async (message) => {\n try {\n const topic = message.topic\n const summary = message.summary || {}\n const folderId = summary.entityId\n if (!folderId) return\n const fieldName = topicFieldMap[topic]\n if (!fieldName) return\n\n // OPTIMIZATION: use value from summary if available (for root level fields)\n if (summary.value !== undefined && fieldName !== 'attrib') {\n let value = summary.value\n\n // Cast value to proper type\n if (fieldName === 'tags') {\n if (!Array.isArray(value)) {\n value = typeof value === 'string' ? value.split(',').filter(Boolean) : []\n }\n } else if (value !== null && typeof value !== 'string') {\n value = String(value)\n }\n\n const partial: Record<string, any> = {\n [fieldName]: value,\n updatedAt: message.updatedAt,\n }\n if (summary.parentId !== undefined) partial.parentId = summary.parentId\n patches.push({ folderId, partial })\n return\n }\n\n // Fallback: Fetch each event and apply incremental updates\n const eventId = message.id\n const event = await dispatch(\n eventsApi.endpoints.getEvent.initiate({ eventId }, { forceRefetch: true }),\n ).unwrap()\n const payload: any = event?.payload || {}\n const eventSummary: any = event?.summary || {}\n if (\n fieldName === 'attrib' &&\n payload?.newValue &&\n typeof payload.newValue === 'object'\n ) {\n patches.push({\n folderId,\n attribMerge: payload.newValue,\n updatedAt: event.updatedAt,\n })\n } else {\n const value = payload?.newValue\n if (value === undefined) return\n const partial: Record<string, any> = { updatedAt: event.updatedAt }\n partial[fieldName] = value\n // parentId might accompany some changes in summary\n if (eventSummary.parentId !== undefined)\n partial.parentId = eventSummary.parentId\n patches.push({ folderId, partial })\n }\n } catch {\n /* ignore single event errors */\n }\n }),\n )\n if (!patches.length) return\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n patches.forEach((patch) => {\n const idx = draft.folders.findIndex((f: any) => f.id === patch.folderId)\n // if folder not found, skip\n if (idx === -1) return\n // apply patch to existing folder\n if (patch.attribMerge) {\n // merge attribs if attribMerge is provided\n draft.folders[idx].attrib = {\n ...(draft.folders[idx].attrib || {}),\n ...patch.attribMerge,\n }\n // update updatedAt if provided\n if (patch.updatedAt) draft.folders[idx].updatedAt = patch.updatedAt\n }\n if (patch.partial) {\n // apply partial update\n draft.folders[idx] = { ...draft.folders[idx], ...patch.partial }\n }\n })\n })\n } finally {\n processing = false\n // If new events came in while we were processing, schedule another run\n if (pendingMessages.size > 0 || resyncFlag) {\n schedule()\n }\n }\n }\n\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n messages.forEach((message) => {\n if (message.summary.entityType === 'folder' && message.summary.thumbnailHash) {\n const idx = draft.folders.findIndex(\n (f: any) => f.id === message.summary.entityId,\n )\n if (idx !== -1) {\n draft.folders[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['folder'],\n )\n\n const handlePubSub = (_topic: string, _message: any) => {\n const isMembership = _topic.endsWith('.created') || _topic.endsWith('.deleted')\n\n if (isMembership) {\n const eventType = _topic.endsWith('.created') ? 'created' : 'deleted'\n // Backward compatibility: If no patch filters are provided, always sync membership.\n // If patch filters ARE provided, only sync if 'created'/'deleted' tokens are present.\n if (patchFields && !patchFields.includes(eventType)) return\n\n resyncFlag = true\n } else {\n const fieldName = topicFieldMap[_topic]\n // Backward compatibility: If no patch filters are provided, allow all updates (that we have mapping for).\n // If patch filters ARE provided, only allow fields explicitly listed in the patch array.\n if (patchFields && (!fieldName || !patchFields.includes(fieldName))) {\n return\n }\n\n const eventId = _message?.id\n if (eventId) {\n pendingMessages.set(eventId, _message)\n }\n }\n\n schedule()\n }\n\n topics.forEach((t) => tokens.push(PubSub.subscribe(t, handlePubSub)))\n } catch {\n // silent\n }\n\n await cacheEntryRemoved\n tokens.forEach((t) => PubSub.unsubscribe(t))\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n clearTimer()\n },\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["enhancedApi","foldersApi","result","_e","projectName","id","args","cacheDataLoaded","cacheEntryRemoved","updateCachedData","dispatch","patchFields","topicFieldMap","topics","tokens","MIN_INTERVAL","pendingMessages","resyncFlag","timer","processing","clearTimer","schedule","run","messages","patches","message","topic","summary","folderId","fieldName","value","partial","eventId","event","eventsApi","payload","eventSummary","draft","patch","idx","f","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","_message","eventType","PubSub","t","useGetFolderHierarchyQuery","useGetFolderListQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getFolders.cjs.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\nimport { api as eventsApi } from '@shared/api/generated/events'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n async onCacheEntryAdded(\n args,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n const { projectName } = args || {}\n const patchFields = (args as any)?.patch as string[] | undefined\n\n const topicFieldMap: Record<string, string> = {\n 'entity.folder.label_changed': 'label',\n 'entity.folder.renamed': 'name',\n 'entity.folder.type_changed': 'folderType',\n 'entity.folder.status_changed': 'status',\n 'entity.folder.tags_changed': 'tags',\n 'entity.folder.attrib_changed': 'attrib',\n }\n\n const topics = ['entity.folder', 'entity.folder.created', 'entity.folder.deleted']\n const tokens: (string | undefined)[] = []\n\n // Simplified trailing debounce approach:\n // - Collect updated folder IDs for 2000ms window\n // - If a deletion topic appears, perform one full list refetch (within debounce window)\n // - Otherwise, fetch each pending event and patch existing cache entries only\n const MIN_INTERVAL = 2000\n const pendingMessages = new Map<string, any>()\n let resyncFlag = false // full list refetch needed for deleted folders\n let timer: ReturnType<typeof setTimeout> | null = null\n let processing = false\n\n const clearTimer = () => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n }\n\n const schedule = () => {\n clearTimer()\n timer = setTimeout(run, MIN_INTERVAL)\n }\n\n // All non-created/deleted events are treated as incremental updates.\n const run = async () => {\n clearTimer()\n if (processing || !projectName) return\n processing = true\n try {\n if (resyncFlag) {\n resyncFlag = false\n try {\n // get full folder list and update cache after folder deletion\n const result = await dispatch(\n foldersApi.endpoints.getFolderList.initiate(\n // @ts-expect-error realtime flag to avoid toggling global isFetching for watchers\n { ...args, realtime: true },\n { forceRefetch: true },\n ),\n ).unwrap()\n updateCachedData(() => result)\n } catch {\n /* ignore */\n console.warn('Failed to refetch folder list on resync')\n } finally {\n pendingMessages.clear()\n }\n return\n }\n\n if (pendingMessages.size === 0) return\n const messages = Array.from(pendingMessages.values())\n pendingMessages.clear()\n type Patch = {\n folderId: string\n partial?: Record<string, any>\n attribMerge?: Record<string, any>\n updatedAt?: string\n }\n const patches: Patch[] = []\n await Promise.all(\n messages.map(async (message) => {\n try {\n const topic = message.topic\n const summary = message.summary || {}\n const folderId = summary.entityId\n if (!folderId) return\n const fieldName = topicFieldMap[topic]\n if (!fieldName) return\n\n // OPTIMIZATION: use value from summary if available (for root level fields)\n if (summary.value !== undefined && fieldName !== 'attrib') {\n let value = summary.value\n\n // Cast value to proper type\n if (fieldName === 'tags') {\n if (!Array.isArray(value)) {\n value = typeof value === 'string' ? value.split(',').filter(Boolean) : []\n }\n } else if (value !== null && typeof value !== 'string') {\n value = String(value)\n }\n\n const partial: Record<string, any> = {\n [fieldName]: value,\n updatedAt: message.updatedAt,\n }\n if (summary.parentId !== undefined) partial.parentId = summary.parentId\n patches.push({ folderId, partial })\n return\n }\n\n // Fallback: Fetch each event and apply incremental updates\n const eventId = message.id\n const event = await dispatch(\n eventsApi.endpoints.getEvent.initiate({ eventId }, { forceRefetch: true }),\n ).unwrap()\n const payload: any = event?.payload || {}\n const eventSummary: any = event?.summary || {}\n if (\n fieldName === 'attrib' &&\n payload?.newValue &&\n typeof payload.newValue === 'object'\n ) {\n patches.push({\n folderId,\n attribMerge: payload.newValue,\n updatedAt: event.updatedAt,\n })\n } else {\n const value = payload?.newValue\n if (value === undefined) return\n const partial: Record<string, any> = { updatedAt: event.updatedAt }\n partial[fieldName] = value\n // parentId might accompany some changes in summary\n if (eventSummary.parentId !== undefined)\n partial.parentId = eventSummary.parentId\n patches.push({ folderId, partial })\n }\n } catch {\n /* ignore single event errors */\n }\n }),\n )\n if (!patches.length) return\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n patches.forEach((patch) => {\n const idx = draft.folders.findIndex((f: any) => f.id === patch.folderId)\n // if folder not found, skip\n if (idx === -1) return\n // apply patch to existing folder\n if (patch.attribMerge) {\n // merge attribs if attribMerge is provided\n draft.folders[idx].attrib = {\n ...(draft.folders[idx].attrib || {}),\n ...patch.attribMerge,\n }\n // update updatedAt if provided\n if (patch.updatedAt) draft.folders[idx].updatedAt = patch.updatedAt\n }\n if (patch.partial) {\n // apply partial update\n draft.folders[idx] = { ...draft.folders[idx], ...patch.partial }\n }\n })\n })\n } finally {\n processing = false\n // If new events came in while we were processing, schedule another run\n if (pendingMessages.size > 0 || resyncFlag) {\n schedule()\n }\n }\n }\n\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n messages.forEach((message) => {\n if (message.summary.entityType === 'folder' && message.summary.thumbnailHash) {\n const idx = draft.folders.findIndex(\n (f: any) => f.id === message.summary.entityId,\n )\n if (idx !== -1) {\n draft.folders[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['folder'],\n )\n\n const handlePubSub = (_topic: string, _message: any) => {\n const isMembership = _topic.endsWith('.created') || _topic.endsWith('.deleted')\n\n if (isMembership) {\n const eventType = _topic.endsWith('.created') ? 'created' : 'deleted'\n // Backward compatibility: If no patch filters are provided, always sync membership.\n // If patch filters ARE provided, only sync if 'created'/'deleted' tokens are present.\n if (patchFields && !patchFields.includes(eventType)) return\n\n resyncFlag = true\n } else {\n const fieldName = topicFieldMap[_topic]\n // Backward compatibility: If no patch filters are provided, allow all updates (that we have mapping for).\n // If patch filters ARE provided, only allow fields explicitly listed in the patch array.\n if (patchFields && (!fieldName || !patchFields.includes(fieldName))) {\n return\n }\n\n const eventId = _message?.id\n if (eventId) {\n pendingMessages.set(eventId, _message)\n }\n }\n\n schedule()\n }\n\n topics.forEach((t) => tokens.push(PubSub.subscribe(t, handlePubSub)))\n } catch {\n // silent\n }\n\n await cacheEntryRemoved\n tokens.forEach((t) => PubSub.unsubscribe(t))\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n clearTimer()\n },\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["enhancedApi","foldersApi","result","_e","projectName","id","args","cacheDataLoaded","cacheEntryRemoved","updateCachedData","dispatch","patchFields","topicFieldMap","topics","tokens","MIN_INTERVAL","pendingMessages","resyncFlag","timer","processing","clearTimer","schedule","run","messages","patches","message","topic","summary","folderId","fieldName","value","partial","eventId","event","eventsApi","payload","eventSummary","draft","patch","idx","f","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","_message","eventType","PubSub","t","useGetFolderHierarchyQuery","useGetFolderListQuery"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getFolders.es.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\nimport { api as eventsApi } from '@shared/api/generated/events'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n async onCacheEntryAdded(\n args,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n const { projectName } = args || {}\n const patchFields = (args as any)?.patch as string[] | undefined\n\n const topicFieldMap: Record<string, string> = {\n 'entity.folder.label_changed': 'label',\n 'entity.folder.renamed': 'name',\n 'entity.folder.type_changed': 'folderType',\n 'entity.folder.status_changed': 'status',\n 'entity.folder.tags_changed': 'tags',\n 'entity.folder.attrib_changed': 'attrib',\n }\n\n const topics = ['entity.folder', 'entity.folder.created', 'entity.folder.deleted']\n const tokens: (string | undefined)[] = []\n\n // Simplified trailing debounce approach:\n // - Collect updated folder IDs for 2000ms window\n // - If a creation topic appears, perform one full list refetch (within debounce window)\n // - Otherwise, fetch each pending event and patch existing cache entries only\n const MIN_INTERVAL = 2000\n const pendingMessages = new Map<string, any>()\n let resyncFlag = false // full list refetch needed (created or deleted)\n let timer: ReturnType<typeof setTimeout> | null = null\n let processing = false\n\n const clearTimer = () => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n }\n\n const schedule = () => {\n clearTimer()\n timer = setTimeout(run, MIN_INTERVAL)\n }\n\n // All non-created/deleted events are treated as incremental updates.\n const run = async () => {\n clearTimer()\n if (processing || !projectName) return\n processing = true\n try {\n if (resyncFlag) {\n resyncFlag = false\n try {\n // get full folder list and update cache - done for created events\n const result = await dispatch(\n foldersApi.endpoints.getFolderList.initiate(\n // @ts-expect-error realtime flag to avoid toggling global isFetching for watchers\n { ...args, realtime: true },\n { forceRefetch: true },\n ),\n ).unwrap()\n updateCachedData(() => result)\n } catch {\n /* ignore */\n console.warn('Failed to refetch folder list on resync')\n } finally {\n pendingMessages.clear()\n }\n return\n }\n\n if (pendingMessages.size === 0) return\n const messages = Array.from(pendingMessages.values())\n pendingMessages.clear()\n type Patch = {\n folderId: string\n partial?: Record<string, any>\n attribMerge?: Record<string, any>\n updatedAt?: string\n }\n const patches: Patch[] = []\n await Promise.all(\n messages.map(async (message) => {\n try {\n const topic = message.topic\n const summary = message.summary || {}\n const folderId = summary.entityId\n if (!folderId) return\n const fieldName = topicFieldMap[topic]\n if (!fieldName) return\n\n // OPTIMIZATION: use value from summary if available (for root level fields)\n if (summary.value !== undefined && fieldName !== 'attrib') {\n let value = summary.value\n\n // Cast value to proper type\n if (fieldName === 'tags') {\n if (!Array.isArray(value)) {\n value = typeof value === 'string' ? value.split(',').filter(Boolean) : []\n }\n } else if (value !== null && typeof value !== 'string') {\n value = String(value)\n }\n\n const partial: Record<string, any> = {\n [fieldName]: value,\n updatedAt: message.updatedAt,\n }\n if (summary.parentId !== undefined) partial.parentId = summary.parentId\n patches.push({ folderId, partial })\n return\n }\n\n // Fallback: Fetch each event and apply incremental updates\n const eventId = message.id\n const event = await dispatch(\n eventsApi.endpoints.getEvent.initiate({ eventId }, { forceRefetch: true }),\n ).unwrap()\n const payload: any = event?.payload || {}\n const eventSummary: any = event?.summary || {}\n if (\n fieldName === 'attrib' &&\n payload?.newValue &&\n typeof payload.newValue === 'object'\n ) {\n patches.push({\n folderId,\n attribMerge: payload.newValue,\n updatedAt: event.updatedAt,\n })\n } else {\n const value = payload?.newValue\n if (value === undefined) return\n const partial: Record<string, any> = { updatedAt: event.updatedAt }\n partial[fieldName] = value\n // parentId might accompany some changes in summary\n if (eventSummary.parentId !== undefined)\n partial.parentId = eventSummary.parentId\n patches.push({ folderId, partial })\n }\n } catch {\n /* ignore single event errors */\n }\n }),\n )\n if (!patches.length) return\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n patches.forEach((patch) => {\n const idx = draft.folders.findIndex((f: any) => f.id === patch.folderId)\n // if folder not found, skip\n if (idx === -1) return\n // apply patch to existing folder\n if (patch.attribMerge) {\n // merge attribs if attribMerge is provided\n draft.folders[idx].attrib = {\n ...(draft.folders[idx].attrib || {}),\n ...patch.attribMerge,\n }\n // update updatedAt if provided\n if (patch.updatedAt) draft.folders[idx].updatedAt = patch.updatedAt\n }\n if (patch.partial) {\n // apply partial update\n draft.folders[idx] = { ...draft.folders[idx], ...patch.partial }\n }\n })\n })\n } finally {\n processing = false\n // If new events came in while we were processing, schedule another run\n if (pendingMessages.size > 0 || resyncFlag) {\n schedule()\n }\n }\n }\n\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n messages.forEach((message) => {\n if (message.summary.entityType === 'folder' && message.summary.thumbnailHash) {\n const idx = draft.folders.findIndex(\n (f: any) => f.id === message.summary.entityId,\n )\n if (idx !== -1) {\n draft.folders[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['folder'],\n )\n\n const handlePubSub = (_topic: string, _message: any) => {\n const isMembership = _topic.endsWith('.created') || _topic.endsWith('.deleted')\n\n if (isMembership) {\n const eventType = _topic.endsWith('.created') ? 'created' : 'deleted'\n // Backward compatibility: If no patch filters are provided, always sync membership.\n // If patch filters ARE provided, only sync if 'created'/'deleted' tokens are present.\n if (patchFields && !patchFields.includes(eventType)) return\n\n resyncFlag = true\n } else {\n const fieldName = topicFieldMap[_topic]\n // Backward compatibility: If no patch filters are provided, allow all updates (that we have mapping for).\n // If patch filters ARE provided, only allow fields explicitly listed in the patch array.\n if (patchFields && (!fieldName || !patchFields.includes(fieldName))) {\n return\n }\n\n const eventId = _message?.id\n if (eventId) {\n pendingMessages.set(eventId, _message)\n }\n }\n\n schedule()\n }\n\n topics.forEach((t) => tokens.push(PubSub.subscribe(t, handlePubSub)))\n } catch {\n // silent\n }\n\n await cacheEntryRemoved\n tokens.forEach((t) => PubSub.unsubscribe(t))\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n clearTimer()\n },\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["enhancedApi","foldersApi","result","_e","projectName","id","args","cacheDataLoaded","cacheEntryRemoved","updateCachedData","dispatch","patchFields","topicFieldMap","topics","tokens","MIN_INTERVAL","pendingMessages","resyncFlag","timer","processing","clearTimer","schedule","run","messages","patches","message","topic","summary","folderId","fieldName","value","partial","eventId","event","eventsApi","payload","eventSummary","draft","patch","idx","f","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","_message","eventType","t","PubSub","useGetFolderHierarchyQuery","useGetFolderListQuery"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAMA,IAAcC,EAAW,iBAAiB;AAAA,EAC9C,WAAW;AAAA,IACT,oBAAoB;AAAA,MAClB,cAAc,CAAC,WAAW;AAAA,IAAA;AAAA,IAE5B,eAAe;AAAA,MACb,cAAc,CAACC,GAAQC,GAAI,EAAE,aAAAC,QAAkB;AAAA,QAC7C;AAAA,QACA,EAAE,MAAM,UAAU,IAAI,OAAA;AAAA,QACtB,GAAIF,GAAQ,QAAQ,IAAI,CAAC,EAAE,IAAAG,EAAA,OAAU,EAAE,MAAM,UAAU,IAAAA,EAAA,EAAK,KAAK,CAAA;AAAA,QACjE,EAAE,MAAM,UAAU,IAAID,EAAA;AAAA,MAAY;AAAA,MAEpC,MAAM,kBACJE,GACA,EAAE,iBAAAC,GAAiB,mBAAAC,GAAmB,kBAAAC,GAAkB,UAAAC,KACxD;AACA,cAAM,EAAE,aAAAN,MAAgBE,KAAQ,CAAA,GAC1BK,IAAeL,GAAc,OAE7BM,IAAwC;AAAA,UAC5C,+BAA+B;AAAA,UAC/B,yBAAyB;AAAA,UACzB,8BAA8B;AAAA,UAC9B,gCAAgC;AAAA,UAChC,8BAA8B;AAAA,UAC9B,gCAAgC;AAAA,QAAA,GAG5BC,IAAS,CAAC,iBAAiB,yBAAyB,uBAAuB,GAC3EC,IAAiC,CAAA,GAMjCC,IAAe,KACfC,wBAAsB,IAAA;AAC5B,YAAIC,IAAa,IACbC,IAA8C,MAC9CC,IAAa;AAEjB,cAAMC,IAAa,MAAM;AACvB,UAAIF,MACF,aAAaA,CAAK,GAClBA,IAAQ;AAAA,QAEZ,GAEMG,IAAW,MAAM;AACrB,UAAAD,EAAA,GACAF,IAAQ,WAAWI,GAAKP,CAAY;AAAA,QACtC,GAGMO,IAAM,YAAY;AAEtB,cADAF,EAAA,GACI,EAAAD,KAAc,CAACf,IACnB;AAAA,YAAAe,IAAa;AACb,gBAAI;AACF,kBAAIF,GAAY;AACd,gBAAAA,IAAa;AACb,oBAAI;AAEF,wBAAMf,IAAS,MAAMQ;AAAA,oBACnBT,EAAW,UAAU,cAAc;AAAA;AAAA,sBAEjC,EAAE,GAAGK,GAAM,UAAU,GAAA;AAAA,sBACrB,EAAE,cAAc,GAAA;AAAA,oBAAK;AAAA,kBACvB,EACA,OAAA;AACF,kBAAAG,EAAiB,MAAMP,CAAM;AAAA,gBAC/B,QAAQ;AAEN,0BAAQ,KAAK,yCAAyC;AAAA,gBACxD,UAAA;AACE,kBAAAc,EAAgB,MAAA;AAAA,gBAClB;AACA;AAAA,cACF;AAEA,kBAAIA,EAAgB,SAAS,EAAG;AAChC,oBAAMO,IAAW,MAAM,KAAKP,EAAgB,QAAQ;AACpD,cAAAA,EAAgB,MAAA;AAOhB,oBAAMQ,IAAmB,CAAA;AAiEzB,kBAhEA,MAAM,QAAQ;AAAA,gBACZD,EAAS,IAAI,OAAOE,MAAY;AAC9B,sBAAI;AACF,0BAAMC,IAAQD,EAAQ,OAChBE,IAAUF,EAAQ,WAAW,CAAA,GAC7BG,IAAWD,EAAQ;AACzB,wBAAI,CAACC,EAAU;AACf,0BAAMC,IAAYjB,EAAcc,CAAK;AACrC,wBAAI,CAACG,EAAW;AAGhB,wBAAIF,EAAQ,UAAU,UAAaE,MAAc,UAAU;AACzD,0BAAIC,IAAQH,EAAQ;AAGpB,sBAAIE,MAAc,SACX,MAAM,QAAQC,CAAK,MACtBA,IAAQ,OAAOA,KAAU,WAAWA,EAAM,MAAM,GAAG,EAAE,OAAO,OAAO,IAAI,CAAA,KAEhEA,MAAU,QAAQ,OAAOA,KAAU,aAC5CA,IAAQ,OAAOA,CAAK;AAGtB,4BAAMC,IAA+B;AAAA,wBACnC,CAACF,CAAS,GAAGC;AAAA,wBACb,WAAWL,EAAQ;AAAA,sBAAA;AAErB,sBAAIE,EAAQ,aAAa,WAAWI,EAAQ,WAAWJ,EAAQ,WAC/DH,EAAQ,KAAK,EAAE,UAAAI,GAAU,SAAAG,EAAA,CAAS;AAClC;AAAA,oBACF;AAGA,0BAAMC,IAAUP,EAAQ,IAClBQ,IAAQ,MAAMvB;AAAA,sBAClBwB,EAAU,UAAU,SAAS,SAAS,EAAE,SAAAF,KAAW,EAAE,cAAc,GAAA,CAAM;AAAA,oBAAA,EACzE,OAAA,GACIG,IAAeF,GAAO,WAAW,CAAA,GACjCG,IAAoBH,GAAO,WAAW,CAAA;AAC5C,wBACEJ,MAAc,YACdM,GAAS,YACT,OAAOA,EAAQ,YAAa;AAE5B,sBAAAX,EAAQ,KAAK;AAAA,wBACX,UAAAI;AAAA,wBACA,aAAaO,EAAQ;AAAA,wBACrB,WAAWF,EAAM;AAAA,sBAAA,CAClB;AAAA,yBACI;AACL,4BAAMH,IAAQK,GAAS;AACvB,0BAAIL,MAAU,OAAW;AACzB,4BAAMC,IAA+B,EAAE,WAAWE,EAAM,UAAA;AACxD,sBAAAF,EAAQF,CAAS,IAAIC,GAEjBM,EAAa,aAAa,WAC5BL,EAAQ,WAAWK,EAAa,WAClCZ,EAAQ,KAAK,EAAE,UAAAI,GAAU,SAAAG,EAAA,CAAS;AAAA,oBACpC;AAAA,kBACF,QAAQ;AAAA,kBAER;AAAA,gBACF,CAAC;AAAA,cAAA,GAEC,CAACP,EAAQ,OAAQ;AACrB,cAAAf,EAAiB,CAAC4B,MAAe;AAC/B,gBAAI,CAACA,KAAS,CAAC,MAAM,QAAQA,EAAM,OAAO,KAC1Cb,EAAQ,QAAQ,CAACc,MAAU;AACzB,wBAAMC,IAAMF,EAAM,QAAQ,UAAU,CAACG,MAAWA,EAAE,OAAOF,EAAM,QAAQ;AAEvE,kBAAIC,MAAQ,OAERD,EAAM,gBAERD,EAAM,QAAQE,CAAG,EAAE,SAAS;AAAA,oBAC1B,GAAIF,EAAM,QAAQE,CAAG,EAAE,UAAU,CAAA;AAAA,oBACjC,GAAGD,EAAM;AAAA,kBAAA,GAGPA,EAAM,cAAWD,EAAM,QAAQE,CAAG,EAAE,YAAYD,EAAM,aAExDA,EAAM,YAERD,EAAM,QAAQE,CAAG,IAAI,EAAE,GAAGF,EAAM,QAAQE,CAAG,GAAG,GAAGD,EAAM,QAAA;AAAA,gBAE3D,CAAC;AAAA,cACH,CAAC;AAAA,YACH,UAAA;AACE,cAAAnB,IAAa,KAETH,EAAgB,OAAO,KAAKC,MAC9BI,EAAA;AAAA,YAEJ;AAAA;AAAA,QACF;AAEA,YAAIoB;AAEJ,YAAI;AACF,gBAAMlC,GAENkC,IAAwBC;AAAA,YACtB,CAACnB,MAAuC;AACtC,cAAAd,EAAiB,CAAC4B,MAAe;AAC/B,gBAAI,CAACA,KAAS,CAAC,MAAM,QAAQA,EAAM,OAAO,KAC1Cd,EAAS,QAAQ,CAACE,MAAY;AAC5B,sBAAIA,EAAQ,QAAQ,eAAe,YAAYA,EAAQ,QAAQ,eAAe;AAC5E,0BAAMc,IAAMF,EAAM,QAAQ;AAAA,sBACxB,CAACG,MAAWA,EAAE,OAAOf,EAAQ,QAAQ;AAAA,oBAAA;AAEvC,oBAAIc,MAAQ,OACVF,EAAM,QAAQE,CAAG,EAAE,gBAAgBd,EAAQ,QAAQ;AAAA,kBAEvD;AAAA,gBACF,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,YACA,CAAC,QAAQ;AAAA,UAAA;AAGX,gBAAMkB,IAAe,CAACC,GAAgBC,MAAkB;AAGtD,gBAFqBD,EAAO,SAAS,UAAU,KAAKA,EAAO,SAAS,UAAU,GAE5D;AAChB,oBAAME,IAAYF,EAAO,SAAS,UAAU,IAAI,YAAY;AAG5D,kBAAIjC,KAAe,CAACA,EAAY,SAASmC,CAAS,EAAG;AAErD,cAAA7B,IAAa;AAAA,YACf,OAAO;AACL,oBAAMY,IAAYjB,EAAcgC,CAAM;AAGtC,kBAAIjC,MAAgB,CAACkB,KAAa,CAAClB,EAAY,SAASkB,CAAS;AAC/D;AAGF,oBAAMG,IAAUa,GAAU;AAC1B,cAAIb,KACFhB,EAAgB,IAAIgB,GAASa,CAAQ;AAAA,YAEzC;AAEA,YAAAxB,EAAA;AAAA,UACF;AAEA,UAAAR,EAAO,QAAQ,CAACkC,MAAMjC,EAAO,KAAKkC,EAAO,UAAUD,GAAGJ,CAAY,CAAC,CAAC;AAAA,QACtE,QAAQ;AAAA,QAER;AAEA,cAAMnC,GACNM,EAAO,QAAQ,CAACiC,MAAMC,EAAO,YAAYD,CAAC,CAAC,GACvCN,KAAuBA,EAAA,GAC3BrB,EAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AAEJ,CAAC,GAEY,EAAE,4BAAA6B,IAA4B,uBAAAC,OAA0BlD;"}
1
+ {"version":3,"file":"getFolders.es.js","sources":["../../../../../../src/api/queries/folders/getFolders.ts"],"sourcesContent":["import { foldersApi } from '@shared/api/generated'\nimport { api as eventsApi } from '@shared/api/generated/events'\nimport { PubSub, subscribeToThumbnailUpdates, ThumbnailUpdateMessage } from '@shared/util'\n\nconst enhancedApi = foldersApi.enhanceEndpoints({\n endpoints: {\n getFolderHierarchy: {\n providesTags: ['hierarchy'],\n },\n getFolderList: {\n providesTags: (result, _e, { projectName }) => [\n 'hierarchy',\n { type: 'folder', id: 'LIST' },\n ...(result?.folders.map(({ id }) => ({ type: 'folder', id })) || []),\n { type: 'folder', id: projectName },\n ],\n async onCacheEntryAdded(\n args,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n const { projectName } = args || {}\n const patchFields = (args as any)?.patch as string[] | undefined\n\n const topicFieldMap: Record<string, string> = {\n 'entity.folder.label_changed': 'label',\n 'entity.folder.renamed': 'name',\n 'entity.folder.type_changed': 'folderType',\n 'entity.folder.status_changed': 'status',\n 'entity.folder.tags_changed': 'tags',\n 'entity.folder.attrib_changed': 'attrib',\n }\n\n const topics = ['entity.folder', 'entity.folder.created', 'entity.folder.deleted']\n const tokens: (string | undefined)[] = []\n\n // Simplified trailing debounce approach:\n // - Collect updated folder IDs for 2000ms window\n // - If a deletion topic appears, perform one full list refetch (within debounce window)\n // - Otherwise, fetch each pending event and patch existing cache entries only\n const MIN_INTERVAL = 2000\n const pendingMessages = new Map<string, any>()\n let resyncFlag = false // full list refetch needed for deleted folders\n let timer: ReturnType<typeof setTimeout> | null = null\n let processing = false\n\n const clearTimer = () => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n }\n\n const schedule = () => {\n clearTimer()\n timer = setTimeout(run, MIN_INTERVAL)\n }\n\n // All non-created/deleted events are treated as incremental updates.\n const run = async () => {\n clearTimer()\n if (processing || !projectName) return\n processing = true\n try {\n if (resyncFlag) {\n resyncFlag = false\n try {\n // get full folder list and update cache after folder deletion\n const result = await dispatch(\n foldersApi.endpoints.getFolderList.initiate(\n // @ts-expect-error realtime flag to avoid toggling global isFetching for watchers\n { ...args, realtime: true },\n { forceRefetch: true },\n ),\n ).unwrap()\n updateCachedData(() => result)\n } catch {\n /* ignore */\n console.warn('Failed to refetch folder list on resync')\n } finally {\n pendingMessages.clear()\n }\n return\n }\n\n if (pendingMessages.size === 0) return\n const messages = Array.from(pendingMessages.values())\n pendingMessages.clear()\n type Patch = {\n folderId: string\n partial?: Record<string, any>\n attribMerge?: Record<string, any>\n updatedAt?: string\n }\n const patches: Patch[] = []\n await Promise.all(\n messages.map(async (message) => {\n try {\n const topic = message.topic\n const summary = message.summary || {}\n const folderId = summary.entityId\n if (!folderId) return\n const fieldName = topicFieldMap[topic]\n if (!fieldName) return\n\n // OPTIMIZATION: use value from summary if available (for root level fields)\n if (summary.value !== undefined && fieldName !== 'attrib') {\n let value = summary.value\n\n // Cast value to proper type\n if (fieldName === 'tags') {\n if (!Array.isArray(value)) {\n value = typeof value === 'string' ? value.split(',').filter(Boolean) : []\n }\n } else if (value !== null && typeof value !== 'string') {\n value = String(value)\n }\n\n const partial: Record<string, any> = {\n [fieldName]: value,\n updatedAt: message.updatedAt,\n }\n if (summary.parentId !== undefined) partial.parentId = summary.parentId\n patches.push({ folderId, partial })\n return\n }\n\n // Fallback: Fetch each event and apply incremental updates\n const eventId = message.id\n const event = await dispatch(\n eventsApi.endpoints.getEvent.initiate({ eventId }, { forceRefetch: true }),\n ).unwrap()\n const payload: any = event?.payload || {}\n const eventSummary: any = event?.summary || {}\n if (\n fieldName === 'attrib' &&\n payload?.newValue &&\n typeof payload.newValue === 'object'\n ) {\n patches.push({\n folderId,\n attribMerge: payload.newValue,\n updatedAt: event.updatedAt,\n })\n } else {\n const value = payload?.newValue\n if (value === undefined) return\n const partial: Record<string, any> = { updatedAt: event.updatedAt }\n partial[fieldName] = value\n // parentId might accompany some changes in summary\n if (eventSummary.parentId !== undefined)\n partial.parentId = eventSummary.parentId\n patches.push({ folderId, partial })\n }\n } catch {\n /* ignore single event errors */\n }\n }),\n )\n if (!patches.length) return\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n patches.forEach((patch) => {\n const idx = draft.folders.findIndex((f: any) => f.id === patch.folderId)\n // if folder not found, skip\n if (idx === -1) return\n // apply patch to existing folder\n if (patch.attribMerge) {\n // merge attribs if attribMerge is provided\n draft.folders[idx].attrib = {\n ...(draft.folders[idx].attrib || {}),\n ...patch.attribMerge,\n }\n // update updatedAt if provided\n if (patch.updatedAt) draft.folders[idx].updatedAt = patch.updatedAt\n }\n if (patch.partial) {\n // apply partial update\n draft.folders[idx] = { ...draft.folders[idx], ...patch.partial }\n }\n })\n })\n } finally {\n processing = false\n // If new events came in while we were processing, schedule another run\n if (pendingMessages.size > 0 || resyncFlag) {\n schedule()\n }\n }\n }\n\n let unsubscribeThumbnails: (() => void) | undefined\n\n try {\n await cacheDataLoaded\n\n unsubscribeThumbnails = subscribeToThumbnailUpdates(\n (messages: ThumbnailUpdateMessage[]) => {\n updateCachedData((draft: any) => {\n if (!draft || !Array.isArray(draft.folders)) return\n messages.forEach((message) => {\n if (message.summary.entityType === 'folder' && message.summary.thumbnailHash) {\n const idx = draft.folders.findIndex(\n (f: any) => f.id === message.summary.entityId,\n )\n if (idx !== -1) {\n draft.folders[idx].thumbnailHash = message.summary.thumbnailHash\n }\n }\n })\n })\n },\n ['folder'],\n )\n\n const handlePubSub = (_topic: string, _message: any) => {\n const isMembership = _topic.endsWith('.created') || _topic.endsWith('.deleted')\n\n if (isMembership) {\n const eventType = _topic.endsWith('.created') ? 'created' : 'deleted'\n // Backward compatibility: If no patch filters are provided, always sync membership.\n // If patch filters ARE provided, only sync if 'created'/'deleted' tokens are present.\n if (patchFields && !patchFields.includes(eventType)) return\n\n resyncFlag = true\n } else {\n const fieldName = topicFieldMap[_topic]\n // Backward compatibility: If no patch filters are provided, allow all updates (that we have mapping for).\n // If patch filters ARE provided, only allow fields explicitly listed in the patch array.\n if (patchFields && (!fieldName || !patchFields.includes(fieldName))) {\n return\n }\n\n const eventId = _message?.id\n if (eventId) {\n pendingMessages.set(eventId, _message)\n }\n }\n\n schedule()\n }\n\n topics.forEach((t) => tokens.push(PubSub.subscribe(t, handlePubSub)))\n } catch {\n // silent\n }\n\n await cacheEntryRemoved\n tokens.forEach((t) => PubSub.unsubscribe(t))\n if (unsubscribeThumbnails) unsubscribeThumbnails()\n clearTimer()\n },\n },\n },\n})\n\nexport const { useGetFolderHierarchyQuery, useGetFolderListQuery } = enhancedApi\nexport { enhancedApi as foldersQueries }\n"],"names":["enhancedApi","foldersApi","result","_e","projectName","id","args","cacheDataLoaded","cacheEntryRemoved","updateCachedData","dispatch","patchFields","topicFieldMap","topics","tokens","MIN_INTERVAL","pendingMessages","resyncFlag","timer","processing","clearTimer","schedule","run","messages","patches","message","topic","summary","folderId","fieldName","value","partial","eventId","event","eventsApi","payload","eventSummary","draft","patch","idx","f","unsubscribeThumbnails","subscribeToThumbnailUpdates","handlePubSub","_topic","_message","eventType","t","PubSub","useGetFolderHierarchyQuery","useGetFolderListQuery"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");require("../../generated/graphql.cjs.js");const L=require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");const G=require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const w=require("./utils/formatEntityLinks.cjs.js"),N=require("react-toastify");require("lodash");require("uuid");require("../actions/getActions.cjs.js");require("../activities/getActivities.cjs.js");require("../activities/updateReaction.cjs.js");require("../activities/getMentions.cjs.js");require("../activities/getCategories.cjs.js");require("../addons/getAddons.cjs.js");require("../addons/updateAddons.cjs.js");require("../attributes/getAttributes.cjs.js");require("../attributes/updateAttributes.cjs.js");require("../authentication/getAuthentication.cjs.js");require("../bundles/getBundles.cjs.js");require("../bundles/updateBundles.cjs.js");require("../cloud/cloud.cjs.js");require("../columnStats/metricTargets.cjs.js");require("../columnStats/groupCounts.cjs.js");require("../config/getConfig.cjs.js");require("../config/updateConfig.cjs.js");require("../entities/getEntity.cjs.js");require("../entities/getEntityPanel.cjs.js");require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../entities/updateEntity.cjs.js");require("../entityLists/getLists.cjs.js");require("../entityLists/updateLists.cjs.js");require("../entityLists/getListsAttributes.cjs.js");require("../entityLists/listItemsColumnStats.cjs.js");require("../entityLists/updateListsAttributes.cjs.js");require("../entityLists/listFolders.cjs.js");require("../folders/getFolders.cjs.js");require("../folders/getFolderDeleteInfo.cjs.js");require("../grouping/getGrouping.cjs.js");require("./updateLinks.cjs.js");require("./getLinks.cjs.js");require("../permissions/getPermissions.cjs.js");require("../products/createProduct.cjs.js");require("../products/getFolderProducts.cjs.js");require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("../projectFolders/projectFolders.cjs.js");require("../review/getReview.cjs.js");require("../review/updateReview.cjs.js");require("../share/share.cjs.js");require("../system/getSystem.cjs.js");require("../tasks/getTasks.cjs.js");require("../tasks/updateTasks.cjs.js");require("../teams/getTeams.cjs.js");require("../userDashboard/getUserDashboard.cjs.js");require("../users/getUsers.cjs.js");require("../users/updateUsers.cjs.js");require("../users/guests.cjs.js");require("../versions/updateVersions.cjs.js");require("../views/getViews.cjs.js");require("../views/updateViews.cjs.js");require("../watchers/getWatchers.cjs.js");require("../uris/getUris.cjs.js");const R=require("../../../util/pubsub.cjs.js"),E={folder:"GetFoldersLinks",task:"GetTasksLinks",product:"GetProductsLinks",version:"GetVersionsLinks",representation:"GetRepresentationsLinks",workfile:"GetWorkfilesLinks"},S={folder:"folders",task:"tasks",product:"products",version:"versions",representation:"representations",workfile:"workfiles"},$=G.api.injectEndpoints({endpoints:j=>({getEntityLinks:j.query({queryFn:async({projectName:r,entityIds:u,entityType:i},{getState:t,dispatch:o,queryCacheKey:m,forced:b})=>{try{const d=t(),c=JSON.stringify({projectName:r,entityType:i}),h=d.restApi?.queries?.[m||`getEntityLinks(${c})`]?.data||[],f=new Set(h.map(n=>n.id)),y=u.filter(n=>!f?.has(n)||b);if(y.length===0)return{data:h};const k=E[i],p=S[i];return{data:(await o(L.api.endpoints[k].initiate({projectName:r,entityIds:y},{forceRefetch:!0})).unwrap()).project?.[p]?.edges?.map(({node:n})=>{const q=n.links.edges?.filter(e=>!e?.node)||[];return q.length>0&&console.log(`[RESTRICTED LINKS] Entity ${n.id} (${n.name}) has ${q.length} restricted link(s):`,q.map(e=>({linkId:e?.id,linkType:e?.linkType,direction:e?.direction,entityType:e?.entityType,nodeIsNull:!e?.node}))),{id:n.id,links:n.links.edges?.map(e=>e?.node?{...e,node:{id:e.node.id,name:e.node.name,label:w.formatEntityLabel(e.node),parents:e.node.parents||[],subType:"subType"in e.node?e.node.subType:void 0},isRestricted:!1}:{...e,node:null,isRestricted:!0})||[]}})||[]}}catch(d){return console.error(`Error in getEntityLinks queryFn for ${i}:`,d),N.toast.error(`Error fetching ${i} links`),{error:{status:"FETCH_ERROR",error:d.message}}}},serializeQueryArgs:({queryArgs:r})=>({projectName:r.projectName,entityType:r.entityType}),forceRefetch:({currentArg:r,previousArg:u})=>{if(!r||!u)return!0;const i=new Set(r.entityIds),t=new Set(u.entityIds);if(i.size!==t.size)return!0;for(const o of i)if(!t.has(o))return!0;return!1},merge:(r,u)=>{if(!r)return u;const i=new Map(r.map(t=>[t.id,t]));for(const t of u)i.set(t.id,t);r.length=0,r.push(...i.values())},providesTags:(r,u,i)=>r?[...r.flatMap(t=>t.links.filter(o=>o.node!==null).map(o=>({type:"link",id:o.node.id}))),{type:"link",id:`${i.projectName}-${i.entityType}`}]:[{type:"link",id:`${i.projectName}-${i.entityType}`}],async onCacheEntryAdded({projectName:r,entityIds:u,entityType:i},{cacheDataLoaded:t,cacheEntryRemoved:o,updateCachedData:m,dispatch:b}){let d;const c=new Set,I=100,h=500;let f=!1;const y=()=>{f||(f=!0,setTimeout(k,h))},k=async()=>{if(f=!1,!c.size)return;const p=Array.from(c).slice(0,I);p.forEach(a=>c.delete(a));try{const a=E[i],l=S[i],q=(await b(L.api.endpoints[a].initiate({projectName:r,entityIds:p},{forceRefetch:!0})).unwrap()).project?.[l]?.edges?.map(({node:e})=>({id:e.id,links:e.links.edges?.map(s=>s?.node?{...s,node:{id:s.node.id,name:s.node.name,label:w.formatEntityLabel(s.node),parents:s.node.parents||[],subType:"subType"in s.node?s.node.subType:void 0},isRestricted:!1}:{...s,node:null,isRestricted:!0})||[]}))||[];m(e=>{for(const s of q){const T=e.findIndex(v=>v.id===s.id);T>-1?e[T]=s:e.push(s)}})}catch(a){console.error("Realtime link batch update failed",a)}finally{c.size&&y()}};try{await t;const p=async(a,l)=>{if(!a.startsWith("link.created")&&!a.startsWith("link.deleted")||l?.project!==r)return;const n=l?.summary?.inputId,q=l?.summary?.outputId;!n&&!q||(n&&c.add(n),q&&c.add(q),y())};d=R.subscribe("link",p)}catch{}await o,d&&R.unsubscribe(d)}})})}),{useGetEntityLinksQuery:P}=$;exports.entityLinksApi=$;exports.useGetEntityLinksQuery=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");require("../../generated/graphql.cjs.js");const T=require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");const v=require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const L=require("./utils/formatEntityLinks.cjs.js"),G=require("react-toastify");require("lodash");require("uuid");require("../actions/getActions.cjs.js");require("../activities/getActivities.cjs.js");require("../activities/updateReaction.cjs.js");require("../activities/getMentions.cjs.js");require("../activities/getCategories.cjs.js");require("../addons/getAddons.cjs.js");require("../addons/updateAddons.cjs.js");require("../attributes/getAttributes.cjs.js");require("../attributes/updateAttributes.cjs.js");require("../authentication/getAuthentication.cjs.js");require("../bundles/getBundles.cjs.js");require("../bundles/updateBundles.cjs.js");require("../cloud/cloud.cjs.js");require("../columnStats/metricTargets.cjs.js");require("../columnStats/groupCounts.cjs.js");require("../config/getConfig.cjs.js");require("../config/updateConfig.cjs.js");require("../entities/getEntity.cjs.js");require("../entities/getEntityPanel.cjs.js");require("../overview/getOverview.cjs.js");require("../overview/updateOverview.cjs.js");require("../versions/getVersionsProducts.cjs.js");require("../entities/updateEntity.cjs.js");require("../entityLists/getLists.cjs.js");require("../entityLists/updateLists.cjs.js");require("../entityLists/getListsAttributes.cjs.js");require("../entityLists/listItemsColumnStats.cjs.js");require("../entityLists/updateListsAttributes.cjs.js");require("../entityLists/listFolders.cjs.js");require("../folders/getFolders.cjs.js");require("../folders/getFolderDeleteInfo.cjs.js");require("../grouping/getGrouping.cjs.js");require("./updateLinks.cjs.js");require("./getLinks.cjs.js");require("../permissions/getPermissions.cjs.js");require("../products/createProduct.cjs.js");require("../products/getFolderProducts.cjs.js");require("../project/getProject.cjs.js");require("../project/updateProject.cjs.js");require("../projectFolders/projectFolders.cjs.js");require("../review/getReview.cjs.js");require("../review/updateReview.cjs.js");require("../share/share.cjs.js");require("../system/getSystem.cjs.js");require("../tasks/getTasks.cjs.js");require("../tasks/updateTasks.cjs.js");require("../teams/getTeams.cjs.js");require("../userDashboard/getUserDashboard.cjs.js");require("../users/getUsers.cjs.js");require("../users/updateUsers.cjs.js");require("../users/guests.cjs.js");require("../versions/updateVersions.cjs.js");require("../views/getViews.cjs.js");require("../views/updateViews.cjs.js");require("../watchers/getWatchers.cjs.js");require("../uris/getUris.cjs.js");const w=require("../../../util/pubsub.cjs.js"),R={folder:"GetFoldersLinks",task:"GetTasksLinks",product:"GetProductsLinks",version:"GetVersionsLinks",representation:"GetRepresentationsLinks",workfile:"GetWorkfilesLinks"},E={folder:"folders",task:"tasks",product:"products",version:"versions",representation:"representations",workfile:"workfiles"},S=v.api.injectEndpoints({endpoints:$=>({getEntityLinks:$.query({queryFn:async({projectName:r,entityIds:s,entityType:i},{getState:n,dispatch:q,queryCacheKey:m,forced:l})=>{try{const u=n(),b=JSON.stringify({projectName:r,entityType:i}),c=u.restApi?.queries?.[m||`getEntityLinks(${b})`]?.data||[],y=new Set(c.map(t=>t.id)),h=s.filter(t=>!y?.has(t)||l);if(h.length===0)return{data:c};const d=R[i],o=E[i];return{data:(await q(T.api.endpoints[d].initiate({projectName:r,entityIds:h},{forceRefetch:!0})).unwrap()).project?.[o]?.edges?.map(({node:t})=>{const a=t.links.edges?.filter(e=>!e?.node)||[];return a.length>0&&console.log(`[RESTRICTED LINKS] Entity ${t.id} (${t.name}) has ${a.length} restricted link(s):`,a.map(e=>({linkId:e?.id,linkType:e?.linkType,direction:e?.direction,entityType:e?.entityType,nodeIsNull:!e?.node}))),{id:t.id,links:t.links.edges?.map(e=>e?.node?{...e,node:{id:e.node.id,name:e.node.name,label:L.formatEntityLabel(e.node),parents:e.node.parents||[],subType:"subType"in e.node?e.node.subType:void 0},isRestricted:!1}:{...e,node:null,isRestricted:!0})||[]}})||[]}}catch(u){return console.error(`Error in getEntityLinks queryFn for ${i}:`,u),G.toast.error(`Error fetching ${i} links`),{error:{status:"FETCH_ERROR",error:u.message}}}},serializeQueryArgs:({queryArgs:r})=>({projectName:r.projectName,entityType:r.entityType}),forceRefetch:({currentArg:r,previousArg:s})=>{if(!r||!s)return!0;const i=new Set(r.entityIds),n=new Set(s.entityIds);if(i.size!==n.size)return!0;for(const q of i)if(!n.has(q))return!0;return!1},merge:(r,s)=>{if(!r)return s;const i=new Map(r.map(n=>[n.id,n]));for(const n of s)i.set(n.id,n);r.length=0,r.push(...i.values())},providesTags:(r,s,i)=>r?[...r.flatMap(n=>n.links.filter(q=>q.node!==null).map(q=>({type:"link",id:q.node.id}))),{type:"link",id:`${i.projectName}-${i.entityType}`}]:[{type:"link",id:`${i.projectName}-${i.entityType}`}],async onCacheEntryAdded({projectName:r,entityType:s},{cacheDataLoaded:i,cacheEntryRemoved:n,updateCachedData:q,dispatch:m}){let l;const u=new Set,b=100,k=500;let c=!1;const y=()=>{c||(c=!0,setTimeout(h,k))},h=async()=>{if(c=!1,!u.size)return;const d=Array.from(u).slice(0,b);d.forEach(o=>u.delete(o));try{const o=R[s],p=E[s],t=(await m(T.api.endpoints[o].initiate({projectName:r,entityIds:d},{forceRefetch:!0})).unwrap()).project?.[p]?.edges?.map(({node:a})=>({id:a.id,links:a.links.edges?.map(e=>e?.node?{...e,node:{id:e.node.id,name:e.node.name,label:L.formatEntityLabel(e.node),parents:e.node.parents||[],subType:"subType"in e.node?e.node.subType:void 0},isRestricted:!1}:{...e,node:null,isRestricted:!0})||[]}))||[];q(a=>{for(const e of t){const I=a.findIndex(j=>j.id===e.id);I>-1?a[I]=e:a.push(e)}})}catch(o){console.error("Realtime link batch update failed",o)}finally{u.size&&y()}};try{await i;const d=async(o,p)=>{if(!o.startsWith("link.created")&&!o.startsWith("link.deleted")||p?.project!==r)return;const f=p?.summary?.inputId,t=p?.summary?.outputId;!f&&!t||(f&&u.add(f),t&&u.add(t),y())};l=w.subscribe("link",d)}catch{}await n,l&&w.unsubscribe(l)}})})}),{useGetEntityLinksQuery:N}=S;exports.entityLinksApi=S;exports.useGetEntityLinksQuery=N;
2
2
  //# sourceMappingURL=getEntityLinks.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getEntityLinks.cjs.js","sources":["../../../../../../src/api/queries/links/getEntityLinks.ts"],"sourcesContent":["import { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport {\n GetFoldersLinksQuery,\n GetTasksLinksQuery,\n GetProductsLinksQuery,\n GetVersionsLinksQuery,\n GetRepresentationsLinksQuery,\n GetWorkfilesLinksQuery,\n gqlLinksApi,\n foldersApi,\n} from '@shared/api/generated'\nimport { formatEntityLabel } from './utils/formatEntityLinks'\nimport { toast } from 'react-toastify'\nimport { PubSub } from '@shared/util'\n\n/**\n * Custom queryFn for fetching entity links with optimized caching behavior.\n *\n * Key features:\n * 1. Single cache per project and entity type - different entityIds combinations don't create new caches\n * 2. Skips fetching entities that are already cached\n * 3. Force refetch when entityIds change\n * 4. Merges new entities into cache without duplicates\n * 5. Supports all entity types: folders, tasks, products, versions, representations, workfiles\n */\n\n// Define the arguments for the query\nexport type GetEntityLinksArgs = {\n projectName: string\n entityIds: string[]\n entityType: 'folder' | 'task' | 'product' | 'version' | 'representation' | 'workfile'\n}\n\n// Define link types for each entity\nexport type FolderLink =\n GetFoldersLinksQuery['project']['folders']['edges'][0]['node']['links']['edges'][0]\nexport type TaskLink =\n GetTasksLinksQuery['project']['tasks']['edges'][0]['node']['links']['edges'][0]\nexport type ProductLink =\n GetProductsLinksQuery['project']['products']['edges'][0]['node']['links']['edges'][0]\nexport type VersionLink =\n GetVersionsLinksQuery['project']['versions']['edges'][0]['node']['links']['edges'][0]\nexport type RepresentationLink =\n GetRepresentationsLinksQuery['project']['representations']['edges'][0]['node']['links']['edges'][0]\nexport type WorkfileLink =\n GetWorkfilesLinksQuery['project']['workfiles']['edges'][0]['node']['links']['edges'][0]\n\nexport type EntityLinkQuery =\n | FolderLink\n | TaskLink\n | ProductLink\n | VersionLink\n | RepresentationLink\n | WorkfileLink\nexport type EntityLink = Pick<EntityLinkQuery, 'direction' | 'entityType' | 'id' | 'linkType'> & {\n node: Pick<EntityLinkQuery['node'], 'name' | 'id'> & {\n label?: string | null\n parents: string[]\n subType: string | undefined\n } | null\n isRestricted?: boolean // flag to indicate if this link is restricted\n}\n\n// Define the result type for the query - simplified without edges wrapper\nexport type EntityWithLinks = {\n id: string\n links: EntityLink[]\n}\n\nexport type GetEntityLinksResult = EntityWithLinks[]\n\n// Map entity types to their corresponding GraphQL endpoints\nconst entityEndpoints = {\n folder: 'GetFoldersLinks',\n task: 'GetTasksLinks',\n product: 'GetProductsLinks',\n version: 'GetVersionsLinks',\n representation: 'GetRepresentationsLinks',\n workfile: 'GetWorkfilesLinks',\n} as const\n\n// Map entity types to their result path in the GraphQL response\nconst entityResultPaths = {\n folder: 'folders',\n task: 'tasks',\n product: 'products',\n version: 'versions',\n representation: 'representations',\n workfile: 'workfiles',\n} as const\n\nconst injectedQueries = foldersApi.injectEndpoints({\n endpoints: (build) => ({\n getEntityLinks: build.query<GetEntityLinksResult, GetEntityLinksArgs>({\n queryFn: async (\n { projectName, entityIds, entityType },\n { getState, dispatch, queryCacheKey, forced },\n ) => {\n try {\n // Get current state to access cached data\n const state = getState() as any\n const cacheKey = JSON.stringify({ projectName, entityType })\n\n // Access the cache entry for this project and entity type\n const cacheEntry =\n state.restApi?.queries?.[queryCacheKey || `getEntityLinks(${cacheKey})`]\n const cachedData = cacheEntry?.data || []\n\n // 1. When fetching new data for entityIds, we should skip entities that are already in the cache.\n const cachedEntityIds = new Set(cachedData.map((entity: EntityWithLinks) => entity.id))\n const entityIdsToFetch = entityIds.filter((id) => !cachedEntityIds?.has(id) || forced)\n\n // If all entities are already cached, return the cached data\n if (entityIdsToFetch.length === 0) {\n return { data: cachedData }\n }\n\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch only the entities that aren't already cached\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: entityIdsToFetch },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const newEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n // Log restricted links\n const restrictedLinks = node.links.edges?.filter((e: EntityLinkQuery | null) => !e?.node) || []\n if (restrictedLinks.length > 0) {\n console.log(`[RESTRICTED LINKS] Entity ${node.id} (${node.name}) has ${restrictedLinks.length} restricted link(s):`,\n restrictedLinks.map((link: any) => ({\n linkId: link?.id,\n linkType: link?.linkType,\n direction: link?.direction,\n entityType: link?.entityType,\n nodeIsNull: !link?.node\n }))\n )\n }\n\n return {\n id: node.id,\n links:\n node.links.edges\n ?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [], // Flatten the edges structure\n }\n }) || []\n\n // Return the new entities - the merge function will handle combining with existing cache\n return { data: newEntities }\n } catch (error: any) {\n console.error(`Error in getEntityLinks queryFn for ${entityType}:`, error)\n toast.error(`Error fetching ${entityType} links`)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n // 2. We should not create new caches when the entityIds argument changes.\n serializeQueryArgs: ({ queryArgs }) => {\n // Use only projectName and entityType for the cache key, ignoring entityIds\n return { projectName: queryArgs.projectName, entityType: queryArgs.entityType }\n },\n // 3. We should force a refetch every time the entityIds changes.\n forceRefetch: ({ currentArg, previousArg }) => {\n // Force refetch if entityIds array is different\n if (!currentArg || !previousArg) return true\n\n // Compare arrays by converting to sets\n const currentIds = new Set(currentArg.entityIds)\n const previousIds = new Set(previousArg.entityIds)\n\n if (currentIds.size !== previousIds.size) return true\n\n // Check if any IDs are different\n for (const id of currentIds) {\n if (!previousIds.has(id)) return true\n }\n\n return false\n },\n // 4. We should merge new entities into the cache ensuring there are no duplicates.\n merge: (currentCache, newItems) => {\n if (!currentCache) return newItems\n\n const cacheMap = new Map(currentCache.map((item) => [item.id, item]))\n for (const newItem of newItems) {\n cacheMap.set(newItem.id, newItem) // Overwrite if exists, add if not\n }\n // Update currentCache in-place\n currentCache.length = 0\n currentCache.push(...cacheMap.values())\n },\n // Provide tags for potential invalidation\n providesTags: (result, error, arg) =>\n result\n ? [\n ...result.flatMap((entity) =>\n entity.links\n .filter((link) => link.node !== null)\n .map((link) => ({ type: 'link', id: link.node!.id })),\n ),\n { type: 'link', id: `${arg.projectName}-${arg.entityType}` },\n ]\n : [{ type: 'link', id: `${arg.projectName}-${arg.entityType}` }],\n // Subscribe to link.created and link.deleted WebSocket events\n async onCacheEntryAdded(\n { projectName, entityIds, entityType },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingEntityIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingEntityIds.size) return\n const batchIds = Array.from(pendingEntityIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingEntityIds.delete(id))\n\n try {\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch fresh data for the affected entities\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: batchIds },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const updatedEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n\n return {\n id: node.id,\n links:\n node.links.edges\n ?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [],\n }\n }) || []\n\n updateCachedData((draft: EntityWithLinks[]) => {\n for (const updatedEntity of updatedEntities) {\n const idx = draft.findIndex((entity) => entity.id === updatedEntity.id)\n if (idx > -1) {\n // Update existing entity's links\n draft[idx] = updatedEntity\n } else {\n // Add new entity if not in cache\n draft.push(updatedEntity)\n }\n }\n })\n } catch (err) {\n console.error('Realtime link batch update failed', err)\n } finally {\n if (pendingEntityIds.size) schedule()\n }\n }\n\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n // Only react to link.created and link.deleted events for this project\n if (!_topic.startsWith('link.created') && !_topic.startsWith('link.deleted')) return\n if (message?.project !== projectName) return\n\n // Link events have inputId and outputId in the summary (both entities affected by the link)\n const inputId = message?.summary?.inputId\n const outputId = message?.summary?.outputId\n if (!inputId && !outputId) return\n\n // Add both entities to pending list since both are affected by the link change\n if (inputId) pendingEntityIds.add(inputId)\n if (outputId) pendingEntityIds.add(outputId)\n schedule()\n }\n\n // Subscribe to link events\n // NOTE: backend emits topics like 'link.created' and 'link.deleted'.\n // PubSub supports prefix matching when subscribing.\n token = PubSub.subscribe('link', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n }),\n})\n\nexport const { useGetEntityLinksQuery } = injectedQueries\nexport { injectedQueries as entityLinksApi }\n"],"names":["entityEndpoints","entityResultPaths","injectedQueries","foldersApi","build","projectName","entityIds","entityType","getState","dispatch","queryCacheKey","forced","state","cacheKey","cachedData","cachedEntityIds","entity","entityIdsToFetch","id","endpoint","resultPath","gqlLinksApi","node","restrictedLinks","link","linkEdge","formatEntityLabel","error","toast","queryArgs","currentArg","previousArg","currentIds","previousIds","currentCache","newItems","cacheMap","item","newItem","result","arg","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingEntityIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","updatedEntities","draft","updatedEntity","idx","err","handlePubSub","_topic","message","inputId","outputId","PubSub","useGetEntityLinksQuery"],"mappings":"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"}
1
+ {"version":3,"file":"getEntityLinks.cjs.js","sources":["../../../../../../src/api/queries/links/getEntityLinks.ts"],"sourcesContent":["import { FetchBaseQueryError } from '@reduxjs/toolkit/query'\nimport {\n GetFoldersLinksQuery,\n GetTasksLinksQuery,\n GetProductsLinksQuery,\n GetVersionsLinksQuery,\n GetRepresentationsLinksQuery,\n GetWorkfilesLinksQuery,\n gqlLinksApi,\n foldersApi,\n} from '@shared/api/generated'\nimport { formatEntityLabel } from './utils/formatEntityLinks'\nimport { toast } from 'react-toastify'\nimport { PubSub } from '@shared/util'\n\n/**\n * Custom queryFn for fetching entity links with optimized caching behavior.\n *\n * Key features:\n * 1. Single cache per project and entity type - different entityIds combinations don't create new caches\n * 2. Skips fetching entities that are already cached\n * 3. Force refetch when entityIds change\n * 4. Merges new entities into cache without duplicates\n * 5. Supports all entity types: folders, tasks, products, versions, representations, workfiles\n */\n\n// Define the arguments for the query\nexport type GetEntityLinksArgs = {\n projectName: string\n entityIds: string[]\n entityType: 'folder' | 'task' | 'product' | 'version' | 'representation' | 'workfile'\n}\n\n// Define link types for each entity\nexport type FolderLink =\n GetFoldersLinksQuery['project']['folders']['edges'][0]['node']['links']['edges'][0]\nexport type TaskLink =\n GetTasksLinksQuery['project']['tasks']['edges'][0]['node']['links']['edges'][0]\nexport type ProductLink =\n GetProductsLinksQuery['project']['products']['edges'][0]['node']['links']['edges'][0]\nexport type VersionLink =\n GetVersionsLinksQuery['project']['versions']['edges'][0]['node']['links']['edges'][0]\nexport type RepresentationLink =\n GetRepresentationsLinksQuery['project']['representations']['edges'][0]['node']['links']['edges'][0]\nexport type WorkfileLink =\n GetWorkfilesLinksQuery['project']['workfiles']['edges'][0]['node']['links']['edges'][0]\n\nexport type EntityLinkQuery =\n | FolderLink\n | TaskLink\n | ProductLink\n | VersionLink\n | RepresentationLink\n | WorkfileLink\nexport type EntityLink = Pick<EntityLinkQuery, 'direction' | 'entityType' | 'id' | 'linkType'> & {\n node:\n | (EntityLinkQuery['node'] & {\n name: string\n id: string\n label?: string | null\n parents: string[]\n subType: string | undefined\n })\n | null\n isRestricted?: boolean // flag to indicate if this link is restricted\n}\n\n// Define the result type for the query - simplified without edges wrapper\nexport type EntityWithLinks = {\n id: string\n links: EntityLink[]\n}\n\nexport type GetEntityLinksResult = EntityWithLinks[]\n\n// Map entity types to their corresponding GraphQL endpoints\nconst entityEndpoints = {\n folder: 'GetFoldersLinks',\n task: 'GetTasksLinks',\n product: 'GetProductsLinks',\n version: 'GetVersionsLinks',\n representation: 'GetRepresentationsLinks',\n workfile: 'GetWorkfilesLinks',\n} as const\n\n// Map entity types to their result path in the GraphQL response\nconst entityResultPaths = {\n folder: 'folders',\n task: 'tasks',\n product: 'products',\n version: 'versions',\n representation: 'representations',\n workfile: 'workfiles',\n} as const\n\nconst injectedQueries = foldersApi.injectEndpoints({\n endpoints: (build) => ({\n getEntityLinks: build.query<GetEntityLinksResult, GetEntityLinksArgs>({\n queryFn: async (\n { projectName, entityIds, entityType },\n { getState, dispatch, queryCacheKey, forced },\n ) => {\n try {\n // Get current state to access cached data\n const state = getState() as any\n const cacheKey = JSON.stringify({ projectName, entityType })\n\n // Access the cache entry for this project and entity type\n const cacheEntry =\n state.restApi?.queries?.[queryCacheKey || `getEntityLinks(${cacheKey})`]\n const cachedData = cacheEntry?.data || []\n\n // 1. When fetching new data for entityIds, we should skip entities that are already in the cache.\n const cachedEntityIds = new Set(cachedData.map((entity: EntityWithLinks) => entity.id))\n const entityIdsToFetch = entityIds.filter((id) => !cachedEntityIds?.has(id) || forced)\n\n // If all entities are already cached, return the cached data\n if (entityIdsToFetch.length === 0) {\n return { data: cachedData }\n }\n\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch only the entities that aren't already cached\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: entityIdsToFetch },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const newEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n // Log restricted links\n const restrictedLinks =\n node.links.edges?.filter((e: EntityLinkQuery | null) => !e?.node) || []\n if (restrictedLinks.length > 0) {\n console.log(\n `[RESTRICTED LINKS] Entity ${node.id} (${node.name}) has ${restrictedLinks.length} restricted link(s):`,\n restrictedLinks.map((link: any) => ({\n linkId: link?.id,\n linkType: link?.linkType,\n direction: link?.direction,\n entityType: link?.entityType,\n nodeIsNull: !link?.node,\n })),\n )\n }\n\n return {\n id: node.id,\n links:\n node.links.edges?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [], // Flatten the edges structure\n }\n }) || []\n\n // Return the new entities - the merge function will handle combining with existing cache\n return { data: newEntities }\n } catch (error: any) {\n console.error(`Error in getEntityLinks queryFn for ${entityType}:`, error)\n toast.error(`Error fetching ${entityType} links`)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n // 2. We should not create new caches when the entityIds argument changes.\n serializeQueryArgs: ({ queryArgs }) => {\n // Use only projectName and entityType for the cache key, ignoring entityIds\n return { projectName: queryArgs.projectName, entityType: queryArgs.entityType }\n },\n // 3. We should force a refetch every time the entityIds changes.\n forceRefetch: ({ currentArg, previousArg }) => {\n // Force refetch if entityIds array is different\n if (!currentArg || !previousArg) return true\n\n // Compare arrays by converting to sets\n const currentIds = new Set(currentArg.entityIds)\n const previousIds = new Set(previousArg.entityIds)\n\n if (currentIds.size !== previousIds.size) return true\n\n // Check if any IDs are different\n for (const id of currentIds) {\n if (!previousIds.has(id)) return true\n }\n\n return false\n },\n // 4. We should merge new entities into the cache ensuring there are no duplicates.\n merge: (currentCache, newItems) => {\n if (!currentCache) return newItems\n\n const cacheMap = new Map(currentCache.map((item) => [item.id, item]))\n for (const newItem of newItems) {\n cacheMap.set(newItem.id, newItem) // Overwrite if exists, add if not\n }\n // Update currentCache in-place\n currentCache.length = 0\n currentCache.push(...cacheMap.values())\n },\n // Provide tags for potential invalidation\n providesTags: (result, error, arg) =>\n result\n ? [\n ...result.flatMap((entity) =>\n entity.links\n .filter((link) => link.node !== null)\n .map((link) => ({ type: 'link', id: link.node!.id as string })),\n ),\n { type: 'link', id: `${arg.projectName}-${arg.entityType}` },\n ]\n : [{ type: 'link', id: `${arg.projectName}-${arg.entityType}` }],\n // Subscribe to link.created and link.deleted WebSocket events\n async onCacheEntryAdded(\n { projectName, entityType },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingEntityIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingEntityIds.size) return\n const batchIds = Array.from(pendingEntityIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingEntityIds.delete(id))\n\n try {\n // Get the appropriate endpoint and parameter names\n const endpoint = entityEndpoints[entityType]\n const resultPath = entityResultPaths[entityType]\n\n // Fetch fresh data for the affected entities\n const result = await dispatch(\n (gqlLinksApi.endpoints as any)[endpoint].initiate(\n { projectName, entityIds: batchIds },\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const updatedEntities =\n result.project?.[resultPath]?.edges?.map(({ node }: { node: any }) => {\n return {\n id: node.id,\n links:\n node.links.edges?.map((linkEdge: EntityLinkQuery | null) => {\n if (!linkEdge?.node) {\n // Restricted link - node is null\n return {\n ...linkEdge,\n node: null,\n isRestricted: true,\n } as EntityLink\n }\n // Normal link\n return {\n ...linkEdge,\n node: {\n id: linkEdge.node.id,\n name: linkEdge.node.name,\n label: formatEntityLabel(linkEdge.node),\n parents: linkEdge.node.parents || [],\n subType: 'subType' in linkEdge.node ? linkEdge.node.subType : undefined,\n },\n isRestricted: false,\n } as EntityLink\n }) || [],\n }\n }) || []\n\n updateCachedData((draft: EntityWithLinks[]) => {\n for (const updatedEntity of updatedEntities) {\n const idx = draft.findIndex((entity) => entity.id === updatedEntity.id)\n if (idx > -1) {\n // Update existing entity's links\n draft[idx] = updatedEntity\n } else {\n // Add new entity if not in cache\n draft.push(updatedEntity)\n }\n }\n })\n } catch (err) {\n console.error('Realtime link batch update failed', err)\n } finally {\n if (pendingEntityIds.size) schedule()\n }\n }\n\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n // Only react to link.created and link.deleted events for this project\n if (!_topic.startsWith('link.created') && !_topic.startsWith('link.deleted')) return\n if (message?.project !== projectName) return\n\n // Link events have inputId and outputId in the summary (both entities affected by the link)\n const inputId = message?.summary?.inputId\n const outputId = message?.summary?.outputId\n if (!inputId && !outputId) return\n\n // Add both entities to pending list since both are affected by the link change\n if (inputId) pendingEntityIds.add(inputId)\n if (outputId) pendingEntityIds.add(outputId)\n schedule()\n }\n\n // Subscribe to link events\n // NOTE: backend emits topics like 'link.created' and 'link.deleted'.\n // PubSub supports prefix matching when subscribing.\n token = PubSub.subscribe('link', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n }),\n})\n\nexport const { useGetEntityLinksQuery } = injectedQueries\nexport { injectedQueries as entityLinksApi }\n"],"names":["entityEndpoints","entityResultPaths","injectedQueries","foldersApi","build","projectName","entityIds","entityType","getState","dispatch","queryCacheKey","forced","state","cacheKey","cachedData","cachedEntityIds","entity","entityIdsToFetch","id","endpoint","resultPath","gqlLinksApi","node","restrictedLinks","link","linkEdge","formatEntityLabel","error","toast","queryArgs","currentArg","previousArg","currentIds","previousIds","currentCache","newItems","cacheMap","item","newItem","result","arg","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingEntityIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","updatedEntities","draft","updatedEntity","idx","err","handlePubSub","_topic","message","inputId","outputId","PubSub","useGetEntityLinksQuery"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import "../../base/client.es.js";
2
2
  import "../../generated/graphql.es.js";
3
- import { api as w } from "../../generated/graphqlLinks.es.js";
3
+ import { api as T } from "../../generated/graphqlLinks.es.js";
4
4
  import "../../generated/access.es.js";
5
5
  import "../../generated/actions.es.js";
6
6
  import "../../generated/activityFeed.es.js";
@@ -15,7 +15,7 @@ import "../../generated/desktop.es.js";
15
15
  import "../../generated/entityLists.es.js";
16
16
  import "../../generated/events.es.js";
17
17
  import "../../generated/files.es.js";
18
- import { api as A } from "../../generated/folders.es.js";
18
+ import { api as v } from "../../generated/folders.es.js";
19
19
  import "../../generated/inbox.es.js";
20
20
  import "../../generated/links.es.js";
21
21
  import "../../generated/market.es.js";
@@ -38,8 +38,8 @@ import "../../generated/workfiles.es.js";
38
38
  import "../../generated/ynputCloud.es.js";
39
39
  import "../../generated/grouping.es.js";
40
40
  import "../../generated/views.es.js";
41
- import { formatEntityLabel as L } from "./utils/formatEntityLinks.es.js";
42
- import { toast as G } from "react-toastify";
41
+ import { formatEntityLabel as w } from "./utils/formatEntityLinks.es.js";
42
+ import { toast as A } from "react-toastify";
43
43
  import "lodash";
44
44
  import "uuid";
45
45
  import "../actions/getActions.es.js";
@@ -98,40 +98,40 @@ import "../views/getViews.es.js";
98
98
  import "../views/updateViews.es.js";
99
99
  import "../watchers/getWatchers.es.js";
100
100
  import "../uris/getUris.es.js";
101
- import $ from "../../../util/pubsub.es.js";
102
- const j = {
101
+ import L from "../../../util/pubsub.es.js";
102
+ const $ = {
103
103
  folder: "GetFoldersLinks",
104
104
  task: "GetTasksLinks",
105
105
  product: "GetProductsLinks",
106
106
  version: "GetVersionsLinks",
107
107
  representation: "GetRepresentationsLinks",
108
108
  workfile: "GetWorkfilesLinks"
109
- }, E = {
109
+ }, j = {
110
110
  folder: "folders",
111
111
  task: "tasks",
112
112
  product: "products",
113
113
  version: "versions",
114
114
  representation: "representations",
115
115
  workfile: "workfiles"
116
- }, N = A.injectEndpoints({
117
- endpoints: (S) => ({
118
- getEntityLinks: S.query({
119
- queryFn: async ({ projectName: i, entityIds: s, entityType: r }, { getState: e, dispatch: p, queryCacheKey: k, forced: I }) => {
116
+ }, G = v.injectEndpoints({
117
+ endpoints: (E) => ({
118
+ getEntityLinks: E.query({
119
+ queryFn: async ({ projectName: r, entityIds: n, entityType: i }, { getState: o, dispatch: a, queryCacheKey: k, forced: f }) => {
120
120
  try {
121
- const d = e(), c = JSON.stringify({ projectName: i, entityType: r }), h = d.restApi?.queries?.[k || `getEntityLinks(${c})`]?.data || [], l = new Set(h.map((o) => o.id)), y = s.filter((o) => !l?.has(o) || I);
122
- if (y.length === 0)
123
- return { data: h };
124
- const b = j[r], u = E[r];
125
- return { data: (await p(
126
- w.endpoints[b].initiate(
127
- { projectName: i, entityIds: y },
121
+ const s = o(), I = JSON.stringify({ projectName: r, entityType: i }), c = s.restApi?.queries?.[k || `getEntityLinks(${I})`]?.data || [], y = new Set(c.map((e) => e.id)), h = n.filter((e) => !y?.has(e) || f);
122
+ if (h.length === 0)
123
+ return { data: c };
124
+ const d = $[i], p = j[i];
125
+ return { data: (await a(
126
+ T.endpoints[d].initiate(
127
+ { projectName: r, entityIds: h },
128
128
  { forceRefetch: !0 }
129
129
  )
130
- ).unwrap()).project?.[u]?.edges?.map(({ node: o }) => {
131
- const a = o.links.edges?.filter((t) => !t?.node) || [];
132
- return a.length > 0 && console.log(
133
- `[RESTRICTED LINKS] Entity ${o.id} (${o.name}) has ${a.length} restricted link(s):`,
134
- a.map((t) => ({
130
+ ).unwrap()).project?.[p]?.edges?.map(({ node: e }) => {
131
+ const m = e.links.edges?.filter((t) => !t?.node) || [];
132
+ return m.length > 0 && console.log(
133
+ `[RESTRICTED LINKS] Entity ${e.id} (${e.name}) has ${m.length} restricted link(s):`,
134
+ m.map((t) => ({
135
135
  linkId: t?.id,
136
136
  linkType: t?.linkType,
137
137
  direction: t?.direction,
@@ -139,13 +139,13 @@ const j = {
139
139
  nodeIsNull: !t?.node
140
140
  }))
141
141
  ), {
142
- id: o.id,
143
- links: o.links.edges?.map((t) => t?.node ? {
142
+ id: e.id,
143
+ links: e.links.edges?.map((t) => t?.node ? {
144
144
  ...t,
145
145
  node: {
146
146
  id: t.node.id,
147
147
  name: t.node.name,
148
- label: L(t.node),
148
+ label: w(t.node),
149
149
  parents: t.node.parents || [],
150
150
  subType: "subType" in t.node ? t.node.subType : void 0
151
151
  },
@@ -158,100 +158,100 @@ const j = {
158
158
  // Flatten the edges structure
159
159
  };
160
160
  }) || [] };
161
- } catch (d) {
162
- return console.error(`Error in getEntityLinks queryFn for ${r}:`, d), G.error(`Error fetching ${r} links`), { error: { status: "FETCH_ERROR", error: d.message } };
161
+ } catch (s) {
162
+ return console.error(`Error in getEntityLinks queryFn for ${i}:`, s), A.error(`Error fetching ${i} links`), { error: { status: "FETCH_ERROR", error: s.message } };
163
163
  }
164
164
  },
165
165
  // 2. We should not create new caches when the entityIds argument changes.
166
- serializeQueryArgs: ({ queryArgs: i }) => ({ projectName: i.projectName, entityType: i.entityType }),
166
+ serializeQueryArgs: ({ queryArgs: r }) => ({ projectName: r.projectName, entityType: r.entityType }),
167
167
  // 3. We should force a refetch every time the entityIds changes.
168
- forceRefetch: ({ currentArg: i, previousArg: s }) => {
169
- if (!i || !s) return !0;
170
- const r = new Set(i.entityIds), e = new Set(s.entityIds);
171
- if (r.size !== e.size) return !0;
172
- for (const p of r)
173
- if (!e.has(p)) return !0;
168
+ forceRefetch: ({ currentArg: r, previousArg: n }) => {
169
+ if (!r || !n) return !0;
170
+ const i = new Set(r.entityIds), o = new Set(n.entityIds);
171
+ if (i.size !== o.size) return !0;
172
+ for (const a of i)
173
+ if (!o.has(a)) return !0;
174
174
  return !1;
175
175
  },
176
176
  // 4. We should merge new entities into the cache ensuring there are no duplicates.
177
- merge: (i, s) => {
178
- if (!i) return s;
179
- const r = new Map(i.map((e) => [e.id, e]));
180
- for (const e of s)
181
- r.set(e.id, e);
182
- i.length = 0, i.push(...r.values());
177
+ merge: (r, n) => {
178
+ if (!r) return n;
179
+ const i = new Map(r.map((o) => [o.id, o]));
180
+ for (const o of n)
181
+ i.set(o.id, o);
182
+ r.length = 0, r.push(...i.values());
183
183
  },
184
184
  // Provide tags for potential invalidation
185
- providesTags: (i, s, r) => i ? [
186
- ...i.flatMap(
187
- (e) => e.links.filter((p) => p.node !== null).map((p) => ({ type: "link", id: p.node.id }))
185
+ providesTags: (r, n, i) => r ? [
186
+ ...r.flatMap(
187
+ (o) => o.links.filter((a) => a.node !== null).map((a) => ({ type: "link", id: a.node.id }))
188
188
  ),
189
- { type: "link", id: `${r.projectName}-${r.entityType}` }
190
- ] : [{ type: "link", id: `${r.projectName}-${r.entityType}` }],
189
+ { type: "link", id: `${i.projectName}-${i.entityType}` }
190
+ ] : [{ type: "link", id: `${i.projectName}-${i.entityType}` }],
191
191
  // Subscribe to link.created and link.deleted WebSocket events
192
- async onCacheEntryAdded({ projectName: i, entityIds: s, entityType: r }, { cacheDataLoaded: e, cacheEntryRemoved: p, updateCachedData: k, dispatch: I }) {
193
- let d;
194
- const c = /* @__PURE__ */ new Set(), R = 100, h = 500;
195
- let l = !1;
192
+ async onCacheEntryAdded({ projectName: r, entityType: n }, { cacheDataLoaded: i, cacheEntryRemoved: o, updateCachedData: a, dispatch: k }) {
193
+ let f;
194
+ const s = /* @__PURE__ */ new Set(), I = 100, b = 500;
195
+ let c = !1;
196
196
  const y = () => {
197
- l || (l = !0, setTimeout(b, h));
198
- }, b = async () => {
199
- if (l = !1, !c.size) return;
200
- const u = Array.from(c).slice(0, R);
201
- u.forEach((m) => c.delete(m));
197
+ c || (c = !0, setTimeout(h, b));
198
+ }, h = async () => {
199
+ if (c = !1, !s.size) return;
200
+ const d = Array.from(s).slice(0, I);
201
+ d.forEach((p) => s.delete(p));
202
202
  try {
203
- const m = j[r], f = E[r], a = (await I(
204
- w.endpoints[m].initiate(
205
- { projectName: i, entityIds: u },
203
+ const p = $[n], u = j[n], e = (await k(
204
+ T.endpoints[p].initiate(
205
+ { projectName: r, entityIds: d },
206
206
  { forceRefetch: !0 }
207
207
  )
208
- ).unwrap()).project?.[f]?.edges?.map(({ node: t }) => ({
209
- id: t.id,
210
- links: t.links.edges?.map((n) => n?.node ? {
211
- ...n,
208
+ ).unwrap()).project?.[u]?.edges?.map(({ node: m }) => ({
209
+ id: m.id,
210
+ links: m.links.edges?.map((t) => t?.node ? {
211
+ ...t,
212
212
  node: {
213
- id: n.node.id,
214
- name: n.node.name,
215
- label: L(n.node),
216
- parents: n.node.parents || [],
217
- subType: "subType" in n.node ? n.node.subType : void 0
213
+ id: t.node.id,
214
+ name: t.node.name,
215
+ label: w(t.node),
216
+ parents: t.node.parents || [],
217
+ subType: "subType" in t.node ? t.node.subType : void 0
218
218
  },
219
219
  isRestricted: !1
220
220
  } : {
221
- ...n,
221
+ ...t,
222
222
  node: null,
223
223
  isRestricted: !0
224
224
  }) || []
225
225
  })) || [];
226
- k((t) => {
227
- for (const n of a) {
228
- const T = t.findIndex((v) => v.id === n.id);
229
- T > -1 ? t[T] = n : t.push(n);
226
+ a((m) => {
227
+ for (const t of e) {
228
+ const R = m.findIndex((S) => S.id === t.id);
229
+ R > -1 ? m[R] = t : m.push(t);
230
230
  }
231
231
  });
232
- } catch (m) {
233
- console.error("Realtime link batch update failed", m);
232
+ } catch (p) {
233
+ console.error("Realtime link batch update failed", p);
234
234
  } finally {
235
- c.size && y();
235
+ s.size && y();
236
236
  }
237
237
  };
238
238
  try {
239
- await e;
240
- const u = async (m, f) => {
241
- if (!m.startsWith("link.created") && !m.startsWith("link.deleted") || f?.project !== i) return;
242
- const o = f?.summary?.inputId, a = f?.summary?.outputId;
243
- !o && !a || (o && c.add(o), a && c.add(a), y());
239
+ await i;
240
+ const d = async (p, u) => {
241
+ if (!p.startsWith("link.created") && !p.startsWith("link.deleted") || u?.project !== r) return;
242
+ const l = u?.summary?.inputId, e = u?.summary?.outputId;
243
+ !l && !e || (l && s.add(l), e && s.add(e), y());
244
244
  };
245
- d = $.subscribe("link", u);
245
+ f = L.subscribe("link", d);
246
246
  } catch {
247
247
  }
248
- await p, d && $.unsubscribe(d);
248
+ await o, f && L.unsubscribe(f);
249
249
  }
250
250
  })
251
251
  })
252
- }), { useGetEntityLinksQuery: ji } = N;
252
+ }), { useGetEntityLinksQuery: $r } = G;
253
253
  export {
254
- N as entityLinksApi,
255
- ji as useGetEntityLinksQuery
254
+ G as entityLinksApi,
255
+ $r as useGetEntityLinksQuery
256
256
  };
257
257
  //# sourceMappingURL=getEntityLinks.es.js.map