@ynput/ayon-frontend-shared 0.2.34 → 0.2.35

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 (586) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +24 -23
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/Feed.cjs.js +1 -1
  5. package/dist/Feed.es.js +20 -19
  6. package/dist/_virtual/attach-listener.cjs.js +2 -0
  7. package/dist/_virtual/attach-listener.cjs.js.map +1 -0
  8. package/dist/_virtual/attach-listener.es.js +5 -0
  9. package/dist/_virtual/attach-listener.es.js.map +1 -0
  10. package/dist/_virtual/attach-shared-listeners.cjs.js +2 -0
  11. package/dist/_virtual/attach-shared-listeners.cjs.js.map +1 -0
  12. package/dist/_virtual/attach-shared-listeners.es.js +5 -0
  13. package/dist/_virtual/attach-shared-listeners.es.js.map +1 -0
  14. package/dist/_virtual/constants.cjs.js +2 -0
  15. package/dist/_virtual/constants.cjs.js.map +1 -0
  16. package/dist/_virtual/constants.es.js +5 -0
  17. package/dist/_virtual/constants.es.js.map +1 -0
  18. package/dist/_virtual/create-or-join.cjs.js +2 -0
  19. package/dist/_virtual/create-or-join.cjs.js.map +1 -0
  20. package/dist/_virtual/create-or-join.es.js +5 -0
  21. package/dist/_virtual/create-or-join.es.js.map +1 -0
  22. package/dist/_virtual/get-url.cjs.js +2 -0
  23. package/dist/_virtual/get-url.cjs.js.map +1 -0
  24. package/dist/_virtual/get-url.es.js +5 -0
  25. package/dist/_virtual/get-url.es.js.map +1 -0
  26. package/dist/_virtual/globals.cjs.js +2 -0
  27. package/dist/_virtual/globals.cjs.js.map +1 -0
  28. package/dist/_virtual/globals.es.js +5 -0
  29. package/dist/_virtual/globals.es.js.map +1 -0
  30. package/dist/_virtual/heartbeat.cjs.js +2 -0
  31. package/dist/_virtual/heartbeat.cjs.js.map +1 -0
  32. package/dist/_virtual/heartbeat.es.js +5 -0
  33. package/dist/_virtual/heartbeat.es.js.map +1 -0
  34. package/dist/_virtual/index.cjs.js +1 -1
  35. package/dist/_virtual/index.cjs10.js +1 -1
  36. package/dist/_virtual/index.cjs11.js +2 -0
  37. package/dist/_virtual/index.cjs11.js.map +1 -0
  38. package/dist/_virtual/index.cjs12.js +2 -0
  39. package/dist/_virtual/index.cjs12.js.map +1 -0
  40. package/dist/_virtual/index.cjs2.js +1 -1
  41. package/dist/_virtual/index.cjs3.js +1 -1
  42. package/dist/_virtual/index.cjs4.js +1 -1
  43. package/dist/_virtual/index.cjs6.js +1 -1
  44. package/dist/_virtual/index.cjs8.js +1 -1
  45. package/dist/_virtual/index.cjs9.js +1 -1
  46. package/dist/_virtual/index.es.js +5 -4
  47. package/dist/_virtual/index.es10.js +5 -5
  48. package/dist/_virtual/index.es11.js +8 -0
  49. package/dist/_virtual/index.es11.js.map +1 -0
  50. package/dist/_virtual/index.es12.js +8 -0
  51. package/dist/_virtual/index.es12.js.map +1 -0
  52. package/dist/_virtual/index.es2.js +2 -2
  53. package/dist/_virtual/index.es3.js +5 -2
  54. package/dist/_virtual/index.es3.js.map +1 -1
  55. package/dist/_virtual/index.es4.js +2 -5
  56. package/dist/_virtual/index.es4.js.map +1 -1
  57. package/dist/_virtual/index.es6.js +5 -5
  58. package/dist/_virtual/index.es8.js +4 -4
  59. package/dist/_virtual/index.es9.js +2 -5
  60. package/dist/_virtual/index.es9.js.map +1 -1
  61. package/dist/_virtual/manage-subscribers.cjs.js +2 -0
  62. package/dist/_virtual/manage-subscribers.cjs.js.map +1 -0
  63. package/dist/_virtual/manage-subscribers.es.js +5 -0
  64. package/dist/_virtual/manage-subscribers.es.js.map +1 -0
  65. package/dist/_virtual/proxy.cjs.js +2 -0
  66. package/dist/_virtual/proxy.cjs.js.map +1 -0
  67. package/dist/_virtual/proxy.es.js +5 -0
  68. package/dist/_virtual/proxy.es.js.map +1 -0
  69. package/dist/_virtual/socket-io.cjs.js +2 -0
  70. package/dist/_virtual/socket-io.cjs.js.map +1 -0
  71. package/dist/_virtual/socket-io.es.js +5 -0
  72. package/dist/_virtual/socket-io.es.js.map +1 -0
  73. package/dist/_virtual/use-event-source.cjs.js +2 -0
  74. package/dist/_virtual/use-event-source.cjs.js.map +1 -0
  75. package/dist/_virtual/use-event-source.es.js +5 -0
  76. package/dist/_virtual/use-event-source.es.js.map +1 -0
  77. package/dist/_virtual/use-socket-io.cjs.js +2 -0
  78. package/dist/_virtual/use-socket-io.cjs.js.map +1 -0
  79. package/dist/_virtual/use-socket-io.es.js +5 -0
  80. package/dist/_virtual/use-socket-io.es.js.map +1 -0
  81. package/dist/_virtual/use-websocket.cjs.js +2 -0
  82. package/dist/_virtual/use-websocket.cjs.js.map +1 -0
  83. package/dist/_virtual/use-websocket.es.js +5 -0
  84. package/dist/_virtual/use-websocket.es.js.map +1 -0
  85. package/dist/_virtual/util.cjs.js +2 -0
  86. package/dist/_virtual/util.cjs.js.map +1 -0
  87. package/dist/_virtual/util.es.js +5 -0
  88. package/dist/_virtual/util.es.js.map +1 -0
  89. package/dist/api.cjs.js +1 -1
  90. package/dist/api.es.js +233 -230
  91. package/dist/api.es.js.map +1 -1
  92. package/dist/components.cjs.js +1 -1
  93. package/dist/components.es.js +25 -23
  94. package/dist/components.es.js.map +1 -1
  95. package/dist/context.cjs.js +1 -1
  96. package/dist/context.es.js +17 -13
  97. package/dist/context.es.js.map +1 -1
  98. package/dist/index.cjs.js +1 -1
  99. package/dist/index.es.js +11 -10
  100. package/dist/index.es.js.map +1 -1
  101. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  102. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  103. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  104. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  105. package/dist/node_modules/react-use-websocket/dist/index.cjs.js +2 -0
  106. package/dist/node_modules/react-use-websocket/dist/index.cjs.js.map +1 -0
  107. package/dist/node_modules/react-use-websocket/dist/index.es.js +36 -0
  108. package/dist/node_modules/react-use-websocket/dist/index.es.js.map +1 -0
  109. package/dist/node_modules/react-use-websocket/dist/lib/attach-listener.cjs.js +2 -0
  110. package/dist/node_modules/react-use-websocket/dist/lib/attach-listener.cjs.js.map +1 -0
  111. package/dist/node_modules/react-use-websocket/dist/lib/attach-listener.es.js +79 -0
  112. package/dist/node_modules/react-use-websocket/dist/lib/attach-listener.es.js.map +1 -0
  113. package/dist/node_modules/react-use-websocket/dist/lib/attach-shared-listeners.cjs.js +2 -0
  114. package/dist/node_modules/react-use-websocket/dist/lib/attach-shared-listeners.cjs.js.map +1 -0
  115. package/dist/node_modules/react-use-websocket/dist/lib/attach-shared-listeners.es.js +72 -0
  116. package/dist/node_modules/react-use-websocket/dist/lib/attach-shared-listeners.es.js.map +1 -0
  117. package/dist/node_modules/react-use-websocket/dist/lib/constants.cjs.js +2 -0
  118. package/dist/node_modules/react-use-websocket/dist/lib/constants.cjs.js.map +1 -0
  119. package/dist/node_modules/react-use-websocket/dist/lib/constants.es.js +32 -0
  120. package/dist/node_modules/react-use-websocket/dist/lib/constants.es.js.map +1 -0
  121. package/dist/node_modules/react-use-websocket/dist/lib/create-or-join.cjs.js +2 -0
  122. package/dist/node_modules/react-use-websocket/dist/lib/create-or-join.cjs.js.map +1 -0
  123. package/dist/node_modules/react-use-websocket/dist/lib/create-or-join.es.js +53 -0
  124. package/dist/node_modules/react-use-websocket/dist/lib/create-or-join.es.js.map +1 -0
  125. package/dist/node_modules/react-use-websocket/dist/lib/get-url.cjs.js +2 -0
  126. package/dist/node_modules/react-use-websocket/dist/lib/get-url.cjs.js.map +1 -0
  127. package/dist/node_modules/react-use-websocket/dist/lib/get-url.es.js +144 -0
  128. package/dist/node_modules/react-use-websocket/dist/lib/get-url.es.js.map +1 -0
  129. package/dist/node_modules/react-use-websocket/dist/lib/globals.cjs.js +2 -0
  130. package/dist/node_modules/react-use-websocket/dist/lib/globals.cjs.js.map +1 -0
  131. package/dist/node_modules/react-use-websocket/dist/lib/globals.es.js +19 -0
  132. package/dist/node_modules/react-use-websocket/dist/lib/globals.es.js.map +1 -0
  133. package/dist/node_modules/react-use-websocket/dist/lib/heartbeat.cjs.js +2 -0
  134. package/dist/node_modules/react-use-websocket/dist/lib/heartbeat.cjs.js.map +1 -0
  135. package/dist/node_modules/react-use-websocket/dist/lib/heartbeat.es.js +35 -0
  136. package/dist/node_modules/react-use-websocket/dist/lib/heartbeat.es.js.map +1 -0
  137. package/dist/node_modules/react-use-websocket/dist/lib/manage-subscribers.cjs.js +2 -0
  138. package/dist/node_modules/react-use-websocket/dist/lib/manage-subscribers.cjs.js.map +1 -0
  139. package/dist/node_modules/react-use-websocket/dist/lib/manage-subscribers.es.js +36 -0
  140. package/dist/node_modules/react-use-websocket/dist/lib/manage-subscribers.es.js.map +1 -0
  141. package/dist/node_modules/react-use-websocket/dist/lib/proxy.cjs.js +2 -0
  142. package/dist/node_modules/react-use-websocket/dist/lib/proxy.cjs.js.map +1 -0
  143. package/dist/node_modules/react-use-websocket/dist/lib/proxy.es.js +24 -0
  144. package/dist/node_modules/react-use-websocket/dist/lib/proxy.es.js.map +1 -0
  145. package/dist/node_modules/react-use-websocket/dist/lib/socket-io.cjs.js +2 -0
  146. package/dist/node_modules/react-use-websocket/dist/lib/socket-io.cjs.js.map +1 -0
  147. package/dist/node_modules/react-use-websocket/dist/lib/socket-io.es.js +39 -0
  148. package/dist/node_modules/react-use-websocket/dist/lib/socket-io.es.js.map +1 -0
  149. package/dist/node_modules/react-use-websocket/dist/lib/use-event-source.cjs.js +2 -0
  150. package/dist/node_modules/react-use-websocket/dist/lib/use-event-source.cjs.js.map +1 -0
  151. package/dist/node_modules/react-use-websocket/dist/lib/use-event-source.es.js +51 -0
  152. package/dist/node_modules/react-use-websocket/dist/lib/use-event-source.es.js.map +1 -0
  153. package/dist/node_modules/react-use-websocket/dist/lib/use-socket-io.cjs.js +2 -0
  154. package/dist/node_modules/react-use-websocket/dist/lib/use-socket-io.cjs.js.map +1 -0
  155. package/dist/node_modules/react-use-websocket/dist/lib/use-socket-io.es.js +54 -0
  156. package/dist/node_modules/react-use-websocket/dist/lib/use-socket-io.es.js.map +1 -0
  157. package/dist/node_modules/react-use-websocket/dist/lib/use-websocket.cjs.js +2 -0
  158. package/dist/node_modules/react-use-websocket/dist/lib/use-websocket.cjs.js.map +1 -0
  159. package/dist/node_modules/react-use-websocket/dist/lib/use-websocket.es.js +198 -0
  160. package/dist/node_modules/react-use-websocket/dist/lib/use-websocket.es.js.map +1 -0
  161. package/dist/node_modules/react-use-websocket/dist/lib/util.cjs.js +2 -0
  162. package/dist/node_modules/react-use-websocket/dist/lib/util.cjs.js.map +1 -0
  163. package/dist/node_modules/react-use-websocket/dist/lib/util.es.js +21 -0
  164. package/dist/node_modules/react-use-websocket/dist/lib/util.es.js.map +1 -0
  165. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  166. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js.map +1 -1
  167. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  168. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  169. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js.map +1 -1
  170. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  171. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  172. package/dist/node_modules/rehype-parse/lib/index.cjs.js.map +1 -1
  173. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  174. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  175. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  176. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  177. package/dist/node_modules/remove-accents/index.es.js +1 -1
  178. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  179. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  180. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  181. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  182. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  183. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js.map +1 -1
  184. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  185. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  186. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js.map +1 -1
  187. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  188. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  189. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js.map +1 -1
  190. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  191. package/dist/shared/src/api/base/client.cjs.js +1 -1
  192. package/dist/shared/src/api/base/client.cjs.js.map +1 -1
  193. package/dist/shared/src/api/base/client.es.js +7 -6
  194. package/dist/shared/src/api/base/client.es.js.map +1 -1
  195. package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -1
  196. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  197. package/dist/shared/src/api/queries/activities/getActivities.es.js +71 -60
  198. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  199. package/dist/shared/src/api/queries/activities/getCategories.cjs.js +1 -1
  200. package/dist/shared/src/api/queries/activities/getCategories.cjs.js.map +1 -1
  201. package/dist/shared/src/api/queries/activities/getCategories.es.js +11 -6
  202. package/dist/shared/src/api/queries/activities/getCategories.es.js.map +1 -1
  203. package/dist/shared/src/api/queries/activities/updateActivities.cjs.js +1 -1
  204. package/dist/shared/src/api/queries/activities/updateActivities.cjs.js.map +1 -1
  205. package/dist/shared/src/api/queries/activities/updateActivities.es.js +1 -1
  206. package/dist/shared/src/api/queries/activities/updateActivities.es.js.map +1 -1
  207. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js +1 -1
  208. package/dist/shared/src/api/queries/activities/updateReaction.cjs.js.map +1 -1
  209. package/dist/shared/src/api/queries/activities/updateReaction.es.js +1 -1
  210. package/dist/shared/src/api/queries/activities/updateReaction.es.js.map +1 -1
  211. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +2 -0
  212. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -0
  213. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +144 -0
  214. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -0
  215. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  216. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  217. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +3 -2
  218. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  219. package/dist/shared/src/components/DetailsPanelDetails/BorderedSection.cjs.js +4 -4
  220. package/dist/shared/src/components/DetailsPanelDetails/BorderedSection.cjs.js.map +1 -1
  221. package/dist/shared/src/components/DetailsPanelDetails/BorderedSection.es.js +36 -35
  222. package/dist/shared/src/components/DetailsPanelDetails/BorderedSection.es.js.map +1 -1
  223. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  224. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  225. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +3 -2
  226. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  227. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  228. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  229. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +28 -27
  230. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  231. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  232. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  233. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +3 -2
  234. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  235. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  236. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  237. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +4 -3
  238. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  239. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  240. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  241. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +4 -3
  242. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  243. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +2 -2
  244. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  245. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +3 -2
  246. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  247. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  248. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  249. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +4 -3
  250. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  251. package/dist/shared/src/components/Powerpack/RequiredAddonVersion.cjs.js +9 -0
  252. package/dist/shared/src/components/Powerpack/RequiredAddonVersion.cjs.js.map +1 -0
  253. package/dist/shared/src/components/Powerpack/RequiredAddonVersion.es.js +30 -0
  254. package/dist/shared/src/components/Powerpack/RequiredAddonVersion.es.js.map +1 -0
  255. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  256. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  257. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -5
  258. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  259. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js +1 -1
  260. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.cjs.js.map +1 -1
  261. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js +4 -3
  262. package/dist/shared/src/components/ProjectTableSettings/RowHeightSettings.es.js.map +1 -1
  263. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  264. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  265. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +5 -4
  266. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  267. package/dist/shared/src/components/QuillListStyles/QuillListStyles.cjs.js +1 -0
  268. package/dist/shared/src/components/QuillListStyles/QuillListStyles.cjs.js.map +1 -1
  269. package/dist/shared/src/components/QuillListStyles/QuillListStyles.es.js +1 -0
  270. package/dist/shared/src/components/QuillListStyles/QuillListStyles.es.js.map +1 -1
  271. package/dist/shared/src/components/RefreshToast/RefreshToast.cjs.js +2 -0
  272. package/dist/shared/src/components/RefreshToast/RefreshToast.cjs.js.map +1 -0
  273. package/dist/shared/src/components/RefreshToast/RefreshToast.es.js +10 -0
  274. package/dist/shared/src/components/RefreshToast/RefreshToast.es.js.map +1 -0
  275. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +2 -2
  276. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  277. package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -3
  278. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  279. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  280. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  281. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -3
  282. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  283. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  284. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  285. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +5 -4
  286. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  287. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  288. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  289. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -3
  290. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  291. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +4 -4
  292. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  293. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +3 -2
  294. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  295. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  296. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  297. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +4 -3
  298. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  299. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  300. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  301. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +6 -5
  302. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  303. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  304. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  305. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +4 -3
  306. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  307. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  308. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  309. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -3
  310. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  311. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  312. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  313. package/dist/shared/src/containers/Actions/Actions.es.js +3 -2
  314. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  315. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  316. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  317. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -3
  318. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  319. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  320. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  321. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -3
  322. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  323. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  324. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  325. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -3
  326. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  327. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  328. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  329. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +5 -4
  330. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  331. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  332. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  333. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +4 -3
  334. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  335. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  336. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  337. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
  338. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  339. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js +1 -1
  340. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js +3 -2
  342. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js.map +1 -1
  343. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +1 -1
  344. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
  345. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +3 -2
  346. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js.map +1 -1
  347. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  348. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  349. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +4 -3
  350. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  351. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  352. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  353. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +4 -3
  354. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  355. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  356. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  357. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +4 -3
  358. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  359. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  360. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  361. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +4 -3
  362. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  363. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  364. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  365. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +3 -2
  366. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  367. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  368. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  369. package/dist/shared/src/containers/Feed/Feed.es.js +4 -3
  370. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  371. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js +2 -2
  372. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js.map +1 -1
  373. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.es.js +42 -39
  374. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.es.js.map +1 -1
  375. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  376. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  377. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +13 -12
  378. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  379. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  380. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  381. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +7 -6
  382. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  383. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  384. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  385. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +258 -245
  386. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  387. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js +66 -11
  388. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js.map +1 -1
  389. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js +68 -13
  390. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js.map +1 -1
  391. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  392. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  393. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +13 -10
  394. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  395. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  396. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  397. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +6 -5
  398. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  399. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  400. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  401. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +63 -51
  402. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  403. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.cjs.js +1 -1
  404. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.cjs.js.map +1 -1
  405. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.es.js +35 -31
  406. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.es.js.map +1 -1
  407. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js +1 -0
  408. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js.map +1 -1
  409. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js +3 -2
  410. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js.map +1 -1
  411. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  412. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  413. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +3 -2
  414. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  415. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  416. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  417. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
  418. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  419. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  420. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  421. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +73 -72
  422. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  423. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  424. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  425. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +4 -3
  426. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  427. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  428. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  429. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -3
  430. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  431. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  432. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  433. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -3
  434. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  435. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  436. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  437. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +4 -3
  438. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  439. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  440. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  441. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +4 -3
  442. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  443. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  444. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  445. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +6 -5
  446. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  447. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  448. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  449. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +3 -2
  450. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  451. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  452. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  453. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +4 -3
  454. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  455. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  456. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  457. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -3
  458. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  459. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  460. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  461. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +4 -3
  462. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  463. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  464. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  465. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -3
  466. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  467. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  468. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  469. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +4 -3
  470. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  471. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  472. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  473. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +4 -3
  474. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  475. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  476. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  477. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +4 -3
  478. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  479. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js +1 -1
  480. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -1
  481. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js +3 -2
  482. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -1
  483. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  484. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  485. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +4 -3
  486. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  487. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  488. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  489. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -14
  490. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  491. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  493. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +4 -3
  494. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  495. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  496. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  497. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +6 -5
  498. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  499. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  500. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +4 -3
  502. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  503. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  504. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  505. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -3
  506. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  507. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  508. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  509. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +4 -3
  510. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  511. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  512. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  513. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +3 -2
  514. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  515. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
  516. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  517. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +3 -2
  518. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  519. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  520. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  521. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +5 -4
  522. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  523. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  524. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  525. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +3 -2
  526. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  527. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
  528. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  529. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +3 -2
  530. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  531. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
  532. package/dist/shared/src/context/AddonContext.es.js.map +1 -1
  533. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  534. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  535. package/dist/shared/src/context/AddonProjectContext.es.js +27 -13
  536. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  537. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  538. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  539. package/dist/shared/src/context/DetailsPanelContext.es.js +5 -4
  540. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  541. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  542. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  543. package/dist/shared/src/context/PowerpackContext.es.js +11 -10
  544. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  545. package/dist/shared/src/context/WebsocketContext.cjs.js +2 -0
  546. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -0
  547. package/dist/shared/src/context/WebsocketContext.es.js +309 -0
  548. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -0
  549. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  550. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  551. package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
  552. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  553. package/dist/src/components/Menu/MenuComponents/Menu.cjs.js +1 -1
  554. package/dist/src/components/Menu/MenuComponents/Menu.cjs.js.map +1 -1
  555. package/dist/src/components/Menu/MenuComponents/Menu.es.js +3 -2
  556. package/dist/src/components/Menu/MenuComponents/Menu.es.js.map +1 -1
  557. package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js +1 -1
  558. package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js.map +1 -1
  559. package/dist/src/components/Menu/MenuComponents/MenuItem.es.js +7 -6
  560. package/dist/src/components/Menu/MenuComponents/MenuItem.es.js.map +1 -1
  561. package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js +1 -1
  562. package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js.map +1 -1
  563. package/dist/src/components/Menu/MenuComponents/MenuList.es.js +11 -10
  564. package/dist/src/components/Menu/MenuComponents/MenuList.es.js.map +1 -1
  565. package/dist/types/api/queries/activities/getActivities.d.ts +1 -1
  566. package/dist/types/api/queries/activities/index.d.ts +0 -1
  567. package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +40 -0
  568. package/dist/types/api/queries/index.d.ts +1 -0
  569. package/dist/types/components/Powerpack/RequiredAddonVersion.d.ts +12 -0
  570. package/dist/types/components/Powerpack/index.d.ts +1 -1
  571. package/dist/types/components/RefreshToast/RefreshToast.d.ts +1 -0
  572. package/dist/types/components/RefreshToast/index.d.ts +1 -0
  573. package/dist/types/components/index.d.ts +1 -0
  574. package/dist/types/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.d.ts +5 -0
  575. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +2 -1
  576. package/dist/types/containers/Feed/components/FilesGrid/FilesGrid.d.ts +6 -2
  577. package/dist/types/context/AddonContext.d.ts +1 -0
  578. package/dist/types/context/AddonProjectContext.d.ts +6 -1
  579. package/dist/types/context/WebsocketContext.d.ts +21 -0
  580. package/dist/types/context/index.d.ts +1 -0
  581. package/package.json +1 -1
  582. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.cjs.js +0 -9
  583. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.cjs.js.map +0 -1
  584. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.es.js +0 -25
  585. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.es.js.map +0 -1
  586. package/dist/types/components/Powerpack/RequiredPowerpackVersion.d.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"useBuildGroupByTableData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.ts"],"sourcesContent":["// based on the groupBy field we take a flat list of items and group them\n// each group is a root node with subItems as the grouped items\n// any leftover items that do not match the groupBy field are added as a separate group (\"Ungrouped\")\n\nimport { ProjectModel, EntityGroup } from '@shared/api'\nimport { TableGroupBy } from '../context'\nimport { EditorTaskNode, EntitiesMap, EntityMap, ProjectTableAttribute, TableRow } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { useCallback } from 'react'\nimport { linksToTableData } from '../utils'\nimport { productTypes } from '@shared/util'\nexport type GroupByEntityType = 'task' | 'folder' | 'version' | 'product'\n\nexport type GroupData = {\n value: string\n label: string\n color?: string\n icon?: string\n img?: string\n count?: number\n}\n\nexport const NEXT_PAGE_ID = 'next-page'\nexport const UNGROUPED_VALUE = '_ungrouped'\nexport const ROW_ID_SEPARATOR = '__'\n\nconst valueToStringArray = (value?: any): string[] =>\n value ? (Array.isArray(value) ? value.map((v) => v.toString()) : [value.toString()]) : []\n\n// get group label, color and icon\nconst getGroupData = (groupById: string, groupValue: string, groups?: EntityGroup[]): GroupData => {\n if (!groups)\n return {\n value: groupValue,\n label: groupValue,\n }\n\n const group = groups.find((g) => g.value === groupValue)\n if (!group) {\n return {\n value: groupValue,\n label: groupValue,\n }\n } else {\n return {\n value: group.value,\n label: group.label || group.value,\n color: group.color,\n icon: group.icon,\n count: group.count,\n img: groupById === 'assignees' ? `/api/users/${group.value}/avatar` : undefined,\n }\n }\n}\n\nexport const GROUP_BY_ID = '_GROUP_'\nexport const buildGroupId = (value: string) => `${GROUP_BY_ID}${value}`\nexport const parseGroupId = (groupId: string): string | null => {\n if (!groupId.startsWith(GROUP_BY_ID)) return null\n return groupId.slice(GROUP_BY_ID.length) // +1 for the underscore\n}\nexport const isGroupId = (id: string): boolean => id.startsWith(GROUP_BY_ID)\n\ntype BuildGroupByTableProps = {\n project?: ProjectModel\n entities: EntitiesMap\n entityType?: GroupByEntityType\n groups?: EntityGroup[]\n attribFields: ProjectTableAttribute[]\n showEmpty?: boolean\n}\n\n// get sorting ids based on the groupBy field\nconst getSortingIds = (\n groupBy: TableGroupBy,\n project?: ProjectModel,\n attribFields: ProjectTableAttribute[] = [],\n): string[] => {\n const attributeId = groupBy.id.replace('attrib.', '')\n\n // for status, taskType, folderType use project data order\n if (attributeId === 'status') {\n return project?.statuses?.map((s) => s.name) || []\n } else if (attributeId === 'taskType') {\n return project?.taskTypes?.map((t) => t.name) || []\n } else if (attributeId === 'folderType') {\n return project?.folderTypes?.map((f) => f.name) || []\n } else if (groupBy.id.startsWith('attrib.')) {\n // for other enum attributes, use the enum values order\n return (\n attribFields\n .find((field) => field.name === attributeId)\n ?.data.enum?.map((e) => e.value.toString()) || []\n )\n } else return []\n}\n\nconst useBuildGroupByTableData = (props: BuildGroupByTableProps) => {\n const { project, entities, entityType, groups = [], attribFields, showEmpty } = props\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n const entityToGroupRow = useCallback(\n (task: EditorTaskNode, group?: string): TableRow => {\n const typeData = getEntityTypeData('task', task.taskType)\n return {\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the folder\n entityId: task.id,\n entityType: 'task',\n parentId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n updatedAt: task.updatedAt,\n links: linksToTableData(task.links, 'task', {\n folderTypes: project?.folderTypes || [],\n productTypes: Object.values(productTypes) || [],\n taskTypes: project?.taskTypes || [],\n }),\n }\n },\n [getEntityTypeData],\n )\n\n const buildGroupByTableData = (groupBy: TableGroupBy): TableRow[] => {\n const groupsMap = new Map<string, TableRow>()\n\n for (const group of groups) {\n const groupValue = group.value?.toString() as string\n const groupId = buildGroupId(groupValue)\n const groupData = getGroupData(groupBy.id, groupValue, groups)\n groupsMap.set(groupValue, {\n id: groupId,\n name: groupValue,\n entityType: 'group',\n subRows: [],\n label: groupData.label,\n group: groupData,\n links: {},\n })\n }\n\n const ungroupedId = GROUP_BY_ID + '.' + UNGROUPED_VALUE // unique id for ungrouped group\n // gets the \"Ungrouped\" group, creating it if it doesn't exist\n const getUnGroupedGroup = () => {\n let ungroupedGroup = groupsMap.get(ungroupedId)\n if (!ungroupedGroup) {\n ungroupedGroup = {\n id: ungroupedId,\n name: 'Ungrouped',\n entityType: 'group',\n subRows: [],\n label: 'Ungrouped',\n group: { value: ungroupedId, label: 'Ungrouped' },\n links: {},\n }\n // create ungrouped group if it doesn't exist\n groupsMap.set(ungroupedId, ungroupedGroup)\n }\n return ungroupedGroup\n }\n\n for (const [id, entity] of entities) {\n // if the entity is not of the specified type, skip it\n if (entity.entityType !== entityType) continue\n // add entities to specific group\n let groupValues: string[] = []\n if (groupBy.id.startsWith('attrib.')) {\n // for attribute based grouping, get the value of the attribute\n const attributeId = groupBy.id.split('.')[1]\n groupValues = valueToStringArray(entity.attrib?.[attributeId])\n } else {\n groupValues = valueToStringArray(entity[groupBy.id as keyof EntityMap])\n }\n\n // if there are no values, add to \"Ungrouped\" group\n if (groupValues.length === 0) {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n // for each group value, find it's group and add the entity to it\n // if we can't find the group, add it to \"Ungrouped\"\n for (const groupValue of groupValues) {\n const groupRow = groupsMap.get(groupValue)\n if (groupRow) {\n groupRow.subRows.push(entityToGroupRow(entity as EditorTaskNode, groupValue))\n } else {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n }\n\n // for groups metadata on entity, check if there is a next page\n if ('groups' in entity && Array.isArray(entity.groups)) {\n for (const group of entity.groups) {\n const hasNextPageGroup = group.hasNextPage\n if (hasNextPageGroup && groupsMap.has(group.value)) {\n // add a next page row to the group\n const groupRow = groupsMap.get(group.value)\n if (groupRow) {\n groupRow.subRows.push({\n id: `${group.value}-next-page`,\n name: `Load more tasks...`,\n entityType: NEXT_PAGE_ID,\n subRows: [],\n label: `Next page for ${group.value}`,\n group: { value: group.value, label: group.value },\n links: {},\n })\n }\n }\n }\n }\n }\n\n const groupsList = Array.from(groupsMap.values())\n\n const attribSortingIds = getSortingIds(groupBy, project, attribFields)\n\n // sort the groups by their label\n // if the group is an attribute with enum values, sort by the enum values\n groupsList.sort((a, b) => {\n if (a.group?.value === ungroupedId) return 1 // \"Ungrouped\" should be last\n if (b.group?.value === ungroupedId) return -1 // \"Ungrouped\" should be last\n if (attribSortingIds.length) {\n // sort by index of the enum value\n const indexA = attribSortingIds.indexOf(a.group?.value || '')\n const indexB = attribSortingIds.indexOf(b.group?.value || '')\n if (indexA !== -1 && indexB !== -1) {\n return indexA - indexB\n }\n if (indexA !== -1) return -1 // a is in the enum, b is not\n if (indexB !== -1) return 1 // b is in the enum, a is not\n // if both are not in the enum, sort by label\n return a.group?.label?.localeCompare(b.group?.label || '') || 0\n } else {\n // for other groupings, sort by the group label\n return a.group?.label?.localeCompare(b.group?.label || '') || 0\n }\n })\n\n // filter out empty groups\n const nonEmptyGroups = groupsList.filter((group) => group.subRows.length > 0)\n\n return showEmpty ? groupsList : nonEmptyGroups\n }\n\n return buildGroupByTableData\n}\n\nexport default useBuildGroupByTableData\n"],"names":["NEXT_PAGE_ID","UNGROUPED_VALUE","ROW_ID_SEPARATOR","valueToStringArray","value","v","getGroupData","groupById","groupValue","groups","group","g","GROUP_BY_ID","buildGroupId","parseGroupId","groupId","isGroupId","id","getSortingIds","groupBy","project","attribFields","attributeId","_a","_b","t","_c","f","_e","_d","field","e","useBuildGroupByTableData","props","entities","entityType","showEmpty","getEntityTypeData","useGetEntityTypeData","entityToGroupRow","useCallback","task","typeData","linksToTableData","productTypes","groupsMap","groupData","ungroupedId","getUnGroupedGroup","ungroupedGroup","entity","groupValues","groupRow","groupsList","attribSortingIds","a","b","indexA","indexB","_g","_f","_j","_h","_i","nonEmptyGroups"],"mappings":"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"}
1
+ {"version":3,"file":"useBuildGroupByTableData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.ts"],"sourcesContent":["// based on the groupBy field we take a flat list of items and group them\n// each group is a root node with subItems as the grouped items\n// any leftover items that do not match the groupBy field are added as a separate group (\"Ungrouped\")\n\nimport { ProjectModel, EntityGroup } from '@shared/api'\nimport { TableGroupBy } from '../context'\nimport { EditorTaskNode, EntitiesMap, EntityMap, ProjectTableAttribute, TableRow } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { useCallback } from 'react'\nimport { linksToTableData } from '../utils'\nimport { productTypes } from '@shared/util'\nexport type GroupByEntityType = 'task' | 'folder' | 'version' | 'product'\n\nexport type GroupData = {\n value: string\n label: string\n color?: string\n icon?: string\n img?: string\n count?: number\n}\n\nexport const NEXT_PAGE_ID = 'next-page'\nexport const UNGROUPED_VALUE = '_ungrouped'\nexport const ROW_ID_SEPARATOR = '__'\n\nconst valueToStringArray = (value?: any): string[] =>\n value ? (Array.isArray(value) ? value.map((v) => v.toString()) : [value.toString()]) : []\n\n// get group label, color and icon\nconst getGroupData = (groupById: string, groupValue: string, groups?: EntityGroup[]): GroupData => {\n if (!groups)\n return {\n value: groupValue,\n label: groupValue,\n }\n\n const group = groups.find((g) => g.value === groupValue)\n if (!group) {\n return {\n value: groupValue,\n label: groupValue,\n }\n } else {\n return {\n value: group.value,\n label: group.label || group.value,\n color: group.color,\n icon: group.icon,\n count: group.count,\n img: groupById === 'assignees' ? `/api/users/${group.value}/avatar` : undefined,\n }\n }\n}\n\nexport const GROUP_BY_ID = '_GROUP_'\nexport const buildGroupId = (value: string) => `${GROUP_BY_ID}${value}`\nexport const parseGroupId = (groupId: string): string | null => {\n if (!groupId.startsWith(GROUP_BY_ID)) return null\n return groupId.slice(GROUP_BY_ID.length) // +1 for the underscore\n}\nexport const isGroupId = (id: string): boolean => id.startsWith(GROUP_BY_ID)\n\ntype BuildGroupByTableProps = {\n project?: ProjectModel\n entities: EntitiesMap\n entityType?: GroupByEntityType\n groups?: EntityGroup[]\n attribFields: ProjectTableAttribute[]\n showEmpty?: boolean\n}\n\n// get sorting ids based on the groupBy field\nconst getSortingIds = (\n groupBy: TableGroupBy,\n project?: ProjectModel,\n attribFields: ProjectTableAttribute[] = [],\n): string[] => {\n const attributeId = groupBy.id.replace('attrib.', '')\n\n // for status, taskType, folderType use project data order\n if (attributeId === 'status') {\n return project?.statuses?.map((s) => s.name) || []\n } else if (attributeId === 'taskType') {\n return project?.taskTypes?.map((t) => t.name) || []\n } else if (attributeId === 'folderType') {\n return project?.folderTypes?.map((f) => f.name) || []\n } else if (groupBy.id.startsWith('attrib.')) {\n // for other enum attributes, use the enum values order\n return (\n attribFields\n .find((field) => field.name === attributeId)\n ?.data.enum?.map((e) => e.value.toString()) || []\n )\n } else return []\n}\n\nconst useBuildGroupByTableData = (props: BuildGroupByTableProps) => {\n const { project, entities, entityType, groups = [], attribFields, showEmpty } = props\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n const entityToGroupRow = useCallback(\n (task: EditorTaskNode, group?: string): TableRow => {\n const typeData = getEntityTypeData('task', task.taskType)\n return {\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the folder\n entityId: task.id,\n entityType: 'task',\n parentId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n updatedAt: task.updatedAt,\n links: linksToTableData(task.links, 'task', {\n folderTypes: project?.folderTypes || [],\n productTypes: Object.values(productTypes) || [],\n taskTypes: project?.taskTypes || [],\n }),\n }\n },\n [getEntityTypeData],\n )\n\n const buildGroupByTableData = (groupBy: TableGroupBy): TableRow[] => {\n const groupsMap = new Map<string, TableRow>()\n\n for (const group of groups) {\n const groupValue = group.value?.toString() as string\n const groupId = buildGroupId(groupValue)\n const groupData = getGroupData(groupBy.id, groupValue, groups)\n groupsMap.set(groupValue, {\n id: groupId,\n name: groupValue,\n entityType: 'group',\n subRows: [],\n label: groupData.label,\n group: groupData,\n links: {},\n })\n }\n\n const ungroupedId = GROUP_BY_ID + '.' + UNGROUPED_VALUE // unique id for ungrouped group\n // gets the \"Ungrouped\" group, creating it if it doesn't exist\n const getUnGroupedGroup = () => {\n let ungroupedGroup = groupsMap.get(ungroupedId)\n if (!ungroupedGroup) {\n ungroupedGroup = {\n id: ungroupedId,\n name: 'Ungrouped',\n entityType: 'group',\n subRows: [],\n label: 'Ungrouped',\n group: { value: ungroupedId, label: 'Ungrouped' },\n links: {},\n }\n // create ungrouped group if it doesn't exist\n groupsMap.set(ungroupedId, ungroupedGroup)\n }\n return ungroupedGroup\n }\n\n for (const [id, entity] of entities) {\n // if the entity is not of the specified type, skip it\n if (entity.entityType !== entityType) continue\n // add entities to specific group\n let groupValues: string[] = []\n if (groupBy.id.startsWith('attrib.')) {\n // for attribute based grouping, get the value of the attribute\n const attributeId = groupBy.id.split('.')[1]\n groupValues = valueToStringArray(entity.attrib?.[attributeId])\n } else {\n groupValues = valueToStringArray(entity[groupBy.id as keyof EntityMap])\n }\n\n // if there are no values, add to \"Ungrouped\" group\n if (groupValues.length === 0) {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n // for each group value, find it's group and add the entity to it\n // if we can't find the group, add it to \"Ungrouped\"\n for (const groupValue of groupValues) {\n const groupRow = groupsMap.get(groupValue)\n if (groupRow) {\n groupRow.subRows.push(entityToGroupRow(entity as EditorTaskNode, groupValue))\n } else {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n }\n\n // for groups metadata on entity, check if there is a next page\n if ('groups' in entity && Array.isArray(entity.groups)) {\n for (const group of entity.groups) {\n const hasNextPageGroup = group.hasNextPage\n if (hasNextPageGroup && groupsMap.has(group.value)) {\n // add a next page row to the group\n const groupRow = groupsMap.get(group.value)\n if (groupRow) {\n groupRow.subRows.push({\n id: `${group.value}-next-page`,\n name: `Load more tasks...`,\n entityType: NEXT_PAGE_ID,\n subRows: [],\n label: `Next page for ${group.value}`,\n group: { value: group.value, label: group.value },\n links: {},\n })\n }\n }\n }\n }\n }\n\n const groupsList = Array.from(groupsMap.values())\n\n const attribSortingIds = getSortingIds(groupBy, project, attribFields)\n\n // sort the groups by their label\n // if the group is an attribute with enum values, sort by the enum values\n groupsList.sort((a, b) => {\n if (a.group?.value === ungroupedId) return 1 // \"Ungrouped\" should be last\n if (b.group?.value === ungroupedId) return -1 // \"Ungrouped\" should be last\n if (attribSortingIds.length) {\n // sort by index of the enum value\n const indexA = attribSortingIds.indexOf(a.group?.value || '')\n const indexB = attribSortingIds.indexOf(b.group?.value || '')\n if (indexA !== -1 && indexB !== -1) {\n return indexA - indexB\n }\n if (indexA !== -1) return -1 // a is in the enum, b is not\n if (indexB !== -1) return 1 // b is in the enum, a is not\n // if both are not in the enum, sort by label\n return a.group?.label?.localeCompare(b.group?.label || '') || 0\n } else {\n // for other groupings, sort by the group label\n return a.group?.label?.localeCompare(b.group?.label || '') || 0\n }\n })\n\n // filter out empty groups\n const nonEmptyGroups = groupsList.filter((group) => group.subRows.length > 0)\n\n return showEmpty ? groupsList : nonEmptyGroups\n }\n\n return buildGroupByTableData\n}\n\nexport default useBuildGroupByTableData\n"],"names":["NEXT_PAGE_ID","UNGROUPED_VALUE","ROW_ID_SEPARATOR","valueToStringArray","value","v","getGroupData","groupById","groupValue","groups","group","g","GROUP_BY_ID","buildGroupId","parseGroupId","groupId","isGroupId","id","getSortingIds","groupBy","project","attribFields","attributeId","_a","_b","t","_c","f","_e","_d","field","e","useBuildGroupByTableData","props","entities","entityType","showEmpty","getEntityTypeData","useGetEntityTypeData","entityToGroupRow","useCallback","task","typeData","linksToTableData","productTypes","groupsMap","groupData","ungroupedId","getUnGroupedGroup","ungroupedGroup","entity","groupValues","groupRow","groupsList","attribSortingIds","a","b","indexA","indexB","_g","_f","_j","_h","_i","nonEmptyGroups"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,MAAMA,IAAe,aACfC,IAAkB,cAClBC,IAAmB,MAE1BC,IAAqB,CAACC,MAC1BA,IAAS,MAAM,QAAQA,CAAK,IAAIA,EAAM,IAAI,CAACC,MAAMA,EAAE,SAAU,CAAA,IAAI,CAACD,EAAM,SAAU,CAAA,IAAK,CAAC,GAGpFE,IAAe,CAACC,GAAmBC,GAAoBC,MAAsC;AACjG,MAAI,CAACA;AACI,WAAA;AAAA,MACL,OAAOD;AAAA,MACP,OAAOA;AAAA,IACT;AAEF,QAAME,IAAQD,EAAO,KAAK,CAACE,MAAMA,EAAE,UAAUH,CAAU;AACvD,SAAKE,IAMI;AAAA,IACL,OAAOA,EAAM;AAAA,IACb,OAAOA,EAAM,SAASA,EAAM;AAAA,IAC5B,OAAOA,EAAM;AAAA,IACb,MAAMA,EAAM;AAAA,IACZ,OAAOA,EAAM;AAAA,IACb,KAAKH,MAAc,cAAc,cAAcG,EAAM,KAAK,YAAY;AAAA,EACxE,IAZO;AAAA,IACL,OAAOF;AAAA,IACP,OAAOA;AAAA,EACT;AAWJ,GAEaI,IAAc,WACdC,IAAe,CAACT,MAAkB,GAAGQ,CAAW,GAAGR,CAAK,IACxDU,KAAe,CAACC,MACtBA,EAAQ,WAAWH,CAAW,IAC5BG,EAAQ,MAAMH,EAAY,MAAM,IADM,MAGlCI,KAAY,CAACC,MAAwBA,EAAG,WAAWL,CAAW,GAYrEM,IAAgB,CACpBC,GACAC,GACAC,IAAwC,CAAA,MAC3B;;AACb,QAAMC,IAAcH,EAAQ,GAAG,QAAQ,WAAW,EAAE;AAGpD,SAAIG,MAAgB,aACXC,IAAAH,KAAA,gBAAAA,EAAS,aAAT,gBAAAG,EAAmB,IAAI,CAAC,MAAM,EAAE,UAAS,CAAC,IACxCD,MAAgB,eAClBE,IAAAJ,KAAA,gBAAAA,EAAS,cAAT,gBAAAI,EAAoB,IAAI,CAACC,MAAMA,EAAE,UAAS,CAAC,IACzCH,MAAgB,iBAClBI,IAAAN,KAAA,gBAAAA,EAAS,gBAAT,gBAAAM,EAAsB,IAAI,CAACC,MAAMA,EAAE,UAAS,CAAC,IAC3CR,EAAQ,GAAG,WAAW,SAAS,MAGtCS,KAAAC,IAAAR,EACG,KAAK,CAACS,MAAUA,EAAM,SAASR,CAAW,MAD7C,gBAAAO,EAEI,KAAK,SAFT,gBAAAD,EAEe,IAAI,CAACG,MAAMA,EAAE,MAAM,SAAU,OAAK,CAAC,IAExC,CAAC;AACjB,GAEMC,KAA2B,CAACC,MAAkC;AAC5D,QAAA,EAAE,SAAAb,GAAS,UAAAc,GAAU,YAAAC,GAAY,QAAA1B,IAAS,IAAI,cAAAY,GAAc,WAAAe,EAAA,IAAcH,GAC1EI,IAAoBC,EAAqB,EAAE,aAAalB,GAAS,GAEjEmB,IAAmBC;AAAA,IACvB,CAACC,GAAsB/B,MAA6B;AAClD,YAAMgC,IAAWL,EAAkB,QAAQI,EAAK,QAAQ;AACjD,aAAA;AAAA,QACL,IAAIA,EAAK,KAAKvC,IAAmBQ;AAAA;AAAA,QACjC,UAAU+B,EAAK;AAAA,QACf,YAAY;AAAA,QACZ,UAAUA,EAAK;AAAA,QACf,MAAMA,EAAK,QAAQ;AAAA,QACnB,OAAOA,EAAK,SAASA,EAAK,QAAQ;AAAA,QAClC,OAAMC,KAAA,gBAAAA,EAAU,SAAQ;AAAA,QACxB,QAAOA,KAAA,gBAAAA,EAAU,UAAS;AAAA,QAC1B,QAAQD,EAAK;AAAA,QACb,WAAWA,EAAK;AAAA,QAChB,MAAMA,EAAK;AAAA,QACX,KAAK;AAAA,QACL,SAAS,CAAC;AAAA,QACV,SAASA,EAAK,YAAY;AAAA,QAC1B,QAAQA,EAAK;AAAA,QACb,WAAWA,EAAK;AAAA,QAChB,SAASA,EAAK,WAAW,CAAC;AAAA,QAC1B,WAAWA,EAAK;AAAA,QAChB,OAAOE,EAAiBF,EAAK,OAAO,QAAQ;AAAA,UAC1C,cAAarB,KAAA,gBAAAA,EAAS,gBAAe,CAAC;AAAA,UACtC,cAAc,OAAO,OAAOwB,CAAY,KAAK,CAAC;AAAA,UAC9C,YAAWxB,KAAA,gBAAAA,EAAS,cAAa,CAAA;AAAA,QAClC,CAAA;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAACiB,CAAiB;AAAA,EACpB;AA6HO,SA3HuB,CAAClB,MAAsC;;AAC7D,UAAA0B,wBAAgB,IAAsB;AAE5C,eAAWnC,KAASD,GAAQ;AACpB,YAAAD,KAAae,IAAAb,EAAM,UAAN,gBAAAa,EAAa,YAC1BR,IAAUF,EAAaL,CAAU,GACjCsC,IAAYxC,EAAaa,EAAQ,IAAIX,GAAYC,CAAM;AAC7D,MAAAoC,EAAU,IAAIrC,GAAY;AAAA,QACxB,IAAIO;AAAA,QACJ,MAAMP;AAAA,QACN,YAAY;AAAA,QACZ,SAAS,CAAC;AAAA,QACV,OAAOsC,EAAU;AAAA,QACjB,OAAOA;AAAA,QACP,OAAO,CAAA;AAAA,MAAC,CACT;AAAA,IAAA;AAGG,UAAAC,IAAcnC,IAAc,MAAMX,GAElC+C,IAAoB,MAAM;AAC1B,UAAAC,IAAiBJ,EAAU,IAAIE,CAAW;AAC9C,aAAKE,MACcA,IAAA;AAAA,QACf,IAAIF;AAAA,QACJ,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,SAAS,CAAC;AAAA,QACV,OAAO;AAAA,QACP,OAAO,EAAE,OAAOA,GAAa,OAAO,YAAY;AAAA,QAChD,OAAO,CAAA;AAAA,MACT,GAEUF,EAAA,IAAIE,GAAaE,CAAc,IAEpCA;AAAA,IACT;AAEA,eAAW,CAAChC,GAAIiC,CAAM,KAAKhB,GAAU;AAE/B,UAAAgB,EAAO,eAAef,EAAY;AAEtC,UAAIgB,IAAwB,CAAC;AAC7B,UAAIhC,EAAQ,GAAG,WAAW,SAAS,GAAG;AAEpC,cAAMG,IAAcH,EAAQ,GAAG,MAAM,GAAG,EAAE,CAAC;AAC3C,QAAAgC,IAAchD,GAAmBqB,IAAA0B,EAAO,WAAP,gBAAA1B,EAAgBF,EAAY;AAAA,MAAA;AAE7D,QAAA6B,IAAchD,EAAmB+C,EAAO/B,EAAQ,EAAqB,CAAC;AAIpE,MAAAgC,EAAY,WAAW,KACFH,EAAkB,EAC1B,QAAQ,KAAKT,EAAiBW,GAA0BjD,CAAe,CAAC;AAIzF,iBAAWO,KAAc2C,GAAa;AAC9B,cAAAC,IAAWP,EAAU,IAAIrC,CAAU;AACzC,QAAI4C,IACFA,EAAS,QAAQ,KAAKb,EAAiBW,GAA0B1C,CAAU,CAAC,IAErDwC,EAAkB,EAC1B,QAAQ,KAAKT,EAAiBW,GAA0BjD,CAAe,CAAC;AAAA,MACzF;AAIF,UAAI,YAAYiD,KAAU,MAAM,QAAQA,EAAO,MAAM;AACxC,mBAAAxC,KAASwC,EAAO;AAEzB,cADyBxC,EAAM,eACPmC,EAAU,IAAInC,EAAM,KAAK,GAAG;AAElD,kBAAM0C,IAAWP,EAAU,IAAInC,EAAM,KAAK;AAC1C,YAAI0C,KACFA,EAAS,QAAQ,KAAK;AAAA,cACpB,IAAI,GAAG1C,EAAM,KAAK;AAAA,cAClB,MAAM;AAAA,cACN,YAAYV;AAAA,cACZ,SAAS,CAAC;AAAA,cACV,OAAO,iBAAiBU,EAAM,KAAK;AAAA,cACnC,OAAO,EAAE,OAAOA,EAAM,OAAO,OAAOA,EAAM,MAAM;AAAA,cAChD,OAAO,CAAA;AAAA,YAAC,CACT;AAAA,UACH;AAAA;AAAA,IAGN;AAGF,UAAM2C,IAAa,MAAM,KAAKR,EAAU,QAAQ,GAE1CS,IAAmBpC,EAAcC,GAASC,GAASC,CAAY;AAI1D,IAAAgC,EAAA,KAAK,CAACE,GAAGC,MAAM;;AACxB,YAAIjC,IAAAgC,EAAE,UAAF,gBAAAhC,EAAS,WAAUwB,EAAoB,QAAA;AAC3C,YAAIvB,IAAAgC,EAAE,UAAF,gBAAAhC,EAAS,WAAUuB,EAAoB,QAAA;AAC3C,UAAIO,EAAiB,QAAQ;AAE3B,cAAMG,IAASH,EAAiB,UAAQ5B,IAAA6B,EAAE,UAAF,gBAAA7B,EAAS,UAAS,EAAE,GACtDgC,IAASJ,EAAiB,UAAQzB,IAAA2B,EAAE,UAAF,gBAAA3B,EAAS,UAAS,EAAE;AACxD,eAAA4B,MAAW,MAAMC,MAAW,KACvBD,IAASC,IAEdD,MAAW,KAAW,KACtBC,MAAW,KAAW,MAEnBC,KAAA/B,IAAA2B,EAAE,UAAF,gBAAA3B,EAAS,UAAT,gBAAA+B,EAAgB,gBAAcC,IAAAJ,EAAE,UAAF,gBAAAI,EAAS,UAAS,QAAO;AAAA,MAAA;AAGvD,iBAAAC,KAAAC,IAAAP,EAAE,UAAF,gBAAAO,EAAS,UAAT,gBAAAD,EAAgB,gBAAcE,IAAAP,EAAE,UAAF,gBAAAO,EAAS,UAAS,QAAO;AAAA,IAChE,CACD;AAGK,UAAAC,IAAiBX,EAAW,OAAO,CAAC3C,MAAUA,EAAM,QAAQ,SAAS,CAAC;AAE5E,WAAO0B,IAAYiB,IAAaW;AAAA,EAClC;AAGF;"}
@@ -1,2 +1,2 @@
1
- "use strict";const f=require("react"),N=require("../utils/loadingUtils.cjs.js"),G=require("./useGetEntityTypeData.cjs.js");require("@ynput/ayon-react-components");const _=require("../../../util/productTypes.cjs.js");require("lodash");require("react-toastify");require("uuid");require("../../../util/pubsub.cjs.js");require("../context/CellEditingContext.cjs.js");require("../../../../../_virtual/jsx-runtime.cjs.js");require("../context/SelectionCellsContext.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");require("../context/ProjectTableContext.cjs.js");require("../context/ClipboardContext.cjs.js");require("@tanstack/react-table");require("../ProjectTreeTable.cjs.js");require("../context/ColumnSettingsContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");;/* empty css */require("clsx");require("../../ContextMenu/ContextMenuContext.cjs.js");require("../context/ProjectDataContext.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");const F=require("../utils/linksToTableData.cjs.js"),K=100;function V({foldersMap:o,tasksMap:T,rows:g,tasksByFolderMap:M,expanded:R,projectInfo:t,showHierarchy:v,loadingTasks:b={},isLoadingMore:O=!1}){const E=G.useGetEntityTypeData({projectInfo:t}),U=f.useMemo(()=>JSON.stringify(R),[R]),h=f.useMemo(()=>new Set(Object.entries(R).filter(([s,u])=>u).map(([s])=>s)),[U]),{childToParentMap:I,parentToChildrenMap:P}=f.useMemo(()=>{const s=new Map,u=new Map;for(const i of o.values()){if(!(i!=null&&i.id))continue;const l=i.parentId;if(l){s.set(i.id,l);let q=u.get(l);q||(q=new Set,u.set(l,q)),q.add(i.id)}}return{childToParentMap:s,parentToChildrenMap:u}},[o]),m=f.useMemo(()=>{const s=new Set,u=[];for(const i of o.values())i!=null&&i.id&&(!i.parentId||!o.has(i.parentId))&&(s.add(i.id),u.push(i.id));for(;u.length>0;){const i=u.shift();if(!h.has(i))continue;const q=P.get(i);if(q)for(const d of q)s.has(d)||(s.add(d),u.push(d))}return s},[o,P,h]);return f.useMemo(()=>{var l,q,d,S,k,x,C;const s=(e,r)=>{const n=E("task",e.taskType),a=F.linksToTableData(e.links,"task",{folderTypes:(t==null?void 0:t.folderTypes)||[],productTypes:Object.values(_||{}),taskTypes:(t==null?void 0:t.taskTypes)||[]});return{id:e.id,entityType:"task",parentId:r||e.folderId,folderId:e.folderId,name:e.name||"",label:e.label||e.name||"",icon:(n==null?void 0:n.icon)||null,color:(n==null?void 0:n.color)||null,status:e.status,assignees:e.assignees,tags:e.tags,img:null,subRows:[],subType:e.taskType||null,attrib:e.attrib,ownAttrib:e.ownAttrib,parents:e.parents||[],path:e.parents.join("/")||null,updatedAt:e.updatedAt,createdAt:e.createdAt,hasReviewables:e.hasReviewables||!1,links:a}};if(!v){const e=[];for(const r of T.values())r.id&&e.push(s(r));for(const r of g||[])e.push(r);if(O){const r=((d=(q=(l=T.entries().next())==null?void 0:l.value)==null?void 0:q[1])==null?void 0:d.attrib)||{},n=Object.keys(r).map(y=>({name:y})),a=K;{const y=N.generateLoadingRows(n,a,{type:"task"});e.push(...y)}}return e}const u=new Map,i=[];for(const e of m){const r=o.get(e);if(!r)continue;const n=F.linksToTableData(r.links,"folder",{folderTypes:(t==null?void 0:t.folderTypes)||[],productTypes:Object.values(_||{}),taskTypes:(t==null?void 0:t.taskTypes)||[]}),a={id:e,entityType:"folder",parentId:r.parentId||void 0,folderId:e||null,name:r.name||"",label:r.label||r.name||"",icon:((S=E("folder",r.folderType))==null?void 0:S.icon)||null,color:null,img:null,subRows:[],status:r.status,tags:r.tags||[],subType:r.folderType||null,ownAttrib:r.ownAttrib||[],path:r.path,attrib:r.attrib||{},childOnlyMatch:r.childOnlyMatch||!1,updatedAt:r.updatedAt,createdAt:r.createdAt,hasReviewables:r.hasReviewables||!1,hasVersions:r.hasVersions||!1,links:n};if(u.set(e,a),(!r.parentId||!o.has(r.parentId))&&i.push(a),h.has(e)){const w=(M.get(e)||[]).flatMap(p=>T.get(p)||[]);if(w.length||b[e]){const p=new Array(w.length);for(let c=0;c<w.length;c++)p[c]=s(w[c],e);if(b[e]){const c=((C=(x=(k=T.entries().next())==null?void 0:k.value)==null?void 0:x[1])==null?void 0:C.attrib)||{},B=Object.keys(c).map(A=>({name:A})),D=b[e];if(D>0){const A=N.generateLoadingRows(B,D,{type:"task",parentId:e});p.push(...A)}}a.subRows=p}}}for(const e of m){const r=I.get(e);if(!r||!h.has(r))continue;const n=u.get(e),a=u.get(r);!n||!a||a.subRows.push(n)}for(const e of g||[])i.push(e);return i},[o,T,g,m,I,h,v,b,O])}module.exports=V;
1
+ "use strict";const f=require("react"),N=require("../utils/loadingUtils.cjs.js"),G=require("./useGetEntityTypeData.cjs.js");require("@ynput/ayon-react-components");const _=require("../../../util/productTypes.cjs.js");require("lodash");require("react-toastify");require("uuid");require("../../../util/pubsub.cjs.js");require("../context/CellEditingContext.cjs.js");require("../../../../../_virtual/jsx-runtime.cjs.js");require("../context/SelectionCellsContext.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");require("../context/ProjectTableContext.cjs.js");require("../context/ClipboardContext.cjs.js");require("@tanstack/react-table");require("../ProjectTreeTable.cjs.js");require("../context/ColumnSettingsContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");;/* empty css */require("clsx");require("../../ContextMenu/ContextMenuContext.cjs.js");require("../context/ProjectDataContext.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");const F=require("../utils/linksToTableData.cjs.js"),K=100;function V({foldersMap:o,tasksMap:T,rows:g,tasksByFolderMap:M,expanded:R,projectInfo:t,showHierarchy:v,loadingTasks:b={},isLoadingMore:O=!1}){const E=G.useGetEntityTypeData({projectInfo:t}),U=f.useMemo(()=>JSON.stringify(R),[R]),h=f.useMemo(()=>new Set(Object.entries(R).filter(([s,u])=>u).map(([s])=>s)),[U]),{childToParentMap:I,parentToChildrenMap:P}=f.useMemo(()=>{const s=new Map,u=new Map;for(const i of o.values()){if(!(i!=null&&i.id))continue;const l=i.parentId;if(l){s.set(i.id,l);let q=u.get(l);q||(q=new Set,u.set(l,q)),q.add(i.id)}}return{childToParentMap:s,parentToChildrenMap:u}},[o]),m=f.useMemo(()=>{const s=new Set,u=[];for(const i of o.values())i!=null&&i.id&&(!i.parentId||!o.has(i.parentId))&&(s.add(i.id),u.push(i.id));for(;u.length>0;){const i=u.shift();if(!h.has(i))continue;const q=P.get(i);if(q)for(const d of q)s.has(d)||(s.add(d),u.push(d))}return s},[o,P,h]);return f.useMemo(()=>{var l,q,d,S,k,x,C;const s=(e,r)=>{const n=E("task",e.taskType),a=F.linksToTableData(e.links,"task",{folderTypes:(t==null?void 0:t.folderTypes)||[],productTypes:Object.values(_||{}),taskTypes:(t==null?void 0:t.taskTypes)||[]});return{id:e.id,entityType:"task",parentId:r||e.folderId,folderId:e.folderId,name:e.name||"",label:e.label||e.name||"",icon:(n==null?void 0:n.icon)||null,color:(n==null?void 0:n.color)||null,status:e.status,assignees:e.assignees,tags:e.tags,img:null,subRows:[],subType:e.taskType||null,attrib:e.attrib,ownAttrib:e.ownAttrib,parents:e.parents||[],path:e.parents.join("/")||null,updatedAt:e.updatedAt,createdAt:e.createdAt,hasReviewables:e.hasReviewables||!1,links:a}};if(!v){const e=[];for(const r of T.values())r.id&&e.push(s(r));for(const r of g||[])e.push(r);if(O){const r=((d=(q=(l=T.entries().next())==null?void 0:l.value)==null?void 0:q[1])==null?void 0:d.attrib)||{},n=Object.keys(r).map(y=>({name:y})),a=K;{const y=N.generateLoadingRows(n,a,{type:"task"});e.push(...y)}}return e}const u=new Map,i=[];for(const e of m){const r=o.get(e);if(!r)continue;const n=F.linksToTableData(r.links,"folder",{folderTypes:(t==null?void 0:t.folderTypes)||[],productTypes:Object.values(_||{}),taskTypes:(t==null?void 0:t.taskTypes)||[]}),a={id:e,entityType:"folder",parentId:r.parentId||void 0,folderId:e||null,name:r.name||"",label:r.label||r.name||"",icon:((S=E("folder",r.folderType))==null?void 0:S.icon)||null,color:null,img:null,subRows:[],status:r.status,tags:r.tags||[],subType:r.folderType||null,ownAttrib:r.ownAttrib||[],path:r.path,attrib:r.attrib||{},childOnlyMatch:r.childOnlyMatch||!1,updatedAt:r.updatedAt,createdAt:r.createdAt,hasReviewables:r.hasReviewables||!1,hasVersions:r.hasVersions||!1,links:n};if(u.set(e,a),(!r.parentId||!o.has(r.parentId))&&i.push(a),h.has(e)){const w=(M.get(e)||[]).flatMap(p=>T.get(p)||[]);if(w.length||b[e]){const p=new Array(w.length);for(let c=0;c<w.length;c++)p[c]=s(w[c],e);if(b[e]){const c=((C=(x=(k=T.entries().next())==null?void 0:k.value)==null?void 0:x[1])==null?void 0:C.attrib)||{},B=Object.keys(c).map(A=>({name:A})),D=b[e];if(D>0){const A=N.generateLoadingRows(B,D,{type:"task",parentId:e});p.push(...A)}}a.subRows=p}}}for(const e of m){const r=I.get(e);if(!r||!h.has(r))continue;const n=u.get(e),a=u.get(r);!n||!a||a.subRows.push(n)}for(const e of g||[])i.push(e);return i},[o,T,g,m,I,h,v,b,O])}module.exports=V;
2
2
  //# sourceMappingURL=useBuildProjectDataTable.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBuildProjectDataTable.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport {\n EditorTaskNode,\n FolderNodeMap,\n TableRow,\n TaskNodeMap,\n TasksByFolderMap,\n} from '../types/table'\nimport { ExpandedState } from '@tanstack/react-table'\nimport { generateLoadingRows } from '../utils/loadingUtils'\nconst TASKS_INFINITE_QUERY_COUNT = 100\nimport { LoadingTasks } from '../types'\nimport { ProjectModel } from '../types/project'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { TableGroupBy } from '../context'\nimport { linksToTableData } from '../utils'\nimport { productTypes } from '@shared/util'\n\ntype Params = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n rows?: TableRow[]\n expanded: ExpandedState\n projectInfo?: ProjectModel\n showHierarchy: boolean\n loadingTasks?: LoadingTasks\n isLoadingMore?: boolean\n groupBy?: TableGroupBy\n}\n\nexport default function useBuildProjectDataTable({\n foldersMap,\n tasksMap,\n rows,\n tasksByFolderMap,\n expanded,\n projectInfo,\n showHierarchy,\n loadingTasks = {},\n isLoadingMore = false,\n}: Params): TableRow[] {\n const getEntityTypeData = useGetEntityTypeData({ projectInfo })\n\n // Convert expanded object to a stable string for memoization comparison\n const expandedKey = useMemo(() => JSON.stringify(expanded), [expanded])\n\n // Memoize expandedFolderIds set for efficient lookups\n const expandedFolderIds = useMemo(() => {\n return new Set(\n Object.entries(expanded)\n .filter(([_, isExpanded]) => isExpanded)\n .map(([id]) => id),\n )\n }, [expandedKey])\n\n // Memoize relationship maps to avoid rebuilding them on every render\n const { childToParentMap, parentToChildrenMap } = useMemo(() => {\n const childToParent = new Map<string, string>()\n const parentToChildren = new Map<string, Set<string>>()\n\n // Construct relationship maps in a single pass\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n const parentId = folder.parentId\n if (parentId) {\n childToParent.set(folder.id, parentId)\n\n let children = parentToChildren.get(parentId)\n if (!children) {\n children = new Set<string>()\n parentToChildren.set(parentId, children)\n }\n children.add(folder.id)\n }\n }\n\n return { childToParentMap: childToParent, parentToChildrenMap: parentToChildren }\n }, [foldersMap])\n\n // Memoize visible folders calculation\n const visibleFolders = useMemo(() => {\n const visible = new Set<string>()\n\n // Start with root folders and folders with non-existent parents\n const queue: string[] = []\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n // Include folders with no parent OR with a parent that doesn't exist\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n visible.add(folder.id)\n queue.push(folder.id)\n }\n }\n\n // Process queue to identify visible folders (BFS)\n while (queue.length > 0) {\n const folderId = queue.shift()!\n const isParentExpanded = expandedFolderIds.has(folderId)\n\n if (!isParentExpanded) continue\n\n // Add children of expanded folders to visible set\n const childrenIds = parentToChildrenMap.get(folderId)\n if (childrenIds) {\n for (const childId of childrenIds) {\n if (!visible.has(childId)) {\n visible.add(childId)\n queue.push(childId)\n }\n }\n }\n }\n\n return visible\n }, [foldersMap, parentToChildrenMap, expandedFolderIds])\n\n // Final memoized result - build the table tree\n return useMemo(() => {\n // Helper function to create a task row\n const createTaskRow = (task: EditorTaskNode, parentId?: string): TableRow => {\n const typeData = getEntityTypeData('task', task.taskType)\n\n const links = linksToTableData(task.links, 'task', {\n folderTypes: projectInfo?.folderTypes || [],\n productTypes: Object.values(productTypes || {}),\n taskTypes: projectInfo?.taskTypes || [],\n })\n\n return {\n id: task.id,\n entityType: 'task',\n parentId: parentId || task.folderId,\n folderId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n path: task.parents.join('/') || null, // todo: probably remove this and just use parents\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n hasReviewables: task.hasReviewables || false,\n links: links,\n }\n }\n\n // If showHierarchy is false, create a flat list of task rows\n if (!showHierarchy) {\n const flatRows: TableRow[] = []\n\n // Loop through all tasks\n for (const task of tasksMap.values()) {\n if (!task.id) continue\n flatRows.push(createTaskRow(task))\n }\n\n // Loop through all extra rows\n for (const row of rows || []) {\n flatRows.push(row)\n }\n\n // if we are loading more tasks, add loading rows\n if (isLoadingMore) {\n const firstTaskAttrib = tasksMap.entries().next()?.value?.[1]?.attrib || {}\n const loadingAttribs = Object.keys(firstTaskAttrib).map((key) => ({\n name: key,\n }))\n // number of tasks we loading with the infinite query\n const count = TASKS_INFINITE_QUERY_COUNT\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(loadingAttribs, count, {\n type: 'task',\n })\n\n flatRows.push(...loadingTaskRows)\n }\n }\n\n return flatRows\n }\n\n // Use Map for O(1) lookups\n const rowsById = new Map<string, TableRow>()\n const rootRows: TableRow[] = []\n\n // Create minimal rows for only visible folders\n for (const folderId of visibleFolders) {\n const folder = foldersMap.get(folderId)\n if (!folder) continue\n\n const links = linksToTableData(folder.links, 'folder', {\n folderTypes: projectInfo?.folderTypes || [],\n productTypes: Object.values(productTypes || {}),\n taskTypes: projectInfo?.taskTypes || [],\n })\n\n // Create row with minimal required properties\n const row: TableRow = {\n id: folderId,\n entityType: 'folder',\n parentId: folder.parentId || undefined,\n folderId: folderId || null, // root folders have no folderId\n name: folder.name || '',\n label: folder.label || folder.name || '',\n icon: getEntityTypeData('folder', folder.folderType)?.icon || null,\n color: null,\n img: null,\n subRows: [],\n status: folder.status,\n tags: folder.tags || [],\n subType: folder.folderType || null,\n ownAttrib: folder.ownAttrib || [],\n path: folder.path,\n attrib: folder.attrib || {},\n childOnlyMatch: folder.childOnlyMatch || false,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n hasReviewables: folder.hasReviewables || false,\n hasVersions: folder.hasVersions || false,\n links: links,\n }\n\n rowsById.set(folderId, row)\n\n // Add root rows directly to the rootRows array\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n rootRows.push(row)\n }\n\n // Process tasks immediately if folder is expanded\n if (expandedFolderIds.has(folderId)) {\n // because tasksByFolderMap is a map of tasks by folder ID\n // we can directly get the tasks for the current folder\n const folderTaskIds = tasksByFolderMap.get(folderId) || []\n const folderTasks = folderTaskIds.flatMap((taskId) => tasksMap.get(taskId) || [])\n\n if (folderTasks.length || loadingTasks[folderId]) {\n // Use array literal with known length for better performance\n const taskRows = new Array<TableRow>(folderTasks.length)\n\n // Direct array assignment is faster than push operations\n for (let i = 0; i < folderTasks.length; i++) {\n taskRows[i] = createTaskRow(folderTasks[i], folderId)\n }\n\n // Add loading rows if applicable\n if (loadingTasks[folderId]) {\n const firstTaskAttrib = tasksMap.entries().next()?.value?.[1]?.attrib || {}\n const loadingAttribs = Object.keys(firstTaskAttrib).map((key) => ({\n name: key,\n }))\n const count = loadingTasks[folderId]\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(loadingAttribs, count, {\n type: 'task',\n parentId: folderId,\n })\n\n taskRows.push(...loadingTaskRows)\n }\n }\n\n row.subRows = taskRows\n }\n }\n }\n\n // Build the folder hierarchy efficiently\n for (const folderId of visibleFolders) {\n const parentId = childToParentMap.get(folderId)\n if (!parentId || !expandedFolderIds.has(parentId)) continue\n\n const childRow = rowsById.get(folderId)\n const parentRow = rowsById.get(parentId)\n\n if (!childRow || !parentRow) continue\n\n // Add folder to its parent's subRows\n parentRow.subRows.push(childRow)\n }\n\n // Add any extra rows to the root rows\n for (const row of rows || []) {\n rootRows.push(row)\n }\n\n return rootRows\n }, [\n foldersMap,\n tasksMap,\n rows,\n visibleFolders,\n childToParentMap,\n expandedFolderIds,\n showHierarchy,\n loadingTasks,\n isLoadingMore,\n ])\n}\n"],"names":["TASKS_INFINITE_QUERY_COUNT","useBuildProjectDataTable","foldersMap","tasksMap","rows","tasksByFolderMap","expanded","projectInfo","showHierarchy","loadingTasks","isLoadingMore","getEntityTypeData","useGetEntityTypeData","expandedKey","useMemo","expandedFolderIds","_","isExpanded","id","childToParentMap","parentToChildrenMap","childToParent","parentToChildren","folder","parentId","children","visibleFolders","visible","queue","folderId","childrenIds","childId","createTaskRow","task","typeData","links","linksToTableData","productTypes","flatRows","row","firstTaskAttrib","_c","_b","_a","loadingAttribs","key","count","loadingTaskRows","generateLoadingRows","rowsById","rootRows","_d","folderTasks","taskId","taskRows","i","_g","_f","_e","childRow","parentRow"],"mappings":"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"}
1
+ {"version":3,"file":"useBuildProjectDataTable.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport {\n EditorTaskNode,\n FolderNodeMap,\n TableRow,\n TaskNodeMap,\n TasksByFolderMap,\n} from '../types/table'\nimport { ExpandedState } from '@tanstack/react-table'\nimport { generateLoadingRows } from '../utils/loadingUtils'\nconst TASKS_INFINITE_QUERY_COUNT = 100\nimport { LoadingTasks } from '../types'\nimport { ProjectModel } from '../types/project'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { TableGroupBy } from '../context'\nimport { linksToTableData } from '../utils'\nimport { productTypes } from '@shared/util'\n\ntype Params = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n rows?: TableRow[]\n expanded: ExpandedState\n projectInfo?: ProjectModel\n showHierarchy: boolean\n loadingTasks?: LoadingTasks\n isLoadingMore?: boolean\n groupBy?: TableGroupBy\n}\n\nexport default function useBuildProjectDataTable({\n foldersMap,\n tasksMap,\n rows,\n tasksByFolderMap,\n expanded,\n projectInfo,\n showHierarchy,\n loadingTasks = {},\n isLoadingMore = false,\n}: Params): TableRow[] {\n const getEntityTypeData = useGetEntityTypeData({ projectInfo })\n\n // Convert expanded object to a stable string for memoization comparison\n const expandedKey = useMemo(() => JSON.stringify(expanded), [expanded])\n\n // Memoize expandedFolderIds set for efficient lookups\n const expandedFolderIds = useMemo(() => {\n return new Set(\n Object.entries(expanded)\n .filter(([_, isExpanded]) => isExpanded)\n .map(([id]) => id),\n )\n }, [expandedKey])\n\n // Memoize relationship maps to avoid rebuilding them on every render\n const { childToParentMap, parentToChildrenMap } = useMemo(() => {\n const childToParent = new Map<string, string>()\n const parentToChildren = new Map<string, Set<string>>()\n\n // Construct relationship maps in a single pass\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n const parentId = folder.parentId\n if (parentId) {\n childToParent.set(folder.id, parentId)\n\n let children = parentToChildren.get(parentId)\n if (!children) {\n children = new Set<string>()\n parentToChildren.set(parentId, children)\n }\n children.add(folder.id)\n }\n }\n\n return { childToParentMap: childToParent, parentToChildrenMap: parentToChildren }\n }, [foldersMap])\n\n // Memoize visible folders calculation\n const visibleFolders = useMemo(() => {\n const visible = new Set<string>()\n\n // Start with root folders and folders with non-existent parents\n const queue: string[] = []\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n // Include folders with no parent OR with a parent that doesn't exist\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n visible.add(folder.id)\n queue.push(folder.id)\n }\n }\n\n // Process queue to identify visible folders (BFS)\n while (queue.length > 0) {\n const folderId = queue.shift()!\n const isParentExpanded = expandedFolderIds.has(folderId)\n\n if (!isParentExpanded) continue\n\n // Add children of expanded folders to visible set\n const childrenIds = parentToChildrenMap.get(folderId)\n if (childrenIds) {\n for (const childId of childrenIds) {\n if (!visible.has(childId)) {\n visible.add(childId)\n queue.push(childId)\n }\n }\n }\n }\n\n return visible\n }, [foldersMap, parentToChildrenMap, expandedFolderIds])\n\n // Final memoized result - build the table tree\n return useMemo(() => {\n // Helper function to create a task row\n const createTaskRow = (task: EditorTaskNode, parentId?: string): TableRow => {\n const typeData = getEntityTypeData('task', task.taskType)\n\n const links = linksToTableData(task.links, 'task', {\n folderTypes: projectInfo?.folderTypes || [],\n productTypes: Object.values(productTypes || {}),\n taskTypes: projectInfo?.taskTypes || [],\n })\n\n return {\n id: task.id,\n entityType: 'task',\n parentId: parentId || task.folderId,\n folderId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n path: task.parents.join('/') || null, // todo: probably remove this and just use parents\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n hasReviewables: task.hasReviewables || false,\n links: links,\n }\n }\n\n // If showHierarchy is false, create a flat list of task rows\n if (!showHierarchy) {\n const flatRows: TableRow[] = []\n\n // Loop through all tasks\n for (const task of tasksMap.values()) {\n if (!task.id) continue\n flatRows.push(createTaskRow(task))\n }\n\n // Loop through all extra rows\n for (const row of rows || []) {\n flatRows.push(row)\n }\n\n // if we are loading more tasks, add loading rows\n if (isLoadingMore) {\n const firstTaskAttrib = tasksMap.entries().next()?.value?.[1]?.attrib || {}\n const loadingAttribs = Object.keys(firstTaskAttrib).map((key) => ({\n name: key,\n }))\n // number of tasks we loading with the infinite query\n const count = TASKS_INFINITE_QUERY_COUNT\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(loadingAttribs, count, {\n type: 'task',\n })\n\n flatRows.push(...loadingTaskRows)\n }\n }\n\n return flatRows\n }\n\n // Use Map for O(1) lookups\n const rowsById = new Map<string, TableRow>()\n const rootRows: TableRow[] = []\n\n // Create minimal rows for only visible folders\n for (const folderId of visibleFolders) {\n const folder = foldersMap.get(folderId)\n if (!folder) continue\n\n const links = linksToTableData(folder.links, 'folder', {\n folderTypes: projectInfo?.folderTypes || [],\n productTypes: Object.values(productTypes || {}),\n taskTypes: projectInfo?.taskTypes || [],\n })\n\n // Create row with minimal required properties\n const row: TableRow = {\n id: folderId,\n entityType: 'folder',\n parentId: folder.parentId || undefined,\n folderId: folderId || null, // root folders have no folderId\n name: folder.name || '',\n label: folder.label || folder.name || '',\n icon: getEntityTypeData('folder', folder.folderType)?.icon || null,\n color: null,\n img: null,\n subRows: [],\n status: folder.status,\n tags: folder.tags || [],\n subType: folder.folderType || null,\n ownAttrib: folder.ownAttrib || [],\n path: folder.path,\n attrib: folder.attrib || {},\n childOnlyMatch: folder.childOnlyMatch || false,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n hasReviewables: folder.hasReviewables || false,\n hasVersions: folder.hasVersions || false,\n links: links,\n }\n\n rowsById.set(folderId, row)\n\n // Add root rows directly to the rootRows array\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n rootRows.push(row)\n }\n\n // Process tasks immediately if folder is expanded\n if (expandedFolderIds.has(folderId)) {\n // because tasksByFolderMap is a map of tasks by folder ID\n // we can directly get the tasks for the current folder\n const folderTaskIds = tasksByFolderMap.get(folderId) || []\n const folderTasks = folderTaskIds.flatMap((taskId) => tasksMap.get(taskId) || [])\n\n if (folderTasks.length || loadingTasks[folderId]) {\n // Use array literal with known length for better performance\n const taskRows = new Array<TableRow>(folderTasks.length)\n\n // Direct array assignment is faster than push operations\n for (let i = 0; i < folderTasks.length; i++) {\n taskRows[i] = createTaskRow(folderTasks[i], folderId)\n }\n\n // Add loading rows if applicable\n if (loadingTasks[folderId]) {\n const firstTaskAttrib = tasksMap.entries().next()?.value?.[1]?.attrib || {}\n const loadingAttribs = Object.keys(firstTaskAttrib).map((key) => ({\n name: key,\n }))\n const count = loadingTasks[folderId]\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(loadingAttribs, count, {\n type: 'task',\n parentId: folderId,\n })\n\n taskRows.push(...loadingTaskRows)\n }\n }\n\n row.subRows = taskRows\n }\n }\n }\n\n // Build the folder hierarchy efficiently\n for (const folderId of visibleFolders) {\n const parentId = childToParentMap.get(folderId)\n if (!parentId || !expandedFolderIds.has(parentId)) continue\n\n const childRow = rowsById.get(folderId)\n const parentRow = rowsById.get(parentId)\n\n if (!childRow || !parentRow) continue\n\n // Add folder to its parent's subRows\n parentRow.subRows.push(childRow)\n }\n\n // Add any extra rows to the root rows\n for (const row of rows || []) {\n rootRows.push(row)\n }\n\n return rootRows\n }, [\n foldersMap,\n tasksMap,\n rows,\n visibleFolders,\n childToParentMap,\n expandedFolderIds,\n showHierarchy,\n loadingTasks,\n isLoadingMore,\n ])\n}\n"],"names":["TASKS_INFINITE_QUERY_COUNT","useBuildProjectDataTable","foldersMap","tasksMap","rows","tasksByFolderMap","expanded","projectInfo","showHierarchy","loadingTasks","isLoadingMore","getEntityTypeData","useGetEntityTypeData","expandedKey","useMemo","expandedFolderIds","_","isExpanded","id","childToParentMap","parentToChildrenMap","childToParent","parentToChildren","folder","parentId","children","visibleFolders","visible","queue","folderId","childrenIds","childId","createTaskRow","task","typeData","links","linksToTableData","productTypes","flatRows","row","firstTaskAttrib","_c","_b","_a","loadingAttribs","key","count","loadingTaskRows","generateLoadingRows","rowsById","rootRows","_d","folderTasks","taskId","taskRows","i","_g","_f","_e","childRow","parentRow"],"mappings":"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"}
@@ -117,12 +117,13 @@ import "../../../context/AddonContext.es.js";
117
117
  import "../../../context/PowerpackContext.es.js";
118
118
  import "../../../context/MoveEntityContext.es.js";
119
119
  import "../../../context/MenuContext.es.js";
120
+ import "../../../context/WebsocketContext.es.js";
120
121
  import "react-redux";
121
122
  import "custom-protocol-check";
122
123
  import "../components/GroupSettingsFallback.es.js";
123
124
  import { linksToTableData as K } from "../utils/linksToTableData.es.js";
124
125
  const G = 100;
125
- function ro({
126
+ function eo({
126
127
  foldersMap: a,
127
128
  tasksMap: c,
128
129
  rows: g,
@@ -291,6 +292,6 @@ function ro({
291
292
  ]);
292
293
  }
293
294
  export {
294
- ro as default
295
+ eo as default
295
296
  };
296
297
  //# sourceMappingURL=useBuildProjectDataTable.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBuildProjectDataTable.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport {\n EditorTaskNode,\n FolderNodeMap,\n TableRow,\n TaskNodeMap,\n TasksByFolderMap,\n} from '../types/table'\nimport { ExpandedState } from '@tanstack/react-table'\nimport { generateLoadingRows } from '../utils/loadingUtils'\nconst TASKS_INFINITE_QUERY_COUNT = 100\nimport { LoadingTasks } from '../types'\nimport { ProjectModel } from '../types/project'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { TableGroupBy } from '../context'\nimport { linksToTableData } from '../utils'\nimport { productTypes } from '@shared/util'\n\ntype Params = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n rows?: TableRow[]\n expanded: ExpandedState\n projectInfo?: ProjectModel\n showHierarchy: boolean\n loadingTasks?: LoadingTasks\n isLoadingMore?: boolean\n groupBy?: TableGroupBy\n}\n\nexport default function useBuildProjectDataTable({\n foldersMap,\n tasksMap,\n rows,\n tasksByFolderMap,\n expanded,\n projectInfo,\n showHierarchy,\n loadingTasks = {},\n isLoadingMore = false,\n}: Params): TableRow[] {\n const getEntityTypeData = useGetEntityTypeData({ projectInfo })\n\n // Convert expanded object to a stable string for memoization comparison\n const expandedKey = useMemo(() => JSON.stringify(expanded), [expanded])\n\n // Memoize expandedFolderIds set for efficient lookups\n const expandedFolderIds = useMemo(() => {\n return new Set(\n Object.entries(expanded)\n .filter(([_, isExpanded]) => isExpanded)\n .map(([id]) => id),\n )\n }, [expandedKey])\n\n // Memoize relationship maps to avoid rebuilding them on every render\n const { childToParentMap, parentToChildrenMap } = useMemo(() => {\n const childToParent = new Map<string, string>()\n const parentToChildren = new Map<string, Set<string>>()\n\n // Construct relationship maps in a single pass\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n const parentId = folder.parentId\n if (parentId) {\n childToParent.set(folder.id, parentId)\n\n let children = parentToChildren.get(parentId)\n if (!children) {\n children = new Set<string>()\n parentToChildren.set(parentId, children)\n }\n children.add(folder.id)\n }\n }\n\n return { childToParentMap: childToParent, parentToChildrenMap: parentToChildren }\n }, [foldersMap])\n\n // Memoize visible folders calculation\n const visibleFolders = useMemo(() => {\n const visible = new Set<string>()\n\n // Start with root folders and folders with non-existent parents\n const queue: string[] = []\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n // Include folders with no parent OR with a parent that doesn't exist\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n visible.add(folder.id)\n queue.push(folder.id)\n }\n }\n\n // Process queue to identify visible folders (BFS)\n while (queue.length > 0) {\n const folderId = queue.shift()!\n const isParentExpanded = expandedFolderIds.has(folderId)\n\n if (!isParentExpanded) continue\n\n // Add children of expanded folders to visible set\n const childrenIds = parentToChildrenMap.get(folderId)\n if (childrenIds) {\n for (const childId of childrenIds) {\n if (!visible.has(childId)) {\n visible.add(childId)\n queue.push(childId)\n }\n }\n }\n }\n\n return visible\n }, [foldersMap, parentToChildrenMap, expandedFolderIds])\n\n // Final memoized result - build the table tree\n return useMemo(() => {\n // Helper function to create a task row\n const createTaskRow = (task: EditorTaskNode, parentId?: string): TableRow => {\n const typeData = getEntityTypeData('task', task.taskType)\n\n const links = linksToTableData(task.links, 'task', {\n folderTypes: projectInfo?.folderTypes || [],\n productTypes: Object.values(productTypes || {}),\n taskTypes: projectInfo?.taskTypes || [],\n })\n\n return {\n id: task.id,\n entityType: 'task',\n parentId: parentId || task.folderId,\n folderId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n path: task.parents.join('/') || null, // todo: probably remove this and just use parents\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n hasReviewables: task.hasReviewables || false,\n links: links,\n }\n }\n\n // If showHierarchy is false, create a flat list of task rows\n if (!showHierarchy) {\n const flatRows: TableRow[] = []\n\n // Loop through all tasks\n for (const task of tasksMap.values()) {\n if (!task.id) continue\n flatRows.push(createTaskRow(task))\n }\n\n // Loop through all extra rows\n for (const row of rows || []) {\n flatRows.push(row)\n }\n\n // if we are loading more tasks, add loading rows\n if (isLoadingMore) {\n const firstTaskAttrib = tasksMap.entries().next()?.value?.[1]?.attrib || {}\n const loadingAttribs = Object.keys(firstTaskAttrib).map((key) => ({\n name: key,\n }))\n // number of tasks we loading with the infinite query\n const count = TASKS_INFINITE_QUERY_COUNT\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(loadingAttribs, count, {\n type: 'task',\n })\n\n flatRows.push(...loadingTaskRows)\n }\n }\n\n return flatRows\n }\n\n // Use Map for O(1) lookups\n const rowsById = new Map<string, TableRow>()\n const rootRows: TableRow[] = []\n\n // Create minimal rows for only visible folders\n for (const folderId of visibleFolders) {\n const folder = foldersMap.get(folderId)\n if (!folder) continue\n\n const links = linksToTableData(folder.links, 'folder', {\n folderTypes: projectInfo?.folderTypes || [],\n productTypes: Object.values(productTypes || {}),\n taskTypes: projectInfo?.taskTypes || [],\n })\n\n // Create row with minimal required properties\n const row: TableRow = {\n id: folderId,\n entityType: 'folder',\n parentId: folder.parentId || undefined,\n folderId: folderId || null, // root folders have no folderId\n name: folder.name || '',\n label: folder.label || folder.name || '',\n icon: getEntityTypeData('folder', folder.folderType)?.icon || null,\n color: null,\n img: null,\n subRows: [],\n status: folder.status,\n tags: folder.tags || [],\n subType: folder.folderType || null,\n ownAttrib: folder.ownAttrib || [],\n path: folder.path,\n attrib: folder.attrib || {},\n childOnlyMatch: folder.childOnlyMatch || false,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n hasReviewables: folder.hasReviewables || false,\n hasVersions: folder.hasVersions || false,\n links: links,\n }\n\n rowsById.set(folderId, row)\n\n // Add root rows directly to the rootRows array\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n rootRows.push(row)\n }\n\n // Process tasks immediately if folder is expanded\n if (expandedFolderIds.has(folderId)) {\n // because tasksByFolderMap is a map of tasks by folder ID\n // we can directly get the tasks for the current folder\n const folderTaskIds = tasksByFolderMap.get(folderId) || []\n const folderTasks = folderTaskIds.flatMap((taskId) => tasksMap.get(taskId) || [])\n\n if (folderTasks.length || loadingTasks[folderId]) {\n // Use array literal with known length for better performance\n const taskRows = new Array<TableRow>(folderTasks.length)\n\n // Direct array assignment is faster than push operations\n for (let i = 0; i < folderTasks.length; i++) {\n taskRows[i] = createTaskRow(folderTasks[i], folderId)\n }\n\n // Add loading rows if applicable\n if (loadingTasks[folderId]) {\n const firstTaskAttrib = tasksMap.entries().next()?.value?.[1]?.attrib || {}\n const loadingAttribs = Object.keys(firstTaskAttrib).map((key) => ({\n name: key,\n }))\n const count = loadingTasks[folderId]\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(loadingAttribs, count, {\n type: 'task',\n parentId: folderId,\n })\n\n taskRows.push(...loadingTaskRows)\n }\n }\n\n row.subRows = taskRows\n }\n }\n }\n\n // Build the folder hierarchy efficiently\n for (const folderId of visibleFolders) {\n const parentId = childToParentMap.get(folderId)\n if (!parentId || !expandedFolderIds.has(parentId)) continue\n\n const childRow = rowsById.get(folderId)\n const parentRow = rowsById.get(parentId)\n\n if (!childRow || !parentRow) continue\n\n // Add folder to its parent's subRows\n parentRow.subRows.push(childRow)\n }\n\n // Add any extra rows to the root rows\n for (const row of rows || []) {\n rootRows.push(row)\n }\n\n return rootRows\n }, [\n foldersMap,\n tasksMap,\n rows,\n visibleFolders,\n childToParentMap,\n expandedFolderIds,\n showHierarchy,\n loadingTasks,\n isLoadingMore,\n ])\n}\n"],"names":["TASKS_INFINITE_QUERY_COUNT","useBuildProjectDataTable","foldersMap","tasksMap","rows","tasksByFolderMap","expanded","projectInfo","showHierarchy","loadingTasks","isLoadingMore","getEntityTypeData","useGetEntityTypeData","expandedKey","useMemo","expandedFolderIds","_","isExpanded","id","childToParentMap","parentToChildrenMap","childToParent","parentToChildren","folder","parentId","children","visibleFolders","visible","queue","folderId","childrenIds","childId","createTaskRow","task","typeData","links","linksToTableData","productTypes","flatRows","row","firstTaskAttrib","_c","_b","_a","loadingAttribs","key","count","loadingTaskRows","generateLoadingRows","rowsById","rootRows","_d","folderTasks","taskId","taskRows","i","_g","_f","_e","childRow","parentRow"],"mappings":"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"}
1
+ {"version":3,"file":"useBuildProjectDataTable.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport {\n EditorTaskNode,\n FolderNodeMap,\n TableRow,\n TaskNodeMap,\n TasksByFolderMap,\n} from '../types/table'\nimport { ExpandedState } from '@tanstack/react-table'\nimport { generateLoadingRows } from '../utils/loadingUtils'\nconst TASKS_INFINITE_QUERY_COUNT = 100\nimport { LoadingTasks } from '../types'\nimport { ProjectModel } from '../types/project'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { TableGroupBy } from '../context'\nimport { linksToTableData } from '../utils'\nimport { productTypes } from '@shared/util'\n\ntype Params = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n rows?: TableRow[]\n expanded: ExpandedState\n projectInfo?: ProjectModel\n showHierarchy: boolean\n loadingTasks?: LoadingTasks\n isLoadingMore?: boolean\n groupBy?: TableGroupBy\n}\n\nexport default function useBuildProjectDataTable({\n foldersMap,\n tasksMap,\n rows,\n tasksByFolderMap,\n expanded,\n projectInfo,\n showHierarchy,\n loadingTasks = {},\n isLoadingMore = false,\n}: Params): TableRow[] {\n const getEntityTypeData = useGetEntityTypeData({ projectInfo })\n\n // Convert expanded object to a stable string for memoization comparison\n const expandedKey = useMemo(() => JSON.stringify(expanded), [expanded])\n\n // Memoize expandedFolderIds set for efficient lookups\n const expandedFolderIds = useMemo(() => {\n return new Set(\n Object.entries(expanded)\n .filter(([_, isExpanded]) => isExpanded)\n .map(([id]) => id),\n )\n }, [expandedKey])\n\n // Memoize relationship maps to avoid rebuilding them on every render\n const { childToParentMap, parentToChildrenMap } = useMemo(() => {\n const childToParent = new Map<string, string>()\n const parentToChildren = new Map<string, Set<string>>()\n\n // Construct relationship maps in a single pass\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n const parentId = folder.parentId\n if (parentId) {\n childToParent.set(folder.id, parentId)\n\n let children = parentToChildren.get(parentId)\n if (!children) {\n children = new Set<string>()\n parentToChildren.set(parentId, children)\n }\n children.add(folder.id)\n }\n }\n\n return { childToParentMap: childToParent, parentToChildrenMap: parentToChildren }\n }, [foldersMap])\n\n // Memoize visible folders calculation\n const visibleFolders = useMemo(() => {\n const visible = new Set<string>()\n\n // Start with root folders and folders with non-existent parents\n const queue: string[] = []\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n // Include folders with no parent OR with a parent that doesn't exist\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n visible.add(folder.id)\n queue.push(folder.id)\n }\n }\n\n // Process queue to identify visible folders (BFS)\n while (queue.length > 0) {\n const folderId = queue.shift()!\n const isParentExpanded = expandedFolderIds.has(folderId)\n\n if (!isParentExpanded) continue\n\n // Add children of expanded folders to visible set\n const childrenIds = parentToChildrenMap.get(folderId)\n if (childrenIds) {\n for (const childId of childrenIds) {\n if (!visible.has(childId)) {\n visible.add(childId)\n queue.push(childId)\n }\n }\n }\n }\n\n return visible\n }, [foldersMap, parentToChildrenMap, expandedFolderIds])\n\n // Final memoized result - build the table tree\n return useMemo(() => {\n // Helper function to create a task row\n const createTaskRow = (task: EditorTaskNode, parentId?: string): TableRow => {\n const typeData = getEntityTypeData('task', task.taskType)\n\n const links = linksToTableData(task.links, 'task', {\n folderTypes: projectInfo?.folderTypes || [],\n productTypes: Object.values(productTypes || {}),\n taskTypes: projectInfo?.taskTypes || [],\n })\n\n return {\n id: task.id,\n entityType: 'task',\n parentId: parentId || task.folderId,\n folderId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n path: task.parents.join('/') || null, // todo: probably remove this and just use parents\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n hasReviewables: task.hasReviewables || false,\n links: links,\n }\n }\n\n // If showHierarchy is false, create a flat list of task rows\n if (!showHierarchy) {\n const flatRows: TableRow[] = []\n\n // Loop through all tasks\n for (const task of tasksMap.values()) {\n if (!task.id) continue\n flatRows.push(createTaskRow(task))\n }\n\n // Loop through all extra rows\n for (const row of rows || []) {\n flatRows.push(row)\n }\n\n // if we are loading more tasks, add loading rows\n if (isLoadingMore) {\n const firstTaskAttrib = tasksMap.entries().next()?.value?.[1]?.attrib || {}\n const loadingAttribs = Object.keys(firstTaskAttrib).map((key) => ({\n name: key,\n }))\n // number of tasks we loading with the infinite query\n const count = TASKS_INFINITE_QUERY_COUNT\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(loadingAttribs, count, {\n type: 'task',\n })\n\n flatRows.push(...loadingTaskRows)\n }\n }\n\n return flatRows\n }\n\n // Use Map for O(1) lookups\n const rowsById = new Map<string, TableRow>()\n const rootRows: TableRow[] = []\n\n // Create minimal rows for only visible folders\n for (const folderId of visibleFolders) {\n const folder = foldersMap.get(folderId)\n if (!folder) continue\n\n const links = linksToTableData(folder.links, 'folder', {\n folderTypes: projectInfo?.folderTypes || [],\n productTypes: Object.values(productTypes || {}),\n taskTypes: projectInfo?.taskTypes || [],\n })\n\n // Create row with minimal required properties\n const row: TableRow = {\n id: folderId,\n entityType: 'folder',\n parentId: folder.parentId || undefined,\n folderId: folderId || null, // root folders have no folderId\n name: folder.name || '',\n label: folder.label || folder.name || '',\n icon: getEntityTypeData('folder', folder.folderType)?.icon || null,\n color: null,\n img: null,\n subRows: [],\n status: folder.status,\n tags: folder.tags || [],\n subType: folder.folderType || null,\n ownAttrib: folder.ownAttrib || [],\n path: folder.path,\n attrib: folder.attrib || {},\n childOnlyMatch: folder.childOnlyMatch || false,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n hasReviewables: folder.hasReviewables || false,\n hasVersions: folder.hasVersions || false,\n links: links,\n }\n\n rowsById.set(folderId, row)\n\n // Add root rows directly to the rootRows array\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n rootRows.push(row)\n }\n\n // Process tasks immediately if folder is expanded\n if (expandedFolderIds.has(folderId)) {\n // because tasksByFolderMap is a map of tasks by folder ID\n // we can directly get the tasks for the current folder\n const folderTaskIds = tasksByFolderMap.get(folderId) || []\n const folderTasks = folderTaskIds.flatMap((taskId) => tasksMap.get(taskId) || [])\n\n if (folderTasks.length || loadingTasks[folderId]) {\n // Use array literal with known length for better performance\n const taskRows = new Array<TableRow>(folderTasks.length)\n\n // Direct array assignment is faster than push operations\n for (let i = 0; i < folderTasks.length; i++) {\n taskRows[i] = createTaskRow(folderTasks[i], folderId)\n }\n\n // Add loading rows if applicable\n if (loadingTasks[folderId]) {\n const firstTaskAttrib = tasksMap.entries().next()?.value?.[1]?.attrib || {}\n const loadingAttribs = Object.keys(firstTaskAttrib).map((key) => ({\n name: key,\n }))\n const count = loadingTasks[folderId]\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(loadingAttribs, count, {\n type: 'task',\n parentId: folderId,\n })\n\n taskRows.push(...loadingTaskRows)\n }\n }\n\n row.subRows = taskRows\n }\n }\n }\n\n // Build the folder hierarchy efficiently\n for (const folderId of visibleFolders) {\n const parentId = childToParentMap.get(folderId)\n if (!parentId || !expandedFolderIds.has(parentId)) continue\n\n const childRow = rowsById.get(folderId)\n const parentRow = rowsById.get(parentId)\n\n if (!childRow || !parentRow) continue\n\n // Add folder to its parent's subRows\n parentRow.subRows.push(childRow)\n }\n\n // Add any extra rows to the root rows\n for (const row of rows || []) {\n rootRows.push(row)\n }\n\n return rootRows\n }, [\n foldersMap,\n tasksMap,\n rows,\n visibleFolders,\n childToParentMap,\n expandedFolderIds,\n showHierarchy,\n loadingTasks,\n isLoadingMore,\n ])\n}\n"],"names":["TASKS_INFINITE_QUERY_COUNT","useBuildProjectDataTable","foldersMap","tasksMap","rows","tasksByFolderMap","expanded","projectInfo","showHierarchy","loadingTasks","isLoadingMore","getEntityTypeData","useGetEntityTypeData","expandedKey","useMemo","expandedFolderIds","_","isExpanded","id","childToParentMap","parentToChildrenMap","childToParent","parentToChildren","folder","parentId","children","visibleFolders","visible","queue","folderId","childrenIds","childId","createTaskRow","task","typeData","links","linksToTableData","productTypes","flatRows","row","firstTaskAttrib","_c","_b","_a","loadingAttribs","key","count","loadingTaskRows","generateLoadingRows","rowsById","rootRows","_d","folderTasks","taskId","taskRows","i","_g","_f","_e","childRow","parentRow"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const X=require("../../ContextMenu/useCreateContextMenu.cjs.js"),Z=require("./useDeleteEntities.cjs.js"),a=require("../../../util/platform.cjs.js"),C=require("../utils/cellUtils.cjs.js"),O=require("../context/ClipboardContext.cjs.js"),y=require("../context/SelectionCellsContext.cjs.js"),N=require("../context/ProjectTableContext.cjs.js"),ee=require("../context/ProjectDataContext.cjs.js"),re=require("../context/CellEditingContext.cjs.js"),F=require("./useBuildGroupByTableData.cjs.js");require("@ynput/ayon-react-components");require("lodash");require("react-toastify");require("uuid");require("../../../util/pubsub.cjs.js");const ie=require("../utils/getEntityViewerIds.cjs.js");require("../../../../../_virtual/jsx-runtime.cjs.js");require("@tanstack/react-table");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("clsx");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("react");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("date-fns");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../ProjectTreeTable.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");require("../context/ColumnSettingsContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/ColumnHeaderMenu.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/context/ViewsContext.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/PricingLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredPowerpackVersion.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Feedback/FeedbackContext.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");const te=({attribs:_,headerLabels:D=[],onOpenNew:l})=>{const{projectName:A,showHierarchy:f,getEntityById:b,toggleExpandAll:g,toggleExpands:w,expanded:R,contextMenuItems:K=[],powerpack:W,onOpenPlayer:T}=N.useProjectTableContext(),{canWriteLabelPermission:v,canWriteNamePermission:B}=ee.useProjectDataContext(),{copyToClipboard:P,exportCSV:L,pasteFromClipboard:U}=O.useClipboard(),{selectedCells:S,clearSelection:V,selectCell:G,focusCell:j}=y.useSelectionCellsContext(),{inheritFromParent:Y,history:M,setEditingCellId:H}=re.useCellEditing(),$=Z({}),[z]=X.useCreateContextMenu([],W),J=n=>n.reduce((e,t)=>{var I;const{rowId:r,colId:u}=C.parseCellId(t)||{};if(!r||!u||!u.startsWith("attrib_"))return e;const i=b(r);if(!i)return e;const d=i.entityId||i.id,s=u.replace("attrib_",""),m=_.find(q=>q.name===s),p=m==null?void 0:m.data.inherit;if((I=i.ownAttrib)!=null&&I.includes(s)&&p){const q=e.findIndex(h=>h.entityId===d);q>=0?e[q].attribs.includes(s)||e[q].attribs.push(s):e.push({rowId:d,entityId:d,entityType:"folderId"in i?"task":"folder",attribs:[s],ownAttrib:i.ownAttrib||[],folderId:i.parentId??i.folderId})}return e},[]),x={"copy-paste":(n,e,t,r)=>{var u;return[{label:"Copy",icon:"content_copy",shortcut:a.getPlatformShortcutKey("c",[a.KeyMode.Ctrl]),command:()=>P(r.selectedCells),hidden:e.isGroup||e.columnId==="thumbnail"},{label:`Copy row${r.selectedFullRows.length>1?"s":""}`,icon:"content_copy",command:()=>P(r.selectedFullRows,!0),hidden:e.columnId!=="name"||!r.selectedFullRows.some(i=>{var d,s;return((d=C.parseCellId(i))==null?void 0:d.rowId)===((s=C.parseCellId(e.cellId))==null?void 0:s.rowId)})},{label:"Paste",icon:"content_paste",shortcut:a.getPlatformShortcutKey("v",[a.KeyMode.Ctrl]),command:()=>U(r.selectedCells),hidden:e.columnId==="name"||e.columnId==="thumbnail"||e.isGroup,disabled:(u=e.attribField)==null?void 0:u.readOnly}]},"show-details":(n,e,t,r)=>({label:"Show details",icon:"dock_to_left",shortcut:"Double click",command:()=>{const u=C.getCellId(e.entityId,y.ROW_SELECTION_COLUMN_ID);G(u,!1,!1)},hidden:e.columnId!=="name"||r.selectedRows.length>1||e.isGroup}),rename:(n,e)=>({label:"Rename",icon:"titlecase",shortcut:"R",command:()=>{const t=C.getCellId(e.entityId,"name");H(t)},hidden:e.columnId!=="name"||e.isGroup||e.entityType!=="folder"&&e.entityType!=="task",disabled:!(B||v)}),"expand-collapse":(n,e,t,r)=>[{label:"Expand children",icon:"expand_all",shortcut:a.getPlatformShortcutKey("click",[a.KeyMode.Alt]),command:()=>g(r.selectedRows,!0),hidden:e.columnId!=="name"||e.entityType!=="folder"},{label:"Collapse children",icon:"collapse_all",shortcut:a.getPlatformShortcutKey("click",[a.KeyMode.Alt]),command:()=>g(r.selectedRows,!1),hidden:e.columnId!=="name"||e.entityType!=="folder"},{label:"Expand",icon:"expand_all",command:()=>w(r.selectedRows,!0),hidden:e.columnId!=="name"||!e.isGroup||R[e.entityId]},{label:"Collapse",icon:"collapse_all",command:()=>w(r.selectedRows,!1),hidden:e.columnId!=="name"||!e.isGroup||!R[e.entityId]}],delete:(n,e,t,r)=>({label:"Delete",icon:"delete",danger:!0,command:()=>$(r.selectedRows),hidden:e.columnId!=="name"||e.isGroup}),inherit:(n,e,t,r)=>{const u=J(r.selectedCells),i=u.length>0&&f&&!(r.selectedRows.length>1&&r.selectedColumns.length>1);return{label:"Inherit from parent",icon:"disabled_by_default",command:()=>Y(u),hidden:!i}},export:(n,e)=>({label:"Export selection",icon:"download",command:()=>L(Array.from(S),A),hidden:e.isGroup}),"create-folder":(n,e)=>[{label:"Create folder",icon:"create_new_folder",command:()=>l==null?void 0:l("folder"),hidden:e.columnId!=="name"||!f||!l},{label:"Create root folder",icon:"create_new_folder",command:()=>{V(),l==null||l("folder")},hidden:e.columnId!=="name"||!f||!l}],"create-task":(n,e)=>({label:"Create task",icon:"add_task",command:()=>l==null?void 0:l("task"),hidden:e.columnId!=="name"||!f||!l}),"open-viewer":(n,e,t,r)=>({label:"Open in viewer",icon:"play_circle",shortcut:"Spacebar",command:()=>{if(T){const u=b(e.entityId);if(u){const i=ie.getEntityViewierIds(u);T(i,{quickView:!0})}}},hidden:e.columnId!=="thumbnail"&&e.columnId!=="name"||e.isGroup})},E=n=>{const{rowId:e,colId:t}=C.parseCellId(n)||{};if(!e||!t)return;const r=b(e),u=_.find(s=>s.name===(t==null?void 0:t.replace("attrib_",""))),i=D.find(s=>s.id===t),d=r?"parentId"in r?r.parentId:"folderId"in r?r.folderId:void 0:void 0;return{cellId:n,columnId:t,entityId:(r==null?void 0:r.entityId)||(r==null?void 0:r.id)||e,entityType:r==null?void 0:r.entityType,parentId:d,attribField:u,isGroup:e.startsWith(F.GROUP_BY_ID),column:{id:t,label:(i==null?void 0:i.label)||""}}};return{handleTableBodyContextMenu:n=>{var k;const t=n.target.closest("td"),r=(k=t==null?void 0:t.firstElementChild)==null?void 0:k.id;if(!r)return;const u=E(r);if(!u)return;let i=Array.from(S);(!i.includes(r)||!i.length)&&(i=[r],G(r,!1,!1),j(r));const d=i.filter(o=>{var c;return((c=C.parseCellId(o))==null?void 0:c.colId)!==y.ROW_SELECTION_COLUMN_ID}),s=i.flatMap(o=>E(o)||[]),m=[...new Map(s.map(o=>[o.entityId,o])).values()],p=[],I=[],q=[],h=[];for(const{entityId:o,columnId:c}of m)o&&!p.includes(o)&&p.push(o),c&&!I.includes(c)&&I.push(c),c===y.ROW_SELECTION_COLUMN_ID&&!q.includes(o)&&q.push(o),o.startsWith(F.GROUP_BY_ID)&&h.push(o);const Q=K.flatMap(o=>{var c;return typeof o=="function"?o(n,u,m,{selectedCells:d,selectedRows:p,selectedColumns:I,selectedFullRows:q,selectedGroups:h},{history:M}):(c=x[o])==null?void 0:c.call(x,n,u,m,{selectedCells:d,selectedRows:p,selectedColumns:I,selectedFullRows:q,selectedGroups:h},{history:M})});z(n,Q)}}};module.exports=te;
1
+ "use strict";const X=require("../../ContextMenu/useCreateContextMenu.cjs.js"),Z=require("./useDeleteEntities.cjs.js"),a=require("../../../util/platform.cjs.js"),C=require("../utils/cellUtils.cjs.js"),O=require("../context/ClipboardContext.cjs.js"),y=require("../context/SelectionCellsContext.cjs.js"),N=require("../context/ProjectTableContext.cjs.js"),ee=require("../context/ProjectDataContext.cjs.js"),re=require("../context/CellEditingContext.cjs.js"),F=require("./useBuildGroupByTableData.cjs.js");require("@ynput/ayon-react-components");require("lodash");require("react-toastify");require("uuid");require("../../../util/pubsub.cjs.js");const ie=require("../utils/getEntityViewerIds.cjs.js");require("../../../../../_virtual/jsx-runtime.cjs.js");require("@tanstack/react-table");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("clsx");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("react");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("date-fns");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../ProjectTreeTable.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");require("../context/ColumnSettingsContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/ColumnHeaderMenu.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/context/ViewsContext.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/PricingLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Feedback/FeedbackContext.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");const te=({attribs:_,headerLabels:D=[],onOpenNew:l})=>{const{projectName:A,showHierarchy:f,getEntityById:b,toggleExpandAll:g,toggleExpands:w,expanded:R,contextMenuItems:K=[],powerpack:W,onOpenPlayer:T}=N.useProjectTableContext(),{canWriteLabelPermission:v,canWriteNamePermission:B}=ee.useProjectDataContext(),{copyToClipboard:P,exportCSV:L,pasteFromClipboard:U}=O.useClipboard(),{selectedCells:S,clearSelection:V,selectCell:G,focusCell:j}=y.useSelectionCellsContext(),{inheritFromParent:Y,history:M,setEditingCellId:H}=re.useCellEditing(),$=Z({}),[z]=X.useCreateContextMenu([],W),J=n=>n.reduce((e,t)=>{var I;const{rowId:r,colId:u}=C.parseCellId(t)||{};if(!r||!u||!u.startsWith("attrib_"))return e;const i=b(r);if(!i)return e;const d=i.entityId||i.id,s=u.replace("attrib_",""),m=_.find(q=>q.name===s),p=m==null?void 0:m.data.inherit;if((I=i.ownAttrib)!=null&&I.includes(s)&&p){const q=e.findIndex(h=>h.entityId===d);q>=0?e[q].attribs.includes(s)||e[q].attribs.push(s):e.push({rowId:d,entityId:d,entityType:"folderId"in i?"task":"folder",attribs:[s],ownAttrib:i.ownAttrib||[],folderId:i.parentId??i.folderId})}return e},[]),x={"copy-paste":(n,e,t,r)=>{var u;return[{label:"Copy",icon:"content_copy",shortcut:a.getPlatformShortcutKey("c",[a.KeyMode.Ctrl]),command:()=>P(r.selectedCells),hidden:e.isGroup||e.columnId==="thumbnail"},{label:`Copy row${r.selectedFullRows.length>1?"s":""}`,icon:"content_copy",command:()=>P(r.selectedFullRows,!0),hidden:e.columnId!=="name"||!r.selectedFullRows.some(i=>{var d,s;return((d=C.parseCellId(i))==null?void 0:d.rowId)===((s=C.parseCellId(e.cellId))==null?void 0:s.rowId)})},{label:"Paste",icon:"content_paste",shortcut:a.getPlatformShortcutKey("v",[a.KeyMode.Ctrl]),command:()=>U(r.selectedCells),hidden:e.columnId==="name"||e.columnId==="thumbnail"||e.isGroup,disabled:(u=e.attribField)==null?void 0:u.readOnly}]},"show-details":(n,e,t,r)=>({label:"Show details",icon:"dock_to_left",shortcut:"Double click",command:()=>{const u=C.getCellId(e.entityId,y.ROW_SELECTION_COLUMN_ID);G(u,!1,!1)},hidden:e.columnId!=="name"||r.selectedRows.length>1||e.isGroup}),rename:(n,e)=>({label:"Rename",icon:"titlecase",shortcut:"R",command:()=>{const t=C.getCellId(e.entityId,"name");H(t)},hidden:e.columnId!=="name"||e.isGroup||e.entityType!=="folder"&&e.entityType!=="task",disabled:!(B||v)}),"expand-collapse":(n,e,t,r)=>[{label:"Expand children",icon:"expand_all",shortcut:a.getPlatformShortcutKey("click",[a.KeyMode.Alt]),command:()=>g(r.selectedRows,!0),hidden:e.columnId!=="name"||e.entityType!=="folder"},{label:"Collapse children",icon:"collapse_all",shortcut:a.getPlatformShortcutKey("click",[a.KeyMode.Alt]),command:()=>g(r.selectedRows,!1),hidden:e.columnId!=="name"||e.entityType!=="folder"},{label:"Expand",icon:"expand_all",command:()=>w(r.selectedRows,!0),hidden:e.columnId!=="name"||!e.isGroup||R[e.entityId]},{label:"Collapse",icon:"collapse_all",command:()=>w(r.selectedRows,!1),hidden:e.columnId!=="name"||!e.isGroup||!R[e.entityId]}],delete:(n,e,t,r)=>({label:"Delete",icon:"delete",danger:!0,command:()=>$(r.selectedRows),hidden:e.columnId!=="name"||e.isGroup}),inherit:(n,e,t,r)=>{const u=J(r.selectedCells),i=u.length>0&&f&&!(r.selectedRows.length>1&&r.selectedColumns.length>1);return{label:"Inherit from parent",icon:"disabled_by_default",command:()=>Y(u),hidden:!i}},export:(n,e)=>({label:"Export selection",icon:"download",command:()=>L(Array.from(S),A),hidden:e.isGroup}),"create-folder":(n,e)=>[{label:"Create folder",icon:"create_new_folder",command:()=>l==null?void 0:l("folder"),hidden:e.columnId!=="name"||!f||!l},{label:"Create root folder",icon:"create_new_folder",command:()=>{V(),l==null||l("folder")},hidden:e.columnId!=="name"||!f||!l}],"create-task":(n,e)=>({label:"Create task",icon:"add_task",command:()=>l==null?void 0:l("task"),hidden:e.columnId!=="name"||!f||!l}),"open-viewer":(n,e,t,r)=>({label:"Open in viewer",icon:"play_circle",shortcut:"Spacebar",command:()=>{if(T){const u=b(e.entityId);if(u){const i=ie.getEntityViewierIds(u);T(i,{quickView:!0})}}},hidden:e.columnId!=="thumbnail"&&e.columnId!=="name"||e.isGroup})},E=n=>{const{rowId:e,colId:t}=C.parseCellId(n)||{};if(!e||!t)return;const r=b(e),u=_.find(s=>s.name===(t==null?void 0:t.replace("attrib_",""))),i=D.find(s=>s.id===t),d=r?"parentId"in r?r.parentId:"folderId"in r?r.folderId:void 0:void 0;return{cellId:n,columnId:t,entityId:(r==null?void 0:r.entityId)||(r==null?void 0:r.id)||e,entityType:r==null?void 0:r.entityType,parentId:d,attribField:u,isGroup:e.startsWith(F.GROUP_BY_ID),column:{id:t,label:(i==null?void 0:i.label)||""}}};return{handleTableBodyContextMenu:n=>{var k;const t=n.target.closest("td"),r=(k=t==null?void 0:t.firstElementChild)==null?void 0:k.id;if(!r)return;const u=E(r);if(!u)return;let i=Array.from(S);(!i.includes(r)||!i.length)&&(i=[r],G(r,!1,!1),j(r));const d=i.filter(o=>{var c;return((c=C.parseCellId(o))==null?void 0:c.colId)!==y.ROW_SELECTION_COLUMN_ID}),s=i.flatMap(o=>E(o)||[]),m=[...new Map(s.map(o=>[o.entityId,o])).values()],p=[],I=[],q=[],h=[];for(const{entityId:o,columnId:c}of m)o&&!p.includes(o)&&p.push(o),c&&!I.includes(c)&&I.push(c),c===y.ROW_SELECTION_COLUMN_ID&&!q.includes(o)&&q.push(o),o.startsWith(F.GROUP_BY_ID)&&h.push(o);const Q=K.flatMap(o=>{var c;return typeof o=="function"?o(n,u,m,{selectedCells:d,selectedRows:p,selectedColumns:I,selectedFullRows:q,selectedGroups:h},{history:M}):(c=x[o])==null?void 0:c.call(x,n,u,m,{selectedCells:d,selectedRows:p,selectedColumns:I,selectedFullRows:q,selectedGroups:h},{history:M})});z(n,Q)}}};module.exports=te;
2
2
  //# sourceMappingURL=useCellContextMenu.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCellContextMenu.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCellContextMenu.ts"],"sourcesContent":["import { ContextMenuItemType, useCreateContextMenu } from '../../ContextMenu/useCreateContextMenu'\nimport useDeleteEntities from './useDeleteEntities'\nimport { getPlatformShortcutKey, KeyMode } from '../../../util/platform'\nimport { getCellId, parseCellId } from '../utils/cellUtils'\nimport { useClipboard } from '../context/ClipboardContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { useProjectTableContext } from '../context/ProjectTableContext'\nimport { useProjectDataContext } from '../context/ProjectDataContext'\nimport { useCellEditing } from '../context/CellEditingContext'\nimport { InheritFromParentEntity } from './useUpdateTableData'\nimport { ProjectTableAttribute, TableRow } from '../types'\nimport { UseHistoryReturn } from './useHistory'\nimport { GROUP_BY_ID } from './useBuildGroupByTableData'\nimport { ColumnDef } from '@tanstack/react-table'\nimport { getEntityViewierIds } from '../utils'\n\ntype ContextEvent = React.MouseEvent<HTMLTableSectionElement, MouseEvent>\n\nexport type HeaderLabel = { id: string; label: string }\n\nexport type TableCellContextData = {\n cellId: string\n columnId: string\n entityId: string\n entityType: 'folder' | 'task' | 'product' | 'version' | undefined\n parentId?: string\n attribField: ProjectTableAttribute | undefined // the attribute field if any (fps, custom attribs, etc.)\n column: {\n id: string\n label: string\n }\n isGroup: boolean // if the cell is a group header\n}\ntype DefaultMenuItem =\n | 'copy-paste'\n | 'show-details'\n | 'rename'\n | 'expand-collapse'\n | 'inherit'\n | 'delete'\n | 'export'\n | 'create-folder'\n | 'create-task'\n | 'open-viewer'\nexport type ContextMenuItemConstructor = (\n e: ContextEvent,\n cell: TableCellContextData,\n selectedCells: TableCellContextData[],\n meta: {\n selectedCells: string[] // minus row selection cells\n selectedRows: string[]\n selectedColumns: string[]\n selectedFullRows: string[] // if the full row is selected\n selectedGroups: string[] // groups if any\n },\n context: {\n history: UseHistoryReturn\n },\n) => ContextMenuItemType | ContextMenuItemType[] | undefined\nexport type ContextMenuItemConstructors = (DefaultMenuItem | ContextMenuItemConstructor)[]\n\ntype CellContextMenuProps = {\n attribs: ProjectTableAttribute[]\n columns?: ColumnDef<TableRow>[]\n headerLabels: HeaderLabel[]\n onOpenNew?: (type: 'folder' | 'task') => void\n}\n\nconst useCellContextMenu = ({ attribs, headerLabels = [], onOpenNew }: CellContextMenuProps) => {\n // context hooks\n const {\n projectName,\n showHierarchy,\n getEntityById,\n toggleExpandAll,\n toggleExpands,\n expanded,\n contextMenuItems = [],\n powerpack,\n onOpenPlayer,\n } = useProjectTableContext()\n const { canWriteLabelPermission, canWriteNamePermission } = useProjectDataContext()\n const { copyToClipboard, exportCSV, pasteFromClipboard } = useClipboard()\n const { selectedCells, clearSelection, selectCell, focusCell } = useSelectionCellsContext()\n const { inheritFromParent, history, setEditingCellId } = useCellEditing()\n\n // update entity context\n\n // data mutations\n const deleteEntities = useDeleteEntities({})\n\n const [cellContextMenuShow] = useCreateContextMenu([], powerpack)\n\n // Helper function to identify attributes that can be inherited\n const getEntitiesToInherit = (selected: string[]): InheritFromParentEntity[] => {\n return selected.reduce((acc, cellId) => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId || !colId.startsWith('attrib_')) return acc\n\n const entity = getEntityById(rowId)\n if (!entity) return acc\n const entityId = entity.entityId || entity.id\n\n const attribName = colId.replace('attrib_', '')\n // get attrib model\n const attribModel = attribs.find((attrib) => attrib.name === attribName)\n // is the attrib inheritable?\n const isInheritable = attribModel?.data.inherit\n\n // Check if this attribute is owned by the entity (not inherited)\n if (entity.ownAttrib?.includes(attribName) && isInheritable) {\n // Find existing entry or create new one\n const existingIndex = acc.findIndex((item) => item.entityId === entityId)\n\n if (existingIndex >= 0) {\n // Add to existing entity's attribs if not already there\n if (!acc[existingIndex].attribs.includes(attribName)) {\n acc[existingIndex].attribs.push(attribName)\n }\n } else {\n // Create new entity entry\n acc.push({\n rowId: entityId,\n entityId: entityId,\n entityType: 'folderId' in entity ? 'task' : 'folder',\n attribs: [attribName],\n ownAttrib: entity.ownAttrib || [],\n // @ts-ignore\n folderId: entity.parentId ?? entity.folderId,\n })\n }\n }\n\n return acc\n }, [] as InheritFromParentEntity[])\n }\n\n const copyAndPasteItems: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n return [\n {\n label: 'Copy',\n icon: 'content_copy',\n shortcut: getPlatformShortcutKey('c', [KeyMode.Ctrl]),\n command: () => copyToClipboard(meta.selectedCells),\n hidden: cell.isGroup || cell.columnId === 'thumbnail',\n },\n {\n label: `Copy row${meta.selectedFullRows.length > 1 ? 's' : ''}`,\n icon: 'content_copy',\n command: () => copyToClipboard(meta.selectedFullRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !meta.selectedFullRows.some(\n (cellId) => parseCellId(cellId)?.rowId === parseCellId(cell.cellId)?.rowId,\n ),\n },\n {\n label: 'Paste',\n icon: 'content_paste',\n shortcut: getPlatformShortcutKey('v', [KeyMode.Ctrl]),\n command: () => pasteFromClipboard(meta.selectedCells),\n hidden: cell.columnId === 'name' || cell.columnId === 'thumbnail' || cell.isGroup,\n disabled: cell.attribField?.readOnly,\n },\n ]\n }\n\n const showDetailsItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Show details',\n icon: 'dock_to_left',\n shortcut: 'Double click',\n command: () => {\n const rowSelectionCellId = getCellId(cell.entityId, ROW_SELECTION_COLUMN_ID)\n // select the row to open the details\n selectCell(rowSelectionCellId, false, false)\n },\n hidden: cell.columnId !== 'name' || meta.selectedRows.length > 1 || cell.isGroup,\n })\n\n const openViewerItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Open in viewer',\n icon: 'play_circle',\n shortcut: 'Spacebar',\n command: () => {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.entityId)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n },\n hidden: (cell.columnId !== 'thumbnail' && cell.columnId !== 'name') || cell.isGroup,\n })\n\n const expandCollapseChildrenItems: ContextMenuItemConstructor = (e, cell, selected, meta) => [\n {\n label: 'Expand children',\n icon: 'expand_all',\n shortcut: getPlatformShortcutKey('click', [ KeyMode.Alt]),\n command: () => toggleExpandAll(meta.selectedRows, true),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Collapse children',\n icon: 'collapse_all',\n shortcut: getPlatformShortcutKey('click', [ KeyMode.Alt]),\n command: () => toggleExpandAll(meta.selectedRows, false),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Expand',\n icon: 'expand_all',\n command: () => toggleExpands(meta.selectedRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n expanded[cell.entityId as keyof typeof expanded],\n },\n {\n label: 'Collapse',\n icon: 'collapse_all',\n command: () => toggleExpands(meta.selectedRows, false),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n !expanded[cell.entityId as keyof typeof expanded],\n },\n ]\n\n const deleteItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Delete',\n icon: 'delete',\n danger: true,\n command: () => deleteEntities(meta.selectedRows),\n hidden: cell.columnId !== 'name' || cell.isGroup,\n })\n\n const inheritItem: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n const entitiesToInherit = getEntitiesToInherit(meta.selectedCells)\n const canInheritFromParent =\n entitiesToInherit.length > 0 &&\n showHierarchy &&\n !(meta.selectedRows.length > 1 && meta.selectedColumns.length > 1)\n\n return {\n label: 'Inherit from parent',\n icon: 'disabled_by_default',\n command: () => inheritFromParent(entitiesToInherit),\n hidden: !canInheritFromParent,\n }\n }\n\n const exportItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Export selection',\n icon: 'download',\n command: () => exportCSV(Array.from(selectedCells), projectName),\n hidden: cell.isGroup,\n })\n\n const createFolderItems: ContextMenuItemConstructor = (e, cell) => [\n {\n label: 'Create folder',\n icon: 'create_new_folder',\n command: () => onOpenNew?.('folder'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n {\n label: 'Create root folder',\n icon: 'create_new_folder',\n command: () => {\n clearSelection()\n onOpenNew?.('folder')\n },\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n ]\n\n const createTaskItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Create task',\n icon: 'add_task',\n command: () => onOpenNew?.('task'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n })\n\n const renameItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Rename',\n icon: 'titlecase',\n shortcut: 'R',\n command: () => {\n const nameCellId = getCellId(cell.entityId, 'name')\n setEditingCellId(nameCellId)\n },\n hidden:\n cell.columnId !== 'name' ||\n cell.isGroup ||\n (cell.entityType !== 'folder' && cell.entityType !== 'task'),\n disabled: !(canWriteNamePermission || canWriteLabelPermission),\n })\n\n const builtInMenuItems: Record<DefaultMenuItem, ContextMenuItemConstructor> = {\n ['copy-paste']: copyAndPasteItems,\n ['show-details']: showDetailsItem,\n ['rename']: renameItem,\n ['expand-collapse']: expandCollapseChildrenItems,\n ['delete']: deleteItem,\n ['inherit']: inheritItem,\n ['export']: exportItem,\n ['create-folder']: createFolderItems,\n ['create-task']: createTaskItem,\n ['open-viewer']: openViewerItem,\n }\n\n const getCellData = (cellId: string): TableCellContextData | undefined => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId) return undefined\n const cellEntityData = getEntityById(rowId)\n const attribField = attribs.find((attrib) => attrib.name === colId?.replace('attrib_', ''))\n const column = headerLabels.find((header) => header.id === colId)\n const parentId = cellEntityData\n ? 'parentId' in cellEntityData\n ? cellEntityData.parentId\n : 'folderId' in cellEntityData\n ? cellEntityData.folderId\n : undefined\n : undefined\n return {\n cellId: cellId,\n columnId: colId,\n entityId: cellEntityData?.entityId || cellEntityData?.id || rowId,\n entityType: cellEntityData?.entityType,\n parentId: parentId,\n attribField: attribField,\n isGroup: rowId.startsWith(GROUP_BY_ID),\n column: {\n id: colId,\n label: column?.label || '',\n },\n }\n }\n\n const handleTableBodyContextMenu = (e: ContextEvent) => {\n const target = e.target as HTMLElement\n const tdEl = target.closest('td')\n // get id of first child of td\n const cellId = tdEl?.firstElementChild?.id\n\n if (!cellId) return\n\n const cellData = getCellData(cellId)\n\n if (!cellData) return\n\n let currentSelectedCells = Array.from(selectedCells)\n // if selecting a cell outside of the current selection\n if (!currentSelectedCells.includes(cellId) || !currentSelectedCells.length) {\n currentSelectedCells = [cellId]\n // update selection\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n // selected cells without row selection cells\n const selectedRealCells = currentSelectedCells.filter(\n (id) => parseCellId(id)?.colId !== ROW_SELECTION_COLUMN_ID,\n )\n\n const selectedCellsData = currentSelectedCells.flatMap((cellId) => getCellData(cellId) || [])\n\n // Remove duplicates based on entityId - prioritize full row selection over individual cells\n const filteredSelectedCellsData = [\n ...new Map(selectedCellsData.map((e) => [e.entityId, e])).values(),\n ]\n\n const selectedCellRows: string[] = []\n const selectedCellColumns: string[] = []\n const selectedCellFullRows: string[] = []\n const selectedCellsGroups: string[] = [] // find cells that are group headers\n for (const { entityId, columnId } of filteredSelectedCellsData) {\n if (entityId && !selectedCellRows.includes(entityId)) selectedCellRows.push(entityId)\n if (columnId && !selectedCellColumns.includes(columnId)) selectedCellColumns.push(columnId)\n if (columnId === ROW_SELECTION_COLUMN_ID && !selectedCellFullRows.includes(entityId))\n selectedCellFullRows.push(entityId)\n if (entityId.startsWith(GROUP_BY_ID)) selectedCellsGroups.push(entityId)\n }\n\n const constructedMenuItems = contextMenuItems.flatMap((constructor) =>\n typeof constructor === 'function'\n ? constructor(\n e,\n cellData,\n filteredSelectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n {\n history,\n },\n )\n : builtInMenuItems[constructor]?.(\n e,\n cellData,\n filteredSelectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n { history },\n ),\n )\n\n cellContextMenuShow(e, constructedMenuItems)\n }\n\n return { handleTableBodyContextMenu }\n}\n\nexport default useCellContextMenu\n"],"names":["useCellContextMenu","attribs","headerLabels","onOpenNew","projectName","showHierarchy","getEntityById","toggleExpandAll","toggleExpands","expanded","contextMenuItems","powerpack","onOpenPlayer","useProjectTableContext","canWriteLabelPermission","canWriteNamePermission","useProjectDataContext","copyToClipboard","exportCSV","pasteFromClipboard","useClipboard","selectedCells","clearSelection","selectCell","focusCell","useSelectionCellsContext","inheritFromParent","history","setEditingCellId","useCellEditing","deleteEntities","useDeleteEntities","cellContextMenuShow","useCreateContextMenu","getEntitiesToInherit","selected","acc","cellId","rowId","colId","parseCellId","entity","entityId","attribName","attribModel","attrib","isInheritable","_a","existingIndex","item","builtInMenuItems","e","cell","meta","getPlatformShortcutKey","KeyMode","rowSelectionCellId","getCellId","ROW_SELECTION_COLUMN_ID","nameCellId","entitiesToInherit","canInheritFromParent","targetIds","getEntityViewierIds","getCellData","cellEntityData","attribField","column","header","parentId","GROUP_BY_ID","tdEl","cellData","currentSelectedCells","selectedRealCells","id","selectedCellsData","filteredSelectedCellsData","selectedCellRows","selectedCellColumns","selectedCellFullRows","selectedCellsGroups","columnId","constructedMenuItems","constructor"],"mappings":"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"}
1
+ {"version":3,"file":"useCellContextMenu.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCellContextMenu.ts"],"sourcesContent":["import { ContextMenuItemType, useCreateContextMenu } from '../../ContextMenu/useCreateContextMenu'\nimport useDeleteEntities from './useDeleteEntities'\nimport { getPlatformShortcutKey, KeyMode } from '../../../util/platform'\nimport { getCellId, parseCellId } from '../utils/cellUtils'\nimport { useClipboard } from '../context/ClipboardContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { useProjectTableContext } from '../context/ProjectTableContext'\nimport { useProjectDataContext } from '../context/ProjectDataContext'\nimport { useCellEditing } from '../context/CellEditingContext'\nimport { InheritFromParentEntity } from './useUpdateTableData'\nimport { ProjectTableAttribute, TableRow } from '../types'\nimport { UseHistoryReturn } from './useHistory'\nimport { GROUP_BY_ID } from './useBuildGroupByTableData'\nimport { ColumnDef } from '@tanstack/react-table'\nimport { getEntityViewierIds } from '../utils'\n\ntype ContextEvent = React.MouseEvent<HTMLTableSectionElement, MouseEvent>\n\nexport type HeaderLabel = { id: string; label: string }\n\nexport type TableCellContextData = {\n cellId: string\n columnId: string\n entityId: string\n entityType: 'folder' | 'task' | 'product' | 'version' | undefined\n parentId?: string\n attribField: ProjectTableAttribute | undefined // the attribute field if any (fps, custom attribs, etc.)\n column: {\n id: string\n label: string\n }\n isGroup: boolean // if the cell is a group header\n}\ntype DefaultMenuItem =\n | 'copy-paste'\n | 'show-details'\n | 'rename'\n | 'expand-collapse'\n | 'inherit'\n | 'delete'\n | 'export'\n | 'create-folder'\n | 'create-task'\n | 'open-viewer'\nexport type ContextMenuItemConstructor = (\n e: ContextEvent,\n cell: TableCellContextData,\n selectedCells: TableCellContextData[],\n meta: {\n selectedCells: string[] // minus row selection cells\n selectedRows: string[]\n selectedColumns: string[]\n selectedFullRows: string[] // if the full row is selected\n selectedGroups: string[] // groups if any\n },\n context: {\n history: UseHistoryReturn\n },\n) => ContextMenuItemType | ContextMenuItemType[] | undefined\nexport type ContextMenuItemConstructors = (DefaultMenuItem | ContextMenuItemConstructor)[]\n\ntype CellContextMenuProps = {\n attribs: ProjectTableAttribute[]\n columns?: ColumnDef<TableRow>[]\n headerLabels: HeaderLabel[]\n onOpenNew?: (type: 'folder' | 'task') => void\n}\n\nconst useCellContextMenu = ({ attribs, headerLabels = [], onOpenNew }: CellContextMenuProps) => {\n // context hooks\n const {\n projectName,\n showHierarchy,\n getEntityById,\n toggleExpandAll,\n toggleExpands,\n expanded,\n contextMenuItems = [],\n powerpack,\n onOpenPlayer,\n } = useProjectTableContext()\n const { canWriteLabelPermission, canWriteNamePermission } = useProjectDataContext()\n const { copyToClipboard, exportCSV, pasteFromClipboard } = useClipboard()\n const { selectedCells, clearSelection, selectCell, focusCell } = useSelectionCellsContext()\n const { inheritFromParent, history, setEditingCellId } = useCellEditing()\n\n // update entity context\n\n // data mutations\n const deleteEntities = useDeleteEntities({})\n\n const [cellContextMenuShow] = useCreateContextMenu([], powerpack)\n\n // Helper function to identify attributes that can be inherited\n const getEntitiesToInherit = (selected: string[]): InheritFromParentEntity[] => {\n return selected.reduce((acc, cellId) => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId || !colId.startsWith('attrib_')) return acc\n\n const entity = getEntityById(rowId)\n if (!entity) return acc\n const entityId = entity.entityId || entity.id\n\n const attribName = colId.replace('attrib_', '')\n // get attrib model\n const attribModel = attribs.find((attrib) => attrib.name === attribName)\n // is the attrib inheritable?\n const isInheritable = attribModel?.data.inherit\n\n // Check if this attribute is owned by the entity (not inherited)\n if (entity.ownAttrib?.includes(attribName) && isInheritable) {\n // Find existing entry or create new one\n const existingIndex = acc.findIndex((item) => item.entityId === entityId)\n\n if (existingIndex >= 0) {\n // Add to existing entity's attribs if not already there\n if (!acc[existingIndex].attribs.includes(attribName)) {\n acc[existingIndex].attribs.push(attribName)\n }\n } else {\n // Create new entity entry\n acc.push({\n rowId: entityId,\n entityId: entityId,\n entityType: 'folderId' in entity ? 'task' : 'folder',\n attribs: [attribName],\n ownAttrib: entity.ownAttrib || [],\n // @ts-ignore\n folderId: entity.parentId ?? entity.folderId,\n })\n }\n }\n\n return acc\n }, [] as InheritFromParentEntity[])\n }\n\n const copyAndPasteItems: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n return [\n {\n label: 'Copy',\n icon: 'content_copy',\n shortcut: getPlatformShortcutKey('c', [KeyMode.Ctrl]),\n command: () => copyToClipboard(meta.selectedCells),\n hidden: cell.isGroup || cell.columnId === 'thumbnail',\n },\n {\n label: `Copy row${meta.selectedFullRows.length > 1 ? 's' : ''}`,\n icon: 'content_copy',\n command: () => copyToClipboard(meta.selectedFullRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !meta.selectedFullRows.some(\n (cellId) => parseCellId(cellId)?.rowId === parseCellId(cell.cellId)?.rowId,\n ),\n },\n {\n label: 'Paste',\n icon: 'content_paste',\n shortcut: getPlatformShortcutKey('v', [KeyMode.Ctrl]),\n command: () => pasteFromClipboard(meta.selectedCells),\n hidden: cell.columnId === 'name' || cell.columnId === 'thumbnail' || cell.isGroup,\n disabled: cell.attribField?.readOnly,\n },\n ]\n }\n\n const showDetailsItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Show details',\n icon: 'dock_to_left',\n shortcut: 'Double click',\n command: () => {\n const rowSelectionCellId = getCellId(cell.entityId, ROW_SELECTION_COLUMN_ID)\n // select the row to open the details\n selectCell(rowSelectionCellId, false, false)\n },\n hidden: cell.columnId !== 'name' || meta.selectedRows.length > 1 || cell.isGroup,\n })\n\n const openViewerItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Open in viewer',\n icon: 'play_circle',\n shortcut: 'Spacebar',\n command: () => {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.entityId)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n },\n hidden: (cell.columnId !== 'thumbnail' && cell.columnId !== 'name') || cell.isGroup,\n })\n\n const expandCollapseChildrenItems: ContextMenuItemConstructor = (e, cell, selected, meta) => [\n {\n label: 'Expand children',\n icon: 'expand_all',\n shortcut: getPlatformShortcutKey('click', [ KeyMode.Alt]),\n command: () => toggleExpandAll(meta.selectedRows, true),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Collapse children',\n icon: 'collapse_all',\n shortcut: getPlatformShortcutKey('click', [ KeyMode.Alt]),\n command: () => toggleExpandAll(meta.selectedRows, false),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Expand',\n icon: 'expand_all',\n command: () => toggleExpands(meta.selectedRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n expanded[cell.entityId as keyof typeof expanded],\n },\n {\n label: 'Collapse',\n icon: 'collapse_all',\n command: () => toggleExpands(meta.selectedRows, false),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n !expanded[cell.entityId as keyof typeof expanded],\n },\n ]\n\n const deleteItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Delete',\n icon: 'delete',\n danger: true,\n command: () => deleteEntities(meta.selectedRows),\n hidden: cell.columnId !== 'name' || cell.isGroup,\n })\n\n const inheritItem: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n const entitiesToInherit = getEntitiesToInherit(meta.selectedCells)\n const canInheritFromParent =\n entitiesToInherit.length > 0 &&\n showHierarchy &&\n !(meta.selectedRows.length > 1 && meta.selectedColumns.length > 1)\n\n return {\n label: 'Inherit from parent',\n icon: 'disabled_by_default',\n command: () => inheritFromParent(entitiesToInherit),\n hidden: !canInheritFromParent,\n }\n }\n\n const exportItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Export selection',\n icon: 'download',\n command: () => exportCSV(Array.from(selectedCells), projectName),\n hidden: cell.isGroup,\n })\n\n const createFolderItems: ContextMenuItemConstructor = (e, cell) => [\n {\n label: 'Create folder',\n icon: 'create_new_folder',\n command: () => onOpenNew?.('folder'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n {\n label: 'Create root folder',\n icon: 'create_new_folder',\n command: () => {\n clearSelection()\n onOpenNew?.('folder')\n },\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n ]\n\n const createTaskItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Create task',\n icon: 'add_task',\n command: () => onOpenNew?.('task'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n })\n\n const renameItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Rename',\n icon: 'titlecase',\n shortcut: 'R',\n command: () => {\n const nameCellId = getCellId(cell.entityId, 'name')\n setEditingCellId(nameCellId)\n },\n hidden:\n cell.columnId !== 'name' ||\n cell.isGroup ||\n (cell.entityType !== 'folder' && cell.entityType !== 'task'),\n disabled: !(canWriteNamePermission || canWriteLabelPermission),\n })\n\n const builtInMenuItems: Record<DefaultMenuItem, ContextMenuItemConstructor> = {\n ['copy-paste']: copyAndPasteItems,\n ['show-details']: showDetailsItem,\n ['rename']: renameItem,\n ['expand-collapse']: expandCollapseChildrenItems,\n ['delete']: deleteItem,\n ['inherit']: inheritItem,\n ['export']: exportItem,\n ['create-folder']: createFolderItems,\n ['create-task']: createTaskItem,\n ['open-viewer']: openViewerItem,\n }\n\n const getCellData = (cellId: string): TableCellContextData | undefined => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId) return undefined\n const cellEntityData = getEntityById(rowId)\n const attribField = attribs.find((attrib) => attrib.name === colId?.replace('attrib_', ''))\n const column = headerLabels.find((header) => header.id === colId)\n const parentId = cellEntityData\n ? 'parentId' in cellEntityData\n ? cellEntityData.parentId\n : 'folderId' in cellEntityData\n ? cellEntityData.folderId\n : undefined\n : undefined\n return {\n cellId: cellId,\n columnId: colId,\n entityId: cellEntityData?.entityId || cellEntityData?.id || rowId,\n entityType: cellEntityData?.entityType,\n parentId: parentId,\n attribField: attribField,\n isGroup: rowId.startsWith(GROUP_BY_ID),\n column: {\n id: colId,\n label: column?.label || '',\n },\n }\n }\n\n const handleTableBodyContextMenu = (e: ContextEvent) => {\n const target = e.target as HTMLElement\n const tdEl = target.closest('td')\n // get id of first child of td\n const cellId = tdEl?.firstElementChild?.id\n\n if (!cellId) return\n\n const cellData = getCellData(cellId)\n\n if (!cellData) return\n\n let currentSelectedCells = Array.from(selectedCells)\n // if selecting a cell outside of the current selection\n if (!currentSelectedCells.includes(cellId) || !currentSelectedCells.length) {\n currentSelectedCells = [cellId]\n // update selection\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n // selected cells without row selection cells\n const selectedRealCells = currentSelectedCells.filter(\n (id) => parseCellId(id)?.colId !== ROW_SELECTION_COLUMN_ID,\n )\n\n const selectedCellsData = currentSelectedCells.flatMap((cellId) => getCellData(cellId) || [])\n\n // Remove duplicates based on entityId - prioritize full row selection over individual cells\n const filteredSelectedCellsData = [\n ...new Map(selectedCellsData.map((e) => [e.entityId, e])).values(),\n ]\n\n const selectedCellRows: string[] = []\n const selectedCellColumns: string[] = []\n const selectedCellFullRows: string[] = []\n const selectedCellsGroups: string[] = [] // find cells that are group headers\n for (const { entityId, columnId } of filteredSelectedCellsData) {\n if (entityId && !selectedCellRows.includes(entityId)) selectedCellRows.push(entityId)\n if (columnId && !selectedCellColumns.includes(columnId)) selectedCellColumns.push(columnId)\n if (columnId === ROW_SELECTION_COLUMN_ID && !selectedCellFullRows.includes(entityId))\n selectedCellFullRows.push(entityId)\n if (entityId.startsWith(GROUP_BY_ID)) selectedCellsGroups.push(entityId)\n }\n\n const constructedMenuItems = contextMenuItems.flatMap((constructor) =>\n typeof constructor === 'function'\n ? constructor(\n e,\n cellData,\n filteredSelectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n {\n history,\n },\n )\n : builtInMenuItems[constructor]?.(\n e,\n cellData,\n filteredSelectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n { history },\n ),\n )\n\n cellContextMenuShow(e, constructedMenuItems)\n }\n\n return { handleTableBodyContextMenu }\n}\n\nexport default useCellContextMenu\n"],"names":["useCellContextMenu","attribs","headerLabels","onOpenNew","projectName","showHierarchy","getEntityById","toggleExpandAll","toggleExpands","expanded","contextMenuItems","powerpack","onOpenPlayer","useProjectTableContext","canWriteLabelPermission","canWriteNamePermission","useProjectDataContext","copyToClipboard","exportCSV","pasteFromClipboard","useClipboard","selectedCells","clearSelection","selectCell","focusCell","useSelectionCellsContext","inheritFromParent","history","setEditingCellId","useCellEditing","deleteEntities","useDeleteEntities","cellContextMenuShow","useCreateContextMenu","getEntitiesToInherit","selected","acc","cellId","rowId","colId","parseCellId","entity","entityId","attribName","attribModel","attrib","isInheritable","_a","existingIndex","item","builtInMenuItems","e","cell","meta","getPlatformShortcutKey","KeyMode","rowSelectionCellId","getCellId","ROW_SELECTION_COLUMN_ID","nameCellId","entitiesToInherit","canInheritFromParent","targetIds","getEntityViewierIds","getCellData","cellEntityData","attribField","column","header","parentId","GROUP_BY_ID","tdEl","cellData","currentSelectedCells","selectedRealCells","id","selectedCellsData","filteredSelectedCellsData","selectedCellRows","selectedCellColumns","selectedCellFullRows","selectedCellsGroups","columnId","constructedMenuItems","constructor"],"mappings":"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"}