@ynput/ayon-frontend-shared 0.3.39 → 0.3.41

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 (414) 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/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +219 -218
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/_virtual/index.cjs22.js +1 -1
  8. package/dist/_virtual/index.cjs23.js +1 -1
  9. package/dist/_virtual/index.cjs24.js +1 -1
  10. package/dist/_virtual/index.cjs6.js +1 -1
  11. package/dist/_virtual/index.cjs8.js +1 -1
  12. package/dist/_virtual/index.es22.js +3 -3
  13. package/dist/_virtual/index.es23.js +5 -5
  14. package/dist/_virtual/index.es24.js +5 -5
  15. package/dist/_virtual/index.es6.js +2 -2
  16. package/dist/_virtual/index.es8.js +2 -2
  17. package/dist/api.cjs.js +1 -1
  18. package/dist/api.es.js +219 -220
  19. package/dist/index.cjs.js +1 -1
  20. package/dist/index.es.js +10 -9
  21. package/dist/index.es.js.map +1 -1
  22. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  23. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  24. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  25. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  26. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  27. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  28. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  29. package/dist/node_modules/remove-accents/index.es.js +1 -1
  30. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  31. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  32. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  33. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  34. package/dist/shared/src/api/generated/graphql.cjs.js +20 -58
  35. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  36. package/dist/shared/src/api/generated/graphql.es.js +37 -75
  37. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  38. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  40. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  41. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  42. package/dist/shared/src/api/queries/entityLists/getLists.es.js +14 -16
  43. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  44. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js +1 -1
  45. package/dist/shared/src/api/queries/grouping/getGrouping.cjs.js.map +1 -1
  46. package/dist/shared/src/api/queries/grouping/getGrouping.es.js +6 -21
  47. package/dist/shared/src/api/queries/grouping/getGrouping.es.js.map +1 -1
  48. package/dist/shared/src/api/queries/products/createProduct.cjs.js +1 -1
  49. package/dist/shared/src/api/queries/products/createProduct.cjs.js.map +1 -1
  50. package/dist/shared/src/api/queries/products/createProduct.es.js +7 -46
  51. package/dist/shared/src/api/queries/products/createProduct.es.js.map +1 -1
  52. package/dist/shared/src/api/queries/products/getProduct.cjs.js +2 -0
  53. package/dist/shared/src/api/queries/products/getProduct.cjs.js.map +1 -0
  54. package/dist/shared/src/api/queries/products/getProduct.es.js +52 -0
  55. package/dist/shared/src/api/queries/products/getProduct.es.js.map +1 -0
  56. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  57. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  58. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +3 -2
  59. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  60. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  61. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  62. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +3 -2
  63. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  64. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  65. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  66. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +3 -2
  67. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  68. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  69. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  70. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +3 -2
  71. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  72. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  73. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  74. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +3 -2
  75. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  76. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  77. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  78. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +5 -4
  79. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  80. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  81. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  82. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +3 -2
  83. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  84. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  85. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  86. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +3 -2
  87. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  88. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  89. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  90. package/dist/shared/src/components/RenameForm/RenameForm.es.js +3 -2
  91. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  92. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  93. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  94. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +3 -2
  95. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  96. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  97. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  98. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +4 -3
  99. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  100. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  101. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  102. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +3 -2
  103. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  104. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  105. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  106. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +3 -2
  107. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  108. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  109. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  110. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +339 -353
  111. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  112. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  113. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  114. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +5 -4
  115. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  116. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  117. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  118. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +3 -2
  119. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  120. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  121. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  122. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +3 -2
  123. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  124. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  125. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  126. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +7 -6
  127. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  128. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  129. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  130. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +3 -2
  131. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  132. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  133. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  134. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +3 -2
  135. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  136. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  137. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  138. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +113 -119
  139. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  140. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  141. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  142. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +3 -2
  143. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  144. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  145. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  146. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +3 -2
  147. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  148. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  149. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  150. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +132 -122
  151. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  152. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js +6 -6
  153. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
  154. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js +1 -1
  155. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
  156. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +2 -0
  157. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -0
  158. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +148 -0
  159. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -0
  160. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.cjs.js +29 -0
  161. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.cjs.js.map +1 -0
  162. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.es.js +34 -0
  163. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.es.js.map +1 -0
  164. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  165. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  166. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +3 -2
  167. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  168. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  170. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +3 -2
  171. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  172. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  173. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  174. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +17 -16
  175. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  176. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  177. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  178. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +3 -2
  179. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  180. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  181. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  182. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +3 -2
  183. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  184. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js +2 -0
  185. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js.map +1 -0
  186. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js +9 -0
  187. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js.map +1 -0
  188. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js +1 -1
  189. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js.map +1 -1
  190. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js +12 -12
  191. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js.map +1 -1
  192. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
  193. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
  194. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  195. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  196. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +3 -2
  197. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  198. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  199. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  200. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +3 -2
  201. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  202. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  203. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  204. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +3 -2
  205. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  206. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  207. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  208. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +3 -2
  209. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  210. package/dist/shared/src/containers/Feed/Feed.styled.cjs.js +1 -1
  211. package/dist/shared/src/containers/Feed/Feed.styled.cjs.js.map +1 -1
  212. package/dist/shared/src/containers/Feed/Feed.styled.es.js +5 -5
  213. package/dist/shared/src/containers/Feed/Feed.styled.es.js.map +1 -1
  214. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  215. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  216. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +3 -2
  217. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  218. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  219. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  220. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +3 -2
  221. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  222. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  223. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  224. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +3 -2
  225. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  226. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  227. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  228. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +5 -4
  229. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  230. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  231. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  232. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +3 -2
  233. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  234. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  235. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  236. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +7 -6
  237. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  238. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  239. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  240. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +3 -2
  241. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  242. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  243. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  244. package/dist/shared/src/containers/ListTable/ListTable.es.js +3 -2
  245. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  246. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  247. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  248. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +3 -2
  249. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  250. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  251. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  252. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +3 -2
  253. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  254. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  255. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  256. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +365 -363
  257. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  260. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +3 -2
  261. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  263. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  264. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +3 -2
  265. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  268. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +3 -2
  269. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  270. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  272. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +3 -2
  273. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  274. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  276. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +3 -2
  277. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  278. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  279. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  280. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +3 -2
  281. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  282. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  283. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  284. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +3 -2
  285. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  286. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  287. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  288. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +6 -5
  289. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  290. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  291. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  292. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +3 -2
  293. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  294. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  295. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  296. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +3 -2
  297. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  298. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  299. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  300. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +3 -2
  301. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  302. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  303. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  304. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +3 -2
  305. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  306. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  307. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  308. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +3 -2
  309. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  310. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  311. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  312. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +3 -2
  313. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  316. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +3 -2
  317. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  318. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  319. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  320. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +3 -2
  321. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  322. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  323. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  324. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +3 -2
  325. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  326. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  327. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  328. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +3 -2
  329. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  330. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  331. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  332. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +3 -2
  333. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  334. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  335. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  336. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +3 -2
  337. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  338. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  339. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  340. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +14 -13
  341. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  342. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  343. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +3 -2
  345. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  346. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  347. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  348. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +4 -3
  349. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  350. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
  351. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +3 -2
  353. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  354. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  355. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  356. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +5 -4
  357. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  358. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  359. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  360. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +3 -2
  361. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  362. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  363. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  364. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +3 -2
  365. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  366. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  367. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  368. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +3 -2
  369. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  370. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  371. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  372. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +3 -2
  373. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  374. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  375. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  376. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +3 -2
  377. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  378. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  379. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  380. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +3 -2
  381. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  382. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  383. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  384. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +3 -2
  385. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  386. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  387. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  388. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +61 -82
  389. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  390. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  391. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  392. package/dist/shared/src/context/ProjectContext.es.js +83 -66
  393. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  394. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  395. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  396. package/dist/shared/src/context/WebsocketContext.es.js +5 -4
  397. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  398. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  399. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  400. package/dist/types/api/generated/graphql.d.ts +1 -34
  401. package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +3 -1
  402. package/dist/types/api/queries/entityLists/getLists.d.ts +2 -315
  403. package/dist/types/api/queries/products/createProduct.d.ts +2 -2
  404. package/dist/types/api/queries/products/getProduct.d.ts +259 -0
  405. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
  406. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.d.ts +3 -2
  407. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.d.ts +7 -0
  408. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.d.ts +2 -0
  409. package/dist/types/containers/DetailsPanel/helpers/buildEntityTypeIcons.d.ts +4 -0
  410. package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +1 -1
  411. package/dist/types/containers/ProjectTreeTable/types/index.d.ts +1 -0
  412. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +1 -0
  413. package/dist/types/context/ProjectContext.d.ts +2 -1
  414. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSettingsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\nimport { SummaryCalc, SummaryFormat, RowScope } from '../types/summaryTypes'\nimport { isEqual } from 'lodash'\nimport { checkColumnVisibility } from '../utils'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n defaultColumnVisibility?: VisibilityState\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n defaultColumnVisibility,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const columnOrderTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const prevRowHeightRef = React.useRef<number | undefined>(undefined)\n const lockedAspectRatioRef = React.useRef<number | null>(null)\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState | null>(null)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => {\n const allKnownIds = allColumnsRef.current\n // Expand sparse columnVisibility to explicit values for all known columns so that\n // \"undefined\" is never ambiguous when columns are saved and reloaded.\n // Special columns (drag-handle, row-selection) are always injected by the provider,\n // so they must never be persisted — strip them from visibility and order entirely.\n const specialIds = new Set([DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n if (allKnownIds.length > 0) {\n const resolvedVisibility = { ...next.columnVisibility }\n allKnownIds.forEach((id) => {\n if (!specialIds.has(id) && resolvedVisibility[id] === undefined) {\n resolvedVisibility[id] = checkColumnVisibility({}, id, defaultColumnVisibility)\n }\n })\n // Remove special columns from visibility and order before persisting\n specialIds.forEach((id) => delete resolvedVisibility[id])\n const resolvedOrder = (next.columnOrder ?? []).filter((id) => !specialIds.has(id))\n onChange(\n { ...next, columnVisibility: resolvedVisibility, columnOrder: resolvedOrder },\n allKnownIds,\n )\n } else {\n onChange(next, allKnownIds)\n }\n }\n const columnsConfig = config as ColumnsConfig\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight = 34,\n columnSummaries: columnSummariesInit = {},\n columnSummaryScopes: columnSummaryScopesInit = {},\n columnSummaryFormats: columnSummaryFormatsInit = {},\n } = columnsConfig || {}\n\n // Clear internal row height when config changes (e.g., when switching views)\n // This happens during render, before the component uses the value\n if (prevRowHeightRef.current !== configRowHeight && prevRowHeightRef.current !== undefined) {\n // Config changed, clear internal state\n if (internalRowHeight !== null) {\n setInternalRowHeight(null)\n }\n // Clear any pending timeout\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n rowHeightTimeoutRef.current = null\n }\n }\n prevRowHeightRef.current = configRowHeight\n\n // Use internal row height during adjustments, otherwise use config value\n const rowHeight = internalRowHeight ?? configRowHeight\n\n const sorting = [...sortingInit]\n // Use internal column order for immediate UI updates, otherwise use config value\n const columnOrderBase = internalColumnOrder ?? [...columnOrderInit]\n const columnOrder = [...columnOrderBase]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode (except folder grouping), always pin the name column\n // and ensure it is first in column order\n if (groupBy && groupBy.id !== 'folder') {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n\n const newPinnedColumns = pinnedColumns.filter((col) =>\n checkColumnVisibility(visibility, col, defaultColumnVisibility),\n )\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n // Filter out special columns that are added dynamically\n const filteredOrder = order.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n\n const newPinning = updatePinningOrderOnOrderChange(filteredOrder)\n\n // Update UI immediately (optimistic)\n setInternalColumnOrder(filteredOrder)\n\n // Clear any existing timeout to debounce API calls\n if (columnOrderTimeoutRef.current) {\n clearTimeout(columnOrderTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n columnOrderTimeoutRef.current = setTimeout(() => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: filteredOrder,\n columnPinning: newPinning,\n })\n // Clear internal state after persistence\n setInternalColumnOrder(null)\n }, 300)\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateColumnSummary = (columnId: string, calc: SummaryCalc) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaries: { ...columnSummariesInit, [columnId]: calc },\n })\n }\n\n const updateColumnSummaryScope = (columnId: string, scope: RowScope) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryScopes: { ...columnSummaryScopesInit, [columnId]: scope },\n })\n }\n\n const updateColumnSummaryFormat = (columnId: string, format: SummaryFormat) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryFormats: { ...columnSummaryFormatsInit, [columnId]: format },\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeight = React.useCallback(\n (newRowHeight: number) => {\n // Lock the aspect ratio on first call if not already locked\n if (lockedAspectRatioRef.current === null) {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n lockedAspectRatioRef.current = currentThumbnailWidth / currentRowHeight\n }\n const newThumbnailWidth = lockedAspectRatioRef.current * newRowHeight\n\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n },\n [columnsSizingExternal, configRowHeight],\n )\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = React.useCallback(\n (newRowHeight: number) => {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n const currentRatio = currentThumbnailWidth / currentRowHeight\n\n const newThumbnailWidth = currentRatio * newRowHeight\n\n // Update UI immediately\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n columnSizing: {\n ...columnsSizingExternal,\n thumbnail: newThumbnailWidth,\n },\n })\n\n // Clean up internal state after API call completes\n setInternalRowHeight(null)\n setInternalColumnSizing(null)\n lockedAspectRatioRef.current = null\n }, 300)\n },\n [\n columnsConfig,\n onChangeWithColumns,\n columnsSizingExternal,\n configRowHeight,\n internalColumnSizing,\n ],\n )\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const nextFull = typeof updater === 'function' ? updater(columnVisibility) : updater\n\n // Calculate sparse version: only keys that are different from defaults\n const sparseNext: VisibilityState = {}\n Object.keys(nextFull).forEach((key) => {\n const defaultValue = checkColumnVisibility({}, key, defaultColumnVisibility)\n if (nextFull[key] !== defaultValue) {\n sparseNext[key] = nextFull[key]\n }\n })\n\n if (isEqual(sparseNext, columnVisibility)) return\n setColumnVisibility(sparseNext)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n if (isEqual(newPinning, columnPinning)) return\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n if (isEqual(newOrder, columnOrder)) return\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n if (isEqual(newSizing, columnSizing)) return\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n if (isEqual(newSorting, sorting)) return\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n defaultColumnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // column summary calc\n columnSummaries: columnSummariesInit,\n updateColumnSummary,\n // column summary row scope\n columnSummaryScopes: columnSummaryScopesInit,\n updateColumnSummaryScope,\n // column summary display format\n columnSummaryFormats: columnSummaryFormatsInit,\n updateColumnSummaryFormat,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","defaultColumnVisibility","allColumnsRef","React","resizingTimeoutRef","rowHeightTimeoutRef","columnOrderTimeoutRef","prevRowHeightRef","lockedAspectRatioRef","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","internalColumnOrder","setInternalColumnOrder","setAllColumns","allColumnIds","onChangeWithColumns","next","allKnownIds","specialIds","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","resolvedVisibility","id","checkColumnVisibility","resolvedOrder","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","columnSummariesInit","columnSummaryScopesInit","columnSummaryFormatsInit","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","filteredPinned","nameIndex","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumns","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","updateColumnVisibility","updateColumnOrder","filteredOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateColumnSummary","columnId","calc","updateColumnSummaryScope","scope","updateColumnSummaryFormat","format","updateGroupBy","updateGroupByConfig","updateRowHeight","newRowHeight","currentThumbnailWidth","currentRowHeight","newThumbnailWidth","updateRowHeightWithPersistence","columnVisibilityOnChange","updater","nextFull","sparseNext","key","defaultValue","isEqual","columnPinningOnChange","functionalUpdate","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnSettingsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\nimport { SummaryCalc, SummaryFormat, RowScope } from '../types/summaryTypes'\nimport { isEqual } from 'lodash'\nimport { checkColumnVisibility } from '../utils'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n defaultColumnVisibility?: VisibilityState\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n defaultColumnVisibility,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const columnOrderTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const prevRowHeightRef = React.useRef<number | undefined>(undefined)\n const lockedAspectRatioRef = React.useRef<number | null>(null)\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState | null>(null)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => {\n const allKnownIds = allColumnsRef.current\n // Expand sparse columnVisibility to explicit values for all known columns so that\n // \"undefined\" is never ambiguous when columns are saved and reloaded.\n // Special columns (drag-handle, row-selection) are always injected by the provider,\n // so they must never be persisted — strip them from visibility and order entirely.\n const specialIds = new Set([DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n if (allKnownIds.length > 0) {\n const resolvedVisibility = { ...next.columnVisibility }\n allKnownIds.forEach((id) => {\n if (!specialIds.has(id) && resolvedVisibility[id] === undefined) {\n resolvedVisibility[id] = checkColumnVisibility({}, id, defaultColumnVisibility)\n }\n })\n // Remove special columns from visibility and order before persisting\n specialIds.forEach((id) => delete resolvedVisibility[id])\n const resolvedOrder = (next.columnOrder ?? []).filter((id) => !specialIds.has(id))\n onChange(\n { ...next, columnVisibility: resolvedVisibility, columnOrder: resolvedOrder },\n allKnownIds,\n )\n } else {\n onChange(next, allKnownIds)\n }\n }\n const columnsConfig = config as ColumnsConfig\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight = 34,\n columnSummaries: columnSummariesInit = {},\n columnSummaryScopes: columnSummaryScopesInit = {},\n columnSummaryFormats: columnSummaryFormatsInit = {},\n } = columnsConfig || {}\n\n // Clear internal row height when config changes (e.g., when switching views)\n // This happens during render, before the component uses the value\n if (prevRowHeightRef.current !== configRowHeight && prevRowHeightRef.current !== undefined) {\n // Config changed, clear internal state\n if (internalRowHeight !== null) {\n setInternalRowHeight(null)\n }\n // Clear any pending timeout\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n rowHeightTimeoutRef.current = null\n }\n }\n prevRowHeightRef.current = configRowHeight\n\n // Use internal row height during adjustments, otherwise use config value\n const rowHeight = internalRowHeight ?? configRowHeight\n\n const sorting = [...sortingInit]\n // Use internal column order for immediate UI updates, otherwise use config value\n const columnOrderBase = internalColumnOrder ?? [...columnOrderInit]\n const columnOrder = [...columnOrderBase]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode (except folder grouping), always pin the name column\n // and ensure it is first in column order\n if (groupBy && groupBy.id !== 'folder') {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n\n const newPinnedColumns = pinnedColumns.filter((col) =>\n checkColumnVisibility(visibility, col, defaultColumnVisibility),\n )\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n // Filter out special columns that are added dynamically\n const filteredOrder = order.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n\n const newPinning = updatePinningOrderOnOrderChange(filteredOrder)\n\n // Update UI immediately (optimistic)\n setInternalColumnOrder(filteredOrder)\n\n // Clear any existing timeout to debounce API calls\n if (columnOrderTimeoutRef.current) {\n clearTimeout(columnOrderTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n columnOrderTimeoutRef.current = setTimeout(() => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: filteredOrder,\n columnPinning: newPinning,\n })\n // Clear internal state after persistence\n setInternalColumnOrder(null)\n }, 300)\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateColumnSummary = (columnId: string, calc: SummaryCalc) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaries: { ...columnSummariesInit, [columnId]: calc },\n })\n }\n\n const updateColumnSummaryScope = (columnId: string, scope: RowScope) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryScopes: { ...columnSummaryScopesInit, [columnId]: scope },\n })\n }\n\n const updateColumnSummaryFormat = (columnId: string, format: SummaryFormat) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryFormats: { ...columnSummaryFormatsInit, [columnId]: format },\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeight = React.useCallback(\n (newRowHeight: number) => {\n // Lock the aspect ratio on first call if not already locked\n if (lockedAspectRatioRef.current === null) {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n lockedAspectRatioRef.current = currentThumbnailWidth / currentRowHeight\n }\n const newThumbnailWidth = lockedAspectRatioRef.current * newRowHeight\n\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n },\n [columnsSizingExternal, configRowHeight],\n )\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = React.useCallback(\n (newRowHeight: number) => {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n const currentRatio = currentThumbnailWidth / currentRowHeight\n\n const newThumbnailWidth = currentRatio * newRowHeight\n\n // Update UI immediately\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n columnSizing: {\n ...columnsSizingExternal,\n thumbnail: newThumbnailWidth,\n },\n })\n\n // Clean up internal state after API call completes\n setInternalRowHeight(null)\n setInternalColumnSizing(null)\n lockedAspectRatioRef.current = null\n }, 300)\n },\n [\n columnsConfig,\n onChangeWithColumns,\n columnsSizingExternal,\n configRowHeight,\n internalColumnSizing,\n ],\n )\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const nextFull = typeof updater === 'function' ? updater(columnVisibility) : updater\n\n // Calculate sparse version: only keys that are different from defaults\n const sparseNext: VisibilityState = {}\n Object.keys(nextFull).forEach((key) => {\n const defaultValue = checkColumnVisibility({}, key, defaultColumnVisibility)\n if (nextFull[key] !== defaultValue) {\n sparseNext[key] = nextFull[key]\n }\n })\n\n if (isEqual(sparseNext, columnVisibility)) return\n setColumnVisibility(sparseNext)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n if (isEqual(newPinning, columnPinning)) return\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n if (isEqual(newOrder, columnOrder)) return\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n if (isEqual(newSizing, columnSizing)) return\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n if (isEqual(newSorting, sorting)) return\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n defaultColumnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // column summary calc\n columnSummaries: columnSummariesInit,\n updateColumnSummary,\n // column summary row scope\n columnSummaryScopes: columnSummaryScopesInit,\n updateColumnSummaryScope,\n // column summary display format\n columnSummaryFormats: columnSummaryFormatsInit,\n updateColumnSummaryFormat,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","defaultColumnVisibility","allColumnsRef","React","resizingTimeoutRef","rowHeightTimeoutRef","columnOrderTimeoutRef","prevRowHeightRef","lockedAspectRatioRef","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","internalColumnOrder","setInternalColumnOrder","setAllColumns","allColumnIds","onChangeWithColumns","next","allKnownIds","specialIds","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","resolvedVisibility","id","checkColumnVisibility","resolvedOrder","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","columnSummariesInit","columnSummaryScopesInit","columnSummaryFormatsInit","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","filteredPinned","nameIndex","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumns","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","updateColumnVisibility","updateColumnOrder","filteredOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateColumnSummary","columnId","calc","updateColumnSummaryScope","scope","updateColumnSummaryFormat","format","updateGroupBy","updateGroupByConfig","updateRowHeight","newRowHeight","currentThumbnailWidth","currentRowHeight","newThumbnailWidth","updateRowHeightWithPersistence","columnVisibilityOnChange","updater","nextFull","sparseNext","key","defaultValue","isEqual","columnPinningOnChange","functionalUpdate","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
@@ -234,6 +234,7 @@ import "../../Slicer/context/SlicerContext.es.js";
234
234
  import "../../Slicer/hooks/useTableDataBySlice.es.js";
235
235
  import "../../DetailsPanel/DetailsPanel.styled.es.js";
236
236
  import "../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.es.js";
237
+ import "../../DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.es.js";
237
238
  import "../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js";
238
239
  import "../../../components/PlayableIcon/PlayableIcon.es.js";
239
240
  import "../../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js";
@@ -290,7 +291,7 @@ import "../../../components/Menu/MenuItem.es.js";
290
291
  import "../../../components/ReviewablesSelector/ReviewablesSelector.es.js";
291
292
  import "../../../components/ColumnHeaderMenuUI.es.js";
292
293
  import { checkColumnVisibility as B } from "../utils/checkColumnVisibility.es.js";
293
- const qn = ({
294
+ const Kn = ({
294
295
  children: q,
295
296
  config: K,
296
297
  onChange: v,
@@ -563,6 +564,6 @@ const qn = ({
563
564
  );
564
565
  };
565
566
  export {
566
- qn as ColumnSettingsProvider
567
+ Kn as ColumnSettingsProvider
567
568
  };
568
569
  //# sourceMappingURL=ColumnSettingsProvider.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSettingsProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\nimport { SummaryCalc, SummaryFormat, RowScope } from '../types/summaryTypes'\nimport { isEqual } from 'lodash'\nimport { checkColumnVisibility } from '../utils'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n defaultColumnVisibility?: VisibilityState\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n defaultColumnVisibility,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const columnOrderTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const prevRowHeightRef = React.useRef<number | undefined>(undefined)\n const lockedAspectRatioRef = React.useRef<number | null>(null)\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState | null>(null)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => {\n const allKnownIds = allColumnsRef.current\n // Expand sparse columnVisibility to explicit values for all known columns so that\n // \"undefined\" is never ambiguous when columns are saved and reloaded.\n // Special columns (drag-handle, row-selection) are always injected by the provider,\n // so they must never be persisted — strip them from visibility and order entirely.\n const specialIds = new Set([DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n if (allKnownIds.length > 0) {\n const resolvedVisibility = { ...next.columnVisibility }\n allKnownIds.forEach((id) => {\n if (!specialIds.has(id) && resolvedVisibility[id] === undefined) {\n resolvedVisibility[id] = checkColumnVisibility({}, id, defaultColumnVisibility)\n }\n })\n // Remove special columns from visibility and order before persisting\n specialIds.forEach((id) => delete resolvedVisibility[id])\n const resolvedOrder = (next.columnOrder ?? []).filter((id) => !specialIds.has(id))\n onChange(\n { ...next, columnVisibility: resolvedVisibility, columnOrder: resolvedOrder },\n allKnownIds,\n )\n } else {\n onChange(next, allKnownIds)\n }\n }\n const columnsConfig = config as ColumnsConfig\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight = 34,\n columnSummaries: columnSummariesInit = {},\n columnSummaryScopes: columnSummaryScopesInit = {},\n columnSummaryFormats: columnSummaryFormatsInit = {},\n } = columnsConfig || {}\n\n // Clear internal row height when config changes (e.g., when switching views)\n // This happens during render, before the component uses the value\n if (prevRowHeightRef.current !== configRowHeight && prevRowHeightRef.current !== undefined) {\n // Config changed, clear internal state\n if (internalRowHeight !== null) {\n setInternalRowHeight(null)\n }\n // Clear any pending timeout\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n rowHeightTimeoutRef.current = null\n }\n }\n prevRowHeightRef.current = configRowHeight\n\n // Use internal row height during adjustments, otherwise use config value\n const rowHeight = internalRowHeight ?? configRowHeight\n\n const sorting = [...sortingInit]\n // Use internal column order for immediate UI updates, otherwise use config value\n const columnOrderBase = internalColumnOrder ?? [...columnOrderInit]\n const columnOrder = [...columnOrderBase]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode (except folder grouping), always pin the name column\n // and ensure it is first in column order\n if (groupBy && groupBy.id !== 'folder') {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n\n const newPinnedColumns = pinnedColumns.filter((col) =>\n checkColumnVisibility(visibility, col, defaultColumnVisibility),\n )\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n // Filter out special columns that are added dynamically\n const filteredOrder = order.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n\n const newPinning = updatePinningOrderOnOrderChange(filteredOrder)\n\n // Update UI immediately (optimistic)\n setInternalColumnOrder(filteredOrder)\n\n // Clear any existing timeout to debounce API calls\n if (columnOrderTimeoutRef.current) {\n clearTimeout(columnOrderTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n columnOrderTimeoutRef.current = setTimeout(() => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: filteredOrder,\n columnPinning: newPinning,\n })\n // Clear internal state after persistence\n setInternalColumnOrder(null)\n }, 300)\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateColumnSummary = (columnId: string, calc: SummaryCalc) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaries: { ...columnSummariesInit, [columnId]: calc },\n })\n }\n\n const updateColumnSummaryScope = (columnId: string, scope: RowScope) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryScopes: { ...columnSummaryScopesInit, [columnId]: scope },\n })\n }\n\n const updateColumnSummaryFormat = (columnId: string, format: SummaryFormat) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryFormats: { ...columnSummaryFormatsInit, [columnId]: format },\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeight = React.useCallback(\n (newRowHeight: number) => {\n // Lock the aspect ratio on first call if not already locked\n if (lockedAspectRatioRef.current === null) {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n lockedAspectRatioRef.current = currentThumbnailWidth / currentRowHeight\n }\n const newThumbnailWidth = lockedAspectRatioRef.current * newRowHeight\n\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n },\n [columnsSizingExternal, configRowHeight],\n )\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = React.useCallback(\n (newRowHeight: number) => {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n const currentRatio = currentThumbnailWidth / currentRowHeight\n\n const newThumbnailWidth = currentRatio * newRowHeight\n\n // Update UI immediately\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n columnSizing: {\n ...columnsSizingExternal,\n thumbnail: newThumbnailWidth,\n },\n })\n\n // Clean up internal state after API call completes\n setInternalRowHeight(null)\n setInternalColumnSizing(null)\n lockedAspectRatioRef.current = null\n }, 300)\n },\n [\n columnsConfig,\n onChangeWithColumns,\n columnsSizingExternal,\n configRowHeight,\n internalColumnSizing,\n ],\n )\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const nextFull = typeof updater === 'function' ? updater(columnVisibility) : updater\n\n // Calculate sparse version: only keys that are different from defaults\n const sparseNext: VisibilityState = {}\n Object.keys(nextFull).forEach((key) => {\n const defaultValue = checkColumnVisibility({}, key, defaultColumnVisibility)\n if (nextFull[key] !== defaultValue) {\n sparseNext[key] = nextFull[key]\n }\n })\n\n if (isEqual(sparseNext, columnVisibility)) return\n setColumnVisibility(sparseNext)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n if (isEqual(newPinning, columnPinning)) return\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n if (isEqual(newOrder, columnOrder)) return\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n if (isEqual(newSizing, columnSizing)) return\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n if (isEqual(newSorting, sorting)) return\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n defaultColumnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // column summary calc\n columnSummaries: columnSummariesInit,\n updateColumnSummary,\n // column summary row scope\n columnSummaryScopes: columnSummaryScopesInit,\n updateColumnSummaryScope,\n // column summary display format\n columnSummaryFormats: columnSummaryFormatsInit,\n updateColumnSummaryFormat,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","defaultColumnVisibility","allColumnsRef","React","resizingTimeoutRef","rowHeightTimeoutRef","columnOrderTimeoutRef","prevRowHeightRef","lockedAspectRatioRef","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","internalColumnOrder","setInternalColumnOrder","setAllColumns","allColumnIds","onChangeWithColumns","next","allKnownIds","specialIds","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","resolvedVisibility","id","checkColumnVisibility","resolvedOrder","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","columnSummariesInit","columnSummaryScopesInit","columnSummaryFormatsInit","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","filteredPinned","nameIndex","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumns","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","updateColumnVisibility","updateColumnOrder","filteredOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateColumnSummary","columnId","calc","updateColumnSummaryScope","scope","updateColumnSummaryFormat","format","updateGroupBy","updateGroupByConfig","updateRowHeight","newRowHeight","currentThumbnailWidth","currentRowHeight","newThumbnailWidth","updateRowHeightWithPersistence","columnVisibilityOnChange","updater","nextFull","sparseNext","key","defaultValue","isEqual","columnPinningOnChange","functionalUpdate","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnSettingsProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/ColumnSettingsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useState } from 'react'\nimport {\n ColumnOrderState,\n ColumnPinningState,\n functionalUpdate,\n OnChangeFn,\n VisibilityState,\n ColumnSizingState,\n SortingState,\n} from '@tanstack/react-table'\nimport { ColumnsConfig, ColumnSettingsContext, TableGroupBy } from './ColumnSettingsContext'\nimport { GroupByConfig } from '../components/GroupSettingsFallback'\nimport { SummaryCalc, SummaryFormat, RowScope } from '../types/summaryTypes'\nimport { isEqual } from 'lodash'\nimport { checkColumnVisibility } from '../utils'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\ninterface ColumnSettingsProviderProps {\n children: ReactNode\n config?: Record<string, any>\n onChange: (config: ColumnsConfig, allColumnIds?: string[]) => void\n defaultColumnVisibility?: VisibilityState\n}\n\nexport const ColumnSettingsProvider: React.FC<ColumnSettingsProviderProps> = ({\n children,\n config,\n onChange,\n defaultColumnVisibility,\n}) => {\n const allColumnsRef = React.useRef<string[]>([])\n const resizingTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const rowHeightTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const columnOrderTimeoutRef = React.useRef<NodeJS.Timeout | null>(null)\n const prevRowHeightRef = React.useRef<number | undefined>(undefined)\n const lockedAspectRatioRef = React.useRef<number | null>(null)\n // Internal state for immediate updates (similar to column sizing)\n const [internalColumnSizing, setInternalColumnSizing] = useState<ColumnSizingState | null>(null)\n const [internalRowHeight, setInternalRowHeight] = useState<number | null>(null)\n const [internalColumnOrder, setInternalColumnOrder] = useState<ColumnOrderState | null>(null)\n\n const setAllColumns = (allColumnIds: string[]) => {\n allColumnsRef.current = Array.from(new Set(allColumnIds))\n }\n const onChangeWithColumns = (next: ColumnsConfig) => {\n const allKnownIds = allColumnsRef.current\n // Expand sparse columnVisibility to explicit values for all known columns so that\n // \"undefined\" is never ambiguous when columns are saved and reloaded.\n // Special columns (drag-handle, row-selection) are always injected by the provider,\n // so they must never be persisted — strip them from visibility and order entirely.\n const specialIds = new Set([DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n if (allKnownIds.length > 0) {\n const resolvedVisibility = { ...next.columnVisibility }\n allKnownIds.forEach((id) => {\n if (!specialIds.has(id) && resolvedVisibility[id] === undefined) {\n resolvedVisibility[id] = checkColumnVisibility({}, id, defaultColumnVisibility)\n }\n })\n // Remove special columns from visibility and order before persisting\n specialIds.forEach((id) => delete resolvedVisibility[id])\n const resolvedOrder = (next.columnOrder ?? []).filter((id) => !specialIds.has(id))\n onChange(\n { ...next, columnVisibility: resolvedVisibility, columnOrder: resolvedOrder },\n allKnownIds,\n )\n } else {\n onChange(next, allKnownIds)\n }\n }\n const columnsConfig = config as ColumnsConfig\n\n const {\n columnOrder: columnOrderInit = [],\n columnPinning: columnPinningInit = {},\n columnVisibility: columnVisibilityInit = {},\n columnSizing: columnsSizingExternal = {},\n sorting: sortingInit = [],\n groupBy,\n groupByConfig = {},\n rowHeight: configRowHeight = 34,\n columnSummaries: columnSummariesInit = {},\n columnSummaryScopes: columnSummaryScopesInit = {},\n columnSummaryFormats: columnSummaryFormatsInit = {},\n } = columnsConfig || {}\n\n // Clear internal row height when config changes (e.g., when switching views)\n // This happens during render, before the component uses the value\n if (prevRowHeightRef.current !== configRowHeight && prevRowHeightRef.current !== undefined) {\n // Config changed, clear internal state\n if (internalRowHeight !== null) {\n setInternalRowHeight(null)\n }\n // Clear any pending timeout\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n rowHeightTimeoutRef.current = null\n }\n }\n prevRowHeightRef.current = configRowHeight\n\n // Use internal row height during adjustments, otherwise use config value\n const rowHeight = internalRowHeight ?? configRowHeight\n\n const sorting = [...sortingInit]\n // Use internal column order for immediate UI updates, otherwise use config value\n const columnOrderBase = internalColumnOrder ?? [...columnOrderInit]\n const columnOrder = [...columnOrderBase]\n const columnPinning = { ...columnPinningInit }\n const defaultOrder = ['thumbnail', 'name', 'subType', 'status', 'tags']\n // for each default column, if it is not in the columnOrder, find the index of the column before it, if none, add to beginning\n defaultOrder.forEach((col, i) => {\n if (!columnOrder.includes(col)) {\n const defaultBefore = defaultOrder[i - 1]\n const columnAfter = defaultOrder[i + 1]\n if (!defaultBefore || !columnOrder.includes(defaultBefore)) {\n // add to beginning\n columnOrder.unshift(col)\n } else {\n // find the index of that column in the columnOrder\n const index = columnOrder.indexOf(defaultBefore)\n // add the item after that column\n columnOrder.splice(index + 1, 0, col)\n }\n if (columnAfter && columnPinning?.left && columnPinning?.left.includes(columnAfter)) {\n // pin the column\n columnPinning.left = [col, ...(columnPinning?.left || [])]\n }\n }\n })\n\n // if we are in grouping mode (except folder grouping), always pin the name column\n // and ensure it is first in column order\n if (groupBy && groupBy.id !== 'folder') {\n // ensure name column is pinned and first in pinning order\n if (!columnPinning.left?.includes('name')) {\n columnPinning.left = ['name', ...(columnPinning?.left || [])]\n } else {\n // name is already pinned, but ensure it's first\n const filteredPinned = columnPinning.left.filter((col) => col !== 'name')\n columnPinning.left = ['name', ...filteredPinned]\n }\n\n // ensure name is first in column order\n if (columnOrder.includes('name')) {\n // remove name from its current position\n const nameIndex = columnOrder.indexOf('name')\n columnOrder.splice(nameIndex, 1)\n }\n // add name to the beginning\n columnOrder.unshift('name')\n }\n\n // add drag handle and selection columns to the beginning of the column order\n columnOrder.unshift(...[DRAG_HANDLE_COLUMN_ID, ROW_SELECTION_COLUMN_ID])\n\n // VISIBILITY STATE MUTATIONS\n const columnVisibility = { ...columnVisibilityInit }\n // if we are in grouping mode, name column must always be visible\n if (groupBy && !columnVisibility.name) {\n columnVisibility.name = true\n }\n\n // DIRECT STATE UPDATES - no side effects\n const setColumnVisibility = (visibility: VisibilityState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n })\n }\n\n const setColumnOrder = (order: ColumnOrderState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: order,\n })\n }\n\n const setColumnPinning = (pinning: ColumnPinningState) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnPinning: pinning,\n })\n }\n\n // use internalColumnSizing if it exists, otherwise use the external column sizing\n const columnSizing = internalColumnSizing || columnsSizingExternal\n\n const setColumnSizing = (sizing: ColumnSizingState) => {\n setInternalColumnSizing(sizing)\n\n // if there is a timeout already set, clear it\n if (resizingTimeoutRef.current) {\n clearTimeout(resizingTimeoutRef.current)\n }\n // set a timeout that tracks if the column sizing has finished\n resizingTimeoutRef.current = setTimeout(() => {\n // we have finished resizing now!\n // update the external column sizing\n onChangeWithColumns({\n ...columnsConfig,\n columnSizing: sizing,\n })\n // reset the internal column sizing to not be used anymore\n setInternalColumnSizing(null)\n }, 500)\n }\n\n // SIDE EFFECT UTILITIES\n const togglePinningOnVisibilityChange = (visibility: VisibilityState) => {\n // ensure that any columns that are now hidden are removed from the pinning\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n\n const newPinnedColumns = pinnedColumns.filter((col) =>\n checkColumnVisibility(visibility, col, defaultColumnVisibility),\n )\n\n return {\n ...newPinning,\n left: newPinnedColumns,\n }\n }\n\n const updatePinningOrderOnOrderChange = (order: ColumnOrderState) => {\n // ensure that the column pinning is in the order of the column order\n const newPinning = { ...columnPinning }\n const pinnedColumns = newPinning.left || []\n const pinnedColumnsOrder = order.filter((col) => pinnedColumns.includes(col))\n\n return {\n ...newPinning,\n left: pinnedColumnsOrder,\n }\n }\n\n const updateOrderOnPinningChange = (pinning: ColumnPinningState) => {\n // we resort the column order based on the pinning\n return [...columnOrder].sort((a, b) => {\n const aPinned = pinning.left?.includes(a) ? 1 : 0\n const bPinned = pinning.left?.includes(b) ? 1 : 0\n return bPinned - aPinned\n })\n }\n\n // UPDATE METHODS WITH SIDE EFFECTS\n const updateColumnVisibility = (visibility: VisibilityState) => {\n const newPinning = togglePinningOnVisibilityChange(visibility)\n onChangeWithColumns({\n ...columnsConfig,\n columnVisibility: visibility,\n columnPinning: newPinning,\n })\n }\n\n const updateColumnOrder = (order: ColumnOrderState) => {\n // Filter out special columns that are added dynamically\n const filteredOrder = order.filter(\n (id) => id !== DRAG_HANDLE_COLUMN_ID && id !== ROW_SELECTION_COLUMN_ID,\n )\n\n const newPinning = updatePinningOrderOnOrderChange(filteredOrder)\n\n // Update UI immediately (optimistic)\n setInternalColumnOrder(filteredOrder)\n\n // Clear any existing timeout to debounce API calls\n if (columnOrderTimeoutRef.current) {\n clearTimeout(columnOrderTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n columnOrderTimeoutRef.current = setTimeout(() => {\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: filteredOrder,\n columnPinning: newPinning,\n })\n // Clear internal state after persistence\n setInternalColumnOrder(null)\n }, 300)\n }\n\n const updateColumnPinning = (pinning: ColumnPinningState) => {\n const newOrder = updateOrderOnPinningChange(pinning)\n onChangeWithColumns({\n ...columnsConfig,\n columnOrder: newOrder,\n columnPinning: pinning,\n })\n }\n\n const updateSorting = (sortingState: SortingState) => {\n onChangeWithColumns({\n ...columnsConfig,\n sorting: sortingState,\n })\n }\n\n const updateColumnSummary = (columnId: string, calc: SummaryCalc) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaries: { ...columnSummariesInit, [columnId]: calc },\n })\n }\n\n const updateColumnSummaryScope = (columnId: string, scope: RowScope) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryScopes: { ...columnSummaryScopesInit, [columnId]: scope },\n })\n }\n\n const updateColumnSummaryFormat = (columnId: string, format: SummaryFormat) => {\n onChangeWithColumns({\n ...columnsConfig,\n columnSummaryFormats: { ...columnSummaryFormatsInit, [columnId]: format },\n })\n }\n\n const updateGroupBy = (groupBy: TableGroupBy | undefined) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupBy: groupBy,\n })\n }\n\n const updateGroupByConfig = (config: GroupByConfig) => {\n onChangeWithColumns({\n ...columnsConfig,\n groupByConfig: {\n ...groupByConfig,\n ...config,\n },\n })\n }\n\n // Update row height for immediate UI feedback (no API call)\n const updateRowHeight = React.useCallback(\n (newRowHeight: number) => {\n // Lock the aspect ratio on first call if not already locked\n if (lockedAspectRatioRef.current === null) {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n lockedAspectRatioRef.current = currentThumbnailWidth / currentRowHeight\n }\n const newThumbnailWidth = lockedAspectRatioRef.current * newRowHeight\n\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n },\n [columnsSizingExternal, configRowHeight],\n )\n\n // Update row height and persist to API\n const updateRowHeightWithPersistence = React.useCallback(\n (newRowHeight: number) => {\n const currentThumbnailWidth = columnsSizingExternal.thumbnail || 63\n const currentRowHeight = configRowHeight || 34\n const currentRatio = currentThumbnailWidth / currentRowHeight\n\n const newThumbnailWidth = currentRatio * newRowHeight\n\n // Update UI immediately\n setInternalRowHeight(newRowHeight)\n setInternalColumnSizing({\n ...(internalColumnSizing || columnsSizingExternal),\n thumbnail: newThumbnailWidth,\n })\n\n // Clear any existing timeout to debounce API calls\n if (rowHeightTimeoutRef.current) {\n clearTimeout(rowHeightTimeoutRef.current)\n }\n\n // Debounce API call to avoid excessive requests\n rowHeightTimeoutRef.current = setTimeout(() => {\n // Persist to API\n onChangeWithColumns({\n ...columnsConfig,\n rowHeight: newRowHeight,\n columnSizing: {\n ...columnsSizingExternal,\n thumbnail: newThumbnailWidth,\n },\n })\n\n // Clean up internal state after API call completes\n setInternalRowHeight(null)\n setInternalColumnSizing(null)\n lockedAspectRatioRef.current = null\n }, 300)\n },\n [\n columnsConfig,\n onChangeWithColumns,\n columnsSizingExternal,\n configRowHeight,\n internalColumnSizing,\n ],\n )\n\n // Remove redundant local updater functions in favor of unified updaters with all columns\n\n // ON-CHANGE HANDLERS (TanStack-compatible)\n const columnVisibilityOnChange: OnChangeFn<VisibilityState> = (updater) => {\n const nextFull = typeof updater === 'function' ? updater(columnVisibility) : updater\n\n // Calculate sparse version: only keys that are different from defaults\n const sparseNext: VisibilityState = {}\n Object.keys(nextFull).forEach((key) => {\n const defaultValue = checkColumnVisibility({}, key, defaultColumnVisibility)\n if (nextFull[key] !== defaultValue) {\n sparseNext[key] = nextFull[key]\n }\n })\n\n if (isEqual(sparseNext, columnVisibility)) return\n setColumnVisibility(sparseNext)\n }\n\n const columnPinningOnChange: OnChangeFn<ColumnPinningState> = (updater) => {\n const newPinning = functionalUpdate(updater, columnPinning)\n if (isEqual(newPinning, columnPinning)) return\n setColumnPinning(newPinning)\n }\n\n const columnOrderOnChange: OnChangeFn<ColumnOrderState> = (updater) => {\n const newOrder = functionalUpdate(updater, columnOrder)\n if (isEqual(newOrder, columnOrder)) return\n setColumnOrder(newOrder)\n }\n\n const columnSizingOnChange: OnChangeFn<ColumnSizingState> = (updater) => {\n const newSizing = functionalUpdate(updater, columnSizing)\n if (isEqual(newSizing, columnSizing)) return\n setColumnSizing(newSizing)\n }\n\n const sortingOnChange: OnChangeFn<SortingState> = (updater) => {\n const newSorting = functionalUpdate(updater, sorting)\n if (isEqual(newSorting, sorting)) return\n updateSorting(newSorting)\n }\n\n return (\n <ColumnSettingsContext.Provider\n value={{\n // all columns ref\n setAllColumns,\n // column visibility\n columnVisibility,\n defaultColumnVisibility,\n setColumnVisibility,\n updateColumnVisibility,\n columnVisibilityOnChange,\n // column pinning\n columnPinning,\n setColumnPinning,\n updateColumnPinning,\n columnPinningOnChange,\n // column order\n columnOrder,\n setColumnOrder,\n updateColumnOrder,\n columnOrderOnChange,\n // column sizing\n columnSizing,\n setColumnSizing,\n columnSizingOnChange,\n // column summary calc\n columnSummaries: columnSummariesInit,\n updateColumnSummary,\n // column summary row scope\n columnSummaryScopes: columnSummaryScopesInit,\n updateColumnSummaryScope,\n // column summary display format\n columnSummaryFormats: columnSummaryFormatsInit,\n updateColumnSummaryFormat,\n // sorting\n sorting,\n updateSorting,\n sortingOnChange,\n // group by\n groupBy,\n updateGroupBy,\n groupByConfig,\n updateGroupByConfig,\n // row height\n rowHeight,\n updateRowHeight,\n updateRowHeightWithPersistence,\n\n // global change\n setColumnsConfig: (config: ColumnsConfig) => onChangeWithColumns(config),\n }}\n >\n {children}\n </ColumnSettingsContext.Provider>\n )\n}\n"],"names":["ColumnSettingsProvider","children","config","onChange","defaultColumnVisibility","allColumnsRef","React","resizingTimeoutRef","rowHeightTimeoutRef","columnOrderTimeoutRef","prevRowHeightRef","lockedAspectRatioRef","internalColumnSizing","setInternalColumnSizing","useState","internalRowHeight","setInternalRowHeight","internalColumnOrder","setInternalColumnOrder","setAllColumns","allColumnIds","onChangeWithColumns","next","allKnownIds","specialIds","DRAG_HANDLE_COLUMN_ID","ROW_SELECTION_COLUMN_ID","resolvedVisibility","id","checkColumnVisibility","resolvedOrder","columnsConfig","columnOrderInit","columnPinningInit","columnVisibilityInit","columnsSizingExternal","sortingInit","groupBy","groupByConfig","configRowHeight","columnSummariesInit","columnSummaryScopesInit","columnSummaryFormatsInit","rowHeight","sorting","columnOrder","columnPinning","defaultOrder","col","i","defaultBefore","columnAfter","index","filteredPinned","nameIndex","columnVisibility","setColumnVisibility","visibility","setColumnOrder","order","setColumnPinning","pinning","columnSizing","setColumnSizing","sizing","togglePinningOnVisibilityChange","newPinning","newPinnedColumns","updatePinningOrderOnOrderChange","pinnedColumns","pinnedColumnsOrder","updateOrderOnPinningChange","a","b","aPinned","updateColumnVisibility","updateColumnOrder","filteredOrder","updateColumnPinning","newOrder","updateSorting","sortingState","updateColumnSummary","columnId","calc","updateColumnSummaryScope","scope","updateColumnSummaryFormat","format","updateGroupBy","updateGroupByConfig","updateRowHeight","newRowHeight","currentThumbnailWidth","currentRowHeight","newThumbnailWidth","updateRowHeightWithPersistence","columnVisibilityOnChange","updater","nextFull","sparseNext","key","defaultValue","isEqual","columnPinningOnChange","functionalUpdate","columnOrderOnChange","columnSizingOnChange","newSizing","sortingOnChange","newSorting","jsx","ColumnSettingsContext"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Q=require("../../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),t=require("../utils/cellUtils.cjs.js"),X=require("./SelectionCellsContext.cjs.js");require("react-toastify");require("./ProjectTableQueriesContext.cjs.js");require("./ProjectTableContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("lodash");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("uuid");const p=require("../constants.cjs.js");require("../../../util/pubsub.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("clsx");require("../../ContextMenu/ContextMenuContext.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/TeamTooltip/TeamTooltip.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("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/AttributeEditor/AttributeEditor.cjs.js");require("../../../components/AttributeEditor/attributeTypeMap.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("date-fns");require("../../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../../components/DetailsPanelDetails/BorderedSection.cjs.js");require("../../../components/QuillListStyles/QuillListStyles.cjs.js");require("../../../components/DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("rehype-raw");require("../../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../../Feed/components/CommentInput/modules/index.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../components/Feedback/FeedbackContextInstance.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/FreeTrialLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("react-router-dom");require("../../Slicer/components/Slicer.cjs.js");require("../../Slicer/context/SlicerContext.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/SearchFilter/CustomDateRangeDialog.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../../components/ColumnHeaderMenuUI.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");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/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("../../Feed/components/FeedSearchFilter.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/EnumCellValue.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/MarkdownWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../widgets/LinksWidget.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("./CellEditingContext.cjs.js");require("short-uuid");require("./ClipboardContext.cjs.js");require("./ColumnSettingsContext.cjs.js");require("./SelectedRowsContext.cjs.js");require("./DetailsPanelEntityContext.cjs.js");require("./ProjectDataContext.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/TableFooterRow.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js");require("../../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../../DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js");require("../../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../Views/context/ViewsContextInstance.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../ListTable/ListTableRow.cjs.js");require("../../ListTable/ListTable.styled.cjs.js");require("../components/DeleteConfirmContent.cjs.js");const Y=require("../hooks/useCheckSelectedCellsVisible.cjs.js"),Z=({children:z})=>{const[n,I]=o.useState(new Set),[f,d]=o.useState(null),[T,O]=o.useState(!1),[w,S]=o.useState(null),[g,V]=o.useState({rowIdToIndex:new Map,colIdToIndex:new Map,indexToRowId:new Map,indexToColId:new Map}),m=e=>JSON.stringify(Array.from(e.entries())),s=o.useMemo(()=>g,[m(g.rowIdToIndex),m(g.colIdToIndex),m(g.indexToRowId),m(g.indexToColId)]),_=o.useRef(!1),P=o.useMemo(()=>Array.from(n).filter(e=>t.parseCellId(e)?.colId===p.ROW_SELECTION_COLUMN_ID&&t.parseCellId(e)?.rowId).map(e=>t.parseCellId(e)?.rowId),[n]);Y.useCheckSelectedCellsVisible({selectedCells:n,setSelectedCells:I,focusedCellId:f,setFocusedCellId:d});const h=o.useRef(!1),E=o.useCallback((e,u)=>{const q=new Map,i=new Map,r=new Map,l=new Map;e.forEach((c,a)=>{q.set(c,a),r.set(a,c)}),u.forEach((c,a)=>{i.set(c,a),l.set(a,c)}),V({rowIdToIndex:q,colIdToIndex:i,indexToRowId:r,indexToColId:l})},[]),C=o.useCallback((e,u)=>{I(q=>{let i=new Set(e);if(u.colId!==p.ROW_SELECTION_COLUMN_ID&&u.colId!==p.DRAG_HANDLE_COLUMN_ID){const r=Array.from(q).filter(l=>t.parseCellId(l)?.colId===p.ROW_SELECTION_COLUMN_ID);r.length&&(i=new Set([...i,...r]))}return i})},[]),M=o.useCallback((e,u,q)=>{q||C(new Set,e);const i=s.rowIdToIndex.get(e.rowId)??0,r=s.colIdToIndex.get(e.colId)??0,l=s.rowIdToIndex.get(u.rowId)??0,c=s.colIdToIndex.get(u.colId)??0,a=Math.min(i,l),x=Math.max(i,l),J=Math.min(r,c),K=Math.max(r,c),G=new Set(q?n:[]);for(let b=a;b<=x;b++){const W=s.indexToRowId.get(b);if(W)for(let k=J;k<=K;k++){const F=s.indexToColId.get(k);F&&G.add(t.getCellId(W,F))}}return G},[s,n,C]),N=o.useCallback((e,u)=>{const q=t.parseCellId(e);q&&(O(!0),h.current=u,_.current=n.has(e),u?I(i=>{const r=new Set(i);return r.has(e)?(r.delete(e),f===e&&(r.size>0?d(Array.from(r)[Array.from(r).length-1]):d(null))):(r.add(e),d(e),S(q)),r}):n.size===1&&n.has(e)&&[p.ROW_SELECTION_COLUMN_ID,"name"].includes(q.colId)?(I(new Set),S(null),d(null)):(C(new Set([e]),q),S(q),d(e)))},[n,f,C]),L=o.useCallback((e,u)=>{if(!T||!w)return;const q=t.parseCellId(e);if(q)if(u)I(i=>{const r=new Set(i);return t.parseCellId(e)&&(_.current?r.delete(e):r.add(e)),r});else{if(h.current)return;const i=M(w,q,h.current);C(i,q)}},[T,w,M,C]),A=o.useCallback(()=>{O(!1)},[]),y=o.useCallback((e,u,q)=>{const i=t.parseCellId(e);if(i)if(q&&w){const r=M(w,i,u);C(r,i)}else u?I(r=>{const l=new Set(r);return l.has(e)?l.delete(e):l.add(e),l}):(C(new Set([e]),i),S(i))},[w,M,C]),B=o.useCallback(e=>{d(e)},[]),D=o.useCallback(()=>{I(new Set),S(null),d(null)},[]),R=o.useCallback(e=>n.has(e),[n]),U=o.useCallback(e=>e===f,[f]),v=o.useCallback(e=>t.parseCellId(e),[]),j=o.useCallback(e=>{if(!R(e))return[];const u=t.parseCellId(e);if(!u)return[];const q=s.rowIdToIndex.get(u.rowId),i=s.colIdToIndex.get(u.colId);if(q===void 0||i===void 0)return[];const r=s.indexToRowId.get(q-1),l=s.indexToColId.get(i+1),c=s.indexToRowId.get(q+1),a=s.indexToColId.get(i-1);let x=t.BorderPosition.None;return(!r||!n.has(t.getCellId(r,u.colId)))&&(x|=t.BorderPosition.Top),(!l||!n.has(t.getCellId(u.rowId,l)))&&(x|=t.BorderPosition.Right),(!c||!n.has(t.getCellId(c,u.colId)))&&(x|=t.BorderPosition.Bottom),(!a||!n.has(t.getCellId(u.rowId,a)))&&(x|=t.BorderPosition.Left),t.getBorderClasses(x)},[n,s,R]),H=o.useMemo(()=>({selectedCells:n,selectedRows:P,focusedCellId:f,selectionInProgress:T,anchorCell:w,gridMap:s,setSelectedCells:I,setFocusedCellId:d,setAnchorCell:S,registerGrid:E,selectCell:y,startSelection:N,extendSelection:L,endSelection:A,focusCell:B,clearSelection:D,isCellSelected:R,isCellFocused:U,getCellPositionFromId:v,getCellBorderClasses:j}),[n,P,f,T,w,s,I,d,S,E,y,N,L,A,B,D,R,U,v,j]);return Q.jsxRuntimeExports.jsx(X.SelectionCellsContext.Provider,{value:H,children:z})};exports.SelectionCellsProvider=Z;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Q=require("../../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),t=require("../utils/cellUtils.cjs.js"),X=require("./SelectionCellsContext.cjs.js");require("react-toastify");require("./ProjectTableQueriesContext.cjs.js");require("./ProjectTableContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/dataImport.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/columnStats/metricTargets.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/listItemsColumnStats.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/folders/getFolderDeleteInfo.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/products/getFolderProducts.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/teams/getTeams.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("lodash");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("uuid");const p=require("../constants.cjs.js");require("../../../util/pubsub.cjs.js");require("../../../context/PowerpackContextInstance.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../context/DetailsPanelContextInstance.cjs.js");require("../../../context/SubtasksModulesContextInstance.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("clsx");require("../../ContextMenu/ContextMenuContext.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/TeamTooltip/TeamTooltip.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("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/AttributeEditor/AttributeEditor.cjs.js");require("../../../components/AttributeEditor/attributeTypeMap.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("date-fns");require("../../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("react-quill-ayon");require("../../../components/DetailsPanelDetails/BorderedSection.cjs.js");require("../../../components/QuillListStyles/QuillListStyles.cjs.js");require("../../../components/DetailsPanelDetails/DescriptionSection.styles.cjs.js");require("rehype-raw");require("../../../components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js");require("../../Feed/components/CommentInput/modules/index.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../components/Feedback/FeedbackContextInstance.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/FreeTrialLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("react-router-dom");require("../../Slicer/components/Slicer.cjs.js");require("../../Slicer/context/SlicerContext.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/SearchFilter/CustomDateRangeDialog.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../../../components/ReviewablesSelector/ReviewablesSelector.cjs.js");require("../../../components/ColumnHeaderMenuUI.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");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/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("../../Feed/components/FeedSearchFilter.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/EnumCellValue.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/MarkdownWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../widgets/LinksWidget.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("./CellEditingContext.cjs.js");require("short-uuid");require("./ClipboardContext.cjs.js");require("./ColumnSettingsContext.cjs.js");require("./SelectedRowsContext.cjs.js");require("./DetailsPanelEntityContext.cjs.js");require("./ProjectDataContext.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/TableFooterRow.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js");require("../../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../../DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js");require("../../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../Views/context/ViewsContextInstance.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../ListTable/ListTableRow.cjs.js");require("../../ListTable/ListTable.styled.cjs.js");require("../components/DeleteConfirmContent.cjs.js");const Y=require("../hooks/useCheckSelectedCellsVisible.cjs.js"),Z=({children:z})=>{const[n,I]=o.useState(new Set),[f,d]=o.useState(null),[T,O]=o.useState(!1),[w,S]=o.useState(null),[g,V]=o.useState({rowIdToIndex:new Map,colIdToIndex:new Map,indexToRowId:new Map,indexToColId:new Map}),m=e=>JSON.stringify(Array.from(e.entries())),s=o.useMemo(()=>g,[m(g.rowIdToIndex),m(g.colIdToIndex),m(g.indexToRowId),m(g.indexToColId)]),_=o.useRef(!1),P=o.useMemo(()=>Array.from(n).filter(e=>t.parseCellId(e)?.colId===p.ROW_SELECTION_COLUMN_ID&&t.parseCellId(e)?.rowId).map(e=>t.parseCellId(e)?.rowId),[n]);Y.useCheckSelectedCellsVisible({selectedCells:n,setSelectedCells:I,focusedCellId:f,setFocusedCellId:d});const h=o.useRef(!1),E=o.useCallback((e,u)=>{const q=new Map,i=new Map,r=new Map,l=new Map;e.forEach((c,a)=>{q.set(c,a),r.set(a,c)}),u.forEach((c,a)=>{i.set(c,a),l.set(a,c)}),V({rowIdToIndex:q,colIdToIndex:i,indexToRowId:r,indexToColId:l})},[]),C=o.useCallback((e,u)=>{I(q=>{let i=new Set(e);if(u.colId!==p.ROW_SELECTION_COLUMN_ID&&u.colId!==p.DRAG_HANDLE_COLUMN_ID){const r=Array.from(q).filter(l=>t.parseCellId(l)?.colId===p.ROW_SELECTION_COLUMN_ID);r.length&&(i=new Set([...i,...r]))}return i})},[]),M=o.useCallback((e,u,q)=>{q||C(new Set,e);const i=s.rowIdToIndex.get(e.rowId)??0,r=s.colIdToIndex.get(e.colId)??0,l=s.rowIdToIndex.get(u.rowId)??0,c=s.colIdToIndex.get(u.colId)??0,a=Math.min(i,l),x=Math.max(i,l),J=Math.min(r,c),K=Math.max(r,c),G=new Set(q?n:[]);for(let b=a;b<=x;b++){const W=s.indexToRowId.get(b);if(W)for(let k=J;k<=K;k++){const F=s.indexToColId.get(k);F&&G.add(t.getCellId(W,F))}}return G},[s,n,C]),N=o.useCallback((e,u)=>{const q=t.parseCellId(e);q&&(O(!0),h.current=u,_.current=n.has(e),u?I(i=>{const r=new Set(i);return r.has(e)?(r.delete(e),f===e&&(r.size>0?d(Array.from(r)[Array.from(r).length-1]):d(null))):(r.add(e),d(e),S(q)),r}):n.size===1&&n.has(e)&&[p.ROW_SELECTION_COLUMN_ID,"name"].includes(q.colId)?(I(new Set),S(null),d(null)):(C(new Set([e]),q),S(q),d(e)))},[n,f,C]),L=o.useCallback((e,u)=>{if(!T||!w)return;const q=t.parseCellId(e);if(q)if(u)I(i=>{const r=new Set(i);return t.parseCellId(e)&&(_.current?r.delete(e):r.add(e)),r});else{if(h.current)return;const i=M(w,q,h.current);C(i,q)}},[T,w,M,C]),A=o.useCallback(()=>{O(!1)},[]),y=o.useCallback((e,u,q)=>{const i=t.parseCellId(e);if(i)if(q&&w){const r=M(w,i,u);C(r,i)}else u?I(r=>{const l=new Set(r);return l.has(e)?l.delete(e):l.add(e),l}):(C(new Set([e]),i),S(i))},[w,M,C]),B=o.useCallback(e=>{d(e)},[]),D=o.useCallback(()=>{I(new Set),S(null),d(null)},[]),R=o.useCallback(e=>n.has(e),[n]),U=o.useCallback(e=>e===f,[f]),v=o.useCallback(e=>t.parseCellId(e),[]),j=o.useCallback(e=>{if(!R(e))return[];const u=t.parseCellId(e);if(!u)return[];const q=s.rowIdToIndex.get(u.rowId),i=s.colIdToIndex.get(u.colId);if(q===void 0||i===void 0)return[];const r=s.indexToRowId.get(q-1),l=s.indexToColId.get(i+1),c=s.indexToRowId.get(q+1),a=s.indexToColId.get(i-1);let x=t.BorderPosition.None;return(!r||!n.has(t.getCellId(r,u.colId)))&&(x|=t.BorderPosition.Top),(!l||!n.has(t.getCellId(u.rowId,l)))&&(x|=t.BorderPosition.Right),(!c||!n.has(t.getCellId(c,u.colId)))&&(x|=t.BorderPosition.Bottom),(!a||!n.has(t.getCellId(u.rowId,a)))&&(x|=t.BorderPosition.Left),t.getBorderClasses(x)},[n,s,R]),H=o.useMemo(()=>({selectedCells:n,selectedRows:P,focusedCellId:f,selectionInProgress:T,anchorCell:w,gridMap:s,setSelectedCells:I,setFocusedCellId:d,setAnchorCell:S,registerGrid:E,selectCell:y,startSelection:N,extendSelection:L,endSelection:A,focusCell:B,clearSelection:D,isCellSelected:R,isCellFocused:U,getCellPositionFromId:v,getCellBorderClasses:j}),[n,P,f,T,w,s,I,d,S,E,y,N,L,A,B,D,R,U,v,j]);return Q.jsxRuntimeExports.jsx(X.SelectionCellsContext.Provider,{value:H,children:z})};exports.SelectionCellsProvider=Z;
2
2
  //# sourceMappingURL=SelectionCellsProvider.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionCellsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/SelectionCellsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo, useRef, useState } from 'react'\nimport {\n BorderPosition,\n CellId,\n CellPosition,\n ColId,\n getBorderClasses,\n getCellId,\n parseCellId,\n RowId,\n} from '../utils/cellUtils'\nimport { GridMap, SelectionCellsContext } from './SelectionCellsContext'\nimport { useCheckSelectedCellsVisible } from '../hooks'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\nexport const SelectionCellsProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [selectedCells, setSelectedCells] = useState<Set<CellId>>(new Set())\n const [focusedCellId, setFocusedCellId] = useState<CellId | null>(null)\n const [selectionInProgress, setSelectionInProgress] = useState<boolean>(false)\n const [anchorCell, setAnchorCell] = useState<CellPosition | null>(null)\n const [gridMap, setGridMap] = useState<GridMap>({\n rowIdToIndex: new Map(),\n colIdToIndex: new Map(),\n indexToRowId: new Map(),\n indexToColId: new Map(),\n })\n const mapToString = (map: Map<any, any>) => {\n return JSON.stringify(Array.from(map.entries()))\n }\n\n const stableGridMap = useMemo(\n () => gridMap,\n [\n mapToString(gridMap.rowIdToIndex),\n mapToString(gridMap.colIdToIndex),\n mapToString(gridMap.indexToRowId),\n mapToString(gridMap.indexToColId),\n ],\n )\n // Track whether we're selecting or unselecting during drag\n const initialCellSelected = useRef<boolean>(false)\n\n const selectedRows = useMemo(\n () =>\n Array.from(selectedCells)\n .filter(\n (cellId) =>\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID && parseCellId(cellId)?.rowId,\n )\n .map((cellId) => parseCellId(cellId)?.rowId) as string[],\n [selectedCells],\n )\n\n useCheckSelectedCellsVisible({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n })\n const isAdditiveSelectionRef = useRef<boolean>(false)\n // Register grid structure for range selections\n const registerGrid = useCallback((rows: RowId[], columns: ColId[]) => {\n const rowIdToIndex = new Map<RowId, number>()\n const colIdToIndex = new Map<ColId, number>()\n const indexToRowId = new Map<number, RowId>()\n const indexToColId = new Map<number, ColId>()\n\n rows.forEach((rowId, index) => {\n rowIdToIndex.set(rowId, index)\n indexToRowId.set(index, rowId)\n })\n\n columns.forEach((colId, index) => {\n colIdToIndex.set(colId, index)\n indexToColId.set(index, colId)\n })\n\n setGridMap({ rowIdToIndex, colIdToIndex, indexToRowId, indexToColId })\n }, [])\n\n // update the selection whilst properly handling the row-selection column\n const updateSelection = useCallback((selection: Set<CellId>, position: CellPosition) => {\n setSelectedCells((prevSelectedCells) => {\n let newSelection = new Set(selection)\n if (position.colId !== ROW_SELECTION_COLUMN_ID && position.colId !== DRAG_HANDLE_COLUMN_ID) {\n const rowSelection = Array.from(prevSelectedCells).filter(\n (id) => parseCellId(id)?.colId === ROW_SELECTION_COLUMN_ID,\n )\n if (rowSelection.length) {\n newSelection = new Set([...newSelection, ...rowSelection])\n }\n }\n return newSelection\n })\n }, [])\n\n // Select cells between two points in the grid\n const selectCellRange = useCallback(\n (start: CellPosition, end: CellPosition, additive: boolean): Set<CellId> => {\n if (!additive) {\n // Clear existing selection if not additive\n updateSelection(new Set(), start)\n }\n\n const startRowIdx = stableGridMap.rowIdToIndex.get(start.rowId) ?? 0\n const startColIdx = stableGridMap.colIdToIndex.get(start.colId) ?? 0\n const endRowIdx = stableGridMap.rowIdToIndex.get(end.rowId) ?? 0\n const endColIdx = stableGridMap.colIdToIndex.get(end.colId) ?? 0\n\n const minRowIdx = Math.min(startRowIdx, endRowIdx)\n const maxRowIdx = Math.max(startRowIdx, endRowIdx)\n const minColIdx = Math.min(startColIdx, endColIdx)\n const maxColIdx = Math.max(startColIdx, endColIdx)\n\n const newSelection = new Set(additive ? selectedCells : [])\n\n for (let r = minRowIdx; r <= maxRowIdx; r++) {\n const rowId = stableGridMap.indexToRowId.get(r)\n if (!rowId) continue\n\n for (let c = minColIdx; c <= maxColIdx; c++) {\n const colId = stableGridMap.indexToColId.get(c)\n if (!colId) continue\n\n newSelection.add(getCellId(rowId, colId))\n }\n }\n\n return newSelection\n },\n [stableGridMap, selectedCells, updateSelection],\n )\n\n // Start a selection operation\n const startSelection = useCallback(\n (cellId: CellId, additive: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n setSelectionInProgress(true)\n isAdditiveSelectionRef.current = additive\n // Store whether the initial cell was selected to determine drag behavior\n initialCellSelected.current = selectedCells.has(cellId)\n\n if (additive) {\n // Toggle this cell in multi-select mode\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n // If this was the focused cell, set focus to another cell in the selection or null\n if (focusedCellId === cellId) {\n if (newSelection.size > 0) {\n setFocusedCellId(Array.from(newSelection)[Array.from(newSelection).length - 1])\n } else {\n setFocusedCellId(null)\n }\n }\n } else {\n newSelection.add(cellId)\n setFocusedCellId(cellId)\n setAnchorCell(position)\n }\n return newSelection\n })\n } else {\n // Single cell selection\n // If this cell is already the only selected cell, deselect it\n // and it is from name column\n if (\n selectedCells.size === 1 &&\n selectedCells.has(cellId) &&\n [ROW_SELECTION_COLUMN_ID, 'name'].includes(position.colId)\n ) {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n } else {\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n setFocusedCellId(cellId)\n }\n }\n },\n [selectedCells, focusedCellId, updateSelection],\n )\n\n // Extend the current selection during drag\n const extendSelection = useCallback(\n (cellId: CellId, isRowSelectionColumn?: boolean) => {\n if (!selectionInProgress || !anchorCell) return\n\n const currentPosition = parseCellId(cellId)\n if (!currentPosition) return\n\n if (isRowSelectionColumn) {\n // Handle row selection column differently during drag\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n const position = parseCellId(cellId)\n\n if (!position) return newSelection\n\n // We're either selecting or unselecting based on the initial cell's state\n if (initialCellSelected.current) {\n // If we started on a selected cell, we're removing cells during drag\n newSelection.delete(cellId)\n } else {\n // If we started on an unselected cell, we're adding cells during drag\n newSelection.add(cellId)\n }\n\n return newSelection\n })\n } else {\n if (isAdditiveSelectionRef.current) return\n // For normal cells - ALWAYS does range selection\n const newSelection = selectCellRange(\n anchorCell,\n currentPosition,\n isAdditiveSelectionRef.current,\n )\n updateSelection(newSelection, currentPosition)\n }\n },\n [selectionInProgress, anchorCell, selectCellRange, updateSelection],\n )\n\n // End a selection operation\n const endSelection = useCallback(() => {\n setSelectionInProgress(false)\n }, [])\n\n // Select a cell (click or programmatically)\n const selectCell = useCallback(\n (cellId: CellId, additive: boolean, range: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n if (range && anchorCell) {\n // Shift+click for range selection - select cells between anchor and current\n const newSelection = selectCellRange(anchorCell, position, additive)\n updateSelection(newSelection, position)\n } else if (additive) {\n // Ctrl/Cmd+click for toggling selection\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n } else {\n newSelection.add(cellId)\n }\n return newSelection\n })\n } else {\n // Normal click - select just this cell and set as new anchor\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n }\n },\n [anchorCell, selectCellRange, updateSelection],\n )\n\n // Focus a cell without changing selection\n const focusCell = useCallback((cellId: CellId | null) => {\n setFocusedCellId(cellId)\n }, [])\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n }, [])\n\n // Check if a cell is selected\n const isCellSelected = useCallback((cellId: CellId) => selectedCells.has(cellId), [selectedCells])\n\n // Check if a cell is focused\n const isCellFocused = useCallback((cellId: CellId) => cellId === focusedCellId, [focusedCellId])\n\n // Get position from cell ID - using shared utility\n const getCellPositionFromId = useCallback((cellId: CellId) => parseCellId(cellId), [])\n\n // Get border classes for a cell based on its selection state and neighbors\n const getCellBorderClasses = useCallback(\n (cellId: CellId): string[] => {\n if (!isCellSelected(cellId)) return []\n\n const position = parseCellId(cellId)\n if (!position) return []\n\n const rowIndex = stableGridMap.rowIdToIndex.get(position.rowId)\n const colIndex = stableGridMap.colIdToIndex.get(position.colId)\n\n if (rowIndex === undefined || colIndex === undefined) return []\n\n // Check if the cell's neighbors in all four directions are selected\n const top = stableGridMap.indexToRowId.get(rowIndex - 1)\n const right = stableGridMap.indexToColId.get(colIndex + 1)\n const bottom = stableGridMap.indexToRowId.get(rowIndex + 1)\n const left = stableGridMap.indexToColId.get(colIndex - 1)\n\n // Default to no borders\n let borderPos = BorderPosition.None\n\n // Top edge check: show border if we're at the top of the grid or the cell above is not selected\n if (!top || !selectedCells.has(getCellId(top, position.colId))) {\n borderPos |= BorderPosition.Top\n }\n\n // Right edge check: show border if we're at the right edge of the grid or the cell to the right is not selected\n if (!right || !selectedCells.has(getCellId(position.rowId, right))) {\n borderPos |= BorderPosition.Right\n }\n\n // Bottom edge check: show border if we're at the bottom of the grid or the cell below is not selected\n if (!bottom || !selectedCells.has(getCellId(bottom, position.colId))) {\n borderPos |= BorderPosition.Bottom\n }\n\n // Left edge check: show border if we're at the left edge of the grid or the cell to the left is not selected\n if (!left || !selectedCells.has(getCellId(position.rowId, left))) {\n borderPos |= BorderPosition.Left\n }\n\n return getBorderClasses(borderPos)\n },\n [selectedCells, stableGridMap, isCellSelected],\n )\n\n // Memoize context value to prevent unnecessary re-renders\n const value = useMemo(\n () => ({\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n gridMap: stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n }),\n [\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n ],\n )\n\n return <SelectionCellsContext.Provider value={value}>{children}</SelectionCellsContext.Provider>\n}\n"],"names":["SelectionCellsProvider","children","selectedCells","setSelectedCells","useState","focusedCellId","setFocusedCellId","selectionInProgress","setSelectionInProgress","anchorCell","setAnchorCell","gridMap","setGridMap","mapToString","map","stableGridMap","useMemo","initialCellSelected","useRef","selectedRows","cellId","parseCellId","ROW_SELECTION_COLUMN_ID","useCheckSelectedCellsVisible","isAdditiveSelectionRef","registerGrid","useCallback","rows","columns","rowIdToIndex","colIdToIndex","indexToRowId","indexToColId","rowId","index","colId","updateSelection","selection","position","prevSelectedCells","newSelection","DRAG_HANDLE_COLUMN_ID","rowSelection","id","selectCellRange","start","end","additive","startRowIdx","startColIdx","endRowIdx","endColIdx","minRowIdx","maxRowIdx","minColIdx","maxColIdx","r","c","getCellId","startSelection","prev","extendSelection","isRowSelectionColumn","currentPosition","endSelection","selectCell","range","focusCell","clearSelection","isCellSelected","isCellFocused","getCellPositionFromId","getCellBorderClasses","rowIndex","colIndex","top","right","bottom","left","borderPos","BorderPosition","getBorderClasses","value","jsx","SelectionCellsContext"],"mappings":"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"}
1
+ {"version":3,"file":"SelectionCellsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/SelectionCellsProvider.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo, useRef, useState } from 'react'\nimport {\n BorderPosition,\n CellId,\n CellPosition,\n ColId,\n getBorderClasses,\n getCellId,\n parseCellId,\n RowId,\n} from '../utils/cellUtils'\nimport { GridMap, SelectionCellsContext } from './SelectionCellsContext'\nimport { useCheckSelectedCellsVisible } from '../hooks'\nimport { ROW_SELECTION_COLUMN_ID, DRAG_HANDLE_COLUMN_ID } from '../constants'\n\nexport const SelectionCellsProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [selectedCells, setSelectedCells] = useState<Set<CellId>>(new Set())\n const [focusedCellId, setFocusedCellId] = useState<CellId | null>(null)\n const [selectionInProgress, setSelectionInProgress] = useState<boolean>(false)\n const [anchorCell, setAnchorCell] = useState<CellPosition | null>(null)\n const [gridMap, setGridMap] = useState<GridMap>({\n rowIdToIndex: new Map(),\n colIdToIndex: new Map(),\n indexToRowId: new Map(),\n indexToColId: new Map(),\n })\n const mapToString = (map: Map<any, any>) => {\n return JSON.stringify(Array.from(map.entries()))\n }\n\n const stableGridMap = useMemo(\n () => gridMap,\n [\n mapToString(gridMap.rowIdToIndex),\n mapToString(gridMap.colIdToIndex),\n mapToString(gridMap.indexToRowId),\n mapToString(gridMap.indexToColId),\n ],\n )\n // Track whether we're selecting or unselecting during drag\n const initialCellSelected = useRef<boolean>(false)\n\n const selectedRows = useMemo(\n () =>\n Array.from(selectedCells)\n .filter(\n (cellId) =>\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID && parseCellId(cellId)?.rowId,\n )\n .map((cellId) => parseCellId(cellId)?.rowId) as string[],\n [selectedCells],\n )\n\n useCheckSelectedCellsVisible({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n })\n const isAdditiveSelectionRef = useRef<boolean>(false)\n // Register grid structure for range selections\n const registerGrid = useCallback((rows: RowId[], columns: ColId[]) => {\n const rowIdToIndex = new Map<RowId, number>()\n const colIdToIndex = new Map<ColId, number>()\n const indexToRowId = new Map<number, RowId>()\n const indexToColId = new Map<number, ColId>()\n\n rows.forEach((rowId, index) => {\n rowIdToIndex.set(rowId, index)\n indexToRowId.set(index, rowId)\n })\n\n columns.forEach((colId, index) => {\n colIdToIndex.set(colId, index)\n indexToColId.set(index, colId)\n })\n\n setGridMap({ rowIdToIndex, colIdToIndex, indexToRowId, indexToColId })\n }, [])\n\n // update the selection whilst properly handling the row-selection column\n const updateSelection = useCallback((selection: Set<CellId>, position: CellPosition) => {\n setSelectedCells((prevSelectedCells) => {\n let newSelection = new Set(selection)\n if (position.colId !== ROW_SELECTION_COLUMN_ID && position.colId !== DRAG_HANDLE_COLUMN_ID) {\n const rowSelection = Array.from(prevSelectedCells).filter(\n (id) => parseCellId(id)?.colId === ROW_SELECTION_COLUMN_ID,\n )\n if (rowSelection.length) {\n newSelection = new Set([...newSelection, ...rowSelection])\n }\n }\n return newSelection\n })\n }, [])\n\n // Select cells between two points in the grid\n const selectCellRange = useCallback(\n (start: CellPosition, end: CellPosition, additive: boolean): Set<CellId> => {\n if (!additive) {\n // Clear existing selection if not additive\n updateSelection(new Set(), start)\n }\n\n const startRowIdx = stableGridMap.rowIdToIndex.get(start.rowId) ?? 0\n const startColIdx = stableGridMap.colIdToIndex.get(start.colId) ?? 0\n const endRowIdx = stableGridMap.rowIdToIndex.get(end.rowId) ?? 0\n const endColIdx = stableGridMap.colIdToIndex.get(end.colId) ?? 0\n\n const minRowIdx = Math.min(startRowIdx, endRowIdx)\n const maxRowIdx = Math.max(startRowIdx, endRowIdx)\n const minColIdx = Math.min(startColIdx, endColIdx)\n const maxColIdx = Math.max(startColIdx, endColIdx)\n\n const newSelection = new Set(additive ? selectedCells : [])\n\n for (let r = minRowIdx; r <= maxRowIdx; r++) {\n const rowId = stableGridMap.indexToRowId.get(r)\n if (!rowId) continue\n\n for (let c = minColIdx; c <= maxColIdx; c++) {\n const colId = stableGridMap.indexToColId.get(c)\n if (!colId) continue\n\n newSelection.add(getCellId(rowId, colId))\n }\n }\n\n return newSelection\n },\n [stableGridMap, selectedCells, updateSelection],\n )\n\n // Start a selection operation\n const startSelection = useCallback(\n (cellId: CellId, additive: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n setSelectionInProgress(true)\n isAdditiveSelectionRef.current = additive\n // Store whether the initial cell was selected to determine drag behavior\n initialCellSelected.current = selectedCells.has(cellId)\n\n if (additive) {\n // Toggle this cell in multi-select mode\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n // If this was the focused cell, set focus to another cell in the selection or null\n if (focusedCellId === cellId) {\n if (newSelection.size > 0) {\n setFocusedCellId(Array.from(newSelection)[Array.from(newSelection).length - 1])\n } else {\n setFocusedCellId(null)\n }\n }\n } else {\n newSelection.add(cellId)\n setFocusedCellId(cellId)\n setAnchorCell(position)\n }\n return newSelection\n })\n } else {\n // Single cell selection\n // If this cell is already the only selected cell, deselect it\n // and it is from name column\n if (\n selectedCells.size === 1 &&\n selectedCells.has(cellId) &&\n [ROW_SELECTION_COLUMN_ID, 'name'].includes(position.colId)\n ) {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n } else {\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n setFocusedCellId(cellId)\n }\n }\n },\n [selectedCells, focusedCellId, updateSelection],\n )\n\n // Extend the current selection during drag\n const extendSelection = useCallback(\n (cellId: CellId, isRowSelectionColumn?: boolean) => {\n if (!selectionInProgress || !anchorCell) return\n\n const currentPosition = parseCellId(cellId)\n if (!currentPosition) return\n\n if (isRowSelectionColumn) {\n // Handle row selection column differently during drag\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n const position = parseCellId(cellId)\n\n if (!position) return newSelection\n\n // We're either selecting or unselecting based on the initial cell's state\n if (initialCellSelected.current) {\n // If we started on a selected cell, we're removing cells during drag\n newSelection.delete(cellId)\n } else {\n // If we started on an unselected cell, we're adding cells during drag\n newSelection.add(cellId)\n }\n\n return newSelection\n })\n } else {\n if (isAdditiveSelectionRef.current) return\n // For normal cells - ALWAYS does range selection\n const newSelection = selectCellRange(\n anchorCell,\n currentPosition,\n isAdditiveSelectionRef.current,\n )\n updateSelection(newSelection, currentPosition)\n }\n },\n [selectionInProgress, anchorCell, selectCellRange, updateSelection],\n )\n\n // End a selection operation\n const endSelection = useCallback(() => {\n setSelectionInProgress(false)\n }, [])\n\n // Select a cell (click or programmatically)\n const selectCell = useCallback(\n (cellId: CellId, additive: boolean, range: boolean) => {\n const position = parseCellId(cellId)\n if (!position) return\n\n if (range && anchorCell) {\n // Shift+click for range selection - select cells between anchor and current\n const newSelection = selectCellRange(anchorCell, position, additive)\n updateSelection(newSelection, position)\n } else if (additive) {\n // Ctrl/Cmd+click for toggling selection\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n if (newSelection.has(cellId)) {\n newSelection.delete(cellId)\n } else {\n newSelection.add(cellId)\n }\n return newSelection\n })\n } else {\n // Normal click - select just this cell and set as new anchor\n updateSelection(new Set([cellId]), position)\n setAnchorCell(position)\n }\n },\n [anchorCell, selectCellRange, updateSelection],\n )\n\n // Focus a cell without changing selection\n const focusCell = useCallback((cellId: CellId | null) => {\n setFocusedCellId(cellId)\n }, [])\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n setSelectedCells(new Set())\n setAnchorCell(null)\n setFocusedCellId(null)\n }, [])\n\n // Check if a cell is selected\n const isCellSelected = useCallback((cellId: CellId) => selectedCells.has(cellId), [selectedCells])\n\n // Check if a cell is focused\n const isCellFocused = useCallback((cellId: CellId) => cellId === focusedCellId, [focusedCellId])\n\n // Get position from cell ID - using shared utility\n const getCellPositionFromId = useCallback((cellId: CellId) => parseCellId(cellId), [])\n\n // Get border classes for a cell based on its selection state and neighbors\n const getCellBorderClasses = useCallback(\n (cellId: CellId): string[] => {\n if (!isCellSelected(cellId)) return []\n\n const position = parseCellId(cellId)\n if (!position) return []\n\n const rowIndex = stableGridMap.rowIdToIndex.get(position.rowId)\n const colIndex = stableGridMap.colIdToIndex.get(position.colId)\n\n if (rowIndex === undefined || colIndex === undefined) return []\n\n // Check if the cell's neighbors in all four directions are selected\n const top = stableGridMap.indexToRowId.get(rowIndex - 1)\n const right = stableGridMap.indexToColId.get(colIndex + 1)\n const bottom = stableGridMap.indexToRowId.get(rowIndex + 1)\n const left = stableGridMap.indexToColId.get(colIndex - 1)\n\n // Default to no borders\n let borderPos = BorderPosition.None\n\n // Top edge check: show border if we're at the top of the grid or the cell above is not selected\n if (!top || !selectedCells.has(getCellId(top, position.colId))) {\n borderPos |= BorderPosition.Top\n }\n\n // Right edge check: show border if we're at the right edge of the grid or the cell to the right is not selected\n if (!right || !selectedCells.has(getCellId(position.rowId, right))) {\n borderPos |= BorderPosition.Right\n }\n\n // Bottom edge check: show border if we're at the bottom of the grid or the cell below is not selected\n if (!bottom || !selectedCells.has(getCellId(bottom, position.colId))) {\n borderPos |= BorderPosition.Bottom\n }\n\n // Left edge check: show border if we're at the left edge of the grid or the cell to the left is not selected\n if (!left || !selectedCells.has(getCellId(position.rowId, left))) {\n borderPos |= BorderPosition.Left\n }\n\n return getBorderClasses(borderPos)\n },\n [selectedCells, stableGridMap, isCellSelected],\n )\n\n // Memoize context value to prevent unnecessary re-renders\n const value = useMemo(\n () => ({\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n gridMap: stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n }),\n [\n selectedCells,\n selectedRows,\n focusedCellId,\n selectionInProgress,\n anchorCell,\n stableGridMap,\n setSelectedCells,\n setFocusedCellId,\n setAnchorCell,\n registerGrid,\n selectCell,\n startSelection,\n extendSelection,\n endSelection,\n focusCell,\n clearSelection,\n isCellSelected,\n isCellFocused,\n getCellPositionFromId,\n getCellBorderClasses,\n ],\n )\n\n return <SelectionCellsContext.Provider value={value}>{children}</SelectionCellsContext.Provider>\n}\n"],"names":["SelectionCellsProvider","children","selectedCells","setSelectedCells","useState","focusedCellId","setFocusedCellId","selectionInProgress","setSelectionInProgress","anchorCell","setAnchorCell","gridMap","setGridMap","mapToString","map","stableGridMap","useMemo","initialCellSelected","useRef","selectedRows","cellId","parseCellId","ROW_SELECTION_COLUMN_ID","useCheckSelectedCellsVisible","isAdditiveSelectionRef","registerGrid","useCallback","rows","columns","rowIdToIndex","colIdToIndex","indexToRowId","indexToColId","rowId","index","colId","updateSelection","selection","position","prevSelectedCells","newSelection","DRAG_HANDLE_COLUMN_ID","rowSelection","id","selectCellRange","start","end","additive","startRowIdx","startColIdx","endRowIdx","endColIdx","minRowIdx","maxRowIdx","minColIdx","maxColIdx","r","c","getCellId","startSelection","prev","extendSelection","isRowSelectionColumn","currentPosition","endSelection","selectCell","range","focusCell","clearSelection","isCellSelected","isCellFocused","getCellPositionFromId","getCellBorderClasses","rowIndex","colIndex","top","right","bottom","left","borderPos","BorderPosition","getBorderClasses","value","jsx","SelectionCellsContext"],"mappings":"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"}
@@ -272,6 +272,7 @@ import "../components/HeaderActionButton.es.js";
272
272
  import "../components/TableFooterRow.es.js";
273
273
  import "../../DetailsPanel/DetailsPanel.styled.es.js";
274
274
  import "../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.es.js";
275
+ import "../../DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.es.js";
275
276
  import "../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js";
276
277
  import "../../../components/PlayableIcon/PlayableIcon.es.js";
277
278
  import "../../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js";
@@ -291,7 +292,7 @@ import "../../ListTable/ListTableRow.es.js";
291
292
  import "../../ListTable/ListTable.styled.es.js";
292
293
  import "../components/DeleteConfirmContent.es.js";
293
294
  import { useCheckSelectedCellsVisible as mo } from "../hooks/useCheckSelectedCellsVisible.es.js";
294
- const Np = ({ children: Q }) => {
295
+ const _p = ({ children: Q }) => {
295
296
  const [p, f] = g(/* @__PURE__ */ new Set()), [u, c] = g(null), [M, L] = g(!1), [w, x] = g(null), [S, X] = g({
296
297
  rowIdToIndex: /* @__PURE__ */ new Map(),
297
298
  colIdToIndex: /* @__PURE__ */ new Map(),
@@ -460,6 +461,6 @@ const Np = ({ children: Q }) => {
460
461
  return /* @__PURE__ */ oo.jsx(ro.Provider, { value: Y, children: Q });
461
462
  };
462
463
  export {
463
- Np as SelectionCellsProvider
464
+ _p as SelectionCellsProvider
464
465
  };
465
466
  //# sourceMappingURL=SelectionCellsProvider.es.js.map