@ynput/ayon-frontend-shared 0.2.45 → 0.3.1

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 (411) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +72 -65
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +104 -102
  6. package/dist/Slicer.cjs.js +1 -1
  7. package/dist/Slicer.es.js +113 -4
  8. package/dist/Slicer.es.js.map +1 -1
  9. package/dist/Views.cjs.js.map +1 -1
  10. package/dist/Views.es.js.map +1 -1
  11. package/dist/_virtual/index.cjs4.js +1 -1
  12. package/dist/_virtual/index.cjs5.js +1 -1
  13. package/dist/_virtual/index.es4.js +2 -5
  14. package/dist/_virtual/index.es4.js.map +1 -1
  15. package/dist/_virtual/index.es5.js +5 -2
  16. package/dist/_virtual/index.es5.js.map +1 -1
  17. package/dist/components.cjs.js +1 -1
  18. package/dist/components.es.js +141 -139
  19. package/dist/components.es.js.map +1 -1
  20. package/dist/index.cjs.js +1 -1
  21. package/dist/index.es.js +61 -54
  22. package/dist/index.es.js.map +1 -1
  23. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js +5 -5
  24. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js.map +1 -1
  25. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js +313 -305
  26. package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js.map +1 -1
  27. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  28. package/dist/node_modules/remove-accents/index.es.js +1 -1
  29. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  30. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  31. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  32. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  33. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  34. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  35. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  36. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  37. package/dist/shared/src/api/queries/overview/getOverview.es.js +95 -95
  38. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  39. package/dist/shared/src/api/queries/views/updateViews.cjs.js +1 -1
  40. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  41. package/dist/shared/src/api/queries/views/updateViews.es.js +1 -1
  42. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  43. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  44. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  45. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +57 -50
  46. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  47. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  48. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  49. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +45 -38
  50. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  51. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  52. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  53. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +47 -40
  54. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  55. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  56. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  57. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +49 -42
  58. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  59. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  60. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  61. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +44 -37
  62. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  63. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  64. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  65. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +48 -41
  66. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  67. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +2 -0
  68. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -0
  69. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +282 -0
  70. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -0
  71. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  72. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  73. package/dist/shared/src/components/RenameForm/RenameForm.es.js +48 -41
  74. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  75. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  76. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  77. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +64 -57
  78. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  79. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  80. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  81. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +54 -47
  82. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  83. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  84. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  85. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +53 -46
  86. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  87. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  88. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  89. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +42 -41
  90. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  91. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  92. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  93. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +52 -45
  94. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  95. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +2 -2
  96. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  97. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +56 -49
  98. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  99. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  100. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  101. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +53 -46
  102. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  103. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  104. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  105. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +54 -47
  106. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  107. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  108. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  109. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +93 -86
  110. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  111. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  112. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  113. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +49 -42
  114. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  115. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  116. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  117. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +68 -61
  118. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  119. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  120. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  121. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +93 -86
  122. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  123. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js +1 -1
  124. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js.map +1 -1
  125. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js +47 -40
  126. package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js.map +1 -1
  127. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  128. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  129. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +46 -43
  130. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  131. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  132. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  133. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +49 -46
  134. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  135. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  136. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  137. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +49 -46
  138. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  139. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  140. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  141. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +49 -46
  142. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  143. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  144. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  145. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +50 -42
  146. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  147. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  148. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  149. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +55 -48
  150. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  151. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  152. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  153. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +70 -63
  154. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  155. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  156. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  157. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +47 -40
  158. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  159. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  160. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  161. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +483 -462
  162. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  163. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  164. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  165. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +105 -98
  166. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  167. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  168. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  169. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +47 -40
  170. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  171. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  172. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  173. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +57 -50
  174. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  175. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  176. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +54 -47
  178. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  179. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +3 -3
  180. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  181. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +142 -146
  182. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  183. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  184. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  185. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
  186. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  187. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +63 -68
  188. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  189. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  190. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  191. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +49 -41
  192. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  193. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  194. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  195. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +74 -67
  196. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  197. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  198. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  199. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +48 -41
  200. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  201. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  202. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +55 -48
  204. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  205. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  206. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +54 -47
  208. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  209. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  210. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +51 -44
  212. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  213. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  214. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +141 -132
  216. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  218. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +51 -44
  220. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  222. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +51 -44
  224. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  226. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +54 -47
  228. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  229. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  230. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +46 -39
  232. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  233. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  234. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  235. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +46 -39
  236. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  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 +81 -67
  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 +1 -1
  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 +62 -55
  244. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.cjs.js +1 -1
  246. package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.cjs.js.map +1 -1
  247. package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.es.js +11 -6
  248. package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.es.js.map +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +2 -2
  250. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +16 -13
  252. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  254. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  255. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +342 -116
  256. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  257. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.cjs.js +2 -2
  258. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.es.js +47 -40
  260. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.es.js.map +1 -1
  261. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +2 -2
  262. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  263. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +7 -7
  264. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  265. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +69 -62
  268. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  269. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  270. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +51 -44
  272. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.cjs.js +2 -2
  274. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.es.js +29 -33
  276. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.es.js.map +1 -1
  277. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  278. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  279. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +118 -111
  280. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  281. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  282. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  283. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +49 -46
  284. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  285. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -0
  286. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -0
  287. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +82 -0
  288. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -0
  289. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +27 -0
  290. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -0
  291. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +71 -0
  292. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -0
  293. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +10 -0
  294. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -0
  295. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +294 -0
  296. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -0
  297. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +2 -0
  298. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -0
  299. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +215 -0
  300. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -0
  301. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.cjs.js.map +1 -0
  302. package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.es.js.map +1 -0
  303. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +2 -0
  304. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -0
  305. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +25 -0
  306. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -0
  307. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +2 -0
  308. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -0
  309. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +28 -0
  310. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -0
  311. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +2 -0
  312. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -0
  313. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +304 -0
  314. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -0
  315. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +2 -0
  316. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -0
  317. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +99 -0
  318. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -0
  319. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -0
  320. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -0
  321. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  322. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +95 -88
  324. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  325. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  326. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +32 -31
  328. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  329. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  330. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +125 -121
  332. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  333. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  334. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +47 -49
  336. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  337. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  338. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  339. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +6 -5
  340. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  341. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
  342. package/dist/shared/src/context/AddonContext.es.js.map +1 -1
  343. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  344. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  345. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  346. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  347. package/dist/shared/src/context/ProjectFoldersContext.es.js +62 -49
  348. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  349. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  350. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  351. package/dist/shared/src/context/WebsocketContext.es.js +51 -44
  352. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  353. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  354. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  355. package/dist/shared/src/hooks/useLoadModules.cjs.js +1 -1
  356. package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
  357. package/dist/shared/src/hooks/useLoadModules.es.js +7 -7
  358. package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
  359. package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
  360. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  361. package/dist/shared/src/util/columnConfigConverter.es.js +69 -46
  362. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  363. package/dist/shared/src/util/getGroupByDataType.cjs.js +1 -1
  364. package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
  365. package/dist/shared/src/util/getGroupByDataType.es.js +4 -4
  366. package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
  367. package/dist/types/api/queries/activities/getActivities.d.ts +1 -1
  368. package/dist/types/api/queries/entityLists/getLists.d.ts +183 -183
  369. package/dist/types/api/queries/links/getLinks.d.ts +1 -1
  370. package/dist/types/api/queries/overview/getOverview.d.ts +2 -1
  371. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +2 -2
  372. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +29 -0
  373. package/dist/types/components/RemotePage/index.d.ts +1 -0
  374. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -0
  375. package/dist/types/components/index.d.ts +31 -30
  376. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +0 -2
  377. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +1 -4
  378. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +2 -1
  379. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +4 -1
  380. package/dist/types/containers/ProjectTreeTable/utils/restrictedEntity.d.ts +3 -3
  381. package/dist/types/containers/Slicer/components/Slicer.d.ts +9 -0
  382. package/dist/types/containers/Slicer/components/SlicerDropdownFallback.d.ts +7 -0
  383. package/dist/types/containers/Slicer/components/SlicerSearch.d.ts +6 -0
  384. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +48 -0
  385. package/dist/types/containers/Slicer/hooks/index.d.ts +5 -0
  386. package/dist/types/containers/Slicer/{useFiltersWithHierarchy.d.ts → hooks/useFiltersWithHierarchy.d.ts} +1 -1
  387. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +51 -0
  388. package/dist/types/containers/Slicer/hooks/useSlicerAttributesData.d.ts +7 -0
  389. package/dist/types/containers/Slicer/hooks/useTableDataBySlice.d.ts +8 -0
  390. package/dist/types/containers/Slicer/hooks/useUsersTable.d.ts +10 -0
  391. package/dist/types/containers/Slicer/index.d.ts +4 -2
  392. package/dist/types/containers/Slicer/types.d.ts +35 -0
  393. package/dist/types/containers/Slicer/{createFilterFromSlicer.d.ts → util/createFilterFromSlicer.d.ts} +2 -2
  394. package/dist/types/containers/Slicer/util/index.d.ts +1 -0
  395. package/dist/types/containers/Views/ViewsMenuContainer/BaseViewsTags.d.ts +4 -1
  396. package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +7 -1
  397. package/dist/types/containers/Views/index.d.ts +1 -1
  398. package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +1 -1
  399. package/dist/types/context/AddonContext.d.ts +10 -1
  400. package/dist/types/context/AddonProjectContext.d.ts +7 -12
  401. package/dist/types/context/ProjectFoldersContext.d.ts +1 -0
  402. package/dist/types/hooks/useGroupByRemoteModules.d.ts +2 -1
  403. package/package.json +1 -1
  404. package/dist/shared/src/containers/Slicer/createFilterFromSlicer.cjs.js.map +0 -1
  405. package/dist/shared/src/containers/Slicer/createFilterFromSlicer.es.js.map +0 -1
  406. package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.cjs.js.map +0 -1
  407. package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.es.js.map +0 -1
  408. /package/dist/shared/src/containers/Slicer/{useFiltersWithHierarchy.cjs.js → hooks/useFiltersWithHierarchy.cjs.js} +0 -0
  409. /package/dist/shared/src/containers/Slicer/{useFiltersWithHierarchy.es.js → hooks/useFiltersWithHierarchy.es.js} +0 -0
  410. /package/dist/shared/src/containers/Slicer/{createFilterFromSlicer.cjs.js → util/createFilterFromSlicer.cjs.js} +0 -0
  411. /package/dist/shared/src/containers/Slicer/{createFilterFromSlicer.es.js → util/createFilterFromSlicer.es.js} +0 -0
@@ -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\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":["useOverviewViewSettings","viewSettings","useViewsContext","localFilters","setLocalFilters","useState","localHierarchy","setLocalHierarchy","localColumns","setLocalColumns","updateViewSettings","useViewUpdateHelper","overviewSettings","serverFilters","serverHierarchy","serverColumns","useMemo","convertColumnConfigToTanstackStates","useEffect","filters","showHierarchy","columns","onUpdateFilters","useCallback","newFilters","onUpdateHierarchy","newShowHierarchy","clearedColumns","settings","convertTanstackStatesToColumnConfig","onUpdateColumns","tableSettings","allColumnIds","derivedAll","v","i","a","hasGroupBy"],"mappings":"sXAsCaA,EAA0B,IAAc,CAEnD,KAAM,CAAE,aAAAC,CAAA,EAAiBC,kBAAA,EAGnB,CAACC,EAAcC,CAAe,EAAIC,EAAAA,SAA6B,IAAI,EACnE,CAACC,EAAgBC,CAAiB,EAAIF,EAAAA,SAAyB,IAAI,EACnE,CAACG,EAAcC,CAAe,EAAIJ,EAAAA,SAA+B,IAAI,EAGrE,CAAE,mBAAAK,CAAA,EAAuBC,sBAAA,EAGzBC,EAAmBX,EACnBY,EAAiBD,GAAkB,QAAkB,CAAA,EACrDE,EAAkBF,GAAkB,eAAiB,GAErDG,EAAgBC,EAAAA,QACpB,IAAMC,EAAAA,oCAAoCL,CAAgB,EAC1D,CAAC,KAAK,UAAUX,CAAY,CAAC,CAAA,EAI/BiB,EAAAA,UAAU,IAAM,CACdd,EAAgB,IAAI,EACpBG,EAAkB,IAAI,EACtBE,EAAgB,IAAI,CACtB,EAAG,CAAC,KAAK,UAAUR,CAAY,CAAC,CAAC,EAGjC,MAAMkB,EAAUhB,IAAiB,KAAOA,EAAeU,EACjDO,EAAgBd,IAAmB,KAAOA,EAAiBQ,EAC3DO,EAAUb,GAAgBO,EAG1BO,EAAkBC,EAAAA,YACtB,MAAOC,GAA4B,CACjC,MAAMd,EAAmB,CAAE,OAAQc,CAAA,EAAqBpB,EAAiBoB,EAAY,CACnF,aAAc,kCAAA,CACf,CACH,EACA,CAACd,CAAkB,CAAA,EAIfe,EAAoBF,EAAAA,YACxB,MAAOG,GAA8B,CAEnC,GAAIA,GAAqBL,GAA2B,QAAS,CAC3D,MAAMM,EAAgC,CAAE,GAAGN,EAAS,QAAS,MAAA,EAE7DZ,EAAgBkB,CAAc,EAC9B,MAAMC,EAAWC,EAAAA,oCAAoCF,CAAc,EACnE,MAAMjB,EACJ,CAAE,GAAGkB,EAAU,cAAe,EAAA,EAC9BrB,EACAmB,EACA,CAAE,aAAc,oCAAA,CAAqC,EAEvD,MACF,CAEA,MAAMhB,EACJ,CAAE,cAAegB,CAAA,EACjBnB,EACAmB,EACA,CAAE,aAAc,oCAAA,CAAqC,CAEzD,EACA,CAAChB,EAAoBW,CAAO,CAAA,EAIxBS,EAAkBP,EAAAA,YACtB,MAAOQ,EAA8BC,IAA4B,CAE/D,MAAMC,EACJD,GACA,CACE,GAAID,EAAc,aAAe,CAAA,EACjC,GAAG,OAAO,KAAKA,EAAc,kBAAoB,CAAA,CAAE,EACnD,GAAKA,EAAc,eAAe,MAAqB,CAAA,EACvD,GAAKA,EAAc,eAAe,OAAsB,CAAA,CAAC,EAExD,OAAO,OAAO,EACd,OAAO,CAACG,EAAGC,EAAGC,IAAMA,EAAE,QAAQF,CAAC,IAAMC,CAAC,EAErCP,EAAWC,EAAAA,oCAAoCE,EAAeE,CAAU,EACxEI,EAAa,CAAC,CAACN,EAAc,QAG/BM,GAEF9B,EAAkB,EAAK,EAGzB,MAAMG,EACJ2B,EAAa,CAAE,GAAGT,EAAU,cAAe,IAAUA,EACrDnB,EACAsB,EACA,CAAE,aAAc,0BAAA,CAA2B,CAE/C,EACA,CAACrB,CAAkB,CAAA,EAGrB,MAAO,CACL,QAAAS,EACA,gBAAAG,EACA,cAAAF,EACA,kBAAAK,EACA,QAAAJ,EACA,gBAAAS,CAAA,CAEJ"}
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 { UpdateViewSettingsFn } 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\ntype Props = {\n viewSettings: OverviewSettings | undefined\n updateViewSettings: UpdateViewSettingsFn\n}\n\nexport const useOverviewViewSettings = ({ viewSettings, updateViewSettings }: Props): Return => {\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 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":["useOverviewViewSettings","viewSettings","updateViewSettings","localFilters","setLocalFilters","useState","localHierarchy","setLocalHierarchy","localColumns","setLocalColumns","overviewSettings","serverFilters","serverHierarchy","serverColumns","useMemo","convertColumnConfigToTanstackStates","useEffect","filters","showHierarchy","columns","onUpdateFilters","useCallback","newFilters","onUpdateHierarchy","newShowHierarchy","clearedColumns","settings","convertTanstackStatesToColumnConfig","onUpdateColumns","tableSettings","allColumnIds","derivedAll","v","i","a","hasGroupBy"],"mappings":"gRA2CaA,EAA0B,CAAC,CAAE,aAAAC,EAAc,mBAAAC,KAAwC,CAE9F,KAAM,CAACC,EAAcC,CAAe,EAAIC,EAAAA,SAA6B,IAAI,EACnE,CAACC,EAAgBC,CAAiB,EAAIF,EAAAA,SAAyB,IAAI,EACnE,CAACG,EAAcC,CAAe,EAAIJ,EAAAA,SAA+B,IAAI,EAGrEK,EAAmBT,EACnBU,EAAiBD,GAAkB,QAAkB,CAAA,EACrDE,EAAkBF,GAAkB,eAAiB,GAErDG,EAAgBC,EAAAA,QACpB,IAAMC,EAAAA,oCAAoCL,CAAgB,EAC1D,CAAC,KAAK,UAAUT,CAAY,CAAC,CAAA,EAI/Be,EAAAA,UAAU,IAAM,CACdZ,EAAgB,IAAI,EACpBG,EAAkB,IAAI,EACtBE,EAAgB,IAAI,CACtB,EAAG,CAAC,KAAK,UAAUR,CAAY,CAAC,CAAC,EAGjC,MAAMgB,EAAUd,IAAiB,KAAOA,EAAeQ,EACjDO,EAAgBZ,IAAmB,KAAOA,EAAiBM,EAC3DO,EAAUX,GAAgBK,EAG1BO,EAAkBC,EAAAA,YACtB,MAAOC,GAA4B,CACjC,MAAMpB,EAAmB,CAAE,OAAQoB,CAAA,EAAqBlB,EAAiBkB,EAAY,CACnF,aAAc,kCAAA,CACf,CACH,EACA,CAACpB,CAAkB,CAAA,EAIfqB,EAAoBF,EAAAA,YACxB,MAAOG,GAA8B,CAEnC,GAAIA,GAAqBL,GAA2B,QAAS,CAC3D,MAAMM,EAAgC,CAAE,GAAGN,EAAS,QAAS,MAAA,EAE7DV,EAAgBgB,CAAc,EAC9B,MAAMC,EAAWC,EAAAA,oCAAoCF,CAAc,EACnE,MAAMvB,EACJ,CAAE,GAAGwB,EAAU,cAAe,EAAA,EAC9BnB,EACAiB,EACA,CAAE,aAAc,oCAAA,CAAqC,EAEvD,MACF,CAEA,MAAMtB,EACJ,CAAE,cAAesB,CAAA,EACjBjB,EACAiB,EACA,CAAE,aAAc,oCAAA,CAAqC,CAEzD,EACA,CAACtB,EAAoBiB,CAAO,CAAA,EAIxBS,EAAkBP,EAAAA,YACtB,MAAOQ,EAA8BC,IAA4B,CAE/D,MAAMC,EACJD,GACA,CACE,GAAID,EAAc,aAAe,CAAA,EACjC,GAAG,OAAO,KAAKA,EAAc,kBAAoB,CAAA,CAAE,EACnD,GAAKA,EAAc,eAAe,MAAqB,CAAA,EACvD,GAAKA,EAAc,eAAe,OAAsB,CAAA,CAAC,EAExD,OAAO,OAAO,EACd,OAAO,CAACG,EAAGC,EAAGC,IAAMA,EAAE,QAAQF,CAAC,IAAMC,CAAC,EAErCP,EAAWC,EAAAA,oCAAoCE,EAAeE,CAAU,EACxEI,EAAa,CAAC,CAACN,EAAc,QAG/BM,GAEF5B,EAAkB,EAAK,EAGzB,MAAML,EACJiC,EAAa,CAAE,GAAGT,EAAU,cAAe,IAAUA,EACrDjB,EACAoB,EACA,CAAE,aAAc,0BAAA,CAA2B,CAE/C,EACA,CAAC3B,CAAkB,CAAA,EAGrB,MAAO,CACL,QAAAe,EACA,gBAAAG,EACA,cAAAF,EACA,kBAAAK,EACA,QAAAJ,EACA,gBAAAS,CAAA,CAEJ"}
@@ -1,75 +1,73 @@
1
- import { useViewsContext as U } from "../../context/ViewsContext.es.js";
2
1
  import "lodash";
3
2
  import "react-toastify";
4
3
  import "uuid";
5
- import { convertColumnConfigToTanstackStates as x, convertTanstackStatesToColumnConfig as g } from "../../../../util/columnConfigConverter.es.js";
4
+ import { convertColumnConfigToTanstackStates as x, convertTanstackStatesToColumnConfig as d } from "../../../../util/columnConfigConverter.es.js";
6
5
  import "../../../../util/pubsub.es.js";
7
- import { useViewUpdateHelper as L } from "../../utils/viewUpdateHelper.es.js";
8
- import { useState as a, useMemo as J, useEffect as N, useCallback as u } from "react";
9
- const I = () => {
10
- const { viewSettings: n } = U(), [m, p] = a(null), [f, t] = a(null), [h, i] = a(null), { updateViewSettings: o } = L(), l = n, v = l?.filter ?? {}, C = l?.showHierarchy ?? !0, w = J(
11
- () => x(l),
12
- [JSON.stringify(n)]
6
+ import { useState as i, useMemo as J, useEffect as N, useCallback as u } from "react";
7
+ const z = ({ viewSettings: e, updateViewSettings: r }) => {
8
+ const [m, f] = i(null), [y, s] = i(null), [C, c] = i(null), t = e, v = t?.filter ?? {}, g = t?.showHierarchy ?? !0, F = J(
9
+ () => x(t),
10
+ [JSON.stringify(e)]
13
11
  );
14
12
  N(() => {
15
- p(null), t(null), i(null);
16
- }, [JSON.stringify(n)]);
17
- const F = m !== null ? m : v, H = f !== null ? f : C, s = h || w, O = u(
18
- async (e) => {
19
- await o({ filter: e }, p, e, {
13
+ f(null), s(null), c(null);
14
+ }, [JSON.stringify(e)]);
15
+ const H = m !== null ? m : v, O = y !== null ? y : g, l = C || F, B = u(
16
+ async (o) => {
17
+ await r({ filter: o }, f, o, {
20
18
  errorMessage: "Failed to update filter settings"
21
19
  });
22
20
  },
23
- [o]
24
- ), B = u(
25
- async (e) => {
26
- if (e && s?.groupBy) {
27
- const r = { ...s, groupBy: void 0 };
28
- i(r);
29
- const c = g(r);
30
- await o(
31
- { ...c, showHierarchy: !0 },
32
- t,
33
- e,
21
+ [r]
22
+ ), M = u(
23
+ async (o) => {
24
+ if (o && l?.groupBy) {
25
+ const n = { ...l, groupBy: void 0 };
26
+ c(n);
27
+ const a = d(n);
28
+ await r(
29
+ { ...a, showHierarchy: !0 },
30
+ s,
31
+ o,
34
32
  { errorMessage: "Failed to update hierarchy setting" }
35
33
  );
36
34
  return;
37
35
  }
38
- await o(
39
- { showHierarchy: e },
40
- t,
41
- e,
36
+ await r(
37
+ { showHierarchy: o },
38
+ s,
39
+ o,
42
40
  { errorMessage: "Failed to update hierarchy setting" }
43
41
  );
44
42
  },
45
- [o, s]
46
- ), M = u(
47
- async (e, r) => {
48
- const c = r || [
49
- ...e.columnOrder || [],
50
- ...Object.keys(e.columnVisibility || {}),
51
- ...e.columnPinning?.left || [],
52
- ...e.columnPinning?.right || []
53
- ].filter(Boolean).filter((V, k, T) => T.indexOf(V) === k), d = g(e, c), y = !!e.groupBy;
54
- y && t(!1), await o(
55
- y ? { ...d, showHierarchy: !1 } : d,
56
- i,
57
- e,
43
+ [r, l]
44
+ ), k = u(
45
+ async (o, n) => {
46
+ const a = n || [
47
+ ...o.columnOrder || [],
48
+ ...Object.keys(o.columnVisibility || {}),
49
+ ...o.columnPinning?.left || [],
50
+ ...o.columnPinning?.right || []
51
+ ].filter(Boolean).filter((T, L, U) => U.indexOf(T) === L), h = d(o, a), p = !!o.groupBy;
52
+ p && s(!1), await r(
53
+ p ? { ...h, showHierarchy: !1 } : h,
54
+ c,
55
+ o,
58
56
  { errorMessage: "Failed to update columns" }
59
57
  );
60
58
  },
61
- [o]
59
+ [r]
62
60
  );
63
61
  return {
64
- filters: F,
65
- onUpdateFilters: O,
66
- showHierarchy: H,
67
- onUpdateHierarchy: B,
68
- columns: s,
69
- onUpdateColumns: M
62
+ filters: H,
63
+ onUpdateFilters: B,
64
+ showHierarchy: O,
65
+ onUpdateHierarchy: M,
66
+ columns: l,
67
+ onUpdateColumns: k
70
68
  };
71
69
  };
72
70
  export {
73
- I as useOverviewViewSettings
71
+ z as useOverviewViewSettings
74
72
  };
75
73
  //# sourceMappingURL=useOverviewViewSettings.es.js.map
@@ -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\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":["useOverviewViewSettings","viewSettings","useViewsContext","localFilters","setLocalFilters","useState","localHierarchy","setLocalHierarchy","localColumns","setLocalColumns","updateViewSettings","useViewUpdateHelper","overviewSettings","serverFilters","serverHierarchy","serverColumns","useMemo","convertColumnConfigToTanstackStates","useEffect","filters","showHierarchy","columns","onUpdateFilters","useCallback","newFilters","onUpdateHierarchy","newShowHierarchy","clearedColumns","settings","convertTanstackStatesToColumnConfig","onUpdateColumns","tableSettings","allColumnIds","derivedAll","v","i","a","hasGroupBy"],"mappings":";;;;;;;;AAsCO,MAAMA,IAA0B,MAAc;AAEnD,QAAM,EAAE,cAAAC,EAAA,IAAiBC,EAAA,GAGnB,CAACC,GAAcC,CAAe,IAAIC,EAA6B,IAAI,GACnE,CAACC,GAAgBC,CAAiB,IAAIF,EAAyB,IAAI,GACnE,CAACG,GAAcC,CAAe,IAAIJ,EAA+B,IAAI,GAGrE,EAAE,oBAAAK,EAAA,IAAuBC,EAAA,GAGzBC,IAAmBX,GACnBY,IAAiBD,GAAkB,UAAkB,CAAA,GACrDE,IAAkBF,GAAkB,iBAAiB,IAErDG,IAAgBC;AAAA,IACpB,MAAMC,EAAoCL,CAAgB;AAAA,IAC1D,CAAC,KAAK,UAAUX,CAAY,CAAC;AAAA,EAAA;AAI/B,EAAAiB,EAAU,MAAM;AACd,IAAAd,EAAgB,IAAI,GACpBG,EAAkB,IAAI,GACtBE,EAAgB,IAAI;AAAA,EACtB,GAAG,CAAC,KAAK,UAAUR,CAAY,CAAC,CAAC;AAGjC,QAAMkB,IAAUhB,MAAiB,OAAOA,IAAeU,GACjDO,IAAgBd,MAAmB,OAAOA,IAAiBQ,GAC3DO,IAAUb,KAAgBO,GAG1BO,IAAkBC;AAAA,IACtB,OAAOC,MAA4B;AACjC,YAAMd,EAAmB,EAAE,QAAQc,EAAA,GAAqBpB,GAAiBoB,GAAY;AAAA,QACnF,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAACd,CAAkB;AAAA,EAAA,GAIfe,IAAoBF;AAAA,IACxB,OAAOG,MAA8B;AAEnC,UAAIA,KAAqBL,GAA2B,SAAS;AAC3D,cAAMM,IAAgC,EAAE,GAAGN,GAAS,SAAS,OAAA;AAE7D,QAAAZ,EAAgBkB,CAAc;AAC9B,cAAMC,IAAWC,EAAoCF,CAAc;AACnE,cAAMjB;AAAA,UACJ,EAAE,GAAGkB,GAAU,eAAe,GAAA;AAAA,UAC9BrB;AAAA,UACAmB;AAAA,UACA,EAAE,cAAc,qCAAA;AAAA,QAAqC;AAEvD;AAAA,MACF;AAEA,YAAMhB;AAAA,QACJ,EAAE,eAAegB,EAAA;AAAA,QACjBnB;AAAA,QACAmB;AAAA,QACA,EAAE,cAAc,qCAAA;AAAA,MAAqC;AAAA,IAEzD;AAAA,IACA,CAAChB,GAAoBW,CAAO;AAAA,EAAA,GAIxBS,IAAkBP;AAAA,IACtB,OAAOQ,GAA8BC,MAA4B;AAE/D,YAAMC,IACJD,KACA;AAAA,QACE,GAAID,EAAc,eAAe,CAAA;AAAA,QACjC,GAAG,OAAO,KAAKA,EAAc,oBAAoB,CAAA,CAAE;AAAA,QACnD,GAAKA,EAAc,eAAe,QAAqB,CAAA;AAAA,QACvD,GAAKA,EAAc,eAAe,SAAsB,CAAA;AAAA,MAAC,EAExD,OAAO,OAAO,EACd,OAAO,CAACG,GAAGC,GAAGC,MAAMA,EAAE,QAAQF,CAAC,MAAMC,CAAC,GAErCP,IAAWC,EAAoCE,GAAeE,CAAU,GACxEI,IAAa,CAAC,CAACN,EAAc;AAGnC,MAAIM,KAEF9B,EAAkB,EAAK,GAGzB,MAAMG;AAAA,QACJ2B,IAAa,EAAE,GAAGT,GAAU,eAAe,OAAUA;AAAA,QACrDnB;AAAA,QACAsB;AAAA,QACA,EAAE,cAAc,2BAAA;AAAA,MAA2B;AAAA,IAE/C;AAAA,IACA,CAACrB,CAAkB;AAAA,EAAA;AAGrB,SAAO;AAAA,IACL,SAAAS;AAAA,IACA,iBAAAG;AAAA,IACA,eAAAF;AAAA,IACA,mBAAAK;AAAA,IACA,SAAAJ;AAAA,IACA,iBAAAS;AAAA,EAAA;AAEJ;"}
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 { UpdateViewSettingsFn } 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\ntype Props = {\n viewSettings: OverviewSettings | undefined\n updateViewSettings: UpdateViewSettingsFn\n}\n\nexport const useOverviewViewSettings = ({ viewSettings, updateViewSettings }: Props): Return => {\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 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":["useOverviewViewSettings","viewSettings","updateViewSettings","localFilters","setLocalFilters","useState","localHierarchy","setLocalHierarchy","localColumns","setLocalColumns","overviewSettings","serverFilters","serverHierarchy","serverColumns","useMemo","convertColumnConfigToTanstackStates","useEffect","filters","showHierarchy","columns","onUpdateFilters","useCallback","newFilters","onUpdateHierarchy","newShowHierarchy","clearedColumns","settings","convertTanstackStatesToColumnConfig","onUpdateColumns","tableSettings","allColumnIds","derivedAll","v","i","a","hasGroupBy"],"mappings":";;;;;;AA2CO,MAAMA,IAA0B,CAAC,EAAE,cAAAC,GAAc,oBAAAC,QAAwC;AAE9F,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAA6B,IAAI,GACnE,CAACC,GAAgBC,CAAiB,IAAIF,EAAyB,IAAI,GACnE,CAACG,GAAcC,CAAe,IAAIJ,EAA+B,IAAI,GAGrEK,IAAmBT,GACnBU,IAAiBD,GAAkB,UAAkB,CAAA,GACrDE,IAAkBF,GAAkB,iBAAiB,IAErDG,IAAgBC;AAAA,IACpB,MAAMC,EAAoCL,CAAgB;AAAA,IAC1D,CAAC,KAAK,UAAUT,CAAY,CAAC;AAAA,EAAA;AAI/B,EAAAe,EAAU,MAAM;AACd,IAAAZ,EAAgB,IAAI,GACpBG,EAAkB,IAAI,GACtBE,EAAgB,IAAI;AAAA,EACtB,GAAG,CAAC,KAAK,UAAUR,CAAY,CAAC,CAAC;AAGjC,QAAMgB,IAAUd,MAAiB,OAAOA,IAAeQ,GACjDO,IAAgBZ,MAAmB,OAAOA,IAAiBM,GAC3DO,IAAUX,KAAgBK,GAG1BO,IAAkBC;AAAA,IACtB,OAAOC,MAA4B;AACjC,YAAMpB,EAAmB,EAAE,QAAQoB,EAAA,GAAqBlB,GAAiBkB,GAAY;AAAA,QACnF,cAAc;AAAA,MAAA,CACf;AAAA,IACH;AAAA,IACA,CAACpB,CAAkB;AAAA,EAAA,GAIfqB,IAAoBF;AAAA,IACxB,OAAOG,MAA8B;AAEnC,UAAIA,KAAqBL,GAA2B,SAAS;AAC3D,cAAMM,IAAgC,EAAE,GAAGN,GAAS,SAAS,OAAA;AAE7D,QAAAV,EAAgBgB,CAAc;AAC9B,cAAMC,IAAWC,EAAoCF,CAAc;AACnE,cAAMvB;AAAA,UACJ,EAAE,GAAGwB,GAAU,eAAe,GAAA;AAAA,UAC9BnB;AAAA,UACAiB;AAAA,UACA,EAAE,cAAc,qCAAA;AAAA,QAAqC;AAEvD;AAAA,MACF;AAEA,YAAMtB;AAAA,QACJ,EAAE,eAAesB,EAAA;AAAA,QACjBjB;AAAA,QACAiB;AAAA,QACA,EAAE,cAAc,qCAAA;AAAA,MAAqC;AAAA,IAEzD;AAAA,IACA,CAACtB,GAAoBiB,CAAO;AAAA,EAAA,GAIxBS,IAAkBP;AAAA,IACtB,OAAOQ,GAA8BC,MAA4B;AAE/D,YAAMC,IACJD,KACA;AAAA,QACE,GAAID,EAAc,eAAe,CAAA;AAAA,QACjC,GAAG,OAAO,KAAKA,EAAc,oBAAoB,CAAA,CAAE;AAAA,QACnD,GAAKA,EAAc,eAAe,QAAqB,CAAA;AAAA,QACvD,GAAKA,EAAc,eAAe,SAAsB,CAAA;AAAA,MAAC,EAExD,OAAO,OAAO,EACd,OAAO,CAACG,GAAGC,GAAGC,MAAMA,EAAE,QAAQF,CAAC,MAAMC,CAAC,GAErCP,IAAWC,EAAoCE,GAAeE,CAAU,GACxEI,IAAa,CAAC,CAACN,EAAc;AAGnC,MAAIM,KAEF5B,EAAkB,EAAK,GAGzB,MAAML;AAAA,QACJiC,IAAa,EAAE,GAAGT,GAAU,eAAe,OAAUA;AAAA,QACrDjB;AAAA,QACAoB;AAAA,QACA,EAAE,cAAc,2BAAA;AAAA,MAA2B;AAAA,IAE/C;AAAA,IACA,CAAC3B,CAAkB;AAAA,EAAA;AAGrB,SAAO;AAAA,IACL,SAAAe;AAAA,IACA,iBAAAG;AAAA,IACA,eAAAF;AAAA,IACA,mBAAAK;AAAA,IACA,SAAAJ;AAAA,IACA,iBAAAS;AAAA,EAAA;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");const k=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const C=require("./generateWorkingView.cjs.js"),c=require("react-toastify"),w=require("react"),S=require("../context/ViewsContext.cjs.js"),g=async(i,e,u,q={},r,d)=>{try{const{viewSettings:t,viewType:s,projectName:n,selectedView:o,setSelectedView:p,workingView:V,onSettingsChanged:l}=r;if(!s)throw"No view type provided for updating view settings";if(!n)throw"No project name provided for updating view settings";e(u);const v={...t,...i},a=C.generateWorkingView(v),y=V?.id||a.id,f=d({payload:a,viewType:s,projectName:n});o&&!o.working&&l(!0),p(y),await f,e(null),q.successMessage&&c.toast.success(q.successMessage)}catch(t){e(null),console.error(t);const s=q.errorMessage||`Failed to update view settings: ${t}`;c.toast.error(s)}},M=()=>{const[i]=k.useCreateViewMutation(),e=S.useViewsContext(),u=w.useCallback(async r=>await i(r).unwrap(),[i]);return{updateViewSettings:w.useCallback(async(...r)=>await g(...r,e,u),[e]),onCreateView:u}};exports.updateViewSettings=g;exports.useViewUpdateHelper=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");const k=require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");const S=require("./generateWorkingView.cjs.js"),c=require("react-toastify"),w=require("react"),C=require("../context/ViewsContext.cjs.js"),g=async(i,e,u,q={},r,n)=>{try{if(!n)throw"Insufficient arguments provided to updateViewSettings";const{viewSettings:t,viewType:s,projectName:d,selectedView:o,setSelectedView:p,workingView:V,onSettingsChanged:l}=r;if(!s)throw"No view type provided for updating view settings";e(u);const y={...t,...i},a=S.generateWorkingView(y),f=V?.id||a.id,v=n({payload:a,viewType:s,projectName:d});o&&!o.working&&l(!0),p(f),await v,e(null),q.successMessage&&c.toast.success(q.successMessage)}catch(t){e(null),console.error(t);const s=q.errorMessage||`Failed to update view settings: ${t}`;c.toast.error(s)}},M=()=>{const[i]=k.useCreateViewMutation(),e=C.useViewsContext(),u=w.useCallback(async r=>await i(r).unwrap(),[i]);return{updateViewSettings:w.useCallback(async(...r)=>await g(...r,e,u),[e]),onCreateView:u}};exports.updateViewSettings=g;exports.useViewUpdateHelper=M;
2
2
  //# sourceMappingURL=viewUpdateHelper.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewUpdateHelper.cjs.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * This helper provides common functionality used by view settings hooks:\n * - Optimistic local state updates for immediate UI response\n * - Background API calls to persist changes\n * - Error handling with state reversion\n * - Working view management\n */\n\nimport { CreateViewApiArg, EntityIdResponse, useCreateViewMutation } from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options?: UpdateOptions,\n) => Promise<void>\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onCreateView: (payload: CreateViewApiArg) => Promise<EntityIdResponse>,\n): Promise<void> => {\n try {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n if (!viewType) throw 'No view type provided for updating view settings'\n if (!projectName) throw 'No project name provided for updating view settings'\n\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Create settings with updates\n const newSettings = { ...viewSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n // only use the generated ID if there is no working view already\n const newWorkingViewId = workingView?.id || newWorkingView.id\n\n // Make API call in background\n const promise = onCreateView({\n payload: newWorkingView,\n viewType: viewType,\n projectName: projectName,\n })\n\n // if not working: set that the settings have been changed to show the little blue save button\n if (selectedView && !selectedView.working) {\n onSettingsChanged(true)\n }\n // Always switch to the working view after updating anything\n setSelectedView(newWorkingViewId as string)\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n\n const viewContext = useViewsContext()\n\n const onCreateView = useCallback(\n async (payload: CreateViewApiArg) => await createView(payload).unwrap(),\n [createView],\n )\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) => await updateViewSettings(...args, viewContext, onCreateView),\n [viewContext],\n )\n\n return { updateViewSettings: updateViewSettingsHandler, onCreateView }\n}\n"],"names":["updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onCreateView","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","newSettings","newWorkingView","generateWorkingView","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","useViewsContext","useCallback","payload","args"],"mappings":"s2JA4BaA,EAAqB,MAChCC,EACAC,EACAC,EACAC,EAAyB,CAAA,EACzBC,EACAC,IACkB,CAClB,GAAI,CACF,KAAM,CACJ,aAAAC,EACA,SAAAC,EACA,YAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,kBAAAC,CAAA,EACER,EACJ,GAAI,CAACG,EAAU,KAAM,mDACrB,GAAI,CAACC,EAAa,KAAM,sDAGxBP,EAAiBC,CAAa,EAG9B,MAAMW,EAAc,CAAE,GAAGP,EAAc,GAAGN,CAAA,EAGpCc,EAAiBC,EAAAA,oBAAoBF,CAAW,EAEhDG,EAAmBL,GAAa,IAAMG,EAAe,GAGrDG,EAAUZ,EAAa,CAC3B,QAASS,EACT,SAAAP,EACA,YAAAC,CAAA,CACD,EAGGC,GAAgB,CAACA,EAAa,SAChCG,EAAkB,EAAI,EAGxBF,EAAgBM,CAA0B,EAE1C,MAAMC,EAGNhB,EAAiB,IAAI,EAEjBE,EAAQ,gBACVe,QAAM,QAAQf,EAAQ,cAAc,CAExC,OAASgB,EAAO,CAEdlB,EAAiB,IAAI,EACrB,QAAQ,MAAMkB,CAAK,EACnB,MAAMC,EAAWjB,EAAQ,cAAgB,mCAAmCgB,CAAK,GACjFD,EAAAA,MAAM,MAAME,CAAQ,CACtB,CACF,EAEaC,EAAsB,IAAM,CACvC,KAAM,CAACC,CAAU,EAAIC,wBAAA,EAEfnB,EAAcoB,EAAAA,gBAAA,EAEdnB,EAAeoB,EAAAA,YACnB,MAAOC,GAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA,EAC/D,CAACJ,CAAU,CAAA,EAQb,MAAO,CAAE,mBALyBG,EAAAA,YAChC,SAAUE,IAAS,MAAM5B,EAAmB,GAAG4B,EAAMvB,EAAaC,CAAY,EAC9E,CAACD,CAAW,CAAA,EAG0C,aAAAC,CAAA,CAC1D"}
1
+ {"version":3,"file":"viewUpdateHelper.cjs.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * This helper provides common functionality used by view settings hooks:\n * - Optimistic local state updates for immediate UI response\n * - Background API calls to persist changes\n * - Error handling with state reversion\n * - Working view management\n */\n\nimport { CreateViewApiArg, EntityIdResponse, useCreateViewMutation } from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onCreateView: (payload: CreateViewApiArg) => Promise<EntityIdResponse>,\n): Promise<void> => {\n try {\n // check the correct number of arguments are provided\n if (!onCreateView) {\n throw 'Insufficient arguments provided to updateViewSettings'\n }\n\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n if (!viewType) throw 'No view type provided for updating view settings'\n\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Create settings with updates\n const newSettings = { ...viewSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n // only use the generated ID if there is no working view already\n const newWorkingViewId = workingView?.id || newWorkingView.id\n\n // Make API call in background\n const promise = onCreateView({\n payload: newWorkingView,\n viewType: viewType,\n projectName: projectName,\n })\n\n // if not working: set that the settings have been changed to show the little blue save button\n if (selectedView && !selectedView.working) {\n onSettingsChanged(true)\n }\n // Always switch to the working view after updating anything\n setSelectedView(newWorkingViewId as string)\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n\n const viewContext = useViewsContext()\n\n const onCreateView = useCallback(\n async (payload: CreateViewApiArg) => await createView(payload).unwrap(),\n [createView],\n )\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) => await updateViewSettings(...args, viewContext, onCreateView),\n [viewContext],\n )\n\n return { updateViewSettings: updateViewSettingsHandler, onCreateView }\n}\n"],"names":["updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onCreateView","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","newSettings","newWorkingView","generateWorkingView","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","useViewsContext","useCallback","payload","args"],"mappings":"s2JA4BaA,EAAqB,MAChCC,EACAC,EACAC,EACAC,EAAyB,CAAA,EACzBC,EACAC,IACkB,CAClB,GAAI,CAEF,GAAI,CAACA,EACH,KAAM,wDAGR,KAAM,CACJ,aAAAC,EACA,SAAAC,EACA,YAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,kBAAAC,CAAA,EACER,EACJ,GAAI,CAACG,EAAU,KAAM,mDAGrBN,EAAiBC,CAAa,EAG9B,MAAMW,EAAc,CAAE,GAAGP,EAAc,GAAGN,CAAA,EAGpCc,EAAiBC,EAAAA,oBAAoBF,CAAW,EAEhDG,EAAmBL,GAAa,IAAMG,EAAe,GAGrDG,EAAUZ,EAAa,CAC3B,QAASS,EACT,SAAAP,EACA,YAAAC,CAAA,CACD,EAGGC,GAAgB,CAACA,EAAa,SAChCG,EAAkB,EAAI,EAGxBF,EAAgBM,CAA0B,EAE1C,MAAMC,EAGNhB,EAAiB,IAAI,EAEjBE,EAAQ,gBACVe,QAAM,QAAQf,EAAQ,cAAc,CAExC,OAASgB,EAAO,CAEdlB,EAAiB,IAAI,EACrB,QAAQ,MAAMkB,CAAK,EACnB,MAAMC,EAAWjB,EAAQ,cAAgB,mCAAmCgB,CAAK,GACjFD,EAAAA,MAAM,MAAME,CAAQ,CACtB,CACF,EAEaC,EAAsB,IAAM,CACvC,KAAM,CAACC,CAAU,EAAIC,wBAAA,EAEfnB,EAAcoB,EAAAA,gBAAA,EAEdnB,EAAeoB,EAAAA,YACnB,MAAOC,GAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA,EAC/D,CAACJ,CAAU,CAAA,EAQb,MAAO,CAAE,mBALyBG,EAAAA,YAChC,SAAUE,IAAS,MAAM5B,EAAmB,GAAG4B,EAAMvB,EAAaC,CAAY,EAC9E,CAACD,CAAW,CAAA,EAG0C,aAAAC,CAAA,CAC1D"}
@@ -87,24 +87,25 @@ import { generateWorkingView as k } from "./generateWorkingView.es.js";
87
87
  import { toast as w } from "react-toastify";
88
88
  import { useCallback as c } from "react";
89
89
  import { useViewsContext as C } from "../context/ViewsContext.es.js";
90
- const M = async (r, t, o, p = {}, i, g) => {
90
+ const M = async (r, t, o, p = {}, i, s) => {
91
91
  try {
92
+ if (!s)
93
+ throw "Insufficient arguments provided to updateViewSettings";
92
94
  const {
93
95
  viewSettings: m,
94
96
  viewType: e,
95
- projectName: s,
97
+ projectName: g,
96
98
  selectedView: n,
97
99
  setSelectedView: d,
98
100
  workingView: u,
99
101
  onSettingsChanged: V
100
102
  } = i;
101
103
  if (!e) throw "No view type provided for updating view settings";
102
- if (!s) throw "No project name provided for updating view settings";
103
104
  t(o);
104
- const f = { ...m, ...r }, a = k(f), l = u?.id || a.id, v = g({
105
+ const f = { ...m, ...r }, a = k(f), l = u?.id || a.id, v = s({
105
106
  payload: a,
106
107
  viewType: e,
107
- projectName: s
108
+ projectName: g
108
109
  });
109
110
  n && !n.working && V(!0), d(l), await v, t(null), p.successMessage && w.success(p.successMessage);
110
111
  } catch (m) {
@@ -1 +1 @@
1
- {"version":3,"file":"viewUpdateHelper.es.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * This helper provides common functionality used by view settings hooks:\n * - Optimistic local state updates for immediate UI response\n * - Background API calls to persist changes\n * - Error handling with state reversion\n * - Working view management\n */\n\nimport { CreateViewApiArg, EntityIdResponse, useCreateViewMutation } from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options?: UpdateOptions,\n) => Promise<void>\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onCreateView: (payload: CreateViewApiArg) => Promise<EntityIdResponse>,\n): Promise<void> => {\n try {\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n if (!viewType) throw 'No view type provided for updating view settings'\n if (!projectName) throw 'No project name provided for updating view settings'\n\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Create settings with updates\n const newSettings = { ...viewSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n // only use the generated ID if there is no working view already\n const newWorkingViewId = workingView?.id || newWorkingView.id\n\n // Make API call in background\n const promise = onCreateView({\n payload: newWorkingView,\n viewType: viewType,\n projectName: projectName,\n })\n\n // if not working: set that the settings have been changed to show the little blue save button\n if (selectedView && !selectedView.working) {\n onSettingsChanged(true)\n }\n // Always switch to the working view after updating anything\n setSelectedView(newWorkingViewId as string)\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n\n const viewContext = useViewsContext()\n\n const onCreateView = useCallback(\n async (payload: CreateViewApiArg) => await createView(payload).unwrap(),\n [createView],\n )\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) => await updateViewSettings(...args, viewContext, onCreateView),\n [viewContext],\n )\n\n return { updateViewSettings: updateViewSettingsHandler, onCreateView }\n}\n"],"names":["updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onCreateView","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","newSettings","newWorkingView","generateWorkingView","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","useViewsContext","useCallback","payload","args"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAMA,IAAqB,OAChCC,GACAC,GACAC,GACAC,IAAyB,CAAA,GACzBC,GACAC,MACkB;AAClB,MAAI;AACF,UAAM;AAAA,MACJ,cAAAC;AAAA,MACA,UAAAC;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,mBAAAC;AAAA,IAAA,IACER;AACJ,QAAI,CAACG,EAAU,OAAM;AACrB,QAAI,CAACC,EAAa,OAAM;AAGxB,IAAAP,EAAiBC,CAAa;AAG9B,UAAMW,IAAc,EAAE,GAAGP,GAAc,GAAGN,EAAA,GAGpCc,IAAiBC,EAAoBF,CAAW,GAEhDG,IAAmBL,GAAa,MAAMG,EAAe,IAGrDG,IAAUZ,EAAa;AAAA,MAC3B,SAASS;AAAA,MACT,UAAAP;AAAA,MACA,aAAAC;AAAA,IAAA,CACD;AAGD,IAAIC,KAAgB,CAACA,EAAa,WAChCG,EAAkB,EAAI,GAGxBF,EAAgBM,CAA0B,GAE1C,MAAMC,GAGNhB,EAAiB,IAAI,GAEjBE,EAAQ,kBACVe,EAAM,QAAQf,EAAQ,cAAc;AAAA,EAExC,SAASgB,GAAO;AAEd,IAAAlB,EAAiB,IAAI,GACrB,QAAQ,MAAMkB,CAAK;AACnB,UAAMC,IAAWjB,EAAQ,gBAAgB,mCAAmCgB,CAAK;AACjF,IAAAD,EAAM,MAAME,CAAQ;AAAA,EACtB;AACF,GAEaC,KAAsB,MAAM;AACvC,QAAM,CAACC,CAAU,IAAIC,EAAA,GAEfnB,IAAcoB,EAAA,GAEdnB,IAAeoB;AAAA,IACnB,OAAOC,MAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA;AAAA,IAC/D,CAACJ,CAAU;AAAA,EAAA;AAQb,SAAO,EAAE,oBALyBG;AAAA,IAChC,UAAUE,MAAS,MAAM5B,EAAmB,GAAG4B,GAAMvB,GAAaC,CAAY;AAAA,IAC9E,CAACD,CAAW;AAAA,EAAA,GAG0C,cAAAC,EAAA;AAC1D;"}
1
+ {"version":3,"file":"viewUpdateHelper.es.js","sources":["../../../../../../src/containers/Views/utils/viewUpdateHelper.ts"],"sourcesContent":["/**\n * Shared helper for updating view settings with optimistic local state management.\n *\n * This helper provides common functionality used by view settings hooks:\n * - Optimistic local state updates for immediate UI response\n * - Background API calls to persist changes\n * - Error handling with state reversion\n * - Working view management\n */\n\nimport { CreateViewApiArg, EntityIdResponse, useCreateViewMutation } from '@shared/api'\nimport { generateWorkingView } from './generateWorkingView'\nimport { toast } from 'react-toastify'\nimport { useCallback } from 'react'\nimport { useViewsContext, ViewsContextValue } from '../context/ViewsContext'\n\ninterface UpdateOptions {\n successMessage?: string\n errorMessage?: string\n}\n\nexport type UpdateViewSettingsFn = (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions,\n) => Promise<void>\n\nexport const updateViewSettings = async (\n updatedSettings: any,\n localStateSetter: (value: any) => void,\n newLocalValue: any,\n options: UpdateOptions = {},\n viewContext: ViewsContextValue,\n onCreateView: (payload: CreateViewApiArg) => Promise<EntityIdResponse>,\n): Promise<void> => {\n try {\n // check the correct number of arguments are provided\n if (!onCreateView) {\n throw 'Insufficient arguments provided to updateViewSettings'\n }\n\n const {\n viewSettings,\n viewType,\n projectName,\n selectedView,\n setSelectedView,\n workingView,\n onSettingsChanged,\n } = viewContext\n if (!viewType) throw 'No view type provided for updating view settings'\n\n // Immediately update local state for fast UI response\n localStateSetter(newLocalValue)\n\n // Create settings with updates\n const newSettings = { ...viewSettings, ...updatedSettings }\n\n // always update the working view no matter what\n const newWorkingView = generateWorkingView(newSettings)\n // only use the generated ID if there is no working view already\n const newWorkingViewId = workingView?.id || newWorkingView.id\n\n // Make API call in background\n const promise = onCreateView({\n payload: newWorkingView,\n viewType: viewType,\n projectName: projectName,\n })\n\n // if not working: set that the settings have been changed to show the little blue save button\n if (selectedView && !selectedView.working) {\n onSettingsChanged(true)\n }\n // Always switch to the working view after updating anything\n setSelectedView(newWorkingViewId as string)\n\n await promise\n\n // Clear local state after successful API call - the server data will take over\n localStateSetter(null)\n\n if (options.successMessage) {\n toast.success(options.successMessage)\n }\n } catch (error) {\n // Revert local state on error\n localStateSetter(null)\n console.error(error)\n const errorMsg = options.errorMessage || `Failed to update view settings: ${error}`\n toast.error(errorMsg)\n }\n}\n\nexport const useViewUpdateHelper = () => {\n const [createView] = useCreateViewMutation()\n\n const viewContext = useViewsContext()\n\n const onCreateView = useCallback(\n async (payload: CreateViewApiArg) => await createView(payload).unwrap(),\n [createView],\n )\n\n const updateViewSettingsHandler = useCallback<UpdateViewSettingsFn>(\n async (...args) => await updateViewSettings(...args, viewContext, onCreateView),\n [viewContext],\n )\n\n return { updateViewSettings: updateViewSettingsHandler, onCreateView }\n}\n"],"names":["updateViewSettings","updatedSettings","localStateSetter","newLocalValue","options","viewContext","onCreateView","viewSettings","viewType","projectName","selectedView","setSelectedView","workingView","onSettingsChanged","newSettings","newWorkingView","generateWorkingView","newWorkingViewId","promise","toast","error","errorMsg","useViewUpdateHelper","createView","useCreateViewMutation","useViewsContext","useCallback","payload","args"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAMA,IAAqB,OAChCC,GACAC,GACAC,GACAC,IAAyB,CAAA,GACzBC,GACAC,MACkB;AAClB,MAAI;AAEF,QAAI,CAACA;AACH,YAAM;AAGR,UAAM;AAAA,MACJ,cAAAC;AAAA,MACA,UAAAC;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,mBAAAC;AAAA,IAAA,IACER;AACJ,QAAI,CAACG,EAAU,OAAM;AAGrB,IAAAN,EAAiBC,CAAa;AAG9B,UAAMW,IAAc,EAAE,GAAGP,GAAc,GAAGN,EAAA,GAGpCc,IAAiBC,EAAoBF,CAAW,GAEhDG,IAAmBL,GAAa,MAAMG,EAAe,IAGrDG,IAAUZ,EAAa;AAAA,MAC3B,SAASS;AAAA,MACT,UAAAP;AAAA,MACA,aAAAC;AAAA,IAAA,CACD;AAGD,IAAIC,KAAgB,CAACA,EAAa,WAChCG,EAAkB,EAAI,GAGxBF,EAAgBM,CAA0B,GAE1C,MAAMC,GAGNhB,EAAiB,IAAI,GAEjBE,EAAQ,kBACVe,EAAM,QAAQf,EAAQ,cAAc;AAAA,EAExC,SAASgB,GAAO;AAEd,IAAAlB,EAAiB,IAAI,GACrB,QAAQ,MAAMkB,CAAK;AACnB,UAAMC,IAAWjB,EAAQ,gBAAgB,mCAAmCgB,CAAK;AACjF,IAAAD,EAAM,MAAME,CAAQ;AAAA,EACtB;AACF,GAEaC,KAAsB,MAAM;AACvC,QAAM,CAACC,CAAU,IAAIC,EAAA,GAEfnB,IAAcoB,EAAA,GAEdnB,IAAeoB;AAAA,IACnB,OAAOC,MAA8B,MAAMJ,EAAWI,CAAO,EAAE,OAAA;AAAA,IAC/D,CAACJ,CAAU;AAAA,EAAA;AAQb,SAAO,EAAE,oBALyBG;AAAA,IAChC,UAAUE,MAAS,MAAM5B,EAAmB,GAAG4B,GAAMvB,GAAaC,CAAY;AAAA,IAC9E,CAACD,CAAW;AAAA,EAAA,GAG0C,cAAAC,EAAA;AAC1D;"}
@@ -1 +1 @@
1
- {"version":3,"file":"AddonContext.cjs.js","sources":["../../../../src/context/AddonContext.tsx"],"sourcesContent":["import { createContext, FC, useContext } from 'react'\nimport { RouterTypes } from './AddonProjectContext'\n\nexport type RemoteAddonComponent = FC<RemoteAddonProps>\nexport type RemoteAddon = {\n id: string\n component: RemoteAddonComponent\n path: string\n}\n\nexport interface RemoteAddonProps {\n router: RouterTypes\n toast: any\n}\n\n// types for props passed to the provider\nexport interface AddonContextProps extends RemoteAddonProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonContextType extends RemoteAddonProps {}\n\nconst AddonContext = createContext<AddonContextType | undefined>(undefined)\n\nexport const AddonProvider = ({ children, ...props }: AddonContextProps) => {\n return <AddonContext.Provider value={{ ...props }}>{children}</AddonContext.Provider>\n}\n\nexport const useAddonContext = () => {\n const context = useContext(AddonContext)\n if (!context) {\n throw new Error('useAddonContext must be used within a AddonContext')\n }\n return context\n}\n"],"names":["AddonContext","createContext","AddonProvider","children","props","jsx","useAddonContext","context","useContext"],"mappings":"2JAuBMA,EAAeC,EAAAA,cAA4C,MAAS,EAE7DC,EAAgB,CAAC,CAAE,SAAAC,EAAU,GAAGC,KACpCC,EAAAA,kBAAAA,IAACL,EAAa,SAAb,CAAsB,MAAO,CAAE,GAAGI,GAAU,SAAAD,EAAS,EAGlDG,EAAkB,IAAM,CACnC,MAAMC,EAAUC,EAAAA,WAAWR,CAAY,EACvC,GAAI,CAACO,EACH,MAAM,IAAI,MAAM,oDAAoD,EAEtE,OAAOA,CACT"}
1
+ {"version":3,"file":"AddonContext.cjs.js","sources":["../../../../src/context/AddonContext.tsx"],"sourcesContent":["import { createContext, FC, useContext } from 'react'\nimport { RouterTypes } from '@shared/components'\n\nexport type RemoteAddonComponent = FC<RemoteAddonProps>\nexport type RemoteAddon = {\n id: string\n component: RemoteAddonComponent\n path: string\n module: string\n viewType?: string // if the addon is using views\n slicer?: { fields: string[] }\n projectList?: { multiSelect?: boolean; enabled: boolean }\n}\n\nexport interface RemoteAddonProps {\n router: RouterTypes\n toast: any\n}\n\n// types for props passed to the provider\nexport interface AddonContextProps extends RemoteAddonProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonContextType extends RemoteAddonProps {}\n\nconst AddonContext = createContext<AddonContextType | undefined>(undefined)\n\nexport const AddonProvider = ({ children, ...props }: AddonContextProps) => {\n return <AddonContext.Provider value={{ ...props }}>{children}</AddonContext.Provider>\n}\n\nexport const useAddonContext = () => {\n const context = useContext(AddonContext)\n if (!context) {\n throw new Error('useAddonContext must be used within a AddonContext')\n }\n return context\n}\n"],"names":["AddonContext","createContext","AddonProvider","children","props","jsx","useAddonContext","context","useContext"],"mappings":"2JA2BMA,EAAeC,EAAAA,cAA4C,MAAS,EAE7DC,EAAgB,CAAC,CAAE,SAAAC,EAAU,GAAGC,KACpCC,EAAAA,kBAAAA,IAACL,EAAa,SAAb,CAAsB,MAAO,CAAE,GAAGI,GAAU,SAAAD,EAAS,EAGlDG,EAAkB,IAAM,CACnC,MAAMC,EAAUC,EAAAA,WAAWR,CAAY,EACvC,GAAI,CAACO,EACH,MAAM,IAAI,MAAM,oDAAoD,EAEtE,OAAOA,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"AddonContext.es.js","sources":["../../../../src/context/AddonContext.tsx"],"sourcesContent":["import { createContext, FC, useContext } from 'react'\nimport { RouterTypes } from './AddonProjectContext'\n\nexport type RemoteAddonComponent = FC<RemoteAddonProps>\nexport type RemoteAddon = {\n id: string\n component: RemoteAddonComponent\n path: string\n}\n\nexport interface RemoteAddonProps {\n router: RouterTypes\n toast: any\n}\n\n// types for props passed to the provider\nexport interface AddonContextProps extends RemoteAddonProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonContextType extends RemoteAddonProps {}\n\nconst AddonContext = createContext<AddonContextType | undefined>(undefined)\n\nexport const AddonProvider = ({ children, ...props }: AddonContextProps) => {\n return <AddonContext.Provider value={{ ...props }}>{children}</AddonContext.Provider>\n}\n\nexport const useAddonContext = () => {\n const context = useContext(AddonContext)\n if (!context) {\n throw new Error('useAddonContext must be used within a AddonContext')\n }\n return context\n}\n"],"names":["AddonContext","createContext","AddonProvider","children","props","jsx","useAddonContext","context","useContext"],"mappings":";;AAuBA,MAAMA,IAAeC,EAA4C,MAAS,GAE7DC,IAAgB,CAAC,EAAE,UAAAC,GAAU,GAAGC,QACpCC,gBAAAA,EAAAA,IAACL,EAAa,UAAb,EAAsB,OAAO,EAAE,GAAGI,KAAU,UAAAD,GAAS,GAGlDG,IAAkB,MAAM;AACnC,QAAMC,IAAUC,EAAWR,CAAY;AACvC,MAAI,CAACO;AACH,UAAM,IAAI,MAAM,oDAAoD;AAEtE,SAAOA;AACT;"}
1
+ {"version":3,"file":"AddonContext.es.js","sources":["../../../../src/context/AddonContext.tsx"],"sourcesContent":["import { createContext, FC, useContext } from 'react'\nimport { RouterTypes } from '@shared/components'\n\nexport type RemoteAddonComponent = FC<RemoteAddonProps>\nexport type RemoteAddon = {\n id: string\n component: RemoteAddonComponent\n path: string\n module: string\n viewType?: string // if the addon is using views\n slicer?: { fields: string[] }\n projectList?: { multiSelect?: boolean; enabled: boolean }\n}\n\nexport interface RemoteAddonProps {\n router: RouterTypes\n toast: any\n}\n\n// types for props passed to the provider\nexport interface AddonContextProps extends RemoteAddonProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonContextType extends RemoteAddonProps {}\n\nconst AddonContext = createContext<AddonContextType | undefined>(undefined)\n\nexport const AddonProvider = ({ children, ...props }: AddonContextProps) => {\n return <AddonContext.Provider value={{ ...props }}>{children}</AddonContext.Provider>\n}\n\nexport const useAddonContext = () => {\n const context = useContext(AddonContext)\n if (!context) {\n throw new Error('useAddonContext must be used within a AddonContext')\n }\n return context\n}\n"],"names":["AddonContext","createContext","AddonProvider","children","props","jsx","useAddonContext","context","useContext"],"mappings":";;AA2BA,MAAMA,IAAeC,EAA4C,MAAS,GAE7DC,IAAgB,CAAC,EAAE,UAAAC,GAAU,GAAGC,QACpCC,gBAAAA,EAAAA,IAACL,EAAa,UAAb,EAAsB,OAAO,EAAE,GAAGI,KAAU,UAAAD,GAAS,GAGlDG,IAAkB,MAAM;AACnC,QAAMC,IAAUC,EAAWR,CAAY;AACvC,MAAI,CAACO;AACH,UAAM,IAAI,MAAM,oDAAoD;AAEtE,SAAOA;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"AddonProjectContext.cjs.js","sources":["../../../../src/context/AddonProjectContext.tsx"],"sourcesContent":["// NOT USED IN AYON-FRONTEND, ONLY IN ADDONS\n\nimport { ProjectModel, useGetProjectQuery, UserModel } from '@shared/api'\nimport { createContext, FC, useContext } from 'react'\nimport router from 'react-router-dom'\nimport type { toast } from 'react-toastify'\nimport { useGlobalContext } from './GlobalContext'\n\ntype ToastFunc = typeof toast\n\nexport type RemoteAddonProjectComponent = FC<RemoteAddonProjectProps>\nexport type RemoteAddonProject = {\n id: string\n component: RemoteAddonProjectComponent\n name: string\n module: string\n}\n\nexport type RouterTypes = {\n useParams: typeof router.useParams\n useNavigate: typeof router.useNavigate\n useLocation: typeof router.useLocation\n useSearchParams: typeof router.useSearchParams\n}\n\nexport interface RemoteAddonProjectProps {\n projectName: string\n router: RouterTypes\n toast?: any\n}\n\n// types for props passed to the provider\nexport interface AddonProjectContextValue extends RemoteAddonProjectProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonProjectContextType extends RemoteAddonProjectProps {\n project: ProjectModel | undefined\n user: UserModel | undefined\n toast: ToastFunc\n}\n\nconst AddonProjectContext = createContext<AddonProjectContextType | undefined>(undefined)\n\nexport const AddonProjectProvider = ({\n children,\n projectName,\n // utils\n toast,\n ...props\n}: AddonProjectContextValue) => {\n // get current project data\n const { data: project } = useGetProjectQuery(\n { projectName: projectName as string },\n { skip: !projectName },\n )\n\n const { user } = useGlobalContext()\n\n return (\n <AddonProjectContext.Provider\n value={{\n ...props,\n projectName,\n project,\n user,\n toast,\n }}\n >\n {children}\n </AddonProjectContext.Provider>\n )\n}\n\nexport const useAddonProjectContext = () => {\n const context = useContext(AddonProjectContext)\n if (!context) {\n throw new Error('useAddonProjectContext must be used within a AddonProjectContext')\n }\n return context\n}\n"],"names":["AddonProjectContext","createContext","AddonProjectProvider","children","projectName","toast","props","project","useGetProjectQuery","user","useGlobalContext","jsx","useAddonProjectContext","context","useContext"],"mappings":"k1IA2CMA,EAAsBC,EAAAA,cAAmD,MAAS,EAE3EC,EAAuB,CAAC,CACnC,SAAAC,EACA,YAAAC,EAEA,MAAAC,EACA,GAAGC,CACL,IAAgC,CAE9B,KAAM,CAAE,KAAMC,CAAA,EAAYC,EAAAA,mBACxB,CAAE,YAAAJ,CAAA,EACF,CAAE,KAAM,CAACA,CAAA,CAAY,EAGjB,CAAE,KAAAK,CAAA,EAASC,mBAAA,EAEjB,OACEC,EAAAA,kBAAAA,IAACX,EAAoB,SAApB,CACC,MAAO,CACL,GAAGM,EACH,YAAAF,EACA,QAAAG,EACA,KAAAE,EACA,MAAAJ,CAAA,EAGD,SAAAF,CAAA,CAAA,CAGP,EAEaS,EAAyB,IAAM,CAC1C,MAAMC,EAAUC,EAAAA,WAAWd,CAAmB,EAC9C,GAAI,CAACa,EACH,MAAM,IAAI,MAAM,kEAAkE,EAEpF,OAAOA,CACT"}
1
+ {"version":3,"file":"AddonProjectContext.cjs.js","sources":["../../../../src/context/AddonProjectContext.tsx"],"sourcesContent":["// NOT USED IN AYON-FRONTEND, ONLY IN ADDONS\n\nimport { ProjectModel, useGetProjectQuery, UserModel } from '@shared/api'\nimport { createContext, FC, useContext } from 'react'\nimport type { toast } from 'react-toastify'\nimport { useGlobalContext } from './GlobalContext'\nimport { RemotePageProps } from '@shared/components'\n\ntype ToastFunc = typeof toast\n\nexport interface RemoteAddonProjectProps extends RemotePageProps {}\n\nexport type RemoteAddonProjectComponent = FC<RemoteAddonProjectProps>\nexport type RemoteAddonProject = {\n id: string\n component: RemoteAddonProjectComponent\n name: string\n module: string\n viewType?: string // if the addon is using views\n slicer?: { fields: string[] }\n}\n\n// types for props passed to the provider\nexport interface AddonProjectContextValue extends RemoteAddonProjectProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonProjectContextType extends RemoteAddonProjectProps {\n project: ProjectModel | undefined\n user: UserModel | undefined\n toast: ToastFunc\n}\n\nconst AddonProjectContext = createContext<AddonProjectContextType | undefined>(undefined)\n\nexport const AddonProjectProvider = ({\n children,\n projectName,\n // utils\n toast,\n ...props\n}: AddonProjectContextValue) => {\n // get current project data\n const { data: project } = useGetProjectQuery(\n { projectName: projectName as string },\n { skip: !projectName },\n )\n\n const { user } = useGlobalContext()\n\n return (\n <AddonProjectContext.Provider\n value={{\n ...props,\n projectName,\n project,\n user,\n toast,\n }}\n >\n {children}\n </AddonProjectContext.Provider>\n )\n}\n\nexport const useAddonProjectContext = () => {\n const context = useContext(AddonProjectContext)\n if (!context) {\n throw new Error('useAddonProjectContext must be used within a AddonProjectContext')\n }\n return context\n}\n"],"names":["AddonProjectContext","createContext","AddonProjectProvider","children","projectName","toast","props","project","useGetProjectQuery","user","useGlobalContext","jsx","useAddonProjectContext","context","useContext"],"mappings":"k1IAkCMA,EAAsBC,EAAAA,cAAmD,MAAS,EAE3EC,EAAuB,CAAC,CACnC,SAAAC,EACA,YAAAC,EAEA,MAAAC,EACA,GAAGC,CACL,IAAgC,CAE9B,KAAM,CAAE,KAAMC,CAAA,EAAYC,EAAAA,mBACxB,CAAE,YAAAJ,CAAA,EACF,CAAE,KAAM,CAACA,CAAA,CAAY,EAGjB,CAAE,KAAAK,CAAA,EAASC,mBAAA,EAEjB,OACEC,EAAAA,kBAAAA,IAACX,EAAoB,SAApB,CACC,MAAO,CACL,GAAGM,EACH,YAAAF,EACA,QAAAG,EACA,KAAAE,EACA,MAAAJ,CAAA,EAGD,SAAAF,CAAA,CAAA,CAGP,EAEaS,EAAyB,IAAM,CAC1C,MAAMC,EAAUC,EAAAA,WAAWd,CAAmB,EAC9C,GAAI,CAACa,EACH,MAAM,IAAI,MAAM,kEAAkE,EAEpF,OAAOA,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"AddonProjectContext.es.js","sources":["../../../../src/context/AddonProjectContext.tsx"],"sourcesContent":["// NOT USED IN AYON-FRONTEND, ONLY IN ADDONS\n\nimport { ProjectModel, useGetProjectQuery, UserModel } from '@shared/api'\nimport { createContext, FC, useContext } from 'react'\nimport router from 'react-router-dom'\nimport type { toast } from 'react-toastify'\nimport { useGlobalContext } from './GlobalContext'\n\ntype ToastFunc = typeof toast\n\nexport type RemoteAddonProjectComponent = FC<RemoteAddonProjectProps>\nexport type RemoteAddonProject = {\n id: string\n component: RemoteAddonProjectComponent\n name: string\n module: string\n}\n\nexport type RouterTypes = {\n useParams: typeof router.useParams\n useNavigate: typeof router.useNavigate\n useLocation: typeof router.useLocation\n useSearchParams: typeof router.useSearchParams\n}\n\nexport interface RemoteAddonProjectProps {\n projectName: string\n router: RouterTypes\n toast?: any\n}\n\n// types for props passed to the provider\nexport interface AddonProjectContextValue extends RemoteAddonProjectProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonProjectContextType extends RemoteAddonProjectProps {\n project: ProjectModel | undefined\n user: UserModel | undefined\n toast: ToastFunc\n}\n\nconst AddonProjectContext = createContext<AddonProjectContextType | undefined>(undefined)\n\nexport const AddonProjectProvider = ({\n children,\n projectName,\n // utils\n toast,\n ...props\n}: AddonProjectContextValue) => {\n // get current project data\n const { data: project } = useGetProjectQuery(\n { projectName: projectName as string },\n { skip: !projectName },\n )\n\n const { user } = useGlobalContext()\n\n return (\n <AddonProjectContext.Provider\n value={{\n ...props,\n projectName,\n project,\n user,\n toast,\n }}\n >\n {children}\n </AddonProjectContext.Provider>\n )\n}\n\nexport const useAddonProjectContext = () => {\n const context = useContext(AddonProjectContext)\n if (!context) {\n throw new Error('useAddonProjectContext must be used within a AddonProjectContext')\n }\n return context\n}\n"],"names":["AddonProjectContext","createContext","AddonProjectProvider","children","projectName","toast","props","project","useGetProjectQuery","user","useGlobalContext","jsx","useAddonProjectContext","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,MAAMA,IAAsBC,EAAmD,MAAS,GAE3EC,KAAuB,CAAC;AAAA,EACnC,UAAAC;AAAA,EACA,aAAAC;AAAA;AAAA,EAEA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAgC;AAE9B,QAAM,EAAE,MAAMC,EAAA,IAAYC;AAAA,IACxB,EAAE,aAAAJ,EAAA;AAAA,IACF,EAAE,MAAM,CAACA,EAAA;AAAA,EAAY,GAGjB,EAAE,MAAAK,EAAA,IAASC,EAAA;AAEjB,SACEC,gBAAAA,EAAAA;AAAAA,IAACX,EAAoB;AAAA,IAApB;AAAA,MACC,OAAO;AAAA,QACL,GAAGM;AAAA,QACH,aAAAF;AAAA,QACA,SAAAG;AAAA,QACA,MAAAE;AAAA,QACA,OAAAJ;AAAA,MAAA;AAAA,MAGD,UAAAF;AAAA,IAAA;AAAA,EAAA;AAGP,GAEaS,KAAyB,MAAM;AAC1C,QAAMC,IAAUC,EAAWd,CAAmB;AAC9C,MAAI,CAACa;AACH,UAAM,IAAI,MAAM,kEAAkE;AAEpF,SAAOA;AACT;"}
1
+ {"version":3,"file":"AddonProjectContext.es.js","sources":["../../../../src/context/AddonProjectContext.tsx"],"sourcesContent":["// NOT USED IN AYON-FRONTEND, ONLY IN ADDONS\n\nimport { ProjectModel, useGetProjectQuery, UserModel } from '@shared/api'\nimport { createContext, FC, useContext } from 'react'\nimport type { toast } from 'react-toastify'\nimport { useGlobalContext } from './GlobalContext'\nimport { RemotePageProps } from '@shared/components'\n\ntype ToastFunc = typeof toast\n\nexport interface RemoteAddonProjectProps extends RemotePageProps {}\n\nexport type RemoteAddonProjectComponent = FC<RemoteAddonProjectProps>\nexport type RemoteAddonProject = {\n id: string\n component: RemoteAddonProjectComponent\n name: string\n module: string\n viewType?: string // if the addon is using views\n slicer?: { fields: string[] }\n}\n\n// types for props passed to the provider\nexport interface AddonProjectContextValue extends RemoteAddonProjectProps {\n children: React.ReactNode\n}\n\n// types returned by context\nexport interface AddonProjectContextType extends RemoteAddonProjectProps {\n project: ProjectModel | undefined\n user: UserModel | undefined\n toast: ToastFunc\n}\n\nconst AddonProjectContext = createContext<AddonProjectContextType | undefined>(undefined)\n\nexport const AddonProjectProvider = ({\n children,\n projectName,\n // utils\n toast,\n ...props\n}: AddonProjectContextValue) => {\n // get current project data\n const { data: project } = useGetProjectQuery(\n { projectName: projectName as string },\n { skip: !projectName },\n )\n\n const { user } = useGlobalContext()\n\n return (\n <AddonProjectContext.Provider\n value={{\n ...props,\n projectName,\n project,\n user,\n toast,\n }}\n >\n {children}\n </AddonProjectContext.Provider>\n )\n}\n\nexport const useAddonProjectContext = () => {\n const context = useContext(AddonProjectContext)\n if (!context) {\n throw new Error('useAddonProjectContext must be used within a AddonProjectContext')\n }\n return context\n}\n"],"names":["AddonProjectContext","createContext","AddonProjectProvider","children","projectName","toast","props","project","useGetProjectQuery","user","useGlobalContext","jsx","useAddonProjectContext","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,IAAsBC,EAAmD,MAAS,GAE3EC,KAAuB,CAAC;AAAA,EACnC,UAAAC;AAAA,EACA,aAAAC;AAAA;AAAA,EAEA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAgC;AAE9B,QAAM,EAAE,MAAMC,EAAA,IAAYC;AAAA,IACxB,EAAE,aAAAJ,EAAA;AAAA,IACF,EAAE,MAAM,CAACA,EAAA;AAAA,EAAY,GAGjB,EAAE,MAAAK,EAAA,IAASC,EAAA;AAEjB,SACEC,gBAAAA,EAAAA;AAAAA,IAACX,EAAoB;AAAA,IAApB;AAAA,MACC,OAAO;AAAA,QACL,GAAGM;AAAA,QACH,aAAAF;AAAA,QACA,SAAAG;AAAA,QACA,MAAAE;AAAA,QACA,OAAAJ;AAAA,MAAA;AAAA,MAGD,UAAAF;AAAA,IAAA;AAAA,EAAA;AAGP,GAEaS,KAAyB,MAAM;AAC1C,QAAMC,IAAUC,EAAWd,CAAmB;AAC9C,MAAI,CAACa;AACH,UAAM,IAAI,MAAM,kEAAkE;AAEpF,SAAOA;AACT;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("../../../_virtual/jsx-runtime.cjs.js"),r=require("react");require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/updateActivities.cjs.js");require("../api/queries/activities/updateReaction.cjs.js");require("../api/queries/activities/getMentions.cjs.js");require("../api/queries/activities/getCategories.cjs.js");require("../api/queries/addons/getAddons.cjs.js");require("../api/queries/addons/updateAddons.cjs.js");require("../api/queries/attributes/getAttributes.cjs.js");require("../api/queries/attributes/updateAttributes.cjs.js");require("../api/queries/authentication/getAuthentication.cjs.js");require("../api/queries/cloud/cloud.cjs.js");require("../api/queries/config/getConfig.cjs.js");require("../api/queries/config/updateConfig.cjs.js");require("../api/queries/entities/getEntity.cjs.js");require("../api/queries/entities/getEntityPanel.cjs.js");require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");const p=require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");require("../api/queries/system/getSystem.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");require("./RemoteModulesContext.cjs.js");require("../../../_virtual/runtime.cjs.js");require("../../../_virtual/semver.cjs.js");require("lodash");require("react-toastify");require("./DetailsPanelContext.cjs.js");require("./ThumbnailUploaderContext.cjs.js");require("./SettingsPanelContext.cjs.js");require("./pip/PiPProvider.cjs.js");require("react-dom");require("./pip/PiPWrapper.cjs.js");require("./AddonProjectContext.cjs.js");require("./AddonContext.cjs.js");require("./PowerpackContext.cjs.js");require("./MoveEntityContext.cjs.js");require("./MenuContext.cjs.js");require("./WebsocketContext.cjs.js");require("./GlobalContext.cjs.js");require("./ProjectContext.cjs.js");require("./UriContext.cjs.js");require("react-redux");require("custom-protocol-check");const v=require("../hooks/useQueryArgumentChangeLoading.cjs.js");require("../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");const C=r.createContext(void 0),I=({projectName:i,children:j})=>{const{data:{folders:t=[]}={},isLoading:m,isFetching:s,isSuccess:d,isUninitialized:c,error:a,refetch:l}=p.useGetFolderListQuery({projectName:i,attrib:!0}),g=v.useQueryArgumentChangeLoading({projectName:i},s||m),o=r.useMemo(()=>{const e=new Map;for(const u of t)e.set(u.id,u);return e},[t]),x=r.useMemo(()=>e=>o.get(e),[o]),F=r.useMemo(()=>e=>{const u=[],P=new Set;let q=e;for(;q&&!P.has(q);){P.add(q);const n=o.get(q);if(!n?.parentId)break;u.push(n.parentId),q=n.parentId}return u},[o]),f=r.useMemo(()=>({folders:t,getFolderById:x,getParentFolderIds:F,isLoading:g,isFetching:s,isSuccess:d,isUninitialized:c,error:a,refetch:l}),[t,x,F,g,s,d,c,a,l]);return h.jsxRuntimeExports.jsx(C.Provider,{value:f,children:j})},M=()=>{const i=r.useContext(C);if(i===void 0)throw new Error("useProjectFoldersContext must be used within a ProjectFoldersContextProvider");return i};exports.ProjectFoldersContextProvider=I;exports.useProjectFoldersContext=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=require("../../../_virtual/jsx-runtime.cjs.js"),u=require("react");require("../api/base/client.cjs.js");require("../api/generated/graphql.cjs.js");require("../api/generated/graphqlLinks.cjs.js");require("../api/generated/access.cjs.js");require("../api/generated/actions.cjs.js");require("../api/generated/activityFeed.cjs.js");require("../api/generated/addons.cjs.js");require("../api/generated/anatomy.cjs.js");require("../api/generated/attributes.cjs.js");require("../api/generated/authentication.cjs.js");require("../api/generated/bundles.cjs.js");require("../api/generated/configuration.cjs.js");require("../api/generated/desktop.cjs.js");require("../api/generated/entityLists.cjs.js");require("../api/generated/events.cjs.js");require("../api/generated/files.cjs.js");require("../api/generated/folders.cjs.js");require("../api/generated/inbox.cjs.js");require("../api/generated/links.cjs.js");require("../api/generated/market.cjs.js");require("../api/generated/onboarding.cjs.js");require("../api/generated/operations.cjs.js");require("../api/generated/products.cjs.js");require("../api/generated/projectDashboard.cjs.js");require("../api/generated/projects.cjs.js");require("../api/generated/reviewables.cjs.js");require("../api/generated/services.cjs.js");require("../api/generated/system.cjs.js");require("../api/generated/tasks.cjs.js");require("../api/generated/teams.cjs.js");require("../api/generated/thumbnails.cjs.js");require("../api/generated/uRIs.cjs.js");require("../api/generated/users.cjs.js");require("../api/generated/versions.cjs.js");require("../api/generated/workfiles.cjs.js");require("../api/generated/ynputCloud.cjs.js");require("../api/generated/grouping.cjs.js");require("../api/generated/views.cjs.js");require("../api/queries/actions/getActions.cjs.js");require("../api/queries/activities/getActivities.cjs.js");require("../api/queries/activities/updateActivities.cjs.js");require("../api/queries/activities/updateReaction.cjs.js");require("../api/queries/activities/getMentions.cjs.js");require("../api/queries/activities/getCategories.cjs.js");require("../api/queries/addons/getAddons.cjs.js");require("../api/queries/addons/updateAddons.cjs.js");require("../api/queries/attributes/getAttributes.cjs.js");require("../api/queries/attributes/updateAttributes.cjs.js");require("../api/queries/authentication/getAuthentication.cjs.js");require("../api/queries/cloud/cloud.cjs.js");require("../api/queries/config/getConfig.cjs.js");require("../api/queries/config/updateConfig.cjs.js");require("../api/queries/entities/getEntity.cjs.js");require("../api/queries/entities/getEntityPanel.cjs.js");require("../api/queries/entities/updateEntity.cjs.js");require("../api/queries/entityLists/getLists.cjs.js");require("../api/queries/entityLists/updateLists.cjs.js");require("../api/queries/entityLists/getListsAttributes.cjs.js");require("../api/queries/entityLists/updateListsAttributes.cjs.js");require("../api/queries/entityLists/listFolders.cjs.js");const v=require("../api/queries/folders/getFolders.cjs.js");require("../api/queries/grouping/getGrouping.cjs.js");require("../api/queries/links/updateLinks.cjs.js");require("../api/queries/links/getLinks.cjs.js");require("../api/queries/links/getEntityLinks.cjs.js");require("../api/queries/overview/getOverview.cjs.js");require("../api/queries/overview/updateOverview.cjs.js");require("../api/queries/versions/getVersionsProducts.cjs.js");require("../api/queries/permissions/getPermissions.cjs.js");require("../api/queries/products/createProduct.cjs.js");require("../api/queries/project/getProject.cjs.js");require("../api/queries/project/updateProject.cjs.js");require("../api/queries/review/getReview.cjs.js");require("../api/queries/review/updateReview.cjs.js");require("../api/queries/share/share.cjs.js");require("../api/queries/system/getSystem.cjs.js");require("../api/queries/userDashboard/getUserDashboard.cjs.js");require("../api/queries/users/getUsers.cjs.js");require("../api/queries/users/updateUsers.cjs.js");require("../api/queries/users/guests.cjs.js");require("../api/queries/versions/updateVersions.cjs.js");require("../api/queries/views/getViews.cjs.js");require("../api/queries/views/updateViews.cjs.js");require("../api/queries/watchers/getWatchers.cjs.js");require("../api/queries/uris/getUris.cjs.js");require("./RemoteModulesContext.cjs.js");require("../../../_virtual/runtime.cjs.js");require("../../../_virtual/semver.cjs.js");require("lodash");require("react-toastify");require("./DetailsPanelContext.cjs.js");require("./ThumbnailUploaderContext.cjs.js");require("./SettingsPanelContext.cjs.js");require("./pip/PiPProvider.cjs.js");require("react-dom");require("./pip/PiPWrapper.cjs.js");require("./AddonProjectContext.cjs.js");require("./AddonContext.cjs.js");require("./PowerpackContext.cjs.js");require("./MoveEntityContext.cjs.js");require("./MenuContext.cjs.js");require("./WebsocketContext.cjs.js");require("./GlobalContext.cjs.js");require("./ProjectContext.cjs.js");require("./UriContext.cjs.js");require("react-redux");require("custom-protocol-check");const M=require("../hooks/useQueryArgumentChangeLoading.cjs.js");require("../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");const p=u.createContext(void 0),w=({projectName:t,children:C})=>{const{data:{folders:q=[]}={},isLoading:m,isFetching:d,isSuccess:a,isUninitialized:l,error:g,refetch:h}=v.useGetFolderListQuery({projectName:t,attrib:!0}),F=M.useQueryArgumentChangeLoading({projectName:t},d||m),n=u.useMemo(()=>{const e=new Map;for(const i of q)e.set(i.id,i);return e},[q]),f=u.useMemo(()=>e=>n.get(e),[n]),x=u.useMemo(()=>e=>{const i=[],o=new Set;let r=e;for(;r&&!o.has(r);){o.add(r);const s=n.get(r);if(!s?.parentId)break;i.push(s.parentId),r=s.parentId}return i},[n]),P=u.useMemo(()=>(e,i=!1)=>{const o=i?[...e]:[],r=[...e];for(;r.length>0;){const s=r.shift();for(const c of q)c.parentId===s&&(o.push(c.id),r.push(c.id))}return o},[q]),j=u.useMemo(()=>({folders:q,getFolderById:f,getParentFolderIds:x,getChildFolderIds:P,isLoading:F,isFetching:d,isSuccess:a,isUninitialized:l,error:g,refetch:h}),[q,f,x,P,F,d,a,l,g,h]);return I.jsxRuntimeExports.jsx(p.Provider,{value:j,children:C})},y=()=>{const t=u.useContext(p);if(t===void 0)throw new Error("useProjectFoldersContext must be used within a ProjectFoldersContextProvider");return t};exports.ProjectFoldersContextProvider=w;exports.useProjectFoldersContext=y;
2
2
  //# sourceMappingURL=ProjectFoldersContext.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectFoldersContext.cjs.js","sources":["../../../../src/context/ProjectFoldersContext.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from 'react'\nimport { useGetFolderListQuery } from '@shared/api'\n\nimport type { FolderListItem } from '@shared/api'\nimport { useQueryArgumentChangeLoading } from '@shared/hooks'\n\nexport interface ProjectFoldersContextValue {\n folders: FolderListItem[]\n getFolderById: (id: string) => FolderListItem | undefined\n getParentFolderIds: (folderId: string) => string[]\n isLoading: boolean\n isFetching: boolean\n isSuccess: boolean\n isUninitialized: boolean\n error: any\n refetch: () => void\n}\n\nconst ProjectFoldersContext = createContext<ProjectFoldersContextValue | undefined>(undefined)\n\n//\n// ProjectFoldersProvider\n//\n\ninterface ProjectFoldersProviderProps {\n projectName: string\n children: React.ReactNode\n}\n\nexport const ProjectFoldersContextProvider: React.FC<ProjectFoldersProviderProps> = ({\n projectName,\n children,\n}: ProjectFoldersProviderProps) => {\n // FOLDERS LIST\n const {\n data: { folders = [] } = {},\n isLoading,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n } = useGetFolderListQuery({ projectName, attrib: true })\n\n // only show loading when args change or on first load\n const isLoadingFolders = useQueryArgumentChangeLoading({ projectName }, isFetching || isLoading)\n\n // Create folder map for efficient O(1) lookups\n const folderMap = useMemo(() => {\n const map = new Map<string, FolderListItem>()\n for (const folder of folders) {\n map.set(folder.id, folder)\n }\n return map\n }, [folders])\n\n // Function to get folder by ID\n const getFolderById = useMemo(() => (id: string) => folderMap.get(id), [folderMap])\n\n // Function to get all parent folder IDs by crawling up the hierarchy\n const getParentFolderIds = useMemo(\n () =>\n (folderId: string): string[] => {\n const parentIds: string[] = []\n const visited = new Set<string>()\n let currentId: string | undefined = folderId\n\n while (currentId && !visited.has(currentId)) {\n visited.add(currentId)\n const currentFolder = folderMap.get(currentId)\n if (!currentFolder?.parentId) break\n parentIds.push(currentFolder.parentId)\n currentId = currentFolder.parentId\n }\n\n return parentIds\n },\n [folderMap],\n )\n\n const value = useMemo(\n () => ({\n folders: folders,\n getFolderById,\n getParentFolderIds,\n isLoading: isLoadingFolders, // first time and when args change\n isFetching, // any background fetching\n isSuccess,\n isUninitialized,\n error,\n refetch,\n }),\n [\n folders,\n getFolderById,\n getParentFolderIds,\n isLoadingFolders,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n ],\n )\n\n return <ProjectFoldersContext.Provider value={value}>{children}</ProjectFoldersContext.Provider>\n}\n\nexport const useProjectFoldersContext = () => {\n const context = useContext(ProjectFoldersContext)\n if (context === undefined) {\n throw new Error('useProjectFoldersContext must be used within a ProjectFoldersContextProvider')\n }\n return context\n}\n"],"names":["ProjectFoldersContext","createContext","ProjectFoldersContextProvider","projectName","children","folders","isLoading","isFetching","isSuccess","isUninitialized","error","refetch","useGetFolderListQuery","isLoadingFolders","useQueryArgumentChangeLoading","folderMap","useMemo","map","folder","getFolderById","id","getParentFolderIds","folderId","parentIds","visited","currentId","currentFolder","value","jsx","useProjectFoldersContext","context","useContext"],"mappings":"srKAkBA,MAAMA,EAAwBC,EAAAA,cAAsD,MAAS,EAWhFC,EAAuE,CAAC,CACnF,YAAAC,EACA,SAAAC,CACF,IAAmC,CAEjC,KAAM,CACJ,KAAM,CAAE,QAAAC,EAAU,CAAA,CAAC,EAAM,CAAA,EACzB,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,MAAAC,EACA,QAAAC,CAAA,EACEC,EAAAA,sBAAsB,CAAE,YAAAT,EAAa,OAAQ,GAAM,EAGjDU,EAAmBC,EAAAA,8BAA8B,CAAE,YAAAX,CAAA,EAAeI,GAAcD,CAAS,EAGzFS,EAAYC,EAAAA,QAAQ,IAAM,CAC9B,MAAMC,MAAU,IAChB,UAAWC,KAAUb,EACnBY,EAAI,IAAIC,EAAO,GAAIA,CAAM,EAE3B,OAAOD,CACT,EAAG,CAACZ,CAAO,CAAC,EAGNc,EAAgBH,UAAQ,IAAOI,GAAeL,EAAU,IAAIK,CAAE,EAAG,CAACL,CAAS,CAAC,EAG5EM,EAAqBL,EAAAA,QACzB,IACGM,GAA+B,CAC9B,MAAMC,EAAsB,CAAA,EACtBC,MAAc,IACpB,IAAIC,EAAgCH,EAEpC,KAAOG,GAAa,CAACD,EAAQ,IAAIC,CAAS,GAAG,CAC3CD,EAAQ,IAAIC,CAAS,EACrB,MAAMC,EAAgBX,EAAU,IAAIU,CAAS,EAC7C,GAAI,CAACC,GAAe,SAAU,MAC9BH,EAAU,KAAKG,EAAc,QAAQ,EACrCD,EAAYC,EAAc,QAC5B,CAEA,OAAOH,CACT,EACF,CAACR,CAAS,CAAA,EAGNY,EAAQX,EAAAA,QACZ,KAAO,CACL,QAAAX,EACA,cAAAc,EACA,mBAAAE,EACA,UAAWR,EACX,WAAAN,EACA,UAAAC,EACA,gBAAAC,EACA,MAAAC,EACA,QAAAC,CAAA,GAEF,CACEN,EACAc,EACAE,EACAR,EACAN,EACAC,EACAC,EACAC,EACAC,CAAA,CACF,EAGF,OAAOiB,EAAAA,kBAAAA,IAAC5B,EAAsB,SAAtB,CAA+B,MAAA2B,EAAe,SAAAvB,CAAA,CAAS,CACjE,EAEayB,EAA2B,IAAM,CAC5C,MAAMC,EAAUC,EAAAA,WAAW/B,CAAqB,EAChD,GAAI8B,IAAY,OACd,MAAM,IAAI,MAAM,8EAA8E,EAEhG,OAAOA,CACT"}
1
+ {"version":3,"file":"ProjectFoldersContext.cjs.js","sources":["../../../../src/context/ProjectFoldersContext.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from 'react'\nimport { useGetFolderListQuery } from '@shared/api'\n\nimport type { FolderListItem } from '@shared/api'\nimport { useQueryArgumentChangeLoading } from '@shared/hooks'\n\nexport interface ProjectFoldersContextValue {\n folders: FolderListItem[]\n getFolderById: (id: string) => FolderListItem | undefined\n getParentFolderIds: (folderId: string) => string[]\n getChildFolderIds: (folderIds: string[], includeSelf?: boolean) => string[]\n isLoading: boolean\n isFetching: boolean\n isSuccess: boolean\n isUninitialized: boolean\n error: any\n refetch: () => void\n}\n\nconst ProjectFoldersContext = createContext<ProjectFoldersContextValue | undefined>(undefined)\n\n//\n// ProjectFoldersProvider\n//\n\ninterface ProjectFoldersProviderProps {\n projectName: string\n children: React.ReactNode\n}\n\nexport const ProjectFoldersContextProvider: React.FC<ProjectFoldersProviderProps> = ({\n projectName,\n children,\n}: ProjectFoldersProviderProps) => {\n // FOLDERS LIST\n const {\n data: { folders = [] } = {},\n isLoading,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n } = useGetFolderListQuery({ projectName, attrib: true })\n\n // only show loading when args change or on first load\n const isLoadingFolders = useQueryArgumentChangeLoading({ projectName }, isFetching || isLoading)\n\n // Create folder map for efficient O(1) lookups\n const folderMap = useMemo(() => {\n const map = new Map<string, FolderListItem>()\n for (const folder of folders) {\n map.set(folder.id, folder)\n }\n return map\n }, [folders])\n\n // Function to get folder by ID\n const getFolderById = useMemo(() => (id: string) => folderMap.get(id), [folderMap])\n\n // Function to get all parent folder IDs by crawling up the hierarchy\n const getParentFolderIds = useMemo(\n () =>\n (folderId: string): string[] => {\n const parentIds: string[] = []\n const visited = new Set<string>()\n let currentId: string | undefined = folderId\n\n while (currentId && !visited.has(currentId)) {\n visited.add(currentId)\n const currentFolder = folderMap.get(currentId)\n if (!currentFolder?.parentId) break\n parentIds.push(currentFolder.parentId)\n currentId = currentFolder.parentId\n }\n\n return parentIds\n },\n [folderMap],\n )\n\n // function to get all child folder IDs recursively for a given folder IDs\n const getChildFolderIds = useMemo(\n () =>\n (folderIds: string[], includeSelf = false): string[] => {\n const childIds: string[] = includeSelf ? [...folderIds] : []\n const queue: string[] = [...folderIds]\n\n while (queue.length > 0) {\n const currentId = queue.shift()!\n for (const folder of folders) {\n if (folder.parentId === currentId) {\n childIds.push(folder.id)\n queue.push(folder.id)\n }\n }\n }\n\n return childIds\n },\n [folders],\n )\n\n const value = useMemo(\n () => ({\n folders: folders,\n getFolderById,\n getParentFolderIds,\n getChildFolderIds,\n isLoading: isLoadingFolders, // first time and when args change\n isFetching, // any background fetching\n isSuccess,\n isUninitialized,\n error,\n refetch,\n }),\n [\n folders,\n getFolderById,\n getParentFolderIds,\n getChildFolderIds,\n isLoadingFolders,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n ],\n )\n\n return <ProjectFoldersContext.Provider value={value}>{children}</ProjectFoldersContext.Provider>\n}\n\nexport const useProjectFoldersContext = () => {\n const context = useContext(ProjectFoldersContext)\n if (context === undefined) {\n throw new Error('useProjectFoldersContext must be used within a ProjectFoldersContextProvider')\n }\n return context\n}\n"],"names":["ProjectFoldersContext","createContext","ProjectFoldersContextProvider","projectName","children","folders","isLoading","isFetching","isSuccess","isUninitialized","error","refetch","useGetFolderListQuery","isLoadingFolders","useQueryArgumentChangeLoading","folderMap","useMemo","map","folder","getFolderById","id","getParentFolderIds","folderId","parentIds","visited","currentId","currentFolder","getChildFolderIds","folderIds","includeSelf","childIds","queue","value","jsx","useProjectFoldersContext","context","useContext"],"mappings":"srKAmBA,MAAMA,EAAwBC,EAAAA,cAAsD,MAAS,EAWhFC,EAAuE,CAAC,CACnF,YAAAC,EACA,SAAAC,CACF,IAAmC,CAEjC,KAAM,CACJ,KAAM,CAAE,QAAAC,EAAU,CAAA,CAAC,EAAM,CAAA,EACzB,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,MAAAC,EACA,QAAAC,CAAA,EACEC,EAAAA,sBAAsB,CAAE,YAAAT,EAAa,OAAQ,GAAM,EAGjDU,EAAmBC,EAAAA,8BAA8B,CAAE,YAAAX,CAAA,EAAeI,GAAcD,CAAS,EAGzFS,EAAYC,EAAAA,QAAQ,IAAM,CAC9B,MAAMC,MAAU,IAChB,UAAWC,KAAUb,EACnBY,EAAI,IAAIC,EAAO,GAAIA,CAAM,EAE3B,OAAOD,CACT,EAAG,CAACZ,CAAO,CAAC,EAGNc,EAAgBH,UAAQ,IAAOI,GAAeL,EAAU,IAAIK,CAAE,EAAG,CAACL,CAAS,CAAC,EAG5EM,EAAqBL,EAAAA,QACzB,IACGM,GAA+B,CAC9B,MAAMC,EAAsB,CAAA,EACtBC,MAAc,IACpB,IAAIC,EAAgCH,EAEpC,KAAOG,GAAa,CAACD,EAAQ,IAAIC,CAAS,GAAG,CAC3CD,EAAQ,IAAIC,CAAS,EACrB,MAAMC,EAAgBX,EAAU,IAAIU,CAAS,EAC7C,GAAI,CAACC,GAAe,SAAU,MAC9BH,EAAU,KAAKG,EAAc,QAAQ,EACrCD,EAAYC,EAAc,QAC5B,CAEA,OAAOH,CACT,EACF,CAACR,CAAS,CAAA,EAINY,EAAoBX,EAAAA,QACxB,IACE,CAACY,EAAqBC,EAAc,KAAoB,CACtD,MAAMC,EAAqBD,EAAc,CAAC,GAAGD,CAAS,EAAI,CAAA,EACpDG,EAAkB,CAAC,GAAGH,CAAS,EAErC,KAAOG,EAAM,OAAS,GAAG,CACvB,MAAMN,EAAYM,EAAM,MAAA,EACxB,UAAWb,KAAUb,EACfa,EAAO,WAAaO,IACtBK,EAAS,KAAKZ,EAAO,EAAE,EACvBa,EAAM,KAAKb,EAAO,EAAE,EAG1B,CAEA,OAAOY,CACT,EACF,CAACzB,CAAO,CAAA,EAGJ2B,EAAQhB,EAAAA,QACZ,KAAO,CACL,QAAAX,EACA,cAAAc,EACA,mBAAAE,EACA,kBAAAM,EACA,UAAWd,EACX,WAAAN,EACA,UAAAC,EACA,gBAAAC,EACA,MAAAC,EACA,QAAAC,CAAA,GAEF,CACEN,EACAc,EACAE,EACAM,EACAd,EACAN,EACAC,EACAC,EACAC,EACAC,CAAA,CACF,EAGF,OAAOsB,EAAAA,kBAAAA,IAACjC,EAAsB,SAAtB,CAA+B,MAAAgC,EAAe,SAAA5B,CAAA,CAAS,CACjE,EAEa8B,EAA2B,IAAM,CAC5C,MAAMC,EAAUC,EAAAA,WAAWpC,CAAqB,EAChD,GAAImC,IAAY,OACd,MAAM,IAAI,MAAM,8EAA8E,EAEhG,OAAOA,CACT"}