@ynput/ayon-frontend-shared 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1096) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +37 -201
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +248 -512
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +31 -233
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/components.cjs.js +1 -1
  11. package/dist/components.es.js +83 -82
  12. package/dist/components.es.js.map +1 -1
  13. package/dist/index.cjs.js +1 -1
  14. package/dist/index.es.js +32 -130
  15. package/dist/index.es.js.map +1 -1
  16. package/dist/shared/src/api/generated/graphql.cjs.js +8 -7
  17. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  18. package/dist/shared/src/api/generated/graphql.es.js +18 -17
  19. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  20. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  21. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  22. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  23. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  24. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  25. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  26. package/dist/shared/src/api/queries/activities/getCategories.cjs.js.map +1 -1
  27. package/dist/shared/src/api/queries/activities/getCategories.es.js.map +1 -1
  28. package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js.map +1 -1
  29. package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js.map +1 -1
  30. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  31. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  32. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  33. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  34. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +55 -151
  35. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  36. package/dist/shared/src/api/queries/addons/updateAddons.cjs.js.map +1 -1
  37. package/dist/shared/src/api/queries/addons/updateAddons.es.js.map +1 -1
  38. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  40. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
  41. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
  42. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  44. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  45. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  46. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  47. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  48. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +58 -113
  49. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  50. package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
  52. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  53. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  54. package/dist/shared/src/api/queries/entityLists/getLists.es.js +67 -118
  55. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  56. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  57. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  58. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +40 -95
  59. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  60. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  61. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  62. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.cjs.js.map +1 -1
  63. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.es.js.map +1 -1
  64. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  65. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  66. package/dist/shared/src/api/queries/folders/getFolders.es.js +68 -119
  67. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  69. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +73 -128
  71. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/links/updateLinks.cjs.js.map +1 -1
  73. package/dist/shared/src/api/queries/links/updateLinks.es.js.map +1 -1
  74. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  75. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  76. package/dist/shared/src/api/queries/overview/getOverview.es.js +229 -282
  77. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  78. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  80. package/dist/shared/src/api/queries/products/getFolderProducts.cjs.js.map +1 -1
  81. package/dist/shared/src/api/queries/products/getFolderProducts.es.js.map +1 -1
  82. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
  83. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
  84. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +80 -134
  85. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
  86. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  87. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  88. package/dist/shared/src/api/queries/review/getReview.es.js +95 -152
  89. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  90. package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/share/share.es.js.map +1 -1
  92. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  93. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  94. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  95. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  96. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +88 -141
  97. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  98. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  100. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  101. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  102. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +30 -80
  103. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  104. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js.map +1 -1
  105. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js.map +1 -1
  106. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  109. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  110. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  111. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  112. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  113. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  114. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.cjs.js.map +1 -1
  115. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.es.js.map +1 -1
  116. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  117. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  118. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +28 -30
  119. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  120. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
  121. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
  122. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +29 -125
  123. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
  124. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +3 -3
  125. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  126. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +16 -310
  127. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  128. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js +5 -5
  129. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js.map +1 -1
  130. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js +49 -145
  131. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js.map +1 -1
  132. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +5 -5
  133. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  134. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +45 -141
  135. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  136. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  137. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  138. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +26 -182
  139. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  140. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  142. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +9 -195
  143. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  144. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +2 -2
  145. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  146. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +5 -200
  147. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  148. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +4 -4
  149. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
  150. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +18 -114
  151. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
  152. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +2 -2
  153. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
  154. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +13 -109
  155. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
  156. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  157. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  158. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +11 -316
  159. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  160. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
  161. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
  162. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +23 -119
  163. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
  164. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
  165. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
  166. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +0 -111
  167. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
  168. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js +1 -1
  169. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js.map +1 -1
  170. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js +1 -1
  171. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js.map +1 -1
  172. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  173. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  174. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +12 -314
  175. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  176. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  177. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  178. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +86 -273
  179. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  180. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  181. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  182. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +34 -335
  183. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  184. package/dist/shared/src/components/EntityPath/EntityPath.cjs.js.map +1 -1
  185. package/dist/shared/src/components/EntityPath/EntityPath.es.js.map +1 -1
  186. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  187. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  188. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +15 -310
  189. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  190. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js.map +1 -1
  191. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js.map +1 -1
  192. package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js.map +1 -1
  193. package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js.map +1 -1
  194. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  195. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  196. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +89 -293
  197. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  198. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js +2 -2
  199. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js.map +1 -1
  200. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js +10 -106
  201. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js.map +1 -1
  202. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js +1 -1
  203. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js.map +1 -1
  204. package/dist/shared/src/components/InfoMessage/InfoMessage.es.js +6 -5
  205. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  206. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  207. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  208. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  209. package/dist/shared/src/components/LinksManager/LinksManager.es.js +51 -346
  210. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  211. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  212. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  213. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +7 -212
  214. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  215. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  216. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  217. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +2 -205
  218. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  219. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  220. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  221. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +4 -185
  222. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  223. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  224. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  225. package/dist/shared/src/components/Menu/Menu.es.js +48 -343
  226. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  227. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  228. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  229. package/dist/shared/src/components/Menu/MenuItem.es.js +20 -316
  230. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  231. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  232. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  233. package/dist/shared/src/components/Menu/MenuList.es.js +74 -373
  234. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  235. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +2 -2
  236. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  237. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +16 -315
  238. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  239. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  240. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  241. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +48 -346
  242. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  243. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
  244. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  245. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +134 -304
  246. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  247. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  248. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  249. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +74 -367
  250. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  251. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  252. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  253. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -299
  254. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  255. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  256. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  257. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +34 -334
  258. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  259. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  260. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  261. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +30 -331
  262. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  263. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +5 -5
  264. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  265. package/dist/shared/src/components/RenameForm/RenameForm.es.js +77 -372
  266. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  267. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  268. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  269. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +114 -309
  270. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  271. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  272. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  273. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +66 -365
  274. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  275. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  276. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  277. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +14 -316
  278. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  279. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  280. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  281. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +70 -72
  282. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  283. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  284. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  285. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +24 -326
  286. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  287. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js.map +1 -1
  288. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js.map +1 -1
  289. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  290. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  291. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +335 -534
  292. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  293. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +7 -7
  294. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  295. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +29 -329
  296. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  297. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +4 -4
  298. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  299. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +53 -355
  300. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  301. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  302. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  303. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +95 -394
  304. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  305. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js +2 -2
  306. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js.map +1 -1
  307. package/dist/shared/src/components/SyncButton/SyncButton.es.js +52 -165
  308. package/dist/shared/src/components/SyncButton/SyncButton.es.js.map +1 -1
  309. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +3 -3
  310. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  311. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +35 -334
  312. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  313. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  314. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  315. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +26 -122
  316. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  317. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
  318. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  319. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +22 -118
  320. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  321. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +13 -13
  322. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  323. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +99 -300
  324. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  325. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  326. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  327. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +61 -262
  328. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  329. package/dist/shared/src/config/plannerFeatures.cjs.js.map +1 -1
  330. package/dist/shared/src/config/plannerFeatures.es.js.map +1 -1
  331. package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -1
  332. package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -1
  333. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  334. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -210
  336. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  337. package/dist/shared/src/containers/Actions/ActionIcon.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/Actions/ActionIcon.es.js.map +1 -1
  339. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  340. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/Actions/Actions.es.js +51 -250
  342. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  343. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  345. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  346. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +20 -323
  348. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  349. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
  351. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js.map +1 -1
  353. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +143 -327
  356. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +3 -3
  358. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +27 -329
  360. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  362. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +39 -236
  364. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  366. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +65 -255
  368. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  370. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +16 -317
  372. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  374. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +61 -354
  376. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  377. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +5 -5
  378. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
  379. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +20 -116
  380. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
  381. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  382. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +2 -306
  384. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  385. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js +1 -1
  386. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js.map +1 -1
  387. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js +51 -147
  388. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js.map +1 -1
  389. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  390. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -202
  392. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  393. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js.map +1 -1
  395. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -1
  396. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -1
  397. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.es.js.map +1 -1
  399. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +9 -9
  400. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  401. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -320
  402. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  403. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  404. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  405. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +13 -217
  406. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  407. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  408. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  409. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +22 -323
  410. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  411. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  412. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  413. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +27 -307
  414. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  415. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.cjs.js.map +1 -1
  416. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.es.js.map +1 -1
  417. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js.map +1 -1
  418. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js.map +1 -1
  419. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.cjs.js.map +1 -1
  420. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.es.js.map +1 -1
  421. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js.map +1 -1
  423. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  424. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  425. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +10 -106
  426. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  427. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
  428. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
  429. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  430. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -209
  432. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  433. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  434. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +74 -373
  436. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  437. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  438. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +20 -324
  440. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  441. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +6 -6
  442. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  443. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +32 -338
  444. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  445. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +3 -3
  446. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  447. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +12 -318
  448. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  449. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
  450. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
  451. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +11 -107
  452. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
  453. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  454. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  455. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +23 -228
  456. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  457. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  458. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  459. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +27 -123
  460. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  461. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.es.js.map +1 -1
  463. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  464. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  465. package/dist/shared/src/containers/Feed/Feed.es.js +65 -245
  466. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  467. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js.map +1 -1
  468. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.es.js.map +1 -1
  469. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  470. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  471. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -309
  472. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  473. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  474. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  475. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +145 -421
  476. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  477. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  478. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  479. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +18 -317
  480. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  481. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  482. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  483. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +24 -120
  484. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  485. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  486. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  487. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +42 -331
  488. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  489. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.es.js.map +1 -1
  491. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  492. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  493. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +227 -372
  494. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  495. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
  496. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
  497. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  498. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  499. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +38 -341
  500. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  501. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  502. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  503. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +22 -324
  504. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  505. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
  506. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
  507. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +9 -105
  508. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
  509. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  510. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  511. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +21 -324
  512. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  513. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js +1 -1
  514. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js.map +1 -1
  515. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js +16 -26
  516. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js.map +1 -1
  517. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js +2 -0
  518. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js.map +1 -0
  519. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js +14 -0
  520. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js.map +1 -0
  521. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +1 -1
  522. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -1
  523. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +2 -15
  524. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -1
  525. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
  526. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  527. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +62 -361
  528. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  529. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  530. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  531. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +57 -356
  532. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  533. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  534. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  535. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +14 -310
  536. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  537. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  538. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  539. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +34 -238
  540. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  541. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  542. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  543. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +67 -163
  544. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  545. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  546. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +18 -8
  547. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  548. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  549. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  550. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +10 -106
  551. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  552. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.cjs.js.map +1 -1
  553. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.es.js.map +1 -1
  554. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  555. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +13 -109
  557. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  558. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  559. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ListTable/ListTable.es.js +115 -284
  561. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  562. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  563. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +44 -177
  565. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  566. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  567. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  568. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +46 -343
  569. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  570. package/dist/shared/src/containers/ListTable/ListTableWidgets.cjs.js.map +1 -1
  571. package/dist/shared/src/containers/ListTable/ListTableWidgets.es.js.map +1 -1
  572. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.cjs.js.map +1 -1
  573. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.es.js.map +1 -1
  574. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js +3 -3
  575. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js.map +1 -1
  576. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js +170 -459
  577. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js.map +1 -1
  578. package/dist/shared/src/containers/NewEntity/components/TypeEditor.cjs.js.map +1 -1
  579. package/dist/shared/src/containers/NewEntity/components/TypeEditor.es.js.map +1 -1
  580. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js +1 -1
  581. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js.map +1 -1
  582. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js +117 -314
  583. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +590 -859
  587. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +245 -391
  591. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +75 -375
  595. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +32 -204
  599. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  601. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  602. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +27 -124
  603. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  604. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +7 -7
  605. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +35 -131
  607. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +97 -292
  611. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  612. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
  613. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  614. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +243 -441
  615. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  616. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +156 -330
  619. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  620. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -208
  623. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  624. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  626. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +120 -420
  627. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  628. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +71 -245
  631. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  632. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js.map +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js +3 -3
  634. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js.map +1 -1
  635. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.cjs.js.map +1 -1
  636. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.es.js.map +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
  639. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  640. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +83 -179
  642. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  643. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  644. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  645. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +13 -317
  646. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  647. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  648. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  649. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +59 -233
  650. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  651. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  652. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  653. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +74 -248
  654. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  655. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  656. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  657. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +147 -439
  658. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  659. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  660. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  661. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +23 -197
  662. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  663. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  664. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  665. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +32 -206
  666. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  667. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  668. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  669. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +32 -332
  670. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  671. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  672. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  673. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +135 -335
  674. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  675. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
  676. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
  677. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  678. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  679. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +29 -203
  680. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  681. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  682. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  683. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +36 -204
  684. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  685. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  686. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  687. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +78 -282
  688. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  689. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  690. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  691. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +31 -232
  692. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  693. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  694. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  695. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +24 -198
  696. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  697. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  698. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  699. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +29 -203
  700. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  701. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  702. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  703. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +167 -467
  704. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  705. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  706. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  707. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +41 -215
  708. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  709. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
  710. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
  711. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js.map +1 -1
  712. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js.map +1 -1
  713. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js.map +1 -1
  714. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js.map +1 -1
  715. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  716. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  717. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js.map +1 -1
  718. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js.map +1 -1
  719. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
  720. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -1
  721. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js.map +1 -1
  722. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js.map +1 -1
  723. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
  724. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
  725. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.cjs.js.map +1 -1
  726. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.es.js.map +1 -1
  727. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -1
  728. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -1
  729. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +2 -2
  730. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  731. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +14 -315
  732. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  733. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  734. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  735. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +113 -398
  736. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  737. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +5 -5
  738. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  739. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +40 -332
  740. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  741. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  742. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  743. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js +1 -1
  744. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js.map +1 -1
  745. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js +22 -194
  746. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js.map +1 -1
  747. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  748. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  749. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  750. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  751. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +3 -3
  752. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  753. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +52 -348
  754. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  755. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +5 -5
  756. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  757. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +77 -364
  758. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  759. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  760. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  761. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +28 -202
  762. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  763. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  764. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  765. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +36 -333
  766. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  767. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +5 -5
  768. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  769. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +130 -424
  770. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  771. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +4 -4
  772. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  773. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +80 -176
  774. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  775. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +5 -5
  776. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  777. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -108
  778. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  779. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  780. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  781. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +20 -217
  782. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  783. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  784. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  785. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +231 -527
  786. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  787. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  788. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  789. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +69 -367
  790. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  791. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +2 -2
  792. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  793. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +18 -318
  794. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  795. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +2 -2
  796. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  797. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +24 -328
  798. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  799. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  800. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  801. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +69 -370
  802. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  803. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  804. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  805. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +27 -228
  806. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  807. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js +1 -1
  808. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js.map +1 -1
  809. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js +34 -236
  810. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js.map +1 -1
  811. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  812. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  813. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +5 -309
  814. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  815. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  816. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  817. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +7 -311
  818. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  819. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +1 -1
  820. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -1
  821. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +11 -314
  822. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -1
  823. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  824. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  825. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +13 -316
  826. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  827. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  828. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  829. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +34 -338
  830. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  831. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  832. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  833. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +11 -316
  834. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  835. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  836. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  837. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +72 -368
  838. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  839. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  840. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  841. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -1
  842. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -1
  843. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
  844. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  845. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +24 -120
  846. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  847. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  848. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  849. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  850. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  851. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +35 -336
  852. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  853. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  854. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  855. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +55 -354
  856. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  857. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  858. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  859. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +40 -335
  860. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  861. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  862. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  863. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +59 -262
  864. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  865. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  866. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  867. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +17 -113
  868. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  869. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  870. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  871. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +45 -141
  872. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  873. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -1
  874. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -1
  875. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  876. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  877. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +22 -216
  878. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  879. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  880. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  881. package/dist/shared/src/containers/Views/types.cjs.js.map +1 -1
  882. package/dist/shared/src/containers/Views/types.es.js.map +1 -1
  883. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js.map +1 -1
  884. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js.map +1 -1
  885. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
  886. package/dist/shared/src/context/AddonContext.es.js.map +1 -1
  887. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  888. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  889. package/dist/shared/src/context/AddonProjectContext.es.js +19 -115
  890. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  891. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js +1 -1
  892. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js.map +1 -1
  893. package/dist/shared/src/context/DeleteEntitiesContext.es.js +1 -1
  894. package/dist/shared/src/context/DeleteEntitiesContext.es.js.map +1 -1
  895. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  896. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  897. package/dist/shared/src/context/DetailsPanelContext.es.js +66 -362
  898. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  899. package/dist/shared/src/context/EntityUpdatesContext.cjs.js +1 -1
  900. package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -1
  901. package/dist/shared/src/context/EntityUpdatesContext.es.js +61 -358
  902. package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -1
  903. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  904. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  905. package/dist/shared/src/context/PowerpackContext.es.js +42 -344
  906. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  907. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  908. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  909. package/dist/shared/src/context/ProjectFoldersContext.es.js +26 -231
  910. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  911. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  912. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  913. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  914. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  915. package/dist/shared/src/context/SubtasksModulesContext.es.js +23 -324
  916. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  917. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +1 -1
  918. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
  919. package/dist/shared/src/context/ThumbnailUploaderContext.es.js +17 -21
  920. package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
  921. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  922. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  923. package/dist/shared/src/context/UriContext.es.js +2 -2
  924. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  925. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  926. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  927. package/dist/shared/src/context/WebsocketContext.es.js +28 -229
  928. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  929. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  930. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  931. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -208
  932. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  933. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  934. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  935. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +11 -314
  936. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  937. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  938. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  939. package/dist/shared/src/hooks/useHierarchyTable.es.js +30 -333
  940. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  941. package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
  942. package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
  943. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
  944. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
  945. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +19 -115
  946. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
  947. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  948. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  949. package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -212
  950. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  951. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  952. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  953. package/dist/shared/src/util/checkName.cjs.js.map +1 -1
  954. package/dist/shared/src/util/checkName.es.js.map +1 -1
  955. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  956. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  957. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  958. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  959. package/dist/shared/src/util/getBundleMode.cjs.js +1 -1
  960. package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -1
  961. package/dist/shared/src/util/getBundleMode.es.js +16 -112
  962. package/dist/shared/src/util/getBundleMode.es.js.map +1 -1
  963. package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
  964. package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
  965. package/dist/shared/src/util/getPriorityOptions.cjs.js.map +1 -1
  966. package/dist/shared/src/util/getPriorityOptions.es.js.map +1 -1
  967. package/dist/shared/src/util/iconUtils.cjs.js.map +1 -1
  968. package/dist/shared/src/util/iconUtils.es.js.map +1 -1
  969. package/dist/shared/src/util/mentionTypeOptions.cjs.js +2 -0
  970. package/dist/shared/src/util/mentionTypeOptions.cjs.js.map +1 -0
  971. package/dist/shared/src/util/mentionTypeOptions.es.js +16 -0
  972. package/dist/shared/src/util/mentionTypeOptions.es.js.map +1 -0
  973. package/dist/shared/src/util/parseFilename.cjs.js +2 -0
  974. package/dist/shared/src/util/parseFilename.cjs.js.map +1 -0
  975. package/dist/shared/src/util/parseFilename.es.js +8 -0
  976. package/dist/shared/src/util/parseFilename.es.js.map +1 -0
  977. package/dist/shared/src/util/uriUtils.cjs.js.map +1 -1
  978. package/dist/shared/src/util/uriUtils.es.js.map +1 -1
  979. package/dist/types/api/base/index.d.ts +1 -1
  980. package/dist/types/api/generated/graphql.d.ts +5 -2
  981. package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
  982. package/dist/types/api/queries/activities/getActivities.d.ts +4 -2
  983. package/dist/types/api/queries/activities/getCategories.d.ts +1 -1
  984. package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +1 -1
  985. package/dist/types/api/queries/entities/getEntity.d.ts +2 -1
  986. package/dist/types/api/queries/entities/getEntityPanel.d.ts +2 -1
  987. package/dist/types/api/queries/entities/updateEntity.d.ts +2 -1
  988. package/dist/types/api/queries/entityLists/getLists.d.ts +305 -305
  989. package/dist/types/api/queries/overview/getOverview.d.ts +35 -18
  990. package/dist/types/api/queries/project/getProject.d.ts +62 -61
  991. package/dist/types/api/queries/system/getSystem.d.ts +1 -1
  992. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +2 -1
  993. package/dist/types/api/queries/users/getUsers.d.ts +2 -1
  994. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +4 -2
  995. package/dist/types/api/queries/views/getViews.d.ts +1 -1
  996. package/dist/types/components/DetailsPanelDetails/DetailsSection.d.ts +1 -1
  997. package/dist/types/components/Menu/Menu.d.ts +1 -1
  998. package/dist/types/components/Menu/MenuList.d.ts +1 -1
  999. package/dist/types/components/Powerpack/PowerpackButton.d.ts +1 -1
  1000. package/dist/types/components/ProjectTableSettings/ColumnsSettings.d.ts +1 -1
  1001. package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +2 -2
  1002. package/dist/types/components/ProjectTableSettings/TableSettingsFallback.d.ts +1 -1
  1003. package/dist/types/components/RemotePage/ProjectPageRemote.d.ts +1 -1
  1004. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +4 -2
  1005. package/dist/types/components/RenameForm/RenameForm.d.ts +1 -1
  1006. package/dist/types/components/ReviewablesList/SortableReviewableCard.d.ts +1 -1
  1007. package/dist/types/components/ReviewablesList/useReviewablesUpload.d.ts +2 -2
  1008. package/dist/types/components/ReviewablesSelector/Card.d.ts +1 -1
  1009. package/dist/types/components/SearchFilter/filterScopeRegistry.d.ts +1 -1
  1010. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
  1011. package/dist/types/components/SettingsPanel/SettingsPanel.d.ts +1 -1
  1012. package/dist/types/components/SyncButton/SyncButton.d.ts +1 -1
  1013. package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +1 -2
  1014. package/dist/types/config/plannerFeatures.d.ts +1 -1
  1015. package/dist/types/config/powerpackFeatures.d.ts +1 -1
  1016. package/dist/types/containers/Actions/Actions.d.ts +2 -2
  1017. package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +1 -1
  1018. package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +1 -1
  1019. package/dist/types/containers/DetailsPanel/DetailsPanel.d.ts +1 -1
  1020. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.d.ts +2 -2
  1021. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.d.ts +1 -1
  1022. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.d.ts +2 -2
  1023. package/dist/types/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.d.ts +1 -1
  1024. package/dist/types/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.d.ts +3 -3
  1025. package/dist/types/containers/DetailsPanel/containers/DetailsPanelSubtasks.d.ts +1 -1
  1026. package/dist/types/containers/DetailsPanel/helpers/buildEntityTypeIcons.d.ts +1 -1
  1027. package/dist/types/containers/DetailsPanel/helpers/getEntityPathData.d.ts +1 -1
  1028. package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +1 -1
  1029. package/dist/types/containers/DetailsPanel/hooks/useGetEntityPath.d.ts +1 -1
  1030. package/dist/types/containers/EntityPickerDialog/components/EntityTypeTable.d.ts +1 -1
  1031. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
  1032. package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +1 -1
  1033. package/dist/types/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.d.ts +1 -1
  1034. package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.styled.d.ts +2 -2
  1035. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +1 -1
  1036. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.styled.d.ts +1 -1
  1037. package/dist/types/containers/Feed/components/CommentInput/modules/index.d.ts +1 -1
  1038. package/dist/types/containers/Feed/components/CommentInput/quillFormats.d.ts +1 -0
  1039. package/dist/types/containers/Feed/components/CommentInput/types.d.ts +1 -12
  1040. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +1 -1
  1041. package/dist/types/containers/Feed/context/FeedContext.d.ts +1 -1
  1042. package/dist/types/containers/Feed/hooks/useLastVersionReview.d.ts +1 -1
  1043. package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +1 -1
  1044. package/dist/types/containers/Feed/mentionHelpers/getMentionUsers.d.ts +1 -1
  1045. package/dist/types/containers/Feed/mentionHelpers/getMentionVersions.d.ts +2 -2
  1046. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -1
  1047. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -1
  1048. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -3
  1049. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +1 -1
  1050. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +4 -5
  1051. package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +1 -1
  1052. package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +2 -2
  1053. package/dist/types/containers/ProjectTreeTable/hooks/useMoveEntities.d.ts +1 -1
  1054. package/dist/types/containers/ProjectTreeTable/hooks/usePasteLinks.d.ts +1 -1
  1055. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +1 -1
  1056. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +6 -5
  1057. package/dist/types/containers/ProjectTreeTable/utils/getEntityViewerIds.d.ts +1 -1
  1058. package/dist/types/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.d.ts +1 -1
  1059. package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +1 -1
  1060. package/dist/types/containers/ProjectTreeTable/utils/sanitizeQueryFilter.d.ts +1 -1
  1061. package/dist/types/containers/ProjectTreeTable/widgets/LinksWidget.d.ts +1 -1
  1062. package/dist/types/containers/ProjectTreeTable/widgets/NameWidget.d.ts +1 -1
  1063. package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +2 -1
  1064. package/dist/types/containers/Slicer/components/Slicer.d.ts +2 -2
  1065. package/dist/types/containers/Slicer/components/SlicerDropdownFallback.d.ts +1 -1
  1066. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +3 -4
  1067. package/dist/types/containers/Slicer/hooks/useEntityListsSlice.d.ts +1 -1
  1068. package/dist/types/containers/Slicer/hooks/useHierarchyContextMenuItems.d.ts +3 -3
  1069. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +1 -1
  1070. package/dist/types/containers/Slicer/hooks/useSlicerCounts.d.ts +1 -1
  1071. package/dist/types/containers/Slicer/hooks/useUsersTable.d.ts +1 -1
  1072. package/dist/types/containers/Slicer/types.d.ts +1 -1
  1073. package/dist/types/containers/Views/hooks/pages/useListsViewSettings.d.ts +1 -1
  1074. package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +1 -1
  1075. package/dist/types/containers/Views/types.d.ts +1 -1
  1076. package/dist/types/context/AddonContext.d.ts +1 -1
  1077. package/dist/types/context/AddonProjectContext.d.ts +2 -2
  1078. package/dist/types/context/DetailsPanelContext.d.ts +2 -2
  1079. package/dist/types/context/SubtasksModulesContext.d.ts +1 -1
  1080. package/dist/types/hooks/useHierarchyTable.d.ts +1 -1
  1081. package/dist/types/util/buildHierarchicalTableRows.d.ts +1 -1
  1082. package/dist/types/util/columnConfigConverter.d.ts +1 -1
  1083. package/dist/types/util/getBundleMode.d.ts +1 -1
  1084. package/dist/types/util/getGroupByDataType.d.ts +1 -1
  1085. package/dist/types/util/index.d.ts +2 -0
  1086. package/dist/types/util/mentionTypeOptions.d.ts +12 -0
  1087. package/dist/types/util/parseFilename.d.ts +1 -0
  1088. package/dist/types/util/uriUtils.d.ts +1 -1
  1089. package/dist/util.cjs.js +1 -1
  1090. package/dist/util.es.js +24 -20
  1091. package/dist/util.es.js.map +1 -1
  1092. package/package.json +1 -1
  1093. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js +0 -2
  1094. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js.map +0 -1
  1095. package/dist/shared/src/components/ThumbnailSimple/index.es.js +0 -6
  1096. package/dist/shared/src/components/ThumbnailSimple/index.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectTreeTable.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, CSSProperties, useCallback, UIEventHandler, FC } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Table,\n Header,\n HeaderGroup,\n RowData,\n ExpandedState,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n isEntityExpandable,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport { RowDragHandleCellContent, ColumnHeaderMenu } from './components'\nimport { TableFooterRow } from './components/TableFooterRow'\nimport type { FieldStats } from '@shared/api'\nimport { getCommonPinningStyles, getColumnWidth } from './utils/pinningUtils'\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\nimport { InfoMessage, FilterErrorActions } from '@shared/components'\nimport HeaderActionButton from './components/HeaderActionButton'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\nimport { useMenuContext } from '../../context/MenuContext'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from './constants'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport useCellContextMenu, {\n HeaderLabel,\n ContextMenuItemConstructors,\n} from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\nimport useDynamicRowHeight from './hooks/useDynamicRowHeight'\n\nimport { useProjectDataContext } from '@shared/containers'\n\n// Utility function imports\nimport { isGroupId } from './hooks/useBuildGroupByTableData'\nimport { CellId, getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { isEntityRestricted, isTargetReadOnly } from './utils/restrictedEntity'\nimport { createPortal } from 'react-dom'\nimport { Button, Icon } from '@ynput/ayon-react-components'\nimport {\n ProjectTableAttribute,\n BuiltInFieldOptions,\n MainCountLabels,\n SummaryCellContentProps,\n} from './types'\nimport { EnumItem } from '@shared/api'\nimport { ToggleExpandAll, useProjectTableContext, parseRowId } from './context/ProjectTableContext'\nimport {\n checkColumnVisibility,\n ensureAtLeastOneVisibleColumn,\n getEntityViewierIds,\n getReadOnlyLists,\n getTableFieldOptions,\n isFilterError,\n getFilterErrorMessage,\n getEntitiesLabelFromScopes,\n extractQueryErrorMessage,\n} from './utils'\nimport { EntityUpdate } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n useDndContext,\n type UniqueIdentifier,\n // Removed: DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, DragEndEvent, DragStartEvent, Active, Over, useSensor, useSensors\n} from '@dnd-kit/core'\nimport type { NewEntityOpenConfig } from '@shared/containers/NewEntity'\n// import { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport {\n SortableContext,\n verticalListSortingStrategy,\n useSortable,\n horizontalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { useProjectContext, usePowerpack, setDetailsPanelTabForScope } from '@shared/context'\nimport { useLoadModule } from '@shared/hooks'\nimport { EDIT_TRIGGER_CLASS } from './widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { upperFirst } from 'lodash'\nimport { ColumnsConfig } from './types/columnConfig'\n\ntype CellUpdate = (\n entity: Omit<EntityUpdate, 'id'> & { id?: string },\n config?: { selection?: string[] },\n) => Promise<void>\n\n// rendered while the powerpack summaries remote is unavailable (no license / old addon)\nconst SummaryCellContentFallback: FC<SummaryCellContentProps> = () => null\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: CellUpdate\n toggleExpandAll?: ToggleExpandAll\n selection?: string[]\n columnsConfig?: ColumnsConfig\n loadingLinksEntityIds?: Set<string>\n }\n}\n\nconst matchesColumnId = (id: string, subscribers: string[]) => {\n return subscribers.some((sub) => {\n if (sub.includes('*')) {\n // Escape all regex special characters\n const escaped = sub.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n // Replace escaped '*' (\\*) with regex '.*'\n const pattern = '^' + escaped.replace(/\\\\\\*/g, '.*') + '$'\n const regex = new RegExp(pattern)\n return regex.test(id)\n }\n return id === sub\n })\n}\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n onScrollBottom?: React.HTMLAttributes<HTMLDivElement>['onScroll']\n onOpenNew?: (type: 'folder' | 'task', config?: NewEntityOpenConfig) => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n includeLinks?: boolean\n isLoading?: boolean\n isExpandable?: boolean // if true, show the expand/collapse icons\n enableSorting?: boolean\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n columnsConfig?: ColumnsConfig // Configure column behavior (display, styling, etc.)\n showColumnSummaries?: boolean // render the fixed summary footer row\n fieldStats?: FieldStats[] // primary-entity stats (tasks/versions) feeding the footer\n groupFieldStats?: FieldStats[] // group-entity stats (folders/products) for the 'all' row scope\n fieldStatsLoading?: boolean // footer stats still loading - click-through shimmer over values\n fieldStatsError?: any // error fetching footer stats\n mainCountLabels?: MainCountLabels // labels for the main cell dual count (defaults folders/tasks)\n onScrollBottomGroupBy?: (groupValue: string) => void // Handle scroll to bottom for grouped data\n contextMenuItems?: ContextMenuItemConstructors // Additional context menu items to merge with defaults\n onColumnVisibleChange?: (changes: Record<string, boolean>) => void\n onColumnVisibleChangeSubscribed?: string[]\n // called whenever the set of rows currently rendered in the viewport changes\n // (entity ids, not row ids - group suffixes are stripped)\n onVisibleRowsChange?: (entityIds: string[]) => void\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n onScroll,\n onScrollBottom, // when the user scrolls to the bottom of the table, this callback is called\n onOpenNew,\n readOnly,\n excludedColumns,\n excludedSorting,\n extraColumns,\n includeLinks,\n isLoading: isLoadingProp,\n isExpandable,\n enableSorting = true,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n columnsConfig,\n showColumnSummaries = false,\n fieldStats,\n groupFieldStats,\n fieldStatsLoading,\n fieldStatsError,\n mainCountLabels,\n onScrollBottomGroupBy, // Destructure new prop for group-by load more\n contextMenuItems: propsContextMenuItems, // Additional context menu items from props\n onColumnVisibleChange,\n onColumnVisibleChangeSubscribed,\n onVisibleRowsChange,\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n setAllColumns,\n sorting,\n sortingOnChange,\n columnPinningOnChange,\n columnSizingOnChange,\n defaultColumnVisibility,\n columnVisibilityOnChange,\n columnOrderOnChange,\n groupBy,\n columnSummaries,\n updateColumnSummary,\n columnSummaryScopes,\n updateColumnSummaryScope,\n columnSummaryFormats,\n updateColumnSummaryFormat,\n } = useColumnSettingsContext()\n const { productTypes, projectName, ...projectInfo } = useProjectContext()\n\n const {\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n softError,\n softErrorAction,\n isInitialized,\n expanded,\n updateExpanded,\n toggleExpandAll,\n showHierarchy,\n isFlatFolderView,\n fetchNextPage,\n scopes, // or entityTypes\n getEntityById,\n onResetView,\n overrideGroupBy,\n loadingLinksEntityIds,\n queryFilters,\n } = useProjectTableContext()\n const isGrouping = !!groupBy || !!overrideGroupBy\n\n const filterError = isFilterError(error, queryFilters)\n const filterErrorMessage = getFilterErrorMessage(getEntitiesLabelFromScopes(scopes))\n\n // Parent (folder/product) summary scope only applies when those entities are\n // actually on screen: hierarchy view, grouping by a parent entity, or the\n // Products tab's product tree (product parent rows -> 'product' in scopes).\n const groupField = overrideGroupBy?.id ?? groupBy?.id\n const groupFieldId = Array.isArray(groupField) ? groupField[0] : groupField\n const parentScopeApplicable =\n showHierarchy ||\n ['hierarchy', 'folder', 'product'].includes(groupFieldId ?? '') ||\n scopes.includes('product')\n\n const { writableFields } = useProjectDataContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const {\n statuses = [],\n folderTypes = [],\n taskTypes = [],\n tags = [],\n linkTypes = [],\n } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, scopes, tags],\n )\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n // reference of how many rows are currently rendered in the table\n const tableRowsCountRef = useRef(0)\n\n // Selection context\n const { registerGrid } = useSelectionCellsContext()\n\n // generate loading attrib and rows\n const { loadingAttrib, loadingRows } = useMemo(() => {\n // count the number of children in tbody\n const tableRowsCount = tableContainerRef.current?.querySelectorAll('tbody tr').length || 0\n const loadingAttrib = generateDummyAttributes()\n const loadingRows = generateLoadingRows(\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, writableFields, readOnly),\n [attribFields, writableFields, readOnly],\n )\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities } = useCellEditing()\n\n const handleCellUpdate: CellUpdate = useCallback(\n async (entity, config) => {\n const { selection = [] } = config || {}\n const entitiesToUpdate: EntityUpdate[] = []\n if (!selection?.length) {\n entitiesToUpdate.push({ ...entity, id: entity.id || entity.rowId })\n } else {\n // if includeSelection is true, update all the selected cells with the same columnId\n const { field, value, isAttrib } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n // ignore row selection column\n if (colId === ROW_SELECTION_COLUMN_ID) continue\n\n const entity = getEntityById(rowId || '')\n if (!entity) {\n console.warn(`Entity with ID ${rowId} not found for cell update.`)\n continue\n }\n\n if ((!colId?.includes('attrib_') || colId?.replace('attrib_', '') === field) && rowId) {\n entitiesToUpdate.push({\n field: field,\n rowId: rowId,\n id: entity.entityId,\n value: value,\n isAttrib: isAttrib,\n type: entity.entityType,\n })\n }\n }\n }\n\n if (!entitiesToUpdate.length) {\n console.warn('No entities to update, skipping updateEntities call.')\n toast.warn('No entities to update.')\n return\n }\n\n await updateEntities(entitiesToUpdate, true)\n },\n [updateEntities, getEntityById, selectedCells],\n )\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n\n const getNameLabelHeader = () => {\n if (scopes.includes('version')) return 'Product / Version'\n return scopes.map((s) => upperFirst(s)).join(' / ')\n }\n\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n scopes,\n attribs: columnAttribs,\n links: linkTypes,\n includeLinks,\n showHierarchy,\n isFlatFolderView,\n options,\n extraColumns,\n excluded: excludedColumns,\n excludedSorting,\n groupBy,\n nameLabel: getNameLabelHeader(),\n })\n\n if (sortableRows && enableSorting) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [\n scopes,\n JSON.stringify(columnAttribs), // columnAttribs is unstable between renders\n showHierarchy,\n isFlatFolderView,\n isExpandable,\n options,\n linkTypes,\n includeLinks,\n extraColumns,\n excludedColumns,\n excludedSorting,\n sortableRows,\n enableSorting,\n groupBy,\n ])\n\n // Keep ColumnSettingsProvider's allColumns ref up to date\n useEffect(() => {\n const ids = columns.map((c) => c.id!).filter(Boolean)\n setAllColumns(ids)\n }, [columns, setAllColumns])\n\n const resolvedColumnVisibility = useMemo(() => {\n const merged = { ...columnVisibility }\n columns.forEach((col) => {\n // @ts-ignore\n const explicitVisible = col.visible\n if (col.id && merged[col.id] === undefined) {\n if (explicitVisible !== undefined) {\n merged[col.id] = explicitVisible\n } else {\n merged[col.id] = checkColumnVisibility({}, col.id, defaultColumnVisibility)\n }\n }\n })\n return ensureAtLeastOneVisibleColumn(merged, columns.map((c) => c.id as string).filter(Boolean))\n }, [columnVisibility, defaultColumnVisibility, columns])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => !!isExpandable || showHierarchy || isFlatFolderView || isGrouping,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n enableSorting,\n getSortedRowModel: getSortedRowModel(),\n sortDescFirst: false,\n manualSorting: !clientSorting,\n onSortingChange: sortingOnChange,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningOnChange,\n onColumnSizingChange: columnSizingOnChange,\n onColumnVisibilityChange: columnVisibilityOnChange,\n onColumnOrderChange: columnOrderOnChange,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility: resolvedColumnVisibility,\n columnOrder,\n },\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreRows: fetchNextPage,\n selection: Array.from(selectedCells),\n columnsConfig,\n loadingLinksEntityIds,\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n columnSizing,\n columnOrder,\n })\n\n // Track column visibility changes for subscribed columns\n const prevVisibleRef = useRef<Record<string, boolean>>({})\n const virtualItems = columnVirtualizer.getVirtualItems()\n\n // Subscribe to column visibility changes\n useEffect(() => {\n if (!onColumnVisibleChange || !onColumnVisibleChangeSubscribed?.length) return\n\n const visibleColumnIds = new Set(virtualItems.map((item) => visibleColumns[item.index]?.id))\n const changes: Record<string, boolean> = {}\n let hasChanged = false\n\n // We only care about columns that match the subscription patterns\n const subscribedColumns = table\n .getAllLeafColumns()\n .filter((col) => matchesColumnId(col.id, onColumnVisibleChangeSubscribed))\n\n subscribedColumns.forEach((col) => {\n const isVisible = visibleColumnIds.has(col.id)\n if (prevVisibleRef.current[col.id] !== isVisible) {\n changes[col.id] = isVisible\n hasChanged = true\n prevVisibleRef.current[col.id] = isVisible\n }\n })\n\n if (hasChanged) {\n onColumnVisibleChange(changes)\n }\n }, [virtualItems, onColumnVisibleChange, onColumnVisibleChangeSubscribed, visibleColumns, table])\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n // Summary footer is a powerpack feature.\n // popup hidden for now: also expose `setPowerpackDialog, isLoading: isLicenseLoading`\n const { powerLicense } = usePowerpack()\n const [RemoteSummaryCellContent, { isLoaded: isFooterLoaded, isLoading: isFooterModuleLoading }] =\n useLoadModule<FC<SummaryCellContentProps>>({\n addon: 'powerpack',\n remote: 'views',\n module: 'SummaryCellContent',\n fallback: SummaryCellContentFallback,\n skip: !showColumnSummaries || !powerLicense,\n })\n // Free-user upsell row hidden for now (too many power-feature prompts); keep for later.\n // Render the row as soon as the module is loading or loaded (not on load failure),\n // so skeletons show during the load instead of the row popping in late.\n const summariesEnabled =\n showColumnSummaries &&\n powerLicense &&\n (isFooterLoaded || isFooterModuleLoading) &&\n !!rows.length\n // Full skeleton only while the remote module itself is loading (no cell to\n // render yet). Stats loading is handled per-cell so the footer stays clickable.\n const footerModuleLoading = isFooterModuleLoading || !isFooterLoaded\n\n // Unique selected entities for the footer's \"N selected\" count, deduped by\n // entityId (group headers / load-more rows excluded). Marked cells win: when\n // any cell is selected we count only those and ignore checkbox row-selection;\n // whole-row selection counts on its own.\n const selectedRowCount = useMemo(() => {\n const cellEntities = new Set<string>()\n const rowEntities = new Set<string>()\n for (const cellId of selectedCells) {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || isGroupId(rowId)) continue\n\n const id = getEntityById(rowId)?.entityId\n if (!id) continue\n if (colId === ROW_SELECTION_COLUMN_ID) rowEntities.add(id)\n else cellEntities.add(id)\n }\n return cellEntities.size || rowEntities.size\n }, [selectedCells, getEntityById])\n // only show the upsell once the license check resolves, so licensed users\n // don't see the bolt flash before the addon loads\n // const showSummaryPowerFeature = !isLicenseLoading && !powerLicense\n\n // Calculate dynamic row height based on user setting from Customize panel\n const { getRowHeight, defaultRowHeight } = useDynamicRowHeight()\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, EnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n // Get column IDs for drag-and-drop from context columnOrder (exclude non-draggable columns)\n // This ensures SortableContext items match what the drag handlers use\n const columnOrderIds = useMemo(() => {\n return columnOrder.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n }, [columnOrder])\n\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const combinedScrollHandler: UIEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n // Call the original onScroll if provided\n onScroll?.(e)\n\n if (onScrollBottom) {\n const containerRefElement = e.currentTarget\n // When not grouping (or when hierarchy+slicer relies on tasksList), we trigger standard fetchNextPage\n // The table itself handles showing tasks.\n if (containerRefElement && !groupBy && (!showHierarchy || !isFlatFolderView)) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n //once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n if (scrollHeight - scrollTop - clientHeight < 500 && !isLoading) {\n onScrollBottom(e)\n }\n }\n }\n\n // Handle scroll-to-bottom for grouped data\n if (onScrollBottomGroupBy && groupBy) {\n const containerRefElement = e.currentTarget\n // look for a load more button\n const loadMoreButton = containerRefElement?.querySelector('.load-more')\n // get load more button id\n const loadMoreButtonId = loadMoreButton?.getAttribute('id')\n const groupValue = loadMoreButtonId?.split('-')[2] // assuming the id is in the format 'load-more-groupValue'\n if (groupValue) {\n onScrollBottomGroupBy(groupValue)\n }\n }\n },\n [onScroll, onScrollBottom, onScrollBottomGroupBy, showHierarchy, groupBy, isLoading],\n )\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n visibleColumns={visibleColumns}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={combinedScrollHandler}\n {...pt?.container}\n data-column-dnd-container\n className={clsx(\n 'table-container',\n {\n resizing: table.getState().columnSizingInfo.isResizingColumn,\n },\n pt?.container?.className,\n )}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n cursor: table.getState().columnSizingInfo.isResizingColumn ? 'col-resize' : undefined,\n // stretch tbody to the container so the column dividers fill the empty\n // space below the rows; also pins the summary footer to the bottom\n minHeight: '100%',\n gridTemplateRows: 'auto 1fr auto',\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n columnOrderIds={columnOrderIds}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n isFilterError={filterError}\n filterErrorMessage={filterErrorMessage}\n isLoading={isLoading}\n isGrouping={isGrouping}\n getRowHeight={getRowHeight}\n defaultRowHeight={defaultRowHeight}\n onResetView={onResetView}\n contextMenuItems={propsContextMenuItems}\n onVisibleRowsChange={onVisibleRowsChange}\n />\n {summariesEnabled && !error && (\n <TableFooterRow\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={footerModuleLoading}\n statsLoading={!!fieldStatsLoading}\n error={fieldStatsError}\n // Free-user upsell hidden for now; keep for later:\n // onClick={showSummaryPowerFeature ? () => setPowerpackDialog('columnSummaries') : undefined}\n renderCellContent={(columnId) => (\n <RemoteSummaryCellContent\n columnId={columnId}\n attribs={attribFields}\n fieldStats={fieldStats}\n groupFieldStats={groupFieldStats}\n calc={columnSummaries[columnId]}\n onCalcChange={(calc) => updateColumnSummary(columnId, calc)}\n format={columnSummaryFormats[columnId]}\n onFormatChange={(format) => updateColumnSummaryFormat(columnId, format)}\n scope={columnSummaryScopes[columnId]}\n onScopeChange={(scope) => updateColumnSummaryScope(columnId, scope)}\n mainCountLabels={mainCountLabels}\n fieldOptions={options}\n parentScopeApplicable={parentScopeApplicable}\n selectedCount={selectedRowCount}\n />\n )}\n // Power feature cell for community users (hidden for now), shows a bolt hint in the name column:\n // renderCellContent={(columnId) =>\n // showSummaryPowerFeature && columnId === 'name' ? (\n // <Styled.SummaryPowerFeature>\n // <Icon icon=\"bolt\" filled />\n // Summaries\n // </Styled.SummaryPowerFeature>\n // ) : null\n // }\n />\n )}\n </table>\n </Styled.TableContainer>\n {softError && (\n <Styled.SoftErrorBanner>\n <InfoMessage variant=\"warning\" message={softError} action={softErrorAction} />\n </Styled.SoftErrorBanner>\n )}\n </Styled.TableWrapper>\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: defaultRowHeight,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n <ColumnDragOverlay table={table} />\n </>\n )\n } else {\n return (\n <>\n {tableUiContent}\n <ColumnDragOverlay table={table} />\n </>\n )\n }\n}\n\n/**\n * Isolated component for column drag overlay.\n * This prevents the entire table from re-rendering on every drag frame.\n */\ninterface ColumnDragOverlayProps {\n table: Table<TableRow>\n}\n\nconst ColumnDragOverlay = ({ table }: ColumnDragOverlayProps) => {\n const { active } = useDndContext()\n\n // Only process if dragging a column\n const isColumnDrag = active?.data?.current?.type === 'column'\n const activeColumnId = isColumnDrag ? (active?.id as string) : null\n\n const draggedColumnHeader = useMemo(() => {\n if (!activeColumnId) return null\n return table.getHeaderGroups()[0]?.headers.find((h) => h.id === activeColumnId) || null\n }, [activeColumnId, table])\n\n if (!activeColumnId || !draggedColumnHeader) return null\n\n return createPortal(\n <DragOverlay dropAnimation={null}>\n <Styled.HeaderCell\n style={{\n width: draggedColumnHeader.column.getSize(),\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n display: 'flex',\n alignItems: 'center',\n minHeight: 34,\n }}\n >\n <Styled.TableCellContent className=\"bold header\">\n {flexRender(\n draggedColumnHeader.column.columnDef.header,\n draggedColumnHeader.getContext(),\n )}\n </Styled.TableCellContent>\n </Styled.HeaderCell>\n </DragOverlay>,\n document.body,\n )\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n columnOrderIds: string[]\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n columnOrderIds={columnOrderIds}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n columnOrderIds: string[]\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n const { active } = useDndContext()\n const isColumnDrag = active?.data?.current?.type === 'column'\n const isDraggedColumnPinned = isColumnDrag && (active?.data?.current?.isPinned ?? false)\n\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n <SortableContext items={columnOrderIds} strategy={horizontalListSortingStrategy}>\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n // Exclude certain columns from being draggable\n const isDraggable =\n header.id !== DRAG_HANDLE_COLUMN_ID && header.id !== ROW_SELECTION_COLUMN_ID\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n isDraggable={isDraggable}\n isColumnDrag={isColumnDrag}\n isDraggedColumnPinned={isDraggedColumnPinned}\n />\n )\n })}\n </SortableContext>\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n isDraggable?: boolean\n isColumnDrag?: boolean\n isDraggedColumnPinned?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n isDraggable = true,\n isColumnDrag,\n isDraggedColumnPinned,\n}: TableHeadCellProps) => {\n const { column } = header\n const sorting = column.getIsSorted()\n const menuId = `column-header-menu-${column.id}`\n const { menuOpen } = useMenuContext()\n const isOpen = menuOpen === menuId\n const { columnPinning, sorting: sortingState, updateSorting } = useColumnSettingsContext()\n\n // toggle sort via the same direct updateSorting call the Customize panel uses;\n // routing through TanStack's onSortingChange did not apply under manualSorting.\n const handleToggleSort = () => {\n const current = sortingState?.find((s) => s.id === column.id)\n const next = !current\n ? [{ id: column.id, desc: false }]\n : !current.desc\n ? [{ id: column.id, desc: true }]\n : []\n updateSorting(next)\n }\n\n // Check if this column is pinned\n const isThisColumnPinned = columnPinning.left?.includes(column.id) || false\n\n // useSortable for column drag-and-drop\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: column.id,\n data: { type: 'column', isPinned: isThisColumnPinned },\n disabled: !isDraggable,\n })\n\n const isDraggingInSameSection = isColumnDrag && isDraggedColumnPinned === isThisColumnPinned\n\n // Build drag styles\n const getDragStyle = (): CSSProperties => {\n if (isDragging) {\n return {\n transform: CSS.Translate.toString(transform!),\n transition,\n visibility: 'hidden',\n zIndex: 200,\n }\n }\n if (isDraggingInSameSection && transform) {\n // For pinned columns, temporarily remove sticky positioning during drag animation\n const pinnedOverride = isThisColumnPinned\n ? { position: 'relative' as const, left: 'auto' }\n : {}\n return { transform: CSS.Translate.toString(transform), transition, ...pinnedOverride }\n }\n return {}\n }\n\n // Prevent drag when clicking action buttons\n const preventDragFromActions = {\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: React.MouseEvent) => e.stopPropagation(),\n }\n\n return (\n <Styled.HeaderCell\n ref={setNodeRef}\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n resizing: column.getIsResizing(),\n dragging: isDragging,\n draggable: isDraggable,\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth(column.id),\n ...getDragStyle(),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent\n className={clsx('bold', 'header')}\n {...(isDraggable ? { ...attributes, ...listeners } : {})}\n >\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\" $isOpen={isOpen} {...preventDragFromActions}>\n {/* Column drag handle */}\n\n {(canHide || canPin || canSort) && (\n <ColumnHeaderMenu\n className=\"header-menu\"\n header={header}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n isResizing={column.getIsResizing()}\n menuId={menuId}\n isOpen={isOpen}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon=\"sort\"\n className={clsx('sort-button', { visible: sorting })}\n style={{\n transform: sorting === 'desc' ? 'rotate(180deg) scaleX(-1)' : 'none',\n }}\n onClick={handleToggleSort}\n selected={!!column.getIsSorted()}\n />\n )}\n\n {/* COLUMN PINNING - only show on pinned columns (exclude selection column) */}\n {column.getIsPinned() &&\n column.id !== ROW_SELECTION_COLUMN_ID &&\n column.id !== DRAG_HANDLE_COLUMN_ID && (\n <HeaderActionButton\n icon=\"push_pin\"\n className={clsx('pin-button', 'visible')}\n onClick={() => column.pin(false)}\n selected\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: (e: React.MouseEvent) => {\n e.stopPropagation()\n header.getResizeHandler()(e)\n },\n onTouchStart: header.getResizeHandler(),\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task', config?: NewEntityOpenConfig) => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n isFilterError?: boolean\n filterErrorMessage?: string\n isLoading: boolean\n isGrouping: boolean\n getRowHeight: (row: TableRow) => number\n defaultRowHeight: number\n onResetView?: () => void\n contextMenuItems?: ContextMenuItemConstructors\n onVisibleRowsChange?: (entityIds: string[]) => void\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n isFilterError: filterError,\n filterErrorMessage,\n isLoading,\n isGrouping,\n getRowHeight,\n defaultRowHeight,\n onResetView,\n contextMenuItems,\n onVisibleRowsChange,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const cellContextMenuHook = useCellContextMenu({\n attribs,\n onOpenNew,\n headerLabels,\n contextMenuItems,\n })\n\n const handleTableBodyContextMenu = cellContextMenuHook.handleTableBodyContextMenu\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: (index) => {\n // Calculate dynamic row height based on specific row data\n const row = rows[index]\n return row ? getRowHeight(row.original) : defaultRowHeight\n },\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Notify the consumer whenever the set of rendered (visible) entity ids changes,\n // so data fetching can be scoped to what's actually on screen. Only fires when\n // the resolved id list actually differs, to avoid spamming updates on every\n // render (rowVirtualizer.getVirtualItems() returns a new array each call).\n const prevVisibleRowIdsRef = useRef<string>('')\n useEffect(() => {\n if (!onVisibleRowsChange) return\n\n const ids = virtualRows\n .map((virtualRow) => rows[virtualRow.index] && parseRowId(rows[virtualRow.index].id))\n .filter(Boolean) as string[]\n const uniqueIds = Array.from(new Set(ids))\n const key = uniqueIds.join(',')\n\n if (key === prevVisibleRowIdsRef.current) return\n prevVisibleRowIdsRef.current = key\n\n onVisibleRowsChange(uniqueIds)\n }, [virtualRows, rows, onVisibleRowsChange])\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n // vertical column lines painted behind the rows so they extend into the empty\n // space between the last row and the summary footer\n const visibleLeafColumns = table.getVisibleLeafColumns()\n const columnDividerLefts = useMemo(() => {\n const lefts: string[] = []\n const sizeVars: string[] = []\n for (let i = 0; i < visibleLeafColumns.length - 1; i++) {\n const column = visibleLeafColumns[i]\n // selection column is forced to 20px in CSS while its size var reports defaultColumn.minSize\n sizeVars.push(column.id === ROW_SELECTION_COLUMN_ID ? '20' : `var(--col-${column.id}-size)`)\n lefts.push(`calc((${sizeVars.join(' + ')}) * 1px)`)\n }\n return lefts\n }, [visibleLeafColumns])\n\n const tbodyContent = (\n <tbody\n style={{\n minHeight: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n >\n <Styled.ColumnDividers aria-hidden>\n {columnDividerLefts.map((left, i) => (\n <div key={i} style={{ left }} />\n ))}\n </Styled.ColumnDividers>\n {virtualRows.map((virtualRow) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id} // stable per-row identity; dnd-kit matches on row.id via SortableContext, not this key\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n isGrouping={isGrouping}\n rowHeight={getRowHeight(row.original)}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n {filterError ? (\n <EmptyPlaceholder message={filterErrorMessage} icon=\"filter_alt_off\">\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset filters\"\n icon=\"replay\"\n onClick={onResetView}\n />\n )}\n <FilterErrorActions errorMessage={extractQueryErrorMessage(error)} />\n </EmptyPlaceholder>\n ) : (\n <EmptyPlaceholder message=\"No items found\" error={error}>\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset filters\"\n icon=\"replay\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n )}\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (!rows.length && !isLoading) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\">\n {onResetView && (\n <Button variant=\"filled\" label=\"Reset filters\" icon=\"replay\" onClick={onResetView} />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n isGrouping: boolean\n rowHeight: number\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n isGrouping = false,\n rowHeight,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n // Track actual DOM element node\n const rowHtmlElementRef = useRef<HTMLTableRowElement | null>(null)\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n rowHtmlElementRef.current = node\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: rowHeight, // Use dynamic row height\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={cell.id}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: rowHeight,\n pointerEvents: 'all',\n cursor: 'grab',\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n rowHeight={rowHeight}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n rowHeight?: number\n}\n\nconst TD = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n rowHeight,\n ...props\n}: TableCellProps) => {\n const { getEntityById, onOpenPlayer } = useProjectTableContext()\n\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n focusCell,\n getCellBorderClasses,\n clearSelection,\n selectedCells,\n setSelectedCells,\n setAnchorCell,\n setFocusedCellId,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing, setEditingCellId, editingCellId } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n const isMultipleSelected = selectedCells.size > 1\n\n return (\n <Styled.TD\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n expandable:\n !!cell.row.originalSubRows && isEntityExpandable(cell.row.original.entityType),\n 'multiple-selected': isMultipleSelected,\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n height: rowHeight,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // check we are not clicking in a dropdown\n if (target.closest('.options')) return\n\n e.currentTarget.focus()\n\n // Handle double-click via e.detail (browser's native click count).\n // We handle it here in mousedown instead of relying on the dblclick event,\n // because the 1st mousedown triggers React state updates that can replace\n // the DOM node, preventing the native dblclick event from firing.\n if (e.detail === 2) {\n // comments cells are read-only but their double-click opens the details panel, so don't block them here\n const isReadOnly = isTargetReadOnly(e) && cell.column.id !== 'comments'\n if (isReadOnly || isEntityRestricted(cell.row.original.entityType) || isGroup) {\n e.preventDefault()\n return\n }\n\n // name column: select row to open details panel\n // comments column: same — comments are read and written in the details panel feed\n if (['name', 'comments'].includes(cell.column.id) && !target.closest('.expander')) {\n // all ProjectTreeTable pages render their details panel under the 'overview' scope\n if (cell.column.id === 'comments') setDetailsPanelTabForScope('overview', 'feed')\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n const additive = e.metaKey || e.ctrlKey\n const position = parseCellId(rowSelectionCellId)\n\n setSelectedCells((prev) => {\n const newSelection = additive ? new Set(prev) : new Set<CellId>()\n newSelection.add(rowSelectionCellId)\n newSelection.add(cellId)\n return newSelection\n })\n if (position) {\n setAnchorCell(position)\n setFocusedCellId(rowSelectionCellId)\n }\n }\n // thumbnail: open viewer\n else if (cell.column.id === 'thumbnail') {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.row.original.entityId || cell.row.id)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n }\n // other cells: start editing\n else {\n setEditingCellId(cellId)\n }\n\n e.preventDefault()\n return\n }\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n // check if this is a restricted entity - prevent editing\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // if clicking on an edit trigger, start editing\n if (target.closest('.' + EDIT_TRIGGER_CLASS) && !isRestricted) {\n // Select the cell first if not already selected\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n setEditingCellId(cellId)\n return\n }\n\n // If there's an active edit on a different cell, blur it first to save changes\n if (editingCellId && editingCellId !== cellId) {\n // Find the currently editing input and blur it\n const editingInput = document.querySelector(\n `#${editingCellId} input, #${editingCellId} [role=\"textbox\"]`,\n ) as HTMLElement\n if (editingInput) {\n editingInput.blur()\n // Wait a tick for the blur event to process and save\n setTimeout(() => {\n proceedWithSelection()\n }, 0)\n return\n }\n }\n\n proceedWithSelection()\n\n function proceedWithSelection() {\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n startSelection(cellId, additive)\n }\n\n // Prevent default browser behavior to ensure focus stays on the cell\n e.preventDefault()\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // check not selecting am edit trigger\n const target = e.target as HTMLElement\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) return\n\n // Left button is pressed during mouse move - drag selection\n // Note: extendSelection is always called to allow drag to continue through cells\n // Restricted cells will be filtered out later\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n // Double-click is primarily handled in onMouseDown via e.detail === 2.\n // Prevent default to avoid text selection on double-click.\n e.preventDefault()\n }}\n onContextMenu={(e) => {\n e.preventDefault()\n // if the cell is not selected, select it and deselect all others\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n }\n }}\n onKeyDown={() => {\n // keyboard events are handled in useKeyboardNavigation hook\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TD>\n )\n}\n"],"names":["SummaryCellContentFallback","matchesColumnId","id","subscribers","sub","pattern","ProjectTreeTable","scope","sliceId","onScroll","onScrollBottom","onOpenNew","readOnly","excludedColumns","excludedSorting","extraColumns","includeLinks","isLoadingProp","isExpandable","enableSorting","clientSorting","sortableRows","onRowReorder","dndActiveId","columnsConfig","showColumnSummaries","fieldStats","groupFieldStats","fieldStatsLoading","fieldStatsError","mainCountLabels","onScrollBottomGroupBy","propsContextMenuItems","onColumnVisibleChange","onColumnVisibleChangeSubscribed","onVisibleRowsChange","pt","props","columnVisibility","columnPinning","columnOrder","columnSizing","setAllColumns","sorting","sortingOnChange","columnPinningOnChange","columnSizingOnChange","defaultColumnVisibility","columnVisibilityOnChange","columnOrderOnChange","groupBy","columnSummaries","updateColumnSummary","columnSummaryScopes","updateColumnSummaryScope","columnSummaryFormats","updateColumnSummaryFormat","useColumnSettingsContext","productTypes","projectName","projectInfo","useProjectContext","tableData","attribFields","entitiesMap","users","isLoadingData","error","softError","softErrorAction","isInitialized","expanded","updateExpanded","toggleExpandAll","showHierarchy","isFlatFolderView","fetchNextPage","scopes","getEntityById","onResetView","overrideGroupBy","loadingLinksEntityIds","queryFilters","useProjectTableContext","isGrouping","filterError","isFilterError","filterErrorMessage","getFilterErrorMessage","getEntitiesLabelFromScopes","groupField","groupFieldId","parentScopeApplicable","writableFields","useProjectDataContext","isLoading","statuses","folderTypes","taskTypes","tags","linkTypes","options","useMemo","getTableFieldOptions","tableContainerRef","useRef","tableRowsCountRef","registerGrid","useSelectionCellsContext","loadingAttrib","loadingRows","tableRowsCount","generateDummyAttributes","generateLoadingRows","showLoadingRows","readOnlyColumns","readOnlyAttribs","getReadOnlyLists","selectedCells","updateEntities","useCellEditing","handleCellUpdate","useCallback","entity","config","selection","entitiesToUpdate","field","value","isAttrib","cellId","colId","rowId","parseCellId","ROW_SELECTION_COLUMN_ID","toast","columnAttribs","getNameLabelHeader","s","upperFirst","columns","baseColumns","buildTreeTableColumns","DRAG_HANDLE_COLUMN_ID","useEffect","ids","c","resolvedColumnVisibility","merged","col","explicitVisible","checkColumnVisibility","ensureAtLeastOneVisibleColumn","table","useReactTable","row","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","leftPins","contextLeftPins","rows","rowIds","colIdsSortedByPinning","a","b","colA","colB","visibleColumns","columnVirtualizer","virtualPaddingLeft","virtualPaddingRight","useColumnVirtualization","prevVisibleRef","virtualItems","visibleColumnIds","item","changes","hasChanged","isVisible","columnSizeVars","useCustomColumnWidthVars","powerLicense","usePowerpack","RemoteSummaryCellContent","isFooterLoaded","isFooterModuleLoading","useLoadModule","summariesEnabled","footerModuleLoading","selectedRowCount","cellEntities","rowEntities","isGroupId","getRowHeight","defaultRowHeight","useDynamicRowHeight","attribByField","acc","attrib","rowOrderIds","columnOrderIds","draggedRowData","combinedScrollHandler","e","containerRefElement","scrollHeight","scrollTop","clientHeight","groupValue","tableUiContent","jsx","ClipboardProvider","jsxs","Styled.TableWrapper","Styled.TableContainer","clsx","TableHead","TableBody","TableFooterRow","columnId","calc","format","Styled.SoftErrorBanner","InfoMessage","dragOverlayPortal","createPortal","DragOverlay","overlayRowInstance","r","tableWidth","Styled.TR","vc","cell","cellStyleBase","getCommonPinningStyles","getColumnWidth","Styled.TD","Icon","TD","getCellId","Fragment","ColumnDragOverlay","active","useDndContext","activeColumnId","draggedColumnHeader","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.TableHeader","headerGroup","TableHeadRow","virtualColumns","isColumnDrag","isDraggedColumnPinned","Styled.ColumnHeader","SortableContext","horizontalListSortingStrategy","virtualColumn","header","isDraggable","TableHeadCell","canFilter","canHide","canSort","canPin","canResize","isReadOnly","column","menuId","menuOpen","useMenuContext","isOpen","sortingState","updateSorting","handleToggleSort","current","next","isThisColumnPinned","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","isDraggingInSameSection","getDragStyle","CSS","pinnedOverride","preventDragFromActions","Styled.HeaderButtons","ColumnHeaderMenu","HeaderActionButton","Styled.ResizedHandler","attribs","contextMenuItems","headerLabels","headerId","handleTableBodyContextMenu","useCellContextMenu","rowVirtualizer","useVirtualizer","index","element","virtualRows","prevVisibleRowIdsRef","virtualRow","parseRowId","uniqueIds","key","measureRowElement","node","useKeyboardNavigation","visibleLeafColumns","columnDividerLefts","lefts","sizeVars","i","tbodyContent","Styled.ColumnDividers","left","TableBodyRow","Styled.AnimatedEmptyPlaceholder","EmptyPlaceholder","Button","FilterErrorActions","extractQueryErrorMessage","verticalListSortingStrategy","visibleCells","paddingLeft","paddingRight","rowRef","dataIndex","offsetTop","rowHeight","sortable","rowHtmlElementRef","combinedRef","style","RowDragHandleCellContent","className","onOpenPlayer","isCellSelected","isCellFocused","startSelection","extendSelection","endSelection","selectCell","focusCell","getCellBorderClasses","clearSelection","setSelectedCells","setAnchorCell","setFocusedCellId","isRowSelected","useSelectedRowsContext","isEditing","setEditingCellId","editingCellId","borderClasses","isLastLeftPinnedColumn","isRowSelectionColumn","isGroup","isMultipleSelected","isEntityExpandable","target","isTargetReadOnly","isEntityRestricted","setDetailsPanelTabForScope","rowSelectionCellId","additive","position","prev","newSelection","targetIds","getEntityViewierIds","isRestricted","EDIT_TRIGGER_CLASS","editingInput","proceedWithSelection"],"mappings":"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"}
1
+ {"version":3,"file":"ProjectTreeTable.cjs.js","sources":["../../../../../src/containers/ProjectTreeTable/ProjectTreeTable.tsx"],"sourcesContent":["import { useMemo, useRef, useEffect, CSSProperties, useCallback, UIEventHandler, FC } from 'react' // Added useCallback\nimport { useVirtualizer, VirtualItem, Virtualizer } from '@tanstack/react-virtual'\n// TanStack Table imports\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n filterFns,\n flexRender,\n Row,\n getSortedRowModel,\n Cell,\n Table,\n Header,\n HeaderGroup,\n RowData,\n ExpandedState,\n} from '@tanstack/react-table'\n\n// Utility imports\nimport clsx from 'clsx'\n\n// Type imports\nimport type { TableRow } from './types/table'\n\n// Component imports\nimport buildTreeTableColumns, {\n DefaultColumns,\n isEntityExpandable,\n TreeTableExtraColumn,\n} from './buildTreeTableColumns'\nimport * as Styled from './ProjectTreeTable.styled'\nimport { RowDragHandleCellContent, ColumnHeaderMenu } from './components'\nimport { TableFooterRow } from './components/TableFooterRow'\nimport type { FieldStats } from '@shared/api'\nimport { getCommonPinningStyles, getColumnWidth } from './utils/pinningUtils'\nimport EmptyPlaceholder from '../../components/EmptyPlaceholder'\nimport InfoMessage from '@shared/components/InfoMessage/InfoMessage'\nimport { FilterErrorActions } from '@shared/components/FilterErrorActions/FilterErrorActions'\nimport HeaderActionButton from './components/HeaderActionButton'\n\n// Context imports\nimport { useCellEditing } from './context/CellEditingContext'\nimport { useSelectionCellsContext } from './context/SelectionCellsContext'\nimport { ClipboardProvider } from './context/ClipboardContext'\nimport { useSelectedRowsContext } from './context/SelectedRowsContext'\nimport { useColumnSettingsContext } from './context/ColumnSettingsContext'\nimport { useMenuContext } from '../../context/MenuContext'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from './constants'\n\n// Hook imports\nimport useCustomColumnWidthVars from './hooks/useCustomColumnWidthVars'\nimport useCellContextMenu, {\n HeaderLabel,\n ContextMenuItemConstructors,\n} from './hooks/useCellContextMenu'\nimport useColumnVirtualization from './hooks/useColumnVirtualization'\nimport useKeyboardNavigation from './hooks/useKeyboardNavigation'\nimport useDynamicRowHeight from './hooks/useDynamicRowHeight'\n\nimport { useProjectDataContext } from './context/ProjectDataContext'\n\n// Utility function imports\nimport { isGroupId } from './hooks/useBuildGroupByTableData'\nimport { CellId, getCellId, parseCellId } from './utils/cellUtils'\nimport { generateLoadingRows, generateDummyAttributes } from './utils/loadingUtils'\nimport { isEntityRestricted, isTargetReadOnly } from './utils/restrictedEntity'\nimport { createPortal } from 'react-dom'\nimport { Button, Icon } from '@ynput/ayon-react-components'\nimport {\n ProjectTableAttribute,\n BuiltInFieldOptions,\n MainCountLabels,\n SummaryCellContentProps,\n} from './types'\nimport type { EnumItem } from '@shared/api'\nimport { ToggleExpandAll, useProjectTableContext, parseRowId } from './context/ProjectTableContext'\nimport {\n checkColumnVisibility,\n ensureAtLeastOneVisibleColumn,\n getEntityViewierIds,\n getReadOnlyLists,\n getTableFieldOptions,\n isFilterError,\n getFilterErrorMessage,\n getEntitiesLabelFromScopes,\n extractQueryErrorMessage,\n} from './utils'\nimport { EntityUpdate } from './hooks/useUpdateTableData'\n\n// dnd-kit imports\nimport {\n DragOverlay,\n useDndContext,\n type UniqueIdentifier,\n // Removed: DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, DragEndEvent, DragStartEvent, Active, Over, useSensor, useSensors\n} from '@dnd-kit/core'\nimport type { NewEntityOpenConfig } from '@shared/containers/NewEntity/context/NewEntityContext'\n// import { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport {\n SortableContext,\n verticalListSortingStrategy,\n useSortable,\n horizontalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { useProjectContext } from '@shared/context/ProjectContext'\nimport { usePowerpack } from '@shared/context/PowerpackContext'\nimport { setDetailsPanelTabForScope } from '@shared/context/DetailsPanelContext'\nimport { useLoadModule } from '@shared/hooks/useLoadModule'\nimport { EDIT_TRIGGER_CLASS } from './widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { upperFirst } from 'lodash'\nimport { ColumnsConfig } from './types/columnConfig'\n\ntype CellUpdate = (\n entity: Omit<EntityUpdate, 'id'> & { id?: string },\n config?: { selection?: string[] },\n) => Promise<void>\n\n// rendered while the powerpack summaries remote is unavailable (no license / old addon)\nconst SummaryCellContentFallback: FC<SummaryCellContentProps> = () => null\n\ndeclare module '@tanstack/react-table' {\n interface TableMeta<TData extends RowData> {\n options?: BuiltInFieldOptions\n readOnly?: ProjectTreeTableProps['readOnly']\n projectName?: string\n updateEntities?: CellUpdate\n toggleExpandAll?: ToggleExpandAll\n selection?: string[]\n columnsConfig?: ColumnsConfig\n loadingLinksEntityIds?: Set<string>\n }\n}\n\nconst matchesColumnId = (id: string, subscribers: string[]) => {\n return subscribers.some((sub) => {\n if (sub.includes('*')) {\n // Escape all regex special characters\n const escaped = sub.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n // Replace escaped '*' (\\*) with regex '.*'\n const pattern = '^' + escaped.replace(/\\\\\\*/g, '.*') + '$'\n const regex = new RegExp(pattern)\n return regex.test(id)\n }\n return id === sub\n })\n}\n\nexport interface ProjectTreeTableProps extends React.HTMLAttributes<HTMLDivElement> {\n scope: string\n sliceId: string\n onScrollBottom?: React.HTMLAttributes<HTMLDivElement>['onScroll']\n onOpenNew?: (type: 'folder' | 'task', config?: NewEntityOpenConfig) => void\n readOnly?: (DefaultColumns | string)[]\n excludedColumns?: (DefaultColumns | string)[]\n excludedSorting?: (DefaultColumns | string)[]\n extraColumns?: TreeTableExtraColumn[]\n includeLinks?: boolean\n isLoading?: boolean\n isExpandable?: boolean // if true, show the expand/collapse icons\n enableSorting?: boolean\n clientSorting?: boolean\n sortableRows?: boolean\n onRowReorder?: (active: UniqueIdentifier, over: UniqueIdentifier | null) => void // Adjusted type for active/over if needed, or keep as Active, Over\n dndActiveId?: UniqueIdentifier | null // Added prop\n columnsConfig?: ColumnsConfig // Configure column behavior (display, styling, etc.)\n showColumnSummaries?: boolean // render the fixed summary footer row\n fieldStats?: FieldStats[] // primary-entity stats (tasks/versions) feeding the footer\n groupFieldStats?: FieldStats[] // group-entity stats (folders/products) for the 'all' row scope\n fieldStatsLoading?: boolean // footer stats still loading - click-through shimmer over values\n fieldStatsError?: any // error fetching footer stats\n mainCountLabels?: MainCountLabels // labels for the main cell dual count (defaults folders/tasks)\n onScrollBottomGroupBy?: (groupValue: string) => void // Handle scroll to bottom for grouped data\n contextMenuItems?: ContextMenuItemConstructors // Additional context menu items to merge with defaults\n onColumnVisibleChange?: (changes: Record<string, boolean>) => void\n onColumnVisibleChangeSubscribed?: string[]\n // called whenever the set of rows currently rendered in the viewport changes\n // (entity ids, not row ids - group suffixes are stripped)\n onVisibleRowsChange?: (entityIds: string[]) => void\n pt?: {\n container?: React.HTMLAttributes<HTMLDivElement>\n head?: Partial<TableHeadProps>\n }\n}\n\nexport const ProjectTreeTable = ({\n scope,\n sliceId,\n onScroll,\n onScrollBottom, // when the user scrolls to the bottom of the table, this callback is called\n onOpenNew,\n readOnly,\n excludedColumns,\n excludedSorting,\n extraColumns,\n includeLinks,\n isLoading: isLoadingProp,\n isExpandable,\n enableSorting = true,\n clientSorting = false,\n sortableRows = false,\n onRowReorder,\n dndActiveId, // Destructure new prop\n columnsConfig,\n showColumnSummaries = false,\n fieldStats,\n groupFieldStats,\n fieldStatsLoading,\n fieldStatsError,\n mainCountLabels,\n onScrollBottomGroupBy, // Destructure new prop for group-by load more\n contextMenuItems: propsContextMenuItems, // Additional context menu items from props\n onColumnVisibleChange,\n onColumnVisibleChangeSubscribed,\n onVisibleRowsChange,\n pt,\n ...props\n}: ProjectTreeTableProps) => {\n const {\n columnVisibility,\n columnPinning,\n columnOrder,\n columnSizing,\n setAllColumns,\n sorting,\n sortingOnChange,\n columnPinningOnChange,\n columnSizingOnChange,\n defaultColumnVisibility,\n columnVisibilityOnChange,\n columnOrderOnChange,\n groupBy,\n columnSummaries,\n updateColumnSummary,\n columnSummaryScopes,\n updateColumnSummaryScope,\n columnSummaryFormats,\n updateColumnSummaryFormat,\n } = useColumnSettingsContext()\n const { productTypes, projectName, ...projectInfo } = useProjectContext()\n\n const {\n tableData,\n attribFields,\n entitiesMap,\n users,\n isLoading: isLoadingData,\n error,\n softError,\n softErrorAction,\n isInitialized,\n expanded,\n updateExpanded,\n toggleExpandAll,\n showHierarchy,\n isFlatFolderView,\n fetchNextPage,\n scopes, // or entityTypes\n getEntityById,\n onResetView,\n overrideGroupBy,\n loadingLinksEntityIds,\n queryFilters,\n } = useProjectTableContext()\n const isGrouping = !!groupBy || !!overrideGroupBy\n\n const filterError = isFilterError(error, queryFilters)\n const filterErrorMessage = getFilterErrorMessage(getEntitiesLabelFromScopes(scopes))\n\n // Parent (folder/product) summary scope only applies when those entities are\n // actually on screen: hierarchy view, grouping by a parent entity, or the\n // Products tab's product tree (product parent rows -> 'product' in scopes).\n const groupField = overrideGroupBy?.id ?? groupBy?.id\n const groupFieldId = Array.isArray(groupField) ? groupField[0] : groupField\n const parentScopeApplicable =\n showHierarchy ||\n ['hierarchy', 'folder', 'product'].includes(groupFieldId ?? '') ||\n scopes.includes('product')\n\n const { writableFields } = useProjectDataContext()\n\n const isLoading = isLoadingProp || isLoadingData\n\n const {\n statuses = [],\n folderTypes = [],\n taskTypes = [],\n tags = [],\n linkTypes = [],\n } = projectInfo || {}\n const options: BuiltInFieldOptions = useMemo(\n () =>\n getTableFieldOptions({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n }),\n [users, statuses, folderTypes, taskTypes, scopes, tags],\n )\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n // reference of how many rows are currently rendered in the table\n const tableRowsCountRef = useRef(0)\n\n // Selection context\n const { registerGrid } = useSelectionCellsContext()\n\n // generate loading attrib and rows\n const { loadingAttrib, loadingRows } = useMemo(() => {\n // count the number of children in tbody\n const tableRowsCount = tableContainerRef.current?.querySelectorAll('tbody tr').length || 0\n const loadingAttrib = generateDummyAttributes()\n const loadingRows = generateLoadingRows(\n showHierarchy && tableData.length > 0\n ? Math.min(tableRowsCount, 50)\n : groupBy\n ? Math.max(tableRowsCountRef.current, 50)\n : 50,\n )\n\n return { loadingAttrib, loadingRows }\n }, [])\n\n const showLoadingRows = !isInitialized || isLoading\n\n // Format readonly columns and attributes\n const { readOnlyColumns, readOnlyAttribs } = useMemo(\n () => getReadOnlyLists(attribFields, writableFields, readOnly),\n [attribFields, writableFields, readOnly],\n )\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities } = useCellEditing()\n\n const handleCellUpdate: CellUpdate = useCallback(\n async (entity, config) => {\n const { selection = [] } = config || {}\n const entitiesToUpdate: EntityUpdate[] = []\n if (!selection?.length) {\n entitiesToUpdate.push({ ...entity, id: entity.id || entity.rowId })\n } else {\n // if includeSelection is true, update all the selected cells with the same columnId\n const { field, value, isAttrib } = entity\n for (const cellId of selectedCells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n\n // ignore row selection column\n if (colId === ROW_SELECTION_COLUMN_ID) continue\n\n const entity = getEntityById(rowId || '')\n if (!entity) {\n console.warn(`Entity with ID ${rowId} not found for cell update.`)\n continue\n }\n\n if ((!colId?.includes('attrib_') || colId?.replace('attrib_', '') === field) && rowId) {\n entitiesToUpdate.push({\n field: field,\n rowId: rowId,\n id: entity.entityId,\n value: value,\n isAttrib: isAttrib,\n type: entity.entityType,\n })\n }\n }\n }\n\n if (!entitiesToUpdate.length) {\n console.warn('No entities to update, skipping updateEntities call.')\n toast.warn('No entities to update.')\n return\n }\n\n await updateEntities(entitiesToUpdate, true)\n },\n [updateEntities, getEntityById, selectedCells],\n )\n\n const columnAttribs = useMemo(\n () => (isInitialized ? attribFields : loadingAttrib),\n [attribFields, loadingAttrib, isInitialized],\n )\n\n const getNameLabelHeader = () => {\n if (scopes.includes('version')) return 'Product / Version'\n return scopes.map((s) => upperFirst(s)).join(' / ')\n }\n\n const columns = useMemo(() => {\n const baseColumns = buildTreeTableColumns({\n scopes,\n attribs: columnAttribs,\n links: linkTypes,\n includeLinks,\n showHierarchy,\n isFlatFolderView,\n options,\n extraColumns,\n excluded: excludedColumns,\n excludedSorting,\n groupBy,\n nameLabel: getNameLabelHeader(),\n })\n\n if (sortableRows && enableSorting) {\n return [\n {\n id: DRAG_HANDLE_COLUMN_ID,\n header: () => null,\n cell: () => null, // Content rendered by TableBodyRow\n size: 24,\n minSize: 24,\n maxSize: 24,\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n enablePinning: false, // Programmatically pinned\n },\n ...baseColumns,\n ]\n }\n return baseColumns\n }, [\n scopes,\n JSON.stringify(columnAttribs), // columnAttribs is unstable between renders\n showHierarchy,\n isFlatFolderView,\n isExpandable,\n options,\n linkTypes,\n includeLinks,\n extraColumns,\n excludedColumns,\n excludedSorting,\n sortableRows,\n enableSorting,\n groupBy,\n ])\n\n // Keep ColumnSettingsProvider's allColumns ref up to date\n useEffect(() => {\n const ids = columns.map((c) => c.id!).filter(Boolean)\n setAllColumns(ids)\n }, [columns, setAllColumns])\n\n const resolvedColumnVisibility = useMemo(() => {\n const merged = { ...columnVisibility }\n columns.forEach((col) => {\n // @ts-ignore\n const explicitVisible = col.visible\n if (col.id && merged[col.id] === undefined) {\n if (explicitVisible !== undefined) {\n merged[col.id] = explicitVisible\n } else {\n merged[col.id] = checkColumnVisibility({}, col.id, defaultColumnVisibility)\n }\n }\n })\n return ensureAtLeastOneVisibleColumn(merged, columns.map((c) => c.id as string).filter(Boolean))\n }, [columnVisibility, defaultColumnVisibility, columns])\n\n const table = useReactTable({\n data: showLoadingRows ? loadingRows : tableData,\n columns,\n defaultColumn: {\n minSize: 50,\n size: 150,\n },\n enableRowSelection: true, //enable row selection for all rows\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n getSubRows: (row) => row.subRows,\n getRowCanExpand: () => !!isExpandable || showHierarchy || isFlatFolderView || isGrouping,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // EXPANDABLE\n onExpandedChange: updateExpanded,\n // SORTING\n enableSorting,\n getSortedRowModel: getSortedRowModel(),\n sortDescFirst: false,\n manualSorting: !clientSorting,\n onSortingChange: sortingOnChange,\n columnResizeMode: 'onChange',\n onColumnPinningChange: columnPinningOnChange,\n onColumnSizingChange: columnSizingOnChange,\n onColumnVisibilityChange: columnVisibilityOnChange,\n onColumnOrderChange: columnOrderOnChange,\n // @ts-ignore\n filterFns,\n state: {\n expanded,\n sorting,\n columnPinning: (() => {\n const leftPins: string[] = []\n if (sortableRows) {\n leftPins.push(DRAG_HANDLE_COLUMN_ID)\n }\n leftPins.push(ROW_SELECTION_COLUMN_ID)\n\n // Add other unique pins from context, ensuring they are not the programmatic ones\n const contextLeftPins = (columnPinning.left || []).filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n leftPins.push(...contextLeftPins)\n // Remove duplicates just in case, though filter should handle it\n const uniqueLeftPins = [...new Set(leftPins)]\n\n return {\n left: uniqueLeftPins,\n right: columnPinning.right,\n }\n })(),\n columnSizing,\n columnVisibility: resolvedColumnVisibility,\n columnOrder,\n },\n meta: {\n projectName,\n options,\n readOnly: readOnlyColumns,\n updateEntities: handleCellUpdate,\n toggleExpandAll,\n loadMoreRows: fetchNextPage,\n selection: Array.from(selectedCells),\n columnsConfig,\n loadingLinksEntityIds,\n },\n })\n\n // TODO: when there is data (like in error) then we have infinite rendering\n\n const { rows } = table.getRowModel()\n\n // update the tableRowsCountRef with the current number of rows\n useEffect(() => {\n tableRowsCountRef.current = rows.length\n }, [rows.length])\n\n // Register grid structure with selection context when rows or columns change\n useEffect(() => {\n if (!rows.length) return\n const rowIds = rows.map((row) => row.id)\n const colIds = table.getAllLeafColumns().map((col) => col.id)\n const colIdsSortedByPinning = [...colIds].sort((a, b) => {\n if (ROW_SELECTION_COLUMN_ID === b) return 1\n const colA = columnPinning.left?.includes(a) ? 0 : 1\n const colB = columnPinning.left?.includes(b) ? 0 : 1\n return colA - colB\n })\n\n registerGrid(rowIds, colIdsSortedByPinning)\n }, [rows, table.getAllLeafColumns(), columnPinning, ROW_SELECTION_COLUMN_ID, registerGrid])\n\n const visibleColumns = table.getVisibleLeafColumns()\n\n // Use the column virtualization hook\n const { columnVirtualizer, virtualPaddingLeft, virtualPaddingRight } = useColumnVirtualization({\n visibleColumns,\n tableContainerRef,\n columnPinning,\n columnSizing,\n columnOrder,\n })\n\n // Track column visibility changes for subscribed columns\n const prevVisibleRef = useRef<Record<string, boolean>>({})\n const virtualItems = columnVirtualizer.getVirtualItems()\n\n // Subscribe to column visibility changes\n useEffect(() => {\n if (!onColumnVisibleChange || !onColumnVisibleChangeSubscribed?.length) return\n\n const visibleColumnIds = new Set(virtualItems.map((item) => visibleColumns[item.index]?.id))\n const changes: Record<string, boolean> = {}\n let hasChanged = false\n\n // We only care about columns that match the subscription patterns\n const subscribedColumns = table\n .getAllLeafColumns()\n .filter((col) => matchesColumnId(col.id, onColumnVisibleChangeSubscribed))\n\n subscribedColumns.forEach((col) => {\n const isVisible = visibleColumnIds.has(col.id)\n if (prevVisibleRef.current[col.id] !== isVisible) {\n changes[col.id] = isVisible\n hasChanged = true\n prevVisibleRef.current[col.id] = isVisible\n }\n })\n\n if (hasChanged) {\n onColumnVisibleChange(changes)\n }\n }, [virtualItems, onColumnVisibleChange, onColumnVisibleChangeSubscribed, visibleColumns, table])\n\n const columnSizeVars = useCustomColumnWidthVars(table, columnSizing)\n\n // Summary footer is a powerpack feature.\n // popup hidden for now: also expose `setPowerpackDialog, isLoading: isLicenseLoading`\n const { powerLicense } = usePowerpack()\n const [RemoteSummaryCellContent, { isLoaded: isFooterLoaded, isLoading: isFooterModuleLoading }] =\n useLoadModule<FC<SummaryCellContentProps>>({\n addon: 'powerpack',\n remote: 'views',\n module: 'SummaryCellContent',\n fallback: SummaryCellContentFallback,\n skip: !showColumnSummaries || !powerLicense,\n })\n // Free-user upsell row hidden for now (too many power-feature prompts); keep for later.\n // Render the row as soon as the module is loading or loaded (not on load failure),\n // so skeletons show during the load instead of the row popping in late.\n const summariesEnabled =\n showColumnSummaries &&\n powerLicense &&\n (isFooterLoaded || isFooterModuleLoading) &&\n !!rows.length\n // Full skeleton only while the remote module itself is loading (no cell to\n // render yet). Stats loading is handled per-cell so the footer stays clickable.\n const footerModuleLoading = isFooterModuleLoading || !isFooterLoaded\n\n // Unique selected entities for the footer's \"N selected\" count, deduped by\n // entityId (group headers / load-more rows excluded). Marked cells win: when\n // any cell is selected we count only those and ignore checkbox row-selection;\n // whole-row selection counts on its own.\n const selectedRowCount = useMemo(() => {\n const cellEntities = new Set<string>()\n const rowEntities = new Set<string>()\n for (const cellId of selectedCells) {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || isGroupId(rowId)) continue\n\n const id = getEntityById(rowId)?.entityId\n if (!id) continue\n if (colId === ROW_SELECTION_COLUMN_ID) rowEntities.add(id)\n else cellEntities.add(id)\n }\n return cellEntities.size || rowEntities.size\n }, [selectedCells, getEntityById])\n // only show the upsell once the license check resolves, so licensed users\n // don't see the bolt flash before the addon loads\n // const showSummaryPowerFeature = !isLicenseLoading && !powerLicense\n\n // Calculate dynamic row height based on user setting from Customize panel\n const { getRowHeight, defaultRowHeight } = useDynamicRowHeight()\n\n const attribByField = useMemo(() => {\n return attribFields.reduce((acc: Record<string, EnumItem[]>, attrib) => {\n if (attrib.data?.enum?.length) {\n acc[attrib.name] = attrib.data?.enum\n }\n return acc\n }, {})\n }, [attribFields])\n\n const rowOrderIds = useMemo(() => tableData.map((row) => row.id), [tableData])\n // Get column IDs for drag-and-drop from context columnOrder (exclude non-draggable columns)\n // This ensures SortableContext items match what the drag handlers use\n const columnOrderIds = useMemo(() => {\n return columnOrder.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n }, [columnOrder])\n\n const draggedRowData = useMemo(() => {\n if (!dndActiveId || !sortableRows) return null // Use dndActiveId\n return tableData.find((r) => r.id === dndActiveId) // Use dndActiveId\n }, [dndActiveId, tableData, sortableRows])\n\n const combinedScrollHandler: UIEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n // Call the original onScroll if provided\n onScroll?.(e)\n\n if (onScrollBottom) {\n const containerRefElement = e.currentTarget\n // When not grouping (or when hierarchy+slicer relies on tasksList), we trigger standard fetchNextPage\n // The table itself handles showing tasks.\n if (containerRefElement && !groupBy && (!showHierarchy || !isFlatFolderView)) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n //once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n if (scrollHeight - scrollTop - clientHeight < 500 && !isLoading) {\n onScrollBottom(e)\n }\n }\n }\n\n // Handle scroll-to-bottom for grouped data\n if (onScrollBottomGroupBy && groupBy) {\n const containerRefElement = e.currentTarget\n // look for a load more button\n const loadMoreButton = containerRefElement?.querySelector('.load-more')\n // get load more button id\n const loadMoreButtonId = loadMoreButton?.getAttribute('id')\n const groupValue = loadMoreButtonId?.split('-')[2] // assuming the id is in the format 'load-more-groupValue'\n if (groupValue) {\n onScrollBottomGroupBy(groupValue)\n }\n }\n },\n [onScroll, onScrollBottom, onScrollBottomGroupBy, showHierarchy, groupBy, isLoading],\n )\n\n const tableUiContent = (\n <ClipboardProvider\n entitiesMap={entitiesMap}\n columnEnums={{ ...options, ...attribByField }}\n columnReadOnly={readOnlyAttribs}\n visibleColumns={visibleColumns}\n >\n <Styled.TableWrapper {...props}>\n <Styled.TableContainer\n ref={tableContainerRef}\n style={{ height: '100%', padding: 0 }}\n onScroll={combinedScrollHandler}\n {...pt?.container}\n data-column-dnd-container\n className={clsx(\n 'table-container',\n {\n resizing: table.getState().columnSizingInfo.isResizingColumn,\n },\n pt?.container?.className,\n )}\n >\n <table\n style={{\n display: 'grid',\n borderCollapse: 'collapse',\n userSelect: 'none',\n ...columnSizeVars,\n width: table.getTotalSize(),\n cursor: table.getState().columnSizingInfo.isResizingColumn ? 'col-resize' : undefined,\n // stretch tbody to the container so the column dividers fill the empty\n // space below the rows; also pins the summary footer to the bottom\n minHeight: '100%',\n gridTemplateRows: 'auto 1fr auto',\n }}\n >\n <TableHead\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n columnOrderIds={columnOrderIds}\n {...pt?.head}\n />\n <TableBody\n columnVirtualizer={columnVirtualizer}\n table={table}\n tableContainerRef={tableContainerRef}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n showHierarchy={showHierarchy}\n attribs={attribFields}\n onOpenNew={onOpenNew}\n rowOrderIds={rowOrderIds}\n sortableRows={sortableRows}\n error={error}\n isFilterError={filterError}\n filterErrorMessage={filterErrorMessage}\n isLoading={isLoading}\n isGrouping={isGrouping}\n getRowHeight={getRowHeight}\n defaultRowHeight={defaultRowHeight}\n onResetView={onResetView}\n contextMenuItems={propsContextMenuItems}\n onVisibleRowsChange={onVisibleRowsChange}\n />\n {summariesEnabled && !error && (\n <TableFooterRow\n columnVirtualizer={columnVirtualizer}\n table={table}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={footerModuleLoading}\n statsLoading={!!fieldStatsLoading}\n error={fieldStatsError}\n // Free-user upsell hidden for now; keep for later:\n // onClick={showSummaryPowerFeature ? () => setPowerpackDialog('columnSummaries') : undefined}\n renderCellContent={(columnId) => (\n <RemoteSummaryCellContent\n columnId={columnId}\n attribs={attribFields}\n fieldStats={fieldStats}\n groupFieldStats={groupFieldStats}\n calc={columnSummaries[columnId]}\n onCalcChange={(calc) => updateColumnSummary(columnId, calc)}\n format={columnSummaryFormats[columnId]}\n onFormatChange={(format) => updateColumnSummaryFormat(columnId, format)}\n scope={columnSummaryScopes[columnId]}\n onScopeChange={(scope) => updateColumnSummaryScope(columnId, scope)}\n mainCountLabels={mainCountLabels}\n fieldOptions={options}\n parentScopeApplicable={parentScopeApplicable}\n selectedCount={selectedRowCount}\n />\n )}\n // Power feature cell for community users (hidden for now), shows a bolt hint in the name column:\n // renderCellContent={(columnId) =>\n // showSummaryPowerFeature && columnId === 'name' ? (\n // <Styled.SummaryPowerFeature>\n // <Icon icon=\"bolt\" filled />\n // Summaries\n // </Styled.SummaryPowerFeature>\n // ) : null\n // }\n />\n )}\n </table>\n </Styled.TableContainer>\n {softError && (\n <Styled.SoftErrorBanner>\n <InfoMessage variant=\"warning\" message={softError} action={softErrorAction} />\n </Styled.SoftErrorBanner>\n )}\n </Styled.TableWrapper>\n </ClipboardProvider>\n )\n\n // Render DragOverlay if sortableRows and dndActiveId is present\n const dragOverlayPortal =\n sortableRows &&\n dndActiveId &&\n createPortal(\n <DragOverlay dropAnimation={null}>\n {draggedRowData\n ? (() => {\n const overlayRowInstance = table.getRowModel().rows.find((r) => r.id === dndActiveId)\n if (!overlayRowInstance) return null\n\n const tableWidth = table.getTotalSize()\n\n return (\n <table\n style={{\n width: tableWidth,\n borderCollapse: 'collapse',\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n ...columnSizeVars,\n }}\n >\n <tbody>\n <Styled.TR style={{ display: 'flex', userSelect: 'none' }}>\n {virtualPaddingLeft ? (\n <td style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n {columnVirtualizer.getVirtualItems().map((vc) => {\n const cell = overlayRowInstance.getVisibleCells()[vc.index]\n if (!cell) return null\n\n const cellStyleBase: CSSProperties = {\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n display: 'flex',\n alignItems: 'center',\n height: defaultRowHeight,\n }\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={`overlay-drag-${cell.id}`}\n style={{ ...cellStyleBase, justifyContent: 'center' }}\n className={clsx(cell.column.id)}\n >\n <Icon icon=\"drag_handle\" /> {/* Static icon */}\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={`overlay-${getCellId(overlayRowInstance.id, cell.column.id)}`}\n rowId={overlayRowInstance.id}\n key={`overlay-cell-${cell.id}`}\n showHierarchy={showHierarchy}\n />\n )\n })}\n {virtualPaddingRight ? (\n <td style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.TR>\n </tbody>\n </table>\n )\n })()\n : null}\n </DragOverlay>,\n document.body,\n )\n\n if (sortableRows) {\n return (\n <>\n {tableUiContent}\n {dragOverlayPortal}\n <ColumnDragOverlay table={table} />\n </>\n )\n } else {\n return (\n <>\n {tableUiContent}\n <ColumnDragOverlay table={table} />\n </>\n )\n }\n}\n\n/**\n * Isolated component for column drag overlay.\n * This prevents the entire table from re-rendering on every drag frame.\n */\ninterface ColumnDragOverlayProps {\n table: Table<TableRow>\n}\n\nconst ColumnDragOverlay = ({ table }: ColumnDragOverlayProps) => {\n const { active } = useDndContext()\n\n // Only process if dragging a column\n const isColumnDrag = active?.data?.current?.type === 'column'\n const activeColumnId = isColumnDrag ? (active?.id as string) : null\n\n const draggedColumnHeader = useMemo(() => {\n if (!activeColumnId) return null\n return table.getHeaderGroups()[0]?.headers.find((h) => h.id === activeColumnId) || null\n }, [activeColumnId, table])\n\n if (!activeColumnId || !draggedColumnHeader) return null\n\n return createPortal(\n <DragOverlay dropAnimation={null}>\n <Styled.HeaderCell\n style={{\n width: draggedColumnHeader.column.getSize(),\n backgroundColor: 'var(--md-sys-color-surface-container-high)',\n boxShadow: '0 0 10px rgba(0,0,0,0.2)',\n display: 'flex',\n alignItems: 'center',\n minHeight: 34,\n }}\n >\n <Styled.TableCellContent className=\"bold header\">\n {flexRender(\n draggedColumnHeader.column.columnDef.header,\n draggedColumnHeader.getContext(),\n )}\n </Styled.TableCellContent>\n </Styled.HeaderCell>\n </DragOverlay>,\n document.body,\n )\n}\n\ninterface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n columnOrderIds: string[]\n}\n\nconst TableHead = ({\n columnVirtualizer,\n table,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\n ...props\n}: TableHeadProps) => {\n return (\n <Styled.TableHeader {...props}>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableHeadRow\n key={headerGroup.id}\n columnVirtualizer={columnVirtualizer}\n headerGroup={headerGroup}\n virtualPaddingLeft={virtualPaddingLeft}\n virtualPaddingRight={virtualPaddingRight}\n isLoading={isLoading}\n readOnlyColumns={readOnlyColumns}\n sortableRows={sortableRows}\n columnOrderIds={columnOrderIds}\n />\n ))}\n </Styled.TableHeader>\n )\n}\n\ninterface TableHeadRowProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n headerGroup: HeaderGroup<TableRow>\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n isLoading: boolean\n readOnlyColumns?: string[]\n sortableRows?: boolean\n columnOrderIds: string[]\n}\n\nconst TableHeadRow = ({\n columnVirtualizer,\n headerGroup,\n virtualPaddingLeft,\n virtualPaddingRight,\n isLoading,\n readOnlyColumns,\n sortableRows,\n columnOrderIds,\n}: TableHeadRowProps) => {\n const virtualColumns = columnVirtualizer.getVirtualItems()\n const { active } = useDndContext()\n const isColumnDrag = active?.data?.current?.type === 'column'\n const isDraggedColumnPinned = isColumnDrag && (active?.data?.current?.isPinned ?? false)\n\n return (\n <Styled.ColumnHeader key={headerGroup.id} style={{ display: 'flex' }}>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingLeft }} />\n ) : null}\n <SortableContext items={columnOrderIds} strategy={horizontalListSortingStrategy}>\n {virtualColumns.map((virtualColumn) => {\n const header = headerGroup.headers[virtualColumn.index]\n // Exclude certain columns from being draggable\n const isDraggable =\n header.id !== DRAG_HANDLE_COLUMN_ID && header.id !== ROW_SELECTION_COLUMN_ID\n\n return (\n <TableHeadCell\n key={header.id}\n header={header}\n isLoading={isLoading}\n isReadOnly={readOnlyColumns?.includes(header.id)}\n canSort={header.column.getCanSort()}\n canFilter={header.column.getCanFilter()}\n canHide={header.column.getCanHide()}\n canPin={header.column.getCanPin()}\n canResize={header.column.getCanResize()}\n sortableRows={sortableRows}\n isDraggable={isDraggable}\n isColumnDrag={isColumnDrag}\n isDraggedColumnPinned={isDraggedColumnPinned}\n />\n )\n })}\n </SortableContext>\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <th style={{ display: 'flex', width: virtualPaddingRight }} />\n ) : null}\n </Styled.ColumnHeader>\n )\n}\n\ninterface TableHeadCellProps {\n header: Header<TableRow, unknown>\n isLoading: boolean\n canSort?: boolean\n canFilter?: boolean\n canHide?: boolean\n canPin?: boolean\n canResize?: boolean\n isReadOnly?: boolean\n sortableRows?: boolean\n isDraggable?: boolean\n isColumnDrag?: boolean\n isDraggedColumnPinned?: boolean\n}\n\nconst TableHeadCell = ({\n header,\n isLoading,\n canFilter,\n canHide,\n canSort,\n canPin,\n canResize,\n isReadOnly,\n sortableRows,\n isDraggable = true,\n isColumnDrag,\n isDraggedColumnPinned,\n}: TableHeadCellProps) => {\n const { column } = header\n const sorting = column.getIsSorted()\n const menuId = `column-header-menu-${column.id}`\n const { menuOpen } = useMenuContext()\n const isOpen = menuOpen === menuId\n const { columnPinning, sorting: sortingState, updateSorting } = useColumnSettingsContext()\n\n // toggle sort via the same direct updateSorting call the Customize panel uses;\n // routing through TanStack's onSortingChange did not apply under manualSorting.\n const handleToggleSort = () => {\n const current = sortingState?.find((s) => s.id === column.id)\n const next = !current\n ? [{ id: column.id, desc: false }]\n : !current.desc\n ? [{ id: column.id, desc: true }]\n : []\n updateSorting(next)\n }\n\n // Check if this column is pinned\n const isThisColumnPinned = columnPinning.left?.includes(column.id) || false\n\n // useSortable for column drag-and-drop\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: column.id,\n data: { type: 'column', isPinned: isThisColumnPinned },\n disabled: !isDraggable,\n })\n\n const isDraggingInSameSection = isColumnDrag && isDraggedColumnPinned === isThisColumnPinned\n\n // Build drag styles\n const getDragStyle = (): CSSProperties => {\n if (isDragging) {\n return {\n transform: CSS.Translate.toString(transform!),\n transition,\n visibility: 'hidden',\n zIndex: 200,\n }\n }\n if (isDraggingInSameSection && transform) {\n // For pinned columns, temporarily remove sticky positioning during drag animation\n const pinnedOverride = isThisColumnPinned\n ? { position: 'relative' as const, left: 'auto' }\n : {}\n return { transform: CSS.Translate.toString(transform), transition, ...pinnedOverride }\n }\n return {}\n }\n\n // Prevent drag when clicking action buttons\n const preventDragFromActions = {\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: React.MouseEvent) => e.stopPropagation(),\n }\n\n return (\n <Styled.HeaderCell\n ref={setNodeRef}\n className={clsx(header.id, 'shimmer-dark', {\n loading: isLoading,\n 'last-pinned-left': column.getIsPinned() === 'left' && column.getIsLastColumn('left'),\n resizing: column.getIsResizing(),\n dragging: isDragging,\n draggable: isDraggable,\n })}\n key={header.id}\n style={{\n ...getCommonPinningStyles(column),\n width: getColumnWidth(column.id),\n ...getDragStyle(),\n }}\n >\n {header.isPlaceholder ? null : (\n <Styled.TableCellContent\n className={clsx('bold', 'header')}\n {...(isDraggable ? { ...attributes, ...listeners } : {})}\n >\n {flexRender(column.columnDef.header, header.getContext())}\n {isReadOnly && (\n <Icon icon=\"lock\" data-tooltip={'You only have permission to read this column.'} />\n )}\n\n <Styled.HeaderButtons className=\"actions\" $isOpen={isOpen} {...preventDragFromActions}>\n {/* Column drag handle */}\n\n {(canHide || canPin || canSort) && (\n <ColumnHeaderMenu\n className=\"header-menu\"\n header={header}\n canHide={canHide}\n canPin={canPin}\n canSort={canSort}\n isResizing={column.getIsResizing()}\n menuId={menuId}\n isOpen={isOpen}\n />\n )}\n\n {/* COLUMN SORTING */}\n {canSort && (\n <HeaderActionButton\n icon=\"sort\"\n className={clsx('sort-button', { visible: sorting })}\n style={{\n transform: sorting === 'desc' ? 'rotate(180deg) scaleX(-1)' : 'none',\n }}\n onClick={handleToggleSort}\n selected={!!column.getIsSorted()}\n />\n )}\n\n {/* COLUMN PINNING - only show on pinned columns (exclude selection column) */}\n {column.getIsPinned() &&\n column.id !== ROW_SELECTION_COLUMN_ID &&\n column.id !== DRAG_HANDLE_COLUMN_ID && (\n <HeaderActionButton\n icon=\"push_pin\"\n className={clsx('pin-button', 'visible')}\n onClick={() => column.pin(false)}\n selected\n />\n )}\n </Styled.HeaderButtons>\n {canResize && (\n <Styled.ResizedHandler\n {...{\n onDoubleClick: () => column.resetSize(),\n onMouseDown: (e: React.MouseEvent) => {\n e.stopPropagation()\n header.getResizeHandler()(e)\n },\n onTouchStart: header.getResizeHandler(),\n onPointerDown: (e: React.PointerEvent) => e.stopPropagation(),\n className: clsx('resize-handle', {\n resizing: column.getIsResizing(),\n }),\n }}\n />\n )}\n </Styled.TableCellContent>\n )}\n </Styled.HeaderCell>\n )\n}\n\ninterface TableBodyProps {\n columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>\n table: Table<TableRow>\n tableContainerRef: React.RefObject<HTMLDivElement>\n showHierarchy: boolean\n virtualPaddingLeft: number | undefined\n virtualPaddingRight: number | undefined\n attribs: ProjectTableAttribute[]\n onOpenNew?: (type: 'folder' | 'task', config?: NewEntityOpenConfig) => void\n rowOrderIds: UniqueIdentifier[]\n sortableRows: boolean\n error?: string\n isFilterError?: boolean\n filterErrorMessage?: string\n isLoading: boolean\n isGrouping: boolean\n getRowHeight: (row: TableRow) => number\n defaultRowHeight: number\n onResetView?: () => void\n contextMenuItems?: ContextMenuItemConstructors\n onVisibleRowsChange?: (entityIds: string[]) => void\n}\n\nconst TableBody = ({\n columnVirtualizer,\n table,\n tableContainerRef,\n showHierarchy,\n virtualPaddingLeft,\n virtualPaddingRight,\n attribs,\n onOpenNew,\n rowOrderIds,\n sortableRows,\n error,\n isFilterError: filterError,\n filterErrorMessage,\n isLoading,\n isGrouping,\n getRowHeight,\n defaultRowHeight,\n onResetView,\n contextMenuItems,\n onVisibleRowsChange,\n}: TableBodyProps) => {\n const headerLabels = useMemo(() => {\n const allColumns = table.getAllColumns()\n const headers = allColumns\n .map((col) => {\n const headerId = col.id\n const header = col.columnDef.header\n if (typeof header === 'string' || typeof header === 'number') {\n return { label: header, id: headerId }\n }\n return null\n })\n .filter(Boolean)\n\n return headers as HeaderLabel[]\n }, [table.getAllColumns()])\n\n const cellContextMenuHook = useCellContextMenu({\n attribs,\n onOpenNew,\n headerLabels,\n contextMenuItems,\n })\n\n const handleTableBodyContextMenu = cellContextMenuHook.handleTableBodyContextMenu\n\n const { rows } = table.getRowModel()\n\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n estimateSize: (index) => {\n // Calculate dynamic row height based on specific row data\n const row = rows[index]\n return row ? getRowHeight(row.original) : defaultRowHeight\n },\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement:\n typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n const virtualRows = rowVirtualizer.getVirtualItems()\n\n // Notify the consumer whenever the set of rendered (visible) entity ids changes,\n // so data fetching can be scoped to what's actually on screen. Only fires when\n // the resolved id list actually differs, to avoid spamming updates on every\n // render (rowVirtualizer.getVirtualItems() returns a new array each call).\n const prevVisibleRowIdsRef = useRef<string>('')\n useEffect(() => {\n if (!onVisibleRowsChange) return\n\n const ids = virtualRows\n .map((virtualRow) => rows[virtualRow.index] && parseRowId(rows[virtualRow.index].id))\n .filter(Boolean) as string[]\n const uniqueIds = Array.from(new Set(ids))\n const key = uniqueIds.join(',')\n\n if (key === prevVisibleRowIdsRef.current) return\n prevVisibleRowIdsRef.current = key\n\n onVisibleRowsChange(uniqueIds)\n }, [virtualRows, rows, onVisibleRowsChange])\n\n // Memoize the measureElement callback\n const measureRowElement = useCallback(\n (node: HTMLTableRowElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n useKeyboardNavigation()\n\n // vertical column lines painted behind the rows so they extend into the empty\n // space between the last row and the summary footer\n const visibleLeafColumns = table.getVisibleLeafColumns()\n const columnDividerLefts = useMemo(() => {\n const lefts: string[] = []\n const sizeVars: string[] = []\n for (let i = 0; i < visibleLeafColumns.length - 1; i++) {\n const column = visibleLeafColumns[i]\n // selection column is forced to 20px in CSS while its size var reports defaultColumn.minSize\n sizeVars.push(column.id === ROW_SELECTION_COLUMN_ID ? '20' : `var(--col-${column.id}-size)`)\n lefts.push(`calc((${sizeVars.join(' + ')}) * 1px)`)\n }\n return lefts\n }, [visibleLeafColumns])\n\n const tbodyContent = (\n <tbody\n style={{\n minHeight: `${rowVirtualizer.getTotalSize()}px`,\n position: 'relative',\n display: 'grid',\n }}\n onContextMenu={handleTableBodyContextMenu}\n >\n <Styled.ColumnDividers aria-hidden>\n {columnDividerLefts.map((left, i) => (\n <div key={i} style={{ left }} />\n ))}\n </Styled.ColumnDividers>\n {virtualRows.map((virtualRow) => {\n const row = rows[virtualRow.index] as Row<TableRow>\n // Add a check for row existence to prevent potential errors if data is out of sync\n if (!row) {\n console.warn('Virtualized row data not found for index:', virtualRow.index)\n return null\n }\n return (\n <TableBodyRow\n key={row.id} // stable per-row identity; dnd-kit matches on row.id via SortableContext, not this key\n row={row}\n showHierarchy={showHierarchy}\n visibleCells={row.getVisibleCells()}\n virtualColumns={columnVirtualizer.getVirtualItems()}\n paddingLeft={virtualPaddingLeft}\n paddingRight={virtualPaddingRight}\n rowRef={measureRowElement}\n dataIndex={virtualRow.index}\n offsetTop={virtualRow.start}\n sortableRows={sortableRows}\n isGrouping={isGrouping}\n rowHeight={getRowHeight(row.original)}\n />\n )\n })}\n </tbody>\n )\n\n if (error) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n {filterError ? (\n <EmptyPlaceholder message={filterErrorMessage} icon=\"filter_alt_off\">\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset filters\"\n icon=\"replay\"\n onClick={onResetView}\n />\n )}\n <FilterErrorActions errorMessage={extractQueryErrorMessage(error)} />\n </EmptyPlaceholder>\n ) : (\n <EmptyPlaceholder message=\"No items found\" error={error}>\n {onResetView && (\n <Button\n variant=\"filled\"\n label=\"Reset filters\"\n icon=\"replay\"\n onClick={onResetView}\n />\n )}\n </EmptyPlaceholder>\n )}\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (!rows.length && !isLoading) {\n return (\n tableContainerRef.current &&\n createPortal(\n <Styled.AnimatedEmptyPlaceholder>\n <EmptyPlaceholder message=\"No items found\">\n {onResetView && (\n <Button variant=\"filled\" label=\"Reset filters\" icon=\"replay\" onClick={onResetView} />\n )}\n </EmptyPlaceholder>\n </Styled.AnimatedEmptyPlaceholder>,\n tableContainerRef.current,\n )\n )\n }\n\n if (sortableRows) {\n return (\n <SortableContext items={rowOrderIds} strategy={verticalListSortingStrategy}>\n {tbodyContent}\n </SortableContext>\n )\n } else {\n return tbodyContent\n }\n}\n\ninterface TableBodyRowProps {\n row: Row<TableRow>\n showHierarchy: boolean\n visibleCells: Cell<TableRow, unknown>[]\n virtualColumns: VirtualItem[]\n paddingLeft: number | undefined\n paddingRight: number | undefined\n rowRef: (node: HTMLTableRowElement | null) => void\n dataIndex: number\n offsetTop: number\n sortableRows: boolean\n isGrouping: boolean\n rowHeight: number\n}\n\nconst TableBodyRow = ({\n row,\n showHierarchy,\n visibleCells,\n virtualColumns,\n paddingLeft,\n paddingRight,\n rowRef,\n dataIndex,\n offsetTop,\n sortableRows,\n isGrouping = false,\n rowHeight,\n}: TableBodyRowProps) => {\n const sortable = sortableRows ? useSortable({ id: row.id }) : null\n\n // Track actual DOM element node\n const rowHtmlElementRef = useRef<HTMLTableRowElement | null>(null)\n\n const combinedRef = useCallback(\n (node: HTMLTableRowElement | null) => {\n rowHtmlElementRef.current = node\n if (sortable) {\n sortable.setNodeRef(node)\n }\n // rowRef for virtualizer measurement\n // only measure if not actively being transformed by dnd-kit\n if (!(sortable && sortable.isDragging)) {\n rowRef(node)\n }\n },\n [sortable, rowRef],\n )\n\n // Attempt to combine dnd-kit transform with virtualizer's offsetTop\n const style: CSSProperties = {\n position: 'absolute', // Use absolute positioning for virtualized items\n top: offsetTop, // Position based on virtualizer's calculation (virtualRow.start)\n left: 0, // Span full width of the relative parent (tbody)\n right: 0, // Span full width\n height: rowHeight, // Use dynamic row height\n zIndex: sortable && sortable.isDragging ? 0 : 1, // Ensure dragged item is above others\n display: 'flex', // Styled.TR is display:flex\n transform:\n sortable && sortable.transform ? CSS.Transform.toString(sortable.transform) : undefined, // Apply dnd-kit's transform for drag effect\n transition: sortable && sortable.transition ? sortable.transition : undefined,\n visibility: sortable && sortable.isDragging ? 'hidden' : 'visible', // Hide the row being dragged\n }\n\n return (\n <Styled.TR\n ref={combinedRef}\n data-index={dataIndex} //needed for dynamic row height measurement\n style={style}\n className={clsx({ 'group-row': row.original.group })}\n >\n {paddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingLeft }} />\n ) : null}\n {virtualColumns.map((vc) => {\n const cell = visibleCells[vc.index]\n if (!cell) return null // Should not happen in normal circumstances\n\n const cellId = getCellId(row.id, cell.column.id)\n\n if (cell.column.id === DRAG_HANDLE_COLUMN_ID) {\n return (\n <Styled.TD\n key={cell.id}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: rowHeight,\n pointerEvents: 'all',\n cursor: 'grab',\n }}\n className={clsx(cell.column.id, {\n 'last-pinned-left':\n cell.column.getIsPinned() === 'left' && cell.column.getIsLastColumn('left'),\n })}\n onMouseDown={(e) => e.stopPropagation()} // Prevent selection interference\n onMouseOver={(e) => e.stopPropagation()}\n onDoubleClick={(e) => e.stopPropagation()}\n onContextMenu={(e) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <RowDragHandleCellContent\n attributes={sortable?.attributes}\n listeners={sortable?.listeners}\n />\n </Styled.TD>\n )\n }\n return (\n <TD\n cell={cell}\n cellId={cellId}\n rowId={row.id}\n key={cell.id}\n showHierarchy={showHierarchy}\n sortableRows={sortableRows}\n rowHeight={rowHeight}\n />\n )\n })}\n\n {paddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n <td style={{ display: 'flex', width: paddingRight }} />\n ) : null}\n </Styled.TR>\n )\n}\n\ninterface TableCellProps {\n cell: Cell<TableRow, unknown>\n cellId: string\n rowId: string\n className?: string\n showHierarchy: boolean\n sortableRows?: boolean\n rowHeight?: number\n}\n\nconst TD = ({\n cell,\n rowId,\n cellId,\n className,\n showHierarchy,\n sortableRows,\n rowHeight,\n ...props\n}: TableCellProps) => {\n const { getEntityById, onOpenPlayer } = useProjectTableContext()\n\n const {\n isCellSelected,\n isCellFocused,\n startSelection,\n extendSelection,\n endSelection,\n selectCell,\n focusCell,\n getCellBorderClasses,\n clearSelection,\n selectedCells,\n setSelectedCells,\n setAnchorCell,\n setFocusedCellId,\n } = useSelectionCellsContext()\n\n const { isRowSelected } = useSelectedRowsContext()\n\n const { isEditing, setEditingCellId, editingCellId } = useCellEditing()\n\n const borderClasses = getCellBorderClasses(cellId)\n\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isRowSelectionColumn = cell.column.id === ROW_SELECTION_COLUMN_ID\n const isGroup = cell.row.original.entityType === 'group'\n const isMultipleSelected = selectedCells.size > 1\n\n return (\n <Styled.TD\n {...props}\n tabIndex={0}\n $isLastPinned={isLastLeftPinnedColumn} // is this column the last pinned column? Custom styling for borders.\n className={clsx(\n cell.column.id,\n {\n selected: isCellSelected(cellId),\n focused: isCellFocused(cellId),\n editing: isEditing(cellId),\n 'last-pinned-left': isLastLeftPinnedColumn,\n 'selected-row': isRowSelected(rowId),\n expandable:\n !!cell.row.originalSubRows && isEntityExpandable(cell.row.original.entityType),\n 'multiple-selected': isMultipleSelected,\n },\n className,\n ...borderClasses,\n )}\n style={{\n ...getCommonPinningStyles(cell.column),\n width: getColumnWidth(cell.column.id),\n height: rowHeight,\n }}\n onMouseDown={(e) => {\n // Only process left clicks (button 0), ignore right clicks\n if (e.button !== 0) return\n\n const target = e.target as HTMLElement\n\n // check we are not clicking on expander\n if (target.closest('.expander')) return\n\n // check we are not clicking in a dropdown\n if (target.closest('.options')) return\n\n e.currentTarget.focus()\n\n // Handle double-click via e.detail (browser's native click count).\n // We handle it here in mousedown instead of relying on the dblclick event,\n // because the 1st mousedown triggers React state updates that can replace\n // the DOM node, preventing the native dblclick event from firing.\n if (e.detail === 2) {\n // comments cells are read-only but their double-click opens the details panel, so don't block them here\n const isReadOnly = isTargetReadOnly(e) && cell.column.id !== 'comments'\n if (isReadOnly || isEntityRestricted(cell.row.original.entityType) || isGroup) {\n e.preventDefault()\n return\n }\n\n // name column: select row to open details panel\n // comments column: same — comments are read and written in the details panel feed\n if (['name', 'comments'].includes(cell.column.id) && !target.closest('.expander')) {\n // all ProjectTreeTable pages render their details panel under the 'overview' scope\n if (cell.column.id === 'comments') setDetailsPanelTabForScope('overview', 'feed')\n const rowSelectionCellId = getCellId(cell.row.id, ROW_SELECTION_COLUMN_ID)\n const additive = e.metaKey || e.ctrlKey\n const position = parseCellId(rowSelectionCellId)\n\n setSelectedCells((prev) => {\n const newSelection = additive ? new Set(prev) : new Set<CellId>()\n newSelection.add(rowSelectionCellId)\n newSelection.add(cellId)\n return newSelection\n })\n if (position) {\n setAnchorCell(position)\n setFocusedCellId(rowSelectionCellId)\n }\n }\n // thumbnail: open viewer\n else if (cell.column.id === 'thumbnail') {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.row.original.entityId || cell.row.id)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n }\n // other cells: start editing\n else {\n setEditingCellId(cellId)\n }\n\n e.preventDefault()\n return\n }\n\n // only name column can be selected for group rows\n if (isGroup && cell.column.id !== 'name') return clearSelection()\n\n // check if this is a restricted entity - prevent editing\n const isRestricted = isEntityRestricted(cell.row.original.entityType)\n\n // if clicking on an edit trigger, start editing\n if (target.closest('.' + EDIT_TRIGGER_CLASS) && !isRestricted) {\n // Select the cell first if not already selected\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n setEditingCellId(cellId)\n return\n }\n\n // If there's an active edit on a different cell, blur it first to save changes\n if (editingCellId && editingCellId !== cellId) {\n // Find the currently editing input and blur it\n const editingInput = document.querySelector(\n `#${editingCellId} input, #${editingCellId} [role=\"textbox\"]`,\n ) as HTMLElement\n if (editingInput) {\n editingInput.blur()\n // Wait a tick for the blur event to process and save\n setTimeout(() => {\n proceedWithSelection()\n }, 0)\n return\n }\n }\n\n proceedWithSelection()\n\n function proceedWithSelection() {\n const additive = e.metaKey || e.ctrlKey || isRowSelectionColumn\n if (e.shiftKey) {\n // Shift+click extends selection from anchor cell\n selectCell(cellId, additive, true) // true for range selection\n } else {\n startSelection(cellId, additive)\n }\n\n // Prevent default browser behavior to ensure focus stays on the cell\n e.preventDefault()\n }\n }}\n onMouseOver={(e) => {\n if (e.buttons === 1) {\n // check not selecting am edit trigger\n const target = e.target as HTMLElement\n if (target.closest('.' + EDIT_TRIGGER_CLASS)) return\n\n // Left button is pressed during mouse move - drag selection\n // Note: extendSelection is always called to allow drag to continue through cells\n // Restricted cells will be filtered out later\n extendSelection(cellId, isRowSelectionColumn)\n }\n }}\n onMouseUp={() => {\n endSelection(cellId)\n }}\n onDoubleClick={(e) => {\n // Double-click is primarily handled in onMouseDown via e.detail === 2.\n // Prevent default to avoid text selection on double-click.\n e.preventDefault()\n }}\n onContextMenu={(e) => {\n e.preventDefault()\n // if the cell is not selected, select it and deselect all others\n if (!isCellSelected(cellId)) {\n selectCell(cellId, false, false)\n }\n }}\n onKeyDown={() => {\n // keyboard events are handled in useKeyboardNavigation hook\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Styled.TD>\n )\n}\n"],"names":["SummaryCellContentFallback","matchesColumnId","id","subscribers","sub","pattern","ProjectTreeTable","scope","sliceId","onScroll","onScrollBottom","onOpenNew","readOnly","excludedColumns","excludedSorting","extraColumns","includeLinks","isLoadingProp","isExpandable","enableSorting","clientSorting","sortableRows","onRowReorder","dndActiveId","columnsConfig","showColumnSummaries","fieldStats","groupFieldStats","fieldStatsLoading","fieldStatsError","mainCountLabels","onScrollBottomGroupBy","propsContextMenuItems","onColumnVisibleChange","onColumnVisibleChangeSubscribed","onVisibleRowsChange","pt","props","columnVisibility","columnPinning","columnOrder","columnSizing","setAllColumns","sorting","sortingOnChange","columnPinningOnChange","columnSizingOnChange","defaultColumnVisibility","columnVisibilityOnChange","columnOrderOnChange","groupBy","columnSummaries","updateColumnSummary","columnSummaryScopes","updateColumnSummaryScope","columnSummaryFormats","updateColumnSummaryFormat","useColumnSettingsContext","productTypes","projectName","projectInfo","useProjectContext","tableData","attribFields","entitiesMap","users","isLoadingData","error","softError","softErrorAction","isInitialized","expanded","updateExpanded","toggleExpandAll","showHierarchy","isFlatFolderView","fetchNextPage","scopes","getEntityById","onResetView","overrideGroupBy","loadingLinksEntityIds","queryFilters","useProjectTableContext","isGrouping","filterError","isFilterError","filterErrorMessage","getFilterErrorMessage","getEntitiesLabelFromScopes","groupField","groupFieldId","parentScopeApplicable","writableFields","useProjectDataContext","isLoading","statuses","folderTypes","taskTypes","tags","linkTypes","options","useMemo","getTableFieldOptions","tableContainerRef","useRef","tableRowsCountRef","registerGrid","useSelectionCellsContext","loadingAttrib","loadingRows","tableRowsCount","generateDummyAttributes","generateLoadingRows","showLoadingRows","readOnlyColumns","readOnlyAttribs","getReadOnlyLists","selectedCells","updateEntities","useCellEditing","handleCellUpdate","useCallback","entity","config","selection","entitiesToUpdate","field","value","isAttrib","cellId","colId","rowId","parseCellId","ROW_SELECTION_COLUMN_ID","toast","columnAttribs","getNameLabelHeader","s","upperFirst","columns","baseColumns","buildTreeTableColumns","DRAG_HANDLE_COLUMN_ID","useEffect","ids","c","resolvedColumnVisibility","merged","col","explicitVisible","checkColumnVisibility","ensureAtLeastOneVisibleColumn","table","useReactTable","row","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","getSortedRowModel","filterFns","leftPins","contextLeftPins","rows","rowIds","colIdsSortedByPinning","b","colA","colB","visibleColumns","columnVirtualizer","virtualPaddingLeft","virtualPaddingRight","useColumnVirtualization","prevVisibleRef","virtualItems","visibleColumnIds","item","changes","hasChanged","isVisible","columnSizeVars","useCustomColumnWidthVars","powerLicense","usePowerpack","RemoteSummaryCellContent","isFooterLoaded","isFooterModuleLoading","useLoadModule","summariesEnabled","footerModuleLoading","selectedRowCount","cellEntities","rowEntities","isGroupId","getRowHeight","defaultRowHeight","useDynamicRowHeight","attribByField","acc","attrib","rowOrderIds","columnOrderIds","draggedRowData","r","combinedScrollHandler","e","containerRefElement","scrollHeight","scrollTop","clientHeight","groupValue","tableUiContent","jsx","ClipboardProvider","jsxs","Styled.TableWrapper","Styled.TableContainer","clsx","TableHead","TableBody","TableFooterRow","columnId","calc","format","Styled.SoftErrorBanner","InfoMessage","dragOverlayPortal","createPortal","DragOverlay","overlayRowInstance","tableWidth","Styled.TR","vc","cell","cellStyleBase","getCommonPinningStyles","getColumnWidth","Styled.TD","Icon","TD","getCellId","Fragment","ColumnDragOverlay","active","useDndContext","activeColumnId","draggedColumnHeader","h","Styled.HeaderCell","Styled.TableCellContent","flexRender","Styled.TableHeader","headerGroup","TableHeadRow","virtualColumns","isColumnDrag","isDraggedColumnPinned","Styled.ColumnHeader","SortableContext","horizontalListSortingStrategy","virtualColumn","header","isDraggable","TableHeadCell","canFilter","canHide","canSort","canPin","canResize","isReadOnly","column","menuId","menuOpen","useMenuContext","isOpen","sortingState","updateSorting","handleToggleSort","current","next","isThisColumnPinned","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","isDraggingInSameSection","getDragStyle","CSS","pinnedOverride","preventDragFromActions","Styled.HeaderButtons","ColumnHeaderMenu","HeaderActionButton","Styled.ResizedHandler","attribs","contextMenuItems","headerLabels","headerId","handleTableBodyContextMenu","useCellContextMenu","rowVirtualizer","useVirtualizer","index","element","virtualRows","prevVisibleRowIdsRef","virtualRow","parseRowId","uniqueIds","key","measureRowElement","node","useKeyboardNavigation","visibleLeafColumns","columnDividerLefts","lefts","sizeVars","i","tbodyContent","Styled.ColumnDividers","left","TableBodyRow","Styled.AnimatedEmptyPlaceholder","EmptyPlaceholder","Button","FilterErrorActions","extractQueryErrorMessage","verticalListSortingStrategy","visibleCells","paddingLeft","paddingRight","rowRef","dataIndex","offsetTop","rowHeight","sortable","rowHtmlElementRef","combinedRef","style","RowDragHandleCellContent","className","onOpenPlayer","isCellSelected","isCellFocused","startSelection","extendSelection","endSelection","selectCell","focusCell","getCellBorderClasses","clearSelection","setSelectedCells","setAnchorCell","setFocusedCellId","isRowSelected","useSelectedRowsContext","isEditing","setEditingCellId","editingCellId","borderClasses","isLastLeftPinnedColumn","isRowSelectionColumn","isGroup","isMultipleSelected","isEntityExpandable","target","isTargetReadOnly","isEntityRestricted","setDetailsPanelTabForScope","rowSelectionCellId","additive","position","prev","newSelection","targetIds","getEntityViewierIds","isRestricted","EDIT_TRIGGER_CLASS","editingInput","proceedWithSelection"],"mappings":"4qFA2HMA,GAA0D,IAAM,KAehEC,GAAkB,CAACC,EAAYC,IAC5BA,EAAY,KAAMC,GAAQ,CAC/B,GAAIA,EAAI,SAAS,GAAG,EAAG,CAIrB,MAAMC,EAAU,IAFAD,EAAI,QAAQ,sBAAuB,MAAM,EAE3B,QAAQ,QAAS,IAAI,EAAI,IAEvD,OADc,IAAI,OAAOC,CAAO,EACnB,KAAKH,CAAE,CACtB,CACA,OAAOA,IAAOE,CAChB,CAAC,EAwCUE,GAAmB,CAAC,CAC/B,MAAAC,EACA,QAAAC,EACA,SAAAC,EACA,eAAAC,EACA,UAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,aAAAC,EACA,aAAAC,EACA,UAAWC,EACX,aAAAC,EACA,cAAAC,EAAgB,GAChB,cAAAC,EAAgB,GAChB,aAAAC,EAAe,GACf,aAAAC,EACA,YAAAC,EACA,cAAAC,EACA,oBAAAC,EAAsB,GACtB,WAAAC,EACA,gBAAAC,GACA,kBAAAC,EACA,gBAAAC,GACA,gBAAAC,EACA,sBAAAC,EACA,iBAAkBC,EAClB,sBAAAC,EACA,gCAAAC,EACA,oBAAAC,EACA,GAAAC,EACA,GAAGC,CACL,IAA6B,CAC3B,KAAM,CACJ,iBAAAC,EACA,cAAAC,EACA,YAAAC,EACA,aAAAC,EACA,cAAAC,EACA,QAAAC,GACA,gBAAAC,EACA,sBAAAC,EACA,qBAAAC,GACA,wBAAAC,GACA,yBAAAC,GACA,oBAAAC,GACA,QAAAC,EACA,gBAAAC,GACA,oBAAAC,GACA,oBAAAC,GACA,yBAAAC,GACA,qBAAAC,GACA,0BAAAC,EAAA,EACEC,4BAAA,EACE,CAAE,aAAAC,GAAc,YAAAC,GAAa,GAAGC,EAAA,EAAgBC,GAAAA,kBAAA,EAEhD,CACJ,UAAAC,GACA,aAAAC,EACA,YAAAC,GACA,MAAAC,GACA,UAAWC,GACX,MAAAC,GACA,UAAAC,GACA,gBAAAC,GACA,cAAAC,GACA,SAAAC,GACA,eAAAC,GACA,gBAAAC,GACA,cAAAC,EACA,iBAAAC,GACA,cAAAC,GACA,OAAAC,EACA,cAAAC,GACA,YAAAC,GACA,gBAAAC,GACA,sBAAAC,GACA,aAAAC,EAAA,EACEC,0BAAA,EACEC,GAAa,CAAC,CAAClC,GAAW,CAAC,CAAC8B,GAE5BK,GAAcC,GAAAA,cAAcnB,GAAOe,EAAY,EAC/CK,GAAqBC,GAAAA,sBAAsBC,GAAAA,2BAA2BZ,CAAM,CAAC,EAK7Ea,GAAaV,IAAiB,IAAM9B,GAAS,GAC7CyC,GAAe,MAAM,QAAQD,EAAU,EAAIA,GAAW,CAAC,EAAIA,GAC3DE,GACJlB,GACA,CAAC,YAAa,SAAU,SAAS,EAAE,SAASiB,IAAgB,EAAE,GAC9Dd,EAAO,SAAS,SAAS,EAErB,CAAE,eAAAgB,EAAA,EAAmBC,yBAAA,EAErBC,GAAY9E,GAAiBiD,GAE7B,CACJ,SAAA8B,GAAW,CAAA,EACX,YAAAC,GAAc,CAAA,EACd,UAAAC,GAAY,CAAA,EACZ,KAAAC,GAAO,CAAA,EACP,UAAAC,GAAY,CAAA,CAAC,EACXxC,IAAe,CAAA,EACbyC,GAA+BC,EAAAA,QACnC,IACEC,wBAAqB,CACnB,MAAAtC,GACA,SAAA+B,GACA,YAAAC,GACA,UAAAC,GACA,aAAAxC,GACA,KAAAyC,GACA,OAAAtB,CAAA,CACD,EACH,CAACZ,GAAO+B,GAAUC,GAAaC,GAAWrB,EAAQsB,EAAI,CAAA,EAIlDK,GAAoBC,EAAAA,OAAuB,IAAI,EAE/CC,GAAoBD,EAAAA,OAAO,CAAC,EAG5B,CAAE,aAAAE,EAAA,EAAiBC,4BAAA,EAGnB,CAAE,cAAAC,GAAe,YAAAC,EAAA,EAAgBR,EAAAA,QAAQ,IAAM,CAEnD,MAAMS,EAAiBP,GAAkB,SAAS,iBAAiB,UAAU,EAAE,QAAU,EACnFK,EAAgBG,GAAAA,wBAAA,EAChBF,EAAcG,GAAAA,oBAClBvC,GAAiBZ,GAAU,OAAS,EAChC,KAAK,IAAIiD,EAAgB,EAAE,EAC3B7D,EACA,KAAK,IAAIwD,GAAkB,QAAS,EAAE,EACtC,EAAA,EAGN,MAAO,CAAE,cAAAG,EAAe,YAAAC,CAAAA,CAC1B,EAAG,CAAA,CAAE,EAECI,GAAkB,CAAC5C,IAAiByB,GAGpC,CAAE,gBAAAoB,GAAiB,gBAAAC,EAAA,EAAoBd,EAAAA,QAC3C,IAAMe,oBAAiBtD,EAAc8B,GAAgBjF,CAAQ,EAC7D,CAACmD,EAAc8B,GAAgBjF,CAAQ,CAAA,EAGnC,CAAE,cAAA0G,EAAA,EAAkBV,4BAAA,EACpB,CAAE,eAAAW,EAAA,EAAmBC,kBAAA,EAErBC,GAA+BC,EAAAA,YACnC,MAAOC,EAAQC,IAAW,CACxB,KAAM,CAAE,UAAAC,EAAY,EAAC,EAAMD,GAAU,CAAA,EAC/BE,EAAmC,CAAA,EACzC,GAAI,CAACD,GAAW,OACdC,EAAiB,KAAK,CAAE,GAAGH,EAAQ,GAAIA,EAAO,IAAMA,EAAO,MAAO,MAC7D,CAEL,KAAM,CAAE,MAAAI,EAAO,MAAAC,EAAO,SAAAC,EAAA,EAAaN,EACnC,UAAWO,MAAUZ,GAAe,CAClC,KAAM,CAAE,MAAAa,GAAO,MAAAC,EAAA,EAAUC,GAAAA,YAAYH,EAAM,GAAK,CAAA,EAGhD,GAAIC,KAAUG,EAAAA,wBAAyB,SAEvC,MAAMX,GAAS7C,GAAcsD,IAAS,EAAE,EACxC,GAAI,CAACT,GAAQ,CACX,QAAQ,KAAK,kBAAkBS,EAAK,6BAA6B,EACjE,QACF,EAEK,CAACD,IAAO,SAAS,SAAS,GAAKA,IAAO,QAAQ,UAAW,EAAE,IAAMJ,IAAUK,IAC9EN,EAAiB,KAAK,CACpB,MAAAC,EACA,MAAAK,GACA,GAAIT,GAAO,SACX,MAAAK,EACA,SAAAC,GACA,KAAMN,GAAO,UAAA,CACd,CAEL,CACF,CAEA,GAAI,CAACG,EAAiB,OAAQ,CAC5B,QAAQ,KAAK,sDAAsD,EACnES,GAAAA,MAAM,KAAK,wBAAwB,EACnC,MACF,CAEA,MAAMhB,GAAeO,EAAkB,EAAI,CAC7C,EACA,CAACP,GAAgBzC,GAAewC,EAAa,CAAA,EAGzCkB,GAAgBlC,EAAAA,QACpB,IAAOhC,GAAgBP,EAAe8C,GACtC,CAAC9C,EAAc8C,GAAevC,EAAa,CAAA,EAGvCmE,GAAqB,IACrB5D,EAAO,SAAS,SAAS,EAAU,oBAChCA,EAAO,IAAK6D,GAAMC,GAAAA,WAAWD,CAAC,CAAC,EAAE,KAAK,KAAK,EAG9CE,GAAUtC,EAAAA,QAAQ,IAAM,CAC5B,MAAMuC,EAAcC,GAAAA,QAAsB,CACxC,OAAAjE,EACA,QAAS2D,GACT,MAAOpC,GACP,aAAApF,EACA,cAAA0D,EACA,iBAAAC,GACA,QAAA0B,GACA,aAAAtF,EACA,SAAUF,EACV,gBAAAC,EACA,QAAAoC,EACA,UAAWuF,GAAA,CAAmB,CAC/B,EAED,OAAIpH,GAAgBF,EACX,CACL,CACE,GAAI4H,EAAAA,sBACJ,OAAQ,IAAM,KACd,KAAM,IAAM,KACZ,KAAM,GACN,QAAS,GACT,QAAS,GACT,eAAgB,GAChB,cAAe,GACf,aAAc,GACd,cAAe,EAAA,EAEjB,GAAGF,CAAA,EAGAA,CACT,EAAG,CACDhE,EACA,KAAK,UAAU2D,EAAa,EAC5B9D,EACAC,GACAzD,EACAmF,GACAD,GACApF,EACAD,EACAF,EACAC,EACAO,EACAF,EACA+B,CAAA,CACD,EAGD8F,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAML,GAAQ,IAAKM,GAAMA,EAAE,EAAG,EAAE,OAAO,OAAO,EACpDxG,EAAcuG,CAAG,CACnB,EAAG,CAACL,GAASlG,CAAa,CAAC,EAE3B,MAAMyG,GAA2B7C,EAAAA,QAAQ,IAAM,CAC7C,MAAM8C,EAAS,CAAE,GAAG9G,CAAA,EACpB,OAAAsG,GAAQ,QAASS,GAAQ,CAEvB,MAAMC,EAAkBD,EAAI,QACxBA,EAAI,IAAMD,EAAOC,EAAI,EAAE,IAAM,SAC3BC,IAAoB,OACtBF,EAAOC,EAAI,EAAE,EAAIC,EAEjBF,EAAOC,EAAI,EAAE,EAAIE,GAAAA,sBAAsB,CAAA,EAAIF,EAAI,GAAItG,EAAuB,EAGhF,CAAC,EACMyG,iCAA8BJ,EAAQR,GAAQ,IAAKM,GAAMA,EAAE,EAAY,EAAE,OAAO,OAAO,CAAC,CACjG,EAAG,CAAC5G,EAAkBS,GAAyB6F,EAAO,CAAC,EAEjDa,EAAQC,EAAAA,cAAc,CAC1B,KAAMxC,GAAkBJ,GAAchD,GACtC,QAAA8E,GACA,cAAe,CACb,QAAS,GACT,KAAM,GAAA,EAER,mBAAoB,GACpB,SAAWe,GAAQA,EAAI,GACvB,sBAAuB,GACvB,WAAaA,GAAQA,EAAI,QACzB,gBAAiB,IAAM,CAAC,CAACzI,GAAgBwD,GAAiBC,IAAoBS,GAC9E,gBAAiBwE,EAAAA,gBAAA,EACjB,oBAAqBC,EAAAA,oBAAA,EACrB,oBAAqBC,EAAAA,oBAAA,EACrB,mBAAoB,GAEpB,iBAAkBtF,GAElB,cAAArD,EACA,kBAAmB4I,EAAAA,kBAAA,EACnB,cAAe,GACf,cAAe,CAAC3I,EAChB,gBAAiBwB,EACjB,iBAAkB,WAClB,sBAAuBC,EACvB,qBAAsBC,GACtB,yBAA0BE,GAC1B,oBAAqBC,GAAA,UAErB+G,EAAAA,UACA,MAAO,CACL,SAAAzF,GACA,QAAA5B,GACA,eAAgB,IAAM,CACpB,MAAMsH,EAAqB,CAAA,EACvB5I,GACF4I,EAAS,KAAKlB,uBAAqB,EAErCkB,EAAS,KAAK3B,yBAAuB,EAGrC,MAAM4B,GAAmB3H,EAAc,MAAQ,CAAA,GAAI,OAChDrC,GAAOA,IAAO6I,EAAAA,uBAAyB7I,IAAOoI,EAAAA,uBAAA,EAEjD,OAAA2B,EAAS,KAAK,GAAGC,CAAe,EAIzB,CACL,KAHqB,CAAC,GAAG,IAAI,IAAID,CAAQ,CAAC,EAI1C,MAAO1H,EAAc,KAAA,CAEzB,GAAA,EACA,aAAAE,EACA,iBAAkB0G,GAClB,YAAA3G,CAAA,EAEF,KAAM,CACJ,YAAAmB,GACA,QAAA0C,GACA,SAAUc,GACV,eAAgBM,GAChB,gBAAAhD,GACA,aAAcG,GACd,UAAW,MAAM,KAAK0C,EAAa,EACnC,cAAA9F,EACA,sBAAAyD,EAAA,CACF,CACD,EAIK,CAAE,KAAAkF,EAAA,EAASV,EAAM,YAAA,EAGvBT,EAAAA,UAAU,IAAM,CACdtC,GAAkB,QAAUyD,GAAK,MACnC,EAAG,CAACA,GAAK,MAAM,CAAC,EAGhBnB,EAAAA,UAAU,IAAM,CACd,GAAI,CAACmB,GAAK,OAAQ,OAClB,MAAMC,EAASD,GAAK,IAAKR,GAAQA,EAAI,EAAE,EAEjCU,EAAwB,CAAC,GADhBZ,EAAM,kBAAA,EAAoB,IAAKJ,GAAQA,EAAI,EAAE,CACpB,EAAE,KAAK,CAAC,EAAGiB,IAAM,CACvD,GAAIhC,EAAAA,0BAA4BgC,EAAG,MAAO,GAC1C,MAAMC,EAAOhI,EAAc,MAAM,SAAS,CAAC,EAAI,EAAI,EAC7CiI,GAAOjI,EAAc,MAAM,SAAS+H,CAAC,EAAI,EAAI,EACnD,OAAOC,EAAOC,EAChB,CAAC,EAED7D,GAAayD,EAAQC,CAAqB,CAC5C,EAAG,CAACF,GAAMV,EAAM,oBAAqBlH,EAAe+F,EAAAA,wBAAyB3B,EAAY,CAAC,EAE1F,MAAM8D,GAAiBhB,EAAM,sBAAA,EAGvB,CAAE,kBAAAiB,GAAmB,mBAAAC,GAAoB,oBAAAC,EAAA,EAAwBC,GAAwB,CAC7F,eAAAJ,GACA,kBAAAjE,GACA,cAAAjE,EACA,aAAAE,EACA,YAAAD,CAAA,CACD,EAGKsI,GAAiBrE,EAAAA,OAAgC,EAAE,EACnDsE,GAAeL,GAAkB,gBAAA,EAGvC1B,EAAAA,UAAU,IAAM,CACd,GAAI,CAAC/G,GAAyB,CAACC,GAAiC,OAAQ,OAExE,MAAM8I,EAAmB,IAAI,IAAID,GAAa,IAAKE,GAASR,GAAeQ,EAAK,KAAK,GAAG,EAAE,CAAC,EACrFC,EAAmC,CAAA,EACzC,IAAIC,EAAa,GAGS1B,EACvB,kBAAA,EACA,OAAQJ,GAAQpJ,GAAgBoJ,EAAI,GAAInH,CAA+B,CAAC,EAEzD,QAASmH,GAAQ,CACjC,MAAM+B,EAAYJ,EAAiB,IAAI3B,EAAI,EAAE,EACzCyB,GAAe,QAAQzB,EAAI,EAAE,IAAM+B,IACrCF,EAAQ7B,EAAI,EAAE,EAAI+B,EAClBD,EAAa,GACbL,GAAe,QAAQzB,EAAI,EAAE,EAAI+B,EAErC,CAAC,EAEGD,GACFlJ,EAAsBiJ,CAAO,CAEjC,EAAG,CAACH,GAAc9I,EAAuBC,EAAiCuI,GAAgBhB,CAAK,CAAC,EAEhG,MAAM4B,GAAiBC,GAAyB7B,EAAOhH,CAAY,EAI7D,CAAE,aAAA8I,EAAA,EAAiBC,gBAAA,EACnB,CAACC,GAA0B,CAAE,SAAUC,GAAgB,UAAWC,EAAA,CAAuB,EAC7FC,iBAA2C,CACzC,MAAO,YACP,OAAQ,QACR,OAAQ,qBACR,SAAU5L,GACV,KAAM,CAACyB,GAAuB,CAAC8J,EAAA,CAChC,EAIGM,GACJpK,GACA8J,KACCG,IAAkBC,KACnB,CAAC,CAACxB,GAAK,OAGH2B,GAAsBH,IAAyB,CAACD,GAMhDK,GAAmBzF,EAAAA,QAAQ,IAAM,CACrC,MAAM0F,MAAmB,IACnBC,MAAkB,IACxB,UAAW/D,KAAUZ,GAAe,CAClC,KAAM,CAAE,MAAAc,EAAO,MAAAD,CAAA,EAAUE,GAAAA,YAAYH,CAAM,GAAK,CAAA,EAChD,GAAI,CAACE,GAAS8D,aAAU9D,CAAK,EAAG,SAEhC,MAAMlI,EAAK4E,GAAcsD,CAAK,GAAG,SAC5BlI,IACDiI,IAAUG,EAAAA,wBAAyB2D,EAAY,IAAI/L,CAAE,EACpD8L,EAAa,IAAI9L,CAAE,EAC1B,CACA,OAAO8L,EAAa,MAAQC,EAAY,IAC1C,EAAG,CAAC3E,GAAexC,EAAa,CAAC,EAM3B,CAAE,aAAAqH,GAAc,iBAAAC,EAAA,EAAqBC,GAAA,EAErCC,GAAgBhG,EAAAA,QAAQ,IACrBvC,EAAa,OAAO,CAACwI,EAAiCC,KACvDA,EAAO,MAAM,MAAM,SACrBD,EAAIC,EAAO,IAAI,EAAIA,EAAO,MAAM,MAE3BD,GACN,CAAA,CAAE,EACJ,CAACxI,CAAY,CAAC,EAEX0I,GAAcnG,EAAAA,QAAQ,IAAMxC,GAAU,IAAK6F,GAAQA,EAAI,EAAE,EAAG,CAAC7F,EAAS,CAAC,EAGvE4I,GAAiBpG,EAAAA,QAAQ,IACtB9D,EAAY,OAChBtC,GAAOA,IAAO6I,EAAAA,uBAAyB7I,IAAOoI,EAAAA,uBAAA,EAEhD,CAAC9F,CAAW,CAAC,EAEVmK,GAAiBrG,EAAAA,QAAQ,IACzB,CAAC/E,GAAe,CAACF,EAAqB,KACnCyC,GAAU,KAAM8I,GAAMA,EAAE,KAAOrL,CAAW,EAChD,CAACA,EAAauC,GAAWzC,CAAY,CAAC,EAEnCwL,GAAwDnF,EAAAA,YAC3DoF,GAAM,CAIL,GAFArM,IAAWqM,CAAC,EAERpM,EAAgB,CAClB,MAAMqM,EAAsBD,EAAE,cAG9B,GAAIC,GAAuB,CAAC7J,IAAY,CAACwB,GAAiB,CAACC,IAAmB,CAC5E,KAAM,CAAE,aAAAqI,EAAc,UAAAC,EAAW,aAAAC,CAAA,EAAiBH,EAE9CC,EAAeC,EAAYC,EAAe,KAAO,CAACnH,IACpDrF,EAAeoM,CAAC,CAEpB,CACF,CAGA,GAAI/K,GAAyBmB,EAAS,CAMpC,MAAMiK,EALsBL,EAAE,eAEc,cAAc,YAAY,GAE7B,aAAa,IAAI,GACrB,MAAM,GAAG,EAAE,CAAC,EAC7CK,GACFpL,EAAsBoL,CAAU,CAEpC,CACF,EACA,CAAC1M,EAAUC,EAAgBqB,EAAuB2C,EAAexB,EAAS6C,EAAS,CAAA,EAG/EqH,GACJC,EAAAA,kBAAAA,IAACC,GAAAA,kBAAA,CACC,YAAAtJ,GACA,YAAa,CAAE,GAAGqC,GAAS,GAAGiG,EAAA,EAC9B,eAAgBlF,GAChB,eAAAqD,GAEA,SAAA8C,EAAAA,kBAAAA,KAACC,EAAAA,aAAA,CAAqB,GAAGnL,EACvB,SAAA,CAAAgL,EAAAA,kBAAAA,IAACI,EAAAA,eAAA,CACC,IAAKjH,GACL,MAAO,CAAE,OAAQ,OAAQ,QAAS,CAAA,EAClC,SAAUqG,GACT,GAAGzK,GAAI,UACR,4BAAyB,GACzB,UAAWsL,EACT,kBACA,CACE,SAAUjE,EAAM,SAAA,EAAW,iBAAiB,gBAAA,EAE9CrH,GAAI,WAAW,SAAA,EAGjB,SAAAmL,EAAAA,kBAAAA,KAAC,QAAA,CACC,MAAO,CACL,QAAS,OACT,eAAgB,WAChB,WAAY,OACZ,GAAGlC,GACH,MAAO5B,EAAM,aAAA,EACb,OAAQA,EAAM,SAAA,EAAW,iBAAiB,iBAAmB,aAAe,OAG5E,UAAW,OACX,iBAAkB,eAAA,EAGpB,SAAA,CAAA4D,EAAAA,kBAAAA,IAACM,GAAA,CACC,kBAAAjD,GACA,MAAAjB,EACA,mBAAAkB,GACA,oBAAAC,GACA,UAAA7E,GACA,gBAAAoB,GACA,aAAA9F,EACA,eAAAqL,GACC,GAAGtK,GAAI,IAAA,CAAA,EAEViL,EAAAA,kBAAAA,IAACO,GAAA,CACC,kBAAAlD,GACA,MAAAjB,EACA,kBAAAjD,GACA,mBAAAmE,GACA,oBAAAC,GACA,cAAAlG,EACA,QAASX,EACT,UAAApD,EACA,YAAA8L,GACA,aAAApL,EACA,MAAA8C,GACA,cAAekB,GACf,mBAAAE,GACA,UAAAQ,GACA,WAAAX,GACA,aAAA+G,GACA,iBAAAC,GACA,YAAArH,GACA,iBAAkB/C,EAClB,oBAAAG,CAAA,CAAA,EAED0J,IAAoB,CAAC1H,IACpBkJ,EAAAA,kBAAAA,IAACQ,GAAAA,eAAA,CACC,kBAAAnD,GACA,MAAAjB,EACA,mBAAAkB,GACA,oBAAAC,GACA,UAAWkB,GACX,aAAc,CAAC,CAAClK,EAChB,MAAOC,GAGP,kBAAoBiM,GAClBT,EAAAA,kBAAAA,IAAC5B,GAAA,CACC,SAAAqC,EACA,QAAS/J,EACT,WAAArC,EACA,gBAAAC,GACA,KAAMwB,GAAgB2K,CAAQ,EAC9B,aAAeC,GAAS3K,GAAoB0K,EAAUC,CAAI,EAC1D,OAAQxK,GAAqBuK,CAAQ,EACrC,eAAiBE,GAAWxK,GAA0BsK,EAAUE,CAAM,EACtE,MAAO3K,GAAoByK,CAAQ,EACnC,cAAgBvN,GAAU+C,GAAyBwK,EAAUvN,CAAK,EAClE,gBAAAuB,EACA,aAAcuE,GACd,sBAAAT,GACA,cAAemG,EAAA,CAAA,CACjB,CAAA,CAWJ,CAAA,CAAA,CAEJ,CAAA,EAED3H,IACCiJ,EAAAA,kBAAAA,IAACY,EAAAA,gBAAA,CACC,SAAAZ,EAAAA,kBAAAA,IAACa,GAAAA,YAAA,CAAY,QAAQ,UAAU,QAAS9J,GAAW,OAAQC,GAAiB,CAAA,CAC9E,CAAA,CAAA,CAEJ,CAAA,CAAA,EAKE8J,GACJ9M,GACAE,GACA6M,GAAAA,aACEf,EAAAA,kBAAAA,IAACgB,GAAAA,YAAA,CAAY,cAAe,KACzB,aACI,IAAM,CACL,MAAMC,EAAqB7E,EAAM,YAAA,EAAc,KAAK,KAAMmD,GAAMA,EAAE,KAAOrL,CAAW,EACpF,GAAI,CAAC+M,EAAoB,OAAO,KAEhC,MAAMC,EAAa9E,EAAM,aAAA,EAEzB,OACE4D,EAAAA,kBAAAA,IAAC,QAAA,CACC,MAAO,CACL,MAAOkB,EACP,eAAgB,WAChB,gBAAiB,6CACjB,UAAW,2BACX,GAAGlD,EAAA,EAGL,SAAAgC,EAAAA,kBAAAA,IAAC,QAAA,CACC,SAAAE,EAAAA,kBAAAA,KAACiB,EAAAA,GAAA,CAAU,MAAO,CAAE,QAAS,OAAQ,WAAY,MAAA,EAC9C,SAAA,CAAA7D,GACC0C,EAAAA,kBAAAA,IAAC,MAAG,MAAO,CAAE,QAAS,OAAQ,MAAO1C,EAAA,CAAmB,CAAG,EACzD,KACHD,GAAkB,gBAAA,EAAkB,IAAK+D,GAAO,CAC/C,MAAMC,EAAOJ,EAAmB,gBAAA,EAAkBG,EAAG,KAAK,EAC1D,GAAI,CAACC,EAAM,OAAO,KAElB,MAAMC,EAA+B,CACnC,GAAGC,EAAAA,uBAAuBF,EAAK,MAAM,EACrC,MAAOG,EAAAA,eAAeH,EAAK,OAAO,EAAE,EACpC,QAAS,OACT,WAAY,SACZ,OAAQtC,EAAA,EAGV,OAAIsC,EAAK,OAAO,KAAO3F,wBAEnBwE,EAAAA,kBAAAA,KAACuB,EAAAA,GAAA,CAEC,MAAO,CAAE,GAAGH,EAAe,eAAgB,QAAA,EAC3C,UAAWjB,EAAKgB,EAAK,OAAO,EAAE,EAE9B,SAAA,CAAArB,EAAAA,kBAAAA,IAAC0B,GAAAA,KAAA,CAAK,KAAK,aAAA,CAAc,EAAE,GAAA,CAAA,EAJtB,gBAAgBL,EAAK,EAAE,EAAA,EAShCrB,EAAAA,kBAAAA,IAAC2B,GAAA,CACC,KAAAN,EACA,OAAQ,WAAWO,GAAAA,UAAUX,EAAmB,GAAII,EAAK,OAAO,EAAE,CAAC,GACnE,MAAOJ,EAAmB,GAE1B,cAAA5J,CAAA,EADK,gBAAgBgK,EAAK,EAAE,EAAA,CAIlC,CAAC,EACA9D,GACCyC,EAAAA,kBAAAA,IAAC,KAAA,CAAG,MAAO,CAAE,QAAS,OAAQ,MAAOzC,EAAA,CAAoB,CAAG,EAC1D,IAAA,CAAA,CACN,CAAA,CACF,CAAA,CAAA,CAGN,GAAA,EACA,KACN,EACA,SAAS,IAAA,EAGb,OAAIvJ,EAEAkM,EAAAA,kBAAAA,KAAA2B,6BAAA,CACG,SAAA,CAAA9B,GACAe,GACDd,wBAAC8B,IAAkB,MAAA1F,CAAA,CAAc,CAAA,EACnC,EAIA8D,EAAAA,kBAAAA,KAAA2B,6BAAA,CACG,SAAA,CAAA9B,GACDC,wBAAC8B,IAAkB,MAAA1F,CAAA,CAAc,CAAA,EACnC,CAGN,EAUM0F,GAAoB,CAAC,CAAE,MAAA1F,KAAoC,CAC/D,KAAM,CAAE,OAAA2F,CAAA,EAAWC,iBAAA,EAIbC,EADeF,GAAQ,MAAM,SAAS,OAAS,SACdA,GAAQ,GAAgB,KAEzDG,EAAsBjJ,EAAAA,QAAQ,IAC7BgJ,GACE7F,EAAM,kBAAkB,CAAC,GAAG,QAAQ,KAAM+F,GAAMA,EAAE,KAAOF,CAAc,GAAK,KAClF,CAACA,EAAgB7F,CAAK,CAAC,EAE1B,MAAI,CAAC6F,GAAkB,CAACC,EAA4B,KAE7CnB,GAAAA,aACLf,EAAAA,kBAAAA,IAACgB,GAAAA,YAAA,CAAY,cAAe,KAC1B,SAAAhB,EAAAA,kBAAAA,IAACoC,EAAAA,WAAA,CACC,MAAO,CACL,MAAOF,EAAoB,OAAO,QAAA,EAClC,gBAAiB,6CACjB,UAAW,2BACX,QAAS,OACT,WAAY,SACZ,UAAW,EAAA,EAGb,SAAAlC,EAAAA,kBAAAA,IAACqC,EAAAA,iBAAA,CAAwB,UAAU,cAChC,SAAAC,EAAAA,WACCJ,EAAoB,OAAO,UAAU,OACrCA,EAAoB,WAAA,CAAW,CACjC,CACF,CAAA,CAAA,EAEJ,EACA,SAAS,IAAA,CAEb,EAaM5B,GAAY,CAAC,CACjB,kBAAAjD,EACA,MAAAjB,EACA,mBAAAkB,EACA,oBAAAC,EACA,UAAA7E,EACA,gBAAAoB,EACA,aAAA9F,EACA,eAAAqL,EACA,GAAGrK,CACL,IAEIgL,wBAACuC,EAAAA,YAAA,CAAoB,GAAGvN,EACrB,SAAAoH,EAAM,gBAAA,EAAkB,IAAKoG,GAC5BxC,EAAAA,kBAAAA,IAACyC,GAAA,CAEC,kBAAApF,EACA,YAAAmF,EACA,mBAAAlF,EACA,oBAAAC,EACA,UAAA7E,EACA,gBAAAoB,EACA,aAAA9F,EACA,eAAAqL,CAAA,EARKmD,EAAY,EAAA,CAUpB,EACH,EAeEC,GAAe,CAAC,CACpB,kBAAApF,EACA,YAAAmF,EACA,mBAAAlF,EACA,oBAAAC,EACA,UAAA7E,EACA,gBAAAoB,EACA,aAAA9F,EACA,eAAAqL,CACF,IAAyB,CACvB,MAAMqD,EAAiBrF,EAAkB,gBAAA,EACnC,CAAE,OAAA0E,CAAA,EAAWC,iBAAA,EACbW,EAAeZ,GAAQ,MAAM,SAAS,OAAS,SAC/Ca,EAAwBD,IAAiBZ,GAAQ,MAAM,SAAS,UAAY,IAElF,OACE7B,EAAAA,kBAAAA,KAAC2C,EAAAA,aAAA,CAAyC,MAAO,CAAE,QAAS,QACzD,SAAA,CAAAvF,EAEC0C,wBAAC,MAAG,MAAO,CAAE,QAAS,OAAQ,MAAO1C,EAAmB,CAAG,EACzD,KACJ0C,EAAAA,kBAAAA,IAAC8C,GAAAA,iBAAgB,MAAOzD,EAAgB,SAAU0D,GAAAA,8BAC/C,SAAAL,EAAe,IAAKM,GAAkB,CACrC,MAAMC,EAAST,EAAY,QAAQQ,EAAc,KAAK,EAEhDE,EACJD,EAAO,KAAOvH,EAAAA,uBAAyBuH,EAAO,KAAOhI,EAAAA,wBAEvD,OACE+E,EAAAA,kBAAAA,IAACmD,GAAA,CAEC,OAAAF,EACA,UAAAvK,EACA,WAAYoB,GAAiB,SAASmJ,EAAO,EAAE,EAC/C,QAASA,EAAO,OAAO,WAAA,EACvB,UAAWA,EAAO,OAAO,aAAA,EACzB,QAASA,EAAO,OAAO,WAAA,EACvB,OAAQA,EAAO,OAAO,UAAA,EACtB,UAAWA,EAAO,OAAO,aAAA,EACzB,aAAAjP,EACA,YAAAkP,EACA,aAAAP,EACA,sBAAAC,CAAA,EAZKK,EAAO,EAAA,CAelB,CAAC,CAAA,CACH,EACC1F,EAECyC,wBAAC,MAAG,MAAO,CAAE,QAAS,OAAQ,MAAOzC,EAAoB,CAAG,EAC1D,IAAA,CAAA,EAlCoBiF,EAAY,EAmCtC,CAEJ,EAiBMW,GAAgB,CAAC,CACrB,OAAAF,EACA,UAAAvK,EACA,UAAA0K,EACA,QAAAC,EACA,QAAAC,EACA,OAAAC,EACA,UAAAC,EACA,WAAAC,EACA,aAAAzP,EACA,YAAAkP,EAAc,GACd,aAAAP,EACA,sBAAAC,CACF,IAA0B,CACxB,KAAM,CAAE,OAAAc,GAAWT,EACb3N,EAAUoO,EAAO,YAAA,EACjBC,EAAS,sBAAsBD,EAAO,EAAE,GACxC,CAAE,SAAAE,CAAA,EAAaC,kBAAA,EACfC,EAASF,IAAaD,EACtB,CAAE,cAAAzO,EAAe,QAAS6O,EAAc,cAAAC,CAAA,EAAkB5N,GAAAA,yBAAA,EAI1D6N,GAAmB,IAAM,CAC7B,MAAMC,EAAUH,GAAc,KAAM1I,GAAMA,EAAE,KAAOqI,EAAO,EAAE,EACtDS,EAAQD,EAETA,EAAQ,KAET,CAAA,EADA,CAAC,CAAE,GAAIR,EAAO,GAAI,KAAM,EAAA,CAAM,EAF9B,CAAC,CAAE,GAAIA,EAAO,GAAI,KAAM,EAAA,CAAO,EAInCM,EAAcG,CAAI,CACpB,EAGMC,EAAqBlP,EAAc,MAAM,SAASwO,EAAO,EAAE,GAAK,GAGhE,CAAE,WAAAW,GAAY,UAAAC,EAAW,WAAAC,EAAY,UAAAC,EAAW,WAAAC,EAAY,WAAAC,CAAA,EAAeC,eAAY,CAC3F,GAAIjB,EAAO,GACX,KAAM,CAAE,KAAM,SAAU,SAAUU,CAAA,EAClC,SAAU,CAAClB,CAAA,CACZ,EAEK0B,EAA0BjC,GAAgBC,IAA0BwB,EAGpES,EAAe,IAAqB,CACxC,GAAIH,EACF,MAAO,CACL,UAAWI,GAAAA,IAAI,UAAU,SAASN,CAAU,EAC5C,WAAAC,EACA,WAAY,SACZ,OAAQ,GAAA,EAGZ,GAAIG,GAA2BJ,EAAW,CAExC,MAAMO,EAAiBX,EACnB,CAAE,SAAU,WAAqB,KAAM,MAAA,EACvC,CAAA,EACJ,MAAO,CAAE,UAAWU,GAAAA,IAAI,UAAU,SAASN,CAAS,EAAG,WAAAC,EAAY,GAAGM,CAAA,CACxE,CACA,MAAO,CAAA,CACT,EAGMC,EAAyB,CAC7B,cAAgBvF,GAA0BA,EAAE,gBAAA,EAC5C,YAAcA,GAAwBA,EAAE,gBAAA,CAAgB,EAG1D,OACEO,EAAAA,kBAAAA,IAACoC,EAAAA,WAAA,CACC,IAAKmC,EACL,UAAWlE,EAAK4C,EAAO,GAAI,eAAgB,CACzC,QAASvK,EACT,mBAAoBgL,EAAO,YAAA,IAAkB,QAAUA,EAAO,gBAAgB,MAAM,EACpF,SAAUA,EAAO,cAAA,EACjB,SAAUgB,EACV,UAAWxB,CAAA,CACZ,EAED,MAAO,CACL,GAAG3B,EAAAA,uBAAuBmC,CAAM,EAChC,MAAOlC,EAAAA,eAAekC,EAAO,EAAE,EAC/B,GAAGmB,EAAA,CAAa,EAGjB,SAAA5B,EAAO,cAAgB,KACtB/C,EAAAA,kBAAAA,KAACmC,EAAAA,iBAAA,CACC,UAAWhC,EAAK,OAAQ,QAAQ,EAC/B,GAAI6C,EAAc,CAAE,GAAGmB,GAAY,GAAGC,CAAA,EAAc,CAAA,EAEpD,SAAA,CAAAhC,EAAAA,WAAWoB,EAAO,UAAU,OAAQT,EAAO,YAAY,EACvDQ,GACCzD,EAAAA,kBAAAA,IAAC0B,QAAA,CAAK,KAAK,OAAO,eAAc,gDAAiD,EAGnFxB,yBAAC+E,EAAAA,cAAA,CAAqB,UAAU,UAAU,QAASnB,EAAS,GAAGkB,EAG3D,SAAA,EAAA3B,GAAWE,GAAUD,IACrBtD,EAAAA,kBAAAA,IAACkF,GAAAA,iBAAA,CACC,UAAU,cACV,OAAAjC,EACA,QAAAI,EACA,OAAAE,EACA,QAAAD,EACA,WAAYI,EAAO,cAAA,EACnB,OAAAC,EACA,OAAAG,CAAA,CAAA,EAKHR,GACCtD,EAAAA,kBAAAA,IAACmF,GAAA,CACC,KAAK,OACL,UAAW9E,EAAK,cAAe,CAAE,QAAS/K,EAAS,EACnD,MAAO,CACL,UAAWA,IAAY,OAAS,4BAA8B,MAAA,EAEhE,QAAS2O,GACT,SAAU,CAAC,CAACP,EAAO,YAAA,CAAY,CAAA,EAKlCA,EAAO,eACNA,EAAO,KAAOzI,EAAAA,yBACdyI,EAAO,KAAOhI,EAAAA,uBACZsE,EAAAA,kBAAAA,IAACmF,GAAA,CACC,KAAK,WACL,UAAW9E,EAAK,aAAc,SAAS,EACvC,QAAS,IAAMqD,EAAO,IAAI,EAAK,EAC/B,SAAQ,EAAA,CAAA,CACV,EAEN,EACCF,GACCxD,EAAAA,kBAAAA,IAACoF,EAAAA,eAAA,CAEG,cAAe,IAAM1B,EAAO,UAAA,EAC5B,YAAcjE,GAAwB,CACpCA,EAAE,gBAAA,EACFwD,EAAO,iBAAA,EAAmBxD,CAAC,CAC7B,EACA,aAAcwD,EAAO,iBAAA,EACrB,cAAgBxD,GAA0BA,EAAE,gBAAA,EAC5C,UAAWY,EAAK,gBAAiB,CAC/B,SAAUqD,EAAO,cAAA,CAAc,CAChC,CACH,CAAA,CACF,CAAA,CAAA,CAEJ,EA1EGT,EAAO,EAAA,CA8ElB,EAyBM1C,GAAY,CAAC,CACjB,kBAAAlD,EACA,MAAAjB,EACA,kBAAAjD,EACA,cAAA9B,EACA,mBAAAiG,EACA,oBAAAC,EACA,QAAA8H,EACA,UAAA/R,EACA,YAAA8L,EACA,aAAApL,EACA,MAAA8C,EACA,cAAekB,EACf,mBAAAE,EACA,UAAAQ,EACA,WAAAX,EACA,aAAA+G,EACA,iBAAAC,EACA,YAAArH,EACA,iBAAA4N,EACA,oBAAAxQ,CACF,IAAsB,CACpB,MAAMyQ,GAAetM,EAAAA,QAAQ,IACRmD,EAAM,cAAA,EAEtB,IAAKJ,GAAQ,CACZ,MAAMwJ,EAAWxJ,EAAI,GACfiH,EAASjH,EAAI,UAAU,OAC7B,OAAI,OAAOiH,GAAW,UAAY,OAAOA,GAAW,SAC3C,CAAE,MAAOA,EAAQ,GAAIuC,CAAA,EAEvB,IACT,CAAC,EACA,OAAO,OAAO,EAGhB,CAACpJ,EAAM,cAAA,CAAe,CAAC,EASpBqJ,GAPsBC,GAAmB,CAC7C,QAAAL,EACA,UAAA/R,EACA,aAAAiS,GACA,iBAAAD,CAAA,CACD,EAEsD,2BAEjD,CAAE,KAAAxI,CAAA,EAASV,EAAM,YAAA,EAEjBuJ,EAAiBC,GAAAA,eAAoD,CACzE,MAAO9I,EAAK,OACZ,aAAe+I,GAAU,CAEvB,MAAMvJ,EAAMQ,EAAK+I,CAAK,EACtB,OAAOvJ,EAAMwC,EAAaxC,EAAI,QAAQ,EAAIyC,CAC5C,EACA,iBAAkB,IAAM5F,EAAkB,QAE1C,eACE,OAAO,OAAW,KAAe,UAAU,UAAU,QAAQ,SAAS,IAAM,GACvE2M,GAAYA,GAAS,sBAAA,EAAwB,OAC9C,OACN,SAAU,CAAA,CACX,EAEKC,EAAcJ,EAAe,gBAAA,EAM7BK,EAAuB5M,EAAAA,OAAe,EAAE,EAC9CuC,EAAAA,UAAU,IAAM,CACd,GAAI,CAAC7G,EAAqB,OAE1B,MAAM8G,EAAMmK,EACT,IAAKE,GAAenJ,EAAKmJ,EAAW,KAAK,GAAKC,GAAAA,WAAWpJ,EAAKmJ,EAAW,KAAK,EAAE,EAAE,CAAC,EACnF,OAAO,OAAO,EACXE,EAAY,MAAM,KAAK,IAAI,IAAIvK,CAAG,CAAC,EACnCwK,EAAMD,EAAU,KAAK,GAAG,EAE1BC,IAAQJ,EAAqB,UACjCA,EAAqB,QAAUI,EAE/BtR,EAAoBqR,CAAS,EAC/B,EAAG,CAACJ,EAAajJ,EAAMhI,CAAmB,CAAC,EAG3C,MAAMuR,EAAoBhM,EAAAA,YACvBiM,GAAqC,CAChCA,GACFX,EAAe,eAAeW,CAAI,CAEtC,EACA,CAACX,CAAc,CAAA,EAGjBY,GAAA,EAIA,MAAMC,EAAqBpK,EAAM,sBAAA,EAC3BqK,EAAqBxN,EAAAA,QAAQ,IAAM,CACvC,MAAMyN,EAAkB,CAAA,EAClBC,EAAqB,CAAA,EAC3B,QAASC,EAAI,EAAGA,EAAIJ,EAAmB,OAAS,EAAGI,IAAK,CACtD,MAAMlD,EAAS8C,EAAmBI,CAAC,EAEnCD,EAAS,KAAKjD,EAAO,KAAOzI,EAAAA,wBAA0B,KAAO,aAAayI,EAAO,EAAE,QAAQ,EAC3FgD,EAAM,KAAK,SAASC,EAAS,KAAK,KAAK,CAAC,UAAU,CACpD,CACA,OAAOD,CACT,EAAG,CAACF,CAAkB,CAAC,EAEjBK,EACJ3G,EAAAA,kBAAAA,KAAC,QAAA,CACC,MAAO,CACL,UAAW,GAAGyF,EAAe,aAAA,CAAc,KAC3C,SAAU,WACV,QAAS,MAAA,EAEX,cAAeF,GAEf,SAAA,CAAAzF,wBAAC8G,EAAAA,eAAA,CAAsB,cAAW,GAC/B,SAAAL,EAAmB,IAAI,CAACM,EAAMH,IAC7B5G,wBAAC,OAAY,MAAO,CAAE,KAAA+G,IAAZH,CAAoB,CAC/B,EACH,EACCb,EAAY,IAAKE,GAAe,CAC/B,MAAM3J,EAAMQ,EAAKmJ,EAAW,KAAK,EAEjC,OAAK3J,EAKH0D,EAAAA,kBAAAA,IAACgH,GAAA,CAEC,IAAA1K,EACA,cAAAjF,EACA,aAAciF,EAAI,gBAAA,EAClB,eAAgBe,EAAkB,gBAAA,EAClC,YAAaC,EACb,aAAcC,EACd,OAAQ8I,EACR,UAAWJ,EAAW,MACtB,UAAWA,EAAW,MACtB,aAAAjS,EACA,WAAA+D,EACA,UAAW+G,EAAaxC,EAAI,QAAQ,CAAA,EAZ/BA,EAAI,EAAA,GALX,QAAQ,KAAK,4CAA6C2J,EAAW,KAAK,EACnE,KAmBX,CAAC,CAAA,CAAA,CAAA,EAIL,OAAInP,EAEAqC,EAAkB,SAClB4H,GAAAA,aACEf,EAAAA,kBAAAA,IAACiH,EAAAA,yBAAA,CACE,SAAAjP,2BACEkP,oBAAA,CAAiB,QAAShP,EAAoB,KAAK,iBACjD,SAAA,CAAAR,GACCsI,EAAAA,kBAAAA,IAACmH,GAAAA,OAAA,CACC,QAAQ,SACR,MAAM,gBACN,KAAK,SACL,QAASzP,CAAA,CAAA,EAGbsI,EAAAA,kBAAAA,IAACoH,GAAAA,mBAAA,CAAmB,aAAcC,GAAAA,yBAAyBvQ,CAAK,CAAA,CAAG,CAAA,EACrE,EAEAkJ,wBAACkH,GAAAA,iBAAA,CAAiB,QAAQ,iBAAiB,MAAApQ,EACxC,SAAAY,GACCsI,EAAAA,kBAAAA,IAACmH,GAAAA,OAAA,CACC,QAAQ,SACR,MAAM,gBACN,KAAK,SACL,QAASzP,CAAA,CAAA,EAGf,CAAA,CAEJ,EACAyB,EAAkB,OAAA,EAKpB,CAAC2D,EAAK,QAAU,CAACpE,EAEjBS,EAAkB,SAClB4H,GAAAA,aACEf,EAAAA,kBAAAA,IAACiH,EAAAA,yBAAA,CACC,iCAACC,GAAAA,iBAAA,CAAiB,QAAQ,iBACvB,SAAAxP,GACCsI,EAAAA,kBAAAA,IAACmH,WAAO,QAAQ,SAAS,MAAM,gBAAgB,KAAK,SAAS,QAASzP,EAAa,EAEvF,CAAA,CACF,EACAyB,EAAkB,OAAA,EAKpBnF,0BAEC8O,mBAAA,CAAgB,MAAO1D,EAAa,SAAUkI,GAAAA,4BAC5C,SAAAT,EACH,EAGKA,CAEX,EAiBMG,GAAe,CAAC,CACpB,IAAA1K,EACA,cAAAjF,EACA,aAAAkQ,EACA,eAAA7E,EACA,YAAA8E,EACA,aAAAC,EACA,OAAAC,EACA,UAAAC,EACA,UAAAC,EACA,aAAA5T,EACA,WAAA+D,EAAa,GACb,UAAA8P,CACF,IAAyB,CACvB,MAAMC,EAAW9T,EAAe2Q,eAAY,CAAE,GAAIrI,EAAI,EAAA,CAAI,EAAI,KAGxDyL,EAAoB3O,EAAAA,OAAmC,IAAI,EAE3D4O,EAAc3N,EAAAA,YACjBiM,GAAqC,CACpCyB,EAAkB,QAAUzB,EACxBwB,GACFA,EAAS,WAAWxB,CAAI,EAIpBwB,GAAYA,EAAS,YACzBJ,EAAOpB,CAAI,CAEf,EACA,CAACwB,EAAUJ,CAAM,CAAA,EAIbO,EAAuB,CAC3B,SAAU,WACV,IAAKL,EACL,KAAM,EACN,MAAO,EACP,OAAQC,EACR,OAAQC,GAAYA,EAAS,WAAa,EAAI,EAC9C,QAAS,OACT,UACEA,GAAYA,EAAS,UAAYhD,GAAAA,IAAI,UAAU,SAASgD,EAAS,SAAS,EAAI,OAChF,WAAYA,GAAYA,EAAS,WAAaA,EAAS,WAAa,OACpE,WAAYA,GAAYA,EAAS,WAAa,SAAW,SAAA,EAG3D,OACE5H,EAAAA,kBAAAA,KAACiB,EAAAA,GAAA,CACC,IAAK6G,EACL,aAAYL,EACZ,MAAAM,EACA,UAAW5H,EAAK,CAAE,YAAa/D,EAAI,SAAS,MAAO,EAElD,SAAA,CAAAkL,EAECxH,wBAAC,MAAG,MAAO,CAAE,QAAS,OAAQ,MAAOwH,EAAY,CAAG,EAClD,KACH9E,EAAe,IAAKtB,GAAO,CAC1B,MAAMC,EAAOkG,EAAanG,EAAG,KAAK,EAClC,GAAI,CAACC,EAAM,OAAO,KAElB,MAAMxG,EAAS+G,GAAAA,UAAUtF,EAAI,GAAI+E,EAAK,OAAO,EAAE,EAE/C,OAAIA,EAAK,OAAO,KAAO3F,wBAEnBsE,EAAAA,kBAAAA,IAACyB,EAAAA,GAAA,CAEC,MAAO,CACL,GAAGF,EAAAA,uBAAuBF,EAAK,MAAM,EACrC,MAAOG,EAAAA,eAAeH,EAAK,OAAO,EAAE,EACpC,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,OAAQwG,EACR,cAAe,MACf,OAAQ,MAAA,EAEV,UAAWxH,EAAKgB,EAAK,OAAO,GAAI,CAC9B,mBACEA,EAAK,OAAO,YAAA,IAAkB,QAAUA,EAAK,OAAO,gBAAgB,MAAM,CAAA,CAC7E,EACD,YAAc5B,GAAMA,EAAE,gBAAA,EACtB,YAAcA,GAAMA,EAAE,gBAAA,EACtB,cAAgBA,GAAMA,EAAE,gBAAA,EACxB,cAAgBA,GAAM,CACpBA,EAAE,eAAA,EACFA,EAAE,gBAAA,CACJ,EAEA,SAAAO,EAAAA,kBAAAA,IAACkI,GAAA,CACC,WAAYJ,GAAU,WACtB,UAAWA,GAAU,SAAA,CAAA,CACvB,EA1BKzG,EAAK,EAAA,EA+BdrB,EAAAA,kBAAAA,IAAC2B,GAAA,CACC,KAAAN,EACA,OAAAxG,EACA,MAAOyB,EAAI,GAEX,cAAAjF,EACA,aAAArD,EACA,UAAA6T,CAAA,EAHKxG,EAAK,EAAA,CAMhB,CAAC,EAEAoG,EAECzH,wBAAC,MAAG,MAAO,CAAE,QAAS,OAAQ,MAAOyH,EAAa,CAAG,EACnD,IAAA,CAAA,CAAA,CAGV,EAYM9F,GAAK,CAAC,CACV,KAAAN,EACA,MAAAtG,EACA,OAAAF,EACA,UAAAsN,EACA,cAAA9Q,EACA,aAAArD,EACA,UAAA6T,EACA,GAAG7S,CACL,IAAsB,CACpB,KAAM,CAAE,cAAAyC,EAAe,aAAA2Q,CAAA,EAAiBtQ,0BAAA,EAElC,CACJ,eAAAuQ,EACA,cAAAC,EACA,eAAAC,EACA,gBAAAC,EACA,aAAAC,EACA,WAAAC,EACA,UAAAC,EACA,qBAAAC,EACA,eAAAC,EACA,cAAA5O,EACA,iBAAA6O,GACA,cAAAC,EACA,iBAAAC,EAAA,EACEzP,4BAAA,EAEE,CAAE,cAAA0P,CAAA,EAAkBC,0BAAA,EAEpB,CAAE,UAAAC,EAAW,iBAAAC,EAAkB,cAAAC,CAAA,EAAkBlP,GAAAA,eAAA,EAEjDmP,EAAgBV,EAAqB/N,CAAM,EAG3C0O,EADWlI,EAAK,OAAO,YAAA,IACe,QAAUA,EAAK,OAAO,gBAAgB,MAAM,EAClFmI,EAAuBnI,EAAK,OAAO,KAAOpG,EAAAA,wBAC1CwO,EAAUpI,EAAK,IAAI,SAAS,aAAe,QAC3CqI,EAAqBzP,EAAc,KAAO,EAEhD,OACE+F,EAAAA,kBAAAA,IAACyB,EAAAA,GAAA,CACE,GAAGzM,EACJ,SAAU,EACV,cAAeuU,EACf,UAAWlJ,EACTgB,EAAK,OAAO,GACZ,CACE,SAAUgH,EAAexN,CAAM,EAC/B,QAASyN,EAAczN,CAAM,EAC7B,QAASsO,EAAUtO,CAAM,EACzB,mBAAoB0O,EACpB,eAAgBN,EAAclO,CAAK,EACnC,WACE,CAAC,CAACsG,EAAK,IAAI,iBAAmBsI,GAAAA,mBAAmBtI,EAAK,IAAI,SAAS,UAAU,EAC/E,oBAAqBqI,CAAA,EAEvBvB,EACA,GAAGmB,CAAA,EAEL,MAAO,CACL,GAAG/H,EAAAA,uBAAuBF,EAAK,MAAM,EACrC,MAAOG,EAAAA,eAAeH,EAAK,OAAO,EAAE,EACpC,OAAQwG,CAAA,EAEV,YAAcpI,GAAM,CAElB,GAAIA,EAAE,SAAW,EAAG,OAEpB,MAAMmK,EAASnK,EAAE,OAMjB,GAHImK,EAAO,QAAQ,WAAW,GAG1BA,EAAO,QAAQ,UAAU,EAAG,OAQhC,GANAnK,EAAE,cAAc,MAAA,EAMZA,EAAE,SAAW,EAAG,CAGlB,GADmBoK,GAAAA,iBAAiBpK,CAAC,GAAK4B,EAAK,OAAO,KAAO,YAC3CyI,GAAAA,mBAAmBzI,EAAK,IAAI,SAAS,UAAU,GAAKoI,EAAS,CAC7EhK,EAAE,eAAA,EACF,MACF,CAIA,GAAI,CAAC,OAAQ,UAAU,EAAE,SAAS4B,EAAK,OAAO,EAAE,GAAK,CAACuI,EAAO,QAAQ,WAAW,EAAG,CAE7EvI,EAAK,OAAO,KAAO,YAAY0I,GAAAA,2BAA2B,WAAY,MAAM,EAChF,MAAMC,EAAqBpI,GAAAA,UAAUP,EAAK,IAAI,GAAIpG,EAAAA,uBAAuB,EACnEgP,GAAWxK,EAAE,SAAWA,EAAE,QAC1ByK,GAAWlP,GAAAA,YAAYgP,CAAkB,EAE/ClB,GAAkBqB,IAAS,CACzB,MAAMC,GAAeH,GAAW,IAAI,IAAIE,EAAI,MAAQ,IACpD,OAAAC,GAAa,IAAIJ,CAAkB,EACnCI,GAAa,IAAIvP,CAAM,EAChBuP,EACT,CAAC,EACGF,KACFnB,EAAcmB,EAAQ,EACtBlB,GAAiBgB,CAAkB,EAEvC,SAES3I,EAAK,OAAO,KAAO,aAC1B,GAAI+G,EAAc,CAChB,MAAM9N,EAAS7C,EAAc4J,EAAK,IAAI,SAAS,UAAYA,EAAK,IAAI,EAAE,EACtE,GAAI/G,EAAQ,CACV,MAAM+P,GAAYC,GAAAA,oBAAoBhQ,CAAM,EAC5C8N,EAAaiC,GAAW,CAAE,UAAW,EAAA,CAAM,CAC7C,CACF,OAIAjB,EAAiBvO,CAAM,EAGzB4E,EAAE,eAAA,EACF,MACF,CAGA,GAAIgK,GAAWpI,EAAK,OAAO,KAAO,cAAewH,EAAA,EAGjD,MAAM0B,EAAeT,GAAAA,mBAAmBzI,EAAK,IAAI,SAAS,UAAU,EAGpE,GAAIuI,EAAO,QAAQ,IAAMY,GAAAA,kBAAkB,GAAK,CAACD,EAAc,CAExDlC,EAAexN,CAAM,IACxB6N,EAAW7N,EAAQ,GAAO,EAAK,EAC/B8N,EAAU9N,CAAM,GAElBuO,EAAiBvO,CAAM,EACvB,MACF,CAGA,GAAIwO,GAAiBA,IAAkBxO,EAAQ,CAE7C,MAAM4P,EAAe,SAAS,cAC5B,IAAIpB,CAAa,YAAYA,CAAa,mBAAA,EAE5C,GAAIoB,EAAc,CAChBA,EAAa,KAAA,EAEb,WAAW,IAAM,CACfC,GAAA,CACF,EAAG,CAAC,EACJ,MACF,CACF,CAEAA,GAAA,EAEA,SAASA,IAAuB,CAC9B,MAAMT,EAAWxK,EAAE,SAAWA,EAAE,SAAW+J,EACvC/J,EAAE,SAEJiJ,EAAW7N,EAAQoP,EAAU,EAAI,EAEjC1B,EAAe1N,EAAQoP,CAAQ,EAIjCxK,EAAE,eAAA,CACJ,CACF,EACA,YAAcA,GAAM,CAClB,GAAIA,EAAE,UAAY,EAAG,CAGnB,GADeA,EAAE,OACN,QAAQ,IAAM+K,GAAAA,kBAAkB,EAAG,OAK9ChC,EAAgB3N,EAAQ2O,CAAoB,CAC9C,CACF,EACA,UAAW,IAAM,CACff,EAAa5N,CAAM,CACrB,EACA,cAAgB4E,GAAM,CAGpBA,EAAE,eAAA,CACJ,EACA,cAAgBA,GAAM,CACpBA,EAAE,eAAA,EAEG4I,EAAexN,CAAM,GACxB6N,EAAW7N,EAAQ,GAAO,EAAK,CAEnC,EACA,UAAW,IAAM,CAEjB,EAEC,sBAAWwG,EAAK,OAAO,UAAU,KAAMA,EAAK,YAAY,CAAA,CAAA,CAG/D"}