@ynput/ayon-frontend-shared 0.3.51 → 0.3.53

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 (790) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +33 -31
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/NewEntity.cjs.js +2 -0
  5. package/dist/NewEntity.cjs.js.map +1 -0
  6. package/dist/NewEntity.es.js +16 -0
  7. package/dist/NewEntity.es.js.map +1 -0
  8. package/dist/ProjectTreeTable.cjs.js +1 -1
  9. package/dist/ProjectTreeTable.es.js +236 -230
  10. package/dist/ProjectTreeTable.es.js.map +1 -1
  11. package/dist/Slicer.cjs.js +1 -1
  12. package/dist/Slicer.es.js +34 -30
  13. package/dist/Slicer.es.js.map +1 -1
  14. package/dist/_virtual/index.cjs4.js +1 -1
  15. package/dist/_virtual/index.cjs5.js +1 -1
  16. package/dist/_virtual/index.es4.js +4 -4
  17. package/dist/_virtual/index.es5.js +4 -4
  18. package/dist/_virtual/index.es6.js +2 -2
  19. package/dist/_virtual/index.es7.js +2 -2
  20. package/dist/context.cjs.js +1 -1
  21. package/dist/context.es.js +54 -56
  22. package/dist/context.es.js.map +1 -1
  23. package/dist/index.cjs.js +1 -1
  24. package/dist/index.es.js +20 -18
  25. package/dist/index.es.js.map +1 -1
  26. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  27. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  28. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  29. package/dist/node_modules/remove-accents/index.es.js +1 -1
  30. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  31. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  32. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  33. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  34. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  35. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  36. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  37. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  38. package/dist/shared/src/api/queries/actions/refreshActiveAndPurgeOthers.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/actions/refreshActiveAndPurgeOthers.es.js.map +1 -1
  40. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js +1 -1
  41. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  42. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +31 -21
  43. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  44. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -1
  45. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  46. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +55 -52
  47. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  48. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +1 -1
  49. package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
  50. package/dist/shared/src/api/queries/entities/updateEntity.es.js +129 -127
  51. package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
  52. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
  53. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  54. package/dist/shared/src/api/queries/overview/updateOverview.es.js +96 -93
  55. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  56. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +1 -1
  57. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  58. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +40 -38
  59. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  60. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  61. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  62. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +13 -11
  63. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  64. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  65. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  66. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +40 -38
  67. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  68. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  69. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  70. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +40 -38
  71. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  72. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  73. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  74. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +40 -38
  75. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  76. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  77. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  78. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +40 -38
  79. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  80. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  81. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  82. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +40 -38
  83. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  84. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  85. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  86. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +13 -11
  87. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  88. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  89. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  90. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +40 -38
  91. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  92. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  93. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  94. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +44 -42
  95. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  96. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  97. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  98. package/dist/shared/src/components/LinksManager/LinksManager.es.js +40 -38
  99. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  100. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  101. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  102. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +40 -38
  103. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  104. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  105. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  106. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +40 -38
  107. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  108. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  109. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  110. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +40 -38
  111. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  112. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  113. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  114. package/dist/shared/src/components/Menu/Menu.es.js +40 -38
  115. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  116. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  117. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  118. package/dist/shared/src/components/Menu/MenuItem.es.js +38 -36
  119. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  120. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  121. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  122. package/dist/shared/src/components/Menu/MenuList.es.js +40 -38
  123. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  124. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +1 -1
  125. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  126. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +40 -38
  127. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  128. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  129. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  130. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +40 -38
  131. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  132. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
  133. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  134. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +11 -9
  135. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  136. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  137. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  138. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +9 -7
  139. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  140. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  141. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  142. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +40 -38
  143. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  144. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  145. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  146. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +113 -111
  147. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  148. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  149. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  150. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +40 -38
  151. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  152. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  153. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  154. package/dist/shared/src/components/RenameForm/RenameForm.es.js +40 -38
  155. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  156. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  157. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  158. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +13 -11
  159. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  160. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  161. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  162. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +14 -12
  163. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  164. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  165. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  166. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +13 -11
  167. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  168. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  169. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  170. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +13 -11
  171. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  172. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  173. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  174. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +76 -74
  175. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  176. package/dist/shared/src/components/SearchFilter/useDateRangeFilter.cjs.js +1 -1
  177. package/dist/shared/src/components/SearchFilter/useDateRangeFilter.cjs.js.map +1 -1
  178. package/dist/shared/src/components/SearchFilter/useDateRangeFilter.es.js +43 -41
  179. package/dist/shared/src/components/SearchFilter/useDateRangeFilter.es.js.map +1 -1
  180. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +1 -1
  181. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  182. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +40 -38
  183. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  184. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  185. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  186. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +15 -13
  187. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  188. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  189. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  190. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +13 -11
  191. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  192. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js +1 -1
  193. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js.map +1 -1
  194. package/dist/shared/src/components/SyncButton/SyncButton.es.js +2 -3
  195. package/dist/shared/src/components/SyncButton/SyncButton.es.js.map +1 -1
  196. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -1
  197. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  198. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +40 -38
  199. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  200. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  201. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  202. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +13 -11
  203. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  204. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  205. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  206. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +17 -15
  207. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  208. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  209. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  210. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +13 -11
  211. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  212. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  213. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  214. package/dist/shared/src/containers/Actions/Actions.es.js +40 -38
  215. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  216. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  217. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  218. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +13 -11
  219. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  220. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  221. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  222. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +13 -11
  223. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  224. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  225. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  226. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +13 -11
  227. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  228. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  229. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  230. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +13 -11
  231. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  232. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  233. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  234. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +118 -119
  235. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  236. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  237. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  238. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +40 -38
  239. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  240. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  241. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  242. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +13 -11
  243. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  244. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  245. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  246. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +13 -11
  247. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  248. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  249. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  250. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +40 -38
  251. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  252. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  253. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  254. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +21 -19
  255. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  256. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  257. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  258. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +13 -11
  259. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  260. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  261. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  262. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +7 -5
  263. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  264. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  265. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  266. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +5 -3
  267. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  268. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  269. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  270. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +40 -38
  271. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  272. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  273. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  274. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +12 -10
  275. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  276. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  277. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  278. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +13 -11
  279. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  280. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  281. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  282. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +13 -11
  283. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  284. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  285. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  286. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +13 -11
  287. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  288. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  289. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  290. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +40 -38
  291. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  292. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  293. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  294. package/dist/shared/src/containers/Feed/Feed.es.js +6 -4
  295. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  296. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  297. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  298. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +13 -11
  299. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  300. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  301. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  302. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +13 -11
  303. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  304. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  305. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  306. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +13 -11
  307. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  308. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/ActivityFieldChange.cjs.js +2 -0
  309. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/ActivityFieldChange.cjs.js.map +1 -0
  310. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/ActivityFieldChange.es.js +171 -0
  311. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/ActivityFieldChange.es.js.map +1 -0
  312. package/dist/shared/src/containers/Feed/components/{ActivityStatusChange/ActivityStatusChange.styled.cjs.js → ActivityFieldChange/ActivityFieldChange.styled.cjs.js} +5 -11
  313. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/ActivityFieldChange.styled.cjs.js.map +1 -0
  314. package/dist/shared/src/containers/Feed/components/{ActivityStatusChange/ActivityStatusChange.styled.es.js → ActivityFieldChange/ActivityFieldChange.styled.es.js} +8 -14
  315. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/ActivityFieldChange.styled.es.js.map +1 -0
  316. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/FieldValue.cjs.js +21 -0
  317. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/FieldValue.cjs.js.map +1 -0
  318. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/FieldValue.es.js +36 -0
  319. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/FieldValue.es.js.map +1 -0
  320. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/hooks/getContextParents.cjs.js +2 -0
  321. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/hooks/getContextParents.cjs.js.map +1 -0
  322. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/hooks/getContextParents.es.js +8 -0
  323. package/dist/shared/src/containers/Feed/components/ActivityFieldChange/hooks/getContextParents.es.js.map +1 -0
  324. package/dist/shared/src/containers/Feed/components/ActivityGroup/ActivityGroup.cjs.js.map +1 -1
  325. package/dist/shared/src/containers/Feed/components/ActivityGroup/ActivityGroup.es.js.map +1 -1
  326. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js +1 -1
  327. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js.map +1 -1
  328. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js +36 -25
  329. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js.map +1 -1
  330. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  331. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  332. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +15 -13
  333. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  334. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  335. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  336. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +52 -57
  337. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  338. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  339. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  340. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +34 -32
  341. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  342. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  343. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +17 -15
  345. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  346. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  347. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  348. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +40 -38
  349. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  350. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  351. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +40 -38
  353. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  354. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +1 -1
  355. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  356. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +37 -35
  357. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  358. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  359. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  360. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +40 -38
  361. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  362. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  363. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  364. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +7 -5
  365. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  366. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  367. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  368. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +43 -41
  369. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  370. package/dist/shared/src/containers/Feed/helpers/getActivityUserName.cjs.js +1 -1
  371. package/dist/shared/src/containers/Feed/helpers/getActivityUserName.cjs.js.map +1 -1
  372. package/dist/shared/src/containers/Feed/helpers/getActivityUserName.es.js +1 -1
  373. package/dist/shared/src/containers/Feed/helpers/getActivityUserName.es.js.map +1 -1
  374. package/dist/shared/src/containers/Feed/helpers/mergeSimilarActivities.cjs.js +1 -1
  375. package/dist/shared/src/containers/Feed/helpers/mergeSimilarActivities.cjs.js.map +1 -1
  376. package/dist/shared/src/containers/Feed/helpers/mergeSimilarActivities.es.js +14 -17
  377. package/dist/shared/src/containers/Feed/helpers/mergeSimilarActivities.es.js.map +1 -1
  378. package/dist/shared/src/containers/Feed/hooks/useTransformActivities.cjs.js +1 -1
  379. package/dist/shared/src/containers/Feed/hooks/useTransformActivities.cjs.js.map +1 -1
  380. package/dist/shared/src/containers/Feed/hooks/useTransformActivities.es.js +36 -26
  381. package/dist/shared/src/containers/Feed/hooks/useTransformActivities.es.js.map +1 -1
  382. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  383. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  384. package/dist/shared/src/containers/ListTable/ListTable.es.js +13 -11
  385. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  386. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  387. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  388. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +7 -5
  389. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  390. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  391. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  392. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +13 -11
  393. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  394. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.cjs.js +2 -0
  395. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.cjs.js.map +1 -0
  396. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.es.js +35 -0
  397. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.es.js.map +1 -0
  398. package/dist/shared/src/containers/NewEntity/components/FolderSequence.cjs.js +2 -0
  399. package/dist/shared/src/containers/NewEntity/components/FolderSequence.cjs.js.map +1 -0
  400. package/dist/shared/src/containers/NewEntity/components/FolderSequence.es.js +309 -0
  401. package/dist/shared/src/containers/NewEntity/components/FolderSequence.es.js.map +1 -0
  402. package/dist/shared/src/containers/NewEntity/components/FolderSequence.styled.cjs.js +122 -0
  403. package/dist/shared/src/containers/NewEntity/components/FolderSequence.styled.cjs.js.map +1 -0
  404. package/dist/shared/src/containers/NewEntity/components/FolderSequence.styled.es.js +135 -0
  405. package/dist/shared/src/containers/NewEntity/components/FolderSequence.styled.es.js.map +1 -0
  406. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js +47 -0
  407. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js.map +1 -0
  408. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js +661 -0
  409. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js.map +1 -0
  410. package/dist/shared/src/containers/NewEntity/components/NewEntityForm.cjs.js +66 -0
  411. package/dist/shared/src/containers/NewEntity/components/NewEntityForm.cjs.js.map +1 -0
  412. package/dist/shared/src/containers/NewEntity/components/NewEntityForm.es.js +141 -0
  413. package/dist/shared/src/containers/NewEntity/components/NewEntityForm.es.js.map +1 -0
  414. package/dist/shared/src/containers/NewEntity/components/TypeEditor.cjs.js +2 -0
  415. package/dist/shared/src/containers/NewEntity/components/TypeEditor.cjs.js.map +1 -0
  416. package/dist/shared/src/containers/NewEntity/components/TypeEditor.es.js +43 -0
  417. package/dist/shared/src/containers/NewEntity/components/TypeEditor.es.js.map +1 -0
  418. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js +2 -0
  419. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js.map +1 -0
  420. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js +554 -0
  421. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js.map +1 -0
  422. package/dist/shared/src/containers/NewEntity/context/NewEntityContextInstance.cjs.js +2 -0
  423. package/dist/shared/src/containers/NewEntity/context/NewEntityContextInstance.cjs.js.map +1 -0
  424. package/dist/shared/src/containers/NewEntity/context/NewEntityContextInstance.es.js +6 -0
  425. package/dist/shared/src/containers/NewEntity/context/NewEntityContextInstance.es.js.map +1 -0
  426. package/dist/shared/src/containers/NewEntity/hooks/useCreateEntityShortcuts.cjs.js +2 -0
  427. package/dist/shared/src/containers/NewEntity/hooks/useCreateEntityShortcuts.cjs.js.map +1 -0
  428. package/dist/shared/src/containers/NewEntity/hooks/useCreateEntityShortcuts.es.js +26 -0
  429. package/dist/shared/src/containers/NewEntity/hooks/useCreateEntityShortcuts.es.js.map +1 -0
  430. package/dist/shared/src/containers/NewEntity/util/entityDefinitions.cjs.js +2 -0
  431. package/dist/shared/src/containers/NewEntity/util/entityDefinitions.cjs.js.map +1 -0
  432. package/dist/shared/src/containers/NewEntity/util/entityDefinitions.es.js +16 -0
  433. package/dist/shared/src/containers/NewEntity/util/entityDefinitions.es.js.map +1 -0
  434. package/dist/shared/src/containers/NewEntity/util/getSequence.cjs.js +2 -0
  435. package/dist/shared/src/containers/NewEntity/util/getSequence.cjs.js.map +1 -0
  436. package/dist/shared/src/containers/NewEntity/util/getSequence.es.js +16 -0
  437. package/dist/shared/src/containers/NewEntity/util/getSequence.es.js.map +1 -0
  438. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  439. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  440. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +642 -675
  441. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  442. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  443. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  444. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +13 -11
  445. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  446. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  447. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  448. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +41 -39
  449. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  450. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  451. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  452. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +44 -42
  453. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  454. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  455. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  456. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +13 -11
  457. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  458. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  459. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  460. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +11 -9
  461. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  462. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +1 -1
  463. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  464. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +44 -42
  465. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  466. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  467. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  468. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +13 -11
  469. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  470. package/dist/shared/src/containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js +1 -1
  471. package/dist/shared/src/containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js.map +1 -1
  472. package/dist/shared/src/containers/ProjectTreeTable/context/DetailsPanelEntityContext.es.js +22 -16
  473. package/dist/shared/src/containers/ProjectTreeTable/context/DetailsPanelEntityContext.es.js.map +1 -1
  474. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  475. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  476. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +42 -40
  477. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  478. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  479. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  480. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +156 -153
  481. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  482. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js +1 -1
  483. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js.map +1 -1
  484. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.es.js +7 -6
  485. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsContext.es.js.map +1 -1
  486. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +1 -1
  487. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
  488. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +7 -6
  489. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
  490. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  491. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +8 -6
  493. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  494. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  495. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  496. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +40 -38
  497. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  498. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  499. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  500. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +16 -14
  501. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  502. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  503. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  504. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +13 -11
  505. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  506. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  507. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  508. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +233 -218
  509. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  510. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  511. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  512. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +11 -9
  513. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  514. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  515. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  516. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +13 -11
  517. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  518. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  519. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  520. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +40 -38
  521. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  522. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  523. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  524. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +43 -41
  525. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  526. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  527. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  528. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +13 -11
  529. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  530. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  531. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  532. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +13 -11
  533. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  534. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  535. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  536. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +11 -9
  537. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  538. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  539. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  540. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +121 -150
  541. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  542. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  543. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  544. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +39 -37
  545. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  546. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  547. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  548. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +13 -11
  549. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  550. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  551. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  552. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +13 -11
  553. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  554. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  555. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +38 -36
  557. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  558. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  559. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +24 -22
  561. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  562. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js +1 -1
  563. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js +47 -30
  565. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
  566. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js +1 -1
  567. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
  568. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js +113 -91
  569. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
  570. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  571. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  572. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +13 -11
  573. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  574. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  575. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  576. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +33 -31
  577. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  578. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +1 -1
  579. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  580. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +13 -11
  581. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  582. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  583. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +15 -13
  585. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +1 -1
  587. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +39 -37
  589. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  591. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +13 -11
  593. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  595. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +13 -11
  597. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +1 -1
  599. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +40 -38
  601. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  602. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  603. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  604. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +13 -11
  605. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  606. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  607. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  608. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +256 -246
  609. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  610. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js +1 -1
  611. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js.map +1 -1
  612. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js +15 -15
  613. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js.map +1 -1
  614. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  615. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  616. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +206 -162
  617. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  618. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +1 -1
  619. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  620. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +40 -38
  621. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  622. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  623. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  624. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +13 -11
  625. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  626. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  627. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  628. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +82 -74
  629. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  630. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  631. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  632. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +40 -38
  633. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  634. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js +2 -0
  635. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js.map +1 -0
  636. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js +470 -0
  637. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js.map +1 -0
  638. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  639. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  640. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +40 -38
  641. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  642. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  643. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  644. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +40 -38
  645. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  646. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +1 -1
  647. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -1
  648. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +42 -40
  649. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -1
  650. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  651. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  652. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +40 -38
  653. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  654. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  655. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  656. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +40 -38
  657. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  658. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  659. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  660. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +40 -38
  661. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  662. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  663. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  664. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +50 -48
  665. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  666. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  667. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  668. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +40 -38
  669. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  670. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  671. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  672. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +40 -38
  673. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  674. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +1 -1
  675. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  676. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +40 -38
  677. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  678. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  679. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  680. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +42 -40
  681. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  682. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  683. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  684. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +43 -41
  685. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  686. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  687. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  688. package/dist/shared/src/context/DetailsPanelContext.es.js +44 -42
  689. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  690. package/dist/shared/src/context/EntityUpdatesContext.cjs.js +1 -1
  691. package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -1
  692. package/dist/shared/src/context/EntityUpdatesContext.es.js +46 -44
  693. package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -1
  694. package/dist/shared/src/context/MenuContext.cjs.js +1 -1
  695. package/dist/shared/src/context/MenuContext.cjs.js.map +1 -1
  696. package/dist/shared/src/context/MenuContext.es.js +1 -0
  697. package/dist/shared/src/context/MenuContext.es.js.map +1 -1
  698. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  699. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  700. package/dist/shared/src/context/PowerpackContext.es.js +44 -42
  701. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  702. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  703. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  704. package/dist/shared/src/context/ProjectFoldersContext.es.js +126 -99
  705. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  706. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  707. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  708. package/dist/shared/src/context/SubtasksModulesContext.es.js +42 -40
  709. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  710. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  711. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  712. package/dist/shared/src/context/WebsocketContext.es.js +15 -13
  713. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  714. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  715. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  716. package/dist/shared/src/hooks/useEntityUpdate.es.js +40 -38
  717. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  718. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  719. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  720. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +40 -38
  721. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  722. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  723. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  724. package/dist/shared/src/hooks/useHierarchyTable.es.js +40 -38
  725. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  726. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  727. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  728. package/dist/shared/src/hooks/useUserProjectConfig.es.js +40 -38
  729. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  730. package/dist/types/NewEntity.d.ts +2 -0
  731. package/dist/types/containers/Feed/components/ActivityFieldChange/ActivityFieldChange.d.ts +36 -0
  732. package/dist/types/containers/Feed/components/{ActivityStatusChange/ActivityStatusChange.styled.d.ts → ActivityFieldChange/ActivityFieldChange.styled.d.ts} +1 -1
  733. package/dist/types/containers/Feed/components/ActivityFieldChange/FieldValue.d.ts +11 -0
  734. package/dist/types/containers/Feed/components/ActivityGroup/ActivityGroup.d.ts +1 -0
  735. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +1 -1
  736. package/dist/types/containers/MoveEntityDialog/MoveEntityDialog.d.ts +10 -0
  737. package/dist/types/containers/MoveEntityDialog/index.d.ts +2 -0
  738. package/dist/types/containers/MoveEntityDialog/types.d.ts +12 -0
  739. package/dist/types/containers/NewEntity/components/FolderSequence.d.ts +36 -0
  740. package/dist/types/containers/NewEntity/components/FolderSequence.styled.d.ts +20 -0
  741. package/dist/types/containers/NewEntity/components/NewEntity.d.ts +12 -0
  742. package/dist/types/containers/NewEntity/components/NewEntityForm.d.ts +15 -0
  743. package/dist/types/containers/NewEntity/components/TypeEditor.d.ts +18 -0
  744. package/dist/types/containers/NewEntity/context/NewEntityContext.d.ts +37 -0
  745. package/dist/types/containers/NewEntity/context/NewEntityContextInstance.d.ts +2 -0
  746. package/dist/types/containers/NewEntity/hooks/useCreateEntityShortcuts.d.ts +21 -0
  747. package/dist/types/containers/NewEntity/index.d.ts +4 -0
  748. package/dist/types/containers/NewEntity/util/entityDefinitions.d.ts +7 -0
  749. package/dist/types/containers/NewEntity/util/getSequence.d.ts +1 -0
  750. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +2 -1
  751. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +1 -0
  752. package/dist/types/containers/ProjectTreeTable/context/SelectedRowsContext.d.ts +1 -0
  753. package/dist/types/containers/ProjectTreeTable/context/SelectionCellsContext.d.ts +1 -0
  754. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +2 -1
  755. package/dist/types/containers/ProjectTreeTable/hooks/useMoveEntities.d.ts +5 -7
  756. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +3 -6
  757. package/dist/types/containers/ProjectTreeTable/utils/queryFilterToClientFilter.d.ts +6 -0
  758. package/dist/types/containers/SimpleTable/SimpleTable.types.d.ts +3 -0
  759. package/dist/types/containers/SimpleTable/SimpleTableRowTemplate.d.ts +1 -1
  760. package/dist/types/containers/Slicer/components/Slicer.d.ts +2 -1
  761. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +6 -1
  762. package/dist/types/containers/Slicer/hooks/index.d.ts +1 -0
  763. package/dist/types/containers/Slicer/hooks/useHierarchyContextMenuItems.d.ts +15 -0
  764. package/dist/types/containers/index.d.ts +1 -0
  765. package/dist/types/context/MenuContext.d.ts +1 -0
  766. package/dist/types/context/ProjectFoldersContext.d.ts +1 -0
  767. package/dist/types/context/index.d.ts +0 -1
  768. package/package.json +13 -4
  769. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.cjs.js +0 -2
  770. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.cjs.js.map +0 -1
  771. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.es.js +0 -44
  772. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.es.js.map +0 -1
  773. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js.map +0 -1
  774. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.es.js.map +0 -1
  775. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.cjs.js +0 -11
  776. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.cjs.js.map +0 -1
  777. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.es.js +0 -27
  778. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.es.js.map +0 -1
  779. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/hooks/getContextParents.cjs.js +0 -2
  780. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/hooks/getContextParents.cjs.js.map +0 -1
  781. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/hooks/getContextParents.es.js +0 -8
  782. package/dist/shared/src/containers/Feed/components/ActivityStatusChange/hooks/getContextParents.es.js.map +0 -1
  783. package/dist/shared/src/context/MoveEntityContext.cjs.js +0 -2
  784. package/dist/shared/src/context/MoveEntityContext.cjs.js.map +0 -1
  785. package/dist/shared/src/context/MoveEntityContext.es.js +0 -34
  786. package/dist/shared/src/context/MoveEntityContext.es.js.map +0 -1
  787. package/dist/types/containers/Feed/components/ActivityStatusChange/ActivityStatusChange.d.ts +0 -19
  788. package/dist/types/containers/Feed/components/ActivityStatusChange/ActivityStatusSecondary.d.ts +0 -7
  789. package/dist/types/context/MoveEntityContext.d.ts +0 -28
  790. /package/dist/types/containers/Feed/components/{ActivityStatusChange → ActivityFieldChange}/hooks/getContextParents.d.ts +0 -0
@@ -146,7 +146,6 @@ import "../../../context/pip/PiPProvider.es.js";
146
146
  import "../../../context/pip/PiPWrapper.es.js";
147
147
  import "../../../context/AddonProjectContext.es.js";
148
148
  import "../../../context/AddonContext.es.js";
149
- import "../../../context/MoveEntityContext.es.js";
150
149
  import "../../../context/MenuContext.es.js";
151
150
  import "../../../context/WebsocketContext.es.js";
152
151
  import "../../../context/GlobalContext.es.js";
@@ -175,8 +174,8 @@ import "../../Feed/components/ActivityHeader/ActivityHeader.styled.es.js";
175
174
  import "../../Feed/components/ActivityReference/ActivityReference.styled.es.js";
176
175
  import "../../Feed/components/ActivityDate.es.js";
177
176
  import "../../Feed/components/ActivityCategorySelect/CategoryTag.es.js";
178
- import "../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.es.js";
179
- import "../../Feed/components/ActivityStatusChange/ActivityStatusSecondary.es.js";
177
+ import "../../Feed/components/ActivityFieldChange/ActivityFieldChange.styled.es.js";
178
+ import "../../Feed/components/ActivityFieldChange/FieldValue.es.js";
180
179
  import "../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.es.js";
181
180
  import "../../Feed/components/ActivityVersions/ActivityVersions.styled.es.js";
182
181
  import "../../Feed/components/ActivityGroup/ActivityGroup.styled.es.js";
@@ -217,18 +216,20 @@ import "../context/ClipboardContext.es.js";
217
216
  import "../context/SelectionCellsContext.es.js";
218
217
  import "../context/ProjectDataContextInstance.es.js";
219
218
  import "../context/CellEditingContext.es.js";
219
+ import "../../NewEntity/components/NewEntity.es.js";
220
+ import "../../Slicer/components/Slicer.es.js";
221
+ import "../../Slicer/context/SlicerContextInstance.es.js";
222
+ import "../../Slicer/components/SlicerDropdownFallback.es.js";
223
+ import "../../Slicer/hooks/useTableDataBySlice.es.js";
224
+ import "react-redux";
225
+ import "../../NewEntity/context/NewEntityContextInstance.es.js";
226
+ import "../../NewEntity/components/NewEntityForm.es.js";
220
227
  import "@dnd-kit/core";
221
228
  import "@dnd-kit/sortable";
222
229
  import "../components/TableFooterRow.es.js";
223
230
  import "../context/SelectedRowsContext.es.js";
224
231
  import "../context/ColumnSettingsContext.es.js";
225
232
  import "../context/DetailsPanelEntityContext.es.js";
226
- import "../../EntityPickerDialog/EntityPickerDialog.es.js";
227
- import "../../Slicer/components/Slicer.es.js";
228
- import "../../Slicer/context/SlicerContextInstance.es.js";
229
- import "../../Slicer/components/SlicerDropdownFallback.es.js";
230
- import "../../Slicer/hooks/useTableDataBySlice.es.js";
231
- import "react-redux";
232
233
  import "../../DetailsPanel/DetailsPanel.styled.es.js";
233
234
  import "../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.es.js";
234
235
  import "../../DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.styled.es.js";
@@ -247,6 +248,7 @@ import "../../Views/ViewsMenu/ViewsMenu.es.js";
247
248
  import "../../Views/context/ViewsContextInstance.es.js";
248
249
  import "../../Views/Views.styled.es.js";
249
250
  import "../../Views/ViewsMenuContainer/ViewsMenuContainer.es.js";
251
+ import "../../EntityPickerDialog/EntityPickerDialog.es.js";
250
252
  import "../../ListTable/ListTableRow.es.js";
251
253
  import "../../ListTable/ListTable.styled.es.js";
252
254
  import "../../../context/DeleteEntitiesContext.es.js";
@@ -298,10 +300,10 @@ import "../../../components/Menu/MenuItem.es.js";
298
300
  import "../../../components/ReviewablesSelector/ReviewablesSelector.es.js";
299
301
  import "../../../components/ColumnHeaderMenuUI.es.js";
300
302
  var l = /* @__PURE__ */ ((t) => (t[t.None = 0] = "None", t[t.Top = 1] = "Top", t[t.Right = 2] = "Right", t[t.Bottom = 4] = "Bottom", t[t.Left = 8] = "Left", t[t.All = 15] = "All", t))(l || {});
301
- const Om = (t, p) => `cell-${t}-${p}`, Qm = (t) => {
303
+ const Sm = (t, p) => `cell-${t}-${p}`, Um = (t) => {
302
304
  const p = t.match(/^cell-(.+)-(.+)$/);
303
305
  return p ? { rowId: p[1], colId: p[2] } : null;
304
- }, Sm = (t, p) => {
306
+ }, Wm = (t, p) => {
305
307
  if (!t || !p) return;
306
308
  const r = p.split("_");
307
309
  let i = t;
@@ -311,28 +313,28 @@ const Om = (t, p) => `cell-${t}-${p}`, Qm = (t) => {
311
313
  else
312
314
  return;
313
315
  return i;
314
- }, Um = (t, p) => {
316
+ }, Xm = (t, p) => {
315
317
  const [r, i, o, e, n] = p.split("_"), f = t.filter(
316
318
  (m) => m.linkType === i && m.direction === n
317
319
  );
318
320
  return f.length ? f.map((m) => m.node.id).join(",") : "";
319
- }, Wm = (t, p, r) => {
321
+ }, Ym = (t, p, r) => {
320
322
  if (!r[t]?.[p])
321
323
  return 0;
322
324
  let i = 0;
323
325
  return (t === 0 || !r[t - 1]?.[p]) && (i |= 1), r[t]?.[p + 1] || (i |= 2), r[t + 1]?.[p] || (i |= 4), (p === 0 || !r[t]?.[p - 1]) && (i |= 8), i;
324
- }, Xm = (t) => {
326
+ }, Zm = (t) => {
325
327
  const p = [];
326
328
  return t & 1 && p.push("shadow-top"), t & 2 && p.push("shadow-right"), t & 4 && p.push("shadow-bottom"), t & 8 && p.push("shadow-left"), p;
327
- }, Ym = (t, p) => p.get(u(t));
329
+ }, bm = (t, p) => p.get(u(t));
328
330
  export {
329
331
  l as BorderPosition,
330
- Xm as getBorderClasses,
331
- Wm as getCellBorders,
332
- Om as getCellId,
333
- Sm as getCellValue,
334
- Ym as getEntityDataById,
335
- Um as getLinkEntityIdsByColumnId,
336
- Qm as parseCellId
332
+ Zm as getBorderClasses,
333
+ Ym as getCellBorders,
334
+ Sm as getCellId,
335
+ Wm as getCellValue,
336
+ bm as getEntityDataById,
337
+ Xm as getLinkEntityIdsByColumnId,
338
+ Um as parseCellId
337
339
  };
338
340
  //# sourceMappingURL=cellUtils.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cellUtils.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/cellUtils.ts"],"sourcesContent":["/**\n * Shared cell utilities for table operations\n */\n\nimport { TaskLink } from '@shared/api'\nimport { parseRowId } from '../context'\nimport { EMapResult, EntitiesMap } from '../types'\n\n// Type definitions for cell identifiers\nexport type CellId = string\nexport type RowId = string\nexport type ColId = string\n\n// Cell position in the grid\nexport interface CellPosition {\n rowId: RowId\n colId: ColId\n}\n\n// Cell border position flags - used for determining which borders to show\nexport enum BorderPosition {\n None = 0,\n Top = 1 << 0,\n Right = 1 << 1,\n Bottom = 1 << 2,\n Left = 1 << 3,\n All = Top | Right | Bottom | Left,\n}\n\n/**\n * Create a standardized cell ID from row and column IDs\n */\nexport const getCellId = (rowId: RowId, colId: ColId): CellId => `cell-${rowId}-${colId}`\n\n/**\n * Parse a cell ID to extract row and column IDs\n * @returns CellPosition or null if invalid format\n */\nexport const parseCellId = (cellId: CellId): CellPosition | null => {\n const match = cellId.match(/^cell-(.+)-(.+)$/)\n if (!match) return null\n return { rowId: match[1], colId: match[2] }\n}\n\nexport const getCellValue = (obj: any, path: string): any => {\n if (!obj || !path) return undefined\n\n const parts = path.split('_')\n let current = obj\n\n for (const part of parts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part]\n } else {\n return undefined // Return undefined if any part of the path is invalid\n }\n }\n\n return current\n}\n\n// return the link entity ids for a given column id\nexport const getLinkEntityIdsByColumnId = (links: TaskLink[], columnId: CellId): string => {\n // split the columnId\n const [_link, linkType, _inType, _outType, direction] = columnId.split('_')\n const cellLinks = links.filter(\n (link) => link.linkType === linkType && link.direction === direction,\n )\n if (cellLinks.length) {\n return cellLinks.map((link) => link.node.id).join(',')\n } else {\n return ''\n }\n}\n\n/**\n * Determines which borders to display for a selected cell\n * based on its position within the selection grid\n *\n * @param rowIndex Current cell's row index\n * @param colIndex Current cell's column index\n * @param selectedCells 2D array representing selection state (true = selected)\n * @returns BorderPosition flags indicating which borders to display\n */\nexport const getCellBorders = (\n rowIndex: number,\n colIndex: number,\n selectedCells: boolean[][],\n): BorderPosition => {\n if (!selectedCells[rowIndex]?.[colIndex]) {\n return BorderPosition.None\n }\n\n let borders = BorderPosition.None\n\n // Check top border\n if (rowIndex === 0 || !selectedCells[rowIndex - 1]?.[colIndex]) {\n borders |= BorderPosition.Top\n }\n\n // Check right border\n if (!selectedCells[rowIndex]?.[colIndex + 1]) {\n borders |= BorderPosition.Right\n }\n\n // Check bottom border\n if (!selectedCells[rowIndex + 1]?.[colIndex]) {\n borders |= BorderPosition.Bottom\n }\n\n // Check left border\n if (colIndex === 0 || !selectedCells[rowIndex]?.[colIndex - 1]) {\n borders |= BorderPosition.Left\n }\n\n return borders\n}\n\n/**\n * Converts border position flags to CSS classes for shadow styling\n */\nexport const getBorderClasses = (borders: BorderPosition): string[] => {\n const classes: string[] = []\n\n if (borders & BorderPosition.Top) classes.push('shadow-top')\n if (borders & BorderPosition.Right) classes.push('shadow-right')\n if (borders & BorderPosition.Bottom) classes.push('shadow-bottom')\n if (borders & BorderPosition.Left) classes.push('shadow-left')\n\n return classes\n}\n\n// get a entity from it's id\nexport const getEntityDataById = <T extends 'folder' | 'task' | 'product' | 'version'>(\n id: string,\n entitiesMap: EntitiesMap,\n) => entitiesMap.get(parseRowId(id)) as EMapResult<T> | undefined\n"],"names":["BorderPosition","getCellId","rowId","colId","parseCellId","cellId","match","getCellValue","obj","path","parts","current","part","getLinkEntityIdsByColumnId","links","columnId","_link","linkType","_inType","_outType","direction","cellLinks","link","getCellBorders","rowIndex","colIndex","selectedCells","borders","getBorderClasses","classes","getEntityDataById","id","entitiesMap","parseRowId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,IAAKA,sBAAAA,OACVA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,MAAM,CAAA,IAAN,OACAA,EAAAA,EAAA,QAAQ,CAAA,IAAR,SACAA,EAAAA,EAAA,SAAS,CAAA,IAAT,UACAA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,MAAM,EAAA,IAAN,OANUA,IAAAA,KAAA,CAAA,CAAA;AAYL,MAAMC,KAAY,CAACC,GAAcC,MAAyB,QAAQD,CAAK,IAAIC,CAAK,IAM1EC,KAAc,CAACC,MAAwC;AAClE,QAAMC,IAAQD,EAAO,MAAM,kBAAkB;AAC7C,SAAKC,IACE,EAAE,OAAOA,EAAM,CAAC,GAAG,OAAOA,EAAM,CAAC,EAAA,IADrB;AAErB,GAEaC,KAAe,CAACC,GAAUC,MAAsB;AAC3D,MAAI,CAACD,KAAO,CAACC,EAAM;AAEnB,QAAMC,IAAQD,EAAK,MAAM,GAAG;AAC5B,MAAIE,IAAUH;AAEd,aAAWI,KAAQF;AACjB,QAAIC,KAAW,OAAOA,KAAY,YAAYC,KAAQD;AACpD,MAAAA,IAAUA,EAAQC,CAAI;AAAA;AAEtB;AAIJ,SAAOD;AACT,GAGaE,KAA6B,CAACC,GAAmBC,MAA6B;AAEzF,QAAM,CAACC,GAAOC,GAAUC,GAASC,GAAUC,CAAS,IAAIL,EAAS,MAAM,GAAG,GACpEM,IAAYP,EAAM;AAAA,IACtB,CAACQ,MAASA,EAAK,aAAaL,KAAYK,EAAK,cAAcF;AAAA,EAAA;AAE7D,SAAIC,EAAU,SACLA,EAAU,IAAI,CAACC,MAASA,EAAK,KAAK,EAAE,EAAE,KAAK,GAAG,IAE9C;AAEX,GAWaC,KAAiB,CAC5BC,GACAC,GACAC,MACmB;AACnB,MAAI,CAACA,EAAcF,CAAQ,IAAIC,CAAQ;AACrC,WAAO;AAGT,MAAIE,IAAU;AAGd,UAAIH,MAAa,KAAK,CAACE,EAAcF,IAAW,CAAC,IAAIC,CAAQ,OAC3DE,KAAW,IAIRD,EAAcF,CAAQ,IAAIC,IAAW,CAAC,MACzCE,KAAW,IAIRD,EAAcF,IAAW,CAAC,IAAIC,CAAQ,MACzCE,KAAW,KAITF,MAAa,KAAK,CAACC,EAAcF,CAAQ,IAAIC,IAAW,CAAC,OAC3DE,KAAW,IAGNA;AACT,GAKaC,KAAmB,CAACD,MAAsC;AACrE,QAAME,IAAoB,CAAA;AAE1B,SAAIF,IAAU,KAAoBE,EAAQ,KAAK,YAAY,GACvDF,IAAU,KAAsBE,EAAQ,KAAK,cAAc,GAC3DF,IAAU,KAAuBE,EAAQ,KAAK,eAAe,GAC7DF,IAAU,KAAqBE,EAAQ,KAAK,aAAa,GAEtDA;AACT,GAGaC,KAAoB,CAC/BC,GACAC,MACGA,EAAY,IAAIC,EAAWF,CAAE,CAAC;"}
1
+ {"version":3,"file":"cellUtils.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/cellUtils.ts"],"sourcesContent":["/**\n * Shared cell utilities for table operations\n */\n\nimport { TaskLink } from '@shared/api'\nimport { parseRowId } from '../context'\nimport { EMapResult, EntitiesMap } from '../types'\n\n// Type definitions for cell identifiers\nexport type CellId = string\nexport type RowId = string\nexport type ColId = string\n\n// Cell position in the grid\nexport interface CellPosition {\n rowId: RowId\n colId: ColId\n}\n\n// Cell border position flags - used for determining which borders to show\nexport enum BorderPosition {\n None = 0,\n Top = 1 << 0,\n Right = 1 << 1,\n Bottom = 1 << 2,\n Left = 1 << 3,\n All = Top | Right | Bottom | Left,\n}\n\n/**\n * Create a standardized cell ID from row and column IDs\n */\nexport const getCellId = (rowId: RowId, colId: ColId): CellId => `cell-${rowId}-${colId}`\n\n/**\n * Parse a cell ID to extract row and column IDs\n * @returns CellPosition or null if invalid format\n */\nexport const parseCellId = (cellId: CellId): CellPosition | null => {\n const match = cellId.match(/^cell-(.+)-(.+)$/)\n if (!match) return null\n return { rowId: match[1], colId: match[2] }\n}\n\nexport const getCellValue = (obj: any, path: string): any => {\n if (!obj || !path) return undefined\n\n const parts = path.split('_')\n let current = obj\n\n for (const part of parts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part]\n } else {\n return undefined // Return undefined if any part of the path is invalid\n }\n }\n\n return current\n}\n\n// return the link entity ids for a given column id\nexport const getLinkEntityIdsByColumnId = (links: TaskLink[], columnId: CellId): string => {\n // split the columnId\n const [_link, linkType, _inType, _outType, direction] = columnId.split('_')\n const cellLinks = links.filter(\n (link) => link.linkType === linkType && link.direction === direction,\n )\n if (cellLinks.length) {\n return cellLinks.map((link) => link.node.id).join(',')\n } else {\n return ''\n }\n}\n\n/**\n * Determines which borders to display for a selected cell\n * based on its position within the selection grid\n *\n * @param rowIndex Current cell's row index\n * @param colIndex Current cell's column index\n * @param selectedCells 2D array representing selection state (true = selected)\n * @returns BorderPosition flags indicating which borders to display\n */\nexport const getCellBorders = (\n rowIndex: number,\n colIndex: number,\n selectedCells: boolean[][],\n): BorderPosition => {\n if (!selectedCells[rowIndex]?.[colIndex]) {\n return BorderPosition.None\n }\n\n let borders = BorderPosition.None\n\n // Check top border\n if (rowIndex === 0 || !selectedCells[rowIndex - 1]?.[colIndex]) {\n borders |= BorderPosition.Top\n }\n\n // Check right border\n if (!selectedCells[rowIndex]?.[colIndex + 1]) {\n borders |= BorderPosition.Right\n }\n\n // Check bottom border\n if (!selectedCells[rowIndex + 1]?.[colIndex]) {\n borders |= BorderPosition.Bottom\n }\n\n // Check left border\n if (colIndex === 0 || !selectedCells[rowIndex]?.[colIndex - 1]) {\n borders |= BorderPosition.Left\n }\n\n return borders\n}\n\n/**\n * Converts border position flags to CSS classes for shadow styling\n */\nexport const getBorderClasses = (borders: BorderPosition): string[] => {\n const classes: string[] = []\n\n if (borders & BorderPosition.Top) classes.push('shadow-top')\n if (borders & BorderPosition.Right) classes.push('shadow-right')\n if (borders & BorderPosition.Bottom) classes.push('shadow-bottom')\n if (borders & BorderPosition.Left) classes.push('shadow-left')\n\n return classes\n}\n\n// get a entity from it's id\nexport const getEntityDataById = <T extends 'folder' | 'task' | 'product' | 'version'>(\n id: string,\n entitiesMap: EntitiesMap,\n) => entitiesMap.get(parseRowId(id)) as EMapResult<T> | undefined\n"],"names":["BorderPosition","getCellId","rowId","colId","parseCellId","cellId","match","getCellValue","obj","path","parts","current","part","getLinkEntityIdsByColumnId","links","columnId","_link","linkType","_inType","_outType","direction","cellLinks","link","getCellBorders","rowIndex","colIndex","selectedCells","borders","getBorderClasses","classes","getEntityDataById","id","entitiesMap","parseRowId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,IAAKA,sBAAAA,OACVA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,MAAM,CAAA,IAAN,OACAA,EAAAA,EAAA,QAAQ,CAAA,IAAR,SACAA,EAAAA,EAAA,SAAS,CAAA,IAAT,UACAA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,MAAM,EAAA,IAAN,OANUA,IAAAA,KAAA,CAAA,CAAA;AAYL,MAAMC,KAAY,CAACC,GAAcC,MAAyB,QAAQD,CAAK,IAAIC,CAAK,IAM1EC,KAAc,CAACC,MAAwC;AAClE,QAAMC,IAAQD,EAAO,MAAM,kBAAkB;AAC7C,SAAKC,IACE,EAAE,OAAOA,EAAM,CAAC,GAAG,OAAOA,EAAM,CAAC,EAAA,IADrB;AAErB,GAEaC,KAAe,CAACC,GAAUC,MAAsB;AAC3D,MAAI,CAACD,KAAO,CAACC,EAAM;AAEnB,QAAMC,IAAQD,EAAK,MAAM,GAAG;AAC5B,MAAIE,IAAUH;AAEd,aAAWI,KAAQF;AACjB,QAAIC,KAAW,OAAOA,KAAY,YAAYC,KAAQD;AACpD,MAAAA,IAAUA,EAAQC,CAAI;AAAA;AAEtB;AAIJ,SAAOD;AACT,GAGaE,KAA6B,CAACC,GAAmBC,MAA6B;AAEzF,QAAM,CAACC,GAAOC,GAAUC,GAASC,GAAUC,CAAS,IAAIL,EAAS,MAAM,GAAG,GACpEM,IAAYP,EAAM;AAAA,IACtB,CAACQ,MAASA,EAAK,aAAaL,KAAYK,EAAK,cAAcF;AAAA,EAAA;AAE7D,SAAIC,EAAU,SACLA,EAAU,IAAI,CAACC,MAASA,EAAK,KAAK,EAAE,EAAE,KAAK,GAAG,IAE9C;AAEX,GAWaC,KAAiB,CAC5BC,GACAC,GACAC,MACmB;AACnB,MAAI,CAACA,EAAcF,CAAQ,IAAIC,CAAQ;AACrC,WAAO;AAGT,MAAIE,IAAU;AAGd,UAAIH,MAAa,KAAK,CAACE,EAAcF,IAAW,CAAC,IAAIC,CAAQ,OAC3DE,KAAW,IAIRD,EAAcF,CAAQ,IAAIC,IAAW,CAAC,MACzCE,KAAW,IAIRD,EAAcF,IAAW,CAAC,IAAIC,CAAQ,MACzCE,KAAW,KAITF,MAAa,KAAK,CAACC,EAAcF,CAAQ,IAAIC,IAAW,CAAC,OAC3DE,KAAW,IAGNA;AACT,GAKaC,KAAmB,CAACD,MAAsC;AACrE,QAAME,IAAoB,CAAA;AAE1B,SAAIF,IAAU,KAAoBE,EAAQ,KAAK,YAAY,GACvDF,IAAU,KAAsBE,EAAQ,KAAK,cAAc,GAC3DF,IAAU,KAAuBE,EAAQ,KAAK,eAAe,GAC7DF,IAAU,KAAqBE,EAAQ,KAAK,aAAa,GAEtDA;AACT,GAGaC,KAAoB,CAC/BC,GACAC,MACGA,EAAY,IAAIC,EAAWF,CAAE,CAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("@ynput/ayon-react-components"),C=require("../../../components/SearchFilter/filterDates.cjs.js"),g=require("./expandRelativeDates.cjs.js"),v="no-date",m=(e,n)=>{if(!n.values||n.values.length===0)return null;const t=n.values.flatMap(p=>{const u=[],o=p.values,l=o?.[0]?.id,d=o?.[1]?.id,r=l&&d&&l!==v&&d!==v?C.detectRelativeDatePattern(l,d):null;return o?.[0]!==void 0&&o?.[0].id!==v&&u.push({key:e,operator:n.inverted?"lte":"gte",value:r?g.createRelativeValue(r.id,0):o[0].id}),o?.[1]!==void 0&&o?.[1].id!==v&&u.push({key:e,operator:n.inverted?"gte":"lte",value:r?g.createRelativeValue(r.id,1):o[1].id}),u});return t.length===0?null:{conditions:t,operator:n.inverted?"or":"and"}},D=e=>!e||e.length===0?{}:{conditions:e.filter(t=>!!t.values?.length).filter(t=>t.id!=="hierarchy").flatMap(t=>q(t)),operator:"and"},q=e=>{const n=V.getFilterFromId(e.id);let t;const p=Array.isArray(e.values)&&e.values.map(s=>s.id)?.includes("hasValue"),u=Array.isArray(e.values)&&e.values.map(s=>s.id)?.includes("noValue");e.values&&e.values.length>0&&(e.singleSelect?t=h(e.values[0].id,e.type):t=e.values.map(s=>h(s.id,e.type)));const o=e.type?.startsWith("list_of_")||n.includes("tags")||n.includes("assignees"),l=e.type==="datetime",d=e.type==="boolean",r=n.endsWith("version")||e.type==="integer"||e.type==="float",F=e.values&&e.values.some(s=>s.isCustom===!0);let a="eq";if(t===void 0)return a=e.inverted?"notnull":"isnull",{key:n,operator:a};if(p)t=o?[]:void 0,a=o?e.inverted?"eq":"ne":e.inverted?"isnull":"notnull";else if(u)t=o?[]:void 0,a=o?e.inverted?"ne":"eq":e.inverted?"notnull":"isnull";else if(o)e.inverted?a=e.operator==="AND"?"excludesall":"excludesany":a=e.operator==="AND"?"includesall":"includesany";else if(l){const s=m(n,e);if(s)return s;a=e.inverted?"ne":"eq"}else if(d)a=e.inverted?"ne":"eq";else if(F&&!o&&!r)if(!e.values||e.values.length===0)a=e.inverted?"notin":"in";else{const s=e.values.filter(i=>i.isCustom===!0),y=e.values.filter(i=>!i.isCustom);if(y.length===0)if(s.length===1)a="like",t=`%${s[0].id}%`;else return{conditions:s.map(c=>({key:n,operator:"like",value:`%${c.id}%`})),operator:e.inverted?"and":"or"};else{const i=[];return y.length>0&&i.push({key:n,operator:e.inverted?"notin":"in",value:y.map(c=>h(c.id,e.type))}),s.forEach(c=>{i.push({key:n,operator:"like",value:`%${c.id}%`})}),{conditions:i,operator:e.inverted?"and":"or"}}}else a=e.inverted?"notin":"in";return{key:n,value:t,operator:a}},h=(e,n)=>{if(!n)return e;switch(n){case"integer":return parseInt(e,10);case"float":return parseFloat(e);case"boolean":return e.toLowerCase()==="true";default:return e}};exports.clientFilterToQueryFilter=D;exports.convertDateFilterToQueryFilter=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("@ynput/ayon-react-components"),T=require("../../../components/SearchFilter/filterDates.cjs.js"),m=require("./expandRelativeDates.cjs.js"),v="no-date",q=(e,t)=>{if(!t.values||t.values.length===0)return null;const n=t.values.flatMap(p=>{const u=[],o=p.values,l=o?.[0]?.id,d=o?.[1]?.id,r=l&&d&&l!==v&&d!==v?T.detectRelativeDatePattern(l,d):null;return o?.[0]!==void 0&&o?.[0].id!==v&&u.push({key:e,operator:t.inverted?"lte":"gte",value:r?m.createRelativeValue(r.id,0):o[0].id}),o?.[1]!==void 0&&o?.[1].id!==v&&u.push({key:e,operator:t.inverted?"gte":"lte",value:r?m.createRelativeValue(r.id,1):o[1].id}),u});return n.length===0?null:{conditions:n,operator:t.inverted?"or":"and"}},A=e=>!e||e.length===0?{}:{conditions:e.filter(n=>!!n.values?.length).filter(n=>n.id!=="hierarchy").flatMap(n=>x(n)),operator:"and"},F=e=>({conditions:[{key:e,operator:"isnull"},{key:e,operator:"eq",value:""}],operator:"or"}),V=e=>({conditions:[{key:e,operator:"notnull"},{key:e,operator:"ne",value:""}],operator:"and"}),x=e=>{const t=D.getFilterFromId(e.id);let n;const p=Array.isArray(e.values)&&e.values.map(s=>s.id)?.includes("hasValue"),u=Array.isArray(e.values)&&e.values.map(s=>s.id)?.includes("noValue");e.values&&e.values.length>0&&(e.singleSelect?n=h(e.values[0].id,e.type):n=e.values.map(s=>h(s.id,e.type)));const o=e.type?.startsWith("list_of_")||t.includes("tags")||t.includes("assignees"),l=e.type==="datetime",d=e.type==="boolean",r=t.endsWith("version")||e.type==="integer"||e.type==="float",C=e.values&&e.values.some(s=>s.isCustom===!0);let a="eq";if(n===void 0)return a=e.inverted?"notnull":"isnull",{key:t,operator:a};const g=e.type==="string"&&!o;if(p){if(g)return e.inverted?F(t):V(t);n=o?[]:void 0,a=o?e.inverted?"eq":"ne":e.inverted?"isnull":"notnull"}else if(u){if(g)return e.inverted?V(t):F(t);n=o?[]:void 0,a=o?e.inverted?"ne":"eq":e.inverted?"notnull":"isnull"}else if(o)e.inverted?a=e.operator==="AND"?"excludesall":"excludesany":a=e.operator==="AND"?"includesall":"includesany";else if(l){const s=q(t,e);if(s)return s;a=e.inverted?"ne":"eq"}else if(d)a=e.inverted?"ne":"eq";else if(C&&!o&&!r)if(!e.values||e.values.length===0)a=e.inverted?"notin":"in";else{const s=e.values.filter(i=>i.isCustom===!0),y=e.values.filter(i=>!i.isCustom);if(y.length===0)if(s.length===1)a="like",n=`%${s[0].id}%`;else return{conditions:s.map(c=>({key:t,operator:"like",value:`%${c.id}%`})),operator:e.inverted?"and":"or"};else{const i=[];return y.length>0&&i.push({key:t,operator:e.inverted?"notin":"in",value:y.map(c=>h(c.id,e.type))}),s.forEach(c=>{i.push({key:t,operator:"like",value:`%${c.id}%`})}),{conditions:i,operator:e.inverted?"and":"or"}}}else a=e.inverted?"notin":"in";return{key:t,value:n,operator:a}},h=(e,t)=>{if(!t)return e;switch(t){case"integer":return parseInt(e,10);case"float":return parseFloat(e);case"boolean":return e.toLowerCase()==="true";default:return e}};exports.clientFilterToQueryFilter=A;exports.convertDateFilterToQueryFilter=q;
2
2
  //# sourceMappingURL=clientFilterToQueryFilter.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientFilterToQueryFilter.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.ts"],"sourcesContent":["import { getFilterFromId } from '@ynput/ayon-react-components'\nimport { QueryCondition, QueryFilter } from '../types/operations'\nimport { detectRelativeDatePattern } from '@shared/components/SearchFilter/filterDates'\nimport { createRelativeValue } from './expandRelativeDates'\nconst NO_DATE = 'no-date'\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 }[]; isCustom?: boolean }[]\n type?: string\n singleSelect?: boolean\n inverted?: boolean\n operator?: string\n}\n\n/**\n * Converts a datetime Filter to a nested QueryFilter with gte/lte conditions.\n * Returns null if no date conditions could be created.\n * Shared with other filter adapters (e.g. subtasksFilterAdapter).\n */\nexport const convertDateFilterToQueryFilter = (\n key: string,\n filter: { values?: FilterForQuery['values']; inverted?: boolean },\n): QueryFilter | null => {\n if (!filter.values || filter.values.length === 0) return null\n\n const dateConditions: QueryCondition[] = filter.values.flatMap((filterValue) => {\n const conditions: QueryCondition[] = []\n const dateValues = filterValue.values\n\n const startISO = dateValues?.[0]?.id\n const endISO = dateValues?.[1]?.id\n const relativePattern =\n startISO && endISO && startISO !== NO_DATE && endISO !== NO_DATE\n ? detectRelativeDatePattern(startISO, endISO)\n : null\n\n if (dateValues?.[0] !== undefined && dateValues?.[0].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'lte' : 'gte',\n value: relativePattern ? createRelativeValue(relativePattern.id, 0) : dateValues[0].id,\n })\n }\n\n if (dateValues?.[1] !== undefined && dateValues?.[1].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'gte' : 'lte',\n value: relativePattern ? createRelativeValue(relativePattern.id, 1) : dateValues[1].id,\n })\n }\n\n return conditions\n })\n\n if (dateConditions.length === 0) return null\n\n return {\n conditions: dateConditions,\n operator: filter.inverted ? 'or' : 'and',\n } as QueryFilter\n}\n\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 !== '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 | QueryFilter => {\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 // Version field is a special numeric field that should use exact matching\n const isNumberField =\n key.endsWith('version') || filter.type === 'integer' || filter.type === 'float'\n\n // Check if any of the values are custom (user-entered values)\n const hasCustomValues = filter.values && filter.values.some((v) => v.isCustom === true)\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 const dateQueryFilter = convertDateFilterToQueryFilter(key, filter)\n if (dateQueryFilter) return dateQueryFilter\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 if (hasCustomValues && !isListField && !isNumberField) {\n // Handle custom values with partial matching using LIKE operator\n // If we have custom values, we need to use LIKE operator with wildcards for partial matching\n // Note: Version fields and numeric fields use exact matching (eq/in) instead\n\n if (!filter.values || filter.values.length === 0) {\n // This shouldn't happen but handle it gracefully\n operator = filter.inverted ? 'notin' : 'in'\n } else {\n // Separate custom and non-custom values\n const customValues = filter.values.filter((v) => v.isCustom === true)\n const nonCustomValues = filter.values.filter((v) => !v.isCustom)\n\n // If we only have custom values\n if (nonCustomValues.length === 0) {\n if (customValues.length === 1) {\n // Single custom value - use simple LIKE operator\n operator = 'like'\n value = `%${customValues[0].id}%`\n } else {\n // Multiple custom values - create OR conditions for each\n const conditions: QueryCondition[] = customValues.map((v) => ({\n key,\n operator: 'like' as QueryCondition['operator'],\n value: `%${v.id}%`,\n }))\n\n return {\n conditions,\n operator: filter.inverted ? 'and' : 'or',\n } as QueryFilter\n }\n } else {\n // We have both custom and non-custom values\n // Create separate conditions for each type\n const conditions: QueryCondition[] = []\n\n // Add non-custom values condition\n if (nonCustomValues.length > 0) {\n conditions.push({\n key,\n operator: filter.inverted ? 'notin' : 'in',\n value: nonCustomValues.map((v) =>\n convertValueByType(v.id, filter.type),\n ) as QueryCondition['value'],\n })\n }\n\n // Add custom values conditions (each needs its own LIKE)\n customValues.forEach((v) => {\n conditions.push({\n key,\n operator: 'like' as QueryCondition['operator'],\n value: `%${v.id}%`,\n })\n })\n\n return {\n conditions,\n operator: filter.inverted ? 'and' : 'or',\n } as QueryFilter\n }\n }\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":["NO_DATE","convertDateFilterToQueryFilter","key","filter","dateConditions","filterValue","conditions","dateValues","startISO","endISO","relativePattern","detectRelativeDatePattern","createRelativeValue","clientFilterToQueryFilter","filters","f","convertFilterToCondition","getFilterFromId","value","hasSomeValue","v","hasNoValue","convertValueByType","isListField","isDateField","isBooleanField","isNumberField","hasCustomValues","operator","dateQueryFilter","customValues","nonCustomValues","type"],"mappings":"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"}
1
+ {"version":3,"file":"clientFilterToQueryFilter.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.ts"],"sourcesContent":["import { getFilterFromId } from '@ynput/ayon-react-components'\nimport { QueryCondition, QueryFilter } from '../types/operations'\nimport { detectRelativeDatePattern } from '@shared/components/SearchFilter/filterDates'\nimport { createRelativeValue } from './expandRelativeDates'\nconst NO_DATE = 'no-date'\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 }[]; isCustom?: boolean }[]\n type?: string\n singleSelect?: boolean\n inverted?: boolean\n operator?: string\n}\n\n/**\n * Converts a datetime Filter to a nested QueryFilter with gte/lte conditions.\n * Returns null if no date conditions could be created.\n * Shared with other filter adapters (e.g. subtasksFilterAdapter).\n */\nexport const convertDateFilterToQueryFilter = (\n key: string,\n filter: { values?: FilterForQuery['values']; inverted?: boolean },\n): QueryFilter | null => {\n if (!filter.values || filter.values.length === 0) return null\n\n const dateConditions: QueryCondition[] = filter.values.flatMap((filterValue) => {\n const conditions: QueryCondition[] = []\n const dateValues = filterValue.values\n\n const startISO = dateValues?.[0]?.id\n const endISO = dateValues?.[1]?.id\n const relativePattern =\n startISO && endISO && startISO !== NO_DATE && endISO !== NO_DATE\n ? detectRelativeDatePattern(startISO, endISO)\n : null\n\n if (dateValues?.[0] !== undefined && dateValues?.[0].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'lte' : 'gte',\n value: relativePattern ? createRelativeValue(relativePattern.id, 0) : dateValues[0].id,\n })\n }\n\n if (dateValues?.[1] !== undefined && dateValues?.[1].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'gte' : 'lte',\n value: relativePattern ? createRelativeValue(relativePattern.id, 1) : dateValues[1].id,\n })\n }\n\n return conditions\n })\n\n if (dateConditions.length === 0) return null\n\n return {\n conditions: dateConditions,\n operator: filter.inverted ? 'or' : 'and',\n } as QueryFilter\n}\n\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 !== '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// Cleared text attribs are stored as \"\" (not null), so nullness checks on text\n// fields must cover both states. queryFilterToClientFilter reverses these shapes.\nconst textEmptyGroup = (key: string): QueryFilter => ({\n conditions: [\n { key, operator: 'isnull' },\n { key, operator: 'eq', value: '' },\n ],\n operator: 'or',\n})\n\nconst textNotEmptyGroup = (key: string): QueryFilter => ({\n conditions: [\n { key, operator: 'notnull' },\n { key, operator: 'ne', value: '' },\n ],\n operator: 'and',\n})\n\n// Helper function to convert a single Filter to a QueryCondition\nconst convertFilterToCondition = (filter: FilterForQuery): QueryCondition | QueryFilter => {\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 // Version field is a special numeric field that should use exact matching\n const isNumberField =\n key.endsWith('version') || filter.type === 'integer' || filter.type === 'float'\n\n // Check if any of the values are custom (user-entered values)\n const hasCustomValues = filter.values && filter.values.some((v) => v.isCustom === true)\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 const isTextField = filter.type === 'string' && !isListField\n\n // Handle different filter types\n if (hasSomeValue) {\n if (isTextField) {\n return filter.inverted ? textEmptyGroup(key) : textNotEmptyGroup(key)\n }\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 if (isTextField) {\n return filter.inverted ? textNotEmptyGroup(key) : textEmptyGroup(key)\n }\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 const dateQueryFilter = convertDateFilterToQueryFilter(key, filter)\n if (dateQueryFilter) return dateQueryFilter\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 if (hasCustomValues && !isListField && !isNumberField) {\n // Handle custom values with partial matching using LIKE operator\n // If we have custom values, we need to use LIKE operator with wildcards for partial matching\n // Note: Version fields and numeric fields use exact matching (eq/in) instead\n\n if (!filter.values || filter.values.length === 0) {\n // This shouldn't happen but handle it gracefully\n operator = filter.inverted ? 'notin' : 'in'\n } else {\n // Separate custom and non-custom values\n const customValues = filter.values.filter((v) => v.isCustom === true)\n const nonCustomValues = filter.values.filter((v) => !v.isCustom)\n\n // If we only have custom values\n if (nonCustomValues.length === 0) {\n if (customValues.length === 1) {\n // Single custom value - use simple LIKE operator\n operator = 'like'\n value = `%${customValues[0].id}%`\n } else {\n // Multiple custom values - create OR conditions for each\n const conditions: QueryCondition[] = customValues.map((v) => ({\n key,\n operator: 'like' as QueryCondition['operator'],\n value: `%${v.id}%`,\n }))\n\n return {\n conditions,\n operator: filter.inverted ? 'and' : 'or',\n } as QueryFilter\n }\n } else {\n // We have both custom and non-custom values\n // Create separate conditions for each type\n const conditions: QueryCondition[] = []\n\n // Add non-custom values condition\n if (nonCustomValues.length > 0) {\n conditions.push({\n key,\n operator: filter.inverted ? 'notin' : 'in',\n value: nonCustomValues.map((v) =>\n convertValueByType(v.id, filter.type),\n ) as QueryCondition['value'],\n })\n }\n\n // Add custom values conditions (each needs its own LIKE)\n customValues.forEach((v) => {\n conditions.push({\n key,\n operator: 'like' as QueryCondition['operator'],\n value: `%${v.id}%`,\n })\n })\n\n return {\n conditions,\n operator: filter.inverted ? 'and' : 'or',\n } as QueryFilter\n }\n }\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":["NO_DATE","convertDateFilterToQueryFilter","key","filter","dateConditions","filterValue","conditions","dateValues","startISO","endISO","relativePattern","detectRelativeDatePattern","createRelativeValue","clientFilterToQueryFilter","filters","f","convertFilterToCondition","textEmptyGroup","textNotEmptyGroup","getFilterFromId","value","hasSomeValue","v","hasNoValue","convertValueByType","isListField","isDateField","isBooleanField","isNumberField","hasCustomValues","operator","isTextField","dateQueryFilter","customValues","nonCustomValues","type"],"mappings":"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"}
@@ -1,54 +1,71 @@
1
- import { getFilterFromId as F } from "@ynput/ayon-react-components";
2
- import { detectRelativeDatePattern as V } from "../../../components/SearchFilter/filterDates.es.js";
3
- import { createRelativeValue as y } from "./expandRelativeDates.es.js";
4
- const v = "no-date", C = (e, n) => {
1
+ import { getFilterFromId as A } from "@ynput/ayon-react-components";
2
+ import { detectRelativeDatePattern as q } from "../../../components/SearchFilter/filterDates.es.js";
3
+ import { createRelativeValue as g } from "./expandRelativeDates.es.js";
4
+ const v = "no-date", x = (e, n) => {
5
5
  if (!n.values || n.values.length === 0) return null;
6
6
  const t = n.values.flatMap((p) => {
7
- const r = [], o = p.values, d = o?.[0]?.id, l = o?.[1]?.id, u = d && l && d !== v && l !== v ? V(d, l) : null;
8
- return o?.[0] !== void 0 && o?.[0].id !== v && r.push({
7
+ const u = [], o = p.values, d = o?.[0]?.id, l = o?.[1]?.id, r = d && l && d !== v && l !== v ? q(d, l) : null;
8
+ return o?.[0] !== void 0 && o?.[0].id !== v && u.push({
9
9
  key: e,
10
10
  operator: n.inverted ? "lte" : "gte",
11
- value: u ? y(u.id, 0) : o[0].id
12
- }), o?.[1] !== void 0 && o?.[1].id !== v && r.push({
11
+ value: r ? g(r.id, 0) : o[0].id
12
+ }), o?.[1] !== void 0 && o?.[1].id !== v && u.push({
13
13
  key: e,
14
14
  operator: n.inverted ? "gte" : "lte",
15
- value: u ? y(u.id, 1) : o[1].id
16
- }), r;
15
+ value: r ? g(r.id, 1) : o[1].id
16
+ }), u;
17
17
  });
18
18
  return t.length === 0 ? null : {
19
19
  conditions: t,
20
20
  operator: n.inverted ? "or" : "and"
21
21
  };
22
- }, T = (e) => !e || e.length === 0 ? {} : {
23
- conditions: e.filter((t) => !!t.values?.length).filter((t) => t.id !== "hierarchy").flatMap((t) => A(t)),
22
+ }, I = (e) => !e || e.length === 0 ? {} : {
23
+ conditions: e.filter((t) => !!t.values?.length).filter((t) => t.id !== "hierarchy").flatMap((t) => D(t)),
24
24
  operator: "and"
25
- }, A = (e) => {
26
- const n = F(e.id);
25
+ }, F = (e) => ({
26
+ conditions: [
27
+ { key: e, operator: "isnull" },
28
+ { key: e, operator: "eq", value: "" }
29
+ ],
30
+ operator: "or"
31
+ }), V = (e) => ({
32
+ conditions: [
33
+ { key: e, operator: "notnull" },
34
+ { key: e, operator: "ne", value: "" }
35
+ ],
36
+ operator: "and"
37
+ }), D = (e) => {
38
+ const n = A(e.id);
27
39
  let t;
28
- const p = Array.isArray(e.values) && e.values.map((s) => s.id)?.includes("hasValue"), r = Array.isArray(e.values) && e.values.map((s) => s.id)?.includes("noValue");
29
- e.values && e.values.length > 0 && (e.singleSelect ? t = m(e.values[0].id, e.type) : t = e.values.map((s) => m(s.id, e.type)));
30
- const o = e.type?.startsWith("list_of_") || n.includes("tags") || n.includes("assignees"), d = e.type === "datetime", l = e.type === "boolean", u = n.endsWith("version") || e.type === "integer" || e.type === "float", g = e.values && e.values.some((s) => s.isCustom === !0);
40
+ const p = Array.isArray(e.values) && e.values.map((s) => s.id)?.includes("hasValue"), u = Array.isArray(e.values) && e.values.map((s) => s.id)?.includes("noValue");
41
+ e.values && e.values.length > 0 && (e.singleSelect ? t = h(e.values[0].id, e.type) : t = e.values.map((s) => h(s.id, e.type)));
42
+ const o = e.type?.startsWith("list_of_") || n.includes("tags") || n.includes("assignees"), d = e.type === "datetime", l = e.type === "boolean", r = n.endsWith("version") || e.type === "integer" || e.type === "float", C = e.values && e.values.some((s) => s.isCustom === !0);
31
43
  let a = "eq";
32
44
  if (t === void 0)
33
45
  return a = e.inverted ? "notnull" : "isnull", { key: n, operator: a };
34
- if (p)
46
+ const y = e.type === "string" && !o;
47
+ if (p) {
48
+ if (y)
49
+ return e.inverted ? F(n) : V(n);
35
50
  t = o ? [] : void 0, a = o ? e.inverted ? "eq" : "ne" : e.inverted ? "isnull" : "notnull";
36
- else if (r)
51
+ } else if (u) {
52
+ if (y)
53
+ return e.inverted ? V(n) : F(n);
37
54
  t = o ? [] : void 0, a = o ? e.inverted ? "ne" : "eq" : e.inverted ? "notnull" : "isnull";
38
- else if (o)
55
+ } else if (o)
39
56
  e.inverted ? a = e.operator === "AND" ? "excludesall" : "excludesany" : a = e.operator === "AND" ? "includesall" : "includesany";
40
57
  else if (d) {
41
- const s = C(n, e);
58
+ const s = x(n, e);
42
59
  if (s) return s;
43
60
  a = e.inverted ? "ne" : "eq";
44
61
  } else if (l)
45
62
  a = e.inverted ? "ne" : "eq";
46
- else if (g && !o && !u)
63
+ else if (C && !o && !r)
47
64
  if (!e.values || e.values.length === 0)
48
65
  a = e.inverted ? "notin" : "in";
49
66
  else {
50
- const s = e.values.filter((i) => i.isCustom === !0), h = e.values.filter((i) => !i.isCustom);
51
- if (h.length === 0)
67
+ const s = e.values.filter((i) => i.isCustom === !0), m = e.values.filter((i) => !i.isCustom);
68
+ if (m.length === 0)
52
69
  if (s.length === 1)
53
70
  a = "like", t = `%${s[0].id}%`;
54
71
  else
@@ -62,11 +79,11 @@ const v = "no-date", C = (e, n) => {
62
79
  };
63
80
  else {
64
81
  const i = [];
65
- return h.length > 0 && i.push({
82
+ return m.length > 0 && i.push({
66
83
  key: n,
67
84
  operator: e.inverted ? "notin" : "in",
68
- value: h.map(
69
- (c) => m(c.id, e.type)
85
+ value: m.map(
86
+ (c) => h(c.id, e.type)
70
87
  )
71
88
  }), s.forEach((c) => {
72
89
  i.push({
@@ -83,7 +100,7 @@ const v = "no-date", C = (e, n) => {
83
100
  else
84
101
  a = e.inverted ? "notin" : "in";
85
102
  return { key: n, value: t, operator: a };
86
- }, m = (e, n) => {
103
+ }, h = (e, n) => {
87
104
  if (!n) return e;
88
105
  switch (n) {
89
106
  case "integer":
@@ -97,7 +114,7 @@ const v = "no-date", C = (e, n) => {
97
114
  }
98
115
  };
99
116
  export {
100
- T as clientFilterToQueryFilter,
101
- C as convertDateFilterToQueryFilter
117
+ I as clientFilterToQueryFilter,
118
+ x as convertDateFilterToQueryFilter
102
119
  };
103
120
  //# sourceMappingURL=clientFilterToQueryFilter.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientFilterToQueryFilter.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.ts"],"sourcesContent":["import { getFilterFromId } from '@ynput/ayon-react-components'\nimport { QueryCondition, QueryFilter } from '../types/operations'\nimport { detectRelativeDatePattern } from '@shared/components/SearchFilter/filterDates'\nimport { createRelativeValue } from './expandRelativeDates'\nconst NO_DATE = 'no-date'\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 }[]; isCustom?: boolean }[]\n type?: string\n singleSelect?: boolean\n inverted?: boolean\n operator?: string\n}\n\n/**\n * Converts a datetime Filter to a nested QueryFilter with gte/lte conditions.\n * Returns null if no date conditions could be created.\n * Shared with other filter adapters (e.g. subtasksFilterAdapter).\n */\nexport const convertDateFilterToQueryFilter = (\n key: string,\n filter: { values?: FilterForQuery['values']; inverted?: boolean },\n): QueryFilter | null => {\n if (!filter.values || filter.values.length === 0) return null\n\n const dateConditions: QueryCondition[] = filter.values.flatMap((filterValue) => {\n const conditions: QueryCondition[] = []\n const dateValues = filterValue.values\n\n const startISO = dateValues?.[0]?.id\n const endISO = dateValues?.[1]?.id\n const relativePattern =\n startISO && endISO && startISO !== NO_DATE && endISO !== NO_DATE\n ? detectRelativeDatePattern(startISO, endISO)\n : null\n\n if (dateValues?.[0] !== undefined && dateValues?.[0].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'lte' : 'gte',\n value: relativePattern ? createRelativeValue(relativePattern.id, 0) : dateValues[0].id,\n })\n }\n\n if (dateValues?.[1] !== undefined && dateValues?.[1].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'gte' : 'lte',\n value: relativePattern ? createRelativeValue(relativePattern.id, 1) : dateValues[1].id,\n })\n }\n\n return conditions\n })\n\n if (dateConditions.length === 0) return null\n\n return {\n conditions: dateConditions,\n operator: filter.inverted ? 'or' : 'and',\n } as QueryFilter\n}\n\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 !== '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 | QueryFilter => {\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 // Version field is a special numeric field that should use exact matching\n const isNumberField =\n key.endsWith('version') || filter.type === 'integer' || filter.type === 'float'\n\n // Check if any of the values are custom (user-entered values)\n const hasCustomValues = filter.values && filter.values.some((v) => v.isCustom === true)\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 const dateQueryFilter = convertDateFilterToQueryFilter(key, filter)\n if (dateQueryFilter) return dateQueryFilter\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 if (hasCustomValues && !isListField && !isNumberField) {\n // Handle custom values with partial matching using LIKE operator\n // If we have custom values, we need to use LIKE operator with wildcards for partial matching\n // Note: Version fields and numeric fields use exact matching (eq/in) instead\n\n if (!filter.values || filter.values.length === 0) {\n // This shouldn't happen but handle it gracefully\n operator = filter.inverted ? 'notin' : 'in'\n } else {\n // Separate custom and non-custom values\n const customValues = filter.values.filter((v) => v.isCustom === true)\n const nonCustomValues = filter.values.filter((v) => !v.isCustom)\n\n // If we only have custom values\n if (nonCustomValues.length === 0) {\n if (customValues.length === 1) {\n // Single custom value - use simple LIKE operator\n operator = 'like'\n value = `%${customValues[0].id}%`\n } else {\n // Multiple custom values - create OR conditions for each\n const conditions: QueryCondition[] = customValues.map((v) => ({\n key,\n operator: 'like' as QueryCondition['operator'],\n value: `%${v.id}%`,\n }))\n\n return {\n conditions,\n operator: filter.inverted ? 'and' : 'or',\n } as QueryFilter\n }\n } else {\n // We have both custom and non-custom values\n // Create separate conditions for each type\n const conditions: QueryCondition[] = []\n\n // Add non-custom values condition\n if (nonCustomValues.length > 0) {\n conditions.push({\n key,\n operator: filter.inverted ? 'notin' : 'in',\n value: nonCustomValues.map((v) =>\n convertValueByType(v.id, filter.type),\n ) as QueryCondition['value'],\n })\n }\n\n // Add custom values conditions (each needs its own LIKE)\n customValues.forEach((v) => {\n conditions.push({\n key,\n operator: 'like' as QueryCondition['operator'],\n value: `%${v.id}%`,\n })\n })\n\n return {\n conditions,\n operator: filter.inverted ? 'and' : 'or',\n } as QueryFilter\n }\n }\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":["NO_DATE","convertDateFilterToQueryFilter","key","filter","dateConditions","filterValue","conditions","dateValues","startISO","endISO","relativePattern","detectRelativeDatePattern","createRelativeValue","clientFilterToQueryFilter","filters","f","convertFilterToCondition","getFilterFromId","value","hasSomeValue","v","hasNoValue","convertValueByType","isListField","isDateField","isBooleanField","isNumberField","hasCustomValues","operator","dateQueryFilter","customValues","nonCustomValues","type"],"mappings":"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"}
1
+ {"version":3,"file":"clientFilterToQueryFilter.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.ts"],"sourcesContent":["import { getFilterFromId } from '@ynput/ayon-react-components'\nimport { QueryCondition, QueryFilter } from '../types/operations'\nimport { detectRelativeDatePattern } from '@shared/components/SearchFilter/filterDates'\nimport { createRelativeValue } from './expandRelativeDates'\nconst NO_DATE = 'no-date'\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 }[]; isCustom?: boolean }[]\n type?: string\n singleSelect?: boolean\n inverted?: boolean\n operator?: string\n}\n\n/**\n * Converts a datetime Filter to a nested QueryFilter with gte/lte conditions.\n * Returns null if no date conditions could be created.\n * Shared with other filter adapters (e.g. subtasksFilterAdapter).\n */\nexport const convertDateFilterToQueryFilter = (\n key: string,\n filter: { values?: FilterForQuery['values']; inverted?: boolean },\n): QueryFilter | null => {\n if (!filter.values || filter.values.length === 0) return null\n\n const dateConditions: QueryCondition[] = filter.values.flatMap((filterValue) => {\n const conditions: QueryCondition[] = []\n const dateValues = filterValue.values\n\n const startISO = dateValues?.[0]?.id\n const endISO = dateValues?.[1]?.id\n const relativePattern =\n startISO && endISO && startISO !== NO_DATE && endISO !== NO_DATE\n ? detectRelativeDatePattern(startISO, endISO)\n : null\n\n if (dateValues?.[0] !== undefined && dateValues?.[0].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'lte' : 'gte',\n value: relativePattern ? createRelativeValue(relativePattern.id, 0) : dateValues[0].id,\n })\n }\n\n if (dateValues?.[1] !== undefined && dateValues?.[1].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'gte' : 'lte',\n value: relativePattern ? createRelativeValue(relativePattern.id, 1) : dateValues[1].id,\n })\n }\n\n return conditions\n })\n\n if (dateConditions.length === 0) return null\n\n return {\n conditions: dateConditions,\n operator: filter.inverted ? 'or' : 'and',\n } as QueryFilter\n}\n\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 !== '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// Cleared text attribs are stored as \"\" (not null), so nullness checks on text\n// fields must cover both states. queryFilterToClientFilter reverses these shapes.\nconst textEmptyGroup = (key: string): QueryFilter => ({\n conditions: [\n { key, operator: 'isnull' },\n { key, operator: 'eq', value: '' },\n ],\n operator: 'or',\n})\n\nconst textNotEmptyGroup = (key: string): QueryFilter => ({\n conditions: [\n { key, operator: 'notnull' },\n { key, operator: 'ne', value: '' },\n ],\n operator: 'and',\n})\n\n// Helper function to convert a single Filter to a QueryCondition\nconst convertFilterToCondition = (filter: FilterForQuery): QueryCondition | QueryFilter => {\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 // Version field is a special numeric field that should use exact matching\n const isNumberField =\n key.endsWith('version') || filter.type === 'integer' || filter.type === 'float'\n\n // Check if any of the values are custom (user-entered values)\n const hasCustomValues = filter.values && filter.values.some((v) => v.isCustom === true)\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 const isTextField = filter.type === 'string' && !isListField\n\n // Handle different filter types\n if (hasSomeValue) {\n if (isTextField) {\n return filter.inverted ? textEmptyGroup(key) : textNotEmptyGroup(key)\n }\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 if (isTextField) {\n return filter.inverted ? textNotEmptyGroup(key) : textEmptyGroup(key)\n }\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 const dateQueryFilter = convertDateFilterToQueryFilter(key, filter)\n if (dateQueryFilter) return dateQueryFilter\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 if (hasCustomValues && !isListField && !isNumberField) {\n // Handle custom values with partial matching using LIKE operator\n // If we have custom values, we need to use LIKE operator with wildcards for partial matching\n // Note: Version fields and numeric fields use exact matching (eq/in) instead\n\n if (!filter.values || filter.values.length === 0) {\n // This shouldn't happen but handle it gracefully\n operator = filter.inverted ? 'notin' : 'in'\n } else {\n // Separate custom and non-custom values\n const customValues = filter.values.filter((v) => v.isCustom === true)\n const nonCustomValues = filter.values.filter((v) => !v.isCustom)\n\n // If we only have custom values\n if (nonCustomValues.length === 0) {\n if (customValues.length === 1) {\n // Single custom value - use simple LIKE operator\n operator = 'like'\n value = `%${customValues[0].id}%`\n } else {\n // Multiple custom values - create OR conditions for each\n const conditions: QueryCondition[] = customValues.map((v) => ({\n key,\n operator: 'like' as QueryCondition['operator'],\n value: `%${v.id}%`,\n }))\n\n return {\n conditions,\n operator: filter.inverted ? 'and' : 'or',\n } as QueryFilter\n }\n } else {\n // We have both custom and non-custom values\n // Create separate conditions for each type\n const conditions: QueryCondition[] = []\n\n // Add non-custom values condition\n if (nonCustomValues.length > 0) {\n conditions.push({\n key,\n operator: filter.inverted ? 'notin' : 'in',\n value: nonCustomValues.map((v) =>\n convertValueByType(v.id, filter.type),\n ) as QueryCondition['value'],\n })\n }\n\n // Add custom values conditions (each needs its own LIKE)\n customValues.forEach((v) => {\n conditions.push({\n key,\n operator: 'like' as QueryCondition['operator'],\n value: `%${v.id}%`,\n })\n })\n\n return {\n conditions,\n operator: filter.inverted ? 'and' : 'or',\n } as QueryFilter\n }\n }\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":["NO_DATE","convertDateFilterToQueryFilter","key","filter","dateConditions","filterValue","conditions","dateValues","startISO","endISO","relativePattern","detectRelativeDatePattern","createRelativeValue","clientFilterToQueryFilter","filters","f","convertFilterToCondition","textEmptyGroup","textNotEmptyGroup","getFilterFromId","value","hasSomeValue","v","hasNoValue","convertValueByType","isListField","isDateField","isBooleanField","isNumberField","hasCustomValues","operator","isTextField","dateQueryFilter","customValues","nonCustomValues","type"],"mappings":";;;AAIA,MAAMA,IAAU,WAiBHC,IAAiC,CAC5CC,GACAC,MACuB;AACvB,MAAI,CAACA,EAAO,UAAUA,EAAO,OAAO,WAAW,EAAG,QAAO;AAEzD,QAAMC,IAAmCD,EAAO,OAAO,QAAQ,CAACE,MAAgB;AAC9E,UAAMC,IAA+B,CAAA,GAC/BC,IAAaF,EAAY,QAEzBG,IAAWD,IAAa,CAAC,GAAG,IAC5BE,IAASF,IAAa,CAAC,GAAG,IAC1BG,IACJF,KAAYC,KAAUD,MAAaR,KAAWS,MAAWT,IACrDW,EAA0BH,GAAUC,CAAM,IAC1C;AAEN,WAAIF,IAAa,CAAC,MAAM,UAAaA,IAAa,CAAC,EAAE,OAAOP,KAC1DM,EAAW,KAAK;AAAA,MACd,KAAAJ;AAAA,MACA,UAAUC,EAAO,WAAW,QAAQ;AAAA,MACpC,OAAOO,IAAkBE,EAAoBF,EAAgB,IAAI,CAAC,IAAIH,EAAW,CAAC,EAAE;AAAA,IAAA,CACrF,GAGCA,IAAa,CAAC,MAAM,UAAaA,IAAa,CAAC,EAAE,OAAOP,KAC1DM,EAAW,KAAK;AAAA,MACd,KAAAJ;AAAA,MACA,UAAUC,EAAO,WAAW,QAAQ;AAAA,MACpC,OAAOO,IAAkBE,EAAoBF,EAAgB,IAAI,CAAC,IAAIH,EAAW,CAAC,EAAE;AAAA,IAAA,CACrF,GAGID;AAAA,EACT,CAAC;AAED,SAAIF,EAAe,WAAW,IAAU,OAEjC;AAAA,IACL,YAAYA;AAAA,IACZ,UAAUD,EAAO,WAAW,OAAO;AAAA,EAAA;AAEvC,GAEaU,IAA4B,CAACC,MAEpC,CAACA,KAAWA,EAAQ,WAAW,IAC1B,CAAA,IAUF;AAAA,EACL,YAPmDA,EAClD,OAAO,CAACC,MAAM,CAAC,CAACA,EAAE,QAAQ,MAAM,EAChC,OAAO,CAACA,MAAMA,EAAE,OAAO,WAAW,EAClC,QAAQ,CAACZ,MAAWa,EAAyBb,CAAM,CAAC;AAAA,EAKrD,UAAU;AAAA,GAMRc,IAAiB,CAACf,OAA8B;AAAA,EACpD,YAAY;AAAA,IACV,EAAE,KAAAA,GAAK,UAAU,SAAA;AAAA,IACjB,EAAE,KAAAA,GAAK,UAAU,MAAM,OAAO,GAAA;AAAA,EAAG;AAAA,EAEnC,UAAU;AACZ,IAEMgB,IAAoB,CAAChB,OAA8B;AAAA,EACvD,YAAY;AAAA,IACV,EAAE,KAAAA,GAAK,UAAU,UAAA;AAAA,IACjB,EAAE,KAAAA,GAAK,UAAU,MAAM,OAAO,GAAA;AAAA,EAAG;AAAA,EAEnC,UAAU;AACZ,IAGMc,IAA2B,CAACb,MAAyD;AAEzF,QAAMD,IAAMiB,EAAgBhB,EAAO,EAAE;AAGrC,MAAIiB;AAGJ,QAAMC,IACJ,MAAM,QAAQlB,EAAO,MAAM,KAAKA,EAAO,OAAO,IAAI,CAACmB,MAAMA,EAAE,EAAE,GAAG,SAAS,UAAU,GAC/EC,IACJ,MAAM,QAAQpB,EAAO,MAAM,KAAKA,EAAO,OAAO,IAAI,CAACmB,MAAMA,EAAE,EAAE,GAAG,SAAS,SAAS;AAEpF,EAAInB,EAAO,UAAUA,EAAO,OAAO,SAAS,MACtCA,EAAO,eAETiB,IAAQI,EAAmBrB,EAAO,OAAO,CAAC,EAAE,IAAIA,EAAO,IAAI,IAG3DiB,IAAQjB,EAAO,OAAO,IAAI,CAACmB,MAAME,EAAmBF,EAAE,IAAInB,EAAO,IAAI,CAAC;AAK1E,QAAMsB,IACJtB,EAAO,MAAM,WAAW,UAAU,KAAKD,EAAI,SAAS,MAAM,KAAKA,EAAI,SAAS,WAAW,GACnFwB,IAAcvB,EAAO,SAAS,YAC9BwB,IAAiBxB,EAAO,SAAS,WAEjCyB,IACJ1B,EAAI,SAAS,SAAS,KAAKC,EAAO,SAAS,aAAaA,EAAO,SAAS,SAGpE0B,IAAkB1B,EAAO,UAAUA,EAAO,OAAO,KAAK,CAACmB,MAAMA,EAAE,aAAa,EAAI;AAGtF,MAAIQ,IAAuC;AAG3C,MAAIV,MAAU;AACZ,WAAAU,IAAW3B,EAAO,WAAW,YAAY,UAClC,EAAE,KAAAD,GAAK,UAAA4B,EAAA;AAGhB,QAAMC,IAAc5B,EAAO,SAAS,YAAY,CAACsB;AAGjD,MAAIJ,GAAc;AAChB,QAAIU;AACF,aAAO5B,EAAO,WAAWc,EAAef,CAAG,IAAIgB,EAAkBhB,CAAG;AAGtE,IAAAkB,IAAQK,IAAc,CAAA,IAAK,QAC3BK,IAAWL,IACPtB,EAAO,WACL,OACA,OACFA,EAAO,WACP,WACA;AAAA,EACN,WAAWoB,GAAY;AACrB,QAAIQ;AACF,aAAO5B,EAAO,WAAWe,EAAkBhB,CAAG,IAAIe,EAAef,CAAG;AAGtE,IAAAkB,IAAQK,IAAc,CAAA,IAAK,QAC3BK,IAAWL,IACPtB,EAAO,WACL,OACA,OACFA,EAAO,WACP,YACA;AAAA,EACN,WAAWsB;AACT,IAAItB,EAAO,WACT2B,IAAW3B,EAAO,aAAa,QAAQ,gBAAgB,gBAEvD2B,IAAW3B,EAAO,aAAa,QAAQ,gBAAgB;AAAA,WAEhDuB,GAAa;AACtB,UAAMM,IAAkB/B,EAA+BC,GAAKC,CAAM;AAClE,QAAI6B,EAAiB,QAAOA;AAE5B,IAAAF,IAAW3B,EAAO,WAAW,OAAO;AAAA,EACtC,WAAWwB;AACT,IAAAG,IAAW3B,EAAO,WAAW,OAAO;AAAA,WAC3B0B,KAAmB,CAACJ,KAAe,CAACG;AAK7C,QAAI,CAACzB,EAAO,UAAUA,EAAO,OAAO,WAAW;AAE7C,MAAA2B,IAAW3B,EAAO,WAAW,UAAU;AAAA,SAClC;AAEL,YAAM8B,IAAe9B,EAAO,OAAO,OAAO,CAACmB,MAAMA,EAAE,aAAa,EAAI,GAC9DY,IAAkB/B,EAAO,OAAO,OAAO,CAACmB,MAAM,CAACA,EAAE,QAAQ;AAG/D,UAAIY,EAAgB,WAAW;AAC7B,YAAID,EAAa,WAAW;AAE1B,UAAAH,IAAW,QACXV,IAAQ,IAAIa,EAAa,CAAC,EAAE,EAAE;AAAA;AAS9B,iBAAO;AAAA,YACL,YAPmCA,EAAa,IAAI,CAACX,OAAO;AAAA,cAC5D,KAAApB;AAAA,cACA,UAAU;AAAA,cACV,OAAO,IAAIoB,EAAE,EAAE;AAAA,YAAA,EACf;AAAA,YAIA,UAAUnB,EAAO,WAAW,QAAQ;AAAA,UAAA;AAAA,WAGnC;AAGL,cAAMG,IAA+B,CAAA;AAGrC,eAAI4B,EAAgB,SAAS,KAC3B5B,EAAW,KAAK;AAAA,UACd,KAAAJ;AAAA,UACA,UAAUC,EAAO,WAAW,UAAU;AAAA,UACtC,OAAO+B,EAAgB;AAAA,YAAI,CAACZ,MAC1BE,EAAmBF,EAAE,IAAInB,EAAO,IAAI;AAAA,UAAA;AAAA,QACtC,CACD,GAIH8B,EAAa,QAAQ,CAACX,MAAM;AAC1B,UAAAhB,EAAW,KAAK;AAAA,YACd,KAAAJ;AAAA,YACA,UAAU;AAAA,YACV,OAAO,IAAIoB,EAAE,EAAE;AAAA,UAAA,CAChB;AAAA,QACH,CAAC,GAEM;AAAA,UACL,YAAAhB;AAAA,UACA,UAAUH,EAAO,WAAW,QAAQ;AAAA,QAAA;AAAA,MAExC;AAAA,IACF;AAAA;AAGA,IAAA2B,IAAW3B,EAAO,WAAW,UAAU;AAGzC,SAAO,EAAE,KAAAD,GAAK,OAAAkB,GAAO,UAAAU,EAAA;AACvB,GAGMN,IAAqB,CAACJ,GAAee,MAA6C;AACtF,MAAI,CAACA,EAAM,QAAOf;AAElB,UAAQe,GAAA;AAAA,IACN,KAAK;AACH,aAAO,SAASf,GAAO,EAAE;AAAA,IAC3B,KAAK;AACH,aAAO,WAAWA,CAAK;AAAA,IACzB,KAAK;AACH,aAAOA,EAAM,kBAAkB;AAAA,IACjC;AACE,aAAOA;AAAA,EAAA;AAEb;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("@ynput/ayon-react-components"),a=require("date-fns"),I=require("../../../components/SearchFilter/filterDates.cjs.js"),p=require("./expandRelativeDates.cjs.js"),S=(e,l)=>{if(!e?.conditions||e.conditions.length===0)return[];const t=[],i=new Set;return e.conditions.forEach(n=>{if("key"in n){const s=R(n,l,i);s&&t.push(s)}else{const s=M(n,l);if(s)t.push(s);else{const r=S(n,l);t.push(...r)}}}),O(t)},O=e=>{const l=new Map;for(const t of e){const i=l.get(t.id);if(i){const n=new Set((i.values||[]).map(r=>r.id)),s=(t.values||[]).filter(r=>!n.has(r.id));i.values=[...i.values||[],...s]}else l.set(t.id,{...t,values:[...t.values||[]]})}return Array.from(l.values())},M=(e,l)=>{if(!e.conditions||e.conditions.length<1)return null;const t=e.conditions.filter(u=>"key"in u);if(t.length!==e.conditions.length)return null;const i=t[0].key;if(!t.every(u=>u.key===i))return null;const n=h(i,l);if(!n||n.type!=="datetime")return null;const s=t.find(u=>u.operator==="gte"),r=t.find(u=>u.operator==="lte");if(!s&&!r)return null;const o=s?.value,d=r?.value,f=o&&p.isRelativeDateValue(o)?p.resolveRelativeValue(o):o,c=d&&p.isRelativeDateValue(d)?p.resolveRelativeValue(d):d;let g="Custom range";if(f&&c){const u=I.detectRelativeDatePattern(f,c);if(u)g=u.label;else{const V=a.parseISO(f),y=a.parseISO(c);if(a.isValid(V)&&a.isValid(y)){const b=new Date().getFullYear(),C=y.getFullYear()===b?"MMM d":"MMM d, yyyy";g=`${a.format(V,"MMM d")} – ${a.format(y,C)}`}}}const v={id:`custom-${f||""}-${c||""}`,label:g,values:[...f?[{id:f,label:a.isValid(a.parseISO(f))?a.format(a.parseISO(f),"MMM d, yyyy"):f}]:[],...c?[{id:c,label:a.isValid(a.parseISO(c))?a.format(a.parseISO(c),"MMM d, yyyy"):c}]:[]]};return{id:n.id,type:n.type,label:n.label,icon:n.icon,inverted:e.operator==="or",values:[v],singleSelect:n.singleSelect}},R=(e,l,t)=>{const{key:i,value:n,operator:s}=e;if(i===m.SEARCH_FILTER_ID){const u=Array.isArray(n)?n:[n||""];return{id:m.SEARCH_FILTER_ID,type:"string",label:"",values:u.map(y=>({id:String(y),label:String(y)}))}}const r=h(i,l);if(!r)return null;const o=`${i}_${s}_${JSON.stringify(n)}`;if(t.has(o))return null;t.add(o);const d=D(n,s,r),c=d.length===1&&["hasValue","noValue"].includes(String(d[0].id))?!1:A(s,r.type),g=F(s,r.type);return{id:r.id,type:r.type,label:r.label,inverted:c,operator:g,icon:r.icon,values:d,isCustom:r.allowsCustomValues,singleSelect:r.singleSelect}},h=(e,l)=>{let t=l.find(i=>i.id===e);return t||(t=l.find(i=>i.id.endsWith(e)||i.id.replace(/^[^.]*\./,"")===e||i.id.split("_").pop()===e),t)||(t=l.find(i=>i.label?.toLowerCase()===e.toLowerCase())),t},D=(e,l,t)=>{if(l==="isnull"||l==="notnull")return l==="isnull"?[{id:"noValue",label:"No Value"}]:[{id:"hasValue",label:"Has Value"}];if(Array.isArray(e)&&e.length===0){if(l==="eq")return[{id:"noValue",label:"No Value"}];if(l==="ne")return[{id:"hasValue",label:"Has Value"}]}return e==null?[]:(Array.isArray(e)?e:[e]).map(n=>{let s=String(n),r=!1;if(l==="like"&&typeof n=="string"&&(s=n.replace(/^%/,"").replace(/%$/,""),r=!0),!r){const o=t.values?.find(d=>d.id===s);if(o)return o}if(t.type==="datetime"&&typeof n=="string")try{const o=a.parseISO(n);if(a.isValid(o))return{id:s,label:a.format(o,"MMM d, yyyy"),isCustom:!0}}catch{}return{id:s,label:s,isCustom:!0}})},A=(e,l)=>e?["ne","notin","excludes","excludesall","excludesany","notnull"].includes(e):!1,F=(e,l)=>l?.startsWith("list_of_")&&(e==="includesall"||e==="excludesall")?"AND":"OR";exports.queryFilterToClientFilter=S;exports.tryMergeDatetimeRange=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("@ynput/ayon-react-components"),o=require("date-fns"),I=require("../../../components/SearchFilter/filterDates.cjs.js"),g=require("./expandRelativeDates.cjs.js"),h=(t,s)=>{if(!t?.conditions||t.conditions.length===0)return[];const e=[],r=new Set;return t.conditions.forEach(n=>{if("key"in n){const a=D(n,s,r);a&&e.push(a)}else{const a=M(n,s),l=a?null:b(n,s);if(a)e.push(a);else if(l)e.push(l);else{const i=h(n,s);e.push(...i)}}}),R(e)},R=t=>{const s=new Map;for(const e of t){const r=s.get(e.id);if(r){const n=new Set((r.values||[]).map(l=>l.id)),a=(e.values||[]).filter(l=>!n.has(l.id));r.values=[...r.values||[],...a]}else s.set(e.id,{...e,values:[...e.values||[]]})}return Array.from(s.values())},M=(t,s)=>{if(!t.conditions||t.conditions.length<1)return null;const e=t.conditions.filter(u=>"key"in u);if(e.length!==t.conditions.length)return null;const r=e[0].key;if(!e.every(u=>u.key===r))return null;const n=m(r,s);if(!n||n.type!=="datetime")return null;const a=e.find(u=>u.operator==="gte"),l=e.find(u=>u.operator==="lte");if(!a&&!l)return null;const i=a?.value,d=l?.value,f=i&&g.isRelativeDateValue(i)?g.resolveRelativeValue(i):i,c=d&&g.isRelativeDateValue(d)?g.resolveRelativeValue(d):d;let p="Custom range";if(f&&c){const u=I.detectRelativeDatePattern(f,c);if(u)p=u.label;else{const V=o.parseISO(f),y=o.parseISO(c);if(o.isValid(V)&&o.isValid(y)){const C=new Date().getFullYear(),O=y.getFullYear()===C?"MMM d":"MMM d, yyyy";p=`${o.format(V,"MMM d")} – ${o.format(y,O)}`}}}const v={id:`custom-${f||""}-${c||""}`,label:p,values:[...f?[{id:f,label:o.isValid(o.parseISO(f))?o.format(o.parseISO(f),"MMM d, yyyy"):f}]:[],...c?[{id:c,label:o.isValid(o.parseISO(c))?o.format(o.parseISO(c),"MMM d, yyyy"):c}]:[]]};return{id:n.id,type:n.type,label:n.label,icon:n.icon,inverted:t.operator==="or",values:[v],singleSelect:n.singleSelect}},b=(t,s)=>{const e=t.conditions?.filter(i=>"key"in i)??[];if(e.length!==2||e.length!==t.conditions?.length)return null;const r=e[0].key;if(!e.every(i=>i.key===r))return null;const n=t.operator==="or"&&e.some(i=>i.operator==="isnull")&&e.some(i=>i.operator==="eq"&&i.value===""),a=t.operator==="and"&&e.some(i=>i.operator==="notnull")&&e.some(i=>i.operator==="ne"&&i.value==="");if(!n&&!a)return null;const l=m(r,s);return l?{id:l.id,type:l.type,label:l.label,inverted:!1,operator:"OR",icon:l.icon,values:n?[{id:"noValue",label:"No Value"}]:[{id:"hasValue",label:"Has Value"}],isCustom:l.allowsCustomValues,singleSelect:l.singleSelect}:null},D=(t,s,e)=>{const{key:r,value:n,operator:a}=t;if(r===S.SEARCH_FILTER_ID){const u=Array.isArray(n)?n:[n||""];return{id:S.SEARCH_FILTER_ID,type:"string",label:"",values:u.map(y=>({id:String(y),label:String(y)}))}}const l=m(r,s);if(!l)return null;const i=`${r}_${a}_${JSON.stringify(n)}`;if(e.has(i))return null;e.add(i);const d=w(n,a,l),c=d.length===1&&["hasValue","noValue"].includes(String(d[0].id))?!1:x(a,l.type),p=A(a,l.type);return{id:l.id,type:l.type,label:l.label,inverted:c,operator:p,icon:l.icon,values:d,isCustom:l.allowsCustomValues,singleSelect:l.singleSelect}},m=(t,s)=>{let e=s.find(r=>r.id===t);return e||(e=s.find(r=>r.id.endsWith(t)||r.id.replace(/^[^.]*\./,"")===t||r.id.split("_").pop()===t),e)||(e=s.find(r=>r.label?.toLowerCase()===t.toLowerCase())),e},w=(t,s,e)=>{if(s==="isnull"||s==="notnull")return s==="isnull"?[{id:"noValue",label:"No Value"}]:[{id:"hasValue",label:"Has Value"}];if(Array.isArray(t)&&t.length===0){if(s==="eq")return[{id:"noValue",label:"No Value"}];if(s==="ne")return[{id:"hasValue",label:"Has Value"}]}return t==null?[]:(Array.isArray(t)?t:[t]).map(n=>{let a=String(n),l=!1;if(s==="like"&&typeof n=="string"&&(a=n.replace(/^%/,"").replace(/%$/,""),l=!0),!l){const i=e.values?.find(d=>d.id===a);if(i)return i}if(e.type==="datetime"&&typeof n=="string")try{const i=o.parseISO(n);if(o.isValid(i))return{id:a,label:o.format(i,"MMM d, yyyy"),isCustom:!0}}catch{}return{id:a,label:a,isCustom:!0}})},x=(t,s)=>t?["ne","notin","excludes","excludesall","excludesany","notnull"].includes(t):!1,A=(t,s)=>s?.startsWith("list_of_")&&(t==="includesall"||t==="excludesall")?"AND":"OR";exports.queryFilterToClientFilter=h;exports.tryMergeDatetimeRange=M;exports.tryMergeTextNullness=b;
2
2
  //# sourceMappingURL=queryFilterToClientFilter.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queryFilterToClientFilter.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.ts"],"sourcesContent":["import { Filter, FilterValue, SEARCH_FILTER_ID } from '@ynput/ayon-react-components'\nimport { QueryFilter, QueryCondition } from '../types/operations'\nimport { format, parseISO, isValid } from 'date-fns'\nimport { detectRelativeDatePattern } from '@shared/components/SearchFilter/filterDates'\nimport { isRelativeDateValue, resolveRelativeValue } from './expandRelativeDates'\n\n// Option interface for filter options (from useBuildFilterOptions)\ninterface Option {\n id: string\n type?: string\n label: string\n icon?: string | null\n img?: string | null\n inverted?: boolean\n operator?: 'AND' | 'OR'\n values?: FilterValue[]\n allowsCustomValues?: boolean\n allowHasValue?: boolean\n allowNoValue?: boolean\n allowExcludes?: boolean\n operatorChangeable?: boolean\n singleSelect?: boolean\n}\n\n/**\n * Converts a QueryFilter back to Filter[] objects that can be consumed by the SearchFilter component\n * This requires the filter options to properly reconstruct the Filter objects with all their metadata\n */\nexport const queryFilterToClientFilter = (\n queryFilter: QueryFilter | undefined,\n filterOptions: Option[],\n): Filter[] => {\n if (!queryFilter?.conditions || queryFilter.conditions.length === 0) {\n return []\n }\n\n const filters: Filter[] = []\n const processedConditions = new Set<string>()\n\n // Process each condition in the query filter\n queryFilter.conditions.forEach((condition) => {\n if ('key' in condition) {\n // This is a QueryCondition\n const filter = convertConditionToFilter(condition, filterOptions, processedConditions)\n if (filter) {\n filters.push(filter)\n }\n } else {\n // This is a nested QueryFilter - check if it's a datetime range (gte+lte same key)\n const datetimeFilter = tryMergeDatetimeRange(condition, filterOptions)\n if (datetimeFilter) {\n filters.push(datetimeFilter)\n } else {\n // Recursively process other nested QueryFilters\n const nestedFilters = queryFilterToClientFilter(condition, filterOptions)\n filters.push(...nestedFilters)\n }\n }\n })\n\n return mergeFiltersById(filters)\n}\n\n/**\n * Merges filters that share the same id by combining their values.\n * This handles the case where custom + non-custom values for the same field\n * are stored as separate conditions in the query filter (e.g. `in` + `like`)\n * but should be represented as a single filter with all values combined.\n */\nconst mergeFiltersById = (filters: Filter[]): Filter[] => {\n const filterMap = new Map<string, Filter>()\n\n for (const filter of filters) {\n const existing = filterMap.get(filter.id)\n if (existing) {\n // Merge values, avoiding duplicates by id\n const existingValueIds = new Set((existing.values || []).map((v) => v.id))\n const newValues = (filter.values || []).filter((v) => !existingValueIds.has(v.id))\n existing.values = [...(existing.values || []), ...newValues]\n } else {\n filterMap.set(filter.id, { ...filter, values: [...(filter.values || [])] })\n }\n }\n\n return Array.from(filterMap.values())\n}\n\n/**\n * Detects nested QueryFilters that represent datetime ranges (gte+lte on the same key)\n * and merges them into a single datetime Filter with proper range values.\n */\nexport const tryMergeDatetimeRange = (\n nestedFilter: QueryFilter,\n filterOptions: Option[],\n): Filter | null => {\n if (!nestedFilter.conditions || nestedFilter.conditions.length < 1) return null\n\n // All conditions must be QueryConditions (not nested QueryFilters)\n const conditions = nestedFilter.conditions.filter((c): c is QueryCondition => 'key' in c)\n if (conditions.length !== nestedFilter.conditions.length) return null\n\n // All conditions must share the same key\n const key = conditions[0].key\n if (!conditions.every((c) => c.key === key)) return null\n\n // Find the matching filter option and check it's a datetime type\n const filterOption = findFilterOption(key, filterOptions)\n if (!filterOption || filterOption.type !== 'datetime') return null\n\n // Extract gte (start) and lte (end) values, resolving relative dates\n const gteCondition = conditions.find((c) => c.operator === 'gte')\n const lteCondition = conditions.find((c) => c.operator === 'lte')\n if (!gteCondition && !lteCondition) return null\n\n const rawStartValue = gteCondition?.value as string | undefined\n const rawEndValue = lteCondition?.value as string | undefined\n const startISO =\n rawStartValue && isRelativeDateValue(rawStartValue)\n ? resolveRelativeValue(rawStartValue)\n : rawStartValue\n const endISO =\n rawEndValue && isRelativeDateValue(rawEndValue)\n ? resolveRelativeValue(rawEndValue)\n : rawEndValue\n\n // Build the range label\n let label = 'Custom range'\n if (startISO && endISO) {\n // Check if it matches a relative date pattern first\n const relativePattern = detectRelativeDatePattern(startISO, endISO)\n if (relativePattern) {\n label = relativePattern.label\n } else {\n // Fall back to showing the date range\n const startDate = parseISO(startISO)\n const endDate = parseISO(endISO)\n if (isValid(startDate) && isValid(endDate)) {\n const currentYear = new Date().getFullYear()\n const endDateFormat = endDate.getFullYear() === currentYear ? 'MMM d' : 'MMM d, yyyy'\n label = `${format(startDate, 'MMM d')} – ${format(endDate, endDateFormat)}`\n }\n }\n }\n\n // `values` holds the gte/lte range pair — used by clientFilterToQueryFilter for round-trip\n // but not part of the FilterValue type, so we extend it at runtime\n const rangeValue = {\n id: `custom-${startISO || ''}-${endISO || ''}`,\n label,\n values: [\n ...(startISO\n ? [\n {\n id: startISO,\n label: isValid(parseISO(startISO))\n ? format(parseISO(startISO), 'MMM d, yyyy')\n : startISO,\n },\n ]\n : []),\n ...(endISO\n ? [\n {\n id: endISO,\n label: isValid(parseISO(endISO)) ? format(parseISO(endISO), 'MMM d, yyyy') : endISO,\n },\n ]\n : []),\n ],\n } as FilterValue\n\n return {\n id: filterOption.id,\n type: filterOption.type as Filter['type'],\n label: filterOption.label,\n icon: filterOption.icon,\n inverted: nestedFilter.operator === 'or',\n values: [rangeValue],\n singleSelect: filterOption.singleSelect,\n }\n}\n\nconst convertConditionToFilter = (\n condition: QueryCondition,\n filterOptions: Option[],\n processedConditions: Set<string>,\n): Filter | null => {\n const { key, value, operator } = condition\n\n // check if the filter is a text search filter\n if (key === SEARCH_FILTER_ID) {\n const valuesArray = Array.isArray(value) ? value : [value || '']\n const filter: Filter = {\n id: SEARCH_FILTER_ID,\n type: 'string',\n label: '',\n values: valuesArray.map((v) => ({ id: String(v), label: String(v) })),\n }\n\n return filter\n }\n\n // Find the matching filter option\n const filterOption = findFilterOption(key, filterOptions)\n if (!filterOption) {\n return null\n }\n\n // Create a unique key for this condition to avoid duplicates\n const conditionKey = `${key}_${operator}_${JSON.stringify(value)}`\n if (processedConditions.has(conditionKey)) {\n return null\n }\n processedConditions.add(conditionKey)\n\n // Convert the condition values to FilterValue objects\n const filterValues = convertConditionValueToFilterValues(value, operator, filterOption)\n\n // hasValue/noValue chips encode the null-check in the value itself — marking them\n // inverted would flip the operator back on the next conversion (notnull <-> isnull)\n const isNullnessCheck =\n filterValues.length === 1 && ['hasValue', 'noValue'].includes(String(filterValues[0].id))\n\n // Determine if the filter is inverted based on the operator\n const inverted = isNullnessCheck ? false : isInvertedOperator(operator, filterOption.type)\n\n // Determine the filter operator (AND/OR)\n const filterOperator = getFilterOperator(operator, filterOption.type)\n\n const filter: Filter = {\n id: filterOption.id,\n type: filterOption.type as Filter['type'],\n label: filterOption.label,\n inverted,\n operator: filterOperator,\n icon: filterOption.icon,\n values: filterValues,\n isCustom: filterOption.allowsCustomValues,\n singleSelect: filterOption.singleSelect,\n }\n\n return filter\n}\n\nconst findFilterOption = (key: string, filterOptions: Option[]): Option | undefined => {\n // Try exact match first\n let option = filterOptions.find((opt) => opt.id === key)\n if (option) return option\n\n // Try to find by the base key (without prefixes)\n option = filterOptions.find(\n (opt) =>\n opt.id.endsWith(key) ||\n opt.id.replace(/^[^.]*\\./, '') === key ||\n opt.id.split('_').pop() === key,\n )\n if (option) return option\n\n // Try to find by label match\n option = filterOptions.find((opt) => opt.label?.toLowerCase() === key.toLowerCase())\n\n return option\n}\n\nconst convertConditionValueToFilterValues = (\n value: QueryCondition['value'],\n operator: QueryCondition['operator'],\n filterOption: Option,\n): FilterValue[] => {\n // Handle special operators for null/empty checks\n if (operator === 'isnull' || operator === 'notnull') {\n return operator === 'isnull'\n ? [{ id: 'noValue', label: 'No Value' }]\n : [{ id: 'hasValue', label: 'Has Value' }]\n }\n\n // Handle empty array cases - these represent \"No Value\" and \"Has Value\" conditions\n if (Array.isArray(value) && value.length === 0) {\n if (operator === 'eq') {\n // Empty array with 'eq' operator means \"No Value\"\n return [{ id: 'noValue', label: 'No Value' }]\n } else if (operator === 'ne') {\n // Empty array with 'ne' operator means \"Has Value\"\n return [{ id: 'hasValue', label: 'Has Value' }]\n }\n }\n\n if (value === undefined || value === null) {\n return []\n }\n\n // Convert value(s) to FilterValue objects\n const values = Array.isArray(value) ? value : [value]\n\n return values.map((val) => {\n let stringValue = String(val)\n let isCustomValue = false\n\n // Handle LIKE operator with wildcards - strip them and mark as custom\n if (operator === 'like' && typeof val === 'string') {\n // Remove leading and trailing % wildcards\n stringValue = val.replace(/^%/, '').replace(/%$/, '')\n isCustomValue = true\n }\n\n // Try to find existing option value with metadata (only if not already marked as custom from LIKE)\n if (!isCustomValue) {\n const existingValue = filterOption.values?.find((v: FilterValue) => v.id === stringValue)\n if (existingValue) {\n return existingValue\n }\n }\n\n // Format datetime values nicely instead of showing raw ISO strings\n if (filterOption.type === 'datetime' && typeof val === 'string') {\n try {\n const date = parseISO(val)\n if (isValid(date)) {\n return {\n id: stringValue,\n label: format(date, 'MMM d, yyyy'),\n isCustom: true,\n }\n }\n } catch {\n // fall through to default\n }\n }\n\n // Create a basic FilterValue if no existing option found or if it's a LIKE value\n return {\n id: stringValue,\n label: stringValue,\n isCustom: true,\n }\n })\n}\n\nconst isInvertedOperator = (operator: QueryCondition['operator'], type?: string): boolean => {\n const invertedOperators = ['ne', 'notin', 'excludes', 'excludesall', 'excludesany', 'notnull']\n return operator ? invertedOperators.includes(operator) : false\n}\n\nconst getFilterOperator = (operator: QueryCondition['operator'], type?: string): 'AND' | 'OR' => {\n // For list types, determine AND/OR based on the operator\n if (type?.startsWith('list_of_')) {\n if (operator === 'includesall' || operator === 'excludesall') {\n return 'AND'\n }\n return 'OR'\n }\n\n // Default to OR for most cases\n return 'OR'\n}\n\nexport default queryFilterToClientFilter\n"],"names":["queryFilterToClientFilter","queryFilter","filterOptions","filters","processedConditions","condition","filter","convertConditionToFilter","datetimeFilter","tryMergeDatetimeRange","nestedFilters","mergeFiltersById","filterMap","existing","existingValueIds","v","newValues","nestedFilter","conditions","c","key","filterOption","findFilterOption","gteCondition","lteCondition","rawStartValue","rawEndValue","startISO","isRelativeDateValue","resolveRelativeValue","endISO","label","relativePattern","detectRelativeDatePattern","startDate","parseISO","endDate","isValid","currentYear","endDateFormat","format","rangeValue","value","operator","SEARCH_FILTER_ID","valuesArray","conditionKey","filterValues","convertConditionValueToFilterValues","inverted","isInvertedOperator","filterOperator","getFilterOperator","option","opt","val","stringValue","isCustomValue","existingValue","date","type"],"mappings":"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"}
1
+ {"version":3,"file":"queryFilterToClientFilter.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.ts"],"sourcesContent":["import { Filter, FilterValue, SEARCH_FILTER_ID } from '@ynput/ayon-react-components'\nimport { QueryFilter, QueryCondition } from '../types/operations'\nimport { format, parseISO, isValid } from 'date-fns'\nimport { detectRelativeDatePattern } from '@shared/components/SearchFilter/filterDates'\nimport { isRelativeDateValue, resolveRelativeValue } from './expandRelativeDates'\n\n// Option interface for filter options (from useBuildFilterOptions)\ninterface Option {\n id: string\n type?: string\n label: string\n icon?: string | null\n img?: string | null\n inverted?: boolean\n operator?: 'AND' | 'OR'\n values?: FilterValue[]\n allowsCustomValues?: boolean\n allowHasValue?: boolean\n allowNoValue?: boolean\n allowExcludes?: boolean\n operatorChangeable?: boolean\n singleSelect?: boolean\n}\n\n/**\n * Converts a QueryFilter back to Filter[] objects that can be consumed by the SearchFilter component\n * This requires the filter options to properly reconstruct the Filter objects with all their metadata\n */\nexport const queryFilterToClientFilter = (\n queryFilter: QueryFilter | undefined,\n filterOptions: Option[],\n): Filter[] => {\n if (!queryFilter?.conditions || queryFilter.conditions.length === 0) {\n return []\n }\n\n const filters: Filter[] = []\n const processedConditions = new Set<string>()\n\n // Process each condition in the query filter\n queryFilter.conditions.forEach((condition) => {\n if ('key' in condition) {\n // This is a QueryCondition\n const filter = convertConditionToFilter(condition, filterOptions, processedConditions)\n if (filter) {\n filters.push(filter)\n }\n } else {\n // This is a nested QueryFilter - check if it's a datetime range (gte+lte same key)\n const datetimeFilter = tryMergeDatetimeRange(condition, filterOptions)\n const textNullnessFilter = datetimeFilter\n ? null\n : tryMergeTextNullness(condition, filterOptions)\n if (datetimeFilter) {\n filters.push(datetimeFilter)\n } else if (textNullnessFilter) {\n filters.push(textNullnessFilter)\n } else {\n // Recursively process other nested QueryFilters\n const nestedFilters = queryFilterToClientFilter(condition, filterOptions)\n filters.push(...nestedFilters)\n }\n }\n })\n\n return mergeFiltersById(filters)\n}\n\n/**\n * Merges filters that share the same id by combining their values.\n * This handles the case where custom + non-custom values for the same field\n * are stored as separate conditions in the query filter (e.g. `in` + `like`)\n * but should be represented as a single filter with all values combined.\n */\nconst mergeFiltersById = (filters: Filter[]): Filter[] => {\n const filterMap = new Map<string, Filter>()\n\n for (const filter of filters) {\n const existing = filterMap.get(filter.id)\n if (existing) {\n // Merge values, avoiding duplicates by id\n const existingValueIds = new Set((existing.values || []).map((v) => v.id))\n const newValues = (filter.values || []).filter((v) => !existingValueIds.has(v.id))\n existing.values = [...(existing.values || []), ...newValues]\n } else {\n filterMap.set(filter.id, { ...filter, values: [...(filter.values || [])] })\n }\n }\n\n return Array.from(filterMap.values())\n}\n\n/**\n * Detects nested QueryFilters that represent datetime ranges (gte+lte on the same key)\n * and merges them into a single datetime Filter with proper range values.\n */\nexport const tryMergeDatetimeRange = (\n nestedFilter: QueryFilter,\n filterOptions: Option[],\n): Filter | null => {\n if (!nestedFilter.conditions || nestedFilter.conditions.length < 1) return null\n\n // All conditions must be QueryConditions (not nested QueryFilters)\n const conditions = nestedFilter.conditions.filter((c): c is QueryCondition => 'key' in c)\n if (conditions.length !== nestedFilter.conditions.length) return null\n\n // All conditions must share the same key\n const key = conditions[0].key\n if (!conditions.every((c) => c.key === key)) return null\n\n // Find the matching filter option and check it's a datetime type\n const filterOption = findFilterOption(key, filterOptions)\n if (!filterOption || filterOption.type !== 'datetime') return null\n\n // Extract gte (start) and lte (end) values, resolving relative dates\n const gteCondition = conditions.find((c) => c.operator === 'gte')\n const lteCondition = conditions.find((c) => c.operator === 'lte')\n if (!gteCondition && !lteCondition) return null\n\n const rawStartValue = gteCondition?.value as string | undefined\n const rawEndValue = lteCondition?.value as string | undefined\n const startISO =\n rawStartValue && isRelativeDateValue(rawStartValue)\n ? resolveRelativeValue(rawStartValue)\n : rawStartValue\n const endISO =\n rawEndValue && isRelativeDateValue(rawEndValue)\n ? resolveRelativeValue(rawEndValue)\n : rawEndValue\n\n // Build the range label\n let label = 'Custom range'\n if (startISO && endISO) {\n // Check if it matches a relative date pattern first\n const relativePattern = detectRelativeDatePattern(startISO, endISO)\n if (relativePattern) {\n label = relativePattern.label\n } else {\n // Fall back to showing the date range\n const startDate = parseISO(startISO)\n const endDate = parseISO(endISO)\n if (isValid(startDate) && isValid(endDate)) {\n const currentYear = new Date().getFullYear()\n const endDateFormat = endDate.getFullYear() === currentYear ? 'MMM d' : 'MMM d, yyyy'\n label = `${format(startDate, 'MMM d')} – ${format(endDate, endDateFormat)}`\n }\n }\n }\n\n // `values` holds the gte/lte range pair — used by clientFilterToQueryFilter for round-trip\n // but not part of the FilterValue type, so we extend it at runtime\n const rangeValue = {\n id: `custom-${startISO || ''}-${endISO || ''}`,\n label,\n values: [\n ...(startISO\n ? [\n {\n id: startISO,\n label: isValid(parseISO(startISO))\n ? format(parseISO(startISO), 'MMM d, yyyy')\n : startISO,\n },\n ]\n : []),\n ...(endISO\n ? [\n {\n id: endISO,\n label: isValid(parseISO(endISO)) ? format(parseISO(endISO), 'MMM d, yyyy') : endISO,\n },\n ]\n : []),\n ],\n } as FilterValue\n\n return {\n id: filterOption.id,\n type: filterOption.type as Filter['type'],\n label: filterOption.label,\n icon: filterOption.icon,\n inverted: nestedFilter.operator === 'or',\n values: [rangeValue],\n singleSelect: filterOption.singleSelect,\n }\n}\n\n/**\n * Detects the composite nullness groups produced by clientFilterToQueryFilter for\n * text fields (isnull OR eq '' / notnull AND ne '') and restores the\n * noValue/hasValue chip instead of recursing into the group's conditions.\n */\nexport const tryMergeTextNullness = (\n nestedFilter: QueryFilter,\n filterOptions: Option[],\n): Filter | null => {\n const conditions = nestedFilter.conditions?.filter((c): c is QueryCondition => 'key' in c) ?? []\n if (conditions.length !== 2 || conditions.length !== nestedFilter.conditions?.length) return null\n\n const key = conditions[0].key\n if (!conditions.every((c) => c.key === key)) return null\n\n const isNoValue =\n nestedFilter.operator === 'or' &&\n conditions.some((c) => c.operator === 'isnull') &&\n conditions.some((c) => c.operator === 'eq' && c.value === '')\n const isHasValue =\n nestedFilter.operator === 'and' &&\n conditions.some((c) => c.operator === 'notnull') &&\n conditions.some((c) => c.operator === 'ne' && c.value === '')\n if (!isNoValue && !isHasValue) return null\n\n const filterOption = findFilterOption(key, filterOptions)\n if (!filterOption) return null\n\n return {\n id: filterOption.id,\n type: filterOption.type as Filter['type'],\n label: filterOption.label,\n inverted: false,\n operator: 'OR',\n icon: filterOption.icon,\n values: isNoValue\n ? [{ id: 'noValue', label: 'No Value' }]\n : [{ id: 'hasValue', label: 'Has Value' }],\n isCustom: filterOption.allowsCustomValues,\n singleSelect: filterOption.singleSelect,\n }\n}\n\nconst convertConditionToFilter = (\n condition: QueryCondition,\n filterOptions: Option[],\n processedConditions: Set<string>,\n): Filter | null => {\n const { key, value, operator } = condition\n\n // check if the filter is a text search filter\n if (key === SEARCH_FILTER_ID) {\n const valuesArray = Array.isArray(value) ? value : [value || '']\n const filter: Filter = {\n id: SEARCH_FILTER_ID,\n type: 'string',\n label: '',\n values: valuesArray.map((v) => ({ id: String(v), label: String(v) })),\n }\n\n return filter\n }\n\n // Find the matching filter option\n const filterOption = findFilterOption(key, filterOptions)\n if (!filterOption) {\n return null\n }\n\n // Create a unique key for this condition to avoid duplicates\n const conditionKey = `${key}_${operator}_${JSON.stringify(value)}`\n if (processedConditions.has(conditionKey)) {\n return null\n }\n processedConditions.add(conditionKey)\n\n // Convert the condition values to FilterValue objects\n const filterValues = convertConditionValueToFilterValues(value, operator, filterOption)\n\n // hasValue/noValue chips encode the null-check in the value itself — marking them\n // inverted would flip the operator back on the next conversion (notnull <-> isnull)\n const isNullnessCheck =\n filterValues.length === 1 && ['hasValue', 'noValue'].includes(String(filterValues[0].id))\n\n // Determine if the filter is inverted based on the operator\n const inverted = isNullnessCheck ? false : isInvertedOperator(operator, filterOption.type)\n\n // Determine the filter operator (AND/OR)\n const filterOperator = getFilterOperator(operator, filterOption.type)\n\n const filter: Filter = {\n id: filterOption.id,\n type: filterOption.type as Filter['type'],\n label: filterOption.label,\n inverted,\n operator: filterOperator,\n icon: filterOption.icon,\n values: filterValues,\n isCustom: filterOption.allowsCustomValues,\n singleSelect: filterOption.singleSelect,\n }\n\n return filter\n}\n\nconst findFilterOption = (key: string, filterOptions: Option[]): Option | undefined => {\n // Try exact match first\n let option = filterOptions.find((opt) => opt.id === key)\n if (option) return option\n\n // Try to find by the base key (without prefixes)\n option = filterOptions.find(\n (opt) =>\n opt.id.endsWith(key) ||\n opt.id.replace(/^[^.]*\\./, '') === key ||\n opt.id.split('_').pop() === key,\n )\n if (option) return option\n\n // Try to find by label match\n option = filterOptions.find((opt) => opt.label?.toLowerCase() === key.toLowerCase())\n\n return option\n}\n\nconst convertConditionValueToFilterValues = (\n value: QueryCondition['value'],\n operator: QueryCondition['operator'],\n filterOption: Option,\n): FilterValue[] => {\n // Handle special operators for null/empty checks\n if (operator === 'isnull' || operator === 'notnull') {\n return operator === 'isnull'\n ? [{ id: 'noValue', label: 'No Value' }]\n : [{ id: 'hasValue', label: 'Has Value' }]\n }\n\n // Handle empty array cases - these represent \"No Value\" and \"Has Value\" conditions\n if (Array.isArray(value) && value.length === 0) {\n if (operator === 'eq') {\n // Empty array with 'eq' operator means \"No Value\"\n return [{ id: 'noValue', label: 'No Value' }]\n } else if (operator === 'ne') {\n // Empty array with 'ne' operator means \"Has Value\"\n return [{ id: 'hasValue', label: 'Has Value' }]\n }\n }\n\n if (value === undefined || value === null) {\n return []\n }\n\n // Convert value(s) to FilterValue objects\n const values = Array.isArray(value) ? value : [value]\n\n return values.map((val) => {\n let stringValue = String(val)\n let isCustomValue = false\n\n // Handle LIKE operator with wildcards - strip them and mark as custom\n if (operator === 'like' && typeof val === 'string') {\n // Remove leading and trailing % wildcards\n stringValue = val.replace(/^%/, '').replace(/%$/, '')\n isCustomValue = true\n }\n\n // Try to find existing option value with metadata (only if not already marked as custom from LIKE)\n if (!isCustomValue) {\n const existingValue = filterOption.values?.find((v: FilterValue) => v.id === stringValue)\n if (existingValue) {\n return existingValue\n }\n }\n\n // Format datetime values nicely instead of showing raw ISO strings\n if (filterOption.type === 'datetime' && typeof val === 'string') {\n try {\n const date = parseISO(val)\n if (isValid(date)) {\n return {\n id: stringValue,\n label: format(date, 'MMM d, yyyy'),\n isCustom: true,\n }\n }\n } catch {\n // fall through to default\n }\n }\n\n // Create a basic FilterValue if no existing option found or if it's a LIKE value\n return {\n id: stringValue,\n label: stringValue,\n isCustom: true,\n }\n })\n}\n\nconst isInvertedOperator = (operator: QueryCondition['operator'], type?: string): boolean => {\n const invertedOperators = ['ne', 'notin', 'excludes', 'excludesall', 'excludesany', 'notnull']\n return operator ? invertedOperators.includes(operator) : false\n}\n\nconst getFilterOperator = (operator: QueryCondition['operator'], type?: string): 'AND' | 'OR' => {\n // For list types, determine AND/OR based on the operator\n if (type?.startsWith('list_of_')) {\n if (operator === 'includesall' || operator === 'excludesall') {\n return 'AND'\n }\n return 'OR'\n }\n\n // Default to OR for most cases\n return 'OR'\n}\n\nexport default queryFilterToClientFilter\n"],"names":["queryFilterToClientFilter","queryFilter","filterOptions","filters","processedConditions","condition","filter","convertConditionToFilter","datetimeFilter","tryMergeDatetimeRange","textNullnessFilter","tryMergeTextNullness","nestedFilters","mergeFiltersById","filterMap","existing","existingValueIds","v","newValues","nestedFilter","conditions","c","key","filterOption","findFilterOption","gteCondition","lteCondition","rawStartValue","rawEndValue","startISO","isRelativeDateValue","resolveRelativeValue","endISO","label","relativePattern","detectRelativeDatePattern","startDate","parseISO","endDate","isValid","currentYear","endDateFormat","format","rangeValue","isNoValue","isHasValue","value","operator","SEARCH_FILTER_ID","valuesArray","conditionKey","filterValues","convertConditionValueToFilterValues","inverted","isInvertedOperator","filterOperator","getFilterOperator","option","opt","val","stringValue","isCustomValue","existingValue","date","type"],"mappings":"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"}