@ynput/ayon-frontend-shared 0.2.3 → 0.2.4

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 (874) hide show
  1. package/dist/ContextMenu.cjs.js +1 -0
  2. package/dist/ContextMenu.cjs.js.map +1 -1
  3. package/dist/ContextMenu.es.js +1 -0
  4. package/dist/ContextMenu.es.js.map +1 -1
  5. package/dist/DetailsPanel.cjs.js +23 -1
  6. package/dist/DetailsPanel.cjs.js.map +1 -1
  7. package/dist/DetailsPanel.es.js +23 -1
  8. package/dist/DetailsPanel.es.js.map +1 -1
  9. package/dist/ProjectTreeTable.cjs.js +12 -1
  10. package/dist/ProjectTreeTable.cjs.js.map +1 -1
  11. package/dist/ProjectTreeTable.es.js +14 -3
  12. package/dist/ProjectTreeTable.es.js.map +1 -1
  13. package/dist/_virtual/_commonjsHelpers.cjs.js +0 -2
  14. package/dist/_virtual/_commonjsHelpers.cjs.js.map +1 -1
  15. package/dist/_virtual/_commonjsHelpers.es.js +0 -2
  16. package/dist/_virtual/_commonjsHelpers.es.js.map +1 -1
  17. package/dist/_virtual/index.cjs10.js +3 -5
  18. package/dist/_virtual/index.cjs10.js.map +1 -1
  19. package/dist/_virtual/index.cjs4.js +4 -4
  20. package/dist/_virtual/index.cjs5.js +3 -5
  21. package/dist/_virtual/index.cjs5.js.map +1 -1
  22. package/dist/_virtual/index.cjs6.js +5 -3
  23. package/dist/_virtual/index.cjs6.js.map +1 -1
  24. package/dist/_virtual/index.cjs7.js +5 -3
  25. package/dist/_virtual/index.cjs7.js.map +1 -1
  26. package/dist/_virtual/index.cjs8.js +4 -4
  27. package/dist/_virtual/index.cjs9.js +4 -4
  28. package/dist/_virtual/index.es10.js +2 -5
  29. package/dist/_virtual/index.es10.js.map +1 -1
  30. package/dist/_virtual/index.es4.js +4 -4
  31. package/dist/_virtual/index.es5.js +2 -5
  32. package/dist/_virtual/index.es5.js.map +1 -1
  33. package/dist/_virtual/index.es6.js +5 -2
  34. package/dist/_virtual/index.es6.js.map +1 -1
  35. package/dist/_virtual/index.es7.js +5 -2
  36. package/dist/_virtual/index.es7.js.map +1 -1
  37. package/dist/_virtual/index.es8.js +4 -4
  38. package/dist/_virtual/index.es9.js +4 -4
  39. package/dist/api.cjs.js +24 -1
  40. package/dist/api.cjs.js.map +1 -1
  41. package/dist/api.es.js +26 -3
  42. package/dist/api.es.js.map +1 -1
  43. package/dist/components.cjs.js +12 -0
  44. package/dist/components.cjs.js.map +1 -1
  45. package/dist/components.es.js +12 -0
  46. package/dist/components.es.js.map +1 -1
  47. package/dist/context.cjs.js +3 -0
  48. package/dist/context.cjs.js.map +1 -1
  49. package/dist/context.es.js +3 -0
  50. package/dist/context.es.js.map +1 -1
  51. package/dist/index.cjs.js +24 -2
  52. package/dist/index.cjs.js.map +1 -1
  53. package/dist/index.es.js +24 -2
  54. package/dist/index.es.js.map +1 -1
  55. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  56. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  57. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  58. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  59. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +2 -2
  60. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  61. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  62. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  63. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  64. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  65. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  66. package/dist/node_modules/remove-accents/index.es.js +1 -1
  67. package/dist/node_modules/vfile/lib/index.cjs.js +1 -1
  68. package/dist/node_modules/vfile/lib/index.es.js +1 -1
  69. package/dist/shared/src/api/base/client.cjs.js +3 -0
  70. package/dist/shared/src/api/base/client.cjs.js.map +1 -1
  71. package/dist/shared/src/api/base/client.es.js +3 -0
  72. package/dist/shared/src/api/base/client.es.js.map +1 -1
  73. package/dist/shared/src/api/generated/graphql.cjs.js +130 -0
  74. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  75. package/dist/shared/src/api/generated/graphql.es.js +130 -0
  76. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  77. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  78. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +1 -1
  79. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +8 -4
  80. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  81. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +9 -5
  82. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  83. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +4 -0
  84. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  85. package/dist/shared/src/api/queries/entities/updateEntity.es.js +4 -0
  86. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  87. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +267 -0
  88. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -0
  89. package/dist/shared/src/api/queries/entityLists/getLists.es.js +267 -0
  90. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -0
  91. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js +51 -0
  92. package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js.map +1 -0
  93. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js +51 -0
  94. package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js.map +1 -0
  95. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +169 -0
  96. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -0
  97. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +169 -0
  98. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -0
  99. package/dist/shared/src/api/queries/entityLists/updateListsAttributes.cjs.js +29 -0
  100. package/dist/shared/src/api/queries/entityLists/updateListsAttributes.cjs.js.map +1 -0
  101. package/dist/shared/src/api/queries/entityLists/updateListsAttributes.es.js +29 -0
  102. package/dist/shared/src/api/queries/entityLists/updateListsAttributes.es.js.map +1 -0
  103. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +3 -4
  104. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  105. package/dist/shared/src/api/queries/overview/getOverview.es.js +3 -4
  106. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  107. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +40 -5
  108. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  109. package/dist/shared/src/api/queries/overview/updateOverview.es.js +40 -5
  110. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  111. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  112. package/dist/shared/src/api/queries/review/getReview.es.js +1 -1
  113. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  114. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +1 -1
  115. package/dist/shared/src/api/queries/users/getUsers.cjs.js +6 -2
  116. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  117. package/dist/shared/src/api/queries/users/getUsers.es.js +7 -3
  118. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  119. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +355 -0
  120. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -0
  121. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +355 -0
  122. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -0
  123. package/dist/shared/src/components/AttributeEditor/components/MinMaxField.cjs.js +93 -0
  124. package/dist/shared/src/components/AttributeEditor/components/MinMaxField.cjs.js.map +1 -0
  125. package/dist/shared/src/components/AttributeEditor/components/MinMaxField.es.js +93 -0
  126. package/dist/shared/src/components/AttributeEditor/components/MinMaxField.es.js.map +1 -0
  127. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +4 -0
  128. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  129. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +4 -0
  130. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  131. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +6 -2
  132. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  133. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +6 -2
  134. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  135. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +1 -1
  136. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +1 -1
  137. package/dist/shared/src/components/EmptyPlaceholder/EmptyPlaceholder.cjs.js +4 -2
  138. package/dist/shared/src/components/EmptyPlaceholder/EmptyPlaceholder.cjs.js.map +1 -1
  139. package/dist/shared/src/components/EmptyPlaceholder/EmptyPlaceholder.es.js +4 -2
  140. package/dist/shared/src/components/EmptyPlaceholder/EmptyPlaceholder.es.js.map +1 -1
  141. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +3 -1
  142. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  143. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +3 -1
  144. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  145. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js +23 -1
  146. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +1 -1
  147. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js +23 -1
  148. package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +1 -1
  149. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js +194 -0
  150. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js.map +1 -0
  151. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js +195 -0
  152. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js.map +1 -0
  153. package/dist/shared/src/components/EnumEditor/EnumEditor.cjs.js +128 -0
  154. package/dist/shared/src/components/EnumEditor/EnumEditor.cjs.js.map +1 -0
  155. package/dist/shared/src/components/EnumEditor/EnumEditor.es.js +128 -0
  156. package/dist/shared/src/components/EnumEditor/EnumEditor.es.js.map +1 -0
  157. package/dist/shared/src/components/EnumEditor/EnumEditor.styled.cjs.js +185 -0
  158. package/dist/shared/src/components/EnumEditor/EnumEditor.styled.cjs.js.map +1 -0
  159. package/dist/shared/src/components/EnumEditor/EnumEditor.styled.es.js +185 -0
  160. package/dist/shared/src/components/EnumEditor/EnumEditor.styled.es.js.map +1 -0
  161. package/dist/shared/src/components/EnumEditor/hooks/useDraggable.cjs.js +67 -0
  162. package/dist/shared/src/components/EnumEditor/hooks/useDraggable.cjs.js.map +1 -0
  163. package/dist/shared/src/components/EnumEditor/hooks/useDraggable.es.js +68 -0
  164. package/dist/shared/src/components/EnumEditor/hooks/useDraggable.es.js.map +1 -0
  165. package/dist/shared/src/components/EnumEditor/util/index.cjs.js +19 -0
  166. package/dist/shared/src/components/EnumEditor/util/index.cjs.js.map +1 -0
  167. package/dist/shared/src/components/EnumEditor/util/index.es.js +19 -0
  168. package/dist/shared/src/components/EnumEditor/util/index.es.js.map +1 -0
  169. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js +78 -0
  170. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js.map +1 -0
  171. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js +79 -0
  172. package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js.map +1 -0
  173. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +352 -0
  174. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -0
  175. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +353 -0
  176. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -0
  177. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +113 -0
  178. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -0
  179. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +113 -0
  180. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -0
  181. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js +52 -0
  182. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js.map +1 -0
  183. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js +53 -0
  184. package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js.map +1 -0
  185. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +4 -0
  186. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  187. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +4 -0
  188. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  189. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +23 -1
  190. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  191. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +23 -1
  192. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  193. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +23 -1
  194. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  195. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +23 -1
  196. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  197. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +23 -1
  198. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  199. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +23 -1
  200. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  201. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +103 -0
  202. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -0
  203. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +103 -0
  204. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -0
  205. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +83 -0
  206. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -0
  207. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +83 -0
  208. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -0
  209. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -0
  210. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  211. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +1 -0
  212. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  213. package/dist/shared/src/components/Watchers/Watchers.cjs.js +4 -0
  214. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  215. package/dist/shared/src/components/Watchers/Watchers.es.js +4 -0
  216. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  217. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +23 -1
  218. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +23 -1
  220. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  221. package/dist/shared/src/containers/Actions/Actions.cjs.js +6 -1
  222. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/Actions/Actions.es.js +6 -1
  224. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  225. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +2 -2
  226. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +2 -2
  228. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  229. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +23 -1
  230. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +23 -1
  232. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  233. package/dist/shared/src/containers/ContextMenu/ContextMenu.css +54 -19
  234. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js +11 -1
  235. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
  236. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js +11 -1
  237. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
  238. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +23 -1
  239. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  240. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +23 -1
  241. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  242. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +25 -1
  243. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  244. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +25 -1
  245. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  246. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +24 -2
  247. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  248. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +24 -2
  249. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  250. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +26 -4
  251. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  252. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +26 -4
  253. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  254. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +5 -0
  255. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  256. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +5 -0
  257. package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  258. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +1 -0
  259. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
  260. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +1 -0
  261. package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js.map +1 -1
  262. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  263. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +1 -1
  264. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +6 -2
  265. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  266. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +6 -2
  267. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  268. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -0
  269. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  270. package/dist/shared/src/containers/Feed/Feed.es.js +1 -0
  271. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  272. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js +2 -2
  273. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js.map +1 -1
  274. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js +2 -2
  275. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js.map +1 -1
  276. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  277. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +1 -1
  278. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -0
  279. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  280. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +1 -0
  281. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  282. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -0
  283. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  284. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +1 -0
  285. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  286. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -0
  287. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  288. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +1 -0
  289. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  290. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +2 -1
  291. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  292. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +2 -1
  293. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  294. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +5 -0
  295. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  296. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +5 -0
  297. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  298. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +7 -3
  299. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  300. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +7 -3
  301. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  302. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  303. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +1 -1
  304. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  305. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +1 -1
  306. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +198 -222
  307. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  308. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +201 -225
  309. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  310. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +1 -3
  311. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  312. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +1 -3
  313. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +361 -0
  315. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -0
  316. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +361 -0
  317. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -0
  318. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js +41 -20
  319. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js.map +1 -1
  320. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js +41 -20
  321. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js.map +1 -1
  322. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +29 -35
  323. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  324. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +31 -37
  325. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  326. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js +33 -4
  327. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
  328. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js +34 -5
  329. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
  330. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +17 -11
  331. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  332. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +17 -11
  333. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  334. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableQueriesContext.es.js.map +1 -1
  336. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
  337. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
  338. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.cjs.js +3 -3
  339. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.cjs.js.map +1 -1
  340. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.es.js +3 -3
  341. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.es.js.map +1 -1
  342. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +190 -146
  343. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +190 -146
  345. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  346. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +10 -3
  347. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  348. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +10 -3
  349. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  350. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js +15 -12
  351. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js +15 -12
  353. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js.map +1 -1
  354. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js +44 -0
  355. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -0
  356. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js +45 -0
  357. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -0
  358. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js +15 -7
  359. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js.map +1 -1
  360. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js +15 -7
  361. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js.map +1 -1
  362. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.cjs.js +27 -31
  363. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.cjs.js.map +1 -1
  364. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.es.js +27 -31
  365. package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.es.js.map +1 -1
  366. package/dist/shared/src/containers/ProjectTreeTable/hooks/{useUpdateOverview.cjs.js → useUpdateTableData.cjs.js} +48 -20
  367. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -0
  368. package/dist/shared/src/containers/ProjectTreeTable/hooks/{useUpdateOverview.es.js → useUpdateTableData.es.js} +48 -20
  369. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -0
  370. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +2 -0
  371. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  372. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +2 -0
  373. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  374. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js +25 -20
  375. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
  376. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js +25 -20
  377. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
  378. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.cjs.js +36 -0
  379. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.cjs.js.map +1 -0
  380. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.es.js +36 -0
  381. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.es.js.map +1 -0
  382. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +39 -0
  383. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -0
  384. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +39 -0
  385. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -0
  386. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js +1 -0
  387. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js.map +1 -1
  388. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js +1 -0
  389. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js.map +1 -1
  390. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js +57 -0
  391. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -0
  392. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js +58 -0
  393. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -0
  394. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +10 -0
  395. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  396. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +10 -0
  397. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  398. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  399. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  400. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +2 -1
  401. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  402. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +2 -1
  403. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  404. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +17 -2
  405. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  406. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +17 -2
  407. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  408. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +53 -0
  409. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -0
  410. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +53 -0
  411. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -0
  412. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +24 -2
  413. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  414. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +24 -2
  415. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  416. package/dist/shared/src/context/DetailsPanelContext.cjs.js +6 -1
  417. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  418. package/dist/shared/src/context/DetailsPanelContext.es.js +6 -1
  419. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  420. package/dist/shared/src/context/RemoteModulesContext.cjs.js +4 -0
  421. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  422. package/dist/shared/src/context/RemoteModulesContext.es.js +4 -0
  423. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  424. package/dist/shared/src/context/SettingsPanelContext.cjs.js +63 -0
  425. package/dist/shared/src/context/SettingsPanelContext.cjs.js.map +1 -0
  426. package/dist/shared/src/context/SettingsPanelContext.es.js +63 -0
  427. package/dist/shared/src/context/SettingsPanelContext.es.js.map +1 -0
  428. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +1 -0
  429. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
  430. package/dist/shared/src/context/ThumbnailUploaderContext.es.js +1 -0
  431. package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
  432. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +5 -0
  433. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  434. package/dist/shared/src/hooks/useEntityUpdate.es.js +5 -0
  435. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  436. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +6 -2
  437. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  438. package/dist/shared/src/hooks/useScopedStatuses.es.js +6 -2
  439. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  440. package/dist/shared/src/util/confirmDelete.cjs.js +3 -3
  441. package/dist/shared/src/util/confirmDelete.cjs.js.map +1 -1
  442. package/dist/shared/src/util/confirmDelete.es.js +3 -3
  443. package/dist/shared/src/util/confirmDelete.es.js.map +1 -1
  444. package/dist/shared/src/util/getAttributeIcon.cjs.js +48 -0
  445. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -0
  446. package/dist/shared/src/util/getAttributeIcon.es.js +48 -0
  447. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -0
  448. package/dist/shared/src/util/platform.cjs.js +7 -6
  449. package/dist/shared/src/util/platform.cjs.js.map +1 -1
  450. package/dist/shared/src/util/platform.es.js +7 -6
  451. package/dist/shared/src/util/platform.es.js.map +1 -1
  452. package/dist/types/Actions.d.ts +1 -1
  453. package/dist/types/ContextMenu.d.ts +1 -1
  454. package/dist/types/DetailsPanel.d.ts +1 -1
  455. package/dist/types/Feed.d.ts +1 -1
  456. package/dist/types/ProjectTreeTable.d.ts +1 -1
  457. package/dist/types/RepresentationsList.d.ts +1 -1
  458. package/dist/types/Slicer.d.ts +1 -1
  459. package/dist/types/api.d.ts +3 -3
  460. package/dist/types/components.d.ts +1 -1
  461. package/dist/types/context.d.ts +1 -1
  462. package/dist/types/hooks.d.ts +1 -1
  463. package/dist/types/index.d.ts +2 -2
  464. package/dist/types/shared/src/SimpleTable/SimpleTable.d.ts +43 -0
  465. package/dist/types/shared/src/SimpleTable/SimpleTable.styled.d.ts +10 -0
  466. package/dist/types/shared/src/SimpleTable/SimpleTableRowTemplate.d.ts +13 -0
  467. package/dist/types/shared/src/SimpleTable/context/SimpleTableContext.d.ts +23 -0
  468. package/dist/types/shared/src/SimpleTable/index.d.ts +5 -0
  469. package/dist/types/{api → shared/src/api}/generated/graphql.d.ts +255 -39
  470. package/dist/types/{api → shared/src/api}/queries/activities/getActivities.d.ts +16 -0
  471. package/dist/types/{api → shared/src/api}/queries/activities/updateActivities.d.ts +32 -0
  472. package/dist/types/{api → shared/src/api}/queries/entities/getEntity.d.ts +16 -0
  473. package/dist/types/{api → shared/src/api}/queries/entities/getEntityPanel.d.ts +16 -0
  474. package/dist/types/{api → shared/src/api}/queries/entities/updateEntity.d.ts +16 -0
  475. package/dist/types/shared/src/api/queries/entityLists/getLists.d.ts +3009 -0
  476. package/dist/types/shared/src/api/queries/entityLists/getListsAttributes.d.ts +148 -0
  477. package/dist/types/shared/src/api/queries/entityLists/index.d.ts +5 -0
  478. package/dist/types/shared/src/api/queries/entityLists/types.d.ts +71 -0
  479. package/dist/types/shared/src/api/queries/entityLists/updateLists.d.ts +1137 -0
  480. package/dist/types/shared/src/api/queries/entityLists/updateListsAttributes.d.ts +176 -0
  481. package/dist/types/{api → shared/src/api}/queries/index.d.ts +1 -0
  482. package/dist/types/{api → shared/src/api}/queries/overview/getOverview.d.ts +17 -1
  483. package/dist/types/{api → shared/src/api}/queries/overview/updateOverview.d.ts +2 -2
  484. package/dist/types/{api → shared/src/api}/queries/userDashboard/getUserDashboard.d.ts +16 -0
  485. package/dist/types/{api → shared/src/api}/queries/users/getUsers.d.ts +16 -0
  486. package/dist/types/shared/src/components/AttributeEditor/AttributeEditor.d.ts +18 -0
  487. package/dist/types/shared/src/components/AttributeEditor/components/MinMaxField.d.ts +14 -0
  488. package/dist/types/shared/src/components/AttributeEditor/components/index.d.ts +1 -0
  489. package/dist/types/shared/src/components/AttributeEditor/index.d.ts +1 -0
  490. package/dist/types/shared/src/components/EnumEditor/DraggableEnumEditorItem.d.ts +10 -0
  491. package/dist/types/shared/src/components/EnumEditor/EnumEditor.d.ts +22 -0
  492. package/dist/types/shared/src/components/EnumEditor/EnumEditor.styled.d.ts +23 -0
  493. package/dist/types/shared/src/components/EnumEditor/hooks/useDraggable.d.ts +17 -0
  494. package/dist/types/shared/src/components/EnumEditor/index.d.ts +1 -0
  495. package/dist/types/shared/src/components/EnumEditor/util/index.d.ts +1 -0
  496. package/dist/types/shared/src/components/ProjectTableSettings/ColumnItem.d.ts +14 -0
  497. package/dist/types/shared/src/components/ProjectTableSettings/ColumnsSettings.d.ts +9 -0
  498. package/dist/types/shared/src/components/ProjectTableSettings/ProjectTableSettings.d.ts +18 -0
  499. package/dist/types/shared/src/components/ProjectTableSettings/SortableColumnItem.d.ts +13 -0
  500. package/dist/types/shared/src/components/ProjectTableSettings/index.d.ts +1 -0
  501. package/dist/types/shared/src/components/SettingsPanel/SettingsPanel.d.ts +16 -0
  502. package/dist/types/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.d.ts +20 -0
  503. package/dist/types/shared/src/components/SettingsPanel/index.d.ts +2 -0
  504. package/dist/types/{components → shared/src/components}/index.d.ts +4 -0
  505. package/dist/types/{containers → shared/src/containers}/ContextMenu/ContextMenuItem.d.ts +3 -1
  506. package/dist/types/shared/src/containers/ProjectTreeTable/ProjectTreeTable.d.ts +39 -0
  507. package/dist/types/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +23 -0
  508. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/CellEditingContext.d.ts +3 -3
  509. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/ColumnSettingsContext.d.ts +6 -2
  510. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/ProjectTableContext.d.ts +41 -34
  511. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/ProjectTableQueriesContext.d.ts +3 -2
  512. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/clipboard/clipboardTypes.d.ts +4 -1
  513. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/clipboard/clipboardUtils.d.ts +2 -2
  514. package/dist/types/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +29 -0
  515. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/hooks/useFolderRelationships.d.ts +7 -7
  516. package/dist/types/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +6 -0
  517. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/hooks/useHistory.d.ts +5 -3
  518. package/dist/types/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.d.ts +17 -0
  519. package/dist/types/{containers/ProjectTreeTable/hooks/useUpdateOverview.d.ts → shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.d.ts} +12 -3
  520. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/index.d.ts +5 -1
  521. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/types/index.d.ts +4 -6
  522. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/types/table.d.ts +51 -12
  523. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/utils/cellUtils.d.ts +2 -3
  524. package/dist/types/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.d.ts +16 -0
  525. package/dist/types/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.d.ts +5 -0
  526. package/dist/types/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.d.ts +14 -0
  527. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/utils/index.d.ts +2 -0
  528. package/dist/types/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.d.ts +4 -0
  529. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/widgets/EntityNameWidget.d.ts +1 -1
  530. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/widgets/EnumWidget.d.ts +1 -1
  531. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/widgets/TextWidget.d.ts +2 -0
  532. package/dist/types/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.d.ts +9 -0
  533. package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/widgets/index.d.ts +1 -0
  534. package/dist/types/shared/src/context/SettingsPanelContext.d.ts +20 -0
  535. package/dist/types/{context → shared/src/context}/index.d.ts +1 -0
  536. package/dist/types/shared/src/index.d.ts +2 -0
  537. package/dist/types/shared/src/util/getAttributeIcon.d.ts +4 -0
  538. package/dist/types/{util → shared/src/util}/index.d.ts +1 -0
  539. package/dist/types/util.d.ts +1 -1
  540. package/dist/util.cjs.js +2 -0
  541. package/dist/util.cjs.js.map +1 -1
  542. package/dist/util.es.js +2 -0
  543. package/dist/util.es.js.map +1 -1
  544. package/package.json +2 -1
  545. package/dist/_virtual/lodash.cjs.js +0 -6
  546. package/dist/_virtual/lodash.cjs.js.map +0 -1
  547. package/dist/_virtual/lodash.cjs2.js +0 -5
  548. package/dist/_virtual/lodash.cjs2.js.map +0 -1
  549. package/dist/_virtual/lodash.es.js +0 -6
  550. package/dist/_virtual/lodash.es.js.map +0 -1
  551. package/dist/_virtual/lodash.es2.js +0 -5
  552. package/dist/_virtual/lodash.es2.js.map +0 -1
  553. package/dist/shared/node_modules/lodash/lodash.cjs.js +0 -5492
  554. package/dist/shared/node_modules/lodash/lodash.cjs.js.map +0 -1
  555. package/dist/shared/node_modules/lodash/lodash.es.js +0 -5492
  556. package/dist/shared/node_modules/lodash/lodash.es.js.map +0 -1
  557. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.cjs.js +0 -269
  558. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.cjs.js.map +0 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.es.js +0 -270
  560. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.es.js.map +0 -1
  561. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateOverview.cjs.js.map +0 -1
  562. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateOverview.es.js.map +0 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/hooks/useValidateUpdates.cjs.js +0 -69
  564. package/dist/shared/src/containers/ProjectTreeTable/hooks/useValidateUpdates.cjs.js.map +0 -1
  565. package/dist/shared/src/containers/ProjectTreeTable/hooks/useValidateUpdates.es.js +0 -70
  566. package/dist/shared/src/containers/ProjectTreeTable/hooks/useValidateUpdates.es.js.map +0 -1
  567. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +0 -26
  568. package/dist/types/containers/ProjectTreeTable/ProjectTreeTableColumns.d.ts +0 -16
  569. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +0 -10
  570. package/dist/types/containers/ProjectTreeTable/hooks/useOverviewTable.d.ts +0 -32
  571. package/dist/types/containers/ProjectTreeTable/hooks/useValidateUpdates.d.ts +0 -3
  572. package/dist/types/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.d.ts +0 -4
  573. /package/dist/types/{api → shared/src/api}/base/baseQueryTypes.d.ts +0 -0
  574. /package/dist/types/{api → shared/src/api}/base/client.d.ts +0 -0
  575. /package/dist/types/{api → shared/src/api}/base/index.d.ts +0 -0
  576. /package/dist/types/{api → shared/src/api}/generated/access.d.ts +0 -0
  577. /package/dist/types/{api → shared/src/api}/generated/actions.d.ts +0 -0
  578. /package/dist/types/{api → shared/src/api}/generated/activityFeed.d.ts +0 -0
  579. /package/dist/types/{api → shared/src/api}/generated/addons.d.ts +0 -0
  580. /package/dist/types/{api → shared/src/api}/generated/anatomy.d.ts +0 -0
  581. /package/dist/types/{api → shared/src/api}/generated/attributes.d.ts +0 -0
  582. /package/dist/types/{api → shared/src/api}/generated/authentication.d.ts +0 -0
  583. /package/dist/types/{api → shared/src/api}/generated/bundles.d.ts +0 -0
  584. /package/dist/types/{api → shared/src/api}/generated/configuration.d.ts +0 -0
  585. /package/dist/types/{api → shared/src/api}/generated/desktop.d.ts +0 -0
  586. /package/dist/types/{api → shared/src/api}/generated/entityLists.d.ts +0 -0
  587. /package/dist/types/{api → shared/src/api}/generated/events.d.ts +0 -0
  588. /package/dist/types/{api → shared/src/api}/generated/files.d.ts +0 -0
  589. /package/dist/types/{api → shared/src/api}/generated/folders.d.ts +0 -0
  590. /package/dist/types/{api → shared/src/api}/generated/inbox.d.ts +0 -0
  591. /package/dist/types/{api → shared/src/api}/generated/index.d.ts +0 -0
  592. /package/dist/types/{api → shared/src/api}/generated/links.d.ts +0 -0
  593. /package/dist/types/{api → shared/src/api}/generated/market.d.ts +0 -0
  594. /package/dist/types/{api → shared/src/api}/generated/onboarding.d.ts +0 -0
  595. /package/dist/types/{api → shared/src/api}/generated/operations.d.ts +0 -0
  596. /package/dist/types/{api → shared/src/api}/generated/products.d.ts +0 -0
  597. /package/dist/types/{api → shared/src/api}/generated/projectDashboard.d.ts +0 -0
  598. /package/dist/types/{api → shared/src/api}/generated/projects.d.ts +0 -0
  599. /package/dist/types/{api → shared/src/api}/generated/representations.d.ts +0 -0
  600. /package/dist/types/{api → shared/src/api}/generated/reviewables.d.ts +0 -0
  601. /package/dist/types/{api → shared/src/api}/generated/services.d.ts +0 -0
  602. /package/dist/types/{api → shared/src/api}/generated/system.d.ts +0 -0
  603. /package/dist/types/{api → shared/src/api}/generated/tasks.d.ts +0 -0
  604. /package/dist/types/{api → shared/src/api}/generated/teams.d.ts +0 -0
  605. /package/dist/types/{api → shared/src/api}/generated/thumbnails.d.ts +0 -0
  606. /package/dist/types/{api → shared/src/api}/generated/uRIs.d.ts +0 -0
  607. /package/dist/types/{api → shared/src/api}/generated/users.d.ts +0 -0
  608. /package/dist/types/{api → shared/src/api}/generated/versions.d.ts +0 -0
  609. /package/dist/types/{api → shared/src/api}/generated/workfiles.d.ts +0 -0
  610. /package/dist/types/{api → shared/src/api}/generated/ynputCloud.d.ts +0 -0
  611. /package/dist/types/{api → shared/src/api}/index.d.ts +0 -0
  612. /package/dist/types/{api → shared/src/api}/queries/actions/getActions.d.ts +0 -0
  613. /package/dist/types/{api → shared/src/api}/queries/actions/index.d.ts +0 -0
  614. /package/dist/types/{api → shared/src/api}/queries/activities/activityQueries.d.ts +0 -0
  615. /package/dist/types/{api → shared/src/api}/queries/activities/getMentions.d.ts +0 -0
  616. /package/dist/types/{api → shared/src/api}/queries/activities/index.d.ts +0 -0
  617. /package/dist/types/{api → shared/src/api}/queries/activities/types.d.ts +0 -0
  618. /package/dist/types/{api → shared/src/api}/queries/activities/updateReaction.d.ts +0 -0
  619. /package/dist/types/{api → shared/src/api}/queries/activities/util/activitiesHelpers.d.ts +0 -0
  620. /package/dist/types/{api → shared/src/api}/queries/addons/getAddons.d.ts +0 -0
  621. /package/dist/types/{api → shared/src/api}/queries/addons/index.d.ts +0 -0
  622. /package/dist/types/{api → shared/src/api}/queries/addons/updateAddons.d.ts +0 -0
  623. /package/dist/types/{api → shared/src/api}/queries/attributes/getAttributes.d.ts +0 -0
  624. /package/dist/types/{api → shared/src/api}/queries/attributes/index.d.ts +0 -0
  625. /package/dist/types/{api → shared/src/api}/queries/attributes/updateAttributes.d.ts +0 -0
  626. /package/dist/types/{api → shared/src/api}/queries/authentication/getAuthentication.d.ts +0 -0
  627. /package/dist/types/{api → shared/src/api}/queries/authentication/index.d.ts +0 -0
  628. /package/dist/types/{api → shared/src/api}/queries/entities/entityQueries.d.ts +0 -0
  629. /package/dist/types/{api → shared/src/api}/queries/entities/index.d.ts +0 -0
  630. /package/dist/types/{api → shared/src/api}/queries/entities/transformDetailsPanelData.d.ts +0 -0
  631. /package/dist/types/{api → shared/src/api}/queries/folders/getFolders.d.ts +0 -0
  632. /package/dist/types/{api → shared/src/api}/queries/folders/index.d.ts +0 -0
  633. /package/dist/types/{api → shared/src/api}/queries/overview/index.d.ts +0 -0
  634. /package/dist/types/{api → shared/src/api}/queries/project/ProjectTypes.d.ts +0 -0
  635. /package/dist/types/{api → shared/src/api}/queries/project/getProject.d.ts +0 -0
  636. /package/dist/types/{api → shared/src/api}/queries/project/index.d.ts +0 -0
  637. /package/dist/types/{api → shared/src/api}/queries/review/getReview.d.ts +0 -0
  638. /package/dist/types/{api → shared/src/api}/queries/review/index.d.ts +0 -0
  639. /package/dist/types/{api → shared/src/api}/queries/review/types.d.ts +0 -0
  640. /package/dist/types/{api → shared/src/api}/queries/review/updateReview.d.ts +0 -0
  641. /package/dist/types/{api → shared/src/api}/queries/system/getSystem.d.ts +0 -0
  642. /package/dist/types/{api → shared/src/api}/queries/system/index.d.ts +0 -0
  643. /package/dist/types/{api → shared/src/api}/queries/userDashboard/convertAccessGroupsData.d.ts +0 -0
  644. /package/dist/types/{api → shared/src/api}/queries/userDashboard/getUserProjectsAccess.d.ts +0 -0
  645. /package/dist/types/{api → shared/src/api}/queries/userDashboard/index.d.ts +0 -0
  646. /package/dist/types/{api → shared/src/api}/queries/users/index.d.ts +0 -0
  647. /package/dist/types/{api → shared/src/api}/queries/watchers/getWatchers.d.ts +0 -0
  648. /package/dist/types/{api → shared/src/api}/queries/watchers/index.d.ts +0 -0
  649. /package/dist/types/{components → shared/src/components}/DetailsDialog/DetailsDialog.d.ts +0 -0
  650. /package/dist/types/{components → shared/src/components}/DetailsDialog/index.d.ts +0 -0
  651. /package/dist/types/{components → shared/src/components}/DetailsPanelAttributes/DetailsPanelAttributes.d.ts +0 -0
  652. /package/dist/types/{components → shared/src/components}/DetailsPanelAttributes/DetailsPanelAttributesEditor.d.ts +0 -0
  653. /package/dist/types/{components → shared/src/components}/DetailsPanelAttributes/components/RenderFieldWidget.d.ts +0 -0
  654. /package/dist/types/{components → shared/src/components}/DetailsPanelAttributes/formatAttributesData.d.ts +0 -0
  655. /package/dist/types/{components → shared/src/components}/DetailsPanelAttributes/index.d.ts +0 -0
  656. /package/dist/types/{components → shared/src/components}/EmptyPlaceholder/EmptyPlaceholder.d.ts +0 -0
  657. /package/dist/types/{components → shared/src/components}/EmptyPlaceholder/EmptyPlaceholderFlex.styled.d.ts +0 -0
  658. /package/dist/types/{components → shared/src/components}/EmptyPlaceholder/index.d.ts +0 -0
  659. /package/dist/types/{components → shared/src/components}/EntityPath/EntityPath.d.ts +0 -0
  660. /package/dist/types/{components → shared/src/components}/EntityPath/EntityPath.styled.d.ts +0 -0
  661. /package/dist/types/{components → shared/src/components}/EntityPath/SegmentProvider.d.ts +0 -0
  662. /package/dist/types/{components → shared/src/components}/EntityPath/index.d.ts +0 -0
  663. /package/dist/types/{components → shared/src/components}/EntityThumbnailUploader/EntityThumbnailUploader.d.ts +0 -0
  664. /package/dist/types/{components → shared/src/components}/EntityThumbnailUploader/EntityThumbnailUploader.styled.d.ts +0 -0
  665. /package/dist/types/{components → shared/src/components}/EntityThumbnailUploader/index.d.ts +0 -0
  666. /package/dist/types/{components → shared/src/components}/FileThumbnail/FileThumbnail.d.ts +0 -0
  667. /package/dist/types/{components → shared/src/components}/FileThumbnail/index.d.ts +0 -0
  668. /package/dist/types/{components → shared/src/components}/ReviewableCard/ReviewableCard.d.ts +0 -0
  669. /package/dist/types/{components → shared/src/components}/ReviewableCard/ReviewableCard.styled.d.ts +0 -0
  670. /package/dist/types/{components → shared/src/components}/ReviewableCard/index.d.ts +0 -0
  671. /package/dist/types/{components → shared/src/components}/ReviewableProgressCard/ReviewableProgressCard.d.ts +0 -0
  672. /package/dist/types/{components → shared/src/components}/ReviewableProgressCard/ReviewableProgressCard.styled.d.ts +0 -0
  673. /package/dist/types/{components → shared/src/components}/ReviewableProgressCard/index.d.ts +0 -0
  674. /package/dist/types/{components → shared/src/components}/ReviewablesList/EditReviewableDialog.d.ts +0 -0
  675. /package/dist/types/{components → shared/src/components}/ReviewablesList/ReviewablesList.d.ts +0 -0
  676. /package/dist/types/{components → shared/src/components}/ReviewablesList/ReviewablesList.styled.d.ts +0 -0
  677. /package/dist/types/{components → shared/src/components}/ReviewablesList/ReviewablesUpload.d.ts +0 -0
  678. /package/dist/types/{components → shared/src/components}/ReviewablesList/ReviewablesUpload.styled.d.ts +0 -0
  679. /package/dist/types/{components → shared/src/components}/ReviewablesList/SortableReviewableCard.d.ts +0 -0
  680. /package/dist/types/{components → shared/src/components}/ReviewablesList/getGroupedReviewables.d.ts +0 -0
  681. /package/dist/types/{components → shared/src/components}/ReviewablesList/index.d.ts +0 -0
  682. /package/dist/types/{components → shared/src/components}/SimpleFormDialog/SimpleFormDialog.d.ts +0 -0
  683. /package/dist/types/{components → shared/src/components}/SimpleFormDialog/index.d.ts +0 -0
  684. /package/dist/types/{components → shared/src/components}/Thumbnail/StackedThumbnails.d.ts +0 -0
  685. /package/dist/types/{components → shared/src/components}/Thumbnail/Thumbnail.d.ts +0 -0
  686. /package/dist/types/{components → shared/src/components}/Thumbnail/Thumbnail.styled.d.ts +0 -0
  687. /package/dist/types/{components → shared/src/components}/Thumbnail/index.d.ts +0 -0
  688. /package/dist/types/{components → shared/src/components}/ThumbnailSimple/ThumbnailSimple.d.ts +0 -0
  689. /package/dist/types/{components → shared/src/components}/ThumbnailSimple/index.d.ts +0 -0
  690. /package/dist/types/{components → shared/src/components}/ThumbnailUploader/ThumbnailUploader.d.ts +0 -0
  691. /package/dist/types/{components → shared/src/components}/ThumbnailUploader/ThumbnailUploader.styled.d.ts +0 -0
  692. /package/dist/types/{components → shared/src/components}/ThumbnailUploader/index.d.ts +0 -0
  693. /package/dist/types/{components → shared/src/components}/UserImage/UserImage.d.ts +0 -0
  694. /package/dist/types/{components → shared/src/components}/UserImage/index.d.ts +0 -0
  695. /package/dist/types/{components → shared/src/components}/Watchers/Watchers.d.ts +0 -0
  696. /package/dist/types/{components → shared/src/components}/Watchers/index.d.ts +0 -0
  697. /package/dist/types/{containers → shared/src/containers}/Actions/ActionConfigDialog.d.ts +0 -0
  698. /package/dist/types/{containers → shared/src/containers}/Actions/ActionIcon.d.ts +0 -0
  699. /package/dist/types/{containers → shared/src/containers}/Actions/Actions.d.ts +0 -0
  700. /package/dist/types/{containers → shared/src/containers}/Actions/Actions.styled.d.ts +0 -0
  701. /package/dist/types/{containers → shared/src/containers}/Actions/ActionsDropdown/ActionsDropdown.d.ts +0 -0
  702. /package/dist/types/{containers → shared/src/containers}/Actions/ActionsDropdown/ActionsDropdown.styled.d.ts +0 -0
  703. /package/dist/types/{containers → shared/src/containers}/Actions/ActionsDropdown/index.d.ts +0 -0
  704. /package/dist/types/{containers → shared/src/containers}/Actions/InteractiveActionDialog.d.ts +0 -0
  705. /package/dist/types/{containers → shared/src/containers}/Actions/index.d.ts +0 -0
  706. /package/dist/types/{containers → shared/src/containers}/ContextMenu/ContextMenuContext.d.ts +0 -0
  707. /package/dist/types/{containers → shared/src/containers}/ContextMenu/GlobalContextMenu.d.ts +0 -0
  708. /package/dist/types/{containers → shared/src/containers}/ContextMenu/index.d.ts +0 -0
  709. /package/dist/types/{containers → shared/src/containers}/ContextMenu/useCreateContextMenu.d.ts +0 -0
  710. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanel.d.ts +0 -0
  711. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanel.styled.d.ts +0 -0
  712. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.d.ts +0 -0
  713. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelFiles/index.d.ts +0 -0
  714. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.d.ts +0 -0
  715. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.d.ts +0 -0
  716. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelFloating/index.d.ts +0 -0
  717. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.d.ts +0 -0
  718. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.d.ts +0 -0
  719. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelHeader/index.d.ts +0 -0
  720. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.d.ts +0 -0
  721. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.d.ts +0 -0
  722. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/DetailsPanelSlideOut/index.d.ts +0 -0
  723. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/FeedFilters/FeedFilters.d.ts +0 -0
  724. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/FeedFilters/FeedFilters.styled.d.ts +0 -0
  725. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/FeedWrapper.d.ts +0 -0
  726. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/helpers/buildDetailsPanelTitles.d.ts +0 -0
  727. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/helpers/getAllProjectsStatuses.d.ts +0 -0
  728. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/helpers/getEntityPathData.d.ts +0 -0
  729. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/helpers/getThumbnails.d.ts +0 -0
  730. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/helpers/mergeProjectInfo.d.ts +0 -0
  731. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/hooks/useGetEntityPath.d.ts +0 -0
  732. /package/dist/types/{containers → shared/src/containers}/DetailsPanel/index.d.ts +0 -0
  733. /package/dist/types/{containers → shared/src/containers}/Feed/Feed.d.ts +0 -0
  734. /package/dist/types/{containers → shared/src/containers}/Feed/Feed.styled.d.ts +0 -0
  735. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.d.ts +0 -0
  736. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.d.ts +0 -0
  737. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityAssigneeChange/index.d.ts +0 -0
  738. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityCheckbox/ActivityCheckbox.d.ts +0 -0
  739. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.d.ts +0 -0
  740. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityCheckbox/index.d.ts +0 -0
  741. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityComment/ActivityComment.d.ts +0 -0
  742. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityComment/ActivityComment.styled.d.ts +0 -0
  743. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityComment/ActivityMarkdownComponents.d.ts +0 -0
  744. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityComment/CommentWrapper.d.ts +0 -0
  745. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityComment/mappers.d.ts +0 -0
  746. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityDate.d.ts +0 -0
  747. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityGroup/ActivityGroup.d.ts +0 -0
  748. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityGroup/ActivityGroup.styled.d.ts +0 -0
  749. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityHeader/ActivityHeader.d.ts +0 -0
  750. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityHeader/ActivityHeader.styled.d.ts +0 -0
  751. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityItem.d.ts +0 -0
  752. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityReference/ActivityReference.d.ts +0 -0
  753. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityReference/ActivityReference.styled.d.ts +0 -0
  754. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityReferenceTooltip/ActivityReferenceTooltip.d.ts +0 -0
  755. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityReferenceTooltip/index.d.ts +0 -0
  756. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityStatus/ActivityStatus.d.ts +0 -0
  757. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityStatusChange/ActivityStatusChange.d.ts +0 -0
  758. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.d.ts +0 -0
  759. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityStatusChange/hooks/getContextParents.d.ts +0 -0
  760. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityVersions/ActivityVersions.d.ts +0 -0
  761. /package/dist/types/{containers → shared/src/containers}/Feed/components/ActivityVersions/ActivityVersions.styled.d.ts +0 -0
  762. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/CommentInput.d.ts +0 -0
  763. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/CommentInput.styled.d.ts +0 -0
  764. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/InputMarkdownConvert.d.ts +0 -0
  765. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/helpers.d.ts +0 -0
  766. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/hooks/useAnnotationsSync.d.ts +0 -0
  767. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/hooks/useAnnotationsUpload.d.ts +0 -0
  768. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/hooks/useInitialValue.d.ts +0 -0
  769. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/hooks/useMentionLink.d.ts +0 -0
  770. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/hooks/useSetCursorEnd.d.ts +0 -0
  771. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/index.d.ts +0 -0
  772. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/modules/ImageUploader.d.ts +0 -0
  773. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/modules/index.d.ts +0 -0
  774. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentInput/quillToMarkdown.d.ts +0 -0
  775. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentMentionSelect/CommentMentionSelect.d.ts +0 -0
  776. /package/dist/types/{containers → shared/src/containers}/Feed/components/CommentMentionSelect/CommentMentionSelect.styled.d.ts +0 -0
  777. /package/dist/types/{containers → shared/src/containers}/Feed/components/FileUploadCard/FileUploadCard.d.ts +0 -0
  778. /package/dist/types/{containers → shared/src/containers}/Feed/components/FileUploadCard/FileUploadCard.styled.d.ts +0 -0
  779. /package/dist/types/{containers → shared/src/containers}/Feed/components/FileUploadCard/index.d.ts +0 -0
  780. /package/dist/types/{containers → shared/src/containers}/Feed/components/FileUploadPreview/FileUploadPreview.d.ts +0 -0
  781. /package/dist/types/{containers → shared/src/containers}/Feed/components/FileUploadPreview/FileUploadPreview.styled.d.ts +0 -0
  782. /package/dist/types/{containers → shared/src/containers}/Feed/components/FileUploadPreview/Mimes/ImageMime.d.ts +0 -0
  783. /package/dist/types/{containers → shared/src/containers}/Feed/components/FileUploadPreview/Mimes/TextMime.d.ts +0 -0
  784. /package/dist/types/{containers → shared/src/containers}/Feed/components/FileUploadPreview/fileUtils.d.ts +0 -0
  785. /package/dist/types/{containers → shared/src/containers}/Feed/components/FileUploadPreview/hooks/useAttachmentNavigation.d.ts +0 -0
  786. /package/dist/types/{containers → shared/src/containers}/Feed/components/FileUploadPreview/index.d.ts +0 -0
  787. /package/dist/types/{containers → shared/src/containers}/Feed/components/FilesGrid/FilesGrid.d.ts +0 -0
  788. /package/dist/types/{containers → shared/src/containers}/Feed/components/FilesGrid/FilesGrid.styled.d.ts +0 -0
  789. /package/dist/types/{containers → shared/src/containers}/Feed/components/FilesGrid/index.d.ts +0 -0
  790. /package/dist/types/{containers → shared/src/containers}/Feed/components/ReactionContainer/ExistingReactions.d.ts +0 -0
  791. /package/dist/types/{containers → shared/src/containers}/Feed/components/ReactionContainer/Reaction.d.ts +0 -0
  792. /package/dist/types/{containers → shared/src/containers}/Feed/components/ReactionContainer/ReactionPanelOpener.d.ts +0 -0
  793. /package/dist/types/{containers → shared/src/containers}/Feed/components/ReactionContainer/Reactions.d.ts +0 -0
  794. /package/dist/types/{containers → shared/src/containers}/Feed/components/ReactionContainer/Reactions.styled.d.ts +0 -0
  795. /package/dist/types/{containers → shared/src/containers}/Feed/components/ReactionContainer/helpers.d.ts +0 -0
  796. /package/dist/types/{containers → shared/src/containers}/Feed/components/ReactionContainer/types.d.ts +0 -0
  797. /package/dist/types/{containers → shared/src/containers}/Feed/components/Tooltips/EntityTooltip/EntityTooltip.d.ts +0 -0
  798. /package/dist/types/{containers → shared/src/containers}/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.d.ts +0 -0
  799. /package/dist/types/{containers → shared/src/containers}/Feed/components/Tooltips/UserTooltip/UserTooltip.d.ts +0 -0
  800. /package/dist/types/{containers → shared/src/containers}/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.d.ts +0 -0
  801. /package/dist/types/{containers → shared/src/containers}/Feed/context/FeedContext.d.ts +0 -0
  802. /package/dist/types/{containers → shared/src/containers}/Feed/feedHelpers.d.ts +0 -0
  803. /package/dist/types/{containers → shared/src/containers}/Feed/helpers/groupActivityVersions.d.ts +0 -0
  804. /package/dist/types/{containers → shared/src/containers}/Feed/helpers/groupMinorActivities.d.ts +0 -0
  805. /package/dist/types/{containers → shared/src/containers}/Feed/helpers/mergeSimilarActivities.d.ts +0 -0
  806. /package/dist/types/{containers → shared/src/containers}/Feed/hooks/useCommentMutations.d.ts +0 -0
  807. /package/dist/types/{containers → shared/src/containers}/Feed/hooks/useGetFeedActivitiesData.d.ts +0 -0
  808. /package/dist/types/{containers → shared/src/containers}/Feed/hooks/useReferenceTooltip.d.ts +0 -0
  809. /package/dist/types/{containers → shared/src/containers}/Feed/hooks/useSaveScrollPos.d.ts +0 -0
  810. /package/dist/types/{containers → shared/src/containers}/Feed/hooks/useScrollOnInputOpen.d.ts +0 -0
  811. /package/dist/types/{containers → shared/src/containers}/Feed/hooks/useScrollToHighlighted.d.ts +0 -0
  812. /package/dist/types/{containers → shared/src/containers}/Feed/hooks/useTableKeyboardNavigation.d.ts +0 -0
  813. /package/dist/types/{containers → shared/src/containers}/Feed/hooks/useTransformActivities.d.ts +0 -0
  814. /package/dist/types/{containers → shared/src/containers}/Feed/index.d.ts +0 -0
  815. /package/dist/types/{containers → shared/src/containers}/Feed/mentionHelpers/getMentionOptions.d.ts +0 -0
  816. /package/dist/types/{containers → shared/src/containers}/Feed/mentionHelpers/getMentionTasks.d.ts +0 -0
  817. /package/dist/types/{containers → shared/src/containers}/Feed/mentionHelpers/getMentionUsers.d.ts +0 -0
  818. /package/dist/types/{containers → shared/src/containers}/Feed/mentionHelpers/getMentionVersions.d.ts +0 -0
  819. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/ProjectTreeTable.styled.d.ts +0 -0
  820. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/components/HeaderActionButton.d.ts +0 -0
  821. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/components/RowSelectionHeader.d.ts +0 -0
  822. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/components/SelectionCell.d.ts +0 -0
  823. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/ClipboardContext.d.ts +0 -0
  824. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/ProjectTableSelectionContext.d.ts +0 -0
  825. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/SelectedRowsContext.d.ts +0 -0
  826. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/SelectionCellsContext.d.ts +0 -0
  827. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/clipboard/clipboardValidation.d.ts +0 -0
  828. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/clipboard/index.d.ts +0 -0
  829. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/context/index.d.ts +0 -0
  830. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/hooks/useColumnVirtualization.d.ts +0 -0
  831. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/hooks/useCustomColumnWidthVars.d.ts +0 -0
  832. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/hooks/useDeleteEntities.d.ts +0 -0
  833. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/hooks/useKeyboardNavigation.d.ts +0 -0
  834. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/hooks/usePrefetchFolderTasks.d.ts +0 -0
  835. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/types/folders.d.ts +0 -0
  836. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/types/operations.d.ts +0 -0
  837. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/types/project.d.ts +0 -0
  838. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/utils/loadingUtils.d.ts +0 -0
  839. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/widgets/BooleanWidget.d.ts +0 -0
  840. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/widgets/CellWidget.d.ts +0 -0
  841. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/widgets/CollapsedWidget.d.ts +0 -0
  842. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/widgets/DateWidget.d.ts +0 -0
  843. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/widgets/DateWidgetInput.d.ts +0 -0
  844. /package/dist/types/{containers → shared/src/containers}/ProjectTreeTable/widgets/TextWidgetInput.d.ts +0 -0
  845. /package/dist/types/{containers → shared/src/containers}/RepresentationsList/RepresentationsList.d.ts +0 -0
  846. /package/dist/types/{containers → shared/src/containers}/RepresentationsList/index.d.ts +0 -0
  847. /package/dist/types/{containers → shared/src/containers}/RepresentationsList/versionsToRepresentations.d.ts +0 -0
  848. /package/dist/types/{containers → shared/src/containers}/Slicer/createFilterFromSlicer.d.ts +0 -0
  849. /package/dist/types/{containers → shared/src/containers}/Slicer/index.d.ts +0 -0
  850. /package/dist/types/{containers → shared/src/containers}/Slicer/types.d.ts +0 -0
  851. /package/dist/types/{containers → shared/src/containers}/index.d.ts +0 -0
  852. /package/dist/types/{context → shared/src/context}/DetailsPanelContext.d.ts +0 -0
  853. /package/dist/types/{context → shared/src/context}/RemoteModulesContext.d.ts +0 -0
  854. /package/dist/types/{context → shared/src/context}/ThumbnailUploaderContext.d.ts +0 -0
  855. /package/dist/types/{context → shared/src/context}/pip/PiPProvider.d.ts +0 -0
  856. /package/dist/types/{context → shared/src/context}/pip/PiPWindow.d.ts +0 -0
  857. /package/dist/types/{context → shared/src/context}/pip/PiPWrapper.d.ts +0 -0
  858. /package/dist/types/{context → shared/src/context}/pip/index.d.ts +0 -0
  859. /package/dist/types/{hooks → shared/src/hooks}/index.d.ts +0 -0
  860. /package/dist/types/{hooks → shared/src/hooks}/useActionTriggers.d.ts +0 -0
  861. /package/dist/types/{hooks → shared/src/hooks}/useEntityUpdate.d.ts +0 -0
  862. /package/dist/types/{hooks → shared/src/hooks}/useLoadModule.d.ts +0 -0
  863. /package/dist/types/{hooks → shared/src/hooks}/useLoadModules.d.ts +0 -0
  864. /package/dist/types/{hooks → shared/src/hooks}/useLocalStorage.d.ts +0 -0
  865. /package/dist/types/{hooks → shared/src/hooks}/useScopedStatuses.d.ts +0 -0
  866. /package/dist/types/{util → shared/src/util}/confirmDelete.d.ts +0 -0
  867. /package/dist/types/{util → shared/src/util}/copyToClipboard.d.ts +0 -0
  868. /package/dist/types/{util → shared/src/util}/getEntityTypeIcon.d.ts +0 -0
  869. /package/dist/types/{util → shared/src/util}/getMixedState.d.ts +0 -0
  870. /package/dist/types/{util → shared/src/util}/getPriorityOptions.d.ts +0 -0
  871. /package/dist/types/{util → shared/src/util}/groupResult.d.ts +0 -0
  872. /package/dist/types/{util → shared/src/util}/platform.d.ts +0 -0
  873. /package/dist/types/{util → shared/src/util}/productTypes.d.ts +0 -0
  874. /package/dist/types/{util → shared/src/util}/pubsub.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"clientFilterToQueryFilter.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.ts"],"sourcesContent":["import { Filter } from '@ynput/ayon-react-components'\nimport { QueryCondition, QueryFilter } from '../types/operations'\n\nconst NO_DATE = 'no_date'\nexport const clientFilterToQueryFilter = (filters: Filter[]): QueryFilter => {\n // If there are no filters, return an empty filter\n if (!filters || filters.length === 0) {\n return {}\n }\n\n // Process each filter as its own condition\n const conditions: (QueryCondition | QueryFilter)[] = filters\n .filter((f) => !!f.values?.length)\n .filter((f) => !f.id.includes('text')) // remove text search filters as they are handled separately\n .filter((f) => f.id !== 'hierarchy') // remove hierarchy filter as it is handled separately\n .flatMap((filter) => convertFilterToCondition(filter))\n\n console.log(conditions)\n\n // Return the QueryFilter with all conditions combined with AND\n return {\n conditions,\n operator: 'and',\n }\n}\n\n// Helper function to convert a single Filter to a QueryCondition\nconst convertFilterToCondition = (filter: Filter): QueryCondition => {\n // Extract key from filter ID (split by underscore if needed)\n const key = filter.id.split('_')[0]\n\n // Handle values based on filter type\n let value: QueryCondition['value']\n\n // there is any value\n const hasSomeValue =\n Array.isArray(filter.values) && filter.values.map((v) => v.id)?.includes('hasValue')\n const hasNoValue =\n Array.isArray(filter.values) && filter.values.map((v) => v.id)?.includes('noValue')\n\n if (filter.values && filter.values.length > 0) {\n if (filter.singleSelect) {\n // @ts-expect-error\n value = convertValueByType(filter.values[0].id, filter.type)\n } else {\n // @ts-expect-error\n value = filter.values.map((v) => convertValueByType(v.id, filter.type))\n }\n }\n\n // Determine if this is likely a list field based on filter type\n const isListField =\n filter.type?.startsWith('list_of_') || key.includes('tags') || key.includes('assignees')\n const isDateField = filter.type === 'datetime'\n\n // Determine the appropriate operator based on filter properties and type\n let operator: QueryCondition['operator'] = 'eq'\n\n // Handling NULL values\n if (value === undefined) {\n operator = filter.inverted ? 'notnull' : 'isnull'\n return { key, operator }\n }\n\n // Handle different filter types\n if (hasSomeValue) {\n // we set the value to the empty state and then say it should not be that\n value = isListField ? [] : undefined\n operator = isListField\n ? filter.inverted\n ? 'eq'\n : 'ne'\n : filter.inverted\n ? 'isnull'\n : 'notnull'\n } else if (hasNoValue) {\n // we set the value to the empty state and then say it should be that\n value = isListField ? [] : undefined\n operator = isListField\n ? filter.inverted\n ? 'ne'\n : 'eq'\n : filter.inverted\n ? 'notnull'\n : 'isnull'\n } else if (isListField) {\n if (filter.inverted) {\n operator = filter.operator === 'AND' ? 'excludesall' : 'excludesany'\n } else {\n operator = filter.operator === 'AND' ? 'includesall' : 'includesany'\n }\n } else if (isDateField) {\n // For date filters, we need to return a complete query filter with conditions\n if (filter.values && filter.values.length > 0) {\n // Create a flat list of all date conditions from all filter values\n const dateConditions: QueryCondition[] = filter.values.flatMap((filterValue: Filter) => {\n const conditions: QueryCondition[] = []\n const dateValues = filterValue.values\n\n // First value is greater than (start date)\n if (dateValues?.[0] !== undefined && dateValues?.[0].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'lte' : 'gte',\n value: dateValues[0].id,\n })\n }\n\n // Second value is less than (end date)\n if (dateValues?.[1] !== undefined && dateValues?.[1].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'gte' : 'lte',\n value: dateValues[1].id,\n })\n }\n\n return conditions\n })\n\n // If we have date conditions, return them as a nested filter instead of continuing\n if (dateConditions.length > 0) {\n // @ts-expect-error\n return {\n conditions: dateConditions,\n operator: filter.inverted ? 'or' : 'and',\n } as QueryFilter\n }\n }\n\n // If no date conditions were created, fall back to a basic equality check\n operator = filter.inverted ? 'ne' : 'eq'\n } else {\n // DEFAULT\n // For scalar fields\n operator = filter.inverted ? 'notin' : 'in'\n }\n\n return { key, value, operator }\n}\n\n// Helper function to convert values based on the filter type\nconst convertValueByType = (value: string, type?: string): string | number | boolean => {\n if (!type) return value\n\n switch (type) {\n case 'integer':\n return parseInt(value, 10)\n case 'float':\n return parseFloat(value)\n case 'boolean':\n return value.toLowerCase() === 'true'\n default:\n return value\n }\n}\n\nexport default clientFilterToQueryFilter\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientFilterToQueryFilter.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.ts"],"sourcesContent":["import { FILTER_SEPARATOR, getFilterFromId } from '@ynput/ayon-react-components'\nimport { QueryCondition, QueryFilter } from '../types/operations'\n\n// New type that cherry picks only the needed fields from Filter\nexport type FilterForQuery = {\n id: string\n values?: { id: string; values?: { id: string }[] }[]\n type?: string\n singleSelect?: boolean\n inverted?: boolean\n operator?: string\n}\n\nconst NO_DATE = 'no_date'\nexport const clientFilterToQueryFilter = (filters: FilterForQuery[]): QueryFilter => {\n // If there are no filters, return an empty filter\n if (!filters || filters.length === 0) {\n return {}\n }\n\n // Process each filter as its own condition\n const conditions: (QueryCondition | QueryFilter)[] = filters\n .filter((f) => !!f.values?.length)\n .filter((f) => !f.id.includes('text')) // remove text search filters as they are handled separately\n .filter((f) => f.id !== 'hierarchy') // remove hierarchy filter as it is handled separately\n .flatMap((filter) => convertFilterToCondition(filter))\n\n // Return the QueryFilter with all conditions combined with AND\n return {\n conditions,\n operator: 'and',\n }\n}\n\n// Helper function to convert a single Filter to a QueryCondition\nconst convertFilterToCondition = (filter: FilterForQuery): QueryCondition => {\n // Extract key from filter ID (split by underscore if needed)\n const key = getFilterFromId(filter.id)\n\n // Handle values based on filter type\n let value: QueryCondition['value']\n\n // there is any value\n const hasSomeValue =\n Array.isArray(filter.values) && filter.values.map((v) => v.id)?.includes('hasValue')\n const hasNoValue =\n Array.isArray(filter.values) && filter.values.map((v) => v.id)?.includes('noValue')\n\n if (filter.values && filter.values.length > 0) {\n if (filter.singleSelect) {\n // @ts-expect-error\n value = convertValueByType(filter.values[0].id, filter.type)\n } else {\n // @ts-expect-error\n value = filter.values.map((v) => convertValueByType(v.id, filter.type))\n }\n }\n\n // Determine if this is likely a list field based on filter type\n const isListField =\n filter.type?.startsWith('list_of_') || key.includes('tags') || key.includes('assignees')\n const isDateField = filter.type === 'datetime'\n const isBooleanField = filter.type === 'boolean'\n\n // Determine the appropriate operator based on filter properties and type\n let operator: QueryCondition['operator'] = 'eq'\n\n // Handling NULL values\n if (value === undefined) {\n operator = filter.inverted ? 'notnull' : 'isnull'\n return { key, operator }\n }\n\n // Handle different filter types\n if (hasSomeValue) {\n // we set the value to the empty state and then say it should not be that\n value = isListField ? [] : undefined\n operator = isListField\n ? filter.inverted\n ? 'eq'\n : 'ne'\n : filter.inverted\n ? 'isnull'\n : 'notnull'\n } else if (hasNoValue) {\n // we set the value to the empty state and then say it should be that\n value = isListField ? [] : undefined\n operator = isListField\n ? filter.inverted\n ? 'ne'\n : 'eq'\n : filter.inverted\n ? 'notnull'\n : 'isnull'\n } else if (isListField) {\n if (filter.inverted) {\n operator = filter.operator === 'AND' ? 'excludesall' : 'excludesany'\n } else {\n operator = filter.operator === 'AND' ? 'includesall' : 'includesany'\n }\n } else if (isDateField) {\n // For date filters, we need to return a complete query filter with conditions\n if (filter.values && filter.values.length > 0) {\n // Create a flat list of all date conditions from all filter values\n const dateConditions: QueryCondition[] = filter.values.flatMap(\n (filterValue: FilterForQuery) => {\n const conditions: QueryCondition[] = []\n const dateValues = filterValue.values\n\n // First value is greater than (start date)\n if (dateValues?.[0] !== undefined && dateValues?.[0].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'lte' : 'gte',\n value: dateValues[0].id,\n })\n }\n\n // Second value is less than (end date)\n if (dateValues?.[1] !== undefined && dateValues?.[1].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'gte' : 'lte',\n value: dateValues[1].id,\n })\n }\n\n return conditions\n },\n )\n\n // If we have date conditions, return them as a nested filter instead of continuing\n if (dateConditions.length > 0) {\n // @ts-expect-error\n return {\n conditions: dateConditions,\n operator: filter.inverted ? 'or' : 'and',\n } as QueryFilter\n }\n }\n\n // If no date conditions were created, fall back to a basic equality check\n operator = filter.inverted ? 'ne' : 'eq'\n } else if (isBooleanField) {\n operator = filter.inverted ? 'ne' : 'eq'\n } else {\n // DEFAULT for other scalar fields\n operator = filter.inverted ? 'notin' : 'in'\n }\n\n return { key, value, operator }\n}\n\n// Helper function to convert values based on the filter type\nconst convertValueByType = (value: string, type?: string): string | number | boolean => {\n if (!type) return value\n\n switch (type) {\n case 'integer':\n return parseInt(value, 10)\n case 'float':\n return parseFloat(value)\n case 'boolean':\n return value.toLowerCase() === 'true'\n default:\n return value\n }\n}\n\nexport default clientFilterToQueryFilter\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const getReadOnlyLists = (attribFields, extra = []) => {
4
+ let readOnlyAttribs = attribFields.filter((attrib) => attrib.readOnly).map((attrib) => attrib.name);
5
+ let readOnlyColumnsSet;
6
+ if (extra == null ? void 0 : extra.includes("attrib")) {
7
+ readOnlyAttribs = attribFields.filter((a) => a.builtin).map((attrib) => attrib.name);
8
+ readOnlyColumnsSet = /* @__PURE__ */ new Set([
9
+ ...attribFields.filter((a) => a.builtin).map((attrib) => "attrib_" + attrib.name),
10
+ // Add all attribute columns to the readOnly set
11
+ ...extra || []
12
+ // Add any other specified readOnly columns
13
+ ]);
14
+ } else {
15
+ readOnlyColumnsSet = /* @__PURE__ */ new Set([
16
+ ...readOnlyAttribs.map((name) => "attrib_" + name),
17
+ // Add readOnly attribute columns to the set
18
+ ...extra || []
19
+ // Add any other specified readOnly columns
20
+ ]);
21
+ if (extra) {
22
+ extra.forEach((col) => {
23
+ if (col.startsWith("attrib_")) {
24
+ const attribName = col.replace("attrib_", "");
25
+ if (attribFields.find((attrib) => attrib.name === attribName) && !readOnlyAttribs.includes(attribName)) {
26
+ readOnlyAttribs.push(attribName);
27
+ }
28
+ }
29
+ });
30
+ }
31
+ }
32
+ const readOnlyColumns = Array.from(readOnlyColumnsSet);
33
+ return { readOnlyColumns, readOnlyAttribs };
34
+ };
35
+ exports.getReadOnlyLists = getReadOnlyLists;
36
+ //# sourceMappingURL=getReadOnlyLists.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getReadOnlyLists.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getReadOnlyLists.ts"],"sourcesContent":["import { ProjectTableAttribute } from '../types'\n\nexport const getReadOnlyLists = (attribFields: ProjectTableAttribute[], extra: string[] = []) => {\n let readOnlyAttribs: string[] = attribFields\n .filter((attrib) => attrib.readOnly) // Filter attributes that are explicitly readOnly\n .map((attrib) => attrib.name) // Extract the names of the readOnly attributes\n\n let readOnlyColumnsSet: Set<string>\n\n if (extra?.includes('attrib' as any)) {\n // If 'attrib' is in the readonly columns, all attributes are read-only\n readOnlyAttribs = attribFields.filter((a) => a.builtin).map((attrib) => attrib.name) // Mark all attributes as readOnly if they are builtin\n readOnlyColumnsSet = new Set([\n ...attribFields.filter((a) => a.builtin).map((attrib) => 'attrib_' + attrib.name), // Add all attribute columns to the readOnly set\n ...(extra || []), // Add any other specified readOnly columns\n ])\n } else {\n // If 'attrib' is not in the readonly columns, handle individual attributes\n readOnlyColumnsSet = new Set([\n ...readOnlyAttribs.map((name) => 'attrib_' + name), // Add readOnly attribute columns to the set\n ...(extra || []), // Add any other specified readOnly columns\n ])\n\n // Add readOnly from extra to attribs\n if (extra) {\n extra.forEach((col) => {\n if (col.startsWith('attrib_')) {\n const attribName = col.replace('attrib_', '')\n if (\n attribFields.find((attrib) => attrib.name === attribName) &&\n !readOnlyAttribs.includes(attribName)\n ) {\n readOnlyAttribs.push(attribName)\n }\n }\n })\n }\n }\n\n const readOnlyColumns = Array.from(readOnlyColumnsSet) // Convert the set of readOnly columns to an array\n\n return { readOnlyColumns, readOnlyAttribs }\n}\n"],"names":[],"mappings":";;AAEO,MAAM,mBAAmB,CAAC,cAAuC,QAAkB,OAAO;AAC/F,MAAI,kBAA4B,aAC7B,OAAO,CAAC,WAAW,OAAO,QAAQ,EAClC,IAAI,CAAC,WAAW,OAAO,IAAI;AAE1B,MAAA;AAEA,MAAA,+BAAO,SAAS,WAAkB;AAElB,sBAAA,aAAa,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,IAAI;AACnF,6CAAyB,IAAI;AAAA,MAC3B,GAAG,aAAa,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,YAAY,OAAO,IAAI;AAAA;AAAA,MAChF,GAAI,SAAS,CAAA;AAAA;AAAA,IAAC,CACf;AAAA,EAAA,OACI;AAEL,6CAAyB,IAAI;AAAA,MAC3B,GAAG,gBAAgB,IAAI,CAAC,SAAS,YAAY,IAAI;AAAA;AAAA,MACjD,GAAI,SAAS,CAAA;AAAA;AAAA,IAAC,CACf;AAGD,QAAI,OAAO;AACH,YAAA,QAAQ,CAAC,QAAQ;AACjB,YAAA,IAAI,WAAW,SAAS,GAAG;AAC7B,gBAAM,aAAa,IAAI,QAAQ,WAAW,EAAE;AAC5C,cACE,aAAa,KAAK,CAAC,WAAW,OAAO,SAAS,UAAU,KACxD,CAAC,gBAAgB,SAAS,UAAU,GACpC;AACA,4BAAgB,KAAK,UAAU;AAAA,UAAA;AAAA,QACjC;AAAA,MACF,CACD;AAAA,IAAA;AAAA,EACH;AAGI,QAAA,kBAAkB,MAAM,KAAK,kBAAkB;AAE9C,SAAA,EAAE,iBAAiB,gBAAgB;AAC5C;;"}
@@ -0,0 +1,36 @@
1
+ const getReadOnlyLists = (attribFields, extra = []) => {
2
+ let readOnlyAttribs = attribFields.filter((attrib) => attrib.readOnly).map((attrib) => attrib.name);
3
+ let readOnlyColumnsSet;
4
+ if (extra == null ? void 0 : extra.includes("attrib")) {
5
+ readOnlyAttribs = attribFields.filter((a) => a.builtin).map((attrib) => attrib.name);
6
+ readOnlyColumnsSet = /* @__PURE__ */ new Set([
7
+ ...attribFields.filter((a) => a.builtin).map((attrib) => "attrib_" + attrib.name),
8
+ // Add all attribute columns to the readOnly set
9
+ ...extra || []
10
+ // Add any other specified readOnly columns
11
+ ]);
12
+ } else {
13
+ readOnlyColumnsSet = /* @__PURE__ */ new Set([
14
+ ...readOnlyAttribs.map((name) => "attrib_" + name),
15
+ // Add readOnly attribute columns to the set
16
+ ...extra || []
17
+ // Add any other specified readOnly columns
18
+ ]);
19
+ if (extra) {
20
+ extra.forEach((col) => {
21
+ if (col.startsWith("attrib_")) {
22
+ const attribName = col.replace("attrib_", "");
23
+ if (attribFields.find((attrib) => attrib.name === attribName) && !readOnlyAttribs.includes(attribName)) {
24
+ readOnlyAttribs.push(attribName);
25
+ }
26
+ }
27
+ });
28
+ }
29
+ }
30
+ const readOnlyColumns = Array.from(readOnlyColumnsSet);
31
+ return { readOnlyColumns, readOnlyAttribs };
32
+ };
33
+ export {
34
+ getReadOnlyLists
35
+ };
36
+ //# sourceMappingURL=getReadOnlyLists.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getReadOnlyLists.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getReadOnlyLists.ts"],"sourcesContent":["import { ProjectTableAttribute } from '../types'\n\nexport const getReadOnlyLists = (attribFields: ProjectTableAttribute[], extra: string[] = []) => {\n let readOnlyAttribs: string[] = attribFields\n .filter((attrib) => attrib.readOnly) // Filter attributes that are explicitly readOnly\n .map((attrib) => attrib.name) // Extract the names of the readOnly attributes\n\n let readOnlyColumnsSet: Set<string>\n\n if (extra?.includes('attrib' as any)) {\n // If 'attrib' is in the readonly columns, all attributes are read-only\n readOnlyAttribs = attribFields.filter((a) => a.builtin).map((attrib) => attrib.name) // Mark all attributes as readOnly if they are builtin\n readOnlyColumnsSet = new Set([\n ...attribFields.filter((a) => a.builtin).map((attrib) => 'attrib_' + attrib.name), // Add all attribute columns to the readOnly set\n ...(extra || []), // Add any other specified readOnly columns\n ])\n } else {\n // If 'attrib' is not in the readonly columns, handle individual attributes\n readOnlyColumnsSet = new Set([\n ...readOnlyAttribs.map((name) => 'attrib_' + name), // Add readOnly attribute columns to the set\n ...(extra || []), // Add any other specified readOnly columns\n ])\n\n // Add readOnly from extra to attribs\n if (extra) {\n extra.forEach((col) => {\n if (col.startsWith('attrib_')) {\n const attribName = col.replace('attrib_', '')\n if (\n attribFields.find((attrib) => attrib.name === attribName) &&\n !readOnlyAttribs.includes(attribName)\n ) {\n readOnlyAttribs.push(attribName)\n }\n }\n })\n }\n }\n\n const readOnlyColumns = Array.from(readOnlyColumnsSet) // Convert the set of readOnly columns to an array\n\n return { readOnlyColumns, readOnlyAttribs }\n}\n"],"names":[],"mappings":"AAEO,MAAM,mBAAmB,CAAC,cAAuC,QAAkB,OAAO;AAC/F,MAAI,kBAA4B,aAC7B,OAAO,CAAC,WAAW,OAAO,QAAQ,EAClC,IAAI,CAAC,WAAW,OAAO,IAAI;AAE1B,MAAA;AAEA,MAAA,+BAAO,SAAS,WAAkB;AAElB,sBAAA,aAAa,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,IAAI;AACnF,6CAAyB,IAAI;AAAA,MAC3B,GAAG,aAAa,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,YAAY,OAAO,IAAI;AAAA;AAAA,MAChF,GAAI,SAAS,CAAA;AAAA;AAAA,IAAC,CACf;AAAA,EAAA,OACI;AAEL,6CAAyB,IAAI;AAAA,MAC3B,GAAG,gBAAgB,IAAI,CAAC,SAAS,YAAY,IAAI;AAAA;AAAA,MACjD,GAAI,SAAS,CAAA;AAAA;AAAA,IAAC,CACf;AAGD,QAAI,OAAO;AACH,YAAA,QAAQ,CAAC,QAAQ;AACjB,YAAA,IAAI,WAAW,SAAS,GAAG;AAC7B,gBAAM,aAAa,IAAI,QAAQ,WAAW,EAAE;AAC5C,cACE,aAAa,KAAK,CAAC,WAAW,OAAO,SAAS,UAAU,KACxD,CAAC,gBAAgB,SAAS,UAAU,GACpC;AACA,4BAAgB,KAAK,UAAU;AAAA,UAAA;AAAA,QACjC;AAAA,MACF,CACD;AAAA,IAAA;AAAA,EACH;AAGI,QAAA,kBAAkB,MAAM,KAAK,kBAAkB;AAE9C,SAAA,EAAE,iBAAiB,gBAAgB;AAC5C;"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const productTypes = require("../../../util/productTypes.cjs.js");
4
+ require("lodash");
5
+ require("react-toastify");
6
+ require("../../../util/pubsub.cjs.js");
7
+ const getTableFieldOptions = ({
8
+ users,
9
+ statuses,
10
+ folderTypes,
11
+ taskTypes,
12
+ tags
13
+ }) => ({
14
+ assignee: users.map(({ name, fullName }) => ({
15
+ value: name,
16
+ label: fullName || name,
17
+ icon: `/api/users/${name}/avatar`
18
+ })),
19
+ status: statuses.filter((status) => !status.scope || ["folder", "task"].some((s) => {
20
+ var _a;
21
+ return (_a = status.scope) == null ? void 0 : _a.includes(s);
22
+ })).map(({ name, color, icon, scope }) => ({
23
+ value: name,
24
+ label: name,
25
+ color,
26
+ icon,
27
+ scope
28
+ })),
29
+ tag: tags.map(({ name, color }) => ({ value: name, label: name, color })),
30
+ folderType: folderTypes.map(({ name, icon }) => ({ value: name, label: name, icon })),
31
+ taskType: taskTypes.map(({ name, icon }) => ({ value: name, label: name, icon })),
32
+ productType: Object.entries(productTypes).map(([key, value]) => ({
33
+ value: key,
34
+ label: value.name,
35
+ icon: value.icon
36
+ }))
37
+ });
38
+ exports.getTableFieldOptions = getTableFieldOptions;
39
+ //# sourceMappingURL=getTableFieldOptions.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTableFieldOptions.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getTableFieldOptions.ts"],"sourcesContent":["import { productTypes } from '@shared/util'\nimport { BuiltInFieldOptions } from '../types'\nimport { FolderType, Status, Tag, TaskType } from '../types/project'\n\ntype Params = {\n users: {\n name: string\n fullName?: string\n }[]\n statuses: Status[]\n folderTypes: FolderType[]\n taskTypes: TaskType[]\n tags: Tag[]\n}\n\nexport const getTableFieldOptions = ({\n users,\n statuses,\n folderTypes,\n taskTypes,\n tags,\n}: Params): BuiltInFieldOptions => ({\n assignee: users.map(({ name, fullName }) => ({\n value: name,\n label: fullName || name,\n icon: `/api/users/${name}/avatar`,\n })),\n status: statuses\n .filter((status) => !status.scope || ['folder', 'task'].some((s) => status.scope?.includes(s)))\n .map(({ name, color, icon, scope }) => ({\n value: name,\n label: name,\n color,\n icon,\n scope,\n })),\n tag: tags.map(({ name, color }) => ({ value: name, label: name, color })),\n folderType: folderTypes.map(({ name, icon }) => ({ value: name, label: name, icon })),\n taskType: taskTypes.map(({ name, icon }) => ({ value: name, label: name, icon })),\n productType: Object.entries(productTypes).map(([key, value]) => ({\n value: key,\n label: value.name,\n icon: value.icon,\n })),\n})\n"],"names":[],"mappings":";;;;;;AAeO,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,OAAoC;AAAA,EAClC,UAAU,MAAM,IAAI,CAAC,EAAE,MAAM,gBAAgB;AAAA,IAC3C,OAAO;AAAA,IACP,OAAO,YAAY;AAAA,IACnB,MAAM,cAAc,IAAI;AAAA,EAAA,EACxB;AAAA,EACF,QAAQ,SACL,OAAO,CAAC,WAAW,CAAC,OAAO,SAAS,CAAC,UAAU,MAAM,EAAE,KAAK,CAAC;;AAAM,wBAAO,UAAP,mBAAc,SAAS;AAAA,GAAE,CAAC,EAC7F,IAAI,CAAC,EAAE,MAAM,OAAO,MAAM,aAAa;AAAA,IACtC,OAAO;AAAA,IACP,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA;AAAA,EACJ,KAAK,KAAK,IAAI,CAAC,EAAE,MAAM,MAAA,OAAa,EAAE,OAAO,MAAM,OAAO,MAAM,MAAQ,EAAA;AAAA,EACxE,YAAY,YAAY,IAAI,CAAC,EAAE,MAAM,KAAA,OAAY,EAAE,OAAO,MAAM,OAAO,MAAM,KAAO,EAAA;AAAA,EACpF,UAAU,UAAU,IAAI,CAAC,EAAE,MAAM,KAAA,OAAY,EAAE,OAAO,MAAM,OAAO,MAAM,KAAO,EAAA;AAAA,EAChF,aAAa,OAAO,QAAQ,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;AAAA,IAC/D,OAAO;AAAA,IACP,OAAO,MAAM;AAAA,IACb,MAAM,MAAM;AAAA,EAAA,EACZ;AACJ;;"}
@@ -0,0 +1,39 @@
1
+ import productTypes from "../../../util/productTypes.es.js";
2
+ import "lodash";
3
+ import "react-toastify";
4
+ import "../../../util/pubsub.es.js";
5
+ const getTableFieldOptions = ({
6
+ users,
7
+ statuses,
8
+ folderTypes,
9
+ taskTypes,
10
+ tags
11
+ }) => ({
12
+ assignee: users.map(({ name, fullName }) => ({
13
+ value: name,
14
+ label: fullName || name,
15
+ icon: `/api/users/${name}/avatar`
16
+ })),
17
+ status: statuses.filter((status) => !status.scope || ["folder", "task"].some((s) => {
18
+ var _a;
19
+ return (_a = status.scope) == null ? void 0 : _a.includes(s);
20
+ })).map(({ name, color, icon, scope }) => ({
21
+ value: name,
22
+ label: name,
23
+ color,
24
+ icon,
25
+ scope
26
+ })),
27
+ tag: tags.map(({ name, color }) => ({ value: name, label: name, color })),
28
+ folderType: folderTypes.map(({ name, icon }) => ({ value: name, label: name, icon })),
29
+ taskType: taskTypes.map(({ name, icon }) => ({ value: name, label: name, icon })),
30
+ productType: Object.entries(productTypes).map(([key, value]) => ({
31
+ value: key,
32
+ label: value.name,
33
+ icon: value.icon
34
+ }))
35
+ });
36
+ export {
37
+ getTableFieldOptions
38
+ };
39
+ //# sourceMappingURL=getTableFieldOptions.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTableFieldOptions.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getTableFieldOptions.ts"],"sourcesContent":["import { productTypes } from '@shared/util'\nimport { BuiltInFieldOptions } from '../types'\nimport { FolderType, Status, Tag, TaskType } from '../types/project'\n\ntype Params = {\n users: {\n name: string\n fullName?: string\n }[]\n statuses: Status[]\n folderTypes: FolderType[]\n taskTypes: TaskType[]\n tags: Tag[]\n}\n\nexport const getTableFieldOptions = ({\n users,\n statuses,\n folderTypes,\n taskTypes,\n tags,\n}: Params): BuiltInFieldOptions => ({\n assignee: users.map(({ name, fullName }) => ({\n value: name,\n label: fullName || name,\n icon: `/api/users/${name}/avatar`,\n })),\n status: statuses\n .filter((status) => !status.scope || ['folder', 'task'].some((s) => status.scope?.includes(s)))\n .map(({ name, color, icon, scope }) => ({\n value: name,\n label: name,\n color,\n icon,\n scope,\n })),\n tag: tags.map(({ name, color }) => ({ value: name, label: name, color })),\n folderType: folderTypes.map(({ name, icon }) => ({ value: name, label: name, icon })),\n taskType: taskTypes.map(({ name, icon }) => ({ value: name, label: name, icon })),\n productType: Object.entries(productTypes).map(([key, value]) => ({\n value: key,\n label: value.name,\n icon: value.icon,\n })),\n})\n"],"names":[],"mappings":";;;;AAeO,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,OAAoC;AAAA,EAClC,UAAU,MAAM,IAAI,CAAC,EAAE,MAAM,gBAAgB;AAAA,IAC3C,OAAO;AAAA,IACP,OAAO,YAAY;AAAA,IACnB,MAAM,cAAc,IAAI;AAAA,EAAA,EACxB;AAAA,EACF,QAAQ,SACL,OAAO,CAAC,WAAW,CAAC,OAAO,SAAS,CAAC,UAAU,MAAM,EAAE,KAAK,CAAC;;AAAM,wBAAO,UAAP,mBAAc,SAAS;AAAA,GAAE,CAAC,EAC7F,IAAI,CAAC,EAAE,MAAM,OAAO,MAAM,aAAa;AAAA,IACtC,OAAO;AAAA,IACP,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA;AAAA,EACJ,KAAK,KAAK,IAAI,CAAC,EAAE,MAAM,MAAA,OAAa,EAAE,OAAO,MAAM,OAAO,MAAM,MAAQ,EAAA;AAAA,EACxE,YAAY,YAAY,IAAI,CAAC,EAAE,MAAM,KAAA,OAAY,EAAE,OAAO,MAAM,OAAO,MAAM,KAAO,EAAA;AAAA,EACpF,UAAU,UAAU,IAAI,CAAC,EAAE,MAAM,KAAA,OAAY,EAAE,OAAO,MAAM,OAAO,MAAM,KAAO,EAAA;AAAA,EAChF,aAAa,OAAO,QAAQ,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;AAAA,IAC/D,OAAO;AAAA,IACP,OAAO,MAAM;AAAA,IACb,MAAM,MAAM;AAAA,EAAA,EACZ;AACJ;"}
@@ -5,6 +5,7 @@ const generateLoadingRows = (attribs, count = 50, { type = "folder", parentId }
5
5
  (_, index) => ({
6
6
  id: `loading-${type}-${index}-${parentId}`,
7
7
  name: "Loading...",
8
+ status: "Loading...",
8
9
  parentId,
9
10
  isLoading: true,
10
11
  label: "Loading...",
@@ -1 +1 @@
1
- {"version":3,"file":"loadingUtils.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/loadingUtils.ts"],"sourcesContent":["import { TableRow } from '../types/table'\nimport { FolderNodeMap } from '../types/table'\nimport { AttributeModel, LoadingTasks } from '../types'\n\n/**\n * Generates an array of placeholder rows for loading state\n * @param attribs - Attribute models used to populate empty attribute fields\n * @param count - Number of loading rows to generate (default: 50)\n * @returns Array of TableRow objects with loading state\n */\nexport const generateLoadingRows = (\n attribs: { name: string }[],\n count = 50,\n { type = 'folder', parentId }: { type?: string; parentId?: string } = {},\n): TableRow[] => {\n return new Array(count).fill(0).map(\n (_, index): TableRow => ({\n id: `loading-${type}-${index}-${parentId}`,\n name: 'Loading...',\n parentId: parentId,\n isLoading: true,\n label: 'Loading...',\n color: null,\n icon: null,\n img: null,\n entityType: type,\n ownAttrib: [],\n tags: [],\n subRows: [],\n path: '',\n attrib: attribs.reduce((acc: { [key: string]: null }, attrib) => {\n acc[attrib.name] = null\n return acc\n }, {}),\n }),\n )\n}\n\n/**\n * Generates an array of dummy attribute models for loading states\n * @param count - Number of dummy attributes to generate (default: 10)\n * @returns Array of AttributeModel objects\n */\nexport const generateDummyAttributes = (count = 10): AttributeModel[] => {\n return Array(count)\n .fill(null)\n .map((_, i): AttributeModel => {\n return {\n name: `loading-attribute${i}`,\n scope: ['folder', 'task'],\n data: {\n type: 'string',\n },\n position: i,\n }\n })\n}\n\n/**\n * Parameters for determineLoadingTaskFolders function\n */\nexport type DetermineLoadingTaskFoldersParams = {\n expandedFoldersTasks: { folderId: string | null }[]\n expandedParentIds: string[]\n foldersMap: FolderNodeMap\n}\n\n/**\n * Determines which folders are currently loading tasks\n * @param params - Object containing parameters for determining loading folders\n * @returns Array of folder IDs that are in loading state\n */\nexport const determineLoadingTaskFolders = ({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n}: DetermineLoadingTaskFoldersParams): LoadingTasks => {\n // find the folderIds that are being fetched (not the ones that are already loaded)\n const folderIds = expandedFoldersTasks.map((task) => task.folderId)\n const expandedParentIdsThatHaveTasks = expandedParentIds.filter(\n (id) => foldersMap.get(id)?.hasTasks,\n )\n const folderIdsSet = new Set(folderIds)\n const loadingParentIds = new Set<string>()\n for (const folderId of expandedParentIdsThatHaveTasks) {\n if (!folderIdsSet.has(folderId)) {\n loadingParentIds.add(folderId)\n }\n }\n\n const loadingTasks: LoadingTasks = {}\n for (const folderId of loadingParentIds) {\n // find the folder by id\n const folder = foldersMap.get(folderId)\n if (folder) {\n loadingTasks[folderId] = folder.taskNames?.length || 0\n }\n }\n\n return loadingTasks\n}\n"],"names":["_a"],"mappings":";;AAUa,MAAA,sBAAsB,CACjC,SACA,QAAQ,IACR,EAAE,OAAO,UAAU,SAAmD,IAAA,OACvD;AACf,SAAO,IAAI,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE;AAAA,IAC9B,CAAC,GAAG,WAAqB;AAAA,MACvB,IAAI,WAAW,IAAI,IAAI,KAAK,IAAI,QAAQ;AAAA,MACxC,MAAM;AAAA,MACN;AAAA,MACA,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,WAAW,CAAC;AAAA,MACZ,MAAM,CAAC;AAAA,MACP,SAAS,CAAC;AAAA,MACV,MAAM;AAAA,MACN,QAAQ,QAAQ,OAAO,CAAC,KAA8B,WAAW;AAC3D,YAAA,OAAO,IAAI,IAAI;AACZ,eAAA;AAAA,MAAA,GACN,CAAE,CAAA;AAAA,IACP;AAAA,EACF;AACF;AAOa,MAAA,0BAA0B,CAAC,QAAQ,OAAyB;AAChE,SAAA,MAAM,KAAK,EACf,KAAK,IAAI,EACT,IAAI,CAAC,GAAG,MAAsB;AACtB,WAAA;AAAA,MACL,MAAM,oBAAoB,CAAC;AAAA,MAC3B,OAAO,CAAC,UAAU,MAAM;AAAA,MACxB,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EAAA,CACD;AACL;AAgBO,MAAM,8BAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACF,MAAuD;;AAErD,QAAM,YAAY,qBAAqB,IAAI,CAAC,SAAS,KAAK,QAAQ;AAClE,QAAM,iCAAiC,kBAAkB;AAAA,IACvD,CAAC,OAAO;;AAAA,cAAAA,MAAA,WAAW,IAAI,EAAE,MAAjB,gBAAAA,IAAoB;AAAA;AAAA,EAC9B;AACM,QAAA,eAAe,IAAI,IAAI,SAAS;AAChC,QAAA,uCAAuB,IAAY;AACzC,aAAW,YAAY,gCAAgC;AACrD,QAAI,CAAC,aAAa,IAAI,QAAQ,GAAG;AAC/B,uBAAiB,IAAI,QAAQ;AAAA,IAAA;AAAA,EAC/B;AAGF,QAAM,eAA6B,CAAC;AACpC,aAAW,YAAY,kBAAkB;AAEjC,UAAA,SAAS,WAAW,IAAI,QAAQ;AACtC,QAAI,QAAQ;AACV,mBAAa,QAAQ,MAAI,YAAO,cAAP,mBAAkB,WAAU;AAAA,IAAA;AAAA,EACvD;AAGK,SAAA;AACT;;;;"}
1
+ {"version":3,"file":"loadingUtils.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/loadingUtils.ts"],"sourcesContent":["import { TableRow } from '../types/table'\nimport { FolderNodeMap } from '../types/table'\nimport { AttributeModel, LoadingTasks } from '../types'\n\n/**\n * Generates an array of placeholder rows for loading state\n * @param attribs - Attribute models used to populate empty attribute fields\n * @param count - Number of loading rows to generate (default: 50)\n * @returns Array of TableRow objects with loading state\n */\nexport const generateLoadingRows = (\n attribs: { name: string }[],\n count = 50,\n { type = 'folder', parentId }: { type?: string; parentId?: string } = {},\n): TableRow[] => {\n return new Array(count).fill(0).map(\n (_, index): TableRow => ({\n id: `loading-${type}-${index}-${parentId}`,\n name: 'Loading...',\n status: 'Loading...',\n parentId: parentId,\n isLoading: true,\n label: 'Loading...',\n color: null,\n icon: null,\n img: null,\n entityType: type,\n ownAttrib: [],\n tags: [],\n subRows: [],\n path: '',\n attrib: attribs.reduce((acc: { [key: string]: null }, attrib) => {\n acc[attrib.name] = null\n return acc\n }, {}),\n }),\n )\n}\n\n/**\n * Generates an array of dummy attribute models for loading states\n * @param count - Number of dummy attributes to generate (default: 10)\n * @returns Array of AttributeModel objects\n */\nexport const generateDummyAttributes = (count = 10): AttributeModel[] => {\n return Array(count)\n .fill(null)\n .map((_, i): AttributeModel => {\n return {\n name: `loading-attribute${i}`,\n scope: ['folder', 'task'],\n data: {\n type: 'string',\n },\n position: i,\n }\n })\n}\n\n/**\n * Parameters for determineLoadingTaskFolders function\n */\nexport type DetermineLoadingTaskFoldersParams = {\n expandedFoldersTasks: { folderId: string | null }[]\n expandedParentIds: string[]\n foldersMap: FolderNodeMap\n}\n\n/**\n * Determines which folders are currently loading tasks\n * @param params - Object containing parameters for determining loading folders\n * @returns Array of folder IDs that are in loading state\n */\nexport const determineLoadingTaskFolders = ({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n}: DetermineLoadingTaskFoldersParams): LoadingTasks => {\n // find the folderIds that are being fetched (not the ones that are already loaded)\n const folderIds = expandedFoldersTasks.map((task) => task.folderId)\n const expandedParentIdsThatHaveTasks = expandedParentIds.filter(\n (id) => foldersMap.get(id)?.hasTasks,\n )\n const folderIdsSet = new Set(folderIds)\n const loadingParentIds = new Set<string>()\n for (const folderId of expandedParentIdsThatHaveTasks) {\n if (!folderIdsSet.has(folderId)) {\n loadingParentIds.add(folderId)\n }\n }\n\n const loadingTasks: LoadingTasks = {}\n for (const folderId of loadingParentIds) {\n // find the folder by id\n const folder = foldersMap.get(folderId)\n if (folder) {\n loadingTasks[folderId] = folder.taskNames?.length || 0\n }\n }\n\n return loadingTasks\n}\n"],"names":["_a"],"mappings":";;AAUa,MAAA,sBAAsB,CACjC,SACA,QAAQ,IACR,EAAE,OAAO,UAAU,SAAmD,IAAA,OACvD;AACf,SAAO,IAAI,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE;AAAA,IAC9B,CAAC,GAAG,WAAqB;AAAA,MACvB,IAAI,WAAW,IAAI,IAAI,KAAK,IAAI,QAAQ;AAAA,MACxC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,WAAW,CAAC;AAAA,MACZ,MAAM,CAAC;AAAA,MACP,SAAS,CAAC;AAAA,MACV,MAAM;AAAA,MACN,QAAQ,QAAQ,OAAO,CAAC,KAA8B,WAAW;AAC3D,YAAA,OAAO,IAAI,IAAI;AACZ,eAAA;AAAA,MAAA,GACN,CAAE,CAAA;AAAA,IACP;AAAA,EACF;AACF;AAOa,MAAA,0BAA0B,CAAC,QAAQ,OAAyB;AAChE,SAAA,MAAM,KAAK,EACf,KAAK,IAAI,EACT,IAAI,CAAC,GAAG,MAAsB;AACtB,WAAA;AAAA,MACL,MAAM,oBAAoB,CAAC;AAAA,MAC3B,OAAO,CAAC,UAAU,MAAM;AAAA,MACxB,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EAAA,CACD;AACL;AAgBO,MAAM,8BAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACF,MAAuD;;AAErD,QAAM,YAAY,qBAAqB,IAAI,CAAC,SAAS,KAAK,QAAQ;AAClE,QAAM,iCAAiC,kBAAkB;AAAA,IACvD,CAAC,OAAO;;AAAA,cAAAA,MAAA,WAAW,IAAI,EAAE,MAAjB,gBAAAA,IAAoB;AAAA;AAAA,EAC9B;AACM,QAAA,eAAe,IAAI,IAAI,SAAS;AAChC,QAAA,uCAAuB,IAAY;AACzC,aAAW,YAAY,gCAAgC;AACrD,QAAI,CAAC,aAAa,IAAI,QAAQ,GAAG;AAC/B,uBAAiB,IAAI,QAAQ;AAAA,IAAA;AAAA,EAC/B;AAGF,QAAM,eAA6B,CAAC;AACpC,aAAW,YAAY,kBAAkB;AAEjC,UAAA,SAAS,WAAW,IAAI,QAAQ;AACtC,QAAI,QAAQ;AACV,mBAAa,QAAQ,MAAI,YAAO,cAAP,mBAAkB,WAAU;AAAA,IAAA;AAAA,EACvD;AAGK,SAAA;AACT;;;;"}
@@ -3,6 +3,7 @@ const generateLoadingRows = (attribs, count = 50, { type = "folder", parentId }
3
3
  (_, index) => ({
4
4
  id: `loading-${type}-${index}-${parentId}`,
5
5
  name: "Loading...",
6
+ status: "Loading...",
6
7
  parentId,
7
8
  isLoading: true,
8
9
  label: "Loading...",
@@ -1 +1 @@
1
- {"version":3,"file":"loadingUtils.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/loadingUtils.ts"],"sourcesContent":["import { TableRow } from '../types/table'\nimport { FolderNodeMap } from '../types/table'\nimport { AttributeModel, LoadingTasks } from '../types'\n\n/**\n * Generates an array of placeholder rows for loading state\n * @param attribs - Attribute models used to populate empty attribute fields\n * @param count - Number of loading rows to generate (default: 50)\n * @returns Array of TableRow objects with loading state\n */\nexport const generateLoadingRows = (\n attribs: { name: string }[],\n count = 50,\n { type = 'folder', parentId }: { type?: string; parentId?: string } = {},\n): TableRow[] => {\n return new Array(count).fill(0).map(\n (_, index): TableRow => ({\n id: `loading-${type}-${index}-${parentId}`,\n name: 'Loading...',\n parentId: parentId,\n isLoading: true,\n label: 'Loading...',\n color: null,\n icon: null,\n img: null,\n entityType: type,\n ownAttrib: [],\n tags: [],\n subRows: [],\n path: '',\n attrib: attribs.reduce((acc: { [key: string]: null }, attrib) => {\n acc[attrib.name] = null\n return acc\n }, {}),\n }),\n )\n}\n\n/**\n * Generates an array of dummy attribute models for loading states\n * @param count - Number of dummy attributes to generate (default: 10)\n * @returns Array of AttributeModel objects\n */\nexport const generateDummyAttributes = (count = 10): AttributeModel[] => {\n return Array(count)\n .fill(null)\n .map((_, i): AttributeModel => {\n return {\n name: `loading-attribute${i}`,\n scope: ['folder', 'task'],\n data: {\n type: 'string',\n },\n position: i,\n }\n })\n}\n\n/**\n * Parameters for determineLoadingTaskFolders function\n */\nexport type DetermineLoadingTaskFoldersParams = {\n expandedFoldersTasks: { folderId: string | null }[]\n expandedParentIds: string[]\n foldersMap: FolderNodeMap\n}\n\n/**\n * Determines which folders are currently loading tasks\n * @param params - Object containing parameters for determining loading folders\n * @returns Array of folder IDs that are in loading state\n */\nexport const determineLoadingTaskFolders = ({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n}: DetermineLoadingTaskFoldersParams): LoadingTasks => {\n // find the folderIds that are being fetched (not the ones that are already loaded)\n const folderIds = expandedFoldersTasks.map((task) => task.folderId)\n const expandedParentIdsThatHaveTasks = expandedParentIds.filter(\n (id) => foldersMap.get(id)?.hasTasks,\n )\n const folderIdsSet = new Set(folderIds)\n const loadingParentIds = new Set<string>()\n for (const folderId of expandedParentIdsThatHaveTasks) {\n if (!folderIdsSet.has(folderId)) {\n loadingParentIds.add(folderId)\n }\n }\n\n const loadingTasks: LoadingTasks = {}\n for (const folderId of loadingParentIds) {\n // find the folder by id\n const folder = foldersMap.get(folderId)\n if (folder) {\n loadingTasks[folderId] = folder.taskNames?.length || 0\n }\n }\n\n return loadingTasks\n}\n"],"names":["_a"],"mappings":"AAUa,MAAA,sBAAsB,CACjC,SACA,QAAQ,IACR,EAAE,OAAO,UAAU,SAAmD,IAAA,OACvD;AACf,SAAO,IAAI,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE;AAAA,IAC9B,CAAC,GAAG,WAAqB;AAAA,MACvB,IAAI,WAAW,IAAI,IAAI,KAAK,IAAI,QAAQ;AAAA,MACxC,MAAM;AAAA,MACN;AAAA,MACA,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,WAAW,CAAC;AAAA,MACZ,MAAM,CAAC;AAAA,MACP,SAAS,CAAC;AAAA,MACV,MAAM;AAAA,MACN,QAAQ,QAAQ,OAAO,CAAC,KAA8B,WAAW;AAC3D,YAAA,OAAO,IAAI,IAAI;AACZ,eAAA;AAAA,MAAA,GACN,CAAE,CAAA;AAAA,IACP;AAAA,EACF;AACF;AAOa,MAAA,0BAA0B,CAAC,QAAQ,OAAyB;AAChE,SAAA,MAAM,KAAK,EACf,KAAK,IAAI,EACT,IAAI,CAAC,GAAG,MAAsB;AACtB,WAAA;AAAA,MACL,MAAM,oBAAoB,CAAC;AAAA,MAC3B,OAAO,CAAC,UAAU,MAAM;AAAA,MACxB,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EAAA,CACD;AACL;AAgBO,MAAM,8BAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACF,MAAuD;AAlE1C;AAoEX,QAAM,YAAY,qBAAqB,IAAI,CAAC,SAAS,KAAK,QAAQ;AAClE,QAAM,iCAAiC,kBAAkB;AAAA,IACvD,CAAC,OAAO;AAtEC,UAAAA;AAsED,cAAAA,MAAA,WAAW,IAAI,EAAE,MAAjB,gBAAAA,IAAoB;AAAA;AAAA,EAC9B;AACM,QAAA,eAAe,IAAI,IAAI,SAAS;AAChC,QAAA,uCAAuB,IAAY;AACzC,aAAW,YAAY,gCAAgC;AACrD,QAAI,CAAC,aAAa,IAAI,QAAQ,GAAG;AAC/B,uBAAiB,IAAI,QAAQ;AAAA,IAAA;AAAA,EAC/B;AAGF,QAAM,eAA6B,CAAC;AACpC,aAAW,YAAY,kBAAkB;AAEjC,UAAA,SAAS,WAAW,IAAI,QAAQ;AACtC,QAAI,QAAQ;AACV,mBAAa,QAAQ,MAAI,YAAO,cAAP,mBAAkB,WAAU;AAAA,IAAA;AAAA,EACvD;AAGK,SAAA;AACT;"}
1
+ {"version":3,"file":"loadingUtils.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/loadingUtils.ts"],"sourcesContent":["import { TableRow } from '../types/table'\nimport { FolderNodeMap } from '../types/table'\nimport { AttributeModel, LoadingTasks } from '../types'\n\n/**\n * Generates an array of placeholder rows for loading state\n * @param attribs - Attribute models used to populate empty attribute fields\n * @param count - Number of loading rows to generate (default: 50)\n * @returns Array of TableRow objects with loading state\n */\nexport const generateLoadingRows = (\n attribs: { name: string }[],\n count = 50,\n { type = 'folder', parentId }: { type?: string; parentId?: string } = {},\n): TableRow[] => {\n return new Array(count).fill(0).map(\n (_, index): TableRow => ({\n id: `loading-${type}-${index}-${parentId}`,\n name: 'Loading...',\n status: 'Loading...',\n parentId: parentId,\n isLoading: true,\n label: 'Loading...',\n color: null,\n icon: null,\n img: null,\n entityType: type,\n ownAttrib: [],\n tags: [],\n subRows: [],\n path: '',\n attrib: attribs.reduce((acc: { [key: string]: null }, attrib) => {\n acc[attrib.name] = null\n return acc\n }, {}),\n }),\n )\n}\n\n/**\n * Generates an array of dummy attribute models for loading states\n * @param count - Number of dummy attributes to generate (default: 10)\n * @returns Array of AttributeModel objects\n */\nexport const generateDummyAttributes = (count = 10): AttributeModel[] => {\n return Array(count)\n .fill(null)\n .map((_, i): AttributeModel => {\n return {\n name: `loading-attribute${i}`,\n scope: ['folder', 'task'],\n data: {\n type: 'string',\n },\n position: i,\n }\n })\n}\n\n/**\n * Parameters for determineLoadingTaskFolders function\n */\nexport type DetermineLoadingTaskFoldersParams = {\n expandedFoldersTasks: { folderId: string | null }[]\n expandedParentIds: string[]\n foldersMap: FolderNodeMap\n}\n\n/**\n * Determines which folders are currently loading tasks\n * @param params - Object containing parameters for determining loading folders\n * @returns Array of folder IDs that are in loading state\n */\nexport const determineLoadingTaskFolders = ({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n}: DetermineLoadingTaskFoldersParams): LoadingTasks => {\n // find the folderIds that are being fetched (not the ones that are already loaded)\n const folderIds = expandedFoldersTasks.map((task) => task.folderId)\n const expandedParentIdsThatHaveTasks = expandedParentIds.filter(\n (id) => foldersMap.get(id)?.hasTasks,\n )\n const folderIdsSet = new Set(folderIds)\n const loadingParentIds = new Set<string>()\n for (const folderId of expandedParentIdsThatHaveTasks) {\n if (!folderIdsSet.has(folderId)) {\n loadingParentIds.add(folderId)\n }\n }\n\n const loadingTasks: LoadingTasks = {}\n for (const folderId of loadingParentIds) {\n // find the folder by id\n const folder = foldersMap.get(folderId)\n if (folder) {\n loadingTasks[folderId] = folder.taskNames?.length || 0\n }\n }\n\n return loadingTasks\n}\n"],"names":["_a"],"mappings":"AAUa,MAAA,sBAAsB,CACjC,SACA,QAAQ,IACR,EAAE,OAAO,UAAU,SAAmD,IAAA,OACvD;AACf,SAAO,IAAI,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE;AAAA,IAC9B,CAAC,GAAG,WAAqB;AAAA,MACvB,IAAI,WAAW,IAAI,IAAI,KAAK,IAAI,QAAQ;AAAA,MACxC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,WAAW,CAAC;AAAA,MACZ,MAAM,CAAC;AAAA,MACP,SAAS,CAAC;AAAA,MACV,MAAM;AAAA,MACN,QAAQ,QAAQ,OAAO,CAAC,KAA8B,WAAW;AAC3D,YAAA,OAAO,IAAI,IAAI;AACZ,eAAA;AAAA,MAAA,GACN,CAAE,CAAA;AAAA,IACP;AAAA,EACF;AACF;AAOa,MAAA,0BAA0B,CAAC,QAAQ,OAAyB;AAChE,SAAA,MAAM,KAAK,EACf,KAAK,IAAI,EACT,IAAI,CAAC,GAAG,MAAsB;AACtB,WAAA;AAAA,MACL,MAAM,oBAAoB,CAAC;AAAA,MAC3B,OAAO,CAAC,UAAU,MAAM;AAAA,MACxB,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EAAA,CACD;AACL;AAgBO,MAAM,8BAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACF,MAAuD;AAnE1C;AAqEX,QAAM,YAAY,qBAAqB,IAAI,CAAC,SAAS,KAAK,QAAQ;AAClE,QAAM,iCAAiC,kBAAkB;AAAA,IACvD,CAAC,OAAO;AAvEC,UAAAA;AAuED,cAAAA,MAAA,WAAW,IAAI,EAAE,MAAjB,gBAAAA,IAAoB;AAAA;AAAA,EAC9B;AACM,QAAA,eAAe,IAAI,IAAI,SAAS;AAChC,QAAA,uCAAuB,IAAY;AACzC,aAAW,YAAY,gCAAgC;AACrD,QAAI,CAAC,aAAa,IAAI,QAAQ,GAAG;AAC/B,uBAAiB,IAAI,QAAQ;AAAA,IAAA;AAAA,EAC/B;AAGF,QAAM,eAA6B,CAAC;AACpC,aAAW,YAAY,kBAAkB;AAEjC,UAAA,SAAS,WAAW,IAAI,QAAQ;AACtC,QAAI,QAAQ;AACV,mBAAa,QAAQ,MAAI,YAAO,cAAP,mBAAkB,WAAU;AAAA,IAAA;AAAA,EACvD;AAGK,SAAA;AACT;"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ const validateUpdateEntities = (entities = [], attribFields) => {
3
+ console.log(entities);
4
+ for (const { isAttrib, value: rawValue, field } of entities) {
5
+ if (!isAttrib) continue;
6
+ const attribute = attribFields.find((attr) => attr.name === field);
7
+ if (!attribute) continue;
8
+ let value = rawValue;
9
+ const { type } = attribute.data;
10
+ if (type === "integer" || type === "float") {
11
+ if (typeof rawValue === "string") {
12
+ if (rawValue.trim() === "" || isNaN(Number(rawValue))) {
13
+ throw new Error(`“${field}” must be a valid number`);
14
+ }
15
+ value = type === "integer" ? parseInt(rawValue, 10) : parseFloat(rawValue);
16
+ } else if (typeof rawValue !== "number") {
17
+ throw new Error(`“${field}” must be a valid number`);
18
+ }
19
+ }
20
+ const validationKeys = [
21
+ "ge",
22
+ "gt",
23
+ "le",
24
+ "lt",
25
+ "minLength",
26
+ "maxLength",
27
+ "minItems",
28
+ "maxItems"
29
+ ];
30
+ const validationValues = Object.entries(attribute.data).reduce((acc, [key, v]) => {
31
+ if (validationKeys.includes(key)) acc[key] = v;
32
+ return acc;
33
+ }, {});
34
+ const { ge, gt, le, lt, minLength, maxLength, minItems, maxItems } = validationValues;
35
+ const pattern = attribute.data.regex;
36
+ if (typeof value === "number") {
37
+ if (ge != null && value < ge) throw new Error(`“${field}” must be ≥ ${ge}`);
38
+ if (gt != null && value <= gt) throw new Error(`“${field}” must be > ${gt}`);
39
+ if (le != null && value > le) throw new Error(`“${field}” must be ≤ ${le}`);
40
+ if (lt != null && value >= lt) throw new Error(`“${field}” must be < ${lt}`);
41
+ } else if (typeof value === "string") {
42
+ if (minLength != null && value.length < minLength)
43
+ throw new Error(`“${field}” length must be ≥ ${minLength}`);
44
+ if (maxLength != null && value.length > maxLength)
45
+ throw new Error(`“${field}” length must be ≤ ${maxLength}`);
46
+ if (pattern && !new RegExp(pattern).test(value))
47
+ throw new Error(`“${field}” must match pattern ${pattern}`);
48
+ } else if (Array.isArray(value)) {
49
+ if (minItems != null && value.length < minItems)
50
+ throw new Error(`“${field}” items must be ≥ ${minItems}`);
51
+ if (maxItems != null && value.length > maxItems)
52
+ throw new Error(`“${field}” items must be ≤ ${maxItems}`);
53
+ }
54
+ }
55
+ };
56
+ module.exports = validateUpdateEntities;
57
+ //# sourceMappingURL=validateUpdateEntities.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateUpdateEntities.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/validateUpdateEntities.ts"],"sourcesContent":["import { AttributeData, ProjectTableAttribute } from '../types'\nimport { EntityUpdate } from '../hooks/useUpdateTableData'\n\nconst validateUpdateEntities = (\n entities: EntityUpdate[] = [],\n attribFields: ProjectTableAttribute[],\n) => {\n console.log(entities)\n // first validate the values are correct\n for (const { isAttrib, value: rawValue, field } of entities) {\n if (!isAttrib) continue\n const attribute = attribFields.find((attr) => attr.name === field)\n if (!attribute) continue\n\n // coerce numeric strings into numbers for integer/float types or fail\n let value: any = rawValue\n const { type } = attribute.data\n if (type === 'integer' || type === 'float') {\n if (typeof rawValue === 'string') {\n // empty or non‑numeric strings are invalid\n if (rawValue.trim() === '' || isNaN(Number(rawValue))) {\n throw new Error(`“${field}” must be a valid number`)\n }\n value = type === 'integer' ? parseInt(rawValue, 10) : parseFloat(rawValue)\n } else if (typeof rawValue !== 'number') {\n // any other type is invalid\n throw new Error(`“${field}” must be a valid number`)\n }\n }\n\n // collect numeric rules from attribute.data\n const validationKeys: (keyof AttributeData)[] = [\n 'ge',\n 'gt',\n 'le',\n 'lt',\n 'minLength',\n 'maxLength',\n 'minItems',\n 'maxItems',\n ]\n const validationValues = (\n Object.entries(attribute.data) as [keyof AttributeData, any][]\n ).reduce((acc, [key, v]) => {\n if (validationKeys.includes(key)) acc[key] = v as number\n return acc\n }, {} as Record<keyof AttributeData, number>)\n\n const { ge, gt, le, lt, minLength, maxLength, minItems, maxItems } = validationValues\n const pattern = attribute.data.regex\n\n if (typeof value === 'number') {\n if (ge != null && value < ge) throw new Error(`“${field}” must be ≥ ${ge}`)\n if (gt != null && value <= gt) throw new Error(`“${field}” must be > ${gt}`)\n if (le != null && value > le) throw new Error(`“${field}” must be ≤ ${le}`)\n if (lt != null && value >= lt) throw new Error(`“${field}” must be < ${lt}`)\n } else if (typeof value === 'string') {\n if (minLength != null && value.length < minLength)\n throw new Error(`“${field}” length must be ≥ ${minLength}`)\n if (maxLength != null && value.length > maxLength)\n throw new Error(`“${field}” length must be ≤ ${maxLength}`)\n if (pattern && !new RegExp(pattern).test(value))\n throw new Error(`“${field}” must match pattern ${pattern}`)\n } else if (Array.isArray(value)) {\n if (minItems != null && value.length < minItems)\n throw new Error(`“${field}” items must be ≥ ${minItems}`)\n if (maxItems != null && value.length > maxItems)\n throw new Error(`“${field}” items must be ≤ ${maxItems}`)\n }\n }\n}\n\nexport default validateUpdateEntities\n"],"names":[],"mappings":";AAGA,MAAM,yBAAyB,CAC7B,WAA2B,IAC3B,iBACG;AACH,UAAQ,IAAI,QAAQ;AAEpB,aAAW,EAAE,UAAU,OAAO,UAAU,WAAW,UAAU;AAC3D,QAAI,CAAC,SAAU;AACf,UAAM,YAAY,aAAa,KAAK,CAAC,SAAS,KAAK,SAAS,KAAK;AACjE,QAAI,CAAC,UAAW;AAGhB,QAAI,QAAa;AACX,UAAA,EAAE,SAAS,UAAU;AACvB,QAAA,SAAS,aAAa,SAAS,SAAS;AACtC,UAAA,OAAO,aAAa,UAAU;AAE5B,YAAA,SAAS,WAAW,MAAM,MAAM,OAAO,QAAQ,CAAC,GAAG;AACrD,gBAAM,IAAI,MAAM,IAAI,KAAK,0BAA0B;AAAA,QAAA;AAErD,gBAAQ,SAAS,YAAY,SAAS,UAAU,EAAE,IAAI,WAAW,QAAQ;AAAA,MAAA,WAChE,OAAO,aAAa,UAAU;AAEvC,cAAM,IAAI,MAAM,IAAI,KAAK,0BAA0B;AAAA,MAAA;AAAA,IACrD;AAIF,UAAM,iBAA0C;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,UAAM,mBACJ,OAAO,QAAQ,UAAU,IAAI,EAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;AAC1B,UAAI,eAAe,SAAS,GAAG,EAAG,KAAI,GAAG,IAAI;AACtC,aAAA;AAAA,IACT,GAAG,EAAyC;AAEtC,UAAA,EAAE,IAAI,IAAI,IAAI,IAAI,WAAW,WAAW,UAAU,SAAA,IAAa;AAC/D,UAAA,UAAU,UAAU,KAAK;AAE3B,QAAA,OAAO,UAAU,UAAU;AACzB,UAAA,MAAM,QAAQ,QAAQ,GAAI,OAAM,IAAI,MAAM,IAAI,KAAK,eAAe,EAAE,EAAE;AACtE,UAAA,MAAM,QAAQ,SAAS,GAAI,OAAM,IAAI,MAAM,IAAI,KAAK,eAAe,EAAE,EAAE;AACvE,UAAA,MAAM,QAAQ,QAAQ,GAAI,OAAM,IAAI,MAAM,IAAI,KAAK,eAAe,EAAE,EAAE;AACtE,UAAA,MAAM,QAAQ,SAAS,GAAI,OAAM,IAAI,MAAM,IAAI,KAAK,eAAe,EAAE,EAAE;AAAA,IAAA,WAClE,OAAO,UAAU,UAAU;AAChC,UAAA,aAAa,QAAQ,MAAM,SAAS;AACtC,cAAM,IAAI,MAAM,IAAI,KAAK,sBAAsB,SAAS,EAAE;AACxD,UAAA,aAAa,QAAQ,MAAM,SAAS;AACtC,cAAM,IAAI,MAAM,IAAI,KAAK,sBAAsB,SAAS,EAAE;AAC5D,UAAI,WAAW,CAAC,IAAI,OAAO,OAAO,EAAE,KAAK,KAAK;AAC5C,cAAM,IAAI,MAAM,IAAI,KAAK,wBAAwB,OAAO,EAAE;AAAA,IACnD,WAAA,MAAM,QAAQ,KAAK,GAAG;AAC3B,UAAA,YAAY,QAAQ,MAAM,SAAS;AACrC,cAAM,IAAI,MAAM,IAAI,KAAK,qBAAqB,QAAQ,EAAE;AACtD,UAAA,YAAY,QAAQ,MAAM,SAAS;AACrC,cAAM,IAAI,MAAM,IAAI,KAAK,qBAAqB,QAAQ,EAAE;AAAA,IAAA;AAAA,EAC5D;AAEJ;;"}
@@ -0,0 +1,58 @@
1
+ const validateUpdateEntities = (entities = [], attribFields) => {
2
+ console.log(entities);
3
+ for (const { isAttrib, value: rawValue, field } of entities) {
4
+ if (!isAttrib) continue;
5
+ const attribute = attribFields.find((attr) => attr.name === field);
6
+ if (!attribute) continue;
7
+ let value = rawValue;
8
+ const { type } = attribute.data;
9
+ if (type === "integer" || type === "float") {
10
+ if (typeof rawValue === "string") {
11
+ if (rawValue.trim() === "" || isNaN(Number(rawValue))) {
12
+ throw new Error(`“${field}” must be a valid number`);
13
+ }
14
+ value = type === "integer" ? parseInt(rawValue, 10) : parseFloat(rawValue);
15
+ } else if (typeof rawValue !== "number") {
16
+ throw new Error(`“${field}” must be a valid number`);
17
+ }
18
+ }
19
+ const validationKeys = [
20
+ "ge",
21
+ "gt",
22
+ "le",
23
+ "lt",
24
+ "minLength",
25
+ "maxLength",
26
+ "minItems",
27
+ "maxItems"
28
+ ];
29
+ const validationValues = Object.entries(attribute.data).reduce((acc, [key, v]) => {
30
+ if (validationKeys.includes(key)) acc[key] = v;
31
+ return acc;
32
+ }, {});
33
+ const { ge, gt, le, lt, minLength, maxLength, minItems, maxItems } = validationValues;
34
+ const pattern = attribute.data.regex;
35
+ if (typeof value === "number") {
36
+ if (ge != null && value < ge) throw new Error(`“${field}” must be ≥ ${ge}`);
37
+ if (gt != null && value <= gt) throw new Error(`“${field}” must be > ${gt}`);
38
+ if (le != null && value > le) throw new Error(`“${field}” must be ≤ ${le}`);
39
+ if (lt != null && value >= lt) throw new Error(`“${field}” must be < ${lt}`);
40
+ } else if (typeof value === "string") {
41
+ if (minLength != null && value.length < minLength)
42
+ throw new Error(`“${field}” length must be ≥ ${minLength}`);
43
+ if (maxLength != null && value.length > maxLength)
44
+ throw new Error(`“${field}” length must be ≤ ${maxLength}`);
45
+ if (pattern && !new RegExp(pattern).test(value))
46
+ throw new Error(`“${field}” must match pattern ${pattern}`);
47
+ } else if (Array.isArray(value)) {
48
+ if (minItems != null && value.length < minItems)
49
+ throw new Error(`“${field}” items must be ≥ ${minItems}`);
50
+ if (maxItems != null && value.length > maxItems)
51
+ throw new Error(`“${field}” items must be ≤ ${maxItems}`);
52
+ }
53
+ }
54
+ };
55
+ export {
56
+ validateUpdateEntities as default
57
+ };
58
+ //# sourceMappingURL=validateUpdateEntities.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateUpdateEntities.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/validateUpdateEntities.ts"],"sourcesContent":["import { AttributeData, ProjectTableAttribute } from '../types'\nimport { EntityUpdate } from '../hooks/useUpdateTableData'\n\nconst validateUpdateEntities = (\n entities: EntityUpdate[] = [],\n attribFields: ProjectTableAttribute[],\n) => {\n console.log(entities)\n // first validate the values are correct\n for (const { isAttrib, value: rawValue, field } of entities) {\n if (!isAttrib) continue\n const attribute = attribFields.find((attr) => attr.name === field)\n if (!attribute) continue\n\n // coerce numeric strings into numbers for integer/float types or fail\n let value: any = rawValue\n const { type } = attribute.data\n if (type === 'integer' || type === 'float') {\n if (typeof rawValue === 'string') {\n // empty or non‑numeric strings are invalid\n if (rawValue.trim() === '' || isNaN(Number(rawValue))) {\n throw new Error(`“${field}” must be a valid number`)\n }\n value = type === 'integer' ? parseInt(rawValue, 10) : parseFloat(rawValue)\n } else if (typeof rawValue !== 'number') {\n // any other type is invalid\n throw new Error(`“${field}” must be a valid number`)\n }\n }\n\n // collect numeric rules from attribute.data\n const validationKeys: (keyof AttributeData)[] = [\n 'ge',\n 'gt',\n 'le',\n 'lt',\n 'minLength',\n 'maxLength',\n 'minItems',\n 'maxItems',\n ]\n const validationValues = (\n Object.entries(attribute.data) as [keyof AttributeData, any][]\n ).reduce((acc, [key, v]) => {\n if (validationKeys.includes(key)) acc[key] = v as number\n return acc\n }, {} as Record<keyof AttributeData, number>)\n\n const { ge, gt, le, lt, minLength, maxLength, minItems, maxItems } = validationValues\n const pattern = attribute.data.regex\n\n if (typeof value === 'number') {\n if (ge != null && value < ge) throw new Error(`“${field}” must be ≥ ${ge}`)\n if (gt != null && value <= gt) throw new Error(`“${field}” must be > ${gt}`)\n if (le != null && value > le) throw new Error(`“${field}” must be ≤ ${le}`)\n if (lt != null && value >= lt) throw new Error(`“${field}” must be < ${lt}`)\n } else if (typeof value === 'string') {\n if (minLength != null && value.length < minLength)\n throw new Error(`“${field}” length must be ≥ ${minLength}`)\n if (maxLength != null && value.length > maxLength)\n throw new Error(`“${field}” length must be ≤ ${maxLength}`)\n if (pattern && !new RegExp(pattern).test(value))\n throw new Error(`“${field}” must match pattern ${pattern}`)\n } else if (Array.isArray(value)) {\n if (minItems != null && value.length < minItems)\n throw new Error(`“${field}” items must be ≥ ${minItems}`)\n if (maxItems != null && value.length > maxItems)\n throw new Error(`“${field}” items must be ≤ ${maxItems}`)\n }\n }\n}\n\nexport default validateUpdateEntities\n"],"names":[],"mappings":"AAGA,MAAM,yBAAyB,CAC7B,WAA2B,IAC3B,iBACG;AACH,UAAQ,IAAI,QAAQ;AAEpB,aAAW,EAAE,UAAU,OAAO,UAAU,WAAW,UAAU;AAC3D,QAAI,CAAC,SAAU;AACf,UAAM,YAAY,aAAa,KAAK,CAAC,SAAS,KAAK,SAAS,KAAK;AACjE,QAAI,CAAC,UAAW;AAGhB,QAAI,QAAa;AACX,UAAA,EAAE,SAAS,UAAU;AACvB,QAAA,SAAS,aAAa,SAAS,SAAS;AACtC,UAAA,OAAO,aAAa,UAAU;AAE5B,YAAA,SAAS,WAAW,MAAM,MAAM,OAAO,QAAQ,CAAC,GAAG;AACrD,gBAAM,IAAI,MAAM,IAAI,KAAK,0BAA0B;AAAA,QAAA;AAErD,gBAAQ,SAAS,YAAY,SAAS,UAAU,EAAE,IAAI,WAAW,QAAQ;AAAA,MAAA,WAChE,OAAO,aAAa,UAAU;AAEvC,cAAM,IAAI,MAAM,IAAI,KAAK,0BAA0B;AAAA,MAAA;AAAA,IACrD;AAIF,UAAM,iBAA0C;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,UAAM,mBACJ,OAAO,QAAQ,UAAU,IAAI,EAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;AAC1B,UAAI,eAAe,SAAS,GAAG,EAAG,KAAI,GAAG,IAAI;AACtC,aAAA;AAAA,IACT,GAAG,EAAyC;AAEtC,UAAA,EAAE,IAAI,IAAI,IAAI,IAAI,WAAW,WAAW,UAAU,SAAA,IAAa;AAC/D,UAAA,UAAU,UAAU,KAAK;AAE3B,QAAA,OAAO,UAAU,UAAU;AACzB,UAAA,MAAM,QAAQ,QAAQ,GAAI,OAAM,IAAI,MAAM,IAAI,KAAK,eAAe,EAAE,EAAE;AACtE,UAAA,MAAM,QAAQ,SAAS,GAAI,OAAM,IAAI,MAAM,IAAI,KAAK,eAAe,EAAE,EAAE;AACvE,UAAA,MAAM,QAAQ,QAAQ,GAAI,OAAM,IAAI,MAAM,IAAI,KAAK,eAAe,EAAE,EAAE;AACtE,UAAA,MAAM,QAAQ,SAAS,GAAI,OAAM,IAAI,MAAM,IAAI,KAAK,eAAe,EAAE,EAAE;AAAA,IAAA,WAClE,OAAO,UAAU,UAAU;AAChC,UAAA,aAAa,QAAQ,MAAM,SAAS;AACtC,cAAM,IAAI,MAAM,IAAI,KAAK,sBAAsB,SAAS,EAAE;AACxD,UAAA,aAAa,QAAQ,MAAM,SAAS;AACtC,cAAM,IAAI,MAAM,IAAI,KAAK,sBAAsB,SAAS,EAAE;AAC5D,UAAI,WAAW,CAAC,IAAI,OAAO,OAAO,EAAE,KAAK,KAAK;AAC5C,cAAM,IAAI,MAAM,IAAI,KAAK,wBAAwB,OAAO,EAAE;AAAA,IACnD,WAAA,MAAM,QAAQ,KAAK,GAAG;AAC3B,UAAA,YAAY,QAAQ,MAAM,SAAS;AACrC,cAAM,IAAI,MAAM,IAAI,KAAK,qBAAqB,QAAQ,EAAE;AACtD,UAAA,YAAY,QAAQ,MAAM,SAAS;AACrC,cAAM,IAAI,MAAM,IAAI,KAAK,qBAAqB,QAAQ,EAAE;AAAA,IAAA;AAAA,EAC5D;AAEJ;"}
@@ -105,6 +105,16 @@ const EditorCellComponent = ({
105
105
  }
106
106
  case !!options.length: {
107
107
  const enumValue = Array.isArray(value) ? value : [value];
108
+ if (isReadOnly) {
109
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
110
+ TextWidget.TextWidget,
111
+ {
112
+ value: enumValue.join(", "),
113
+ option: enumValue.length === 1 ? options.find((o) => o.value === enumValue[0]) : void 0,
114
+ ...sharedProps
115
+ }
116
+ );
117
+ }
108
118
  return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
109
119
  EnumWidget.EnumWidget,
110
120
  {
@@ -1 +1 @@
1
- {"version":3,"file":"CellWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/CellWidget.tsx"],"sourcesContent":["import { useMemo, memo, useCallback, useRef, FC } from 'react'\nimport styled from 'styled-components'\n\n// Widgets\nimport { BooleanWidget, BooleanWidgetProps } from './BooleanWidget'\nimport { CollapsedWidget } from './CollapsedWidget'\nimport { DateWidget, DateWidgetProps } from './DateWidget'\nimport { EnumWidget, EnumWidgetProps } from './EnumWidget'\nimport { TextWidget, TextWidgetProps, TextWidgetType } from './TextWidget'\n\n// Contexts\nimport { useCellEditing } from '../context/CellEditingContext'\n\n// Utils\nimport { getCellId } from '../utils/cellUtils'\nimport clsx from 'clsx'\nimport { useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { AttributeData, AttributeEnumItem } from '../types'\n\nconst Cell = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n\n &:focus-visible {\n outline: none;\n }\n\n &.inherited {\n opacity: 0.6;\n font-style: italic;\n }\n\n &.loading {\n inset: 4px;\n border-radius: 4px;\n opacity: 1;\n }\n`\n\ntype WidgetAttributeData = Pick<AttributeData, 'type'>\n\nexport type CellValue = string | number | boolean\n\ninterface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n rowId: string\n columnId: string\n value: CellValue | CellValue[]\n attributeData?: WidgetAttributeData\n options?: AttributeEnumItem[]\n isCollapsed?: boolean\n isInherited?: boolean\n isPlaceholder?: boolean\n isFocused?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n onChange?: (value: CellValue | CellValue[], key?: 'Enter' | 'Click' | 'Escape') => void\n // options passthrough props\n pt?: {\n enum?: Partial<EnumWidgetProps>\n text?: Partial<TextWidgetProps>\n date?: Partial<DateWidgetProps>\n boolean?: Partial<BooleanWidgetProps>\n }\n}\n\nexport interface WidgetBaseProps {\n isEditing?: boolean\n onChange: Required<EditorCellProps>['onChange']\n onCancelEdit?: () => void\n}\n\nconst EditorCellComponent: FC<EditorCellProps> = ({\n rowId,\n columnId,\n value,\n attributeData,\n options = [],\n isCollapsed,\n isInherited,\n isPlaceholder,\n isReadOnly,\n enableCustomValues,\n onChange,\n pt,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const type = attributeData?.type\n\n const { isEditing, setEditingCellId } = useCellEditing()\n const { isCellFocused, gridMap, selectCell, focusCell } = useSelectionCellsContext()\n const cellId = getCellId(rowId, columnId)\n\n const isCurrentCellEditing = isEditing(cellId)\n const isCurrentCellFocused = isCellFocused(cellId)\n\n const handleDoubleClick = useCallback(() => {\n if (isPlaceholder || isReadOnly) return\n setEditingCellId(cellId)\n }, [cellId, setEditingCellId, isPlaceholder])\n\n const handleSingleClick = () => {\n // clicking a cell that is not editing will close the editor on this cell\n if (!isCurrentCellEditing) {\n setEditingCellId(null)\n }\n }\n\n const moveToNextRow = () => {\n const rowIndex = gridMap.rowIdToIndex.get(rowId)\n if (rowIndex === undefined) return\n const newRowId = gridMap.indexToRowId.get(rowIndex + 1)\n if (newRowId) {\n const newCellId = getCellId(newRowId, columnId)\n selectCell(newCellId, false, false)\n focusCell(newCellId)\n setEditingCellId(newCellId)\n }\n }\n\n const handleOnChange: WidgetBaseProps['onChange'] = (newValue, key) => {\n setEditingCellId(null)\n if (isReadOnly) return\n // move to the next cell row\n key === 'Enter' && moveToNextRow()\n // make change if the value is different or if the key is 'Enter'\n if (newValue !== value || key === 'Enter') {\n onChange?.(newValue, key)\n }\n }\n\n const handleCancel = () => {\n setEditingCellId(null)\n }\n\n const widget = useMemo(() => {\n // Common props shared across all widgets\n const sharedProps: WidgetBaseProps = {\n onChange: handleOnChange,\n onCancelEdit: handleCancel,\n isEditing: isCurrentCellEditing,\n }\n\n const textTypes: TextWidgetType[] = ['string', 'integer', 'float']\n\n // Determine widget type based on attribute type\n switch (true) {\n // this is showing the collapsed widget (dot)\n case isCollapsed: {\n // if enum, find the first selected option and get its color\n const firstSelectedOption = type?.includes('list')\n ? options.find((option) =>\n Array.isArray(value) ? value.includes(option.value) : value === option.value,\n )\n : undefined\n const color = firstSelectedOption?.color\n return <CollapsedWidget color={color} />\n }\n\n case !!options.length: {\n const enumValue = Array.isArray(value) ? value : [value]\n return (\n <EnumWidget\n value={enumValue}\n options={options}\n type={type}\n onOpen={() => !isReadOnly && setEditingCellId(cellId)}\n enableCustomValues={enableCustomValues}\n {...sharedProps}\n {...pt?.enum}\n />\n )\n }\n\n case textTypes.includes(type as TextWidgetType):\n return (\n <TextWidget\n value={value as string}\n isInherited={isInherited}\n {...sharedProps}\n {...pt?.text}\n />\n )\n\n case type === 'datetime':\n return (\n <DateWidget\n value={value ? (value as string) : undefined}\n isInherited={isInherited}\n {...sharedProps}\n {...pt?.date}\n />\n )\n\n case type === 'boolean':\n return <BooleanWidget value={value as boolean} {...sharedProps} {...pt?.boolean} />\n\n case isPlaceholder:\n return null\n\n default:\n // TODO: We should not allow editing unrecognized types\n // At this point, only list_of_strings without proper options is unrecognized\n // (tags if not tags are specified in anatomy) and in that case, validation\n // on the server fails with a string value. Unless we have a widget that\n // accepts a string value AND options at the same time we shouldn't show\n // any edit widget\n\n //console.log(`Unrecognized type \"${type}\" for cell ${cellId}.`)\n return null\n }\n }, [cellId, value, type, isCurrentCellEditing, options, isCollapsed])\n\n return (\n <Cell\n {...props}\n className={clsx(props.className, { inherited: isInherited && !isCurrentCellEditing })}\n ref={ref}\n onDoubleClick={handleDoubleClick}\n onClick={handleSingleClick}\n id={cellId}\n data-tooltip={\n isInherited && !isCurrentCellEditing && isCurrentCellFocused ? 'Inherited' : undefined\n }\n data-tooltip-delay={200}\n >\n {widget}\n </Cell>\n )\n}\n\n// Custom comparison function for memo\nfunction arePropsEqual(prevProps: EditorCellProps, nextProps: EditorCellProps) {\n // Only re-render if these props change\n return (\n prevProps.rowId === nextProps.rowId &&\n prevProps.columnId === nextProps.columnId &&\n prevProps.isCollapsed === nextProps.isCollapsed &&\n JSON.stringify(prevProps.value) === JSON.stringify(nextProps.value) &&\n prevProps?.attributeData?.type === nextProps?.attributeData?.type &&\n // Only check options length for list types to avoid deep comparison\n ((!prevProps?.attributeData?.type.includes('list') &&\n !nextProps?.attributeData?.type.includes('list')) ||\n prevProps.options?.length === nextProps.options?.length) &&\n prevProps.isInherited === nextProps.isInherited &&\n prevProps.enableCustomValues === nextProps.enableCustomValues &&\n prevProps.isReadOnly === nextProps.isReadOnly &&\n prevProps.isPlaceholder === nextProps.isPlaceholder &&\n prevProps.isFocused === nextProps.isFocused &&\n prevProps.isCollapsed === nextProps.isCollapsed\n )\n}\n\nexport const CellWidget = memo(EditorCellComponent, arePropsEqual)\n"],"names":["useRef","useCellEditing","useSelectionCellsContext","getCellId","useCallback","useMemo","jsx","CollapsedWidget","EnumWidget","TextWidget","DateWidget","BooleanWidget","memo"],"mappings":"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"}
1
+ {"version":3,"file":"CellWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/CellWidget.tsx"],"sourcesContent":["import { useMemo, memo, useCallback, useRef, FC } from 'react'\nimport styled from 'styled-components'\n\n// Widgets\nimport { BooleanWidget, BooleanWidgetProps } from './BooleanWidget'\nimport { CollapsedWidget } from './CollapsedWidget'\nimport { DateWidget, DateWidgetProps } from './DateWidget'\nimport { EnumWidget, EnumWidgetProps } from './EnumWidget'\nimport { TextWidget, TextWidgetProps, TextWidgetType } from './TextWidget'\n\n// Contexts\nimport { useCellEditing } from '../context/CellEditingContext'\n\n// Utils\nimport { getCellId } from '../utils/cellUtils'\nimport clsx from 'clsx'\nimport { useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { AttributeData, AttributeEnumItem } from '../types'\n\nconst Cell = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n\n &:focus-visible {\n outline: none;\n }\n\n &.inherited {\n opacity: 0.6;\n font-style: italic;\n }\n\n &.loading {\n inset: 4px;\n border-radius: 4px;\n opacity: 1;\n }\n`\n\ntype WidgetAttributeData = Pick<AttributeData, 'type'>\n\nexport type CellValue = string | number | boolean\n\ninterface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n rowId: string\n columnId: string\n value: CellValue | CellValue[]\n attributeData?: WidgetAttributeData\n options?: AttributeEnumItem[]\n isCollapsed?: boolean\n isInherited?: boolean\n isPlaceholder?: boolean\n isFocused?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n onChange?: (value: CellValue | CellValue[], key?: 'Enter' | 'Click' | 'Escape') => void\n // options passthrough props\n pt?: {\n enum?: Partial<EnumWidgetProps>\n text?: Partial<TextWidgetProps>\n date?: Partial<DateWidgetProps>\n boolean?: Partial<BooleanWidgetProps>\n }\n}\n\nexport interface WidgetBaseProps {\n isEditing?: boolean\n onChange: Required<EditorCellProps>['onChange']\n onCancelEdit?: () => void\n}\n\nconst EditorCellComponent: FC<EditorCellProps> = ({\n rowId,\n columnId,\n value,\n attributeData,\n options = [],\n isCollapsed,\n isInherited,\n isPlaceholder,\n isReadOnly,\n enableCustomValues,\n onChange,\n pt,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const type = attributeData?.type\n\n const { isEditing, setEditingCellId } = useCellEditing()\n const { isCellFocused, gridMap, selectCell, focusCell } = useSelectionCellsContext()\n const cellId = getCellId(rowId, columnId)\n\n const isCurrentCellEditing = isEditing(cellId)\n const isCurrentCellFocused = isCellFocused(cellId)\n\n const handleDoubleClick = useCallback(() => {\n if (isPlaceholder || isReadOnly) return\n setEditingCellId(cellId)\n }, [cellId, setEditingCellId, isPlaceholder])\n\n const handleSingleClick = () => {\n // clicking a cell that is not editing will close the editor on this cell\n if (!isCurrentCellEditing) {\n setEditingCellId(null)\n }\n }\n\n const moveToNextRow = () => {\n const rowIndex = gridMap.rowIdToIndex.get(rowId)\n if (rowIndex === undefined) return\n const newRowId = gridMap.indexToRowId.get(rowIndex + 1)\n if (newRowId) {\n const newCellId = getCellId(newRowId, columnId)\n selectCell(newCellId, false, false)\n focusCell(newCellId)\n setEditingCellId(newCellId)\n }\n }\n\n const handleOnChange: WidgetBaseProps['onChange'] = (newValue, key) => {\n setEditingCellId(null)\n if (isReadOnly) return\n // move to the next cell row\n key === 'Enter' && moveToNextRow()\n // make change if the value is different or if the key is 'Enter'\n if (newValue !== value || key === 'Enter') {\n onChange?.(newValue, key)\n }\n }\n\n const handleCancel = () => {\n setEditingCellId(null)\n }\n\n const widget = useMemo(() => {\n // Common props shared across all widgets\n const sharedProps: WidgetBaseProps = {\n onChange: handleOnChange,\n onCancelEdit: handleCancel,\n isEditing: isCurrentCellEditing,\n }\n\n const textTypes: TextWidgetType[] = ['string', 'integer', 'float']\n\n // Determine widget type based on attribute type\n switch (true) {\n // this is showing the collapsed widget (dot)\n case isCollapsed: {\n // if enum, find the first selected option and get its color\n const firstSelectedOption = type?.includes('list')\n ? options.find((option) =>\n Array.isArray(value) ? value.includes(option.value) : value === option.value,\n )\n : undefined\n const color = firstSelectedOption?.color\n return <CollapsedWidget color={color} />\n }\n\n case !!options.length: {\n const enumValue = Array.isArray(value) ? value : [value]\n if (isReadOnly) {\n return (\n <TextWidget\n value={enumValue.join(', ')}\n option={\n enumValue.length === 1 ? options.find((o) => o.value === enumValue[0]) : undefined\n }\n {...sharedProps}\n />\n )\n }\n return (\n <EnumWidget\n value={enumValue}\n options={options}\n type={type}\n onOpen={() => !isReadOnly && setEditingCellId(cellId)}\n enableCustomValues={enableCustomValues}\n {...sharedProps}\n {...pt?.enum}\n />\n )\n }\n\n case textTypes.includes(type as TextWidgetType):\n return (\n <TextWidget\n value={value as string}\n isInherited={isInherited}\n {...sharedProps}\n {...pt?.text}\n />\n )\n\n case type === 'datetime':\n return (\n <DateWidget\n value={value ? (value as string) : undefined}\n isInherited={isInherited}\n {...sharedProps}\n {...pt?.date}\n />\n )\n\n case type === 'boolean':\n return <BooleanWidget value={value as boolean} {...sharedProps} {...pt?.boolean} />\n\n case isPlaceholder:\n return null\n\n default:\n // TODO: We should not allow editing unrecognized types\n // At this point, only list_of_strings without proper options is unrecognized\n // (tags if not tags are specified in anatomy) and in that case, validation\n // on the server fails with a string value. Unless we have a widget that\n // accepts a string value AND options at the same time we shouldn't show\n // any edit widget\n\n //console.log(`Unrecognized type \"${type}\" for cell ${cellId}.`)\n return null\n }\n }, [cellId, value, type, isCurrentCellEditing, options, isCollapsed])\n\n return (\n <Cell\n {...props}\n className={clsx(props.className, { inherited: isInherited && !isCurrentCellEditing })}\n ref={ref}\n onDoubleClick={handleDoubleClick}\n onClick={handleSingleClick}\n id={cellId}\n data-tooltip={\n isInherited && !isCurrentCellEditing && isCurrentCellFocused ? 'Inherited' : undefined\n }\n data-tooltip-delay={200}\n >\n {widget}\n </Cell>\n )\n}\n\n// Custom comparison function for memo\nfunction arePropsEqual(prevProps: EditorCellProps, nextProps: EditorCellProps) {\n // Only re-render if these props change\n return (\n prevProps.rowId === nextProps.rowId &&\n prevProps.columnId === nextProps.columnId &&\n prevProps.isCollapsed === nextProps.isCollapsed &&\n JSON.stringify(prevProps.value) === JSON.stringify(nextProps.value) &&\n prevProps?.attributeData?.type === nextProps?.attributeData?.type &&\n // Only check options length for list types to avoid deep comparison\n ((!prevProps?.attributeData?.type.includes('list') &&\n !nextProps?.attributeData?.type.includes('list')) ||\n prevProps.options?.length === nextProps.options?.length) &&\n prevProps.isInherited === nextProps.isInherited &&\n prevProps.enableCustomValues === nextProps.enableCustomValues &&\n prevProps.isReadOnly === nextProps.isReadOnly &&\n prevProps.isPlaceholder === nextProps.isPlaceholder &&\n prevProps.isFocused === nextProps.isFocused &&\n prevProps.isCollapsed === nextProps.isCollapsed\n )\n}\n\nexport const CellWidget = memo(EditorCellComponent, arePropsEqual)\n"],"names":["useRef","useCellEditing","useSelectionCellsContext","getCellId","useCallback","useMemo","jsx","CollapsedWidget","TextWidget","EnumWidget","DateWidget","BooleanWidget","memo"],"mappings":";;;;;;;;;;;;;;AAmBA,MAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuDpB,MAAM,sBAA2C,CAAC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACE,QAAA,MAAMA,aAAuB,IAAI;AACvC,QAAM,OAAO,+CAAe;AAE5B,QAAM,EAAE,WAAW,iBAAiB,IAAIC,kCAAe;AACvD,QAAM,EAAE,eAAe,SAAS,YAAY,UAAA,IAAcC,sBAAAA,yBAAyB;AAC7E,QAAA,SAASC,UAAAA,UAAU,OAAO,QAAQ;AAElC,QAAA,uBAAuB,UAAU,MAAM;AACvC,QAAA,uBAAuB,cAAc,MAAM;AAE3C,QAAA,oBAAoBC,MAAAA,YAAY,MAAM;AAC1C,QAAI,iBAAiB,WAAY;AACjC,qBAAiB,MAAM;AAAA,EACtB,GAAA,CAAC,QAAQ,kBAAkB,aAAa,CAAC;AAE5C,QAAM,oBAAoB,MAAM;AAE9B,QAAI,CAAC,sBAAsB;AACzB,uBAAiB,IAAI;AAAA,IAAA;AAAA,EAEzB;AAEA,QAAM,gBAAgB,MAAM;AAC1B,UAAM,WAAW,QAAQ,aAAa,IAAI,KAAK;AAC/C,QAAI,aAAa,OAAW;AAC5B,UAAM,WAAW,QAAQ,aAAa,IAAI,WAAW,CAAC;AACtD,QAAI,UAAU;AACN,YAAA,YAAYD,UAAAA,UAAU,UAAU,QAAQ;AACnC,iBAAA,WAAW,OAAO,KAAK;AAClC,gBAAU,SAAS;AACnB,uBAAiB,SAAS;AAAA,IAAA;AAAA,EAE9B;AAEM,QAAA,iBAA8C,CAAC,UAAU,QAAQ;AACrE,qBAAiB,IAAI;AACrB,QAAI,WAAY;AAEhB,YAAQ,WAAW,cAAc;AAE7B,QAAA,aAAa,SAAS,QAAQ,SAAS;AACzC,2CAAW,UAAU;AAAA,IAAG;AAAA,EAE5B;AAEA,QAAM,eAAe,MAAM;AACzB,qBAAiB,IAAI;AAAA,EACvB;AAEM,QAAA,SAASE,MAAAA,QAAQ,MAAM;AAE3B,UAAM,cAA+B;AAAA,MACnC,UAAU;AAAA,MACV,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAEA,UAAM,YAA8B,CAAC,UAAU,WAAW,OAAO;AAGjE,YAAQ,MAAM;AAAA;AAAA,MAEZ,KAAK,aAAa;AAEhB,cAAM,uBAAsB,6BAAM,SAAS,WACvC,QAAQ;AAAA,UAAK,CAAC,WACZ,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS,OAAO,KAAK,IAAI,UAAU,OAAO;AAAA,QAAA,IAEzE;AACJ,cAAM,QAAQ,2DAAqB;AAC5B,eAAAC,iDAACC,gBAAAA,mBAAgB,OAAc;AAAA,MAAA;AAAA,MAGxC,KAAK,CAAC,CAAC,QAAQ,QAAQ;AACrB,cAAM,YAAY,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AACvD,YAAI,YAAY;AAEZ,iBAAAD,2BAAA,kBAAA;AAAA,YAACE,WAAA;AAAA,YAAA;AAAA,cACC,OAAO,UAAU,KAAK,IAAI;AAAA,cAC1B,QACE,UAAU,WAAW,IAAI,QAAQ,KAAK,CAAC,MAAM,EAAE,UAAU,UAAU,CAAC,CAAC,IAAI;AAAA,cAE1E,GAAG;AAAA,YAAA;AAAA,UACN;AAAA,QAAA;AAIF,eAAAF,2BAAA,kBAAA;AAAA,UAACG,WAAA;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,YACP;AAAA,YACA;AAAA,YACA,QAAQ,MAAM,CAAC,cAAc,iBAAiB,MAAM;AAAA,YACpD;AAAA,YACC,GAAG;AAAA,YACH,GAAG,yBAAI;AAAA,UAAA;AAAA,QACV;AAAA,MAAA;AAAA,MAIJ,KAAK,UAAU,SAAS,IAAsB;AAE1C,eAAAH,2BAAA,kBAAA;AAAA,UAACE,WAAA;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACC,GAAG;AAAA,YACH,GAAG,yBAAI;AAAA,UAAA;AAAA,QACV;AAAA,MAGJ,KAAK,SAAS;AAEV,eAAAF,2BAAA,kBAAA;AAAA,UAACI,WAAA;AAAA,UAAA;AAAA,YACC,OAAO,QAAS,QAAmB;AAAA,YACnC;AAAA,YACC,GAAG;AAAA,YACH,GAAG,yBAAI;AAAA,UAAA;AAAA,QACV;AAAA,MAGJ,KAAK,SAAS;AACZ,gEAAQC,cAAc,eAAA,EAAA,OAA0B,GAAG,aAAc,GAAG,yBAAI,SAAS;AAAA,MAEnF,KAAK;AACI,eAAA;AAAA,MAET;AASS,eAAA;AAAA,IAAA;AAAA,EACX,GACC,CAAC,QAAQ,OAAO,MAAM,sBAAsB,SAAS,WAAW,CAAC;AAGlE,SAAAL,2BAAA,kBAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW,KAAK,MAAM,WAAW,EAAE,WAAW,eAAe,CAAC,sBAAsB;AAAA,MACpF;AAAA,MACA,eAAe;AAAA,MACf,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,gBACE,eAAe,CAAC,wBAAwB,uBAAuB,cAAc;AAAA,MAE/E,sBAAoB;AAAA,MAEnB,UAAA;AAAA,IAAA;AAAA,EACH;AAEJ;AAGA,SAAS,cAAc,WAA4B,WAA4B;;AAG3E,SAAA,UAAU,UAAU,UAAU,SAC9B,UAAU,aAAa,UAAU,YACjC,UAAU,gBAAgB,UAAU,eACpC,KAAK,UAAU,UAAU,KAAK,MAAM,KAAK,UAAU,UAAU,KAAK,OAClE,4CAAW,kBAAX,mBAA0B,YAAS,4CAAW,kBAAX,mBAA0B;AAAA,GAE3D,GAAC,4CAAW,kBAAX,mBAA0B,KAAK,SAAS,YACzC,GAAC,4CAAW,kBAAX,mBAA0B,KAAK,SAAS,cACzC,eAAU,YAAV,mBAAmB,cAAW,eAAU,YAAV,mBAAmB,YACnD,UAAU,gBAAgB,UAAU,eACpC,UAAU,uBAAuB,UAAU,sBAC3C,UAAU,eAAe,UAAU,cACnC,UAAU,kBAAkB,UAAU,iBACtC,UAAU,cAAc,UAAU,aAClC,UAAU,gBAAgB,UAAU;AAExC;AAEa,MAAA,aAAaM,MAAAA,KAAK,qBAAqB,aAAa;;"}
@@ -103,6 +103,16 @@ const EditorCellComponent = ({
103
103
  }
104
104
  case !!options.length: {
105
105
  const enumValue = Array.isArray(value) ? value : [value];
106
+ if (isReadOnly) {
107
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
108
+ TextWidget,
109
+ {
110
+ value: enumValue.join(", "),
111
+ option: enumValue.length === 1 ? options.find((o) => o.value === enumValue[0]) : void 0,
112
+ ...sharedProps
113
+ }
114
+ );
115
+ }
106
116
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
107
117
  EnumWidget,
108
118
  {
@@ -1 +1 @@
1
- {"version":3,"file":"CellWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/CellWidget.tsx"],"sourcesContent":["import { useMemo, memo, useCallback, useRef, FC } from 'react'\nimport styled from 'styled-components'\n\n// Widgets\nimport { BooleanWidget, BooleanWidgetProps } from './BooleanWidget'\nimport { CollapsedWidget } from './CollapsedWidget'\nimport { DateWidget, DateWidgetProps } from './DateWidget'\nimport { EnumWidget, EnumWidgetProps } from './EnumWidget'\nimport { TextWidget, TextWidgetProps, TextWidgetType } from './TextWidget'\n\n// Contexts\nimport { useCellEditing } from '../context/CellEditingContext'\n\n// Utils\nimport { getCellId } from '../utils/cellUtils'\nimport clsx from 'clsx'\nimport { useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { AttributeData, AttributeEnumItem } from '../types'\n\nconst Cell = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n\n &:focus-visible {\n outline: none;\n }\n\n &.inherited {\n opacity: 0.6;\n font-style: italic;\n }\n\n &.loading {\n inset: 4px;\n border-radius: 4px;\n opacity: 1;\n }\n`\n\ntype WidgetAttributeData = Pick<AttributeData, 'type'>\n\nexport type CellValue = string | number | boolean\n\ninterface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n rowId: string\n columnId: string\n value: CellValue | CellValue[]\n attributeData?: WidgetAttributeData\n options?: AttributeEnumItem[]\n isCollapsed?: boolean\n isInherited?: boolean\n isPlaceholder?: boolean\n isFocused?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n onChange?: (value: CellValue | CellValue[], key?: 'Enter' | 'Click' | 'Escape') => void\n // options passthrough props\n pt?: {\n enum?: Partial<EnumWidgetProps>\n text?: Partial<TextWidgetProps>\n date?: Partial<DateWidgetProps>\n boolean?: Partial<BooleanWidgetProps>\n }\n}\n\nexport interface WidgetBaseProps {\n isEditing?: boolean\n onChange: Required<EditorCellProps>['onChange']\n onCancelEdit?: () => void\n}\n\nconst EditorCellComponent: FC<EditorCellProps> = ({\n rowId,\n columnId,\n value,\n attributeData,\n options = [],\n isCollapsed,\n isInherited,\n isPlaceholder,\n isReadOnly,\n enableCustomValues,\n onChange,\n pt,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const type = attributeData?.type\n\n const { isEditing, setEditingCellId } = useCellEditing()\n const { isCellFocused, gridMap, selectCell, focusCell } = useSelectionCellsContext()\n const cellId = getCellId(rowId, columnId)\n\n const isCurrentCellEditing = isEditing(cellId)\n const isCurrentCellFocused = isCellFocused(cellId)\n\n const handleDoubleClick = useCallback(() => {\n if (isPlaceholder || isReadOnly) return\n setEditingCellId(cellId)\n }, [cellId, setEditingCellId, isPlaceholder])\n\n const handleSingleClick = () => {\n // clicking a cell that is not editing will close the editor on this cell\n if (!isCurrentCellEditing) {\n setEditingCellId(null)\n }\n }\n\n const moveToNextRow = () => {\n const rowIndex = gridMap.rowIdToIndex.get(rowId)\n if (rowIndex === undefined) return\n const newRowId = gridMap.indexToRowId.get(rowIndex + 1)\n if (newRowId) {\n const newCellId = getCellId(newRowId, columnId)\n selectCell(newCellId, false, false)\n focusCell(newCellId)\n setEditingCellId(newCellId)\n }\n }\n\n const handleOnChange: WidgetBaseProps['onChange'] = (newValue, key) => {\n setEditingCellId(null)\n if (isReadOnly) return\n // move to the next cell row\n key === 'Enter' && moveToNextRow()\n // make change if the value is different or if the key is 'Enter'\n if (newValue !== value || key === 'Enter') {\n onChange?.(newValue, key)\n }\n }\n\n const handleCancel = () => {\n setEditingCellId(null)\n }\n\n const widget = useMemo(() => {\n // Common props shared across all widgets\n const sharedProps: WidgetBaseProps = {\n onChange: handleOnChange,\n onCancelEdit: handleCancel,\n isEditing: isCurrentCellEditing,\n }\n\n const textTypes: TextWidgetType[] = ['string', 'integer', 'float']\n\n // Determine widget type based on attribute type\n switch (true) {\n // this is showing the collapsed widget (dot)\n case isCollapsed: {\n // if enum, find the first selected option and get its color\n const firstSelectedOption = type?.includes('list')\n ? options.find((option) =>\n Array.isArray(value) ? value.includes(option.value) : value === option.value,\n )\n : undefined\n const color = firstSelectedOption?.color\n return <CollapsedWidget color={color} />\n }\n\n case !!options.length: {\n const enumValue = Array.isArray(value) ? value : [value]\n return (\n <EnumWidget\n value={enumValue}\n options={options}\n type={type}\n onOpen={() => !isReadOnly && setEditingCellId(cellId)}\n enableCustomValues={enableCustomValues}\n {...sharedProps}\n {...pt?.enum}\n />\n )\n }\n\n case textTypes.includes(type as TextWidgetType):\n return (\n <TextWidget\n value={value as string}\n isInherited={isInherited}\n {...sharedProps}\n {...pt?.text}\n />\n )\n\n case type === 'datetime':\n return (\n <DateWidget\n value={value ? (value as string) : undefined}\n isInherited={isInherited}\n {...sharedProps}\n {...pt?.date}\n />\n )\n\n case type === 'boolean':\n return <BooleanWidget value={value as boolean} {...sharedProps} {...pt?.boolean} />\n\n case isPlaceholder:\n return null\n\n default:\n // TODO: We should not allow editing unrecognized types\n // At this point, only list_of_strings without proper options is unrecognized\n // (tags if not tags are specified in anatomy) and in that case, validation\n // on the server fails with a string value. Unless we have a widget that\n // accepts a string value AND options at the same time we shouldn't show\n // any edit widget\n\n //console.log(`Unrecognized type \"${type}\" for cell ${cellId}.`)\n return null\n }\n }, [cellId, value, type, isCurrentCellEditing, options, isCollapsed])\n\n return (\n <Cell\n {...props}\n className={clsx(props.className, { inherited: isInherited && !isCurrentCellEditing })}\n ref={ref}\n onDoubleClick={handleDoubleClick}\n onClick={handleSingleClick}\n id={cellId}\n data-tooltip={\n isInherited && !isCurrentCellEditing && isCurrentCellFocused ? 'Inherited' : undefined\n }\n data-tooltip-delay={200}\n >\n {widget}\n </Cell>\n )\n}\n\n// Custom comparison function for memo\nfunction arePropsEqual(prevProps: EditorCellProps, nextProps: EditorCellProps) {\n // Only re-render if these props change\n return (\n prevProps.rowId === nextProps.rowId &&\n prevProps.columnId === nextProps.columnId &&\n prevProps.isCollapsed === nextProps.isCollapsed &&\n JSON.stringify(prevProps.value) === JSON.stringify(nextProps.value) &&\n prevProps?.attributeData?.type === nextProps?.attributeData?.type &&\n // Only check options length for list types to avoid deep comparison\n ((!prevProps?.attributeData?.type.includes('list') &&\n !nextProps?.attributeData?.type.includes('list')) ||\n prevProps.options?.length === nextProps.options?.length) &&\n prevProps.isInherited === nextProps.isInherited &&\n prevProps.enableCustomValues === nextProps.enableCustomValues &&\n prevProps.isReadOnly === nextProps.isReadOnly &&\n prevProps.isPlaceholder === nextProps.isPlaceholder &&\n prevProps.isFocused === nextProps.isFocused &&\n prevProps.isCollapsed === nextProps.isCollapsed\n )\n}\n\nexport const CellWidget = memo(EditorCellComponent, arePropsEqual)\n"],"names":["jsx"],"mappings":"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"}
1
+ {"version":3,"file":"CellWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/CellWidget.tsx"],"sourcesContent":["import { useMemo, memo, useCallback, useRef, FC } from 'react'\nimport styled from 'styled-components'\n\n// Widgets\nimport { BooleanWidget, BooleanWidgetProps } from './BooleanWidget'\nimport { CollapsedWidget } from './CollapsedWidget'\nimport { DateWidget, DateWidgetProps } from './DateWidget'\nimport { EnumWidget, EnumWidgetProps } from './EnumWidget'\nimport { TextWidget, TextWidgetProps, TextWidgetType } from './TextWidget'\n\n// Contexts\nimport { useCellEditing } from '../context/CellEditingContext'\n\n// Utils\nimport { getCellId } from '../utils/cellUtils'\nimport clsx from 'clsx'\nimport { useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { AttributeData, AttributeEnumItem } from '../types'\n\nconst Cell = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n\n &:focus-visible {\n outline: none;\n }\n\n &.inherited {\n opacity: 0.6;\n font-style: italic;\n }\n\n &.loading {\n inset: 4px;\n border-radius: 4px;\n opacity: 1;\n }\n`\n\ntype WidgetAttributeData = Pick<AttributeData, 'type'>\n\nexport type CellValue = string | number | boolean\n\ninterface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n rowId: string\n columnId: string\n value: CellValue | CellValue[]\n attributeData?: WidgetAttributeData\n options?: AttributeEnumItem[]\n isCollapsed?: boolean\n isInherited?: boolean\n isPlaceholder?: boolean\n isFocused?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n onChange?: (value: CellValue | CellValue[], key?: 'Enter' | 'Click' | 'Escape') => void\n // options passthrough props\n pt?: {\n enum?: Partial<EnumWidgetProps>\n text?: Partial<TextWidgetProps>\n date?: Partial<DateWidgetProps>\n boolean?: Partial<BooleanWidgetProps>\n }\n}\n\nexport interface WidgetBaseProps {\n isEditing?: boolean\n onChange: Required<EditorCellProps>['onChange']\n onCancelEdit?: () => void\n}\n\nconst EditorCellComponent: FC<EditorCellProps> = ({\n rowId,\n columnId,\n value,\n attributeData,\n options = [],\n isCollapsed,\n isInherited,\n isPlaceholder,\n isReadOnly,\n enableCustomValues,\n onChange,\n pt,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const type = attributeData?.type\n\n const { isEditing, setEditingCellId } = useCellEditing()\n const { isCellFocused, gridMap, selectCell, focusCell } = useSelectionCellsContext()\n const cellId = getCellId(rowId, columnId)\n\n const isCurrentCellEditing = isEditing(cellId)\n const isCurrentCellFocused = isCellFocused(cellId)\n\n const handleDoubleClick = useCallback(() => {\n if (isPlaceholder || isReadOnly) return\n setEditingCellId(cellId)\n }, [cellId, setEditingCellId, isPlaceholder])\n\n const handleSingleClick = () => {\n // clicking a cell that is not editing will close the editor on this cell\n if (!isCurrentCellEditing) {\n setEditingCellId(null)\n }\n }\n\n const moveToNextRow = () => {\n const rowIndex = gridMap.rowIdToIndex.get(rowId)\n if (rowIndex === undefined) return\n const newRowId = gridMap.indexToRowId.get(rowIndex + 1)\n if (newRowId) {\n const newCellId = getCellId(newRowId, columnId)\n selectCell(newCellId, false, false)\n focusCell(newCellId)\n setEditingCellId(newCellId)\n }\n }\n\n const handleOnChange: WidgetBaseProps['onChange'] = (newValue, key) => {\n setEditingCellId(null)\n if (isReadOnly) return\n // move to the next cell row\n key === 'Enter' && moveToNextRow()\n // make change if the value is different or if the key is 'Enter'\n if (newValue !== value || key === 'Enter') {\n onChange?.(newValue, key)\n }\n }\n\n const handleCancel = () => {\n setEditingCellId(null)\n }\n\n const widget = useMemo(() => {\n // Common props shared across all widgets\n const sharedProps: WidgetBaseProps = {\n onChange: handleOnChange,\n onCancelEdit: handleCancel,\n isEditing: isCurrentCellEditing,\n }\n\n const textTypes: TextWidgetType[] = ['string', 'integer', 'float']\n\n // Determine widget type based on attribute type\n switch (true) {\n // this is showing the collapsed widget (dot)\n case isCollapsed: {\n // if enum, find the first selected option and get its color\n const firstSelectedOption = type?.includes('list')\n ? options.find((option) =>\n Array.isArray(value) ? value.includes(option.value) : value === option.value,\n )\n : undefined\n const color = firstSelectedOption?.color\n return <CollapsedWidget color={color} />\n }\n\n case !!options.length: {\n const enumValue = Array.isArray(value) ? value : [value]\n if (isReadOnly) {\n return (\n <TextWidget\n value={enumValue.join(', ')}\n option={\n enumValue.length === 1 ? options.find((o) => o.value === enumValue[0]) : undefined\n }\n {...sharedProps}\n />\n )\n }\n return (\n <EnumWidget\n value={enumValue}\n options={options}\n type={type}\n onOpen={() => !isReadOnly && setEditingCellId(cellId)}\n enableCustomValues={enableCustomValues}\n {...sharedProps}\n {...pt?.enum}\n />\n )\n }\n\n case textTypes.includes(type as TextWidgetType):\n return (\n <TextWidget\n value={value as string}\n isInherited={isInherited}\n {...sharedProps}\n {...pt?.text}\n />\n )\n\n case type === 'datetime':\n return (\n <DateWidget\n value={value ? (value as string) : undefined}\n isInherited={isInherited}\n {...sharedProps}\n {...pt?.date}\n />\n )\n\n case type === 'boolean':\n return <BooleanWidget value={value as boolean} {...sharedProps} {...pt?.boolean} />\n\n case isPlaceholder:\n return null\n\n default:\n // TODO: We should not allow editing unrecognized types\n // At this point, only list_of_strings without proper options is unrecognized\n // (tags if not tags are specified in anatomy) and in that case, validation\n // on the server fails with a string value. Unless we have a widget that\n // accepts a string value AND options at the same time we shouldn't show\n // any edit widget\n\n //console.log(`Unrecognized type \"${type}\" for cell ${cellId}.`)\n return null\n }\n }, [cellId, value, type, isCurrentCellEditing, options, isCollapsed])\n\n return (\n <Cell\n {...props}\n className={clsx(props.className, { inherited: isInherited && !isCurrentCellEditing })}\n ref={ref}\n onDoubleClick={handleDoubleClick}\n onClick={handleSingleClick}\n id={cellId}\n data-tooltip={\n isInherited && !isCurrentCellEditing && isCurrentCellFocused ? 'Inherited' : undefined\n }\n data-tooltip-delay={200}\n >\n {widget}\n </Cell>\n )\n}\n\n// Custom comparison function for memo\nfunction arePropsEqual(prevProps: EditorCellProps, nextProps: EditorCellProps) {\n // Only re-render if these props change\n return (\n prevProps.rowId === nextProps.rowId &&\n prevProps.columnId === nextProps.columnId &&\n prevProps.isCollapsed === nextProps.isCollapsed &&\n JSON.stringify(prevProps.value) === JSON.stringify(nextProps.value) &&\n prevProps?.attributeData?.type === nextProps?.attributeData?.type &&\n // Only check options length for list types to avoid deep comparison\n ((!prevProps?.attributeData?.type.includes('list') &&\n !nextProps?.attributeData?.type.includes('list')) ||\n prevProps.options?.length === nextProps.options?.length) &&\n prevProps.isInherited === nextProps.isInherited &&\n prevProps.enableCustomValues === nextProps.enableCustomValues &&\n prevProps.isReadOnly === nextProps.isReadOnly &&\n prevProps.isPlaceholder === nextProps.isPlaceholder &&\n prevProps.isFocused === nextProps.isFocused &&\n prevProps.isCollapsed === nextProps.isCollapsed\n )\n}\n\nexport const CellWidget = memo(EditorCellComponent, arePropsEqual)\n"],"names":["jsx"],"mappings":"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"}