@ynput/ayon-frontend-shared 0.2.21 → 0.2.23

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 (363) hide show
  1. package/dist/DetailsPanel.cjs.js +6 -5
  2. package/dist/DetailsPanel.cjs.js.map +1 -1
  3. package/dist/DetailsPanel.es.js +6 -5
  4. package/dist/DetailsPanel.es.js.map +1 -1
  5. package/dist/_virtual/index.cjs10.js +4 -4
  6. package/dist/_virtual/index.cjs4.js +4 -4
  7. package/dist/_virtual/index.cjs5.js +4 -4
  8. package/dist/_virtual/index.cjs6.js +2 -2
  9. package/dist/_virtual/index.cjs7.js +2 -2
  10. package/dist/_virtual/index.cjs8.js +4 -4
  11. package/dist/_virtual/index.cjs9.js +4 -4
  12. package/dist/_virtual/index.es10.js +4 -4
  13. package/dist/_virtual/index.es4.js +4 -4
  14. package/dist/_virtual/index.es5.js +4 -4
  15. package/dist/_virtual/index.es6.js +2 -2
  16. package/dist/_virtual/index.es7.js +2 -2
  17. package/dist/_virtual/index.es8.js +4 -4
  18. package/dist/_virtual/index.es9.js +4 -4
  19. package/dist/api.cjs.js +22 -19
  20. package/dist/api.cjs.js.map +1 -1
  21. package/dist/api.es.js +8 -5
  22. package/dist/api.es.js.map +1 -1
  23. package/dist/index.cjs.js +6 -5
  24. package/dist/index.cjs.js.map +1 -1
  25. package/dist/index.es.js +6 -5
  26. package/dist/index.es.js.map +1 -1
  27. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  28. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  29. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  30. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  31. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +2 -2
  32. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  33. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  34. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  35. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  36. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  37. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  38. package/dist/node_modules/remove-accents/index.es.js +1 -1
  39. package/dist/node_modules/vfile/lib/index.cjs.js +1 -1
  40. package/dist/node_modules/vfile/lib/index.es.js +1 -1
  41. package/dist/shared/src/api/base/client.cjs.js +20 -19
  42. package/dist/shared/src/api/base/client.cjs.js.map +1 -1
  43. package/dist/shared/src/api/base/client.es.js +20 -19
  44. package/dist/shared/src/api/base/client.es.js.map +1 -1
  45. package/dist/shared/src/api/generated/access.cjs.js +8 -0
  46. package/dist/shared/src/api/generated/access.cjs.js.map +1 -1
  47. package/dist/shared/src/api/generated/access.es.js +8 -0
  48. package/dist/shared/src/api/generated/access.es.js.map +1 -1
  49. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  50. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  51. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +6 -5
  52. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  53. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +6 -5
  54. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  55. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +6 -5
  56. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  57. package/dist/shared/src/api/queries/entities/updateEntity.es.js +6 -5
  58. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  59. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +6 -5
  60. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  61. package/dist/shared/src/api/queries/overview/updateOverview.es.js +6 -5
  62. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  63. package/dist/shared/src/api/queries/share/share.cjs.js +66 -0
  64. package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -0
  65. package/dist/shared/src/api/queries/share/share.es.js +66 -0
  66. package/dist/shared/src/api/queries/share/share.es.js.map +1 -0
  67. package/dist/shared/src/api/queries/users/getUsers.cjs.js +6 -5
  68. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  69. package/dist/shared/src/api/queries/users/getUsers.es.js +6 -5
  70. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  71. package/dist/shared/src/api/queries/views/getViews.cjs.js +5 -1
  72. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  73. package/dist/shared/src/api/queries/views/getViews.es.js +5 -1
  74. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  75. package/dist/shared/src/api/queries/views/updateViews.cjs.js +0 -2
  76. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  77. package/dist/shared/src/api/queries/views/updateViews.es.js +0 -2
  78. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  79. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +6 -5
  80. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  81. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +6 -5
  82. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  83. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +6 -5
  84. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  85. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +6 -5
  86. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  87. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +6 -5
  88. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  89. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +6 -5
  90. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  91. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +6 -5
  92. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  93. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +6 -5
  94. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  95. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +6 -5
  96. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  97. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +6 -5
  98. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  99. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +6 -5
  100. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  101. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -5
  102. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  103. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +6 -5
  104. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  105. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +6 -5
  106. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  107. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +6 -5
  108. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  109. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +6 -5
  110. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  111. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +6 -5
  112. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  113. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +6 -5
  114. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  115. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +6 -5
  116. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  117. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +6 -5
  118. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  119. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +6 -5
  120. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  121. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +6 -5
  122. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  123. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +6 -5
  124. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  125. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +6 -5
  126. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  127. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +6 -5
  128. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  129. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +6 -5
  130. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  131. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +6 -5
  132. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  133. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +6 -5
  134. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  135. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +6 -5
  136. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  137. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +6 -5
  138. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  139. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +6 -5
  140. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  141. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +6 -5
  142. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  143. package/dist/shared/src/components/Watchers/Watchers.cjs.js +6 -5
  144. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  145. package/dist/shared/src/components/Watchers/Watchers.es.js +6 -5
  146. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  147. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +6 -5
  148. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  149. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -5
  150. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  151. package/dist/shared/src/containers/Actions/Actions.cjs.js +6 -5
  152. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  153. package/dist/shared/src/containers/Actions/Actions.es.js +6 -5
  154. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  155. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +6 -5
  156. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  157. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +6 -5
  158. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  159. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +6 -5
  160. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  161. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +6 -5
  162. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  163. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +6 -5
  164. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  165. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +6 -5
  166. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  167. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +6 -5
  168. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +6 -5
  170. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  171. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +6 -5
  172. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  173. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +6 -5
  174. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  175. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +6 -5
  176. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +6 -5
  178. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  179. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +6 -5
  180. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  181. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +6 -5
  182. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  183. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +6 -5
  184. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  185. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
  186. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  187. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +6 -5
  188. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  189. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +6 -5
  190. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  191. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +15 -9
  192. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  193. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +15 -9
  194. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  195. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +6 -5
  196. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  197. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +6 -5
  198. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  199. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  200. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  201. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +52 -77
  202. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +52 -77
  204. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  205. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +6 -5
  206. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +6 -5
  208. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  209. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +6 -5
  210. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +6 -5
  212. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  213. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +6 -5
  214. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +6 -5
  216. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +6 -5
  218. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +6 -5
  220. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +6 -5
  222. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +6 -5
  224. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +6 -5
  226. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +6 -5
  228. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  229. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js +6 -5
  230. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js +6 -5
  232. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetTaskGroups.es.js.map +1 -1
  233. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js +14 -8
  234. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.cjs.js.map +1 -1
  235. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js +14 -8
  236. package/dist/shared/src/containers/ProjectTreeTable/hooks/useProjectTableModules.es.js.map +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +6 -5
  238. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +6 -5
  240. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +6 -5
  242. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +6 -5
  244. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  245. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +6 -5
  246. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  247. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +6 -5
  248. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  249. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +17 -1
  250. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +17 -1
  252. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  253. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.cjs.js +4 -2
  254. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.cjs.js.map +1 -1
  255. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.es.js +4 -2
  256. package/dist/shared/src/containers/Views/ViewItem/ViewItem.styled.es.js.map +1 -1
  257. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  258. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  259. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +12 -7
  260. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  261. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +12 -7
  262. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  263. package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.cjs.js +17 -0
  264. package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.cjs.js.map +1 -0
  265. package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.es.js +17 -0
  266. package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.es.js.map +1 -0
  267. package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.styled.cjs.js +37 -0
  268. package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.styled.cjs.js.map +1 -0
  269. package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.styled.es.js +37 -0
  270. package/dist/shared/src/containers/Views/ViewsMenu/SectionHeader.styled.es.js.map +1 -0
  271. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.cjs.js +13 -2
  272. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.cjs.js.map +1 -1
  273. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.es.js +14 -3
  274. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.es.js.map +1 -1
  275. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.cjs.js +1 -2
  276. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.cjs.js.map +1 -1
  277. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.es.js +2 -3
  278. package/dist/shared/src/containers/Views/ViewsMenu/ViewsMenu.styled.es.js.map +1 -1
  279. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +38 -6
  280. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  281. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +39 -7
  282. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  283. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +31 -5
  284. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  285. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +31 -5
  286. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  287. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +61 -23
  288. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  289. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +61 -23
  290. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  291. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +6 -5
  292. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  293. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +6 -5
  294. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  295. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +45 -6
  296. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  297. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +45 -6
  298. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  299. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.cjs.js +3 -40
  300. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.cjs.js.map +1 -1
  301. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.es.js +3 -40
  302. package/dist/shared/src/containers/Views/hooks/useViewsShortcuts.es.js.map +1 -1
  303. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js +2 -1
  304. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js.map +1 -1
  305. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js +2 -1
  306. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js.map +1 -1
  307. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +6 -5
  308. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  309. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +6 -5
  310. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  311. package/dist/shared/src/context/AddonProjectContext.cjs.js +6 -5
  312. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  313. package/dist/shared/src/context/AddonProjectContext.es.js +6 -5
  314. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  315. package/dist/shared/src/context/DetailsPanelContext.cjs.js +6 -5
  316. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  317. package/dist/shared/src/context/DetailsPanelContext.es.js +6 -5
  318. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  319. package/dist/shared/src/context/PowerpackContext.cjs.js +6 -5
  320. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  321. package/dist/shared/src/context/PowerpackContext.es.js +6 -5
  322. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  323. package/dist/shared/src/context/RemoteModulesContext.cjs.js +6 -5
  324. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  325. package/dist/shared/src/context/RemoteModulesContext.es.js +6 -5
  326. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  327. package/dist/shared/src/hooks/useActionTriggers.cjs.js +6 -5
  328. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  329. package/dist/shared/src/hooks/useActionTriggers.es.js +6 -5
  330. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  331. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +6 -5
  332. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  333. package/dist/shared/src/hooks/useEntityUpdate.es.js +6 -5
  334. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  335. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  336. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  337. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +6 -5
  338. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  339. package/dist/shared/src/hooks/useScopedStatuses.es.js +6 -5
  340. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  341. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +6 -5
  342. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  343. package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -5
  344. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  345. package/dist/types/api/generated/access.d.ts +15 -0
  346. package/dist/types/api/generated/views.d.ts +4 -4
  347. package/dist/types/api/queries/index.d.ts +6 -5
  348. package/dist/types/api/queries/share/index.d.ts +1 -0
  349. package/dist/types/api/queries/share/share.d.ts +150 -0
  350. package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +10 -15
  351. package/dist/types/containers/Views/ViewItem/ViewItem.d.ts +1 -0
  352. package/dist/types/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.d.ts +2 -1
  353. package/dist/types/containers/Views/ViewsMenu/SectionHeader.d.ts +6 -0
  354. package/dist/types/containers/Views/ViewsMenu/SectionHeader.styled.d.ts +1 -0
  355. package/dist/types/containers/Views/ViewsMenu/ViewsMenu.d.ts +8 -3
  356. package/dist/types/containers/Views/context/ViewsContext.d.ts +3 -1
  357. package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +2 -1
  358. package/dist/types/containers/Views/hooks/useViewsMutations.d.ts +7 -0
  359. package/dist/types/containers/Views/index.d.ts +1 -1
  360. package/dist/types/containers/Views/utils/getCustomViewsFallback.d.ts +7 -6
  361. package/package.json +1 -1
  362. package/dist/types/api/generated/powerPack1.1.1Views.d.ts +0 -25
  363. package/dist/types/containers/Views/hooks/useOverviewViewSettings.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ViewsMenu.es.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { ViewItem } from '../ViewItem/ViewItem'\nimport * as Styled from './ViewsMenu.styled'\n\nexport const VIEW_DIVIDER = '_divider_' as const // Represents a divider\ntype Title = string // Represents a title\nexport type ViewMenuItem = ViewItem | typeof VIEW_DIVIDER | Title\n\nexport interface ViewsMenuProps extends React.HTMLAttributes<HTMLUListElement> {\n items: ViewMenuItem[] // Array of ViewMenuItem or string\n selected: string\n}\n\nexport const ViewsMenu = forwardRef<HTMLUListElement, ViewsMenuProps>(\n ({ items, selected, ...props }, ref) => {\n return (\n <Styled.Scrollable>\n <Styled.ViewsMenu {...props} ref={ref}>\n {items.map((item, index) => {\n if (item === '_divider_') {\n return <Styled.ViewsMenuDivider key={index} />\n } else if (typeof item === 'string') {\n return <Styled.ViewsMenuTitle key={index}>{item}</Styled.ViewsMenuTitle>\n } else {\n return (\n <ViewItem\n key={(item.id || '') + index.toString()}\n tabIndex={0}\n isSelected={item.id === selected}\n autoFocus={index === 0}\n {...item}\n />\n )\n }\n })}\n </Styled.ViewsMenu>\n </Styled.Scrollable>\n )\n },\n)\n"],"names":["jsx","Styled.Scrollable","Styled.ViewsMenu","Styled.ViewsMenuDivider","Styled.ViewsMenuTitle"],"mappings":";;;;AAIO,MAAM,eAAe;AASrB,MAAM,YAAY;AAAA,EACvB,CAAC,EAAE,OAAO,UAAU,GAAG,MAAA,GAAS,QAAQ;AACtC,WACGA,kCAAAA,IAAAC,YAAA,EACC,gDAACC,aAAA,EAAkB,GAAG,OAAO,KAC1B,UAAA,MAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,UAAI,SAAS,aAAa;AACxB,eAAQF,sCAAAG,kBAAA,CAAA,GAA6B,KAAO;AAAA,MAAA,WACnC,OAAO,SAAS,UAAU;AACnC,eAAQH,kCAAAA,IAAAI,gBAAA,EAAmC,kBAAR,KAAa;AAAA,MAAA,OAC3C;AAEH,eAAAJ,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,UAAU;AAAA,YACV,YAAY,KAAK,OAAO;AAAA,YACxB,WAAW,UAAU;AAAA,YACpB,GAAG;AAAA,UAAA;AAAA,WAJE,KAAK,MAAM,MAAM,MAAM,SAAS;AAAA,QAKxC;AAAA,MAAA;AAAA,IAEJ,CACD,GACH,EACF,CAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"ViewsMenu.es.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { ViewItem } from '../ViewItem/ViewItem'\nimport * as Styled from './ViewsMenu.styled'\nimport { SectionHeader } from './SectionHeader'\n\nexport const VIEW_DIVIDER = '_divider_' as const // Represents a divider\nexport type ViewSectionHeader = {\n type: 'section'\n id: string\n title: string\n collapsed?: boolean\n onToggle?: () => void\n}\nexport type ViewMenuItem = ViewItem | typeof VIEW_DIVIDER | ViewSectionHeader\n\nexport interface ViewsMenuProps extends React.HTMLAttributes<HTMLUListElement> {\n items: ViewMenuItem[] // Array of ViewMenuItem or string\n selected: string\n}\n\nconst isSectionHeader = (item: ViewMenuItem): item is ViewSectionHeader =>\n typeof item === 'object' && item !== null && 'type' in item && (item as any).type === 'section'\n\nexport const ViewsMenu = forwardRef<HTMLUListElement, ViewsMenuProps>(\n ({ items, selected, ...props }, ref) => {\n return (\n <Styled.Scrollable>\n <Styled.ViewsMenu {...props} ref={ref}>\n {items.map((item, index) => {\n if (item === '_divider_') {\n return <Styled.ViewsMenuDivider key={index} />\n } else if (isSectionHeader(item)) {\n return (\n <SectionHeader\n key={item.id}\n id={item.id}\n title={item.title}\n collapsed={item.collapsed}\n onClick={item.onToggle}\n />\n )\n } else {\n return (\n <ViewItem\n key={(item.id || '') + index.toString()}\n tabIndex={0}\n isSelected={item.id === selected}\n autoFocus={index === 0}\n {...item}\n />\n )\n }\n })}\n </Styled.ViewsMenu>\n </Styled.Scrollable>\n )\n },\n)\n"],"names":["jsx","Styled.Scrollable","Styled.ViewsMenu","Styled.ViewsMenuDivider"],"mappings":";;;;;AAKO,MAAM,eAAe;AAe5B,MAAM,kBAAkB,CAAC,SACvB,OAAO,SAAS,YAAY,SAAS,QAAQ,UAAU,QAAS,KAAa,SAAS;AAEjF,MAAM,YAAY;AAAA,EACvB,CAAC,EAAE,OAAO,UAAU,GAAG,MAAA,GAAS,QAAQ;AACtC,WACGA,kCAAAA,IAAAC,YAAA,EACC,gDAACC,aAAA,EAAkB,GAAG,OAAO,KAC1B,UAAA,MAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,UAAI,SAAS,aAAa;AACxB,eAAQF,sCAAAG,kBAAA,CAAA,GAA6B,KAAO;AAAA,MAAA,WACnC,gBAAgB,IAAI,GAAG;AAE9B,eAAAH,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,IAAI,KAAK;AAAA,YACT,OAAO,KAAK;AAAA,YACZ,WAAW,KAAK;AAAA,YAChB,SAAS,KAAK;AAAA,UAAA;AAAA,UAJT,KAAK;AAAA,QAKZ;AAAA,MAAA,OAEG;AAEH,eAAAA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,UAAU;AAAA,YACV,YAAY,KAAK,OAAO;AAAA,YACxB,WAAW,UAAU;AAAA,YACpB,GAAG;AAAA,UAAA;AAAA,WAJE,KAAK,MAAM,MAAM,MAAM,SAAS;AAAA,QAKxC;AAAA,MAAA;AAAA,IAEJ,CACD,GACH,EACF,CAAA;AAAA,EAAA;AAGN;"}
@@ -22,12 +22,11 @@ const ViewsMenuDivider = styled.li`
22
22
  background-color: var(--md-sys-color-outline-variant);
23
23
  margin: 4px 0;
24
24
  `;
25
- const ViewsMenuTitle = styled.li`
25
+ styled.li`
26
26
  ${ayonReactComponents.theme.labelSmall}
27
27
  color: var(--md-sys-color-outline);
28
28
  `;
29
29
  exports.Scrollable = Scrollable;
30
30
  exports.ViewsMenu = ViewsMenu;
31
31
  exports.ViewsMenuDivider = ViewsMenuDivider;
32
- exports.ViewsMenuTitle = ViewsMenuTitle;
33
32
  //# sourceMappingURL=ViewsMenu.styled.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewsMenu.styled.cjs.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.styled.ts"],"sourcesContent":["import { theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const Scrollable = styled.div`\n overflow: auto;\n max-height: 40vh;\n`\n\nexport const ViewsMenu = styled.ul`\n /* reset defaults */\n margin: 0;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-small);\n margin-bottom: var(--padding-s);\n`\n\n// 1px line divider\nexport const ViewsMenuDivider = styled.li`\n height: 1px;\n background-color: var(--md-sys-color-outline-variant);\n margin: 4px 0;\n`\n\nexport const ViewsMenuTitle = styled.li`\n ${theme.labelSmall}\n color: var(--md-sys-color-outline);\n`\n"],"names":["theme"],"mappings":";;;;AAGO,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAazB,MAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMhC,MAAM,iBAAiB,OAAO;AAAA,IACjCA,0BAAM,UAAU;AAAA;AAAA;;;;;"}
1
+ {"version":3,"file":"ViewsMenu.styled.cjs.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.styled.ts"],"sourcesContent":["import { theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const Scrollable = styled.div`\n overflow: auto;\n max-height: 40vh;\n`\n\nexport const ViewsMenu = styled.ul`\n /* reset defaults */\n margin: 0;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-small);\n margin-bottom: var(--padding-s);\n`\n\n// 1px line divider\nexport const ViewsMenuDivider = styled.li`\n height: 1px;\n background-color: var(--md-sys-color-outline-variant);\n margin: 4px 0;\n`\n\nexport const ViewsMenuTitle = styled.li`\n ${theme.labelSmall}\n color: var(--md-sys-color-outline);\n`\n"],"names":["theme"],"mappings":";;;;AAGO,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAazB,MAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMT,OAAO;AAAA,IACjCA,0BAAM,UAAU;AAAA;AAAA;;;;"}
@@ -20,14 +20,13 @@ const ViewsMenuDivider = styled.li`
20
20
  background-color: var(--md-sys-color-outline-variant);
21
21
  margin: 4px 0;
22
22
  `;
23
- const ViewsMenuTitle = styled.li`
23
+ styled.li`
24
24
  ${theme.labelSmall}
25
25
  color: var(--md-sys-color-outline);
26
26
  `;
27
27
  export {
28
28
  Scrollable,
29
29
  ViewsMenu,
30
- ViewsMenuDivider,
31
- ViewsMenuTitle
30
+ ViewsMenuDivider
32
31
  };
33
32
  //# sourceMappingURL=ViewsMenu.styled.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewsMenu.styled.es.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.styled.ts"],"sourcesContent":["import { theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const Scrollable = styled.div`\n overflow: auto;\n max-height: 40vh;\n`\n\nexport const ViewsMenu = styled.ul`\n /* reset defaults */\n margin: 0;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-small);\n margin-bottom: var(--padding-s);\n`\n\n// 1px line divider\nexport const ViewsMenuDivider = styled.li`\n height: 1px;\n background-color: var(--md-sys-color-outline-variant);\n margin: 4px 0;\n`\n\nexport const ViewsMenuTitle = styled.li`\n ${theme.labelSmall}\n color: var(--md-sys-color-outline);\n`\n"],"names":[],"mappings":";;AAGO,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAazB,MAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMhC,MAAM,iBAAiB,OAAO;AAAA,IACjC,MAAM,UAAU;AAAA;AAAA;"}
1
+ {"version":3,"file":"ViewsMenu.styled.es.js","sources":["../../../../../../src/containers/Views/ViewsMenu/ViewsMenu.styled.ts"],"sourcesContent":["import { theme } from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\n\nexport const Scrollable = styled.div`\n overflow: auto;\n max-height: 40vh;\n`\n\nexport const ViewsMenu = styled.ul`\n /* reset defaults */\n margin: 0;\n padding: 0;\n list-style: none;\n\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-small);\n margin-bottom: var(--padding-s);\n`\n\n// 1px line divider\nexport const ViewsMenuDivider = styled.li`\n height: 1px;\n background-color: var(--md-sys-color-outline-variant);\n margin: 4px 0;\n`\n\nexport const ViewsMenuTitle = styled.li`\n ${theme.labelSmall}\n color: var(--md-sys-color-outline);\n`\n"],"names":[],"mappings":";;AAGO,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAazB,MAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMT,OAAO;AAAA,IACjC,MAAM,UAAU;AAAA;AAAA;"}
@@ -6,6 +6,7 @@ require("react-dom");
6
6
  require("../Views.styled.cjs.js");
7
7
  require("clsx");
8
8
  const ViewsMenuContainer = require("../ViewsMenuContainer/ViewsMenuContainer.cjs.js");
9
+ const useLocalStorage = require("../../../hooks/useLocalStorage.cjs.js");
9
10
  require("../../../context/RemoteModulesContext.cjs.js");
10
11
  require("../../../../../_virtual/runtime.cjs.js");
11
12
  require("../../../../../_virtual/semver.cjs.js");
@@ -56,6 +57,7 @@ require("../../../api/queries/addons/updateAddons.cjs.js");
56
57
  require("../../../api/queries/attributes/getAttributes.cjs.js");
57
58
  require("../../../api/queries/attributes/updateAttributes.cjs.js");
58
59
  require("../../../api/queries/authentication/getAuthentication.cjs.js");
60
+ require("../../../api/queries/cloud/cloud.cjs.js");
59
61
  require("../../../api/queries/entities/getEntity.cjs.js");
60
62
  require("../../../api/queries/entities/getEntityPanel.cjs.js");
61
63
  require("../../../api/queries/entities/updateEntity.cjs.js");
@@ -64,24 +66,24 @@ require("../../../api/queries/entityLists/updateLists.cjs.js");
64
66
  require("../../../api/queries/entityLists/getListsAttributes.cjs.js");
65
67
  require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");
66
68
  require("../../../api/queries/folders/getFolders.cjs.js");
69
+ require("../../../api/queries/grouping/getGrouping.cjs.js");
67
70
  require("../../../api/queries/overview/getOverview.cjs.js");
68
71
  require("../../../api/queries/overview/updateOverview.cjs.js");
72
+ require("../../../api/queries/permissions/getPermissions.cjs.js");
73
+ require("../../../api/queries/products/createProduct.cjs.js");
69
74
  require("../../../api/queries/project/getProject.cjs.js");
70
75
  require("../../../api/queries/project/updateProject.cjs.js");
71
76
  require("../../../api/queries/review/getReview.cjs.js");
72
77
  require("../../../api/queries/review/updateReview.cjs.js");
78
+ const share = require("../../../api/queries/share/share.cjs.js");
73
79
  require("../../../api/queries/system/getSystem.cjs.js");
74
80
  require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");
75
81
  const getUsers = require("../../../api/queries/users/getUsers.cjs.js");
76
82
  require("../../../api/queries/users/updateUsers.cjs.js");
77
- require("../../../api/queries/watchers/getWatchers.cjs.js");
78
- require("../../../api/queries/permissions/getPermissions.cjs.js");
79
- require("../../../api/queries/grouping/getGrouping.cjs.js");
80
83
  require("../../../api/queries/versions/updateVersions.cjs.js");
81
- require("../../../api/queries/products/createProduct.cjs.js");
82
- require("../../../api/queries/cloud/cloud.cjs.js");
83
84
  const getViews = require("../../../api/queries/views/getViews.cjs.js");
84
85
  const updateViews = require("../../../api/queries/views/updateViews.cjs.js");
86
+ require("../../../api/queries/watchers/getWatchers.cjs.js");
85
87
  require("lodash");
86
88
  require("react-toastify");
87
89
  require("../../../context/DetailsPanelContext.cjs.js");
@@ -118,9 +120,20 @@ const ViewsProvider = ({
118
120
  powerLicense = debug.powerLicense;
119
121
  }
120
122
  const { data: currentUser } = getUsers.useGetCurrentUserQuery();
121
- const { onCreateView, onDeleteView, onUpdateView } = useViewsMutations.useViewsMutations({ viewType, projectName });
123
+ const { onCreateView, onDeleteView, onUpdateView, onResetWorkingView } = useViewsMutations.useViewsMutations({
124
+ viewType,
125
+ projectName
126
+ });
122
127
  const [isMenuOpen, setIsMenuOpen] = React.useState(false);
123
128
  const [editingView, setEditingView] = React.useState(null);
129
+ const [collapsedSections, setCollapsedSections] = useLocalStorage.useLocalStorage(
130
+ "collapsed-views",
131
+ {}
132
+ );
133
+ const { data: shareOptions } = share.useGetShareOptionsQuery(
134
+ { projectName },
135
+ { skip: !powerLicense || !editingView }
136
+ );
124
137
  const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView.useSelectedView({
125
138
  viewType,
126
139
  projectName
@@ -154,6 +167,19 @@ const ViewsProvider = ({
154
167
  sourceSettings: viewSettings,
155
168
  onUpdateView
156
169
  });
170
+ const resetWorkingView = React.useCallback(async () => {
171
+ try {
172
+ await onResetWorkingView({
173
+ existingWorkingViewId: workingView == null ? void 0 : workingView.id,
174
+ selectedViewId: selectedView == null ? void 0 : selectedView.id,
175
+ setSelectedView,
176
+ setSettingsChanged: setViewSettingsChanged,
177
+ notify: true
178
+ });
179
+ } catch (error) {
180
+ console.error("Failed to reset view:", error);
181
+ }
182
+ }, [workingView, onResetWorkingView, selectedView, setSelectedView, setViewSettingsChanged]);
157
183
  const viewMenuItems = useBuildViewMenuItems.default({
158
184
  viewsList,
159
185
  workingView,
@@ -162,9 +188,11 @@ const ViewsProvider = ({
162
188
  currentUser,
163
189
  useWorkingView: !powerLicense,
164
190
  editingViewId,
191
+ onResetWorkingView,
165
192
  onSelect: (viewId) => {
166
193
  setSelectedView(viewId);
167
194
  setViewSettingsChanged(false);
195
+ setIsMenuOpen(false);
168
196
  },
169
197
  onEdit: (viewId) => setEditingView(viewId),
170
198
  onSave: async (viewId) => onSaveViewFromCurrent(viewId)
@@ -185,6 +213,8 @@ const ViewsProvider = ({
185
213
  viewMenuItems,
186
214
  isLoadingViews,
187
215
  isViewWorking,
216
+ // data
217
+ shareOptions,
188
218
  setIsMenuOpen,
189
219
  setEditingView,
190
220
  setSelectedView,
@@ -193,6 +223,8 @@ const ViewsProvider = ({
193
223
  onCreateView,
194
224
  onUpdateView,
195
225
  onDeleteView,
226
+ // shared actions
227
+ resetWorkingView,
196
228
  // api
197
229
  api: updateViews.viewsQueries,
198
230
  dispatch
@@ -1 +1 @@
1
- {"version":3,"file":"ViewsContext.cjs.js","sources":["../../../../../../src/containers/Views/context/ViewsContext.tsx"],"sourcesContent":["import { createContext, useContext, FC, ReactNode, useState, useMemo, useCallback } from 'react'\nimport { ViewType, WORKING_VIEW_ID } from '../index'\nimport {\n GetDefaultViewApiResponse,\n useGetCurrentUserQuery,\n useGetWorkingViewQuery,\n useGetViewQuery,\n useListViewsQuery,\n UserModel,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport useBuildViewMenuItems from '../hooks/useBuildViewMenuItems'\nimport { ViewMenuItem } from '../ViewsMenu/ViewsMenu'\nimport { usePowerpack } from '@shared/context'\nimport { useSelectedView } from '../hooks/useSelectedView'\nimport { UseViewMutations, useViewsMutations } from '../hooks/useViewsMutations'\nimport { useSaveViewFromCurrent } from '../hooks/useSaveViewFromCurrent'\nimport { useViewSettingsChanged } from '../hooks/useViewSettingsChanged'\n\nexport type ViewData = GetDefaultViewApiResponse\nexport type ViewSettings = GetDefaultViewApiResponse['settings']\nexport type SelectedViewState = ViewData | undefined // id of view otherwise null with use working\nexport type EditingViewState = string | true | null // id of view being edited otherwise null\n\nconst viewTypes = ['overview', 'taskProgress', 'lists'] as const\nexport interface ViewsContextValue {\n // State\n viewType?: ViewType\n projectName?: string\n currentUser?: UserModel\n isMenuOpen: boolean\n editingView: EditingViewState\n selectedView: SelectedViewState\n\n // Views data\n viewsList: ViewListItemModel[]\n viewSettings: ViewSettings | undefined\n workingSettings: ViewSettings | undefined\n workingView: ViewListItemModel | undefined\n editingViewId: string | undefined\n viewMenuItems: ViewMenuItem[]\n editingViewData?: ViewData\n isLoadingViews: boolean\n isViewWorking: boolean\n\n // Actions\n setIsMenuOpen: (open: boolean) => void\n setEditingView: (editing: EditingViewState) => void\n setSelectedView: (viewId: string) => void\n onSettingsChanged: (changed: boolean) => void\n\n // Mutations\n onCreateView: UseViewMutations['onCreateView']\n onDeleteView: UseViewMutations['onDeleteView']\n onUpdateView: UseViewMutations['onUpdateView']\n\n // api\n api: typeof viewsQueries\n dispatch: any\n}\n\nconst ViewsContext = createContext<ViewsContextValue | null>(null)\n\nexport interface ViewsProviderProps {\n children: ReactNode\n viewType?: string\n projectName?: string\n dispatch?: any\n debug?: {\n powerLicense?: boolean\n }\n}\n\nexport const ViewsProvider: FC<ViewsProviderProps> = ({\n children,\n viewType: viewTypeProp,\n projectName,\n dispatch,\n debug,\n}) => {\n // validate viewType\n const viewType = viewTypes.includes(viewTypeProp as ViewType)\n ? (viewTypeProp as ViewType)\n : undefined\n\n let { powerLicense } = usePowerpack()\n if (debug?.powerLicense !== undefined) {\n console.warn('Using debug power license:', debug.powerLicense)\n powerLicense = debug.powerLicense\n }\n\n const { data: currentUser } = useGetCurrentUserQuery()\n\n const { onCreateView, onDeleteView, onUpdateView } = useViewsMutations({ viewType, projectName })\n\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [editingView, setEditingView] = useState<EditingViewState>(null)\n\n // setting of default views\n const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView({\n viewType: viewType as string,\n projectName: projectName,\n })\n\n const [viewSettingsChanged, setViewSettingsChanged] = useViewSettingsChanged({\n viewType: viewType as ViewType,\n })\n\n // Fetch views data\n const { currentData: viewsList = [], isLoading: isLoadingViews } = useListViewsQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n // always get your working view\n const { currentData: workingView } = useGetWorkingViewQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n const workingSettings = workingView?.settings\n\n // which settings to use for the view\n const viewSettings =\n !selectedView || selectedView.id === WORKING_VIEW_ID ? workingSettings : selectedView?.settings\n\n // is the working view selected?\n const isViewWorking = selectedView?.id === workingView?.id\n // were we just on a custom view and then edited it and ended up on the working view\n const editingViewId =\n viewSettingsChanged &&\n isViewWorking &&\n !!previousSelectedViewId &&\n previousSelectedViewId !== workingView?.id\n ? previousSelectedViewId\n : undefined\n\n // get data for the view we are editing\n const { currentData: editingViewDataData } = useGetViewQuery(\n { viewId: editingView as string, projectName: projectName, viewType: viewType as string },\n { skip: !(typeof editingView === 'string') || !powerLicense },\n )\n\n const editingViewData = useMemo(\n () => (editingView === editingViewDataData?.id ? editingViewDataData : undefined),\n [editingView, editingViewDataData],\n )\n\n const { onSaveViewFromCurrent } = useSaveViewFromCurrent({\n viewType: viewType,\n projectName,\n sourceSettings: viewSettings,\n onUpdateView: onUpdateView,\n })\n\n // build the menu items for the views\n const viewMenuItems = useBuildViewMenuItems({\n viewsList,\n workingView,\n viewType,\n projectName,\n currentUser,\n useWorkingView: !powerLicense,\n editingViewId,\n onSelect: (viewId) => {\n setSelectedView(viewId)\n // reset the settings changed state when switching views\n setViewSettingsChanged(false)\n },\n onEdit: (viewId) => setEditingView(viewId),\n onSave: async (viewId) => onSaveViewFromCurrent(viewId),\n })\n\n const value: ViewsContextValue = {\n viewType,\n projectName,\n isMenuOpen,\n editingView,\n currentUser,\n selectedView,\n viewSettings,\n workingSettings,\n editingViewData,\n viewsList,\n workingView,\n editingViewId,\n viewMenuItems,\n isLoadingViews,\n isViewWorking,\n setIsMenuOpen,\n setEditingView,\n setSelectedView,\n onSettingsChanged: setViewSettingsChanged,\n // mutations\n onCreateView,\n onUpdateView,\n onDeleteView,\n // api\n api: viewsQueries,\n dispatch,\n }\n\n return <ViewsContext.Provider value={value}>{children}</ViewsContext.Provider>\n}\n\nexport const useViewsContext = (): ViewsContextValue => {\n const context = useContext(ViewsContext)\n if (!context) {\n throw new Error('useViewsContext must be used within a ViewsProvider')\n }\n return context\n}\n"],"names":["createContext","usePowerpack","useGetCurrentUserQuery","useViewsMutations","useState","useSelectedView","useViewSettingsChanged","useListViewsQuery","useGetWorkingViewQuery","WORKING_VIEW_ID","useGetViewQuery","useMemo","useSaveViewFromCurrent","useBuildViewMenuItems","viewsQueries","jsx","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"ViewsContext.cjs.js","sources":["../../../../../../src/containers/Views/context/ViewsContext.tsx"],"sourcesContent":["import { createContext, useContext, FC, ReactNode, useState, useMemo, useCallback } from 'react'\nimport { ViewType, WORKING_VIEW_ID } from '../index'\nimport {\n GetDefaultViewApiResponse,\n useGetCurrentUserQuery,\n useGetWorkingViewQuery,\n useGetViewQuery,\n useListViewsQuery,\n UserModel,\n ViewListItemModel,\n viewsQueries,\n useGetShareOptionsQuery,\n ShareOption,\n} from '@shared/api'\nimport useBuildViewMenuItems from '../hooks/useBuildViewMenuItems'\nimport { ViewMenuItem } from '../ViewsMenu/ViewsMenu'\nimport { usePowerpack } from '@shared/context'\nimport { useSelectedView } from '../hooks/useSelectedView'\nimport { UseViewMutations, useViewsMutations } from '../hooks/useViewsMutations'\nimport { useSaveViewFromCurrent } from '../hooks/useSaveViewFromCurrent'\nimport { useViewSettingsChanged } from '../hooks/useViewSettingsChanged'\nimport { useLocalStorage } from '@shared/hooks'\n\nexport type ViewData = GetDefaultViewApiResponse\nexport type ViewSettings = GetDefaultViewApiResponse['settings']\nexport type SelectedViewState = ViewData | undefined // id of view otherwise null with use working\nexport type EditingViewState = string | true | null // id of view being edited otherwise null\n\nconst viewTypes = ['overview', 'taskProgress', 'lists'] as const\nexport interface ViewsContextValue {\n // State\n viewType?: ViewType\n projectName?: string\n currentUser?: UserModel\n isMenuOpen: boolean\n editingView: EditingViewState\n selectedView: SelectedViewState\n\n // Views data\n viewsList: ViewListItemModel[]\n viewSettings: ViewSettings | undefined\n workingSettings: ViewSettings | undefined\n workingView: ViewListItemModel | undefined\n editingViewId: string | undefined\n viewMenuItems: ViewMenuItem[]\n editingViewData?: ViewData\n isLoadingViews: boolean\n isViewWorking: boolean\n\n // Data\n shareOptions?: ShareOption[] // available users to share with (undefined means loading)\n\n // Actions\n setIsMenuOpen: (open: boolean) => void\n setEditingView: (editing: EditingViewState) => void\n setSelectedView: (viewId: string) => void\n onSettingsChanged: (changed: boolean) => void\n\n // Mutations\n onCreateView: UseViewMutations['onCreateView']\n onDeleteView: UseViewMutations['onDeleteView']\n onUpdateView: UseViewMutations['onUpdateView']\n\n // Actions (shared)\n resetWorkingView: () => Promise<void>\n\n // api\n api: typeof viewsQueries\n dispatch: any\n}\n\nconst ViewsContext = createContext<ViewsContextValue | null>(null)\n\nexport interface ViewsProviderProps {\n children: ReactNode\n viewType?: string\n projectName?: string\n dispatch?: any\n debug?: {\n powerLicense?: boolean\n }\n}\n\nexport const ViewsProvider: FC<ViewsProviderProps> = ({\n children,\n viewType: viewTypeProp,\n projectName,\n dispatch,\n debug,\n}) => {\n // validate viewType\n const viewType = viewTypes.includes(viewTypeProp as ViewType)\n ? (viewTypeProp as ViewType)\n : undefined\n\n let { powerLicense } = usePowerpack()\n if (debug?.powerLicense !== undefined) {\n console.warn('Using debug power license:', debug.powerLicense)\n powerLicense = debug.powerLicense\n }\n\n const { data: currentUser } = useGetCurrentUserQuery()\n\n const { onCreateView, onDeleteView, onUpdateView, onResetWorkingView } = useViewsMutations({\n viewType,\n projectName,\n })\n\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [editingView, setEditingView] = useState<EditingViewState>(null)\n const [collapsedSections, setCollapsedSections] = useLocalStorage<Record<string, boolean>>(\n 'collapsed-views',\n {},\n )\n\n // when editing the view, get all users that can be shared to that view\n const { data: shareOptions } = useGetShareOptionsQuery(\n { projectName },\n { skip: !powerLicense || !editingView },\n )\n\n // setting of default views\n const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView({\n viewType: viewType as string,\n projectName: projectName,\n })\n\n const [viewSettingsChanged, setViewSettingsChanged] = useViewSettingsChanged({\n viewType: viewType as ViewType,\n })\n\n // Fetch views data\n const { currentData: viewsList = [], isLoading: isLoadingViews } = useListViewsQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n // always get your working view\n const { currentData: workingView } = useGetWorkingViewQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n const workingSettings = workingView?.settings\n\n // which settings to use for the view\n const viewSettings =\n !selectedView || selectedView.id === WORKING_VIEW_ID ? workingSettings : selectedView?.settings\n\n // is the working view selected?\n const isViewWorking = selectedView?.id === workingView?.id\n // were we just on a custom view and then edited it and ended up on the working view\n const editingViewId =\n viewSettingsChanged &&\n isViewWorking &&\n !!previousSelectedViewId &&\n previousSelectedViewId !== workingView?.id\n ? previousSelectedViewId\n : undefined\n\n // get data for the view we are editing\n const { currentData: editingViewDataData } = useGetViewQuery(\n { viewId: editingView as string, projectName: projectName, viewType: viewType as string },\n { skip: !(typeof editingView === 'string') || !powerLicense },\n )\n\n const editingViewData = useMemo(\n () => (editingView === editingViewDataData?.id ? editingViewDataData : undefined),\n [editingView, editingViewDataData],\n )\n\n const { onSaveViewFromCurrent } = useSaveViewFromCurrent({\n viewType: viewType,\n projectName,\n sourceSettings: viewSettings,\n onUpdateView: onUpdateView,\n })\n\n // Reset working view to default (empty) settings\n const resetWorkingView = useCallback(async () => {\n try {\n await onResetWorkingView({\n existingWorkingViewId: workingView?.id,\n selectedViewId: selectedView?.id,\n setSelectedView,\n setSettingsChanged: setViewSettingsChanged,\n notify: true,\n })\n } catch (error) {\n console.error('Failed to reset view:', error)\n }\n }, [workingView, onResetWorkingView, selectedView, setSelectedView, setViewSettingsChanged])\n\n // build the menu items for the views\n const viewMenuItems = useBuildViewMenuItems({\n viewsList,\n workingView,\n viewType,\n projectName,\n currentUser,\n useWorkingView: !powerLicense,\n editingViewId,\n onResetWorkingView,\n onSelect: (viewId) => {\n setSelectedView(viewId)\n // reset the settings changed state when switching views\n setViewSettingsChanged(false)\n // close the menu when selecting a view\n setIsMenuOpen(false)\n },\n onEdit: (viewId) => setEditingView(viewId),\n onSave: async (viewId) => onSaveViewFromCurrent(viewId),\n })\n\n const value: ViewsContextValue = {\n viewType,\n projectName,\n isMenuOpen,\n editingView,\n currentUser,\n selectedView,\n viewSettings,\n workingSettings,\n editingViewData,\n viewsList,\n workingView,\n editingViewId,\n viewMenuItems,\n isLoadingViews,\n isViewWorking,\n // data\n shareOptions,\n setIsMenuOpen,\n setEditingView,\n setSelectedView,\n onSettingsChanged: setViewSettingsChanged,\n // mutations\n onCreateView,\n onUpdateView,\n onDeleteView,\n // shared actions\n resetWorkingView,\n // api\n api: viewsQueries,\n dispatch,\n }\n\n return <ViewsContext.Provider value={value}>{children}</ViewsContext.Provider>\n}\n\nexport const useViewsContext = (): ViewsContextValue => {\n const context = useContext(ViewsContext)\n if (!context) {\n throw new Error('useViewsContext must be used within a ViewsProvider')\n }\n return context\n}\n"],"names":["createContext","usePowerpack","useGetCurrentUserQuery","useViewsMutations","useState","useLocalStorage","useGetShareOptionsQuery","useSelectedView","useViewSettingsChanged","useListViewsQuery","useGetWorkingViewQuery","WORKING_VIEW_ID","useGetViewQuery","useMemo","useSaveViewFromCurrent","useCallback","useBuildViewMenuItems","viewsQueries","jsx","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAM,YAAY,CAAC,YAAY,gBAAgB,OAAO;AA2CtD,MAAM,eAAeA,oBAAwC,IAAI;AAY1D,MAAM,gBAAwC,CAAC;AAAA,EACpD;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AACF,MAAM;AAEJ,QAAM,WAAW,UAAU,SAAS,YAAwB,IACvD,eACD;AAEA,MAAA,EAAE,aAAa,IAAIC,8BAAa;AAChC,OAAA,+BAAO,kBAAiB,QAAW;AAC7B,YAAA,KAAK,8BAA8B,MAAM,YAAY;AAC7D,mBAAe,MAAM;AAAA,EAAA;AAGvB,QAAM,EAAE,MAAM,YAAY,IAAIC,gCAAuB;AAErD,QAAM,EAAE,cAAc,cAAc,cAAc,mBAAA,IAAuBC,kBAAAA,kBAAkB;AAAA,IACzF;AAAA,IACA;AAAA,EAAA,CACD;AAED,QAAM,CAAC,YAAY,aAAa,IAAIC,MAAAA,SAAS,KAAK;AAClD,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAA2B,IAAI;AAC/D,QAAA,CAAC,mBAAmB,oBAAoB,IAAIC,gBAAA;AAAA,IAChD;AAAA,IACA,CAAA;AAAA,EACF;AAGM,QAAA,EAAE,MAAM,aAAA,IAAiBC,MAAA;AAAA,IAC7B,EAAE,YAAY;AAAA,IACd,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY;AAAA,EACxC;AAGA,QAAM,CAAC,cAAc,iBAAiB,sBAAsB,IAAIC,gBAAAA,gBAAgB;AAAA,IAC9E;AAAA,IACA;AAAA,EAAA,CACD;AAED,QAAM,CAAC,qBAAqB,sBAAsB,IAAIC,8CAAuB;AAAA,IAC3E;AAAA,EAAA,CACD;AAGD,QAAM,EAAE,aAAa,YAAY,CAAI,GAAA,WAAW,mBAAmBC,SAAA;AAAA,IACjE,EAAE,aAA0B,SAA6B;AAAA,IACzD,EAAE,MAAM,CAAC,SAAS;AAAA,EACpB;AAGM,QAAA,EAAE,aAAa,YAAA,IAAgBC,SAAA;AAAA,IACnC,EAAE,aAA0B,SAA6B;AAAA,IACzD,EAAE,MAAM,CAAC,SAAS;AAAA,EACpB;AAEA,QAAM,kBAAkB,2CAAa;AAGrC,QAAM,eACJ,CAAC,gBAAgB,aAAa,OAAOC,qCAAkB,kBAAkB,6CAAc;AAGnF,QAAA,iBAAgB,6CAAc,SAAO,2CAAa;AAElD,QAAA,gBACJ,uBACA,iBACA,CAAC,CAAC,0BACF,4BAA2B,2CAAa,MACpC,yBACA;AAGA,QAAA,EAAE,aAAa,oBAAA,IAAwBC,SAAA;AAAA,IAC3C,EAAE,QAAQ,aAAuB,aAA0B,SAA6B;AAAA,IACxF,EAAE,MAAM,EAAE,OAAO,gBAAgB,aAAa,CAAC,aAAa;AAAA,EAC9D;AAEA,QAAM,kBAAkBC,MAAA;AAAA,IACtB,MAAO,iBAAgB,2DAAqB,MAAK,sBAAsB;AAAA,IACvE,CAAC,aAAa,mBAAmB;AAAA,EACnC;AAEM,QAAA,EAAE,sBAAsB,IAAIC,8CAAuB;AAAA,IACvD;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,EAAA,CACD;AAGK,QAAA,mBAAmBC,MAAAA,YAAY,YAAY;AAC3C,QAAA;AACF,YAAM,mBAAmB;AAAA,QACvB,uBAAuB,2CAAa;AAAA,QACpC,gBAAgB,6CAAc;AAAA,QAC9B;AAAA,QACA,oBAAoB;AAAA,QACpB,QAAQ;AAAA,MAAA,CACT;AAAA,aACM,OAAO;AACN,cAAA,MAAM,yBAAyB,KAAK;AAAA,IAAA;AAAA,EAC9C,GACC,CAAC,aAAa,oBAAoB,cAAc,iBAAiB,sBAAsB,CAAC;AAG3F,QAAM,gBAAgBC,sBAAAA,QAAsB;AAAA,IAC1C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,CAAC;AAAA,IACjB;AAAA,IACA;AAAA,IACA,UAAU,CAAC,WAAW;AACpB,sBAAgB,MAAM;AAEtB,6BAAuB,KAAK;AAE5B,oBAAc,KAAK;AAAA,IACrB;AAAA,IACA,QAAQ,CAAC,WAAW,eAAe,MAAM;AAAA,IACzC,QAAQ,OAAO,WAAW,sBAAsB,MAAM;AAAA,EAAA,CACvD;AAED,QAAM,QAA2B;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA;AAAA,IAEnB;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA,KAAKC,YAAA;AAAA,IACL;AAAA,EACF;AAEA,SAAQC,2BAAAA,kBAAAA,IAAA,aAAa,UAAb,EAAsB,OAAe,SAAS,CAAA;AACxD;AAEO,MAAM,kBAAkB,MAAyB;AAChD,QAAA,UAAUC,iBAAW,YAAY;AACvC,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,qDAAqD;AAAA,EAAA;AAEhE,SAAA;AACT;;;"}
@@ -1,9 +1,10 @@
1
1
  import { j as jsxRuntimeExports } from "../../../../../_virtual/jsx-runtime.es.js";
2
- import { createContext, useState, useMemo, useContext } from "react";
2
+ import { createContext, useState, useMemo, useCallback, useContext } from "react";
3
3
  import "react-dom";
4
4
  import "../Views.styled.es.js";
5
5
  import "clsx";
6
6
  import { WORKING_VIEW_ID } from "../ViewsMenuContainer/ViewsMenuContainer.es.js";
7
+ import { useLocalStorage } from "../../../hooks/useLocalStorage.es.js";
7
8
  import "../../../context/RemoteModulesContext.es.js";
8
9
  import "../../../../../_virtual/runtime.es.js";
9
10
  import "../../../../../_virtual/semver.es.js";
@@ -54,6 +55,7 @@ import "../../../api/queries/addons/updateAddons.es.js";
54
55
  import "../../../api/queries/attributes/getAttributes.es.js";
55
56
  import "../../../api/queries/attributes/updateAttributes.es.js";
56
57
  import "../../../api/queries/authentication/getAuthentication.es.js";
58
+ import "../../../api/queries/cloud/cloud.es.js";
57
59
  import "../../../api/queries/entities/getEntity.es.js";
58
60
  import "../../../api/queries/entities/getEntityPanel.es.js";
59
61
  import "../../../api/queries/entities/updateEntity.es.js";
@@ -62,24 +64,24 @@ import "../../../api/queries/entityLists/updateLists.es.js";
62
64
  import "../../../api/queries/entityLists/getListsAttributes.es.js";
63
65
  import "../../../api/queries/entityLists/updateListsAttributes.es.js";
64
66
  import "../../../api/queries/folders/getFolders.es.js";
67
+ import "../../../api/queries/grouping/getGrouping.es.js";
65
68
  import "../../../api/queries/overview/getOverview.es.js";
66
69
  import "../../../api/queries/overview/updateOverview.es.js";
70
+ import "../../../api/queries/permissions/getPermissions.es.js";
71
+ import "../../../api/queries/products/createProduct.es.js";
67
72
  import "../../../api/queries/project/getProject.es.js";
68
73
  import "../../../api/queries/project/updateProject.es.js";
69
74
  import "../../../api/queries/review/getReview.es.js";
70
75
  import "../../../api/queries/review/updateReview.es.js";
76
+ import { useGetShareOptionsQuery } from "../../../api/queries/share/share.es.js";
71
77
  import "../../../api/queries/system/getSystem.es.js";
72
78
  import "../../../api/queries/userDashboard/getUserDashboard.es.js";
73
79
  import { useGetCurrentUserQuery } from "../../../api/queries/users/getUsers.es.js";
74
80
  import "../../../api/queries/users/updateUsers.es.js";
75
- import "../../../api/queries/watchers/getWatchers.es.js";
76
- import "../../../api/queries/permissions/getPermissions.es.js";
77
- import "../../../api/queries/grouping/getGrouping.es.js";
78
81
  import "../../../api/queries/versions/updateVersions.es.js";
79
- import "../../../api/queries/products/createProduct.es.js";
80
- import "../../../api/queries/cloud/cloud.es.js";
81
82
  import { useListViewsQuery, useGetWorkingViewQuery, useGetViewQuery } from "../../../api/queries/views/getViews.es.js";
82
83
  import { viewsQueries as updateViewsApi } from "../../../api/queries/views/updateViews.es.js";
84
+ import "../../../api/queries/watchers/getWatchers.es.js";
83
85
  import "lodash";
84
86
  import "react-toastify";
85
87
  import "../../../context/DetailsPanelContext.es.js";
@@ -116,9 +118,20 @@ const ViewsProvider = ({
116
118
  powerLicense = debug.powerLicense;
117
119
  }
118
120
  const { data: currentUser } = useGetCurrentUserQuery();
119
- const { onCreateView, onDeleteView, onUpdateView } = useViewsMutations({ viewType, projectName });
121
+ const { onCreateView, onDeleteView, onUpdateView, onResetWorkingView } = useViewsMutations({
122
+ viewType,
123
+ projectName
124
+ });
120
125
  const [isMenuOpen, setIsMenuOpen] = useState(false);
121
126
  const [editingView, setEditingView] = useState(null);
127
+ const [collapsedSections, setCollapsedSections] = useLocalStorage(
128
+ "collapsed-views",
129
+ {}
130
+ );
131
+ const { data: shareOptions } = useGetShareOptionsQuery(
132
+ { projectName },
133
+ { skip: !powerLicense || !editingView }
134
+ );
122
135
  const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView({
123
136
  viewType,
124
137
  projectName
@@ -152,6 +165,19 @@ const ViewsProvider = ({
152
165
  sourceSettings: viewSettings,
153
166
  onUpdateView
154
167
  });
168
+ const resetWorkingView = useCallback(async () => {
169
+ try {
170
+ await onResetWorkingView({
171
+ existingWorkingViewId: workingView == null ? void 0 : workingView.id,
172
+ selectedViewId: selectedView == null ? void 0 : selectedView.id,
173
+ setSelectedView,
174
+ setSettingsChanged: setViewSettingsChanged,
175
+ notify: true
176
+ });
177
+ } catch (error) {
178
+ console.error("Failed to reset view:", error);
179
+ }
180
+ }, [workingView, onResetWorkingView, selectedView, setSelectedView, setViewSettingsChanged]);
155
181
  const viewMenuItems = useBuildViewMenuItems({
156
182
  viewsList,
157
183
  workingView,
@@ -160,9 +186,11 @@ const ViewsProvider = ({
160
186
  currentUser,
161
187
  useWorkingView: !powerLicense,
162
188
  editingViewId,
189
+ onResetWorkingView,
163
190
  onSelect: (viewId) => {
164
191
  setSelectedView(viewId);
165
192
  setViewSettingsChanged(false);
193
+ setIsMenuOpen(false);
166
194
  },
167
195
  onEdit: (viewId) => setEditingView(viewId),
168
196
  onSave: async (viewId) => onSaveViewFromCurrent(viewId)
@@ -183,6 +211,8 @@ const ViewsProvider = ({
183
211
  viewMenuItems,
184
212
  isLoadingViews,
185
213
  isViewWorking,
214
+ // data
215
+ shareOptions,
186
216
  setIsMenuOpen,
187
217
  setEditingView,
188
218
  setSelectedView,
@@ -191,6 +221,8 @@ const ViewsProvider = ({
191
221
  onCreateView,
192
222
  onUpdateView,
193
223
  onDeleteView,
224
+ // shared actions
225
+ resetWorkingView,
194
226
  // api
195
227
  api: updateViewsApi,
196
228
  dispatch
@@ -1 +1 @@
1
- {"version":3,"file":"ViewsContext.es.js","sources":["../../../../../../src/containers/Views/context/ViewsContext.tsx"],"sourcesContent":["import { createContext, useContext, FC, ReactNode, useState, useMemo, useCallback } from 'react'\nimport { ViewType, WORKING_VIEW_ID } from '../index'\nimport {\n GetDefaultViewApiResponse,\n useGetCurrentUserQuery,\n useGetWorkingViewQuery,\n useGetViewQuery,\n useListViewsQuery,\n UserModel,\n ViewListItemModel,\n viewsQueries,\n} from '@shared/api'\nimport useBuildViewMenuItems from '../hooks/useBuildViewMenuItems'\nimport { ViewMenuItem } from '../ViewsMenu/ViewsMenu'\nimport { usePowerpack } from '@shared/context'\nimport { useSelectedView } from '../hooks/useSelectedView'\nimport { UseViewMutations, useViewsMutations } from '../hooks/useViewsMutations'\nimport { useSaveViewFromCurrent } from '../hooks/useSaveViewFromCurrent'\nimport { useViewSettingsChanged } from '../hooks/useViewSettingsChanged'\n\nexport type ViewData = GetDefaultViewApiResponse\nexport type ViewSettings = GetDefaultViewApiResponse['settings']\nexport type SelectedViewState = ViewData | undefined // id of view otherwise null with use working\nexport type EditingViewState = string | true | null // id of view being edited otherwise null\n\nconst viewTypes = ['overview', 'taskProgress', 'lists'] as const\nexport interface ViewsContextValue {\n // State\n viewType?: ViewType\n projectName?: string\n currentUser?: UserModel\n isMenuOpen: boolean\n editingView: EditingViewState\n selectedView: SelectedViewState\n\n // Views data\n viewsList: ViewListItemModel[]\n viewSettings: ViewSettings | undefined\n workingSettings: ViewSettings | undefined\n workingView: ViewListItemModel | undefined\n editingViewId: string | undefined\n viewMenuItems: ViewMenuItem[]\n editingViewData?: ViewData\n isLoadingViews: boolean\n isViewWorking: boolean\n\n // Actions\n setIsMenuOpen: (open: boolean) => void\n setEditingView: (editing: EditingViewState) => void\n setSelectedView: (viewId: string) => void\n onSettingsChanged: (changed: boolean) => void\n\n // Mutations\n onCreateView: UseViewMutations['onCreateView']\n onDeleteView: UseViewMutations['onDeleteView']\n onUpdateView: UseViewMutations['onUpdateView']\n\n // api\n api: typeof viewsQueries\n dispatch: any\n}\n\nconst ViewsContext = createContext<ViewsContextValue | null>(null)\n\nexport interface ViewsProviderProps {\n children: ReactNode\n viewType?: string\n projectName?: string\n dispatch?: any\n debug?: {\n powerLicense?: boolean\n }\n}\n\nexport const ViewsProvider: FC<ViewsProviderProps> = ({\n children,\n viewType: viewTypeProp,\n projectName,\n dispatch,\n debug,\n}) => {\n // validate viewType\n const viewType = viewTypes.includes(viewTypeProp as ViewType)\n ? (viewTypeProp as ViewType)\n : undefined\n\n let { powerLicense } = usePowerpack()\n if (debug?.powerLicense !== undefined) {\n console.warn('Using debug power license:', debug.powerLicense)\n powerLicense = debug.powerLicense\n }\n\n const { data: currentUser } = useGetCurrentUserQuery()\n\n const { onCreateView, onDeleteView, onUpdateView } = useViewsMutations({ viewType, projectName })\n\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [editingView, setEditingView] = useState<EditingViewState>(null)\n\n // setting of default views\n const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView({\n viewType: viewType as string,\n projectName: projectName,\n })\n\n const [viewSettingsChanged, setViewSettingsChanged] = useViewSettingsChanged({\n viewType: viewType as ViewType,\n })\n\n // Fetch views data\n const { currentData: viewsList = [], isLoading: isLoadingViews } = useListViewsQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n // always get your working view\n const { currentData: workingView } = useGetWorkingViewQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n const workingSettings = workingView?.settings\n\n // which settings to use for the view\n const viewSettings =\n !selectedView || selectedView.id === WORKING_VIEW_ID ? workingSettings : selectedView?.settings\n\n // is the working view selected?\n const isViewWorking = selectedView?.id === workingView?.id\n // were we just on a custom view and then edited it and ended up on the working view\n const editingViewId =\n viewSettingsChanged &&\n isViewWorking &&\n !!previousSelectedViewId &&\n previousSelectedViewId !== workingView?.id\n ? previousSelectedViewId\n : undefined\n\n // get data for the view we are editing\n const { currentData: editingViewDataData } = useGetViewQuery(\n { viewId: editingView as string, projectName: projectName, viewType: viewType as string },\n { skip: !(typeof editingView === 'string') || !powerLicense },\n )\n\n const editingViewData = useMemo(\n () => (editingView === editingViewDataData?.id ? editingViewDataData : undefined),\n [editingView, editingViewDataData],\n )\n\n const { onSaveViewFromCurrent } = useSaveViewFromCurrent({\n viewType: viewType,\n projectName,\n sourceSettings: viewSettings,\n onUpdateView: onUpdateView,\n })\n\n // build the menu items for the views\n const viewMenuItems = useBuildViewMenuItems({\n viewsList,\n workingView,\n viewType,\n projectName,\n currentUser,\n useWorkingView: !powerLicense,\n editingViewId,\n onSelect: (viewId) => {\n setSelectedView(viewId)\n // reset the settings changed state when switching views\n setViewSettingsChanged(false)\n },\n onEdit: (viewId) => setEditingView(viewId),\n onSave: async (viewId) => onSaveViewFromCurrent(viewId),\n })\n\n const value: ViewsContextValue = {\n viewType,\n projectName,\n isMenuOpen,\n editingView,\n currentUser,\n selectedView,\n viewSettings,\n workingSettings,\n editingViewData,\n viewsList,\n workingView,\n editingViewId,\n viewMenuItems,\n isLoadingViews,\n isViewWorking,\n setIsMenuOpen,\n setEditingView,\n setSelectedView,\n onSettingsChanged: setViewSettingsChanged,\n // mutations\n onCreateView,\n onUpdateView,\n onDeleteView,\n // api\n api: viewsQueries,\n dispatch,\n }\n\n return <ViewsContext.Provider value={value}>{children}</ViewsContext.Provider>\n}\n\nexport const useViewsContext = (): ViewsContextValue => {\n const context = useContext(ViewsContext)\n if (!context) {\n throw new Error('useViewsContext must be used within a ViewsProvider')\n }\n return context\n}\n"],"names":["viewsQueries","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ViewsContext.es.js","sources":["../../../../../../src/containers/Views/context/ViewsContext.tsx"],"sourcesContent":["import { createContext, useContext, FC, ReactNode, useState, useMemo, useCallback } from 'react'\nimport { ViewType, WORKING_VIEW_ID } from '../index'\nimport {\n GetDefaultViewApiResponse,\n useGetCurrentUserQuery,\n useGetWorkingViewQuery,\n useGetViewQuery,\n useListViewsQuery,\n UserModel,\n ViewListItemModel,\n viewsQueries,\n useGetShareOptionsQuery,\n ShareOption,\n} from '@shared/api'\nimport useBuildViewMenuItems from '../hooks/useBuildViewMenuItems'\nimport { ViewMenuItem } from '../ViewsMenu/ViewsMenu'\nimport { usePowerpack } from '@shared/context'\nimport { useSelectedView } from '../hooks/useSelectedView'\nimport { UseViewMutations, useViewsMutations } from '../hooks/useViewsMutations'\nimport { useSaveViewFromCurrent } from '../hooks/useSaveViewFromCurrent'\nimport { useViewSettingsChanged } from '../hooks/useViewSettingsChanged'\nimport { useLocalStorage } from '@shared/hooks'\n\nexport type ViewData = GetDefaultViewApiResponse\nexport type ViewSettings = GetDefaultViewApiResponse['settings']\nexport type SelectedViewState = ViewData | undefined // id of view otherwise null with use working\nexport type EditingViewState = string | true | null // id of view being edited otherwise null\n\nconst viewTypes = ['overview', 'taskProgress', 'lists'] as const\nexport interface ViewsContextValue {\n // State\n viewType?: ViewType\n projectName?: string\n currentUser?: UserModel\n isMenuOpen: boolean\n editingView: EditingViewState\n selectedView: SelectedViewState\n\n // Views data\n viewsList: ViewListItemModel[]\n viewSettings: ViewSettings | undefined\n workingSettings: ViewSettings | undefined\n workingView: ViewListItemModel | undefined\n editingViewId: string | undefined\n viewMenuItems: ViewMenuItem[]\n editingViewData?: ViewData\n isLoadingViews: boolean\n isViewWorking: boolean\n\n // Data\n shareOptions?: ShareOption[] // available users to share with (undefined means loading)\n\n // Actions\n setIsMenuOpen: (open: boolean) => void\n setEditingView: (editing: EditingViewState) => void\n setSelectedView: (viewId: string) => void\n onSettingsChanged: (changed: boolean) => void\n\n // Mutations\n onCreateView: UseViewMutations['onCreateView']\n onDeleteView: UseViewMutations['onDeleteView']\n onUpdateView: UseViewMutations['onUpdateView']\n\n // Actions (shared)\n resetWorkingView: () => Promise<void>\n\n // api\n api: typeof viewsQueries\n dispatch: any\n}\n\nconst ViewsContext = createContext<ViewsContextValue | null>(null)\n\nexport interface ViewsProviderProps {\n children: ReactNode\n viewType?: string\n projectName?: string\n dispatch?: any\n debug?: {\n powerLicense?: boolean\n }\n}\n\nexport const ViewsProvider: FC<ViewsProviderProps> = ({\n children,\n viewType: viewTypeProp,\n projectName,\n dispatch,\n debug,\n}) => {\n // validate viewType\n const viewType = viewTypes.includes(viewTypeProp as ViewType)\n ? (viewTypeProp as ViewType)\n : undefined\n\n let { powerLicense } = usePowerpack()\n if (debug?.powerLicense !== undefined) {\n console.warn('Using debug power license:', debug.powerLicense)\n powerLicense = debug.powerLicense\n }\n\n const { data: currentUser } = useGetCurrentUserQuery()\n\n const { onCreateView, onDeleteView, onUpdateView, onResetWorkingView } = useViewsMutations({\n viewType,\n projectName,\n })\n\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [editingView, setEditingView] = useState<EditingViewState>(null)\n const [collapsedSections, setCollapsedSections] = useLocalStorage<Record<string, boolean>>(\n 'collapsed-views',\n {},\n )\n\n // when editing the view, get all users that can be shared to that view\n const { data: shareOptions } = useGetShareOptionsQuery(\n { projectName },\n { skip: !powerLicense || !editingView },\n )\n\n // setting of default views\n const [selectedView, setSelectedView, previousSelectedViewId] = useSelectedView({\n viewType: viewType as string,\n projectName: projectName,\n })\n\n const [viewSettingsChanged, setViewSettingsChanged] = useViewSettingsChanged({\n viewType: viewType as ViewType,\n })\n\n // Fetch views data\n const { currentData: viewsList = [], isLoading: isLoadingViews } = useListViewsQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n // always get your working view\n const { currentData: workingView } = useGetWorkingViewQuery(\n { projectName: projectName, viewType: viewType as string },\n { skip: !viewType },\n )\n\n const workingSettings = workingView?.settings\n\n // which settings to use for the view\n const viewSettings =\n !selectedView || selectedView.id === WORKING_VIEW_ID ? workingSettings : selectedView?.settings\n\n // is the working view selected?\n const isViewWorking = selectedView?.id === workingView?.id\n // were we just on a custom view and then edited it and ended up on the working view\n const editingViewId =\n viewSettingsChanged &&\n isViewWorking &&\n !!previousSelectedViewId &&\n previousSelectedViewId !== workingView?.id\n ? previousSelectedViewId\n : undefined\n\n // get data for the view we are editing\n const { currentData: editingViewDataData } = useGetViewQuery(\n { viewId: editingView as string, projectName: projectName, viewType: viewType as string },\n { skip: !(typeof editingView === 'string') || !powerLicense },\n )\n\n const editingViewData = useMemo(\n () => (editingView === editingViewDataData?.id ? editingViewDataData : undefined),\n [editingView, editingViewDataData],\n )\n\n const { onSaveViewFromCurrent } = useSaveViewFromCurrent({\n viewType: viewType,\n projectName,\n sourceSettings: viewSettings,\n onUpdateView: onUpdateView,\n })\n\n // Reset working view to default (empty) settings\n const resetWorkingView = useCallback(async () => {\n try {\n await onResetWorkingView({\n existingWorkingViewId: workingView?.id,\n selectedViewId: selectedView?.id,\n setSelectedView,\n setSettingsChanged: setViewSettingsChanged,\n notify: true,\n })\n } catch (error) {\n console.error('Failed to reset view:', error)\n }\n }, [workingView, onResetWorkingView, selectedView, setSelectedView, setViewSettingsChanged])\n\n // build the menu items for the views\n const viewMenuItems = useBuildViewMenuItems({\n viewsList,\n workingView,\n viewType,\n projectName,\n currentUser,\n useWorkingView: !powerLicense,\n editingViewId,\n onResetWorkingView,\n onSelect: (viewId) => {\n setSelectedView(viewId)\n // reset the settings changed state when switching views\n setViewSettingsChanged(false)\n // close the menu when selecting a view\n setIsMenuOpen(false)\n },\n onEdit: (viewId) => setEditingView(viewId),\n onSave: async (viewId) => onSaveViewFromCurrent(viewId),\n })\n\n const value: ViewsContextValue = {\n viewType,\n projectName,\n isMenuOpen,\n editingView,\n currentUser,\n selectedView,\n viewSettings,\n workingSettings,\n editingViewData,\n viewsList,\n workingView,\n editingViewId,\n viewMenuItems,\n isLoadingViews,\n isViewWorking,\n // data\n shareOptions,\n setIsMenuOpen,\n setEditingView,\n setSelectedView,\n onSettingsChanged: setViewSettingsChanged,\n // mutations\n onCreateView,\n onUpdateView,\n onDeleteView,\n // shared actions\n resetWorkingView,\n // api\n api: viewsQueries,\n dispatch,\n }\n\n return <ViewsContext.Provider value={value}>{children}</ViewsContext.Provider>\n}\n\nexport const useViewsContext = (): ViewsContextValue => {\n const context = useContext(ViewsContext)\n if (!context) {\n throw new Error('useViewsContext must be used within a ViewsProvider')\n }\n return context\n}\n"],"names":["viewsQueries","jsx"],"mappings":"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"}
@@ -38,6 +38,18 @@ const useOverviewViewSettings = () => {
38
38
  );
39
39
  const onUpdateHierarchy = React.useCallback(
40
40
  async (newShowHierarchy) => {
41
+ if (newShowHierarchy && (columns == null ? void 0 : columns.groupBy)) {
42
+ const clearedColumns = { ...columns, groupBy: void 0 };
43
+ setLocalColumns(clearedColumns);
44
+ const settings = columnConfigConverter.convertTanstackStatesToColumnConfig(clearedColumns);
45
+ await updateViewSettings(
46
+ { ...settings, showHierarchy: true },
47
+ setLocalHierarchy,
48
+ newShowHierarchy,
49
+ { errorMessage: "Failed to update hierarchy setting" }
50
+ );
51
+ return;
52
+ }
41
53
  await updateViewSettings(
42
54
  { showHierarchy: newShowHierarchy },
43
55
  setLocalHierarchy,
@@ -45,14 +57,28 @@ const useOverviewViewSettings = () => {
45
57
  { errorMessage: "Failed to update hierarchy setting" }
46
58
  );
47
59
  },
48
- [updateViewSettings]
60
+ [updateViewSettings, columns]
49
61
  );
50
62
  const onUpdateColumns = React.useCallback(
51
63
  async (tableSettings, allColumnIds) => {
52
- const settings = columnConfigConverter.convertTanstackStatesToColumnConfig(tableSettings, allColumnIds);
53
- await updateViewSettings(settings, setLocalColumns, tableSettings, {
54
- errorMessage: "Failed to update columns"
55
- });
64
+ var _a, _b;
65
+ const derivedAll = allColumnIds || [
66
+ ...tableSettings.columnOrder || [],
67
+ ...Object.keys(tableSettings.columnVisibility || {}),
68
+ ...((_a = tableSettings.columnPinning) == null ? void 0 : _a.left) || [],
69
+ ...((_b = tableSettings.columnPinning) == null ? void 0 : _b.right) || []
70
+ ].filter(Boolean).filter((v, i, a) => a.indexOf(v) === i);
71
+ const settings = columnConfigConverter.convertTanstackStatesToColumnConfig(tableSettings, derivedAll);
72
+ const hasGroupBy = !!tableSettings.groupBy;
73
+ if (hasGroupBy) {
74
+ setLocalHierarchy(false);
75
+ }
76
+ await updateViewSettings(
77
+ hasGroupBy ? { ...settings, showHierarchy: false } : settings,
78
+ setLocalColumns,
79
+ tableSettings,
80
+ { errorMessage: "Failed to update columns" }
81
+ );
56
82
  },
57
83
  [updateViewSettings]
58
84
  );
@@ -1 +1 @@
1
- {"version":3,"file":"useOverviewViewSettings.cjs.js","sources":["../../../../../../../src/containers/Views/hooks/pages/useOverviewViewSettings.ts"],"sourcesContent":["/**\n * Unified hook for managing all overview page view settings.\n *\n * The hook handles:\n * - Filter settings (QueryFilter format)\n * - Hierarchy visibility toggle\n * - Column configurations (ColumnsConfig format)\n *\n * Must be used within a ViewsProvider context.\n */\n\nimport { useViewsContext } from '../../context/ViewsContext'\nimport { OverviewSettings } from '@shared/api'\nimport { ColumnsConfig } from '@shared/containers/ProjectTreeTable'\nimport {\n convertColumnConfigToTanstackStates,\n convertTanstackStatesToColumnConfig,\n} from '@shared/util'\nimport { useViewUpdateHelper } from '../../utils/viewUpdateHelper'\nimport { useState, useEffect, useCallback, useMemo } from 'react'\n\n// Import the internal QueryFilter type that the app uses\nimport { QueryFilter } from '@shared/containers/ProjectTreeTable/types/operations'\n\ntype Return = {\n // Filter management\n filters: QueryFilter\n onUpdateFilters: (filters: QueryFilter) => void\n\n // Hierarchy management\n showHierarchy: boolean\n onUpdateHierarchy: (showHierarchy: boolean) => void\n\n // Column management\n columns: ColumnsConfig\n onUpdateColumns: (columns: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const useOverviewViewSettings = (): Return => {\n // this views context is per page/project\n const { viewSettings } = useViewsContext()\n\n // Local state for immediate updates\n const [localFilters, setLocalFilters] = useState<QueryFilter | null>(null)\n const [localHierarchy, setLocalHierarchy] = useState<boolean | null>(null)\n const [localColumns, setLocalColumns] = useState<ColumnsConfig | null>(null)\n\n // Get view update helper\n const { updateViewSettings } = useViewUpdateHelper()\n\n // Get server settings\n const overviewSettings = viewSettings as OverviewSettings\n const serverFilters = (overviewSettings?.filter as any) ?? {}\n const serverHierarchy = overviewSettings?.showHierarchy ?? true\n const serverColumns = useMemo(\n () => convertColumnConfigToTanstackStates(overviewSettings),\n [JSON.stringify(viewSettings)],\n )\n\n // Sync local state with server when viewSettings change\n useEffect(() => {\n setLocalFilters(null)\n setLocalHierarchy(null)\n setLocalColumns(null)\n }, [JSON.stringify(viewSettings)])\n\n // Use local state if available, otherwise use server state\n const filters = localFilters !== null ? localFilters : serverFilters\n const showHierarchy = localHierarchy !== null ? localHierarchy : serverHierarchy\n const columns = localColumns || serverColumns\n\n // Filter update handler\n const onUpdateFilters = useCallback(\n async (newFilters: QueryFilter) => {\n await updateViewSettings({ filter: newFilters as any }, setLocalFilters, newFilters, {\n errorMessage: 'Failed to update filter settings',\n })\n },\n [updateViewSettings],\n )\n\n // Hierarchy update handler\n const onUpdateHierarchy = useCallback(\n async (newShowHierarchy: boolean) => {\n await updateViewSettings(\n { showHierarchy: newShowHierarchy },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n },\n [updateViewSettings],\n )\n\n // Column update handler\n const onUpdateColumns = useCallback(\n async (tableSettings: ColumnsConfig, allColumnIds?: string[]) => {\n const settings = convertTanstackStatesToColumnConfig(tableSettings, allColumnIds)\n await updateViewSettings(settings, setLocalColumns, tableSettings, {\n errorMessage: 'Failed to update columns',\n })\n },\n [updateViewSettings],\n )\n\n return {\n filters,\n onUpdateFilters,\n showHierarchy,\n onUpdateHierarchy,\n columns,\n onUpdateColumns,\n }\n}\n"],"names":["useViewsContext","useState","useViewUpdateHelper","useMemo","convertColumnConfigToTanstackStates","useEffect","useCallback","convertTanstackStatesToColumnConfig"],"mappings":";;;;;;;;;AAsCO,MAAM,0BAA0B,MAAc;AAE7C,QAAA,EAAE,aAAa,IAAIA,6BAAgB;AAGzC,QAAM,CAAC,cAAc,eAAe,IAAIC,MAAAA,SAA6B,IAAI;AACzE,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAAA,SAAyB,IAAI;AACzE,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAA+B,IAAI;AAGrE,QAAA,EAAE,mBAAmB,IAAIC,qCAAoB;AAGnD,QAAM,mBAAmB;AACnB,QAAA,iBAAiB,qDAAkB,WAAkB,CAAC;AACtD,QAAA,mBAAkB,qDAAkB,kBAAiB;AAC3D,QAAM,gBAAgBC,MAAA;AAAA,IACpB,MAAMC,sBAAAA,oCAAoC,gBAAgB;AAAA,IAC1D,CAAC,KAAK,UAAU,YAAY,CAAC;AAAA,EAC/B;AAGAC,QAAAA,UAAU,MAAM;AACd,oBAAgB,IAAI;AACpB,sBAAkB,IAAI;AACtB,oBAAgB,IAAI;AAAA,KACnB,CAAC,KAAK,UAAU,YAAY,CAAC,CAAC;AAG3B,QAAA,UAAU,iBAAiB,OAAO,eAAe;AACjD,QAAA,gBAAgB,mBAAmB,OAAO,iBAAiB;AACjE,QAAM,UAAU,gBAAgB;AAGhC,QAAM,kBAAkBC,MAAA;AAAA,IACtB,OAAO,eAA4B;AACjC,YAAM,mBAAmB,EAAE,QAAQ,WAAkB,GAAG,iBAAiB,YAAY;AAAA,QACnF,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAGA,QAAM,oBAAoBA,MAAA;AAAA,IACxB,OAAO,qBAA8B;AAC7B,YAAA;AAAA,QACJ,EAAE,eAAe,iBAAiB;AAAA,QAClC;AAAA,QACA;AAAA,QACA,EAAE,cAAc,qCAAqC;AAAA,MACvD;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAGA,QAAM,kBAAkBA,MAAA;AAAA,IACtB,OAAO,eAA8B,iBAA4B;AACzD,YAAA,WAAWC,sBAAAA,oCAAoC,eAAe,YAAY;AAC1E,YAAA,mBAAmB,UAAU,iBAAiB,eAAe;AAAA,QACjE,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;"}
1
+ {"version":3,"file":"useOverviewViewSettings.cjs.js","sources":["../../../../../../../src/containers/Views/hooks/pages/useOverviewViewSettings.ts"],"sourcesContent":["/**\n * Unified hook for managing all overview page view settings.\n *\n * The hook handles:\n * - Filter settings (QueryFilter format)\n * - Hierarchy visibility toggle\n * - Column configurations (ColumnsConfig format)\n *\n * Must be used within a ViewsProvider context.\n */\n\nimport { useViewsContext } from '../../context/ViewsContext'\nimport { OverviewSettings } from '@shared/api'\nimport { ColumnsConfig } from '@shared/containers/ProjectTreeTable'\nimport {\n convertColumnConfigToTanstackStates,\n convertTanstackStatesToColumnConfig,\n} from '@shared/util'\nimport { useViewUpdateHelper } from '../../utils/viewUpdateHelper'\nimport { useState, useEffect, useCallback, useMemo } from 'react'\n\n// Import the internal QueryFilter type that the app uses\nimport { QueryFilter } from '@shared/containers/ProjectTreeTable/types/operations'\n\ntype Return = {\n // Filter management\n filters: QueryFilter\n onUpdateFilters: (filters: QueryFilter) => void\n\n // Hierarchy management\n showHierarchy: boolean\n onUpdateHierarchy: (showHierarchy: boolean) => void\n\n // Column management\n columns: ColumnsConfig\n onUpdateColumns: (columns: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const useOverviewViewSettings = (): Return => {\n // this views context is per page/project\n const { viewSettings } = useViewsContext()\n\n // Local state for immediate updates\n const [localFilters, setLocalFilters] = useState<QueryFilter | null>(null)\n const [localHierarchy, setLocalHierarchy] = useState<boolean | null>(null)\n const [localColumns, setLocalColumns] = useState<ColumnsConfig | null>(null)\n\n // Get view update helper\n const { updateViewSettings } = useViewUpdateHelper()\n\n // Get server settings\n const overviewSettings = viewSettings as OverviewSettings\n const serverFilters = (overviewSettings?.filter as any) ?? {}\n const serverHierarchy = overviewSettings?.showHierarchy ?? true\n\n const serverColumns = useMemo(\n () => convertColumnConfigToTanstackStates(overviewSettings),\n [JSON.stringify(viewSettings)],\n )\n\n // Sync local state with server when viewSettings change\n useEffect(() => {\n setLocalFilters(null)\n setLocalHierarchy(null)\n setLocalColumns(null)\n }, [JSON.stringify(viewSettings)])\n\n // Use local state if available, otherwise use server state\n const filters = localFilters !== null ? localFilters : serverFilters\n const showHierarchy = localHierarchy !== null ? localHierarchy : serverHierarchy\n const columns = localColumns || serverColumns\n\n // Filter update handler\n const onUpdateFilters = useCallback(\n async (newFilters: QueryFilter) => {\n await updateViewSettings({ filter: newFilters as any }, setLocalFilters, newFilters, {\n errorMessage: 'Failed to update filter settings',\n })\n },\n [updateViewSettings],\n )\n\n // Hierarchy update handler\n const onUpdateHierarchy = useCallback(\n async (newShowHierarchy: boolean) => {\n // If turning hierarchy ON while grouped, clear groupBy in the same update\n if (newShowHierarchy && (columns as ColumnsConfig)?.groupBy) {\n const clearedColumns: ColumnsConfig = { ...columns, groupBy: undefined }\n // Optimistically update local columns to remove grouping\n setLocalColumns(clearedColumns)\n const settings = convertTanstackStatesToColumnConfig(clearedColumns)\n await updateViewSettings(\n { ...settings, showHierarchy: true },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n return\n }\n\n await updateViewSettings(\n { showHierarchy: newShowHierarchy },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n },\n [updateViewSettings, columns],\n )\n\n // Column update handler\n const onUpdateColumns = useCallback(\n async (tableSettings: ColumnsConfig, allColumnIds?: string[]) => {\n // Derive a stable allColumnIds if not provided to preserve order and grouping on server\n const derivedAll =\n allColumnIds ||\n [\n ...(tableSettings.columnOrder || []),\n ...Object.keys(tableSettings.columnVisibility || {}),\n ...((tableSettings.columnPinning?.left as string[]) || []),\n ...((tableSettings.columnPinning?.right as string[]) || []),\n ]\n .filter(Boolean)\n .filter((v, i, a) => a.indexOf(v) === i)\n\n const settings = convertTanstackStatesToColumnConfig(tableSettings, derivedAll)\n const hasGroupBy = !!tableSettings.groupBy\n\n // If grouping is being set, turn off hierarchy in the same update for consistency\n if (hasGroupBy) {\n // Optimistically reflect hierarchy off\n setLocalHierarchy(false)\n }\n\n await updateViewSettings(\n hasGroupBy ? { ...settings, showHierarchy: false } : settings,\n setLocalColumns,\n tableSettings,\n { errorMessage: 'Failed to update columns' },\n )\n },\n [updateViewSettings],\n )\n\n return {\n filters,\n onUpdateFilters,\n showHierarchy,\n onUpdateHierarchy,\n columns,\n onUpdateColumns,\n }\n}\n"],"names":["useViewsContext","useState","useViewUpdateHelper","useMemo","convertColumnConfigToTanstackStates","useEffect","useCallback","convertTanstackStatesToColumnConfig"],"mappings":";;;;;;;;;AAsCO,MAAM,0BAA0B,MAAc;AAE7C,QAAA,EAAE,aAAa,IAAIA,6BAAgB;AAGzC,QAAM,CAAC,cAAc,eAAe,IAAIC,MAAAA,SAA6B,IAAI;AACzE,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,MAAAA,SAAyB,IAAI;AACzE,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAA+B,IAAI;AAGrE,QAAA,EAAE,mBAAmB,IAAIC,qCAAoB;AAGnD,QAAM,mBAAmB;AACnB,QAAA,iBAAiB,qDAAkB,WAAkB,CAAC;AACtD,QAAA,mBAAkB,qDAAkB,kBAAiB;AAE3D,QAAM,gBAAgBC,MAAA;AAAA,IACpB,MAAMC,sBAAAA,oCAAoC,gBAAgB;AAAA,IAC1D,CAAC,KAAK,UAAU,YAAY,CAAC;AAAA,EAC/B;AAGAC,QAAAA,UAAU,MAAM;AACd,oBAAgB,IAAI;AACpB,sBAAkB,IAAI;AACtB,oBAAgB,IAAI;AAAA,KACnB,CAAC,KAAK,UAAU,YAAY,CAAC,CAAC;AAG3B,QAAA,UAAU,iBAAiB,OAAO,eAAe;AACjD,QAAA,gBAAgB,mBAAmB,OAAO,iBAAiB;AACjE,QAAM,UAAU,gBAAgB;AAGhC,QAAM,kBAAkBC,MAAA;AAAA,IACtB,OAAO,eAA4B;AACjC,YAAM,mBAAmB,EAAE,QAAQ,WAAkB,GAAG,iBAAiB,YAAY;AAAA,QACnF,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAGA,QAAM,oBAAoBA,MAAA;AAAA,IACxB,OAAO,qBAA8B;AAE/B,UAAA,qBAAqB,mCAA2B,UAAS;AAC3D,cAAM,iBAAgC,EAAE,GAAG,SAAS,SAAS,OAAU;AAEvE,wBAAgB,cAAc;AACxB,cAAA,WAAWC,0DAAoC,cAAc;AAC7D,cAAA;AAAA,UACJ,EAAE,GAAG,UAAU,eAAe,KAAK;AAAA,UACnC;AAAA,UACA;AAAA,UACA,EAAE,cAAc,qCAAqC;AAAA,QACvD;AACA;AAAA,MAAA;AAGI,YAAA;AAAA,QACJ,EAAE,eAAe,iBAAiB;AAAA,QAClC;AAAA,QACA;AAAA,QACA,EAAE,cAAc,qCAAqC;AAAA,MACvD;AAAA,IACF;AAAA,IACA,CAAC,oBAAoB,OAAO;AAAA,EAC9B;AAGA,QAAM,kBAAkBD,MAAA;AAAA,IACtB,OAAO,eAA8B,iBAA4B;;AAE/D,YAAM,aACJ,gBACA;AAAA,QACE,GAAI,cAAc,eAAe,CAAC;AAAA,QAClC,GAAG,OAAO,KAAK,cAAc,oBAAoB,CAAA,CAAE;AAAA,QACnD,KAAK,mBAAc,kBAAd,mBAA6B,SAAqB,CAAC;AAAA,QACxD,KAAK,mBAAc,kBAAd,mBAA6B,UAAsB,CAAA;AAAA,MAEvD,EAAA,OAAO,OAAO,EACd,OAAO,CAAC,GAAG,GAAG,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAErC,YAAA,WAAWC,sBAAAA,oCAAoC,eAAe,UAAU;AACxE,YAAA,aAAa,CAAC,CAAC,cAAc;AAGnC,UAAI,YAAY;AAEd,0BAAkB,KAAK;AAAA,MAAA;AAGnB,YAAA;AAAA,QACJ,aAAa,EAAE,GAAG,UAAU,eAAe,MAAU,IAAA;AAAA,QACrD;AAAA,QACA;AAAA,QACA,EAAE,cAAc,2BAA2B;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;"}
@@ -36,6 +36,18 @@ const useOverviewViewSettings = () => {
36
36
  );
37
37
  const onUpdateHierarchy = useCallback(
38
38
  async (newShowHierarchy) => {
39
+ if (newShowHierarchy && (columns == null ? void 0 : columns.groupBy)) {
40
+ const clearedColumns = { ...columns, groupBy: void 0 };
41
+ setLocalColumns(clearedColumns);
42
+ const settings = convertTanstackStatesToColumnConfig(clearedColumns);
43
+ await updateViewSettings(
44
+ { ...settings, showHierarchy: true },
45
+ setLocalHierarchy,
46
+ newShowHierarchy,
47
+ { errorMessage: "Failed to update hierarchy setting" }
48
+ );
49
+ return;
50
+ }
39
51
  await updateViewSettings(
40
52
  { showHierarchy: newShowHierarchy },
41
53
  setLocalHierarchy,
@@ -43,14 +55,28 @@ const useOverviewViewSettings = () => {
43
55
  { errorMessage: "Failed to update hierarchy setting" }
44
56
  );
45
57
  },
46
- [updateViewSettings]
58
+ [updateViewSettings, columns]
47
59
  );
48
60
  const onUpdateColumns = useCallback(
49
61
  async (tableSettings, allColumnIds) => {
50
- const settings = convertTanstackStatesToColumnConfig(tableSettings, allColumnIds);
51
- await updateViewSettings(settings, setLocalColumns, tableSettings, {
52
- errorMessage: "Failed to update columns"
53
- });
62
+ var _a, _b;
63
+ const derivedAll = allColumnIds || [
64
+ ...tableSettings.columnOrder || [],
65
+ ...Object.keys(tableSettings.columnVisibility || {}),
66
+ ...((_a = tableSettings.columnPinning) == null ? void 0 : _a.left) || [],
67
+ ...((_b = tableSettings.columnPinning) == null ? void 0 : _b.right) || []
68
+ ].filter(Boolean).filter((v, i, a) => a.indexOf(v) === i);
69
+ const settings = convertTanstackStatesToColumnConfig(tableSettings, derivedAll);
70
+ const hasGroupBy = !!tableSettings.groupBy;
71
+ if (hasGroupBy) {
72
+ setLocalHierarchy(false);
73
+ }
74
+ await updateViewSettings(
75
+ hasGroupBy ? { ...settings, showHierarchy: false } : settings,
76
+ setLocalColumns,
77
+ tableSettings,
78
+ { errorMessage: "Failed to update columns" }
79
+ );
54
80
  },
55
81
  [updateViewSettings]
56
82
  );
@@ -1 +1 @@
1
- {"version":3,"file":"useOverviewViewSettings.es.js","sources":["../../../../../../../src/containers/Views/hooks/pages/useOverviewViewSettings.ts"],"sourcesContent":["/**\n * Unified hook for managing all overview page view settings.\n *\n * The hook handles:\n * - Filter settings (QueryFilter format)\n * - Hierarchy visibility toggle\n * - Column configurations (ColumnsConfig format)\n *\n * Must be used within a ViewsProvider context.\n */\n\nimport { useViewsContext } from '../../context/ViewsContext'\nimport { OverviewSettings } from '@shared/api'\nimport { ColumnsConfig } from '@shared/containers/ProjectTreeTable'\nimport {\n convertColumnConfigToTanstackStates,\n convertTanstackStatesToColumnConfig,\n} from '@shared/util'\nimport { useViewUpdateHelper } from '../../utils/viewUpdateHelper'\nimport { useState, useEffect, useCallback, useMemo } from 'react'\n\n// Import the internal QueryFilter type that the app uses\nimport { QueryFilter } from '@shared/containers/ProjectTreeTable/types/operations'\n\ntype Return = {\n // Filter management\n filters: QueryFilter\n onUpdateFilters: (filters: QueryFilter) => void\n\n // Hierarchy management\n showHierarchy: boolean\n onUpdateHierarchy: (showHierarchy: boolean) => void\n\n // Column management\n columns: ColumnsConfig\n onUpdateColumns: (columns: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const useOverviewViewSettings = (): Return => {\n // this views context is per page/project\n const { viewSettings } = useViewsContext()\n\n // Local state for immediate updates\n const [localFilters, setLocalFilters] = useState<QueryFilter | null>(null)\n const [localHierarchy, setLocalHierarchy] = useState<boolean | null>(null)\n const [localColumns, setLocalColumns] = useState<ColumnsConfig | null>(null)\n\n // Get view update helper\n const { updateViewSettings } = useViewUpdateHelper()\n\n // Get server settings\n const overviewSettings = viewSettings as OverviewSettings\n const serverFilters = (overviewSettings?.filter as any) ?? {}\n const serverHierarchy = overviewSettings?.showHierarchy ?? true\n const serverColumns = useMemo(\n () => convertColumnConfigToTanstackStates(overviewSettings),\n [JSON.stringify(viewSettings)],\n )\n\n // Sync local state with server when viewSettings change\n useEffect(() => {\n setLocalFilters(null)\n setLocalHierarchy(null)\n setLocalColumns(null)\n }, [JSON.stringify(viewSettings)])\n\n // Use local state if available, otherwise use server state\n const filters = localFilters !== null ? localFilters : serverFilters\n const showHierarchy = localHierarchy !== null ? localHierarchy : serverHierarchy\n const columns = localColumns || serverColumns\n\n // Filter update handler\n const onUpdateFilters = useCallback(\n async (newFilters: QueryFilter) => {\n await updateViewSettings({ filter: newFilters as any }, setLocalFilters, newFilters, {\n errorMessage: 'Failed to update filter settings',\n })\n },\n [updateViewSettings],\n )\n\n // Hierarchy update handler\n const onUpdateHierarchy = useCallback(\n async (newShowHierarchy: boolean) => {\n await updateViewSettings(\n { showHierarchy: newShowHierarchy },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n },\n [updateViewSettings],\n )\n\n // Column update handler\n const onUpdateColumns = useCallback(\n async (tableSettings: ColumnsConfig, allColumnIds?: string[]) => {\n const settings = convertTanstackStatesToColumnConfig(tableSettings, allColumnIds)\n await updateViewSettings(settings, setLocalColumns, tableSettings, {\n errorMessage: 'Failed to update columns',\n })\n },\n [updateViewSettings],\n )\n\n return {\n filters,\n onUpdateFilters,\n showHierarchy,\n onUpdateHierarchy,\n columns,\n onUpdateColumns,\n }\n}\n"],"names":[],"mappings":";;;;;;;AAsCO,MAAM,0BAA0B,MAAc;AAE7C,QAAA,EAAE,aAAa,IAAI,gBAAgB;AAGzC,QAAM,CAAC,cAAc,eAAe,IAAI,SAA6B,IAAI;AACzE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAyB,IAAI;AACzE,QAAM,CAAC,cAAc,eAAe,IAAI,SAA+B,IAAI;AAGrE,QAAA,EAAE,mBAAmB,IAAI,oBAAoB;AAGnD,QAAM,mBAAmB;AACnB,QAAA,iBAAiB,qDAAkB,WAAkB,CAAC;AACtD,QAAA,mBAAkB,qDAAkB,kBAAiB;AAC3D,QAAM,gBAAgB;AAAA,IACpB,MAAM,oCAAoC,gBAAgB;AAAA,IAC1D,CAAC,KAAK,UAAU,YAAY,CAAC;AAAA,EAC/B;AAGA,YAAU,MAAM;AACd,oBAAgB,IAAI;AACpB,sBAAkB,IAAI;AACtB,oBAAgB,IAAI;AAAA,KACnB,CAAC,KAAK,UAAU,YAAY,CAAC,CAAC;AAG3B,QAAA,UAAU,iBAAiB,OAAO,eAAe;AACjD,QAAA,gBAAgB,mBAAmB,OAAO,iBAAiB;AACjE,QAAM,UAAU,gBAAgB;AAGhC,QAAM,kBAAkB;AAAA,IACtB,OAAO,eAA4B;AACjC,YAAM,mBAAmB,EAAE,QAAQ,WAAkB,GAAG,iBAAiB,YAAY;AAAA,QACnF,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAGA,QAAM,oBAAoB;AAAA,IACxB,OAAO,qBAA8B;AAC7B,YAAA;AAAA,QACJ,EAAE,eAAe,iBAAiB;AAAA,QAClC;AAAA,QACA;AAAA,QACA,EAAE,cAAc,qCAAqC;AAAA,MACvD;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAGA,QAAM,kBAAkB;AAAA,IACtB,OAAO,eAA8B,iBAA4B;AACzD,YAAA,WAAW,oCAAoC,eAAe,YAAY;AAC1E,YAAA,mBAAmB,UAAU,iBAAiB,eAAe;AAAA,QACjE,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"useOverviewViewSettings.es.js","sources":["../../../../../../../src/containers/Views/hooks/pages/useOverviewViewSettings.ts"],"sourcesContent":["/**\n * Unified hook for managing all overview page view settings.\n *\n * The hook handles:\n * - Filter settings (QueryFilter format)\n * - Hierarchy visibility toggle\n * - Column configurations (ColumnsConfig format)\n *\n * Must be used within a ViewsProvider context.\n */\n\nimport { useViewsContext } from '../../context/ViewsContext'\nimport { OverviewSettings } from '@shared/api'\nimport { ColumnsConfig } from '@shared/containers/ProjectTreeTable'\nimport {\n convertColumnConfigToTanstackStates,\n convertTanstackStatesToColumnConfig,\n} from '@shared/util'\nimport { useViewUpdateHelper } from '../../utils/viewUpdateHelper'\nimport { useState, useEffect, useCallback, useMemo } from 'react'\n\n// Import the internal QueryFilter type that the app uses\nimport { QueryFilter } from '@shared/containers/ProjectTreeTable/types/operations'\n\ntype Return = {\n // Filter management\n filters: QueryFilter\n onUpdateFilters: (filters: QueryFilter) => void\n\n // Hierarchy management\n showHierarchy: boolean\n onUpdateHierarchy: (showHierarchy: boolean) => void\n\n // Column management\n columns: ColumnsConfig\n onUpdateColumns: (columns: ColumnsConfig, allColumnIds?: string[]) => void\n}\n\nexport const useOverviewViewSettings = (): Return => {\n // this views context is per page/project\n const { viewSettings } = useViewsContext()\n\n // Local state for immediate updates\n const [localFilters, setLocalFilters] = useState<QueryFilter | null>(null)\n const [localHierarchy, setLocalHierarchy] = useState<boolean | null>(null)\n const [localColumns, setLocalColumns] = useState<ColumnsConfig | null>(null)\n\n // Get view update helper\n const { updateViewSettings } = useViewUpdateHelper()\n\n // Get server settings\n const overviewSettings = viewSettings as OverviewSettings\n const serverFilters = (overviewSettings?.filter as any) ?? {}\n const serverHierarchy = overviewSettings?.showHierarchy ?? true\n\n const serverColumns = useMemo(\n () => convertColumnConfigToTanstackStates(overviewSettings),\n [JSON.stringify(viewSettings)],\n )\n\n // Sync local state with server when viewSettings change\n useEffect(() => {\n setLocalFilters(null)\n setLocalHierarchy(null)\n setLocalColumns(null)\n }, [JSON.stringify(viewSettings)])\n\n // Use local state if available, otherwise use server state\n const filters = localFilters !== null ? localFilters : serverFilters\n const showHierarchy = localHierarchy !== null ? localHierarchy : serverHierarchy\n const columns = localColumns || serverColumns\n\n // Filter update handler\n const onUpdateFilters = useCallback(\n async (newFilters: QueryFilter) => {\n await updateViewSettings({ filter: newFilters as any }, setLocalFilters, newFilters, {\n errorMessage: 'Failed to update filter settings',\n })\n },\n [updateViewSettings],\n )\n\n // Hierarchy update handler\n const onUpdateHierarchy = useCallback(\n async (newShowHierarchy: boolean) => {\n // If turning hierarchy ON while grouped, clear groupBy in the same update\n if (newShowHierarchy && (columns as ColumnsConfig)?.groupBy) {\n const clearedColumns: ColumnsConfig = { ...columns, groupBy: undefined }\n // Optimistically update local columns to remove grouping\n setLocalColumns(clearedColumns)\n const settings = convertTanstackStatesToColumnConfig(clearedColumns)\n await updateViewSettings(\n { ...settings, showHierarchy: true },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n return\n }\n\n await updateViewSettings(\n { showHierarchy: newShowHierarchy },\n setLocalHierarchy,\n newShowHierarchy,\n { errorMessage: 'Failed to update hierarchy setting' },\n )\n },\n [updateViewSettings, columns],\n )\n\n // Column update handler\n const onUpdateColumns = useCallback(\n async (tableSettings: ColumnsConfig, allColumnIds?: string[]) => {\n // Derive a stable allColumnIds if not provided to preserve order and grouping on server\n const derivedAll =\n allColumnIds ||\n [\n ...(tableSettings.columnOrder || []),\n ...Object.keys(tableSettings.columnVisibility || {}),\n ...((tableSettings.columnPinning?.left as string[]) || []),\n ...((tableSettings.columnPinning?.right as string[]) || []),\n ]\n .filter(Boolean)\n .filter((v, i, a) => a.indexOf(v) === i)\n\n const settings = convertTanstackStatesToColumnConfig(tableSettings, derivedAll)\n const hasGroupBy = !!tableSettings.groupBy\n\n // If grouping is being set, turn off hierarchy in the same update for consistency\n if (hasGroupBy) {\n // Optimistically reflect hierarchy off\n setLocalHierarchy(false)\n }\n\n await updateViewSettings(\n hasGroupBy ? { ...settings, showHierarchy: false } : settings,\n setLocalColumns,\n tableSettings,\n { errorMessage: 'Failed to update columns' },\n )\n },\n [updateViewSettings],\n )\n\n return {\n filters,\n onUpdateFilters,\n showHierarchy,\n onUpdateHierarchy,\n columns,\n onUpdateColumns,\n }\n}\n"],"names":[],"mappings":";;;;;;;AAsCO,MAAM,0BAA0B,MAAc;AAE7C,QAAA,EAAE,aAAa,IAAI,gBAAgB;AAGzC,QAAM,CAAC,cAAc,eAAe,IAAI,SAA6B,IAAI;AACzE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAyB,IAAI;AACzE,QAAM,CAAC,cAAc,eAAe,IAAI,SAA+B,IAAI;AAGrE,QAAA,EAAE,mBAAmB,IAAI,oBAAoB;AAGnD,QAAM,mBAAmB;AACnB,QAAA,iBAAiB,qDAAkB,WAAkB,CAAC;AACtD,QAAA,mBAAkB,qDAAkB,kBAAiB;AAE3D,QAAM,gBAAgB;AAAA,IACpB,MAAM,oCAAoC,gBAAgB;AAAA,IAC1D,CAAC,KAAK,UAAU,YAAY,CAAC;AAAA,EAC/B;AAGA,YAAU,MAAM;AACd,oBAAgB,IAAI;AACpB,sBAAkB,IAAI;AACtB,oBAAgB,IAAI;AAAA,KACnB,CAAC,KAAK,UAAU,YAAY,CAAC,CAAC;AAG3B,QAAA,UAAU,iBAAiB,OAAO,eAAe;AACjD,QAAA,gBAAgB,mBAAmB,OAAO,iBAAiB;AACjE,QAAM,UAAU,gBAAgB;AAGhC,QAAM,kBAAkB;AAAA,IACtB,OAAO,eAA4B;AACjC,YAAM,mBAAmB,EAAE,QAAQ,WAAkB,GAAG,iBAAiB,YAAY;AAAA,QACnF,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAGA,QAAM,oBAAoB;AAAA,IACxB,OAAO,qBAA8B;AAE/B,UAAA,qBAAqB,mCAA2B,UAAS;AAC3D,cAAM,iBAAgC,EAAE,GAAG,SAAS,SAAS,OAAU;AAEvE,wBAAgB,cAAc;AACxB,cAAA,WAAW,oCAAoC,cAAc;AAC7D,cAAA;AAAA,UACJ,EAAE,GAAG,UAAU,eAAe,KAAK;AAAA,UACnC;AAAA,UACA;AAAA,UACA,EAAE,cAAc,qCAAqC;AAAA,QACvD;AACA;AAAA,MAAA;AAGI,YAAA;AAAA,QACJ,EAAE,eAAe,iBAAiB;AAAA,QAClC;AAAA,QACA;AAAA,QACA,EAAE,cAAc,qCAAqC;AAAA,MACvD;AAAA,IACF;AAAA,IACA,CAAC,oBAAoB,OAAO;AAAA,EAC9B;AAGA,QAAM,kBAAkB;AAAA,IACtB,OAAO,eAA8B,iBAA4B;;AAE/D,YAAM,aACJ,gBACA;AAAA,QACE,GAAI,cAAc,eAAe,CAAC;AAAA,QAClC,GAAG,OAAO,KAAK,cAAc,oBAAoB,CAAA,CAAE;AAAA,QACnD,KAAK,mBAAc,kBAAd,mBAA6B,SAAqB,CAAC;AAAA,QACxD,KAAK,mBAAc,kBAAd,mBAA6B,UAAsB,CAAA;AAAA,MAEvD,EAAA,OAAO,OAAO,EACd,OAAO,CAAC,GAAG,GAAG,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAErC,YAAA,WAAW,oCAAoC,eAAe,UAAU;AACxE,YAAA,aAAa,CAAC,CAAC,cAAc;AAGnC,UAAI,YAAY;AAEd,0BAAkB,KAAK;AAAA,MAAA;AAGnB,YAAA;AAAA,QACJ,aAAa,EAAE,GAAG,UAAU,eAAe,MAAU,IAAA;AAAA,QACrD;AAAA,QACA;AAAA,QACA,EAAE,cAAc,2BAA2B;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;"}