@ynput/ayon-frontend-shared 0.2.36 → 0.2.37

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 (486) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +23 -22
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/Views.cjs.js +1 -1
  5. package/dist/Views.cjs.js.map +1 -1
  6. package/dist/Views.es.js +25 -24
  7. package/dist/Views.es.js.map +1 -1
  8. package/dist/_virtual/index.cjs2.js +1 -1
  9. package/dist/_virtual/index.cjs3.js +1 -1
  10. package/dist/_virtual/index.cjs5.js +1 -1
  11. package/dist/_virtual/index.es2.js +2 -5
  12. package/dist/_virtual/index.es2.js.map +1 -1
  13. package/dist/_virtual/index.es3.js +5 -2
  14. package/dist/_virtual/index.es3.js.map +1 -1
  15. package/dist/_virtual/index.es4.js +2 -2
  16. package/dist/_virtual/index.es5.js +2 -2
  17. package/dist/context.cjs.js +1 -1
  18. package/dist/context.es.js +19 -16
  19. package/dist/context.es.js.map +1 -1
  20. package/dist/index.cjs.js +1 -1
  21. package/dist/index.es.js +10 -9
  22. package/dist/index.es.js.map +1 -1
  23. package/dist/node_modules/react-use-websocket/dist/index.cjs.js +1 -1
  24. package/dist/node_modules/react-use-websocket/dist/index.es.js +1 -1
  25. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  26. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  27. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  28. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  29. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  30. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  31. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  32. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  33. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  34. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  35. package/dist/shared/src/api/generated/actions.cjs.js.map +1 -1
  36. package/dist/shared/src/api/generated/actions.es.js.map +1 -1
  37. package/dist/shared/src/api/generated/attributes.cjs.js.map +1 -1
  38. package/dist/shared/src/api/generated/attributes.es.js.map +1 -1
  39. package/dist/shared/src/api/generated/authentication.cjs.js.map +1 -1
  40. package/dist/shared/src/api/generated/authentication.es.js.map +1 -1
  41. package/dist/shared/src/api/generated/configuration.cjs.js.map +1 -1
  42. package/dist/shared/src/api/generated/configuration.es.js.map +1 -1
  43. package/dist/shared/src/api/generated/entityLists.cjs.js +1 -1
  44. package/dist/shared/src/api/generated/entityLists.cjs.js.map +1 -1
  45. package/dist/shared/src/api/generated/entityLists.es.js +88 -84
  46. package/dist/shared/src/api/generated/entityLists.es.js.map +1 -1
  47. package/dist/shared/src/api/generated/graphql.cjs.js +22 -20
  48. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  49. package/dist/shared/src/api/generated/graphql.es.js +34 -32
  50. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  51. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  52. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  53. package/dist/shared/src/api/generated/onboarding.cjs.js.map +1 -1
  54. package/dist/shared/src/api/generated/onboarding.es.js.map +1 -1
  55. package/dist/shared/src/api/generated/products.cjs.js.map +1 -1
  56. package/dist/shared/src/api/generated/products.es.js.map +1 -1
  57. package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
  58. package/dist/shared/src/api/generated/projects.es.js.map +1 -1
  59. package/dist/shared/src/api/generated/system.cjs.js +1 -1
  60. package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
  61. package/dist/shared/src/api/generated/system.es.js +3 -0
  62. package/dist/shared/src/api/generated/system.es.js.map +1 -1
  63. package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
  64. package/dist/shared/src/api/generated/users.es.js.map +1 -1
  65. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  66. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  67. package/dist/shared/src/api/generated/ynputCloud.cjs.js +1 -1
  68. package/dist/shared/src/api/generated/ynputCloud.cjs.js.map +1 -1
  69. package/dist/shared/src/api/generated/ynputCloud.es.js +6 -1
  70. package/dist/shared/src/api/generated/ynputCloud.es.js.map +1 -1
  71. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  72. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  73. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  74. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  75. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  76. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  77. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +129 -122
  78. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  79. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  80. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  81. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +3 -2
  82. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  83. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  84. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  85. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +3 -2
  86. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  87. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.cjs.js +1 -1
  88. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.cjs.js.map +1 -1
  89. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.es.js +23 -9
  90. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityData.es.js.map +1 -1
  91. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  92. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  93. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +5 -4
  94. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  95. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  96. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  97. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +3 -2
  98. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  99. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  100. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  101. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +6 -5
  102. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  103. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  104. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  105. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +118 -112
  106. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  107. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  108. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  109. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +3 -2
  110. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  111. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  112. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  113. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +3 -2
  114. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  115. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  116. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  117. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +8 -7
  118. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  119. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  120. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  121. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +3 -2
  122. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  123. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  124. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  125. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +18 -17
  126. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  127. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  128. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  129. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -2
  130. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  131. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  132. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  133. package/dist/shared/src/components/RenameForm/RenameForm.es.js +3 -2
  134. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  135. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  136. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  137. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +3 -2
  138. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  139. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  140. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  141. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +4 -3
  142. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  143. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  144. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  145. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +3 -2
  146. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  147. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  148. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  149. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +263 -210
  150. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  151. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  152. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  153. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +24 -23
  154. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  155. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  156. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  157. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +3 -2
  158. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  159. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  160. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  161. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +3 -2
  162. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  163. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  164. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  165. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +3 -2
  166. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  167. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  168. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  169. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +3 -2
  170. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  171. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  172. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  173. package/dist/shared/src/containers/Actions/Actions.es.js +3 -2
  174. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  175. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  176. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +3 -2
  178. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  179. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  180. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  181. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +61 -57
  182. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  183. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  184. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  185. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +3 -2
  186. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  187. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  188. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  189. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +58 -55
  190. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  191. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  192. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  193. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +3 -2
  194. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  195. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  196. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  197. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
  198. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  199. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js +1 -1
  200. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js.map +1 -1
  201. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js +3 -2
  202. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js.map +1 -1
  203. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +1 -1
  204. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
  205. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +33 -30
  206. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js.map +1 -1
  207. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  208. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  209. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +16 -15
  210. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  211. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  212. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  213. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +3 -2
  214. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  215. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  216. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  217. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +3 -2
  218. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  219. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  220. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  221. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +3 -2
  222. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  223. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  224. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  225. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +3 -2
  226. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  227. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  228. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  229. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +3 -2
  230. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  231. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  232. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  233. package/dist/shared/src/containers/Feed/Feed.es.js +4 -3
  234. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  235. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  236. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  237. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +3 -2
  238. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  239. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  240. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  241. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +8 -7
  242. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  243. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  244. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  245. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +3 -2
  246. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  247. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  248. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  249. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +3 -2
  250. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  251. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  252. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  253. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +9 -8
  254. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  255. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  256. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  257. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +3 -2
  258. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  259. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  260. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  261. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +3 -2
  262. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  263. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  264. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  265. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +45 -42
  266. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  268. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  269. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +289 -283
  270. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  272. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +4 -3
  274. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  276. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  277. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +3 -2
  278. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  279. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  280. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  281. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +3 -2
  282. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  283. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  284. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  285. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +3 -2
  286. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  287. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  288. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  289. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +3 -2
  290. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  291. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  292. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  293. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +25 -90
  294. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  295. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  296. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  297. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +6 -5
  298. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  299. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  300. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  301. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +3 -2
  302. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  303. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  304. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +3 -2
  306. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  307. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  308. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +3 -2
  310. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  311. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  312. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +3 -2
  314. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  316. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +3 -2
  318. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  319. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  320. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  321. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +22 -21
  322. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  323. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  324. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  325. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +19 -16
  326. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  327. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  328. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  329. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +3 -2
  330. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  331. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  332. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  333. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +3 -2
  334. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  335. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  336. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  337. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +3 -2
  338. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  339. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  340. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +3 -2
  342. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  343. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  344. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  345. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +14 -13
  346. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  347. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  348. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  349. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +38 -37
  350. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  351. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  352. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  353. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +5 -4
  354. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  355. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  356. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  357. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +3 -2
  358. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  359. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  360. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  361. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +3 -2
  362. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  363. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  364. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  365. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +3 -2
  366. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  367. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  368. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  369. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +3 -2
  370. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  371. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  372. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  373. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +7 -6
  374. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  375. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  376. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  377. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +26 -25
  378. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  379. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  380. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  381. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +3 -2
  382. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  383. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
  384. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  385. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +3 -2
  386. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  387. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  388. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  389. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +9 -9
  390. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  391. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  392. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  393. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +40 -35
  394. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  395. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  396. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  397. package/dist/shared/src/context/AddonProjectContext.es.js +8 -7
  398. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  399. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  400. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  401. package/dist/shared/src/context/DetailsPanelContext.es.js +77 -78
  402. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  403. package/dist/shared/src/context/GlobalContext.cjs.js +2 -0
  404. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -0
  405. package/dist/shared/src/context/GlobalContext.es.js +123 -0
  406. package/dist/shared/src/context/GlobalContext.es.js.map +1 -0
  407. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  408. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  409. package/dist/shared/src/context/PowerpackContext.es.js +7 -6
  410. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  411. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  412. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  413. package/dist/shared/src/context/RemoteModulesContext.es.js +35 -34
  414. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  415. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  416. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  417. package/dist/shared/src/context/WebsocketContext.es.js +5 -4
  418. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  419. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  420. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  421. package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
  422. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  423. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  424. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  425. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +3 -2
  426. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  427. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  428. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  429. package/dist/shared/src/hooks/useUserProjectConfig.es.js +26 -12
  430. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  431. package/dist/src/components/Menu/MenuComponents/Menu.cjs.js +1 -1
  432. package/dist/src/components/Menu/MenuComponents/Menu.cjs.js.map +1 -1
  433. package/dist/src/components/Menu/MenuComponents/Menu.es.js +3 -2
  434. package/dist/src/components/Menu/MenuComponents/Menu.es.js.map +1 -1
  435. package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js +1 -1
  436. package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js.map +1 -1
  437. package/dist/src/components/Menu/MenuComponents/MenuItem.es.js +1 -0
  438. package/dist/src/components/Menu/MenuComponents/MenuItem.es.js.map +1 -1
  439. package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js +1 -1
  440. package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js.map +1 -1
  441. package/dist/src/components/Menu/MenuComponents/MenuList.es.js +17 -16
  442. package/dist/src/components/Menu/MenuComponents/MenuList.es.js.map +1 -1
  443. package/dist/types/api/generated/actions.d.ts +2 -0
  444. package/dist/types/api/generated/attributes.d.ts +20 -5
  445. package/dist/types/api/generated/authentication.d.ts +2 -0
  446. package/dist/types/api/generated/configuration.d.ts +3 -1
  447. package/dist/types/api/generated/entityLists.d.ts +22 -5
  448. package/dist/types/api/generated/enums.d.ts +36 -0
  449. package/dist/types/api/generated/graphql.d.ts +9 -2
  450. package/dist/types/api/generated/graphqlLinks.d.ts +3 -0
  451. package/dist/types/api/generated/onboarding.d.ts +1 -0
  452. package/dist/types/api/generated/products.d.ts +9 -3
  453. package/dist/types/api/generated/projects.d.ts +4 -4
  454. package/dist/types/api/generated/system.d.ts +27 -5
  455. package/dist/types/api/generated/users.d.ts +2 -0
  456. package/dist/types/api/generated/views.d.ts +48 -5
  457. package/dist/types/api/generated/ynputCloud.d.ts +7 -20
  458. package/dist/types/api/queries/activities/getActivities.d.ts +2 -0
  459. package/dist/types/api/queries/activities/updateActivities.d.ts +4 -0
  460. package/dist/types/api/queries/cloud/cloud.d.ts +17 -17
  461. package/dist/types/api/queries/entities/getEntity.d.ts +2 -0
  462. package/dist/types/api/queries/entities/getEntityPanel.d.ts +2 -0
  463. package/dist/types/api/queries/entities/updateEntity.d.ts +2 -0
  464. package/dist/types/api/queries/entityLists/getLists.d.ts +2 -0
  465. package/dist/types/api/queries/overview/getOverview.d.ts +2 -0
  466. package/dist/types/api/queries/system/getSystem.d.ts +85 -75
  467. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +2 -0
  468. package/dist/types/api/queries/users/getUsers.d.ts +43 -37
  469. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +20 -0
  470. package/dist/types/components/DetailsPanelDetails/hooks/useEntityData.d.ts +1 -1
  471. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
  472. package/dist/types/containers/DetailsPanel/FeedWrapper.d.ts +3 -0
  473. package/dist/types/containers/Feed/context/FeedContext.d.ts +4 -3
  474. package/dist/types/containers/ProjectTreeTable/hooks/useGroupBySettings.d.ts +1 -1
  475. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +2 -0
  476. package/dist/types/containers/Views/index.d.ts +1 -1
  477. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +6 -10
  478. package/dist/types/context/DetailsPanelContext.d.ts +1 -2
  479. package/dist/types/context/GlobalContext.d.ts +25 -0
  480. package/dist/types/context/index.d.ts +1 -0
  481. package/package.json +1 -1
  482. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.cjs.js +0 -2
  483. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.cjs.js.map +0 -1
  484. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.es.js +0 -64
  485. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.es.js.map +0 -1
  486. package/dist/types/containers/Views/hooks/pages/useReportsViewSettings.d.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"RepresentationsList.cjs.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["columns","RepresentationsList","entities","representations","useMemo","versionsToRepresentations","showDetail","setShowDetail","useState","showDetailProjectName","_a","rep","selected","setSelected","data","groupResult","onRepSelectionChange","entityId","onRowClick","ctxMenuItems","id","ctxMenuShow","useCreateContextMenu","handleContextMenu","jsxs","Fragment","jsx","TablePanel","TreeTable","col","Column","DetailsDialog"],"mappings":"+jbAYA,MAAMA,EAAU,CACd,CACE,MAAO,OACP,OAAQ,OACR,MAAO,GACP,SAAU,EACZ,EACA,CACE,MAAO,aACP,OAAQ,SACR,MAAO,GACT,EACA,CACE,MAAO,cACP,OAAQ,UACR,MAAO,GACT,EACA,CACE,MAAO,eACP,OAAQ,cACR,MAAO,GAAA,CAEX,EAMaC,EAAsB,CAAC,CAAE,SAAAC,EAAW,CAAA,KAAgB,OAEzD,MAAAC,EAAkBC,EAAQ,QAAA,IAAMC,EAA0BH,CAAQ,GAAK,CAAC,EAAG,CAACA,CAAQ,CAAC,EAErF,CAACI,EAAYC,CAAa,EAAIC,EAAAA,SAAyB,EAAK,EAC5DC,GAAwBC,EAAAP,EAAgB,KAAMQ,GAAQA,EAAI,KAAOL,CAAU,IAAnD,YAAAI,EAAsD,YAE9E,CAACE,EAAUC,CAAW,EAAIL,EAAAA,SAAmB,CAAA,CAAE,EAE/CM,EAAOV,EAAAA,QAAQ,IAEZW,EAAA,YAAYZ,EAAiB,MAAM,EACzC,CAACA,CAAe,CAAC,EAEda,EAAwBC,GAAqB,CAErCJ,EAAA,CAACI,CAAQ,CAAC,CACxB,EAEMC,EAAc,GAAW,CACRF,EAAA,EAAE,KAAK,KAAK,EAAE,CACrC,EAEMG,EAAgBC,GAAe,CACnC,CACE,MAAO,wBACP,QAAS,IAAMb,EAAca,CAAE,EAC/B,KAAM,UAAA,CAEV,EAEM,CAACC,CAAW,EAAIC,EAAA,qBAAqB,EAAE,EAEvCC,EAAqB,GAAW,CAC9B,MAAAH,EAAK,EAAE,KAAK,KAAK,GAEnBA,IAEFJ,EAAqBI,CAAE,EAEvBC,EAAY,EAAE,cAAeF,EAAaC,CAAE,CAAC,EAEjD,EAEA,OAEII,EAAA,kBAAA,KAAAC,6BAAA,CAAA,SAAA,CAAAC,wBAACC,EAAAA,WACC,CAAA,SAAAD,EAAA,kBAAA,IAACE,EAAA,UAAA,CACC,WAAU,GACV,aAAa,OACb,MAAOd,EACP,aAAa,0BACb,cAAc,SACd,cAAeF,EAAS,CAAC,EACzB,WAAAM,EACA,cAAeK,EAEd,SAAAvB,EAAQ,IAAK6B,GAEVH,EAAA,kBAAA,IAACI,EAAA,OAAA,CAEC,MAAOD,EAAI,MACX,OAAQA,EAAI,OACZ,SAAUA,EAAI,SACd,MAAO,CAAE,MAAOA,EAAI,KAAM,CAAA,EAJrBA,EAAI,KAKX,CAEH,CAAA,CAAA,EAEL,EAECvB,GACCoB,EAAA,kBAAA,IAACK,EAAA,cAAA,CACC,YAAatB,EACb,WAAY,iBACZ,UAAW,CAACH,CAAU,EACtB,QAAS,CAAC,CAACA,EACX,OAAQ,IAAMC,EAAc,EAAK,CAAA,CAAA,CACnC,EAEJ,CAEJ"}
1
+ {"version":3,"file":"RepresentationsList.cjs.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["columns","RepresentationsList","entities","representations","useMemo","versionsToRepresentations","showDetail","setShowDetail","useState","showDetailProjectName","_a","rep","selected","setSelected","data","groupResult","onRepSelectionChange","entityId","onRowClick","ctxMenuItems","id","ctxMenuShow","useCreateContextMenu","handleContextMenu","jsxs","Fragment","jsx","TablePanel","TreeTable","col","Column","DetailsDialog"],"mappings":"6mbAYA,MAAMA,EAAU,CACd,CACE,MAAO,OACP,OAAQ,OACR,MAAO,GACP,SAAU,EACZ,EACA,CACE,MAAO,aACP,OAAQ,SACR,MAAO,GACT,EACA,CACE,MAAO,cACP,OAAQ,UACR,MAAO,GACT,EACA,CACE,MAAO,eACP,OAAQ,cACR,MAAO,GAAA,CAEX,EAMaC,EAAsB,CAAC,CAAE,SAAAC,EAAW,CAAA,KAAgB,OAEzD,MAAAC,EAAkBC,EAAQ,QAAA,IAAMC,EAA0BH,CAAQ,GAAK,CAAC,EAAG,CAACA,CAAQ,CAAC,EAErF,CAACI,EAAYC,CAAa,EAAIC,EAAAA,SAAyB,EAAK,EAC5DC,GAAwBC,EAAAP,EAAgB,KAAMQ,GAAQA,EAAI,KAAOL,CAAU,IAAnD,YAAAI,EAAsD,YAE9E,CAACE,EAAUC,CAAW,EAAIL,EAAAA,SAAmB,CAAA,CAAE,EAE/CM,EAAOV,EAAAA,QAAQ,IAEZW,EAAA,YAAYZ,EAAiB,MAAM,EACzC,CAACA,CAAe,CAAC,EAEda,EAAwBC,GAAqB,CAErCJ,EAAA,CAACI,CAAQ,CAAC,CACxB,EAEMC,EAAc,GAAW,CACRF,EAAA,EAAE,KAAK,KAAK,EAAE,CACrC,EAEMG,EAAgBC,GAAe,CACnC,CACE,MAAO,wBACP,QAAS,IAAMb,EAAca,CAAE,EAC/B,KAAM,UAAA,CAEV,EAEM,CAACC,CAAW,EAAIC,EAAA,qBAAqB,EAAE,EAEvCC,EAAqB,GAAW,CAC9B,MAAAH,EAAK,EAAE,KAAK,KAAK,GAEnBA,IAEFJ,EAAqBI,CAAE,EAEvBC,EAAY,EAAE,cAAeF,EAAaC,CAAE,CAAC,EAEjD,EAEA,OAEII,EAAA,kBAAA,KAAAC,6BAAA,CAAA,SAAA,CAAAC,wBAACC,EAAAA,WACC,CAAA,SAAAD,EAAA,kBAAA,IAACE,EAAA,UAAA,CACC,WAAU,GACV,aAAa,OACb,MAAOd,EACP,aAAa,0BACb,cAAc,SACd,cAAeF,EAAS,CAAC,EACzB,WAAAM,EACA,cAAeK,EAEd,SAAAvB,EAAQ,IAAK6B,GAEVH,EAAA,kBAAA,IAACI,EAAA,OAAA,CAEC,MAAOD,EAAI,MACX,OAAQA,EAAI,OACZ,SAAUA,EAAI,SACd,MAAO,CAAE,MAAOA,EAAI,KAAM,CAAA,EAJrBA,EAAI,KAKX,CAEH,CAAA,CAAA,EAEL,EAECvB,GACCoB,EAAA,kBAAA,IAACK,EAAA,cAAA,CACC,YAAatB,EACb,WAAY,iBACZ,UAAW,CAACH,CAAU,EACtB,QAAS,CAAC,CAACA,EACX,OAAQ,IAAMC,EAAc,EAAK,CAAA,CAAA,CACnC,EAEJ,CAEJ"}
@@ -116,6 +116,7 @@ import "../../context/PowerpackContext.es.js";
116
116
  import "../../context/MoveEntityContext.es.js";
117
117
  import "../../context/MenuContext.es.js";
118
118
  import "../../context/WebsocketContext.es.js";
119
+ import "../../context/GlobalContext.es.js";
119
120
  import "../../components/ReviewableCard/ReviewableCard.es.js";
120
121
  import "../../components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js";
121
122
  import "../../components/FileThumbnail/FileThumbnail.es.js";
@@ -263,7 +264,7 @@ const T = [
263
264
  header: "productType",
264
265
  width: 110
265
266
  }
266
- ], om = ({ entities: p = [] }) => {
267
+ ], rm = ({ entities: p = [] }) => {
267
268
  var s;
268
269
  const i = a(() => b(p) || [], [p]), [r, e] = d(!1), l = (s = i.find((t) => t.id === r)) == null ? void 0 : s.projectName, [c, u] = d([]), f = a(() => C(i, "name"), [i]), n = (t) => {
269
270
  u([t]);
@@ -316,6 +317,6 @@ const T = [
316
317
  ] });
317
318
  };
318
319
  export {
319
- om as RepresentationsList
320
+ rm as RepresentationsList
320
321
  };
321
322
  //# sourceMappingURL=RepresentationsList.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RepresentationsList.es.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["columns","RepresentationsList","entities","representations","useMemo","versionsToRepresentations","showDetail","setShowDetail","useState","showDetailProjectName","_a","rep","selected","setSelected","data","groupResult","onRepSelectionChange","entityId","onRowClick","e","ctxMenuItems","id","ctxMenuShow","useCreateContextMenu","handleContextMenu","jsxs","Fragment","jsx","TablePanel","TreeTable","col","Column","DetailsDialog"],"mappings":"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"}
1
+ {"version":3,"file":"RepresentationsList.es.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["columns","RepresentationsList","entities","representations","useMemo","versionsToRepresentations","showDetail","setShowDetail","useState","showDetailProjectName","_a","rep","selected","setSelected","data","groupResult","onRepSelectionChange","entityId","onRowClick","e","ctxMenuItems","id","ctxMenuShow","useCreateContextMenu","handleContextMenu","jsxs","Fragment","jsx","TablePanel","TreeTable","col","Column","DetailsDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAMA,IAAU;AAAA,EACd;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EAAA;AAEX,GAMaC,KAAsB,CAAC,EAAE,UAAAC,IAAW,CAAA,QAAgB;;AAEzD,QAAAC,IAAkBC,EAAQ,MAAMC,EAA0BH,CAAQ,KAAK,CAAC,GAAG,CAACA,CAAQ,CAAC,GAErF,CAACI,GAAYC,CAAa,IAAIC,EAAyB,EAAK,GAC5DC,KAAwBC,IAAAP,EAAgB,KAAK,CAACQ,MAAQA,EAAI,OAAOL,CAAU,MAAnD,gBAAAI,EAAsD,aAE9E,CAACE,GAAUC,CAAW,IAAIL,EAAmB,CAAA,CAAE,GAE/CM,IAAOV,EAAQ,MAEZW,EAAYZ,GAAiB,MAAM,GACzC,CAACA,CAAe,CAAC,GAEda,IAAuB,CAACC,MAAqB;AAErC,IAAAJ,EAAA,CAACI,CAAQ,CAAC;AAAA,EACxB,GAEMC,IAAa,CAACC,MAAW;AACR,IAAAH,EAAAG,EAAE,KAAK,KAAK,EAAE;AAAA,EACrC,GAEMC,IAAe,CAACC,MAAe;AAAA,IACnC;AAAA,MACE,OAAO;AAAA,MACP,SAAS,MAAMd,EAAcc,CAAE;AAAA,MAC/B,MAAM;AAAA,IAAA;AAAA,EAEV,GAEM,CAACC,CAAW,IAAIC,EAAqB,EAAE,GAEvCC,IAAoB,CAACL,MAAW;AAC9B,UAAAE,IAAKF,EAAE,KAAK,KAAK;AAEvB,IAAIE,MAEFL,EAAqBK,CAAE,GAEvBC,EAAYH,EAAE,eAAeC,EAAaC,CAAE,CAAC;AAAA,EAEjD;AAEA,SAEII,gBAAAA,EAAA,KAAAC,YAAA,EAAA,UAAA;AAAA,IAAAC,gBAAAA,MAACC,GACC,EAAA,UAAAD,gBAAAA,EAAA;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,YAAU;AAAA,QACV,cAAa;AAAA,QACb,OAAOf;AAAA,QACP,cAAa;AAAA,QACb,eAAc;AAAA,QACd,eAAeF,EAAS,CAAC;AAAA,QACzB,YAAAM;AAAA,QACA,eAAeM;AAAA,QAEd,UAAAxB,EAAQ,IAAI,CAAC8B,MAEVH,gBAAAA,EAAA;AAAA,UAACI;AAAA,UAAA;AAAA,YAEC,OAAOD,EAAI;AAAA,YACX,QAAQA,EAAI;AAAA,YACZ,UAAUA,EAAI;AAAA,YACd,OAAO,EAAE,OAAOA,EAAI,MAAM;AAAA,UAAA;AAAA,UAJrBA,EAAI;AAAA,QAKX,CAEH;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,IAECxB,KACCqB,gBAAAA,EAAA;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,aAAavB;AAAA,QACb,YAAY;AAAA,QACZ,WAAW,CAACH,CAAU;AAAA,QACtB,SAAS,CAAC,CAACA;AAAA,QACX,QAAQ,MAAMC,EAAc,EAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACnC,GAEJ;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";const S=require("../../../../_virtual/jsx-runtime.cjs.js"),d=require("react"),ue=require("./SimpleTable.styled.cjs.js"),x=require("@tanstack/react-table"),te=require("@tanstack/react-virtual"),B=require("clsx"),ne=require("./hooks/useRowKeydown.cjs.js"),O=require("@tanstack/match-sorter-utils"),qe=require("./context/SimpleTableContext.cjs.js"),le=require("./SimpleTableRowTemplate.cjs.js");require("@ynput/ayon-react-components");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");const oe=require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("react-toastify");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("lodash");require("uuid");require("../../util/pubsub.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("date-fns");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.cjs.js");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/Chips/Chips.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");const se=(q,l,g,m)=>{const n=q.getValue(l);let o=typeof n=="string"?n:Array.isArray(n)?n.join(" "):JSON.stringify(n);l==="label"&&(o=[q.original.label,q.original.name,...q.original.parents||[]].join(" "));const b=O.rankItem(o,g);return m({itemRank:b}),b.passed},ae=(q,l,g)=>{var n,o;let m=0;return q.columnFiltersMeta[g]&&(m=O.compareItems((n=q.columnFiltersMeta[g])==null?void 0:n.itemRank,(o=l.columnFiltersMeta[g])==null?void 0:o.itemRank)),m===0?x.sortingFns.alphanumeric(q,l,g):m};function ce(q,l,g){const m=[];if(l===g){const a=q.find(j=>j.id===l);return a?[a]:[]}let n=-1,o=-1;for(let a=0;a<q.length&&(q[a].id===l&&(n=a),q[a].id===g&&(o=a),!(n!==-1&&o!==-1));a++);if(n===-1||o===-1)return[];const b=Math.min(n,o),w=Math.max(n,o);for(let a=b;a<=w;a++)m.push(q[a]);return m}const de=({data:q=[],isLoading:l,error:g,isExpandable:m,isMultiSelect:n=!0,enableClickToDeselect:o=!0,enableNonFolderIndent:b=!0,forceUpdateTable:w,globalFilter:a,meta:j,rowHeight:K,imgRatio:D,onScrollBottom:M,children:U,pt:f})=>{const{rowSelection:P,expanded:_,setExpanded:F,onExpandedChange:z,onRowSelectionChange:$,rowPinning:A,onRowPinningChange:C}=qe.useSimpleTableContext(),E=d.useRef(null),p=d.useRef(null),J=d.useMemo(()=>l?Array.from({length:10},(e,u)=>({id:`placeholder-${u}`,name:`placeholder-${u}`,label:`placeholder-${u}`,icon:null,img:null,subRows:[],data:{id:`placeholder-${u}`}})):q,[l,q,w]),y=d.useCallback((e,u,t,r)=>{const c=u,s=e.getFilteredRowModel().flatRows,i=s.find(h=>h.id===c);if(i&&!i.original.isDisabled){if(o&&!t&&!r&&Object.keys(e.getState().rowSelection).length===1&&e.getState().rowSelection[c]){e.setRowSelection({}),E.current=null;return}if(n&&t&&E.current){const h=E.current;if(!s.find(H=>H.id===h))e.setRowSelection({[c]:!0});else{const H=ce(s,c,h),V={};H.forEach(ie=>V[ie.id]=!0),e.setRowSelection(V)}}else n&&r?i.toggleSelected():e.setRowSelection({[c]:!0});E.current=c}},[n,o]),Y=d.useCallback((e,u)=>{if(!p.current){console.warn("tableRef not yet available in handleRowSelectForKeydown");return}const t=e.shiftKey,r=e.ctrlKey||e.metaKey;y(p.current,u.id,t,r)},[y]),G=d.useCallback((e,u,t)=>{if(!p.current)return;const r=p.current.getRowModel().rows,c=r.findIndex(i=>i.id===u.id);if(c===-1)return;let s=e==="down"?c+1:c-1;if(!(s<0||s>=r.length))for(;s>=0&&s<r.length;){const i=r[s];if(!i.original.isDisabled){y(p.current,i.id,t.shiftKey,t.ctrlKey||t.metaKey),requestAnimationFrame(()=>{const h=document.getElementById(i.id),T=h==null?void 0:h.querySelector('[tabindex="0"]');T&&(T.focus(),T.scrollIntoView({block:"nearest",behavior:"smooth"}))});return}s=e==="down"?s+1:s-1}},[y]),{handleRowKeyDown:N}=ne({handleRowSelect:Y,handleArrowNavigation:G}),Q=d.useMemo(()=>[{accessorKey:"label",header:void 0,filterFn:"fuzzy",sortingFn:ae,cell:({row:e,getValue:u,table:t})=>{const r=t.options.meta,c=i=>{i.target instanceof HTMLInputElement||i.target instanceof HTMLButtonElement||i.target instanceof HTMLTextAreaElement||i.target instanceof HTMLSelectElement||i.target instanceof HTMLAnchorElement||i.target.closest("button, a, input, textarea, select")||y(t,e.id,i.shiftKey,i.ctrlKey||i.metaKey)},s={className:B({selected:e.getIsSelected(),loading:r==null?void 0:r.isLoading,disabled:e.original.isDisabled,inactive:e.original.inactive}),onKeyDown:i=>{i.target instanceof HTMLInputElement||N(i,e)},depth:e.depth,tabIndex:0,value:u(),parents:e.original.parents,icon:e.original.icon||void 0,iconColor:e.original.iconColor,iconFilled:e.original.iconFilled,img:e.original.img,imgShape:e.original.imgShape,imgRatio:D,isRowExpandable:e.getCanExpand(),enableNonFolderIndent:b,isRowExpanded:e.getIsExpanded(),isTableExpandable:r==null?void 0:r.isExpandable,onExpandClick:e.getToggleExpandedHandler(),startContent:e.original.startContent,endContent:e.original.endContent,isDisabled:e.original.isDisabled,disabledMessage:e.original.disabledMessage,...f==null?void 0:f.cell,onClick:c};return r!=null&&r.children?r.children(s,e,t):S.jsxRuntimeExports.jsx(le.SimpleTableCellTemplate,{...s,...f==null?void 0:f.cell})}}],[w,y,N,o,b,D]),W=d.useCallback(e=>{$(x.functionalUpdate(e,P))},[$]),X=d.useCallback(e=>{C==null||C(x.functionalUpdate(e,A||{}))},[C]),Z=d.useCallback(e=>{F==null||F(u=>{const t=e instanceof Function?e(u):e;return z==null||z(t),t})},[F]),k=x.useReactTable({data:J,columns:Q,state:{expanded:_,rowSelection:P,globalFilter:a,rowPinning:A},onRowSelectionChange:W,onRowPinningChange:X,filterFns:{fuzzy:se},globalFilterFn:"fuzzy",enableRowSelection:!0,enableRowPinning:!!C,getRowId:e=>e.id,enableSubRowSelection:!1,onExpandedChange:Z,getSubRows:e=>e.subRows,getCoreRowModel:x.getCoreRowModel(),getFilteredRowModel:x.getFilteredRowModel(),getExpandedRowModel:x.getExpandedRowModel(),filterFromLeafRows:!0,meta:{isExpandable:!!m,isLoading:l,children:U,...j}});d.useEffect(()=>{p.current=k},[k]);const{rows:I}=k.getRowModel(),L=d.useRef(null),R=te.useVirtualizer({count:I.length,estimateSize:()=>K||34,getScrollElement:()=>L.current,measureElement:K?()=>K:typeof window<"u"&&navigator.userAgent.indexOf("Firefox")===-1?e=>e==null?void 0:e.getBoundingClientRect().height:void 0,overscan:5}),v=d.useCallback(e=>{e&&R.measureElement(e)},[R]),ee=d.useCallback(e=>{if(!M)return;const u=e.currentTarget,{scrollTop:t,scrollHeight:r,clientHeight:c}=u;r-t-c<100&&!l&&M()},[M,l]),re=e=>{o&&!e.target.closest("tr")&&(k.setRowSelection({}),E.current=null)};return S.jsxRuntimeExports.jsxs(ue.TableContainer,{ref:L,className:B({isLoading:l}),onScroll:ee,onClick:re,children:[!g&&S.jsxRuntimeExports.jsx("table",{children:S.jsxRuntimeExports.jsx("tbody",{style:{height:`${R==null?void 0:R.getTotalSize()}px`},children:R==null?void 0:R.getVirtualItems().map(e=>{var t;const u=I[e.index];return S.jsxRuntimeExports.jsx("tr",{"data-index":e.index,ref:v,id:u.id,...f==null?void 0:f.row,style:{transform:`translateY(${e.start}px)`,...(t=f==null?void 0:f.row)==null?void 0:t.style},children:u.getVisibleCells().map(r=>S.jsxRuntimeExports.jsx("td",{children:x.flexRender(r.column.columnDef.cell,r.getContext())},r.id))},u.id)})})}),!!g&&S.jsxRuntimeExports.jsx(oe.EmptyPlaceholder,{error:g})]})};module.exports=de;
1
+ "use strict";const S=require("../../../../_virtual/jsx-runtime.cjs.js"),d=require("react"),ue=require("./SimpleTable.styled.cjs.js"),x=require("@tanstack/react-table"),te=require("@tanstack/react-virtual"),B=require("clsx"),ne=require("./hooks/useRowKeydown.cjs.js"),O=require("@tanstack/match-sorter-utils"),qe=require("./context/SimpleTableContext.cjs.js"),le=require("./SimpleTableRowTemplate.cjs.js");require("@ynput/ayon-react-components");require("../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");const oe=require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("react-toastify");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("lodash");require("uuid");require("../../util/pubsub.cjs.js");require("../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../components/Thumbnail/StackedThumbnails.cjs.js");require("../Feed/context/FeedContext.cjs.js");require("../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../Feed/components/CommentInput/CommentInput.cjs.js");require("../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../Feed/components/ActivityDate.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../Feed/Feed.styled.cjs.js");require("date-fns");require("../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.cjs.js");require("../ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../ProjectTreeTable/widgets/DateWidget.cjs.js");require("../ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../ProjectTreeTable/widgets/TextWidget.cjs.js");require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../ProjectTreeTable/widgets/CellWidget.cjs.js");require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../../components/LinksManager/CellEditingDialog.cjs.js");require("../ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../components/LinksManager/LinksManager.styled.cjs.js");require("../ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../ProjectTreeTable/components/SelectionCell.cjs.js");require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../ProjectTreeTable/context/ClipboardContext.cjs.js");require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../DetailsPanel/DetailsPanel.styled.cjs.js");require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../components/PlayableIcon/PlayableIcon.cjs.js");require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../Actions/Actions.styled.cjs.js");require("../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../Actions/ActionIcon.cjs.js");require("../Views/context/ViewsContext.cjs.js");require("../Views/Views.styled.cjs.js");require("../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../components/EntityPath/EntityPath.styled.cjs.js");require("../../components/EntityPath/SegmentProvider.cjs.js");require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../components/Watchers/Watchers.cjs.js");require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../components/Powerpack/PowerpackButton.cjs.js");require("../../components/Powerpack/PricingLink.cjs.js");require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../components/Powerpack/CTAButton.cjs.js");require("../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../components/SizeSlider/SizeSlider.cjs.js");require("../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../components/SearchFilter/filterDates.cjs.js");require("../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../components/Badge/Badge.cjs.js");require("../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../components/Feedback/FeedbackContext.cjs.js");require("../../components/Feedback/SupportBubble.cjs.js");require("../../components/Chips/Chips.cjs.js");require("../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../components/StyledLink/StyledLink.cjs.js");require("../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../components/AccessUser/AccessUser.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../components/LegacyBadge/LegacyBadge.cjs.js");const se=(q,l,g,m)=>{const n=q.getValue(l);let o=typeof n=="string"?n:Array.isArray(n)?n.join(" "):JSON.stringify(n);l==="label"&&(o=[q.original.label,q.original.name,...q.original.parents||[]].join(" "));const b=O.rankItem(o,g);return m({itemRank:b}),b.passed},ae=(q,l,g)=>{var n,o;let m=0;return q.columnFiltersMeta[g]&&(m=O.compareItems((n=q.columnFiltersMeta[g])==null?void 0:n.itemRank,(o=l.columnFiltersMeta[g])==null?void 0:o.itemRank)),m===0?x.sortingFns.alphanumeric(q,l,g):m};function ce(q,l,g){const m=[];if(l===g){const a=q.find(j=>j.id===l);return a?[a]:[]}let n=-1,o=-1;for(let a=0;a<q.length&&(q[a].id===l&&(n=a),q[a].id===g&&(o=a),!(n!==-1&&o!==-1));a++);if(n===-1||o===-1)return[];const b=Math.min(n,o),w=Math.max(n,o);for(let a=b;a<=w;a++)m.push(q[a]);return m}const de=({data:q=[],isLoading:l,error:g,isExpandable:m,isMultiSelect:n=!0,enableClickToDeselect:o=!0,enableNonFolderIndent:b=!0,forceUpdateTable:w,globalFilter:a,meta:j,rowHeight:K,imgRatio:D,onScrollBottom:M,children:U,pt:f})=>{const{rowSelection:P,expanded:_,setExpanded:F,onExpandedChange:z,onRowSelectionChange:$,rowPinning:A,onRowPinningChange:C}=qe.useSimpleTableContext(),E=d.useRef(null),p=d.useRef(null),J=d.useMemo(()=>l?Array.from({length:10},(e,u)=>({id:`placeholder-${u}`,name:`placeholder-${u}`,label:`placeholder-${u}`,icon:null,img:null,subRows:[],data:{id:`placeholder-${u}`}})):q,[l,q,w]),y=d.useCallback((e,u,t,r)=>{const c=u,s=e.getFilteredRowModel().flatRows,i=s.find(h=>h.id===c);if(i&&!i.original.isDisabled){if(o&&!t&&!r&&Object.keys(e.getState().rowSelection).length===1&&e.getState().rowSelection[c]){e.setRowSelection({}),E.current=null;return}if(n&&t&&E.current){const h=E.current;if(!s.find(H=>H.id===h))e.setRowSelection({[c]:!0});else{const H=ce(s,c,h),V={};H.forEach(ie=>V[ie.id]=!0),e.setRowSelection(V)}}else n&&r?i.toggleSelected():e.setRowSelection({[c]:!0});E.current=c}},[n,o]),Y=d.useCallback((e,u)=>{if(!p.current){console.warn("tableRef not yet available in handleRowSelectForKeydown");return}const t=e.shiftKey,r=e.ctrlKey||e.metaKey;y(p.current,u.id,t,r)},[y]),G=d.useCallback((e,u,t)=>{if(!p.current)return;const r=p.current.getRowModel().rows,c=r.findIndex(i=>i.id===u.id);if(c===-1)return;let s=e==="down"?c+1:c-1;if(!(s<0||s>=r.length))for(;s>=0&&s<r.length;){const i=r[s];if(!i.original.isDisabled){y(p.current,i.id,t.shiftKey,t.ctrlKey||t.metaKey),requestAnimationFrame(()=>{const h=document.getElementById(i.id),T=h==null?void 0:h.querySelector('[tabindex="0"]');T&&(T.focus(),T.scrollIntoView({block:"nearest",behavior:"smooth"}))});return}s=e==="down"?s+1:s-1}},[y]),{handleRowKeyDown:N}=ne({handleRowSelect:Y,handleArrowNavigation:G}),Q=d.useMemo(()=>[{accessorKey:"label",header:void 0,filterFn:"fuzzy",sortingFn:ae,cell:({row:e,getValue:u,table:t})=>{const r=t.options.meta,c=i=>{i.target instanceof HTMLInputElement||i.target instanceof HTMLButtonElement||i.target instanceof HTMLTextAreaElement||i.target instanceof HTMLSelectElement||i.target instanceof HTMLAnchorElement||i.target.closest("button, a, input, textarea, select")||y(t,e.id,i.shiftKey,i.ctrlKey||i.metaKey)},s={className:B({selected:e.getIsSelected(),loading:r==null?void 0:r.isLoading,disabled:e.original.isDisabled,inactive:e.original.inactive}),onKeyDown:i=>{i.target instanceof HTMLInputElement||N(i,e)},depth:e.depth,tabIndex:0,value:u(),parents:e.original.parents,icon:e.original.icon||void 0,iconColor:e.original.iconColor,iconFilled:e.original.iconFilled,img:e.original.img,imgShape:e.original.imgShape,imgRatio:D,isRowExpandable:e.getCanExpand(),enableNonFolderIndent:b,isRowExpanded:e.getIsExpanded(),isTableExpandable:r==null?void 0:r.isExpandable,onExpandClick:e.getToggleExpandedHandler(),startContent:e.original.startContent,endContent:e.original.endContent,isDisabled:e.original.isDisabled,disabledMessage:e.original.disabledMessage,...f==null?void 0:f.cell,onClick:c};return r!=null&&r.children?r.children(s,e,t):S.jsxRuntimeExports.jsx(le.SimpleTableCellTemplate,{...s,...f==null?void 0:f.cell})}}],[w,y,N,o,b,D]),W=d.useCallback(e=>{$(x.functionalUpdate(e,P))},[$]),X=d.useCallback(e=>{C==null||C(x.functionalUpdate(e,A||{}))},[C]),Z=d.useCallback(e=>{F==null||F(u=>{const t=e instanceof Function?e(u):e;return z==null||z(t),t})},[F]),k=x.useReactTable({data:J,columns:Q,state:{expanded:_,rowSelection:P,globalFilter:a,rowPinning:A},onRowSelectionChange:W,onRowPinningChange:X,filterFns:{fuzzy:se},globalFilterFn:"fuzzy",enableRowSelection:!0,enableRowPinning:!!C,getRowId:e=>e.id,enableSubRowSelection:!1,onExpandedChange:Z,getSubRows:e=>e.subRows,getCoreRowModel:x.getCoreRowModel(),getFilteredRowModel:x.getFilteredRowModel(),getExpandedRowModel:x.getExpandedRowModel(),filterFromLeafRows:!0,meta:{isExpandable:!!m,isLoading:l,children:U,...j}});d.useEffect(()=>{p.current=k},[k]);const{rows:I}=k.getRowModel(),L=d.useRef(null),R=te.useVirtualizer({count:I.length,estimateSize:()=>K||34,getScrollElement:()=>L.current,measureElement:K?()=>K:typeof window<"u"&&navigator.userAgent.indexOf("Firefox")===-1?e=>e==null?void 0:e.getBoundingClientRect().height:void 0,overscan:5}),v=d.useCallback(e=>{e&&R.measureElement(e)},[R]),ee=d.useCallback(e=>{if(!M)return;const u=e.currentTarget,{scrollTop:t,scrollHeight:r,clientHeight:c}=u;r-t-c<100&&!l&&M()},[M,l]),re=e=>{o&&!e.target.closest("tr")&&(k.setRowSelection({}),E.current=null)};return S.jsxRuntimeExports.jsxs(ue.TableContainer,{ref:L,className:B({isLoading:l}),onScroll:ee,onClick:re,children:[!g&&S.jsxRuntimeExports.jsx("table",{children:S.jsxRuntimeExports.jsx("tbody",{style:{height:`${R==null?void 0:R.getTotalSize()}px`},children:R==null?void 0:R.getVirtualItems().map(e=>{var t;const u=I[e.index];return S.jsxRuntimeExports.jsx("tr",{"data-index":e.index,ref:v,id:u.id,...f==null?void 0:f.row,style:{transform:`translateY(${e.start}px)`,...(t=f==null?void 0:f.row)==null?void 0:t.style},children:u.getVisibleCells().map(r=>S.jsxRuntimeExports.jsx("td",{children:x.flexRender(r.column.columnDef.cell,r.getContext())},r.id))},u.id)})})}),!!g&&S.jsxRuntimeExports.jsx(oe.EmptyPlaceholder,{error:g})]})};module.exports=de;
2
2
  //# sourceMappingURL=SimpleTable.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleTable.cjs.js","sources":["../../../../../src/containers/SimpleTable/SimpleTable.tsx"],"sourcesContent":["import { FC, useMemo, useRef, MouseEvent as ReactMouseEvent, useCallback, useEffect } from 'react'\nimport * as Styled from './SimpleTable.styled'\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n ColumnDef,\n flexRender,\n Row,\n FilterFn,\n SortingFn,\n sortingFns,\n RowData,\n Table,\n OnChangeFn,\n RowSelectionState,\n functionalUpdate,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\n\nimport clsx from 'clsx'\nimport useRowKeydown, { RowKeyboardEvent } from './hooks/useRowKeydown'\n\nimport { RankingInfo, rankItem, compareItems } from '@tanstack/match-sorter-utils'\nimport { useSimpleTableContext } from './context/SimpleTableContext'\nimport { SimpleTableCellTemplate, SimpleTableCellTemplateProps } from './SimpleTableRowTemplate'\nimport { EmptyPlaceholder } from '@shared/components'\nimport { RowPinningState } from '@tanstack/react-table'\n\ndeclare module '@tanstack/react-table' {\n //add fuzzy filter to the filterFns\n interface FilterFns {\n fuzzy: FilterFn<unknown>\n }\n interface FilterMeta {\n itemRank: RankingInfo\n }\n\n interface TableMeta<TData extends RowData> {\n isExpandable?: boolean\n isLoading?: boolean\n children?: (\n props: SimpleTableCellTemplateProps,\n row: Row<TData>,\n table: Table<SimpleTableRow>,\n ) => JSX.Element\n [key: string]: any\n }\n}\n\n// Define a custom fuzzy filter function that will apply ranking info to rows (using match-sorter utils)\nconst fuzzyFilter: FilterFn<any> = (row, columnId, searchValue, addMeta) => {\n const cellValue = row.getValue(columnId)\n // convert non-string cell values to string\n let searchString =\n typeof cellValue === 'string'\n ? cellValue\n : Array.isArray(cellValue)\n ? cellValue.join(' ')\n : JSON.stringify(cellValue)\n\n // combine label and parents into a single string for searching if columnId is 'label'\n if (columnId === 'label') {\n searchString = [row.original.label, row.original.name, ...(row.original.parents || [])].join(\n ' ',\n )\n }\n\n // Rank the item\n const itemRank = rankItem(searchString, searchValue)\n\n // Store the itemRank info\n addMeta({\n itemRank,\n })\n\n // Return if the item should be filtered in/out\n return itemRank.passed\n}\n\n// Define a custom fuzzy sort function that will sort by rank if the row has ranking information\nconst fuzzySort: SortingFn<any> = (rowA, rowB, columnId) => {\n let dir = 0\n\n // Only sort by rank if the column has ranking information\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId]?.itemRank!,\n rowB.columnFiltersMeta[columnId]?.itemRank!,\n )\n }\n\n // Provide an alphanumeric fallback for when the item ranks are equal\n return dir === 0 ? sortingFns.alphanumeric(rowA, rowB, columnId) : dir\n}\n\nexport type RowItemData = {\n id: string\n name?: string | null\n label?: string | null\n subType?: string | null\n [key: string]: any\n}\n\nexport type SimpleTableRow = {\n id: string\n parentId?: string\n name: string\n label: string\n parents?: string[]\n icon?: string | null\n iconColor?: string\n iconFilled?: boolean\n img?: string | null\n imgShape?: 'square' | 'circle'\n startContent?: JSX.Element\n endContent?: JSX.Element\n subRows: SimpleTableRow[]\n data: RowItemData\n isDisabled?: boolean\n disabledMessage?: string\n inactive?: boolean\n}\n\nexport interface SimpleTableProps {\n data: SimpleTableRow[]\n isLoading: boolean\n error?: string\n isExpandable?: boolean // show expand/collapse icons\n isMultiSelect?: boolean // enable multi-select with shift+click and ctrl/cmd+click\n enableClickToDeselect?: boolean // allow deselecting a single selected row by clicking it again & clicking outside clears selection\n enableNonFolderIndent?: boolean // indent non-folder rows to align with folder rows\n forceUpdateTable?: any\n globalFilter?: string\n meta?: Record<string, any>\n rowHeight?: number // height of each row, used for virtual scrolling\n imgRatio?: number\n onScrollBottom?: () => void // callback fired when scrolled to the bottom of the table\n children?: (\n props: SimpleTableCellTemplateProps,\n row: Row<SimpleTableRow>,\n table: Table<SimpleTableRow>,\n ) => JSX.Element\n pt?: {\n cell?: Partial<SimpleTableCellTemplateProps>\n row?: Partial<React.HTMLAttributes<HTMLTableRowElement>>\n }\n}\n\n// Helper function to get row range for shift-selection\n// Operates on the provided list of rows (e.g., filtered and sorted rows)\nfunction getRowRange<TData extends RowData>(\n rows: Array<Row<TData>>,\n idA: string,\n idB: string,\n): Array<Row<TData>> {\n const range: Array<Row<TData>> = []\n // If idA and idB are the same, or one is not found, handle appropriately\n if (idA === idB) {\n const singleRow = rows.find((row) => row.id === idA)\n return singleRow ? [singleRow] : []\n }\n\n let indexA = -1\n let indexB = -1\n\n for (let i = 0; i < rows.length; i++) {\n if (rows[i].id === idA) indexA = i\n if (rows[i].id === idB) indexB = i\n if (indexA !== -1 && indexB !== -1) break\n }\n\n if (indexA === -1 || indexB === -1) return [] // One or both IDs not found\n\n const start = Math.min(indexA, indexB)\n const end = Math.max(indexA, indexB)\n\n for (let i = start; i <= end; i++) {\n range.push(rows[i])\n }\n return range\n}\n\nconst SimpleTable: FC<SimpleTableProps> = ({\n data = [],\n isLoading,\n error,\n isExpandable,\n isMultiSelect = true,\n enableClickToDeselect = true,\n enableNonFolderIndent = true,\n forceUpdateTable,\n globalFilter,\n meta,\n rowHeight,\n imgRatio,\n onScrollBottom,\n children,\n pt,\n}) => {\n const {\n rowSelection,\n expanded,\n setExpanded,\n onExpandedChange,\n onRowSelectionChange,\n rowPinning,\n onRowPinningChange,\n } = useSimpleTableContext()\n const lastSelectedIdRef = useRef<string | null>(null)\n const tableRef = useRef<Table<SimpleTableRow> | null>(null)\n\n // stable data reference\n const tableData = useMemo(() => {\n if (!isLoading) return data\n\n // show loading placeholders\n return Array.from({ length: 10 }, (_, i) => ({\n id: `placeholder-${i}`,\n name: `placeholder-${i}`,\n label: `placeholder-${i}`,\n icon: null,\n img: null,\n subRows: [],\n data: {\n id: `placeholder-${i}`,\n },\n }))\n }, [isLoading, data, forceUpdateTable])\n\n // Define the core selection logic using useCallback for stability\n const handleSelectionLogic = useCallback(\n (\n tableInstance: Table<SimpleTableRow>,\n rowId: string,\n isShift: boolean,\n isCtrlOrMeta: boolean,\n ) => {\n const currentId = rowId\n const allProcessableRows = tableInstance.getFilteredRowModel().flatRows\n const currentRow = allProcessableRows.find((r) => r.id === currentId)\n\n if (!currentRow) return\n\n // Prevent selection of disabled rows\n if (currentRow.original.isDisabled) return\n\n // If click-to-deselect is enabled and only one row is selected and it's the current row\n if (\n enableClickToDeselect &&\n !isShift &&\n !isCtrlOrMeta &&\n Object.keys(tableInstance.getState().rowSelection).length === 1 &&\n tableInstance.getState().rowSelection[currentId]\n ) {\n tableInstance.setRowSelection({})\n lastSelectedIdRef.current = null\n return\n }\n\n if (isMultiSelect && isShift && lastSelectedIdRef.current) {\n const lastId = lastSelectedIdRef.current\n const anchorRow = allProcessableRows.find((r) => r.id === lastId)\n\n if (!anchorRow) {\n tableInstance.setRowSelection({ [currentId]: true })\n } else {\n const rowsToToggle = getRowRange(allProcessableRows, currentId, lastId)\n const newSelection: RowSelectionState = {}\n rowsToToggle.forEach((r) => (newSelection[r.id] = true))\n tableInstance.setRowSelection(newSelection)\n }\n } else if (isMultiSelect && isCtrlOrMeta) {\n currentRow.toggleSelected()\n } else {\n tableInstance.setRowSelection({ [currentId]: true })\n }\n lastSelectedIdRef.current = currentId\n },\n [isMultiSelect, enableClickToDeselect],\n )\n\n // Callback for useRowKeydown's handleRowSelect prop\n // Uses tableRef to access the table instance, avoiding direct dependency on 'table' variable at definition time\n const handleRowSelectForKeydown = useCallback(\n (\n event: RowKeyboardEvent, // Use the specific keyboard event type from the hook\n selectedRow: Row<SimpleTableRow>,\n ) => {\n if (!tableRef.current) {\n console.warn('tableRef not yet available in handleRowSelectForKeydown')\n return\n }\n\n // Extract modifier keys from the event\n const isShiftKey = event.shiftKey\n const isCtrlKey = event.ctrlKey || event.metaKey\n\n handleSelectionLogic(\n tableRef.current, // Pass the main table instance\n selectedRow.id,\n isShiftKey,\n isCtrlKey,\n )\n },\n [handleSelectionLogic], // Depends only on handleSelectionLogic\n )\n\n // Handle arrow key navigation\n const handleArrowNavigation = useCallback(\n (direction: 'up' | 'down', currentRow: Row<SimpleTableRow>, event: RowKeyboardEvent) => {\n if (!tableRef.current) return\n\n // Use the row model which respects expanded state, not filtered model\n const visibleRows = tableRef.current.getRowModel().rows\n const currentIndex = visibleRows.findIndex((r) => r.id === currentRow.id)\n\n if (currentIndex === -1) return\n\n let nextIndex = direction === 'down' ? currentIndex + 1 : currentIndex - 1\n\n // Check bounds\n if (nextIndex < 0 || nextIndex >= visibleRows.length) return\n\n // Skip disabled rows\n while (nextIndex >= 0 && nextIndex < visibleRows.length) {\n const nextRow = visibleRows[nextIndex]\n if (!nextRow.original.isDisabled) {\n // Found a valid row\n // Select the next row\n handleSelectionLogic(\n tableRef.current,\n nextRow.id,\n event.shiftKey,\n event.ctrlKey || event.metaKey,\n )\n\n // Focus the next row's cell\n requestAnimationFrame(() => {\n const nextRowElement = document.getElementById(nextRow.id)\n const nextCell = nextRowElement?.querySelector('[tabindex=\"0\"]') as HTMLElement\n if (nextCell) {\n nextCell.focus()\n nextCell.scrollIntoView({ block: 'nearest', behavior: 'smooth' })\n }\n })\n return\n }\n // Move to next row if current is disabled\n nextIndex = direction === 'down' ? nextIndex + 1 : nextIndex - 1\n }\n },\n [handleSelectionLogic],\n )\n\n const { handleRowKeyDown } = useRowKeydown<SimpleTableRow>({\n handleRowSelect: handleRowSelectForKeydown,\n handleArrowNavigation,\n })\n\n const columns = useMemo<ColumnDef<SimpleTableRow>[]>(\n () => [\n {\n accessorKey: 'label',\n header: undefined,\n filterFn: 'fuzzy',\n sortingFn: fuzzySort, //sort by fuzzy rank (falls back to alphanumeric)\n cell: ({ row, getValue, table: cellTableInstance }) => {\n const cellMeta = cellTableInstance.options.meta\n\n const handleCellClick = (event: ReactMouseEvent<HTMLElement, MouseEvent>) => {\n // Prevent row selection if clicking on an interactive element within the cell\n if (\n event.target instanceof HTMLInputElement ||\n event.target instanceof HTMLButtonElement ||\n event.target instanceof HTMLTextAreaElement ||\n event.target instanceof HTMLSelectElement ||\n event.target instanceof HTMLAnchorElement ||\n (event.target as HTMLElement).closest('button, a, input, textarea, select')\n ) {\n return\n }\n handleSelectionLogic(\n cellTableInstance, // Pass the cell's table instance\n row.id,\n event.shiftKey,\n event.ctrlKey || event.metaKey,\n )\n }\n\n const props: SimpleTableCellTemplateProps & {\n onClick?: (event: ReactMouseEvent<HTMLElement, MouseEvent>) => void\n } = {\n className: clsx({\n selected: row.getIsSelected(),\n loading: cellMeta?.isLoading,\n disabled: row.original.isDisabled, // you can't select disabled rows\n inactive: row.original.inactive, // false: archived items but still selectable\n }),\n onKeyDown: (e) => {\n if (e.target instanceof HTMLInputElement) return\n // Corrected typo: handleRowKeydown -> handleRowKeyDown\n handleRowKeyDown(e, row)\n },\n depth: row.depth,\n tabIndex: 0,\n value: getValue<string>(),\n parents: row.original.parents,\n icon: row.original.icon || undefined,\n iconColor: row.original.iconColor,\n iconFilled: row.original.iconFilled,\n img: row.original.img,\n imgShape: row.original.imgShape,\n imgRatio: imgRatio,\n isRowExpandable: row.getCanExpand(),\n enableNonFolderIndent,\n isRowExpanded: row.getIsExpanded(),\n isTableExpandable: cellMeta?.isExpandable,\n onExpandClick: row.getToggleExpandedHandler(),\n startContent: row.original.startContent,\n endContent: row.original.endContent,\n isDisabled: row.original.isDisabled,\n disabledMessage: row.original.disabledMessage,\n ...pt?.cell,\n onClick: handleCellClick, // Added onClick handler\n }\n\n // Use children function if provided, otherwise default to SimpleTableCellTemplate\n return cellMeta?.children ? (\n cellMeta.children(props, row, cellTableInstance)\n ) : (\n <SimpleTableCellTemplate {...props} {...pt?.cell} />\n )\n },\n },\n ],\n [\n forceUpdateTable,\n handleSelectionLogic,\n handleRowKeyDown,\n enableClickToDeselect,\n enableNonFolderIndent,\n imgRatio,\n ], // include enableClickToDeselect for completeness\n )\n\n const handleRowSelectionChangeCallback: OnChangeFn<RowSelectionState> = useCallback(\n (updater) => {\n onRowSelectionChange(functionalUpdate(updater, rowSelection))\n },\n [onRowSelectionChange],\n )\n\n const handleRowPinningChangeCallback: OnChangeFn<RowPinningState> = useCallback(\n (updater) => {\n onRowPinningChange?.(functionalUpdate(updater, rowPinning || {}))\n },\n [onRowPinningChange],\n )\n\n const handleExpandedChange = useCallback(\n (updater: any) => {\n setExpanded?.((old) => {\n const newExpanded = updater instanceof Function ? updater(old) : updater\n onExpandedChange?.(newExpanded)\n return newExpanded\n })\n },\n [setExpanded],\n )\n\n const table = useReactTable({\n data: tableData,\n columns,\n state: {\n expanded,\n rowSelection,\n globalFilter,\n rowPinning,\n },\n onRowSelectionChange: handleRowSelectionChangeCallback,\n onRowPinningChange: handleRowPinningChangeCallback,\n filterFns: {\n fuzzy: fuzzyFilter,\n },\n globalFilterFn: 'fuzzy',\n enableRowSelection: true, //enable row selection for all rows\n enableRowPinning: !!onRowPinningChange,\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n onExpandedChange: handleExpandedChange,\n getSubRows: (row) => row.subRows,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // debugTable: true,\n meta: {\n isExpandable: !!isExpandable,\n isLoading: isLoading,\n children: children,\n ...meta,\n },\n })\n\n // Update tableRef whenever the table instance changes.\n // This ensures handleRowSelectForKeydown uses the current table instance.\n useEffect(() => {\n tableRef.current = table\n }, [table])\n\n const { rows } = table.getRowModel()\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n\n const rowVirtualizer = useVirtualizer({\n count: rows.length,\n estimateSize: () => rowHeight || 34, //estimate row height for accurate scrollbar dragging\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement: rowHeight\n ? () => rowHeight\n : typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n // Memoize the ref callback to prevent infinite re-renders\n const measureElementRef = useCallback(\n (node: HTMLElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n // Handle scroll to bottom detection\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLDivElement>) => {\n if (!onScrollBottom) return\n\n const target = event.currentTarget\n const { scrollTop, scrollHeight, clientHeight } = target\n\n // Check if we're near the bottom (within 100px)\n const isNearBottom = scrollHeight - scrollTop - clientHeight < 100\n\n if (isNearBottom && !isLoading) {\n onScrollBottom()\n }\n },\n [onScrollBottom, isLoading],\n )\n\n const handleContainerClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // if the click is outside of any row, clear selection\n if (enableClickToDeselect && !(e.target as HTMLElement).closest('tr')) {\n table.setRowSelection({})\n lastSelectedIdRef.current = null\n }\n }\n\n return (\n <Styled.TableContainer\n ref={tableContainerRef}\n className={clsx({ isLoading })}\n onScroll={handleScroll}\n onClick={handleContainerClick}\n >\n {!error && (\n <table>\n <tbody\n style={{\n height: `${rowVirtualizer?.getTotalSize()}px`, //tells scrollbar how big the table is\n }}\n >\n {rowVirtualizer?.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index] as Row<SimpleTableRow>\n return (\n <tr\n data-index={virtualRow.index} //needed for dynamic row height measurement\n ref={measureElementRef} //measure dynamic row height\n key={row.id}\n id={row.id}\n {...pt?.row}\n style={{\n transform: `translateY(${virtualRow.start}px)`, //this should always be a `style` as it changes on scroll\n ...pt?.row?.style, // custom styles to be passed\n }}\n >\n {row.getVisibleCells().map((cell) => {\n return (\n <td key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n )\n })}\n </tr>\n )\n })}\n </tbody>\n </table>\n )}\n {!!error && <EmptyPlaceholder error={error} />}\n </Styled.TableContainer>\n )\n}\n\nexport default SimpleTable\n"],"names":["fuzzyFilter","row","columnId","searchValue","addMeta","cellValue","searchString","itemRank","rankItem","fuzzySort","rowA","rowB","dir","compareItems","_a","_b","sortingFns","getRowRange","rows","idA","idB","range","singleRow","indexA","indexB","i","start","end","SimpleTable","data","isLoading","error","isExpandable","isMultiSelect","enableClickToDeselect","enableNonFolderIndent","forceUpdateTable","globalFilter","meta","rowHeight","imgRatio","onScrollBottom","children","pt","rowSelection","expanded","setExpanded","onExpandedChange","onRowSelectionChange","rowPinning","onRowPinningChange","useSimpleTableContext","lastSelectedIdRef","useRef","tableRef","tableData","useMemo","_","handleSelectionLogic","useCallback","tableInstance","rowId","isShift","isCtrlOrMeta","currentId","allProcessableRows","currentRow","r","lastId","rowsToToggle","newSelection","handleRowSelectForKeydown","event","selectedRow","isShiftKey","isCtrlKey","handleArrowNavigation","direction","visibleRows","currentIndex","nextIndex","nextRow","nextRowElement","nextCell","handleRowKeyDown","useRowKeydown","columns","getValue","cellTableInstance","cellMeta","handleCellClick","props","clsx","e","jsx","SimpleTableCellTemplate","handleRowSelectionChangeCallback","updater","functionalUpdate","handleRowPinningChangeCallback","handleExpandedChange","old","newExpanded","table","useReactTable","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","useEffect","tableContainerRef","rowVirtualizer","useVirtualizer","element","measureElementRef","node","handleScroll","target","scrollTop","scrollHeight","clientHeight","handleContainerClick","jsxs","Styled.TableContainer","virtualRow","cell","flexRender","EmptyPlaceholder"],"mappings":"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"}
1
+ {"version":3,"file":"SimpleTable.cjs.js","sources":["../../../../../src/containers/SimpleTable/SimpleTable.tsx"],"sourcesContent":["import { FC, useMemo, useRef, MouseEvent as ReactMouseEvent, useCallback, useEffect } from 'react'\nimport * as Styled from './SimpleTable.styled'\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n ColumnDef,\n flexRender,\n Row,\n FilterFn,\n SortingFn,\n sortingFns,\n RowData,\n Table,\n OnChangeFn,\n RowSelectionState,\n functionalUpdate,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\n\nimport clsx from 'clsx'\nimport useRowKeydown, { RowKeyboardEvent } from './hooks/useRowKeydown'\n\nimport { RankingInfo, rankItem, compareItems } from '@tanstack/match-sorter-utils'\nimport { useSimpleTableContext } from './context/SimpleTableContext'\nimport { SimpleTableCellTemplate, SimpleTableCellTemplateProps } from './SimpleTableRowTemplate'\nimport { EmptyPlaceholder } from '@shared/components'\nimport { RowPinningState } from '@tanstack/react-table'\n\ndeclare module '@tanstack/react-table' {\n //add fuzzy filter to the filterFns\n interface FilterFns {\n fuzzy: FilterFn<unknown>\n }\n interface FilterMeta {\n itemRank: RankingInfo\n }\n\n interface TableMeta<TData extends RowData> {\n isExpandable?: boolean\n isLoading?: boolean\n children?: (\n props: SimpleTableCellTemplateProps,\n row: Row<TData>,\n table: Table<SimpleTableRow>,\n ) => JSX.Element\n [key: string]: any\n }\n}\n\n// Define a custom fuzzy filter function that will apply ranking info to rows (using match-sorter utils)\nconst fuzzyFilter: FilterFn<any> = (row, columnId, searchValue, addMeta) => {\n const cellValue = row.getValue(columnId)\n // convert non-string cell values to string\n let searchString =\n typeof cellValue === 'string'\n ? cellValue\n : Array.isArray(cellValue)\n ? cellValue.join(' ')\n : JSON.stringify(cellValue)\n\n // combine label and parents into a single string for searching if columnId is 'label'\n if (columnId === 'label') {\n searchString = [row.original.label, row.original.name, ...(row.original.parents || [])].join(\n ' ',\n )\n }\n\n // Rank the item\n const itemRank = rankItem(searchString, searchValue)\n\n // Store the itemRank info\n addMeta({\n itemRank,\n })\n\n // Return if the item should be filtered in/out\n return itemRank.passed\n}\n\n// Define a custom fuzzy sort function that will sort by rank if the row has ranking information\nconst fuzzySort: SortingFn<any> = (rowA, rowB, columnId) => {\n let dir = 0\n\n // Only sort by rank if the column has ranking information\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId]?.itemRank!,\n rowB.columnFiltersMeta[columnId]?.itemRank!,\n )\n }\n\n // Provide an alphanumeric fallback for when the item ranks are equal\n return dir === 0 ? sortingFns.alphanumeric(rowA, rowB, columnId) : dir\n}\n\nexport type RowItemData = {\n id: string\n name?: string | null\n label?: string | null\n subType?: string | null\n [key: string]: any\n}\n\nexport type SimpleTableRow = {\n id: string\n parentId?: string\n name: string\n label: string\n parents?: string[]\n icon?: string | null\n iconColor?: string\n iconFilled?: boolean\n img?: string | null\n imgShape?: 'square' | 'circle'\n startContent?: JSX.Element\n endContent?: JSX.Element\n subRows: SimpleTableRow[]\n data: RowItemData\n isDisabled?: boolean\n disabledMessage?: string\n inactive?: boolean\n}\n\nexport interface SimpleTableProps {\n data: SimpleTableRow[]\n isLoading: boolean\n error?: string\n isExpandable?: boolean // show expand/collapse icons\n isMultiSelect?: boolean // enable multi-select with shift+click and ctrl/cmd+click\n enableClickToDeselect?: boolean // allow deselecting a single selected row by clicking it again & clicking outside clears selection\n enableNonFolderIndent?: boolean // indent non-folder rows to align with folder rows\n forceUpdateTable?: any\n globalFilter?: string\n meta?: Record<string, any>\n rowHeight?: number // height of each row, used for virtual scrolling\n imgRatio?: number\n onScrollBottom?: () => void // callback fired when scrolled to the bottom of the table\n children?: (\n props: SimpleTableCellTemplateProps,\n row: Row<SimpleTableRow>,\n table: Table<SimpleTableRow>,\n ) => JSX.Element\n pt?: {\n cell?: Partial<SimpleTableCellTemplateProps>\n row?: Partial<React.HTMLAttributes<HTMLTableRowElement>>\n }\n}\n\n// Helper function to get row range for shift-selection\n// Operates on the provided list of rows (e.g., filtered and sorted rows)\nfunction getRowRange<TData extends RowData>(\n rows: Array<Row<TData>>,\n idA: string,\n idB: string,\n): Array<Row<TData>> {\n const range: Array<Row<TData>> = []\n // If idA and idB are the same, or one is not found, handle appropriately\n if (idA === idB) {\n const singleRow = rows.find((row) => row.id === idA)\n return singleRow ? [singleRow] : []\n }\n\n let indexA = -1\n let indexB = -1\n\n for (let i = 0; i < rows.length; i++) {\n if (rows[i].id === idA) indexA = i\n if (rows[i].id === idB) indexB = i\n if (indexA !== -1 && indexB !== -1) break\n }\n\n if (indexA === -1 || indexB === -1) return [] // One or both IDs not found\n\n const start = Math.min(indexA, indexB)\n const end = Math.max(indexA, indexB)\n\n for (let i = start; i <= end; i++) {\n range.push(rows[i])\n }\n return range\n}\n\nconst SimpleTable: FC<SimpleTableProps> = ({\n data = [],\n isLoading,\n error,\n isExpandable,\n isMultiSelect = true,\n enableClickToDeselect = true,\n enableNonFolderIndent = true,\n forceUpdateTable,\n globalFilter,\n meta,\n rowHeight,\n imgRatio,\n onScrollBottom,\n children,\n pt,\n}) => {\n const {\n rowSelection,\n expanded,\n setExpanded,\n onExpandedChange,\n onRowSelectionChange,\n rowPinning,\n onRowPinningChange,\n } = useSimpleTableContext()\n const lastSelectedIdRef = useRef<string | null>(null)\n const tableRef = useRef<Table<SimpleTableRow> | null>(null)\n\n // stable data reference\n const tableData = useMemo(() => {\n if (!isLoading) return data\n\n // show loading placeholders\n return Array.from({ length: 10 }, (_, i) => ({\n id: `placeholder-${i}`,\n name: `placeholder-${i}`,\n label: `placeholder-${i}`,\n icon: null,\n img: null,\n subRows: [],\n data: {\n id: `placeholder-${i}`,\n },\n }))\n }, [isLoading, data, forceUpdateTable])\n\n // Define the core selection logic using useCallback for stability\n const handleSelectionLogic = useCallback(\n (\n tableInstance: Table<SimpleTableRow>,\n rowId: string,\n isShift: boolean,\n isCtrlOrMeta: boolean,\n ) => {\n const currentId = rowId\n const allProcessableRows = tableInstance.getFilteredRowModel().flatRows\n const currentRow = allProcessableRows.find((r) => r.id === currentId)\n\n if (!currentRow) return\n\n // Prevent selection of disabled rows\n if (currentRow.original.isDisabled) return\n\n // If click-to-deselect is enabled and only one row is selected and it's the current row\n if (\n enableClickToDeselect &&\n !isShift &&\n !isCtrlOrMeta &&\n Object.keys(tableInstance.getState().rowSelection).length === 1 &&\n tableInstance.getState().rowSelection[currentId]\n ) {\n tableInstance.setRowSelection({})\n lastSelectedIdRef.current = null\n return\n }\n\n if (isMultiSelect && isShift && lastSelectedIdRef.current) {\n const lastId = lastSelectedIdRef.current\n const anchorRow = allProcessableRows.find((r) => r.id === lastId)\n\n if (!anchorRow) {\n tableInstance.setRowSelection({ [currentId]: true })\n } else {\n const rowsToToggle = getRowRange(allProcessableRows, currentId, lastId)\n const newSelection: RowSelectionState = {}\n rowsToToggle.forEach((r) => (newSelection[r.id] = true))\n tableInstance.setRowSelection(newSelection)\n }\n } else if (isMultiSelect && isCtrlOrMeta) {\n currentRow.toggleSelected()\n } else {\n tableInstance.setRowSelection({ [currentId]: true })\n }\n lastSelectedIdRef.current = currentId\n },\n [isMultiSelect, enableClickToDeselect],\n )\n\n // Callback for useRowKeydown's handleRowSelect prop\n // Uses tableRef to access the table instance, avoiding direct dependency on 'table' variable at definition time\n const handleRowSelectForKeydown = useCallback(\n (\n event: RowKeyboardEvent, // Use the specific keyboard event type from the hook\n selectedRow: Row<SimpleTableRow>,\n ) => {\n if (!tableRef.current) {\n console.warn('tableRef not yet available in handleRowSelectForKeydown')\n return\n }\n\n // Extract modifier keys from the event\n const isShiftKey = event.shiftKey\n const isCtrlKey = event.ctrlKey || event.metaKey\n\n handleSelectionLogic(\n tableRef.current, // Pass the main table instance\n selectedRow.id,\n isShiftKey,\n isCtrlKey,\n )\n },\n [handleSelectionLogic], // Depends only on handleSelectionLogic\n )\n\n // Handle arrow key navigation\n const handleArrowNavigation = useCallback(\n (direction: 'up' | 'down', currentRow: Row<SimpleTableRow>, event: RowKeyboardEvent) => {\n if (!tableRef.current) return\n\n // Use the row model which respects expanded state, not filtered model\n const visibleRows = tableRef.current.getRowModel().rows\n const currentIndex = visibleRows.findIndex((r) => r.id === currentRow.id)\n\n if (currentIndex === -1) return\n\n let nextIndex = direction === 'down' ? currentIndex + 1 : currentIndex - 1\n\n // Check bounds\n if (nextIndex < 0 || nextIndex >= visibleRows.length) return\n\n // Skip disabled rows\n while (nextIndex >= 0 && nextIndex < visibleRows.length) {\n const nextRow = visibleRows[nextIndex]\n if (!nextRow.original.isDisabled) {\n // Found a valid row\n // Select the next row\n handleSelectionLogic(\n tableRef.current,\n nextRow.id,\n event.shiftKey,\n event.ctrlKey || event.metaKey,\n )\n\n // Focus the next row's cell\n requestAnimationFrame(() => {\n const nextRowElement = document.getElementById(nextRow.id)\n const nextCell = nextRowElement?.querySelector('[tabindex=\"0\"]') as HTMLElement\n if (nextCell) {\n nextCell.focus()\n nextCell.scrollIntoView({ block: 'nearest', behavior: 'smooth' })\n }\n })\n return\n }\n // Move to next row if current is disabled\n nextIndex = direction === 'down' ? nextIndex + 1 : nextIndex - 1\n }\n },\n [handleSelectionLogic],\n )\n\n const { handleRowKeyDown } = useRowKeydown<SimpleTableRow>({\n handleRowSelect: handleRowSelectForKeydown,\n handleArrowNavigation,\n })\n\n const columns = useMemo<ColumnDef<SimpleTableRow>[]>(\n () => [\n {\n accessorKey: 'label',\n header: undefined,\n filterFn: 'fuzzy',\n sortingFn: fuzzySort, //sort by fuzzy rank (falls back to alphanumeric)\n cell: ({ row, getValue, table: cellTableInstance }) => {\n const cellMeta = cellTableInstance.options.meta\n\n const handleCellClick = (event: ReactMouseEvent<HTMLElement, MouseEvent>) => {\n // Prevent row selection if clicking on an interactive element within the cell\n if (\n event.target instanceof HTMLInputElement ||\n event.target instanceof HTMLButtonElement ||\n event.target instanceof HTMLTextAreaElement ||\n event.target instanceof HTMLSelectElement ||\n event.target instanceof HTMLAnchorElement ||\n (event.target as HTMLElement).closest('button, a, input, textarea, select')\n ) {\n return\n }\n handleSelectionLogic(\n cellTableInstance, // Pass the cell's table instance\n row.id,\n event.shiftKey,\n event.ctrlKey || event.metaKey,\n )\n }\n\n const props: SimpleTableCellTemplateProps & {\n onClick?: (event: ReactMouseEvent<HTMLElement, MouseEvent>) => void\n } = {\n className: clsx({\n selected: row.getIsSelected(),\n loading: cellMeta?.isLoading,\n disabled: row.original.isDisabled, // you can't select disabled rows\n inactive: row.original.inactive, // false: archived items but still selectable\n }),\n onKeyDown: (e) => {\n if (e.target instanceof HTMLInputElement) return\n // Corrected typo: handleRowKeydown -> handleRowKeyDown\n handleRowKeyDown(e, row)\n },\n depth: row.depth,\n tabIndex: 0,\n value: getValue<string>(),\n parents: row.original.parents,\n icon: row.original.icon || undefined,\n iconColor: row.original.iconColor,\n iconFilled: row.original.iconFilled,\n img: row.original.img,\n imgShape: row.original.imgShape,\n imgRatio: imgRatio,\n isRowExpandable: row.getCanExpand(),\n enableNonFolderIndent,\n isRowExpanded: row.getIsExpanded(),\n isTableExpandable: cellMeta?.isExpandable,\n onExpandClick: row.getToggleExpandedHandler(),\n startContent: row.original.startContent,\n endContent: row.original.endContent,\n isDisabled: row.original.isDisabled,\n disabledMessage: row.original.disabledMessage,\n ...pt?.cell,\n onClick: handleCellClick, // Added onClick handler\n }\n\n // Use children function if provided, otherwise default to SimpleTableCellTemplate\n return cellMeta?.children ? (\n cellMeta.children(props, row, cellTableInstance)\n ) : (\n <SimpleTableCellTemplate {...props} {...pt?.cell} />\n )\n },\n },\n ],\n [\n forceUpdateTable,\n handleSelectionLogic,\n handleRowKeyDown,\n enableClickToDeselect,\n enableNonFolderIndent,\n imgRatio,\n ], // include enableClickToDeselect for completeness\n )\n\n const handleRowSelectionChangeCallback: OnChangeFn<RowSelectionState> = useCallback(\n (updater) => {\n onRowSelectionChange(functionalUpdate(updater, rowSelection))\n },\n [onRowSelectionChange],\n )\n\n const handleRowPinningChangeCallback: OnChangeFn<RowPinningState> = useCallback(\n (updater) => {\n onRowPinningChange?.(functionalUpdate(updater, rowPinning || {}))\n },\n [onRowPinningChange],\n )\n\n const handleExpandedChange = useCallback(\n (updater: any) => {\n setExpanded?.((old) => {\n const newExpanded = updater instanceof Function ? updater(old) : updater\n onExpandedChange?.(newExpanded)\n return newExpanded\n })\n },\n [setExpanded],\n )\n\n const table = useReactTable({\n data: tableData,\n columns,\n state: {\n expanded,\n rowSelection,\n globalFilter,\n rowPinning,\n },\n onRowSelectionChange: handleRowSelectionChangeCallback,\n onRowPinningChange: handleRowPinningChangeCallback,\n filterFns: {\n fuzzy: fuzzyFilter,\n },\n globalFilterFn: 'fuzzy',\n enableRowSelection: true, //enable row selection for all rows\n enableRowPinning: !!onRowPinningChange,\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n onExpandedChange: handleExpandedChange,\n getSubRows: (row) => row.subRows,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // debugTable: true,\n meta: {\n isExpandable: !!isExpandable,\n isLoading: isLoading,\n children: children,\n ...meta,\n },\n })\n\n // Update tableRef whenever the table instance changes.\n // This ensures handleRowSelectForKeydown uses the current table instance.\n useEffect(() => {\n tableRef.current = table\n }, [table])\n\n const { rows } = table.getRowModel()\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n\n const rowVirtualizer = useVirtualizer({\n count: rows.length,\n estimateSize: () => rowHeight || 34, //estimate row height for accurate scrollbar dragging\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement: rowHeight\n ? () => rowHeight\n : typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n // Memoize the ref callback to prevent infinite re-renders\n const measureElementRef = useCallback(\n (node: HTMLElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n // Handle scroll to bottom detection\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLDivElement>) => {\n if (!onScrollBottom) return\n\n const target = event.currentTarget\n const { scrollTop, scrollHeight, clientHeight } = target\n\n // Check if we're near the bottom (within 100px)\n const isNearBottom = scrollHeight - scrollTop - clientHeight < 100\n\n if (isNearBottom && !isLoading) {\n onScrollBottom()\n }\n },\n [onScrollBottom, isLoading],\n )\n\n const handleContainerClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // if the click is outside of any row, clear selection\n if (enableClickToDeselect && !(e.target as HTMLElement).closest('tr')) {\n table.setRowSelection({})\n lastSelectedIdRef.current = null\n }\n }\n\n return (\n <Styled.TableContainer\n ref={tableContainerRef}\n className={clsx({ isLoading })}\n onScroll={handleScroll}\n onClick={handleContainerClick}\n >\n {!error && (\n <table>\n <tbody\n style={{\n height: `${rowVirtualizer?.getTotalSize()}px`, //tells scrollbar how big the table is\n }}\n >\n {rowVirtualizer?.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index] as Row<SimpleTableRow>\n return (\n <tr\n data-index={virtualRow.index} //needed for dynamic row height measurement\n ref={measureElementRef} //measure dynamic row height\n key={row.id}\n id={row.id}\n {...pt?.row}\n style={{\n transform: `translateY(${virtualRow.start}px)`, //this should always be a `style` as it changes on scroll\n ...pt?.row?.style, // custom styles to be passed\n }}\n >\n {row.getVisibleCells().map((cell) => {\n return (\n <td key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n )\n })}\n </tr>\n )\n })}\n </tbody>\n </table>\n )}\n {!!error && <EmptyPlaceholder error={error} />}\n </Styled.TableContainer>\n )\n}\n\nexport default SimpleTable\n"],"names":["fuzzyFilter","row","columnId","searchValue","addMeta","cellValue","searchString","itemRank","rankItem","fuzzySort","rowA","rowB","dir","compareItems","_a","_b","sortingFns","getRowRange","rows","idA","idB","range","singleRow","indexA","indexB","i","start","end","SimpleTable","data","isLoading","error","isExpandable","isMultiSelect","enableClickToDeselect","enableNonFolderIndent","forceUpdateTable","globalFilter","meta","rowHeight","imgRatio","onScrollBottom","children","pt","rowSelection","expanded","setExpanded","onExpandedChange","onRowSelectionChange","rowPinning","onRowPinningChange","useSimpleTableContext","lastSelectedIdRef","useRef","tableRef","tableData","useMemo","_","handleSelectionLogic","useCallback","tableInstance","rowId","isShift","isCtrlOrMeta","currentId","allProcessableRows","currentRow","r","lastId","rowsToToggle","newSelection","handleRowSelectForKeydown","event","selectedRow","isShiftKey","isCtrlKey","handleArrowNavigation","direction","visibleRows","currentIndex","nextIndex","nextRow","nextRowElement","nextCell","handleRowKeyDown","useRowKeydown","columns","getValue","cellTableInstance","cellMeta","handleCellClick","props","clsx","e","jsx","SimpleTableCellTemplate","handleRowSelectionChangeCallback","updater","functionalUpdate","handleRowPinningChangeCallback","handleExpandedChange","old","newExpanded","table","useReactTable","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","useEffect","tableContainerRef","rowVirtualizer","useVirtualizer","element","measureElementRef","node","handleScroll","target","scrollTop","scrollHeight","clientHeight","handleContainerClick","jsxs","Styled.TableContainer","virtualRow","cell","flexRender","EmptyPlaceholder"],"mappings":"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"}
@@ -118,6 +118,7 @@ import "../../context/PowerpackContext.es.js";
118
118
  import "../../context/MoveEntityContext.es.js";
119
119
  import "../../context/MenuContext.es.js";
120
120
  import "../../context/WebsocketContext.es.js";
121
+ import "../../context/GlobalContext.es.js";
121
122
  import "../../components/ReviewableCard/ReviewableCard.es.js";
122
123
  import "../../components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js";
123
124
  import "../../components/FileThumbnail/FileThumbnail.es.js";
@@ -274,7 +275,7 @@ function St(n, p, d) {
274
275
  u.push(n[s]);
275
276
  return u;
276
277
  }
277
- const We = ({
278
+ const Xe = ({
278
279
  data: n = [],
279
280
  isLoading: p,
280
281
  error: d,
@@ -563,6 +564,6 @@ const We = ({
563
564
  );
564
565
  };
565
566
  export {
566
- We as default
567
+ Xe as default
567
568
  };
568
569
  //# sourceMappingURL=SimpleTable.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleTable.es.js","sources":["../../../../../src/containers/SimpleTable/SimpleTable.tsx"],"sourcesContent":["import { FC, useMemo, useRef, MouseEvent as ReactMouseEvent, useCallback, useEffect } from 'react'\nimport * as Styled from './SimpleTable.styled'\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n ColumnDef,\n flexRender,\n Row,\n FilterFn,\n SortingFn,\n sortingFns,\n RowData,\n Table,\n OnChangeFn,\n RowSelectionState,\n functionalUpdate,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\n\nimport clsx from 'clsx'\nimport useRowKeydown, { RowKeyboardEvent } from './hooks/useRowKeydown'\n\nimport { RankingInfo, rankItem, compareItems } from '@tanstack/match-sorter-utils'\nimport { useSimpleTableContext } from './context/SimpleTableContext'\nimport { SimpleTableCellTemplate, SimpleTableCellTemplateProps } from './SimpleTableRowTemplate'\nimport { EmptyPlaceholder } from '@shared/components'\nimport { RowPinningState } from '@tanstack/react-table'\n\ndeclare module '@tanstack/react-table' {\n //add fuzzy filter to the filterFns\n interface FilterFns {\n fuzzy: FilterFn<unknown>\n }\n interface FilterMeta {\n itemRank: RankingInfo\n }\n\n interface TableMeta<TData extends RowData> {\n isExpandable?: boolean\n isLoading?: boolean\n children?: (\n props: SimpleTableCellTemplateProps,\n row: Row<TData>,\n table: Table<SimpleTableRow>,\n ) => JSX.Element\n [key: string]: any\n }\n}\n\n// Define a custom fuzzy filter function that will apply ranking info to rows (using match-sorter utils)\nconst fuzzyFilter: FilterFn<any> = (row, columnId, searchValue, addMeta) => {\n const cellValue = row.getValue(columnId)\n // convert non-string cell values to string\n let searchString =\n typeof cellValue === 'string'\n ? cellValue\n : Array.isArray(cellValue)\n ? cellValue.join(' ')\n : JSON.stringify(cellValue)\n\n // combine label and parents into a single string for searching if columnId is 'label'\n if (columnId === 'label') {\n searchString = [row.original.label, row.original.name, ...(row.original.parents || [])].join(\n ' ',\n )\n }\n\n // Rank the item\n const itemRank = rankItem(searchString, searchValue)\n\n // Store the itemRank info\n addMeta({\n itemRank,\n })\n\n // Return if the item should be filtered in/out\n return itemRank.passed\n}\n\n// Define a custom fuzzy sort function that will sort by rank if the row has ranking information\nconst fuzzySort: SortingFn<any> = (rowA, rowB, columnId) => {\n let dir = 0\n\n // Only sort by rank if the column has ranking information\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId]?.itemRank!,\n rowB.columnFiltersMeta[columnId]?.itemRank!,\n )\n }\n\n // Provide an alphanumeric fallback for when the item ranks are equal\n return dir === 0 ? sortingFns.alphanumeric(rowA, rowB, columnId) : dir\n}\n\nexport type RowItemData = {\n id: string\n name?: string | null\n label?: string | null\n subType?: string | null\n [key: string]: any\n}\n\nexport type SimpleTableRow = {\n id: string\n parentId?: string\n name: string\n label: string\n parents?: string[]\n icon?: string | null\n iconColor?: string\n iconFilled?: boolean\n img?: string | null\n imgShape?: 'square' | 'circle'\n startContent?: JSX.Element\n endContent?: JSX.Element\n subRows: SimpleTableRow[]\n data: RowItemData\n isDisabled?: boolean\n disabledMessage?: string\n inactive?: boolean\n}\n\nexport interface SimpleTableProps {\n data: SimpleTableRow[]\n isLoading: boolean\n error?: string\n isExpandable?: boolean // show expand/collapse icons\n isMultiSelect?: boolean // enable multi-select with shift+click and ctrl/cmd+click\n enableClickToDeselect?: boolean // allow deselecting a single selected row by clicking it again & clicking outside clears selection\n enableNonFolderIndent?: boolean // indent non-folder rows to align with folder rows\n forceUpdateTable?: any\n globalFilter?: string\n meta?: Record<string, any>\n rowHeight?: number // height of each row, used for virtual scrolling\n imgRatio?: number\n onScrollBottom?: () => void // callback fired when scrolled to the bottom of the table\n children?: (\n props: SimpleTableCellTemplateProps,\n row: Row<SimpleTableRow>,\n table: Table<SimpleTableRow>,\n ) => JSX.Element\n pt?: {\n cell?: Partial<SimpleTableCellTemplateProps>\n row?: Partial<React.HTMLAttributes<HTMLTableRowElement>>\n }\n}\n\n// Helper function to get row range for shift-selection\n// Operates on the provided list of rows (e.g., filtered and sorted rows)\nfunction getRowRange<TData extends RowData>(\n rows: Array<Row<TData>>,\n idA: string,\n idB: string,\n): Array<Row<TData>> {\n const range: Array<Row<TData>> = []\n // If idA and idB are the same, or one is not found, handle appropriately\n if (idA === idB) {\n const singleRow = rows.find((row) => row.id === idA)\n return singleRow ? [singleRow] : []\n }\n\n let indexA = -1\n let indexB = -1\n\n for (let i = 0; i < rows.length; i++) {\n if (rows[i].id === idA) indexA = i\n if (rows[i].id === idB) indexB = i\n if (indexA !== -1 && indexB !== -1) break\n }\n\n if (indexA === -1 || indexB === -1) return [] // One or both IDs not found\n\n const start = Math.min(indexA, indexB)\n const end = Math.max(indexA, indexB)\n\n for (let i = start; i <= end; i++) {\n range.push(rows[i])\n }\n return range\n}\n\nconst SimpleTable: FC<SimpleTableProps> = ({\n data = [],\n isLoading,\n error,\n isExpandable,\n isMultiSelect = true,\n enableClickToDeselect = true,\n enableNonFolderIndent = true,\n forceUpdateTable,\n globalFilter,\n meta,\n rowHeight,\n imgRatio,\n onScrollBottom,\n children,\n pt,\n}) => {\n const {\n rowSelection,\n expanded,\n setExpanded,\n onExpandedChange,\n onRowSelectionChange,\n rowPinning,\n onRowPinningChange,\n } = useSimpleTableContext()\n const lastSelectedIdRef = useRef<string | null>(null)\n const tableRef = useRef<Table<SimpleTableRow> | null>(null)\n\n // stable data reference\n const tableData = useMemo(() => {\n if (!isLoading) return data\n\n // show loading placeholders\n return Array.from({ length: 10 }, (_, i) => ({\n id: `placeholder-${i}`,\n name: `placeholder-${i}`,\n label: `placeholder-${i}`,\n icon: null,\n img: null,\n subRows: [],\n data: {\n id: `placeholder-${i}`,\n },\n }))\n }, [isLoading, data, forceUpdateTable])\n\n // Define the core selection logic using useCallback for stability\n const handleSelectionLogic = useCallback(\n (\n tableInstance: Table<SimpleTableRow>,\n rowId: string,\n isShift: boolean,\n isCtrlOrMeta: boolean,\n ) => {\n const currentId = rowId\n const allProcessableRows = tableInstance.getFilteredRowModel().flatRows\n const currentRow = allProcessableRows.find((r) => r.id === currentId)\n\n if (!currentRow) return\n\n // Prevent selection of disabled rows\n if (currentRow.original.isDisabled) return\n\n // If click-to-deselect is enabled and only one row is selected and it's the current row\n if (\n enableClickToDeselect &&\n !isShift &&\n !isCtrlOrMeta &&\n Object.keys(tableInstance.getState().rowSelection).length === 1 &&\n tableInstance.getState().rowSelection[currentId]\n ) {\n tableInstance.setRowSelection({})\n lastSelectedIdRef.current = null\n return\n }\n\n if (isMultiSelect && isShift && lastSelectedIdRef.current) {\n const lastId = lastSelectedIdRef.current\n const anchorRow = allProcessableRows.find((r) => r.id === lastId)\n\n if (!anchorRow) {\n tableInstance.setRowSelection({ [currentId]: true })\n } else {\n const rowsToToggle = getRowRange(allProcessableRows, currentId, lastId)\n const newSelection: RowSelectionState = {}\n rowsToToggle.forEach((r) => (newSelection[r.id] = true))\n tableInstance.setRowSelection(newSelection)\n }\n } else if (isMultiSelect && isCtrlOrMeta) {\n currentRow.toggleSelected()\n } else {\n tableInstance.setRowSelection({ [currentId]: true })\n }\n lastSelectedIdRef.current = currentId\n },\n [isMultiSelect, enableClickToDeselect],\n )\n\n // Callback for useRowKeydown's handleRowSelect prop\n // Uses tableRef to access the table instance, avoiding direct dependency on 'table' variable at definition time\n const handleRowSelectForKeydown = useCallback(\n (\n event: RowKeyboardEvent, // Use the specific keyboard event type from the hook\n selectedRow: Row<SimpleTableRow>,\n ) => {\n if (!tableRef.current) {\n console.warn('tableRef not yet available in handleRowSelectForKeydown')\n return\n }\n\n // Extract modifier keys from the event\n const isShiftKey = event.shiftKey\n const isCtrlKey = event.ctrlKey || event.metaKey\n\n handleSelectionLogic(\n tableRef.current, // Pass the main table instance\n selectedRow.id,\n isShiftKey,\n isCtrlKey,\n )\n },\n [handleSelectionLogic], // Depends only on handleSelectionLogic\n )\n\n // Handle arrow key navigation\n const handleArrowNavigation = useCallback(\n (direction: 'up' | 'down', currentRow: Row<SimpleTableRow>, event: RowKeyboardEvent) => {\n if (!tableRef.current) return\n\n // Use the row model which respects expanded state, not filtered model\n const visibleRows = tableRef.current.getRowModel().rows\n const currentIndex = visibleRows.findIndex((r) => r.id === currentRow.id)\n\n if (currentIndex === -1) return\n\n let nextIndex = direction === 'down' ? currentIndex + 1 : currentIndex - 1\n\n // Check bounds\n if (nextIndex < 0 || nextIndex >= visibleRows.length) return\n\n // Skip disabled rows\n while (nextIndex >= 0 && nextIndex < visibleRows.length) {\n const nextRow = visibleRows[nextIndex]\n if (!nextRow.original.isDisabled) {\n // Found a valid row\n // Select the next row\n handleSelectionLogic(\n tableRef.current,\n nextRow.id,\n event.shiftKey,\n event.ctrlKey || event.metaKey,\n )\n\n // Focus the next row's cell\n requestAnimationFrame(() => {\n const nextRowElement = document.getElementById(nextRow.id)\n const nextCell = nextRowElement?.querySelector('[tabindex=\"0\"]') as HTMLElement\n if (nextCell) {\n nextCell.focus()\n nextCell.scrollIntoView({ block: 'nearest', behavior: 'smooth' })\n }\n })\n return\n }\n // Move to next row if current is disabled\n nextIndex = direction === 'down' ? nextIndex + 1 : nextIndex - 1\n }\n },\n [handleSelectionLogic],\n )\n\n const { handleRowKeyDown } = useRowKeydown<SimpleTableRow>({\n handleRowSelect: handleRowSelectForKeydown,\n handleArrowNavigation,\n })\n\n const columns = useMemo<ColumnDef<SimpleTableRow>[]>(\n () => [\n {\n accessorKey: 'label',\n header: undefined,\n filterFn: 'fuzzy',\n sortingFn: fuzzySort, //sort by fuzzy rank (falls back to alphanumeric)\n cell: ({ row, getValue, table: cellTableInstance }) => {\n const cellMeta = cellTableInstance.options.meta\n\n const handleCellClick = (event: ReactMouseEvent<HTMLElement, MouseEvent>) => {\n // Prevent row selection if clicking on an interactive element within the cell\n if (\n event.target instanceof HTMLInputElement ||\n event.target instanceof HTMLButtonElement ||\n event.target instanceof HTMLTextAreaElement ||\n event.target instanceof HTMLSelectElement ||\n event.target instanceof HTMLAnchorElement ||\n (event.target as HTMLElement).closest('button, a, input, textarea, select')\n ) {\n return\n }\n handleSelectionLogic(\n cellTableInstance, // Pass the cell's table instance\n row.id,\n event.shiftKey,\n event.ctrlKey || event.metaKey,\n )\n }\n\n const props: SimpleTableCellTemplateProps & {\n onClick?: (event: ReactMouseEvent<HTMLElement, MouseEvent>) => void\n } = {\n className: clsx({\n selected: row.getIsSelected(),\n loading: cellMeta?.isLoading,\n disabled: row.original.isDisabled, // you can't select disabled rows\n inactive: row.original.inactive, // false: archived items but still selectable\n }),\n onKeyDown: (e) => {\n if (e.target instanceof HTMLInputElement) return\n // Corrected typo: handleRowKeydown -> handleRowKeyDown\n handleRowKeyDown(e, row)\n },\n depth: row.depth,\n tabIndex: 0,\n value: getValue<string>(),\n parents: row.original.parents,\n icon: row.original.icon || undefined,\n iconColor: row.original.iconColor,\n iconFilled: row.original.iconFilled,\n img: row.original.img,\n imgShape: row.original.imgShape,\n imgRatio: imgRatio,\n isRowExpandable: row.getCanExpand(),\n enableNonFolderIndent,\n isRowExpanded: row.getIsExpanded(),\n isTableExpandable: cellMeta?.isExpandable,\n onExpandClick: row.getToggleExpandedHandler(),\n startContent: row.original.startContent,\n endContent: row.original.endContent,\n isDisabled: row.original.isDisabled,\n disabledMessage: row.original.disabledMessage,\n ...pt?.cell,\n onClick: handleCellClick, // Added onClick handler\n }\n\n // Use children function if provided, otherwise default to SimpleTableCellTemplate\n return cellMeta?.children ? (\n cellMeta.children(props, row, cellTableInstance)\n ) : (\n <SimpleTableCellTemplate {...props} {...pt?.cell} />\n )\n },\n },\n ],\n [\n forceUpdateTable,\n handleSelectionLogic,\n handleRowKeyDown,\n enableClickToDeselect,\n enableNonFolderIndent,\n imgRatio,\n ], // include enableClickToDeselect for completeness\n )\n\n const handleRowSelectionChangeCallback: OnChangeFn<RowSelectionState> = useCallback(\n (updater) => {\n onRowSelectionChange(functionalUpdate(updater, rowSelection))\n },\n [onRowSelectionChange],\n )\n\n const handleRowPinningChangeCallback: OnChangeFn<RowPinningState> = useCallback(\n (updater) => {\n onRowPinningChange?.(functionalUpdate(updater, rowPinning || {}))\n },\n [onRowPinningChange],\n )\n\n const handleExpandedChange = useCallback(\n (updater: any) => {\n setExpanded?.((old) => {\n const newExpanded = updater instanceof Function ? updater(old) : updater\n onExpandedChange?.(newExpanded)\n return newExpanded\n })\n },\n [setExpanded],\n )\n\n const table = useReactTable({\n data: tableData,\n columns,\n state: {\n expanded,\n rowSelection,\n globalFilter,\n rowPinning,\n },\n onRowSelectionChange: handleRowSelectionChangeCallback,\n onRowPinningChange: handleRowPinningChangeCallback,\n filterFns: {\n fuzzy: fuzzyFilter,\n },\n globalFilterFn: 'fuzzy',\n enableRowSelection: true, //enable row selection for all rows\n enableRowPinning: !!onRowPinningChange,\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n onExpandedChange: handleExpandedChange,\n getSubRows: (row) => row.subRows,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // debugTable: true,\n meta: {\n isExpandable: !!isExpandable,\n isLoading: isLoading,\n children: children,\n ...meta,\n },\n })\n\n // Update tableRef whenever the table instance changes.\n // This ensures handleRowSelectForKeydown uses the current table instance.\n useEffect(() => {\n tableRef.current = table\n }, [table])\n\n const { rows } = table.getRowModel()\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n\n const rowVirtualizer = useVirtualizer({\n count: rows.length,\n estimateSize: () => rowHeight || 34, //estimate row height for accurate scrollbar dragging\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement: rowHeight\n ? () => rowHeight\n : typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n // Memoize the ref callback to prevent infinite re-renders\n const measureElementRef = useCallback(\n (node: HTMLElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n // Handle scroll to bottom detection\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLDivElement>) => {\n if (!onScrollBottom) return\n\n const target = event.currentTarget\n const { scrollTop, scrollHeight, clientHeight } = target\n\n // Check if we're near the bottom (within 100px)\n const isNearBottom = scrollHeight - scrollTop - clientHeight < 100\n\n if (isNearBottom && !isLoading) {\n onScrollBottom()\n }\n },\n [onScrollBottom, isLoading],\n )\n\n const handleContainerClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // if the click is outside of any row, clear selection\n if (enableClickToDeselect && !(e.target as HTMLElement).closest('tr')) {\n table.setRowSelection({})\n lastSelectedIdRef.current = null\n }\n }\n\n return (\n <Styled.TableContainer\n ref={tableContainerRef}\n className={clsx({ isLoading })}\n onScroll={handleScroll}\n onClick={handleContainerClick}\n >\n {!error && (\n <table>\n <tbody\n style={{\n height: `${rowVirtualizer?.getTotalSize()}px`, //tells scrollbar how big the table is\n }}\n >\n {rowVirtualizer?.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index] as Row<SimpleTableRow>\n return (\n <tr\n data-index={virtualRow.index} //needed for dynamic row height measurement\n ref={measureElementRef} //measure dynamic row height\n key={row.id}\n id={row.id}\n {...pt?.row}\n style={{\n transform: `translateY(${virtualRow.start}px)`, //this should always be a `style` as it changes on scroll\n ...pt?.row?.style, // custom styles to be passed\n }}\n >\n {row.getVisibleCells().map((cell) => {\n return (\n <td key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n )\n })}\n </tr>\n )\n })}\n </tbody>\n </table>\n )}\n {!!error && <EmptyPlaceholder error={error} />}\n </Styled.TableContainer>\n )\n}\n\nexport default SimpleTable\n"],"names":["fuzzyFilter","row","columnId","searchValue","addMeta","cellValue","searchString","itemRank","rankItem","fuzzySort","rowA","rowB","dir","compareItems","_a","_b","sortingFns","getRowRange","rows","idA","idB","range","singleRow","indexA","indexB","i","start","end","SimpleTable","data","isLoading","error","isExpandable","isMultiSelect","enableClickToDeselect","enableNonFolderIndent","forceUpdateTable","globalFilter","meta","rowHeight","imgRatio","onScrollBottom","children","pt","rowSelection","expanded","setExpanded","onExpandedChange","onRowSelectionChange","rowPinning","onRowPinningChange","useSimpleTableContext","lastSelectedIdRef","useRef","tableRef","tableData","useMemo","_","handleSelectionLogic","useCallback","tableInstance","rowId","isShift","isCtrlOrMeta","currentId","allProcessableRows","currentRow","r","lastId","rowsToToggle","newSelection","handleRowSelectForKeydown","event","selectedRow","isShiftKey","isCtrlKey","handleArrowNavigation","direction","visibleRows","currentIndex","nextIndex","nextRow","nextRowElement","nextCell","handleRowKeyDown","useRowKeydown","columns","getValue","cellTableInstance","cellMeta","handleCellClick","props","clsx","e","jsx","SimpleTableCellTemplate","handleRowSelectionChangeCallback","updater","functionalUpdate","handleRowPinningChangeCallback","handleExpandedChange","old","newExpanded","table","useReactTable","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","useEffect","tableContainerRef","rowVirtualizer","useVirtualizer","element","measureElementRef","node","handleScroll","target","scrollTop","scrollHeight","clientHeight","handleContainerClick","jsxs","Styled.TableContainer","virtualRow","cell","flexRender","EmptyPlaceholder"],"mappings":"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"}
1
+ {"version":3,"file":"SimpleTable.es.js","sources":["../../../../../src/containers/SimpleTable/SimpleTable.tsx"],"sourcesContent":["import { FC, useMemo, useRef, MouseEvent as ReactMouseEvent, useCallback, useEffect } from 'react'\nimport * as Styled from './SimpleTable.styled'\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getExpandedRowModel,\n ColumnDef,\n flexRender,\n Row,\n FilterFn,\n SortingFn,\n sortingFns,\n RowData,\n Table,\n OnChangeFn,\n RowSelectionState,\n functionalUpdate,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\n\nimport clsx from 'clsx'\nimport useRowKeydown, { RowKeyboardEvent } from './hooks/useRowKeydown'\n\nimport { RankingInfo, rankItem, compareItems } from '@tanstack/match-sorter-utils'\nimport { useSimpleTableContext } from './context/SimpleTableContext'\nimport { SimpleTableCellTemplate, SimpleTableCellTemplateProps } from './SimpleTableRowTemplate'\nimport { EmptyPlaceholder } from '@shared/components'\nimport { RowPinningState } from '@tanstack/react-table'\n\ndeclare module '@tanstack/react-table' {\n //add fuzzy filter to the filterFns\n interface FilterFns {\n fuzzy: FilterFn<unknown>\n }\n interface FilterMeta {\n itemRank: RankingInfo\n }\n\n interface TableMeta<TData extends RowData> {\n isExpandable?: boolean\n isLoading?: boolean\n children?: (\n props: SimpleTableCellTemplateProps,\n row: Row<TData>,\n table: Table<SimpleTableRow>,\n ) => JSX.Element\n [key: string]: any\n }\n}\n\n// Define a custom fuzzy filter function that will apply ranking info to rows (using match-sorter utils)\nconst fuzzyFilter: FilterFn<any> = (row, columnId, searchValue, addMeta) => {\n const cellValue = row.getValue(columnId)\n // convert non-string cell values to string\n let searchString =\n typeof cellValue === 'string'\n ? cellValue\n : Array.isArray(cellValue)\n ? cellValue.join(' ')\n : JSON.stringify(cellValue)\n\n // combine label and parents into a single string for searching if columnId is 'label'\n if (columnId === 'label') {\n searchString = [row.original.label, row.original.name, ...(row.original.parents || [])].join(\n ' ',\n )\n }\n\n // Rank the item\n const itemRank = rankItem(searchString, searchValue)\n\n // Store the itemRank info\n addMeta({\n itemRank,\n })\n\n // Return if the item should be filtered in/out\n return itemRank.passed\n}\n\n// Define a custom fuzzy sort function that will sort by rank if the row has ranking information\nconst fuzzySort: SortingFn<any> = (rowA, rowB, columnId) => {\n let dir = 0\n\n // Only sort by rank if the column has ranking information\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId]?.itemRank!,\n rowB.columnFiltersMeta[columnId]?.itemRank!,\n )\n }\n\n // Provide an alphanumeric fallback for when the item ranks are equal\n return dir === 0 ? sortingFns.alphanumeric(rowA, rowB, columnId) : dir\n}\n\nexport type RowItemData = {\n id: string\n name?: string | null\n label?: string | null\n subType?: string | null\n [key: string]: any\n}\n\nexport type SimpleTableRow = {\n id: string\n parentId?: string\n name: string\n label: string\n parents?: string[]\n icon?: string | null\n iconColor?: string\n iconFilled?: boolean\n img?: string | null\n imgShape?: 'square' | 'circle'\n startContent?: JSX.Element\n endContent?: JSX.Element\n subRows: SimpleTableRow[]\n data: RowItemData\n isDisabled?: boolean\n disabledMessage?: string\n inactive?: boolean\n}\n\nexport interface SimpleTableProps {\n data: SimpleTableRow[]\n isLoading: boolean\n error?: string\n isExpandable?: boolean // show expand/collapse icons\n isMultiSelect?: boolean // enable multi-select with shift+click and ctrl/cmd+click\n enableClickToDeselect?: boolean // allow deselecting a single selected row by clicking it again & clicking outside clears selection\n enableNonFolderIndent?: boolean // indent non-folder rows to align with folder rows\n forceUpdateTable?: any\n globalFilter?: string\n meta?: Record<string, any>\n rowHeight?: number // height of each row, used for virtual scrolling\n imgRatio?: number\n onScrollBottom?: () => void // callback fired when scrolled to the bottom of the table\n children?: (\n props: SimpleTableCellTemplateProps,\n row: Row<SimpleTableRow>,\n table: Table<SimpleTableRow>,\n ) => JSX.Element\n pt?: {\n cell?: Partial<SimpleTableCellTemplateProps>\n row?: Partial<React.HTMLAttributes<HTMLTableRowElement>>\n }\n}\n\n// Helper function to get row range for shift-selection\n// Operates on the provided list of rows (e.g., filtered and sorted rows)\nfunction getRowRange<TData extends RowData>(\n rows: Array<Row<TData>>,\n idA: string,\n idB: string,\n): Array<Row<TData>> {\n const range: Array<Row<TData>> = []\n // If idA and idB are the same, or one is not found, handle appropriately\n if (idA === idB) {\n const singleRow = rows.find((row) => row.id === idA)\n return singleRow ? [singleRow] : []\n }\n\n let indexA = -1\n let indexB = -1\n\n for (let i = 0; i < rows.length; i++) {\n if (rows[i].id === idA) indexA = i\n if (rows[i].id === idB) indexB = i\n if (indexA !== -1 && indexB !== -1) break\n }\n\n if (indexA === -1 || indexB === -1) return [] // One or both IDs not found\n\n const start = Math.min(indexA, indexB)\n const end = Math.max(indexA, indexB)\n\n for (let i = start; i <= end; i++) {\n range.push(rows[i])\n }\n return range\n}\n\nconst SimpleTable: FC<SimpleTableProps> = ({\n data = [],\n isLoading,\n error,\n isExpandable,\n isMultiSelect = true,\n enableClickToDeselect = true,\n enableNonFolderIndent = true,\n forceUpdateTable,\n globalFilter,\n meta,\n rowHeight,\n imgRatio,\n onScrollBottom,\n children,\n pt,\n}) => {\n const {\n rowSelection,\n expanded,\n setExpanded,\n onExpandedChange,\n onRowSelectionChange,\n rowPinning,\n onRowPinningChange,\n } = useSimpleTableContext()\n const lastSelectedIdRef = useRef<string | null>(null)\n const tableRef = useRef<Table<SimpleTableRow> | null>(null)\n\n // stable data reference\n const tableData = useMemo(() => {\n if (!isLoading) return data\n\n // show loading placeholders\n return Array.from({ length: 10 }, (_, i) => ({\n id: `placeholder-${i}`,\n name: `placeholder-${i}`,\n label: `placeholder-${i}`,\n icon: null,\n img: null,\n subRows: [],\n data: {\n id: `placeholder-${i}`,\n },\n }))\n }, [isLoading, data, forceUpdateTable])\n\n // Define the core selection logic using useCallback for stability\n const handleSelectionLogic = useCallback(\n (\n tableInstance: Table<SimpleTableRow>,\n rowId: string,\n isShift: boolean,\n isCtrlOrMeta: boolean,\n ) => {\n const currentId = rowId\n const allProcessableRows = tableInstance.getFilteredRowModel().flatRows\n const currentRow = allProcessableRows.find((r) => r.id === currentId)\n\n if (!currentRow) return\n\n // Prevent selection of disabled rows\n if (currentRow.original.isDisabled) return\n\n // If click-to-deselect is enabled and only one row is selected and it's the current row\n if (\n enableClickToDeselect &&\n !isShift &&\n !isCtrlOrMeta &&\n Object.keys(tableInstance.getState().rowSelection).length === 1 &&\n tableInstance.getState().rowSelection[currentId]\n ) {\n tableInstance.setRowSelection({})\n lastSelectedIdRef.current = null\n return\n }\n\n if (isMultiSelect && isShift && lastSelectedIdRef.current) {\n const lastId = lastSelectedIdRef.current\n const anchorRow = allProcessableRows.find((r) => r.id === lastId)\n\n if (!anchorRow) {\n tableInstance.setRowSelection({ [currentId]: true })\n } else {\n const rowsToToggle = getRowRange(allProcessableRows, currentId, lastId)\n const newSelection: RowSelectionState = {}\n rowsToToggle.forEach((r) => (newSelection[r.id] = true))\n tableInstance.setRowSelection(newSelection)\n }\n } else if (isMultiSelect && isCtrlOrMeta) {\n currentRow.toggleSelected()\n } else {\n tableInstance.setRowSelection({ [currentId]: true })\n }\n lastSelectedIdRef.current = currentId\n },\n [isMultiSelect, enableClickToDeselect],\n )\n\n // Callback for useRowKeydown's handleRowSelect prop\n // Uses tableRef to access the table instance, avoiding direct dependency on 'table' variable at definition time\n const handleRowSelectForKeydown = useCallback(\n (\n event: RowKeyboardEvent, // Use the specific keyboard event type from the hook\n selectedRow: Row<SimpleTableRow>,\n ) => {\n if (!tableRef.current) {\n console.warn('tableRef not yet available in handleRowSelectForKeydown')\n return\n }\n\n // Extract modifier keys from the event\n const isShiftKey = event.shiftKey\n const isCtrlKey = event.ctrlKey || event.metaKey\n\n handleSelectionLogic(\n tableRef.current, // Pass the main table instance\n selectedRow.id,\n isShiftKey,\n isCtrlKey,\n )\n },\n [handleSelectionLogic], // Depends only on handleSelectionLogic\n )\n\n // Handle arrow key navigation\n const handleArrowNavigation = useCallback(\n (direction: 'up' | 'down', currentRow: Row<SimpleTableRow>, event: RowKeyboardEvent) => {\n if (!tableRef.current) return\n\n // Use the row model which respects expanded state, not filtered model\n const visibleRows = tableRef.current.getRowModel().rows\n const currentIndex = visibleRows.findIndex((r) => r.id === currentRow.id)\n\n if (currentIndex === -1) return\n\n let nextIndex = direction === 'down' ? currentIndex + 1 : currentIndex - 1\n\n // Check bounds\n if (nextIndex < 0 || nextIndex >= visibleRows.length) return\n\n // Skip disabled rows\n while (nextIndex >= 0 && nextIndex < visibleRows.length) {\n const nextRow = visibleRows[nextIndex]\n if (!nextRow.original.isDisabled) {\n // Found a valid row\n // Select the next row\n handleSelectionLogic(\n tableRef.current,\n nextRow.id,\n event.shiftKey,\n event.ctrlKey || event.metaKey,\n )\n\n // Focus the next row's cell\n requestAnimationFrame(() => {\n const nextRowElement = document.getElementById(nextRow.id)\n const nextCell = nextRowElement?.querySelector('[tabindex=\"0\"]') as HTMLElement\n if (nextCell) {\n nextCell.focus()\n nextCell.scrollIntoView({ block: 'nearest', behavior: 'smooth' })\n }\n })\n return\n }\n // Move to next row if current is disabled\n nextIndex = direction === 'down' ? nextIndex + 1 : nextIndex - 1\n }\n },\n [handleSelectionLogic],\n )\n\n const { handleRowKeyDown } = useRowKeydown<SimpleTableRow>({\n handleRowSelect: handleRowSelectForKeydown,\n handleArrowNavigation,\n })\n\n const columns = useMemo<ColumnDef<SimpleTableRow>[]>(\n () => [\n {\n accessorKey: 'label',\n header: undefined,\n filterFn: 'fuzzy',\n sortingFn: fuzzySort, //sort by fuzzy rank (falls back to alphanumeric)\n cell: ({ row, getValue, table: cellTableInstance }) => {\n const cellMeta = cellTableInstance.options.meta\n\n const handleCellClick = (event: ReactMouseEvent<HTMLElement, MouseEvent>) => {\n // Prevent row selection if clicking on an interactive element within the cell\n if (\n event.target instanceof HTMLInputElement ||\n event.target instanceof HTMLButtonElement ||\n event.target instanceof HTMLTextAreaElement ||\n event.target instanceof HTMLSelectElement ||\n event.target instanceof HTMLAnchorElement ||\n (event.target as HTMLElement).closest('button, a, input, textarea, select')\n ) {\n return\n }\n handleSelectionLogic(\n cellTableInstance, // Pass the cell's table instance\n row.id,\n event.shiftKey,\n event.ctrlKey || event.metaKey,\n )\n }\n\n const props: SimpleTableCellTemplateProps & {\n onClick?: (event: ReactMouseEvent<HTMLElement, MouseEvent>) => void\n } = {\n className: clsx({\n selected: row.getIsSelected(),\n loading: cellMeta?.isLoading,\n disabled: row.original.isDisabled, // you can't select disabled rows\n inactive: row.original.inactive, // false: archived items but still selectable\n }),\n onKeyDown: (e) => {\n if (e.target instanceof HTMLInputElement) return\n // Corrected typo: handleRowKeydown -> handleRowKeyDown\n handleRowKeyDown(e, row)\n },\n depth: row.depth,\n tabIndex: 0,\n value: getValue<string>(),\n parents: row.original.parents,\n icon: row.original.icon || undefined,\n iconColor: row.original.iconColor,\n iconFilled: row.original.iconFilled,\n img: row.original.img,\n imgShape: row.original.imgShape,\n imgRatio: imgRatio,\n isRowExpandable: row.getCanExpand(),\n enableNonFolderIndent,\n isRowExpanded: row.getIsExpanded(),\n isTableExpandable: cellMeta?.isExpandable,\n onExpandClick: row.getToggleExpandedHandler(),\n startContent: row.original.startContent,\n endContent: row.original.endContent,\n isDisabled: row.original.isDisabled,\n disabledMessage: row.original.disabledMessage,\n ...pt?.cell,\n onClick: handleCellClick, // Added onClick handler\n }\n\n // Use children function if provided, otherwise default to SimpleTableCellTemplate\n return cellMeta?.children ? (\n cellMeta.children(props, row, cellTableInstance)\n ) : (\n <SimpleTableCellTemplate {...props} {...pt?.cell} />\n )\n },\n },\n ],\n [\n forceUpdateTable,\n handleSelectionLogic,\n handleRowKeyDown,\n enableClickToDeselect,\n enableNonFolderIndent,\n imgRatio,\n ], // include enableClickToDeselect for completeness\n )\n\n const handleRowSelectionChangeCallback: OnChangeFn<RowSelectionState> = useCallback(\n (updater) => {\n onRowSelectionChange(functionalUpdate(updater, rowSelection))\n },\n [onRowSelectionChange],\n )\n\n const handleRowPinningChangeCallback: OnChangeFn<RowPinningState> = useCallback(\n (updater) => {\n onRowPinningChange?.(functionalUpdate(updater, rowPinning || {}))\n },\n [onRowPinningChange],\n )\n\n const handleExpandedChange = useCallback(\n (updater: any) => {\n setExpanded?.((old) => {\n const newExpanded = updater instanceof Function ? updater(old) : updater\n onExpandedChange?.(newExpanded)\n return newExpanded\n })\n },\n [setExpanded],\n )\n\n const table = useReactTable({\n data: tableData,\n columns,\n state: {\n expanded,\n rowSelection,\n globalFilter,\n rowPinning,\n },\n onRowSelectionChange: handleRowSelectionChangeCallback,\n onRowPinningChange: handleRowPinningChangeCallback,\n filterFns: {\n fuzzy: fuzzyFilter,\n },\n globalFilterFn: 'fuzzy',\n enableRowSelection: true, //enable row selection for all rows\n enableRowPinning: !!onRowPinningChange,\n getRowId: (row) => row.id,\n enableSubRowSelection: false, //disable sub row selection\n onExpandedChange: handleExpandedChange,\n getSubRows: (row) => row.subRows,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n filterFromLeafRows: true,\n // debugTable: true,\n meta: {\n isExpandable: !!isExpandable,\n isLoading: isLoading,\n children: children,\n ...meta,\n },\n })\n\n // Update tableRef whenever the table instance changes.\n // This ensures handleRowSelectForKeydown uses the current table instance.\n useEffect(() => {\n tableRef.current = table\n }, [table])\n\n const { rows } = table.getRowModel()\n\n //The virtualizer needs to know the scrollable container element\n const tableContainerRef = useRef<HTMLDivElement>(null)\n\n const rowVirtualizer = useVirtualizer({\n count: rows.length,\n estimateSize: () => rowHeight || 34, //estimate row height for accurate scrollbar dragging\n getScrollElement: () => tableContainerRef.current,\n //measure dynamic row height, except in firefox because it measures table border height incorrectly\n measureElement: rowHeight\n ? () => rowHeight\n : typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1\n ? (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: 5,\n })\n\n // Memoize the ref callback to prevent infinite re-renders\n const measureElementRef = useCallback(\n (node: HTMLElement | null) => {\n if (node) {\n rowVirtualizer.measureElement(node)\n }\n },\n [rowVirtualizer],\n )\n\n // Handle scroll to bottom detection\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLDivElement>) => {\n if (!onScrollBottom) return\n\n const target = event.currentTarget\n const { scrollTop, scrollHeight, clientHeight } = target\n\n // Check if we're near the bottom (within 100px)\n const isNearBottom = scrollHeight - scrollTop - clientHeight < 100\n\n if (isNearBottom && !isLoading) {\n onScrollBottom()\n }\n },\n [onScrollBottom, isLoading],\n )\n\n const handleContainerClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // if the click is outside of any row, clear selection\n if (enableClickToDeselect && !(e.target as HTMLElement).closest('tr')) {\n table.setRowSelection({})\n lastSelectedIdRef.current = null\n }\n }\n\n return (\n <Styled.TableContainer\n ref={tableContainerRef}\n className={clsx({ isLoading })}\n onScroll={handleScroll}\n onClick={handleContainerClick}\n >\n {!error && (\n <table>\n <tbody\n style={{\n height: `${rowVirtualizer?.getTotalSize()}px`, //tells scrollbar how big the table is\n }}\n >\n {rowVirtualizer?.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index] as Row<SimpleTableRow>\n return (\n <tr\n data-index={virtualRow.index} //needed for dynamic row height measurement\n ref={measureElementRef} //measure dynamic row height\n key={row.id}\n id={row.id}\n {...pt?.row}\n style={{\n transform: `translateY(${virtualRow.start}px)`, //this should always be a `style` as it changes on scroll\n ...pt?.row?.style, // custom styles to be passed\n }}\n >\n {row.getVisibleCells().map((cell) => {\n return (\n <td key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n )\n })}\n </tr>\n )\n })}\n </tbody>\n </table>\n )}\n {!!error && <EmptyPlaceholder error={error} />}\n </Styled.TableContainer>\n )\n}\n\nexport default SimpleTable\n"],"names":["fuzzyFilter","row","columnId","searchValue","addMeta","cellValue","searchString","itemRank","rankItem","fuzzySort","rowA","rowB","dir","compareItems","_a","_b","sortingFns","getRowRange","rows","idA","idB","range","singleRow","indexA","indexB","i","start","end","SimpleTable","data","isLoading","error","isExpandable","isMultiSelect","enableClickToDeselect","enableNonFolderIndent","forceUpdateTable","globalFilter","meta","rowHeight","imgRatio","onScrollBottom","children","pt","rowSelection","expanded","setExpanded","onExpandedChange","onRowSelectionChange","rowPinning","onRowPinningChange","useSimpleTableContext","lastSelectedIdRef","useRef","tableRef","tableData","useMemo","_","handleSelectionLogic","useCallback","tableInstance","rowId","isShift","isCtrlOrMeta","currentId","allProcessableRows","currentRow","r","lastId","rowsToToggle","newSelection","handleRowSelectForKeydown","event","selectedRow","isShiftKey","isCtrlKey","handleArrowNavigation","direction","visibleRows","currentIndex","nextIndex","nextRow","nextRowElement","nextCell","handleRowKeyDown","useRowKeydown","columns","getValue","cellTableInstance","cellMeta","handleCellClick","props","clsx","e","jsx","SimpleTableCellTemplate","handleRowSelectionChangeCallback","updater","functionalUpdate","handleRowPinningChangeCallback","handleExpandedChange","old","newExpanded","table","useReactTable","getCoreRowModel","getFilteredRowModel","getExpandedRowModel","useEffect","tableContainerRef","rowVirtualizer","useVirtualizer","element","measureElementRef","node","handleScroll","target","scrollTop","scrollHeight","clientHeight","handleContainerClick","jsxs","Styled.TableContainer","virtualRow","cell","flexRender","EmptyPlaceholder"],"mappings":"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"}