@ynput/ayon-frontend-shared 0.4.1 → 0.4.2

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 (1096) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +37 -201
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +248 -512
  6. package/dist/ProjectTreeTable.es.js.map +1 -1
  7. package/dist/Slicer.cjs.js +1 -1
  8. package/dist/Slicer.es.js +31 -233
  9. package/dist/Slicer.es.js.map +1 -1
  10. package/dist/components.cjs.js +1 -1
  11. package/dist/components.es.js +83 -82
  12. package/dist/components.es.js.map +1 -1
  13. package/dist/index.cjs.js +1 -1
  14. package/dist/index.es.js +32 -130
  15. package/dist/index.es.js.map +1 -1
  16. package/dist/shared/src/api/generated/graphql.cjs.js +8 -7
  17. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  18. package/dist/shared/src/api/generated/graphql.es.js +18 -17
  19. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  20. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  21. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  22. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  23. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  24. package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
  25. package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
  26. package/dist/shared/src/api/queries/activities/getCategories.cjs.js.map +1 -1
  27. package/dist/shared/src/api/queries/activities/getCategories.es.js.map +1 -1
  28. package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js.map +1 -1
  29. package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js.map +1 -1
  30. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
  31. package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
  32. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js +1 -1
  33. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.cjs.js.map +1 -1
  34. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js +55 -151
  35. package/dist/shared/src/api/queries/activities/util/activityRealtimeHandler.es.js.map +1 -1
  36. package/dist/shared/src/api/queries/addons/updateAddons.cjs.js.map +1 -1
  37. package/dist/shared/src/api/queries/addons/updateAddons.es.js.map +1 -1
  38. package/dist/shared/src/api/queries/attributes/getAttributes.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/attributes/getAttributes.es.js.map +1 -1
  40. package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
  41. package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
  42. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  44. package/dist/shared/src/api/queries/entities/getEntity.cjs.js.map +1 -1
  45. package/dist/shared/src/api/queries/entities/getEntity.es.js.map +1 -1
  46. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
  47. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  48. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +58 -113
  49. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  50. package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
  52. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  53. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  54. package/dist/shared/src/api/queries/entityLists/getLists.es.js +67 -118
  55. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  56. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js +1 -1
  57. package/dist/shared/src/api/queries/entityLists/listFolders.cjs.js.map +1 -1
  58. package/dist/shared/src/api/queries/entityLists/listFolders.es.js +40 -95
  59. package/dist/shared/src/api/queries/entityLists/listFolders.es.js.map +1 -1
  60. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  61. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  62. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.cjs.js.map +1 -1
  63. package/dist/shared/src/api/queries/folders/getFolderDeleteInfo.es.js.map +1 -1
  64. package/dist/shared/src/api/queries/folders/getFolders.cjs.js +1 -1
  65. package/dist/shared/src/api/queries/folders/getFolders.cjs.js.map +1 -1
  66. package/dist/shared/src/api/queries/folders/getFolders.es.js +68 -119
  67. package/dist/shared/src/api/queries/folders/getFolders.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js +1 -1
  69. package/dist/shared/src/api/queries/links/getEntityLinks.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/links/getEntityLinks.es.js +73 -128
  71. package/dist/shared/src/api/queries/links/getEntityLinks.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/links/updateLinks.cjs.js.map +1 -1
  73. package/dist/shared/src/api/queries/links/updateLinks.es.js.map +1 -1
  74. package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
  75. package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
  76. package/dist/shared/src/api/queries/overview/getOverview.es.js +229 -282
  77. package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
  78. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  79. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  80. package/dist/shared/src/api/queries/products/getFolderProducts.cjs.js.map +1 -1
  81. package/dist/shared/src/api/queries/products/getFolderProducts.es.js.map +1 -1
  82. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js +1 -1
  83. package/dist/shared/src/api/queries/projectFolders/projectFolders.cjs.js.map +1 -1
  84. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js +80 -134
  85. package/dist/shared/src/api/queries/projectFolders/projectFolders.es.js.map +1 -1
  86. package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
  87. package/dist/shared/src/api/queries/review/getReview.cjs.js.map +1 -1
  88. package/dist/shared/src/api/queries/review/getReview.es.js +95 -152
  89. package/dist/shared/src/api/queries/review/getReview.es.js.map +1 -1
  90. package/dist/shared/src/api/queries/share/share.cjs.js.map +1 -1
  91. package/dist/shared/src/api/queries/share/share.es.js.map +1 -1
  92. package/dist/shared/src/api/queries/system/getSystem.cjs.js.map +1 -1
  93. package/dist/shared/src/api/queries/system/getSystem.es.js.map +1 -1
  94. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
  95. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
  96. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +88 -141
  97. package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
  98. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  99. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  100. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js +1 -1
  101. package/dist/shared/src/api/queries/versions/getVersionsProducts.cjs.js.map +1 -1
  102. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js +30 -80
  103. package/dist/shared/src/api/queries/versions/getVersionsProducts.es.js.map +1 -1
  104. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.cjs.js.map +1 -1
  105. package/dist/shared/src/api/queries/versions/getVersionsProductsUtils.es.js.map +1 -1
  106. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  107. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  108. package/dist/shared/src/api/queries/views/getViews.cjs.js.map +1 -1
  109. package/dist/shared/src/api/queries/views/getViews.es.js.map +1 -1
  110. package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
  111. package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
  112. package/dist/shared/src/api/queries/watchers/getWatchers.cjs.js.map +1 -1
  113. package/dist/shared/src/api/queries/watchers/getWatchers.es.js.map +1 -1
  114. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.cjs.js.map +1 -1
  115. package/dist/shared/src/components/AccessSearchInput/AccessSearchInput.es.js.map +1 -1
  116. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  117. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  118. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +28 -30
  119. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  120. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +1 -1
  121. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -1
  122. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +29 -125
  123. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -1
  124. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js +3 -3
  125. package/dist/shared/src/components/ColumnHeaderMenuUI.cjs.js.map +1 -1
  126. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js +16 -310
  127. package/dist/shared/src/components/ColumnHeaderMenuUI.es.js.map +1 -1
  128. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js +5 -5
  129. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.cjs.js.map +1 -1
  130. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js +49 -145
  131. package/dist/shared/src/components/DeleteEntitiesConfirm/DeleteConfirmContent.es.js.map +1 -1
  132. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +5 -5
  133. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  134. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +45 -141
  135. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  136. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  137. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  138. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +26 -182
  139. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  140. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  141. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  142. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +9 -195
  143. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  144. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +2 -2
  145. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  146. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +5 -200
  147. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  148. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js +4 -4
  149. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.cjs.js.map +1 -1
  150. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js +18 -114
  151. package/dist/shared/src/components/DetailsPanelDetails/DetailsSection.es.js.map +1 -1
  152. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js +2 -2
  153. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.cjs.js.map +1 -1
  154. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js +13 -109
  155. package/dist/shared/src/components/DetailsPanelDetails/FieldLabel.es.js.map +1 -1
  156. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  157. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  158. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +11 -316
  159. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  160. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js +1 -1
  161. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.cjs.js.map +1 -1
  162. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js +23 -119
  163. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityFormData.es.js.map +1 -1
  164. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js +1 -1
  165. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.cjs.js.map +1 -1
  166. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js +0 -111
  167. package/dist/shared/src/components/DetailsPanelDetails/hooks/useMentionSystem.es.js.map +1 -1
  168. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js +1 -1
  169. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.cjs.js.map +1 -1
  170. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js +1 -1
  171. package/dist/shared/src/components/DetailsPanelDetails/hooks/useQuillFormats.es.js.map +1 -1
  172. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +1 -1
  173. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -1
  174. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +12 -314
  175. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -1
  176. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  177. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  178. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +86 -273
  179. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  180. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  181. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  182. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +34 -335
  183. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  184. package/dist/shared/src/components/EntityPath/EntityPath.cjs.js.map +1 -1
  185. package/dist/shared/src/components/EntityPath/EntityPath.es.js.map +1 -1
  186. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -1
  187. package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
  188. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +15 -310
  189. package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
  190. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js.map +1 -1
  191. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js.map +1 -1
  192. package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js.map +1 -1
  193. package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js.map +1 -1
  194. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  195. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  196. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +89 -293
  197. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  198. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js +2 -2
  199. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.cjs.js.map +1 -1
  200. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js +10 -106
  201. package/dist/shared/src/components/FilterErrorActions/FilterErrorActions.es.js.map +1 -1
  202. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js +1 -1
  203. package/dist/shared/src/components/InfoMessage/InfoMessage.cjs.js.map +1 -1
  204. package/dist/shared/src/components/InfoMessage/InfoMessage.es.js +6 -5
  205. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  206. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  207. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  208. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  209. package/dist/shared/src/components/LinksManager/LinksManager.es.js +51 -346
  210. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  211. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  212. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  213. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +7 -212
  214. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  215. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  216. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  217. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +2 -205
  218. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  219. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +1 -1
  220. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -1
  221. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +4 -185
  222. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -1
  223. package/dist/shared/src/components/Menu/Menu.cjs.js +1 -1
  224. package/dist/shared/src/components/Menu/Menu.cjs.js.map +1 -1
  225. package/dist/shared/src/components/Menu/Menu.es.js +48 -343
  226. package/dist/shared/src/components/Menu/Menu.es.js.map +1 -1
  227. package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
  228. package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
  229. package/dist/shared/src/components/Menu/MenuItem.es.js +20 -316
  230. package/dist/shared/src/components/Menu/MenuItem.es.js.map +1 -1
  231. package/dist/shared/src/components/Menu/MenuList.cjs.js +1 -1
  232. package/dist/shared/src/components/Menu/MenuList.cjs.js.map +1 -1
  233. package/dist/shared/src/components/Menu/MenuList.es.js +74 -373
  234. package/dist/shared/src/components/Menu/MenuList.es.js.map +1 -1
  235. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +2 -2
  236. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  237. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +16 -315
  238. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  239. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  240. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  241. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +48 -346
  242. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  243. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
  244. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
  245. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +134 -304
  246. package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
  247. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  248. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  249. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +74 -367
  250. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  251. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  252. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  253. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -299
  254. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  255. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  256. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  257. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +34 -334
  258. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  259. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  260. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  261. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +30 -331
  262. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  263. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +5 -5
  264. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  265. package/dist/shared/src/components/RenameForm/RenameForm.es.js +77 -372
  266. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  267. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  268. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  269. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +114 -309
  270. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  271. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  272. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  273. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +66 -365
  274. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  275. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  276. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  277. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +14 -316
  278. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  279. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  280. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  281. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +70 -72
  282. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  283. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
  284. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
  285. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +24 -326
  286. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
  287. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.cjs.js.map +1 -1
  288. package/dist/shared/src/components/SearchFilter/filterScopeRegistry.es.js.map +1 -1
  289. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  290. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  291. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +335 -534
  292. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  293. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +7 -7
  294. package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
  295. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +29 -329
  296. package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
  297. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +4 -4
  298. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  299. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +53 -355
  300. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  301. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  302. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  303. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +95 -394
  304. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  305. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js +2 -2
  306. package/dist/shared/src/components/SyncButton/SyncButton.cjs.js.map +1 -1
  307. package/dist/shared/src/components/SyncButton/SyncButton.es.js +52 -165
  308. package/dist/shared/src/components/SyncButton/SyncButton.es.js.map +1 -1
  309. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +3 -3
  310. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  311. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +35 -334
  312. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  313. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  314. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  315. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +26 -122
  316. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  317. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js +3 -3
  318. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.cjs.js.map +1 -1
  319. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js +22 -118
  320. package/dist/shared/src/components/ThumbnailSimple/ThumbnailSimple.es.js.map +1 -1
  321. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +13 -13
  322. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  323. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +99 -300
  324. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  325. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  326. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  327. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +61 -262
  328. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  329. package/dist/shared/src/config/plannerFeatures.cjs.js.map +1 -1
  330. package/dist/shared/src/config/plannerFeatures.es.js.map +1 -1
  331. package/dist/shared/src/config/powerpackFeatures.cjs.js.map +1 -1
  332. package/dist/shared/src/config/powerpackFeatures.es.js.map +1 -1
  333. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  334. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -210
  336. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  337. package/dist/shared/src/containers/Actions/ActionIcon.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/Actions/ActionIcon.es.js.map +1 -1
  339. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  340. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/Actions/Actions.es.js +51 -250
  342. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  343. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  345. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  346. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +20 -323
  348. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  349. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
  351. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.cjs.js.map +1 -1
  352. package/dist/shared/src/containers/ContextMenu/useCreateContextMenu.es.js.map +1 -1
  353. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  354. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +143 -327
  356. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  357. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +3 -3
  358. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +27 -329
  360. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  361. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  362. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +39 -236
  364. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  365. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  366. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +65 -255
  368. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  369. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js +1 -1
  370. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js +16 -317
  372. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/LinkedTaskRow.es.js.map +1 -1
  373. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
  374. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
  375. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +61 -354
  376. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
  377. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js +5 -5
  378. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.cjs.js.map +1 -1
  379. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js +20 -116
  380. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/components/ShareDialog.es.js.map +1 -1
  381. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
  382. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
  383. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +2 -306
  384. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
  385. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js +1 -1
  386. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js.map +1 -1
  387. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js +51 -147
  388. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js.map +1 -1
  389. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  390. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  391. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +2 -202
  392. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  393. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js.map +1 -1
  395. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -1
  396. package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -1
  397. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.es.js.map +1 -1
  399. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +9 -9
  400. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  401. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -320
  402. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  403. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  404. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  405. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +13 -217
  406. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  407. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  408. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  409. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +22 -323
  410. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  411. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  412. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  413. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +27 -307
  414. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  415. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.cjs.js.map +1 -1
  416. package/dist/shared/src/containers/DetailsPanel/helpers/buildDetailsPanelTitles.es.js.map +1 -1
  417. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.cjs.js.map +1 -1
  418. package/dist/shared/src/containers/DetailsPanel/helpers/buildEntityTypeIcons.es.js.map +1 -1
  419. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.cjs.js.map +1 -1
  420. package/dist/shared/src/containers/DetailsPanel/helpers/getAllProjectsStatuses.es.js.map +1 -1
  421. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/DetailsPanel/helpers/getEntityPathData.es.js.map +1 -1
  423. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
  424. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js.map +1 -1
  425. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +10 -106
  426. package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js.map +1 -1
  427. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.cjs.js.map +1 -1
  428. package/dist/shared/src/containers/DetailsPanel/helpers/mergeProjectInfo.es.js.map +1 -1
  429. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  430. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  431. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +2 -209
  432. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  433. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  434. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  435. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +74 -373
  436. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  437. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  438. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  439. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +20 -324
  440. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  441. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +6 -6
  442. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  443. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +32 -338
  444. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  445. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +3 -3
  446. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  447. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +12 -318
  448. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  449. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js +1 -1
  450. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.cjs.js.map +1 -1
  451. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js +11 -107
  452. package/dist/shared/src/containers/EntityPickerDialog/hooks/useExpandedWithInitialFolders.es.js.map +1 -1
  453. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  454. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  455. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +23 -228
  456. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  457. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  458. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  459. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +27 -123
  460. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  461. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/EntityPickerDialog/util/getExpandedFoldersFromIds.es.js.map +1 -1
  463. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  464. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  465. package/dist/shared/src/containers/Feed/Feed.es.js +65 -245
  466. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  467. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js.map +1 -1
  468. package/dist/shared/src/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.es.js.map +1 -1
  469. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  470. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  471. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -309
  472. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  473. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  474. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  475. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +145 -421
  476. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  477. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  478. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  479. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +18 -317
  480. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  481. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
  482. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js.map +1 -1
  483. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +24 -120
  484. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js.map +1 -1
  485. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -1
  486. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
  487. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +42 -331
  488. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
  489. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.styled.es.js.map +1 -1
  491. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  492. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  493. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +227 -372
  494. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  495. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
  496. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
  497. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  498. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  499. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +38 -341
  500. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  501. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -1
  502. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
  503. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +22 -324
  504. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
  505. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js +1 -1
  506. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.cjs.js.map +1 -1
  507. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js +9 -105
  508. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useBlendedCategoryColor.es.js.map +1 -1
  509. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -1
  510. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
  511. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +21 -324
  512. package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
  513. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js +1 -1
  514. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js.map +1 -1
  515. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js +16 -26
  516. package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js.map +1 -1
  517. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js +2 -0
  518. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.cjs.js.map +1 -0
  519. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js +14 -0
  520. package/dist/shared/src/containers/Feed/components/CommentInput/quillFormats.es.js.map +1 -0
  521. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +1 -1
  522. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -1
  523. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +2 -15
  524. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -1
  525. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
  526. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
  527. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +62 -361
  528. package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
  529. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +1 -1
  530. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
  531. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +57 -356
  532. package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
  533. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  534. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  535. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +14 -310
  536. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  537. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  538. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  539. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +34 -238
  540. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  541. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js +1 -1
  542. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  543. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js +67 -163
  544. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  545. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  546. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +18 -8
  547. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  548. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  549. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  550. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +10 -106
  551. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  552. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.cjs.js.map +1 -1
  553. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionUsers.es.js.map +1 -1
  554. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
  555. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js.map +1 -1
  556. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +13 -109
  557. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js.map +1 -1
  558. package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
  559. package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
  560. package/dist/shared/src/containers/ListTable/ListTable.es.js +115 -284
  561. package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
  562. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  563. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  564. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +44 -177
  565. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  566. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
  567. package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
  568. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +46 -343
  569. package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
  570. package/dist/shared/src/containers/ListTable/ListTableWidgets.cjs.js.map +1 -1
  571. package/dist/shared/src/containers/ListTable/ListTableWidgets.es.js.map +1 -1
  572. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.cjs.js.map +1 -1
  573. package/dist/shared/src/containers/MoveEntityDialog/MoveEntityDialog.es.js.map +1 -1
  574. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js +3 -3
  575. package/dist/shared/src/containers/NewEntity/components/NewEntity.cjs.js.map +1 -1
  576. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js +170 -459
  577. package/dist/shared/src/containers/NewEntity/components/NewEntity.es.js.map +1 -1
  578. package/dist/shared/src/containers/NewEntity/components/TypeEditor.cjs.js.map +1 -1
  579. package/dist/shared/src/containers/NewEntity/components/TypeEditor.es.js.map +1 -1
  580. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js +1 -1
  581. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.cjs.js.map +1 -1
  582. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js +117 -314
  583. package/dist/shared/src/containers/NewEntity/context/NewEntityContext.es.js.map +1 -1
  584. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  585. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  586. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +590 -859
  587. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  588. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  589. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  590. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +245 -391
  591. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  592. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  593. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  594. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +75 -375
  595. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  596. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  597. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  598. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +32 -204
  599. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  600. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  601. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  602. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +27 -124
  603. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  604. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js +7 -7
  605. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.cjs.js.map +1 -1
  606. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js +35 -131
  607. package/dist/shared/src/containers/ProjectTreeTable/components/TableFooterRow.es.js.map +1 -1
  608. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  609. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  610. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +97 -292
  611. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  612. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
  613. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  614. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +243 -441
  615. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  616. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  617. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  618. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +156 -330
  619. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  620. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  621. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  622. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +4 -208
  623. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  624. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +1 -1
  625. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  626. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +120 -420
  627. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  628. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  629. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  630. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +71 -245
  631. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  632. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js.map +1 -1
  633. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js +3 -3
  634. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js.map +1 -1
  635. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.cjs.js.map +1 -1
  636. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardSubtasks.es.js.map +1 -1
  637. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
  638. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
  639. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  640. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  641. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +83 -179
  642. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  643. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  644. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  645. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +13 -317
  646. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  647. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  648. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  649. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +59 -233
  650. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  651. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  652. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  653. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +74 -248
  654. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  655. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  656. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  657. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +147 -439
  658. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  659. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  660. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  661. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +23 -197
  662. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  663. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  664. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  665. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +32 -206
  666. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  667. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
  668. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  669. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +32 -332
  670. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  671. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  672. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  673. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +135 -335
  674. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  675. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -1
  676. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -1
  677. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  678. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  679. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +29 -203
  680. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  681. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  682. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  683. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +36 -204
  684. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  685. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  686. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  687. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +78 -282
  688. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  689. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  690. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  691. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +31 -232
  692. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  693. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  694. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  695. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +24 -198
  696. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  697. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  698. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  699. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +29 -203
  700. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  701. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  702. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  703. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +167 -467
  704. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  705. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  706. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  707. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +41 -215
  708. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  709. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
  710. package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
  711. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js.map +1 -1
  712. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js.map +1 -1
  713. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.cjs.js.map +1 -1
  714. package/dist/shared/src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.es.js.map +1 -1
  715. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  716. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  717. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js.map +1 -1
  718. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js.map +1 -1
  719. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
  720. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -1
  721. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js.map +1 -1
  722. package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js.map +1 -1
  723. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
  724. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
  725. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.cjs.js.map +1 -1
  726. package/dist/shared/src/containers/ProjectTreeTable/utils/sanitizeQueryFilter.es.js.map +1 -1
  727. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -1
  728. package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -1
  729. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +2 -2
  730. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  731. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +14 -315
  732. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  733. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  734. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  735. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +113 -398
  736. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  737. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +5 -5
  738. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -1
  739. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +40 -332
  740. package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -1
  741. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  742. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  743. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js +1 -1
  744. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.cjs.js.map +1 -1
  745. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js +22 -194
  746. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityWidget.es.js.map +1 -1
  747. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  748. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  749. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  750. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  751. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +3 -3
  752. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  753. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +52 -348
  754. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  755. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js +5 -5
  756. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.cjs.js.map +1 -1
  757. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js +77 -364
  758. package/dist/shared/src/containers/ProjectTreeTable/widgets/MarkdownWidget.es.js.map +1 -1
  759. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  760. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  761. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +28 -202
  762. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  763. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  764. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  765. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +36 -333
  766. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  767. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js +5 -5
  768. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.cjs.js.map +1 -1
  769. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js +130 -424
  770. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextContentWidget.es.js.map +1 -1
  771. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +4 -4
  772. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  773. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +80 -176
  774. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  775. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +5 -5
  776. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  777. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -108
  778. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  779. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  780. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  781. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +20 -217
  782. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  783. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  784. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  785. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +231 -527
  786. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  787. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
  788. package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
  789. package/dist/shared/src/containers/Slicer/components/Slicer.es.js +69 -367
  790. package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
  791. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +2 -2
  792. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -1
  793. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +18 -318
  794. package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -1
  795. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +2 -2
  796. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  797. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +24 -328
  798. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  799. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  800. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  801. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +69 -370
  802. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  803. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js +1 -1
  804. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.cjs.js.map +1 -1
  805. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js +27 -228
  806. package/dist/shared/src/containers/Slicer/hooks/useEntityListsSlice.es.js.map +1 -1
  807. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js +1 -1
  808. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.cjs.js.map +1 -1
  809. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js +34 -236
  810. package/dist/shared/src/containers/Slicer/hooks/useHierarchyContextMenuItems.es.js.map +1 -1
  811. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +1 -1
  812. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -1
  813. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +5 -309
  814. package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -1
  815. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +1 -1
  816. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -1
  817. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +7 -311
  818. package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -1
  819. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +1 -1
  820. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -1
  821. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +11 -314
  822. package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -1
  823. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js +1 -1
  824. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.cjs.js.map +1 -1
  825. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js +13 -316
  826. package/dist/shared/src/containers/Slicer/hooks/useSlicerRemotes.es.js.map +1 -1
  827. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js +1 -1
  828. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.cjs.js.map +1 -1
  829. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js +34 -338
  830. package/dist/shared/src/containers/Slicer/hooks/useSlicerRowSelection.es.js.map +1 -1
  831. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js +1 -1
  832. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.cjs.js.map +1 -1
  833. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js +11 -316
  834. package/dist/shared/src/containers/Slicer/hooks/useSlicerSplitter.es.js.map +1 -1
  835. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  836. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  837. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +72 -368
  838. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  839. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  840. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  841. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -1
  842. package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -1
  843. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js +1 -1
  844. package/dist/shared/src/containers/Views/ViewItem/ViewItem.cjs.js.map +1 -1
  845. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js +24 -120
  846. package/dist/shared/src/containers/Views/ViewItem/ViewItem.es.js.map +1 -1
  847. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  848. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  849. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  850. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  851. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +35 -336
  852. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  853. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  854. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  855. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +55 -354
  856. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  857. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  858. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  859. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +40 -335
  860. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  861. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  862. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  863. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +59 -262
  864. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  865. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js +1 -1
  866. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.cjs.js.map +1 -1
  867. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js +17 -113
  868. package/dist/shared/src/containers/Views/hooks/pages/useListsViewSettings.es.js.map +1 -1
  869. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
  870. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
  871. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +45 -141
  872. package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
  873. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.cjs.js.map +1 -1
  874. package/dist/shared/src/containers/Views/hooks/pages/useTaskProgressViewSettings.es.js.map +1 -1
  875. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  876. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  877. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +22 -216
  878. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  879. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  880. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  881. package/dist/shared/src/containers/Views/types.cjs.js.map +1 -1
  882. package/dist/shared/src/containers/Views/types.es.js.map +1 -1
  883. package/dist/shared/src/containers/Views/utils/generateWorkingView.cjs.js.map +1 -1
  884. package/dist/shared/src/containers/Views/utils/generateWorkingView.es.js.map +1 -1
  885. package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
  886. package/dist/shared/src/context/AddonContext.es.js.map +1 -1
  887. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  888. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  889. package/dist/shared/src/context/AddonProjectContext.es.js +19 -115
  890. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  891. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js +1 -1
  892. package/dist/shared/src/context/DeleteEntitiesContext.cjs.js.map +1 -1
  893. package/dist/shared/src/context/DeleteEntitiesContext.es.js +1 -1
  894. package/dist/shared/src/context/DeleteEntitiesContext.es.js.map +1 -1
  895. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  896. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  897. package/dist/shared/src/context/DetailsPanelContext.es.js +66 -362
  898. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  899. package/dist/shared/src/context/EntityUpdatesContext.cjs.js +1 -1
  900. package/dist/shared/src/context/EntityUpdatesContext.cjs.js.map +1 -1
  901. package/dist/shared/src/context/EntityUpdatesContext.es.js +61 -358
  902. package/dist/shared/src/context/EntityUpdatesContext.es.js.map +1 -1
  903. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  904. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  905. package/dist/shared/src/context/PowerpackContext.es.js +42 -344
  906. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  907. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  908. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  909. package/dist/shared/src/context/ProjectFoldersContext.es.js +26 -231
  910. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  911. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  912. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  913. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  914. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  915. package/dist/shared/src/context/SubtasksModulesContext.es.js +23 -324
  916. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  917. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +1 -1
  918. package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
  919. package/dist/shared/src/context/ThumbnailUploaderContext.es.js +17 -21
  920. package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
  921. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  922. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  923. package/dist/shared/src/context/UriContext.es.js +2 -2
  924. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  925. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  926. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  927. package/dist/shared/src/context/WebsocketContext.es.js +28 -229
  928. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  929. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  930. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  931. package/dist/shared/src/hooks/useEntityUpdate.es.js +2 -208
  932. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  933. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  934. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  935. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +11 -314
  936. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  937. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  938. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  939. package/dist/shared/src/hooks/useHierarchyTable.es.js +30 -333
  940. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  941. package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
  942. package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
  943. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js +1 -1
  944. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.cjs.js.map +1 -1
  945. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js +19 -115
  946. package/dist/shared/src/hooks/useReviewablesKeyboardNavigation.es.js.map +1 -1
  947. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  948. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  949. package/dist/shared/src/hooks/useUserProjectConfig.es.js +6 -212
  950. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  951. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  952. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  953. package/dist/shared/src/util/checkName.cjs.js.map +1 -1
  954. package/dist/shared/src/util/checkName.es.js.map +1 -1
  955. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  956. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  957. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  958. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  959. package/dist/shared/src/util/getBundleMode.cjs.js +1 -1
  960. package/dist/shared/src/util/getBundleMode.cjs.js.map +1 -1
  961. package/dist/shared/src/util/getBundleMode.es.js +16 -112
  962. package/dist/shared/src/util/getBundleMode.es.js.map +1 -1
  963. package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
  964. package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
  965. package/dist/shared/src/util/getPriorityOptions.cjs.js.map +1 -1
  966. package/dist/shared/src/util/getPriorityOptions.es.js.map +1 -1
  967. package/dist/shared/src/util/iconUtils.cjs.js.map +1 -1
  968. package/dist/shared/src/util/iconUtils.es.js.map +1 -1
  969. package/dist/shared/src/util/mentionTypeOptions.cjs.js +2 -0
  970. package/dist/shared/src/util/mentionTypeOptions.cjs.js.map +1 -0
  971. package/dist/shared/src/util/mentionTypeOptions.es.js +16 -0
  972. package/dist/shared/src/util/mentionTypeOptions.es.js.map +1 -0
  973. package/dist/shared/src/util/parseFilename.cjs.js +2 -0
  974. package/dist/shared/src/util/parseFilename.cjs.js.map +1 -0
  975. package/dist/shared/src/util/parseFilename.es.js +8 -0
  976. package/dist/shared/src/util/parseFilename.es.js.map +1 -0
  977. package/dist/shared/src/util/uriUtils.cjs.js.map +1 -1
  978. package/dist/shared/src/util/uriUtils.es.js.map +1 -1
  979. package/dist/types/api/base/index.d.ts +1 -1
  980. package/dist/types/api/generated/graphql.d.ts +5 -2
  981. package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
  982. package/dist/types/api/queries/activities/getActivities.d.ts +4 -2
  983. package/dist/types/api/queries/activities/getCategories.d.ts +1 -1
  984. package/dist/types/api/queries/activities/util/activityRealtimeHandler.d.ts +1 -1
  985. package/dist/types/api/queries/entities/getEntity.d.ts +2 -1
  986. package/dist/types/api/queries/entities/getEntityPanel.d.ts +2 -1
  987. package/dist/types/api/queries/entities/updateEntity.d.ts +2 -1
  988. package/dist/types/api/queries/entityLists/getLists.d.ts +305 -305
  989. package/dist/types/api/queries/overview/getOverview.d.ts +35 -18
  990. package/dist/types/api/queries/project/getProject.d.ts +62 -61
  991. package/dist/types/api/queries/system/getSystem.d.ts +1 -1
  992. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +2 -1
  993. package/dist/types/api/queries/users/getUsers.d.ts +2 -1
  994. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +4 -2
  995. package/dist/types/api/queries/views/getViews.d.ts +1 -1
  996. package/dist/types/components/DetailsPanelDetails/DetailsSection.d.ts +1 -1
  997. package/dist/types/components/Menu/Menu.d.ts +1 -1
  998. package/dist/types/components/Menu/MenuList.d.ts +1 -1
  999. package/dist/types/components/Powerpack/PowerpackButton.d.ts +1 -1
  1000. package/dist/types/components/ProjectTableSettings/ColumnsSettings.d.ts +1 -1
  1001. package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +2 -2
  1002. package/dist/types/components/ProjectTableSettings/TableSettingsFallback.d.ts +1 -1
  1003. package/dist/types/components/RemotePage/ProjectPageRemote.d.ts +1 -1
  1004. package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +4 -2
  1005. package/dist/types/components/RenameForm/RenameForm.d.ts +1 -1
  1006. package/dist/types/components/ReviewablesList/SortableReviewableCard.d.ts +1 -1
  1007. package/dist/types/components/ReviewablesList/useReviewablesUpload.d.ts +2 -2
  1008. package/dist/types/components/ReviewablesSelector/Card.d.ts +1 -1
  1009. package/dist/types/components/SearchFilter/filterScopeRegistry.d.ts +1 -1
  1010. package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -1
  1011. package/dist/types/components/SettingsPanel/SettingsPanel.d.ts +1 -1
  1012. package/dist/types/components/SyncButton/SyncButton.d.ts +1 -1
  1013. package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +1 -2
  1014. package/dist/types/config/plannerFeatures.d.ts +1 -1
  1015. package/dist/types/config/powerpackFeatures.d.ts +1 -1
  1016. package/dist/types/containers/Actions/Actions.d.ts +2 -2
  1017. package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +1 -1
  1018. package/dist/types/containers/ContextMenu/useCreateContextMenu.d.ts +1 -1
  1019. package/dist/types/containers/DetailsPanel/DetailsPanel.d.ts +1 -1
  1020. package/dist/types/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.d.ts +2 -2
  1021. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.d.ts +1 -1
  1022. package/dist/types/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.d.ts +2 -2
  1023. package/dist/types/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.d.ts +1 -1
  1024. package/dist/types/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.d.ts +3 -3
  1025. package/dist/types/containers/DetailsPanel/containers/DetailsPanelSubtasks.d.ts +1 -1
  1026. package/dist/types/containers/DetailsPanel/helpers/buildEntityTypeIcons.d.ts +1 -1
  1027. package/dist/types/containers/DetailsPanel/helpers/getEntityPathData.d.ts +1 -1
  1028. package/dist/types/containers/DetailsPanel/helpers/mergeProjectInfo.d.ts +1 -1
  1029. package/dist/types/containers/DetailsPanel/hooks/useGetEntityPath.d.ts +1 -1
  1030. package/dist/types/containers/EntityPickerDialog/components/EntityTypeTable.d.ts +1 -1
  1031. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
  1032. package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +1 -1
  1033. package/dist/types/containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.d.ts +1 -1
  1034. package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.styled.d.ts +2 -2
  1035. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +1 -1
  1036. package/dist/types/containers/Feed/components/ActivityVersions/ActivityVersions.styled.d.ts +1 -1
  1037. package/dist/types/containers/Feed/components/CommentInput/modules/index.d.ts +1 -1
  1038. package/dist/types/containers/Feed/components/CommentInput/quillFormats.d.ts +1 -0
  1039. package/dist/types/containers/Feed/components/CommentInput/types.d.ts +1 -12
  1040. package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +1 -1
  1041. package/dist/types/containers/Feed/context/FeedContext.d.ts +1 -1
  1042. package/dist/types/containers/Feed/hooks/useLastVersionReview.d.ts +1 -1
  1043. package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +1 -1
  1044. package/dist/types/containers/Feed/mentionHelpers/getMentionUsers.d.ts +1 -1
  1045. package/dist/types/containers/Feed/mentionHelpers/getMentionVersions.d.ts +2 -2
  1046. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +1 -1
  1047. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -1
  1048. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -3
  1049. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +1 -1
  1050. package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +4 -5
  1051. package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +1 -1
  1052. package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +2 -2
  1053. package/dist/types/containers/ProjectTreeTable/hooks/useMoveEntities.d.ts +1 -1
  1054. package/dist/types/containers/ProjectTreeTable/hooks/usePasteLinks.d.ts +1 -1
  1055. package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +1 -1
  1056. package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +6 -5
  1057. package/dist/types/containers/ProjectTreeTable/utils/getEntityViewerIds.d.ts +1 -1
  1058. package/dist/types/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.d.ts +1 -1
  1059. package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +1 -1
  1060. package/dist/types/containers/ProjectTreeTable/utils/sanitizeQueryFilter.d.ts +1 -1
  1061. package/dist/types/containers/ProjectTreeTable/widgets/LinksWidget.d.ts +1 -1
  1062. package/dist/types/containers/ProjectTreeTable/widgets/NameWidget.d.ts +1 -1
  1063. package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +2 -1
  1064. package/dist/types/containers/Slicer/components/Slicer.d.ts +2 -2
  1065. package/dist/types/containers/Slicer/components/SlicerDropdownFallback.d.ts +1 -1
  1066. package/dist/types/containers/Slicer/context/SlicerContext.d.ts +3 -4
  1067. package/dist/types/containers/Slicer/hooks/useEntityListsSlice.d.ts +1 -1
  1068. package/dist/types/containers/Slicer/hooks/useHierarchyContextMenuItems.d.ts +3 -3
  1069. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +1 -1
  1070. package/dist/types/containers/Slicer/hooks/useSlicerCounts.d.ts +1 -1
  1071. package/dist/types/containers/Slicer/hooks/useUsersTable.d.ts +1 -1
  1072. package/dist/types/containers/Slicer/types.d.ts +1 -1
  1073. package/dist/types/containers/Views/hooks/pages/useListsViewSettings.d.ts +1 -1
  1074. package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +1 -1
  1075. package/dist/types/containers/Views/types.d.ts +1 -1
  1076. package/dist/types/context/AddonContext.d.ts +1 -1
  1077. package/dist/types/context/AddonProjectContext.d.ts +2 -2
  1078. package/dist/types/context/DetailsPanelContext.d.ts +2 -2
  1079. package/dist/types/context/SubtasksModulesContext.d.ts +1 -1
  1080. package/dist/types/hooks/useHierarchyTable.d.ts +1 -1
  1081. package/dist/types/util/buildHierarchicalTableRows.d.ts +1 -1
  1082. package/dist/types/util/columnConfigConverter.d.ts +1 -1
  1083. package/dist/types/util/getBundleMode.d.ts +1 -1
  1084. package/dist/types/util/getGroupByDataType.d.ts +1 -1
  1085. package/dist/types/util/index.d.ts +2 -0
  1086. package/dist/types/util/mentionTypeOptions.d.ts +12 -0
  1087. package/dist/types/util/parseFilename.d.ts +1 -0
  1088. package/dist/types/util/uriUtils.d.ts +1 -1
  1089. package/dist/util.cjs.js +1 -1
  1090. package/dist/util.es.js +24 -20
  1091. package/dist/util.es.js.map +1 -1
  1092. package/package.json +1 -1
  1093. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js +0 -2
  1094. package/dist/shared/src/components/ThumbnailSimple/index.cjs.js.map +0 -1
  1095. package/dist/shared/src/components/ThumbnailSimple/index.es.js +0 -6
  1096. package/dist/shared/src/components/ThumbnailSimple/index.es.js.map +0 -1
@@ -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 type { 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 +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// 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
+ {"version":3,"file":"clientFilterToQueryFilter.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.ts"],"sourcesContent":["import { getFilterFromId } from '@ynput/ayon-react-components'\nimport type { 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 +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// 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
+ {"version":3,"file":"clientFilterToQueryFilter.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.ts"],"sourcesContent":["import { getFilterFromId } from '@ynput/ayon-react-components'\nimport type { 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 +1 @@
1
- {"version":3,"file":"getEntityViewerIds.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getEntityViewerIds.ts"],"sourcesContent":["import { EntityMap } from '.'\n\n// gets parents id of an entity when using the viewer\nexport const getEntityViewierIds = (entity: EntityMap): { [id: string]: string } => {\n const targetIds = {\n [entity.entityType + 'Id']: entity.entityId,\n }\n // if version, also include productId and folderId\n if (entity.entityType === 'version') {\n if ('product' in entity && entity.product?.id) {\n targetIds.productId = entity.product?.id\n if ('folder' in entity.product && entity.product?.folder?.id) {\n targetIds.folderId = entity.product?.folder.id\n }\n }\n }\n return targetIds\n}\n"],"names":["getEntityViewierIds","entity","targetIds"],"mappings":"gFAGO,MAAMA,EAAuBC,GAAgD,CAClF,MAAMC,EAAY,CAChB,CAACD,EAAO,WAAa,IAAI,EAAGA,EAAO,QAAA,EAGrC,OAAIA,EAAO,aAAe,WACpB,YAAaA,GAAUA,EAAO,SAAS,KACzCC,EAAU,UAAYD,EAAO,SAAS,GAClC,WAAYA,EAAO,SAAWA,EAAO,SAAS,QAAQ,KACxDC,EAAU,SAAWD,EAAO,SAAS,OAAO,KAI3CC,CACT"}
1
+ {"version":3,"file":"getEntityViewerIds.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getEntityViewerIds.ts"],"sourcesContent":["import type { EntityMap } from '../types/table'\n\n// gets parents id of an entity when using the viewer\nexport const getEntityViewierIds = (entity: EntityMap): { [id: string]: string } => {\n const targetIds = {\n [entity.entityType + 'Id']: entity.entityId,\n }\n // if version, also include productId and folderId\n if (entity.entityType === 'version') {\n if ('product' in entity && entity.product?.id) {\n targetIds.productId = entity.product?.id\n if ('folder' in entity.product && entity.product?.folder?.id) {\n targetIds.folderId = entity.product?.folder.id\n }\n }\n }\n return targetIds\n}\n"],"names":["getEntityViewierIds","entity","targetIds"],"mappings":"gFAGO,MAAMA,EAAuBC,GAAgD,CAClF,MAAMC,EAAY,CAChB,CAACD,EAAO,WAAa,IAAI,EAAGA,EAAO,QAAA,EAGrC,OAAIA,EAAO,aAAe,WACpB,YAAaA,GAAUA,EAAO,SAAS,KACzCC,EAAU,UAAYD,EAAO,SAAS,GAClC,WAAYA,EAAO,SAAWA,EAAO,SAAS,QAAQ,KACxDC,EAAU,SAAWD,EAAO,SAAS,OAAO,KAI3CC,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"getEntityViewerIds.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getEntityViewerIds.ts"],"sourcesContent":["import { EntityMap } from '.'\n\n// gets parents id of an entity when using the viewer\nexport const getEntityViewierIds = (entity: EntityMap): { [id: string]: string } => {\n const targetIds = {\n [entity.entityType + 'Id']: entity.entityId,\n }\n // if version, also include productId and folderId\n if (entity.entityType === 'version') {\n if ('product' in entity && entity.product?.id) {\n targetIds.productId = entity.product?.id\n if ('folder' in entity.product && entity.product?.folder?.id) {\n targetIds.folderId = entity.product?.folder.id\n }\n }\n }\n return targetIds\n}\n"],"names":["getEntityViewierIds","entity","targetIds"],"mappings":"AAGO,MAAMA,IAAsB,CAACC,MAAgD;AAClF,QAAMC,IAAY;AAAA,IAChB,CAACD,EAAO,aAAa,IAAI,GAAGA,EAAO;AAAA,EAAA;AAGrC,SAAIA,EAAO,eAAe,aACpB,aAAaA,KAAUA,EAAO,SAAS,OACzCC,EAAU,YAAYD,EAAO,SAAS,IAClC,YAAYA,EAAO,WAAWA,EAAO,SAAS,QAAQ,OACxDC,EAAU,WAAWD,EAAO,SAAS,OAAO,MAI3CC;AACT;"}
1
+ {"version":3,"file":"getEntityViewerIds.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getEntityViewerIds.ts"],"sourcesContent":["import type { EntityMap } from '../types/table'\n\n// gets parents id of an entity when using the viewer\nexport const getEntityViewierIds = (entity: EntityMap): { [id: string]: string } => {\n const targetIds = {\n [entity.entityType + 'Id']: entity.entityId,\n }\n // if version, also include productId and folderId\n if (entity.entityType === 'version') {\n if ('product' in entity && entity.product?.id) {\n targetIds.productId = entity.product?.id\n if ('folder' in entity.product && entity.product?.folder?.id) {\n targetIds.folderId = entity.product?.folder.id\n }\n }\n }\n return targetIds\n}\n"],"names":["getEntityViewierIds","entity","targetIds"],"mappings":"AAGO,MAAMA,IAAsB,CAACC,MAAgD;AAClF,QAAMC,IAAY;AAAA,IAChB,CAACD,EAAO,aAAa,IAAI,GAAGA,EAAO;AAAA,EAAA;AAGrC,SAAIA,EAAO,eAAe,aACpB,aAAaA,KAAUA,EAAO,SAAS,OACzCC,EAAU,YAAYD,EAAO,SAAS,IAClC,YAAYA,EAAO,WAAWA,EAAO,SAAS,QAAQ,OACxDC,EAAU,WAAWD,EAAO,SAAS,OAAO,MAI3CC;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getFolderIdsToQueryFromExpanded.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.ts"],"sourcesContent":["import { ProjectFoldersContextValue } from '@shared/context'\nimport { ExpandedState } from '@tanstack/react-table'\n\nexport const getFolderIdsToQueryFromExpanded = (props: {\n expanded: ExpandedState\n expandedParentIds: string[]\n selectedFolders: string[]\n excludeSelectedFolders: boolean\n getFolderById: ProjectFoldersContextValue['getFolderById']\n showHierarchy: boolean\n}) => {\n const {\n expanded,\n expandedParentIds,\n selectedFolders,\n excludeSelectedFolders,\n getFolderById,\n showHierarchy,\n } = props\n const expandedMap = expanded as Record<string, boolean>\n const memoVisibility = new Map<string, boolean>()\n\n const isFolderVisible = (id: string): boolean => {\n // If visibility for this specific branch path was already calculated, return it instantly\n if (memoVisibility.has(id)) return memoVisibility.get(id)!\n\n const folder = getFolderById(id)\n if (!folder) {\n memoVisibility.set(id, false)\n return false\n }\n\n const parentId = folder.parentId as string\n\n // Check if this folder acts as a boundary root from the slicer selection\n const isRootFromSlicer = excludeSelectedFolders\n ? selectedFolders.includes(parentId)\n : selectedFolders.includes(id)\n\n if (isRootFromSlicer) {\n memoVisibility.set(id, true)\n return true\n }\n\n // Top-level root folders (no parent) are always visible IF there is no slicer selection\n if (!parentId) {\n const isVisible = selectedFolders.length === 0\n memoVisibility.set(id, isVisible)\n return isVisible\n }\n\n // If the parent folder is not expanded, this folder is NOT visible (only for tree table hierarchy)\n if (showHierarchy) {\n // Chain step: Visible ONLY if the immediate parent is expanded AND that parent path is visible\n const visible = expandedMap[parentId] === true && isFolderVisible(parentId)\n\n // Cache the result to protect sibling lookups from re-walking this shared ancestral path\n memoVisibility.set(id, visible)\n return visible\n } else {\n return true\n }\n }\n\n // We ONLY loop over the expanded folder IDs, never the full project folder array!\n return expandedParentIds.filter((id) => isFolderVisible(id))\n}\n"],"names":["getFolderIdsToQueryFromExpanded","props","expanded","expandedParentIds","selectedFolders","excludeSelectedFolders","getFolderById","showHierarchy","expandedMap","memoVisibility","isFolderVisible","id","folder","parentId","isVisible","visible"],"mappings":"gFAGO,MAAMA,EAAmCC,GAO1C,CACJ,KAAM,CACJ,SAAAC,EACA,kBAAAC,EACA,gBAAAC,EACA,uBAAAC,EACA,cAAAC,EACA,cAAAC,CAAA,EACEN,EACEO,EAAcN,EACdO,MAAqB,IAErBC,EAAmBC,GAAwB,CAE/C,GAAIF,EAAe,IAAIE,CAAE,EAAG,OAAOF,EAAe,IAAIE,CAAE,EAExD,MAAMC,EAASN,EAAcK,CAAE,EAC/B,GAAI,CAACC,EACH,OAAAH,EAAe,IAAIE,EAAI,EAAK,EACrB,GAGT,MAAME,EAAWD,EAAO,SAOxB,GAJyBP,EACrBD,EAAgB,SAASS,CAAQ,EACjCT,EAAgB,SAASO,CAAE,EAG7B,OAAAF,EAAe,IAAIE,EAAI,EAAI,EACpB,GAIT,GAAI,CAACE,EAAU,CACb,MAAMC,EAAYV,EAAgB,SAAW,EAC7C,OAAAK,EAAe,IAAIE,EAAIG,CAAS,EACzBA,CACT,CAGA,GAAIP,EAAe,CAEjB,MAAMQ,EAAUP,EAAYK,CAAQ,IAAM,IAAQH,EAAgBG,CAAQ,EAG1E,OAAAJ,EAAe,IAAIE,EAAII,CAAO,EACvBA,CACT,KACE,OAAO,EAEX,EAGA,OAAOZ,EAAkB,OAAQQ,GAAOD,EAAgBC,CAAE,CAAC,CAC7D"}
1
+ {"version":3,"file":"getFolderIdsToQueryFromExpanded.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.ts"],"sourcesContent":["import type { ProjectFoldersContextValue } from '@shared/context/ProjectFoldersContext'\nimport { ExpandedState } from '@tanstack/react-table'\n\nexport const getFolderIdsToQueryFromExpanded = (props: {\n expanded: ExpandedState\n expandedParentIds: string[]\n selectedFolders: string[]\n excludeSelectedFolders: boolean\n getFolderById: ProjectFoldersContextValue['getFolderById']\n showHierarchy: boolean\n}) => {\n const {\n expanded,\n expandedParentIds,\n selectedFolders,\n excludeSelectedFolders,\n getFolderById,\n showHierarchy,\n } = props\n const expandedMap = expanded as Record<string, boolean>\n const memoVisibility = new Map<string, boolean>()\n\n const isFolderVisible = (id: string): boolean => {\n // If visibility for this specific branch path was already calculated, return it instantly\n if (memoVisibility.has(id)) return memoVisibility.get(id)!\n\n const folder = getFolderById(id)\n if (!folder) {\n memoVisibility.set(id, false)\n return false\n }\n\n const parentId = folder.parentId as string\n\n // Check if this folder acts as a boundary root from the slicer selection\n const isRootFromSlicer = excludeSelectedFolders\n ? selectedFolders.includes(parentId)\n : selectedFolders.includes(id)\n\n if (isRootFromSlicer) {\n memoVisibility.set(id, true)\n return true\n }\n\n // Top-level root folders (no parent) are always visible IF there is no slicer selection\n if (!parentId) {\n const isVisible = selectedFolders.length === 0\n memoVisibility.set(id, isVisible)\n return isVisible\n }\n\n // If the parent folder is not expanded, this folder is NOT visible (only for tree table hierarchy)\n if (showHierarchy) {\n // Chain step: Visible ONLY if the immediate parent is expanded AND that parent path is visible\n const visible = expandedMap[parentId] === true && isFolderVisible(parentId)\n\n // Cache the result to protect sibling lookups from re-walking this shared ancestral path\n memoVisibility.set(id, visible)\n return visible\n } else {\n return true\n }\n }\n\n // We ONLY loop over the expanded folder IDs, never the full project folder array!\n return expandedParentIds.filter((id) => isFolderVisible(id))\n}\n"],"names":["getFolderIdsToQueryFromExpanded","props","expanded","expandedParentIds","selectedFolders","excludeSelectedFolders","getFolderById","showHierarchy","expandedMap","memoVisibility","isFolderVisible","id","folder","parentId","isVisible","visible"],"mappings":"gFAGO,MAAMA,EAAmCC,GAO1C,CACJ,KAAM,CACJ,SAAAC,EACA,kBAAAC,EACA,gBAAAC,EACA,uBAAAC,EACA,cAAAC,EACA,cAAAC,CAAA,EACEN,EACEO,EAAcN,EACdO,MAAqB,IAErBC,EAAmBC,GAAwB,CAE/C,GAAIF,EAAe,IAAIE,CAAE,EAAG,OAAOF,EAAe,IAAIE,CAAE,EAExD,MAAMC,EAASN,EAAcK,CAAE,EAC/B,GAAI,CAACC,EACH,OAAAH,EAAe,IAAIE,EAAI,EAAK,EACrB,GAGT,MAAME,EAAWD,EAAO,SAOxB,GAJyBP,EACrBD,EAAgB,SAASS,CAAQ,EACjCT,EAAgB,SAASO,CAAE,EAG7B,OAAAF,EAAe,IAAIE,EAAI,EAAI,EACpB,GAIT,GAAI,CAACE,EAAU,CACb,MAAMC,EAAYV,EAAgB,SAAW,EAC7C,OAAAK,EAAe,IAAIE,EAAIG,CAAS,EACzBA,CACT,CAGA,GAAIP,EAAe,CAEjB,MAAMQ,EAAUP,EAAYK,CAAQ,IAAM,IAAQH,EAAgBG,CAAQ,EAG1E,OAAAJ,EAAe,IAAIE,EAAII,CAAO,EACvBA,CACT,KACE,OAAO,EAEX,EAGA,OAAOZ,EAAkB,OAAQQ,GAAOD,EAAgBC,CAAE,CAAC,CAC7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"getFolderIdsToQueryFromExpanded.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.ts"],"sourcesContent":["import { ProjectFoldersContextValue } from '@shared/context'\nimport { ExpandedState } from '@tanstack/react-table'\n\nexport const getFolderIdsToQueryFromExpanded = (props: {\n expanded: ExpandedState\n expandedParentIds: string[]\n selectedFolders: string[]\n excludeSelectedFolders: boolean\n getFolderById: ProjectFoldersContextValue['getFolderById']\n showHierarchy: boolean\n}) => {\n const {\n expanded,\n expandedParentIds,\n selectedFolders,\n excludeSelectedFolders,\n getFolderById,\n showHierarchy,\n } = props\n const expandedMap = expanded as Record<string, boolean>\n const memoVisibility = new Map<string, boolean>()\n\n const isFolderVisible = (id: string): boolean => {\n // If visibility for this specific branch path was already calculated, return it instantly\n if (memoVisibility.has(id)) return memoVisibility.get(id)!\n\n const folder = getFolderById(id)\n if (!folder) {\n memoVisibility.set(id, false)\n return false\n }\n\n const parentId = folder.parentId as string\n\n // Check if this folder acts as a boundary root from the slicer selection\n const isRootFromSlicer = excludeSelectedFolders\n ? selectedFolders.includes(parentId)\n : selectedFolders.includes(id)\n\n if (isRootFromSlicer) {\n memoVisibility.set(id, true)\n return true\n }\n\n // Top-level root folders (no parent) are always visible IF there is no slicer selection\n if (!parentId) {\n const isVisible = selectedFolders.length === 0\n memoVisibility.set(id, isVisible)\n return isVisible\n }\n\n // If the parent folder is not expanded, this folder is NOT visible (only for tree table hierarchy)\n if (showHierarchy) {\n // Chain step: Visible ONLY if the immediate parent is expanded AND that parent path is visible\n const visible = expandedMap[parentId] === true && isFolderVisible(parentId)\n\n // Cache the result to protect sibling lookups from re-walking this shared ancestral path\n memoVisibility.set(id, visible)\n return visible\n } else {\n return true\n }\n }\n\n // We ONLY loop over the expanded folder IDs, never the full project folder array!\n return expandedParentIds.filter((id) => isFolderVisible(id))\n}\n"],"names":["getFolderIdsToQueryFromExpanded","props","expanded","expandedParentIds","selectedFolders","excludeSelectedFolders","getFolderById","showHierarchy","expandedMap","memoVisibility","isFolderVisible","id","folder","parentId","isVisible","visible"],"mappings":"AAGO,MAAMA,IAAkC,CAACC,MAO1C;AACJ,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,EAAA,IACEN,GACEO,IAAcN,GACdO,wBAAqB,IAAA,GAErBC,IAAkB,CAACC,MAAwB;AAE/C,QAAIF,EAAe,IAAIE,CAAE,EAAG,QAAOF,EAAe,IAAIE,CAAE;AAExD,UAAMC,IAASN,EAAcK,CAAE;AAC/B,QAAI,CAACC;AACH,aAAAH,EAAe,IAAIE,GAAI,EAAK,GACrB;AAGT,UAAME,IAAWD,EAAO;AAOxB,QAJyBP,IACrBD,EAAgB,SAASS,CAAQ,IACjCT,EAAgB,SAASO,CAAE;AAG7B,aAAAF,EAAe,IAAIE,GAAI,EAAI,GACpB;AAIT,QAAI,CAACE,GAAU;AACb,YAAMC,IAAYV,EAAgB,WAAW;AAC7C,aAAAK,EAAe,IAAIE,GAAIG,CAAS,GACzBA;AAAA,IACT;AAGA,QAAIP,GAAe;AAEjB,YAAMQ,IAAUP,EAAYK,CAAQ,MAAM,MAAQH,EAAgBG,CAAQ;AAG1E,aAAAJ,EAAe,IAAIE,GAAII,CAAO,GACvBA;AAAA,IACT;AACE,aAAO;AAAA,EAEX;AAGA,SAAOZ,EAAkB,OAAO,CAACQ,MAAOD,EAAgBC,CAAE,CAAC;AAC7D;"}
1
+ {"version":3,"file":"getFolderIdsToQueryFromExpanded.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getFolderIdsToQueryFromExpanded.ts"],"sourcesContent":["import type { ProjectFoldersContextValue } from '@shared/context/ProjectFoldersContext'\nimport { ExpandedState } from '@tanstack/react-table'\n\nexport const getFolderIdsToQueryFromExpanded = (props: {\n expanded: ExpandedState\n expandedParentIds: string[]\n selectedFolders: string[]\n excludeSelectedFolders: boolean\n getFolderById: ProjectFoldersContextValue['getFolderById']\n showHierarchy: boolean\n}) => {\n const {\n expanded,\n expandedParentIds,\n selectedFolders,\n excludeSelectedFolders,\n getFolderById,\n showHierarchy,\n } = props\n const expandedMap = expanded as Record<string, boolean>\n const memoVisibility = new Map<string, boolean>()\n\n const isFolderVisible = (id: string): boolean => {\n // If visibility for this specific branch path was already calculated, return it instantly\n if (memoVisibility.has(id)) return memoVisibility.get(id)!\n\n const folder = getFolderById(id)\n if (!folder) {\n memoVisibility.set(id, false)\n return false\n }\n\n const parentId = folder.parentId as string\n\n // Check if this folder acts as a boundary root from the slicer selection\n const isRootFromSlicer = excludeSelectedFolders\n ? selectedFolders.includes(parentId)\n : selectedFolders.includes(id)\n\n if (isRootFromSlicer) {\n memoVisibility.set(id, true)\n return true\n }\n\n // Top-level root folders (no parent) are always visible IF there is no slicer selection\n if (!parentId) {\n const isVisible = selectedFolders.length === 0\n memoVisibility.set(id, isVisible)\n return isVisible\n }\n\n // If the parent folder is not expanded, this folder is NOT visible (only for tree table hierarchy)\n if (showHierarchy) {\n // Chain step: Visible ONLY if the immediate parent is expanded AND that parent path is visible\n const visible = expandedMap[parentId] === true && isFolderVisible(parentId)\n\n // Cache the result to protect sibling lookups from re-walking this shared ancestral path\n memoVisibility.set(id, visible)\n return visible\n } else {\n return true\n }\n }\n\n // We ONLY loop over the expanded folder IDs, never the full project folder array!\n return expandedParentIds.filter((id) => isFolderVisible(id))\n}\n"],"names":["getFolderIdsToQueryFromExpanded","props","expanded","expandedParentIds","selectedFolders","excludeSelectedFolders","getFolderById","showHierarchy","expandedMap","memoVisibility","isFolderVisible","id","folder","parentId","isVisible","visible"],"mappings":"AAGO,MAAMA,IAAkC,CAACC,MAO1C;AACJ,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,EAAA,IACEN,GACEO,IAAcN,GACdO,wBAAqB,IAAA,GAErBC,IAAkB,CAACC,MAAwB;AAE/C,QAAIF,EAAe,IAAIE,CAAE,EAAG,QAAOF,EAAe,IAAIE,CAAE;AAExD,UAAMC,IAASN,EAAcK,CAAE;AAC/B,QAAI,CAACC;AACH,aAAAH,EAAe,IAAIE,GAAI,EAAK,GACrB;AAGT,UAAME,IAAWD,EAAO;AAOxB,QAJyBP,IACrBD,EAAgB,SAASS,CAAQ,IACjCT,EAAgB,SAASO,CAAE;AAG7B,aAAAF,EAAe,IAAIE,GAAI,EAAI,GACpB;AAIT,QAAI,CAACE,GAAU;AACb,YAAMC,IAAYV,EAAgB,WAAW;AAC7C,aAAAK,EAAe,IAAIE,GAAIG,CAAS,GACzBA;AAAA,IACT;AAGA,QAAIP,GAAe;AAEjB,YAAMQ,IAAUP,EAAYK,CAAQ,MAAM,MAAQH,EAAgBG,CAAQ;AAG1E,aAAAJ,EAAe,IAAIE,GAAII,CAAO,GACvBA;AAAA,IACT;AACE,aAAO;AAAA,EAEX;AAGA,SAAOZ,EAAkB,OAAO,CAACQ,MAAOD,EAAgBC,CAAE,CAAC;AAC7D;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTableFieldOptions.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getTableFieldOptions.ts"],"sourcesContent":["import { ProductType } from '@shared/api'\nimport { BuiltInFieldOptions } from '../types'\nimport { FolderType, Status, Tag, TaskType } from '../types/project'\n\ntype Params = {\n users: {\n name: string\n fullName?: string\n }[]\n statuses: Status[]\n folderTypes: FolderType[]\n taskTypes: TaskType[]\n productTypes: ProductType[]\n tags: Tag[]\n scopes: string[]\n}\n\nexport const getTableFieldOptions = ({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n}: Params): BuiltInFieldOptions => {\n const getStatusOptions = (allowedScopes: string[]) =>\n statuses\n .filter(\n (status) => !status.scope || allowedScopes.some((scope) => status.scope?.includes(scope)),\n )\n .map(({ name, color, icon, scope }) => ({\n value: name,\n label: name,\n color,\n icon,\n scope,\n }))\n\n return {\n assignee: users.map(({ name, fullName }) => ({\n value: name,\n label: fullName || name,\n icon: `/api/users/${name}/avatar`,\n })),\n status: getStatusOptions(scopes),\n folderStatus: getStatusOptions(['folder']),\n tag: tags.map(({ name, color }) => ({ value: name, label: name, color })),\n folderType: folderTypes.map(({ name, icon, color }) => ({\n value: name,\n label: name,\n icon,\n color,\n })),\n taskType: taskTypes.map(({ name, icon, color }) => ({ value: name, label: name, icon, color })),\n productType: productTypes.map(({ name, icon, color }) => ({\n value: name,\n label: name,\n icon,\n color,\n })),\n }\n}\n"],"names":["getTableFieldOptions","users","statuses","folderTypes","taskTypes","productTypes","tags","scopes","getStatusOptions","allowedScopes","status","scope","name","color","icon","fullName"],"mappings":"gFAiBO,MAAMA,EAAuB,CAAC,CACnC,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,UAAAC,EACA,aAAAC,EACA,KAAAC,EACA,OAAAC,CACF,IAAmC,CACjC,MAAMC,EAAoBC,GACxBP,EACG,OACEQ,GAAW,CAACA,EAAO,OAASD,EAAc,KAAME,GAAUD,EAAO,OAAO,SAASC,CAAK,CAAC,CAAA,EAEzF,IAAI,CAAC,CAAE,KAAAC,EAAM,MAAAC,EAAO,KAAAC,EAAM,MAAAH,MAAa,CACtC,MAAOC,EACP,MAAOA,EACP,MAAAC,EACA,KAAAC,EACA,MAAAH,CAAA,EACA,EAEN,MAAO,CACL,SAAUV,EAAM,IAAI,CAAC,CAAE,KAAAW,EAAM,SAAAG,MAAgB,CAC3C,MAAOH,EACP,MAAOG,GAAYH,EACnB,KAAM,cAAcA,CAAI,SAAA,EACxB,EACF,OAAQJ,EAAiBD,CAAM,EAC/B,aAAcC,EAAiB,CAAC,QAAQ,CAAC,EACzC,IAAKF,EAAK,IAAI,CAAC,CAAE,KAAAM,EAAM,MAAAC,CAAA,KAAa,CAAE,MAAOD,EAAM,MAAOA,EAAM,MAAAC,GAAQ,EACxE,WAAYV,EAAY,IAAI,CAAC,CAAE,KAAAS,EAAM,KAAAE,EAAM,MAAAD,MAAa,CACtD,MAAOD,EACP,MAAOA,EACP,KAAAE,EACA,MAAAD,CAAA,EACA,EACF,SAAUT,EAAU,IAAI,CAAC,CAAE,KAAAQ,EAAM,KAAAE,EAAM,MAAAD,CAAA,KAAa,CAAE,MAAOD,EAAM,MAAOA,EAAM,KAAAE,EAAM,MAAAD,GAAQ,EAC9F,YAAaR,EAAa,IAAI,CAAC,CAAE,KAAAO,EAAM,KAAAE,EAAM,MAAAD,MAAa,CACxD,MAAOD,EACP,MAAOA,EACP,KAAAE,EACA,MAAAD,CAAA,EACA,CAAA,CAEN"}
1
+ {"version":3,"file":"getTableFieldOptions.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getTableFieldOptions.ts"],"sourcesContent":["import type { ProductType } from '@shared/api'\nimport type { BuiltInFieldOptions } from '../types'\nimport type { FolderType, Status, Tag, TaskType } from '../types/project'\n\ntype Params = {\n users: {\n name: string\n fullName?: string\n }[]\n statuses: Status[]\n folderTypes: FolderType[]\n taskTypes: TaskType[]\n productTypes: ProductType[]\n tags: Tag[]\n scopes: string[]\n}\n\nexport const getTableFieldOptions = ({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n}: Params): BuiltInFieldOptions => {\n const getStatusOptions = (allowedScopes: string[]) =>\n statuses\n .filter(\n (status) => !status.scope || allowedScopes.some((scope) => status.scope?.includes(scope)),\n )\n .map(({ name, color, icon, scope }) => ({\n value: name,\n label: name,\n color,\n icon,\n scope,\n }))\n\n return {\n assignee: users.map(({ name, fullName }) => ({\n value: name,\n label: fullName || name,\n icon: `/api/users/${name}/avatar`,\n })),\n status: getStatusOptions(scopes),\n folderStatus: getStatusOptions(['folder']),\n tag: tags.map(({ name, color }) => ({ value: name, label: name, color })),\n folderType: folderTypes.map(({ name, icon, color }) => ({\n value: name,\n label: name,\n icon,\n color,\n })),\n taskType: taskTypes.map(({ name, icon, color }) => ({ value: name, label: name, icon, color })),\n productType: productTypes.map(({ name, icon, color }) => ({\n value: name,\n label: name,\n icon,\n color,\n })),\n }\n}\n"],"names":["getTableFieldOptions","users","statuses","folderTypes","taskTypes","productTypes","tags","scopes","getStatusOptions","allowedScopes","status","scope","name","color","icon","fullName"],"mappings":"gFAiBO,MAAMA,EAAuB,CAAC,CACnC,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,UAAAC,EACA,aAAAC,EACA,KAAAC,EACA,OAAAC,CACF,IAAmC,CACjC,MAAMC,EAAoBC,GACxBP,EACG,OACEQ,GAAW,CAACA,EAAO,OAASD,EAAc,KAAME,GAAUD,EAAO,OAAO,SAASC,CAAK,CAAC,CAAA,EAEzF,IAAI,CAAC,CAAE,KAAAC,EAAM,MAAAC,EAAO,KAAAC,EAAM,MAAAH,MAAa,CACtC,MAAOC,EACP,MAAOA,EACP,MAAAC,EACA,KAAAC,EACA,MAAAH,CAAA,EACA,EAEN,MAAO,CACL,SAAUV,EAAM,IAAI,CAAC,CAAE,KAAAW,EAAM,SAAAG,MAAgB,CAC3C,MAAOH,EACP,MAAOG,GAAYH,EACnB,KAAM,cAAcA,CAAI,SAAA,EACxB,EACF,OAAQJ,EAAiBD,CAAM,EAC/B,aAAcC,EAAiB,CAAC,QAAQ,CAAC,EACzC,IAAKF,EAAK,IAAI,CAAC,CAAE,KAAAM,EAAM,MAAAC,CAAA,KAAa,CAAE,MAAOD,EAAM,MAAOA,EAAM,MAAAC,GAAQ,EACxE,WAAYV,EAAY,IAAI,CAAC,CAAE,KAAAS,EAAM,KAAAE,EAAM,MAAAD,MAAa,CACtD,MAAOD,EACP,MAAOA,EACP,KAAAE,EACA,MAAAD,CAAA,EACA,EACF,SAAUT,EAAU,IAAI,CAAC,CAAE,KAAAQ,EAAM,KAAAE,EAAM,MAAAD,CAAA,KAAa,CAAE,MAAOD,EAAM,MAAOA,EAAM,KAAAE,EAAM,MAAAD,GAAQ,EAC9F,YAAaR,EAAa,IAAI,CAAC,CAAE,KAAAO,EAAM,KAAAE,EAAM,MAAAD,MAAa,CACxD,MAAOD,EACP,MAAOA,EACP,KAAAE,EACA,MAAAD,CAAA,EACA,CAAA,CAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTableFieldOptions.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getTableFieldOptions.ts"],"sourcesContent":["import { ProductType } from '@shared/api'\nimport { BuiltInFieldOptions } from '../types'\nimport { FolderType, Status, Tag, TaskType } from '../types/project'\n\ntype Params = {\n users: {\n name: string\n fullName?: string\n }[]\n statuses: Status[]\n folderTypes: FolderType[]\n taskTypes: TaskType[]\n productTypes: ProductType[]\n tags: Tag[]\n scopes: string[]\n}\n\nexport const getTableFieldOptions = ({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n}: Params): BuiltInFieldOptions => {\n const getStatusOptions = (allowedScopes: string[]) =>\n statuses\n .filter(\n (status) => !status.scope || allowedScopes.some((scope) => status.scope?.includes(scope)),\n )\n .map(({ name, color, icon, scope }) => ({\n value: name,\n label: name,\n color,\n icon,\n scope,\n }))\n\n return {\n assignee: users.map(({ name, fullName }) => ({\n value: name,\n label: fullName || name,\n icon: `/api/users/${name}/avatar`,\n })),\n status: getStatusOptions(scopes),\n folderStatus: getStatusOptions(['folder']),\n tag: tags.map(({ name, color }) => ({ value: name, label: name, color })),\n folderType: folderTypes.map(({ name, icon, color }) => ({\n value: name,\n label: name,\n icon,\n color,\n })),\n taskType: taskTypes.map(({ name, icon, color }) => ({ value: name, label: name, icon, color })),\n productType: productTypes.map(({ name, icon, color }) => ({\n value: name,\n label: name,\n icon,\n color,\n })),\n }\n}\n"],"names":["getTableFieldOptions","users","statuses","folderTypes","taskTypes","productTypes","tags","scopes","getStatusOptions","allowedScopes","status","scope","name","color","icon","fullName"],"mappings":"AAiBO,MAAMA,IAAuB,CAAC;AAAA,EACnC,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AACF,MAAmC;AACjC,QAAMC,IAAmB,CAACC,MACxBP,EACG;AAAA,IACC,CAACQ,MAAW,CAACA,EAAO,SAASD,EAAc,KAAK,CAACE,MAAUD,EAAO,OAAO,SAASC,CAAK,CAAC;AAAA,EAAA,EAEzF,IAAI,CAAC,EAAE,MAAAC,GAAM,OAAAC,GAAO,MAAAC,GAAM,OAAAH,SAAa;AAAA,IACtC,OAAOC;AAAA,IACP,OAAOA;AAAA,IACP,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAH;AAAA,EAAA,EACA;AAEN,SAAO;AAAA,IACL,UAAUV,EAAM,IAAI,CAAC,EAAE,MAAAW,GAAM,UAAAG,SAAgB;AAAA,MAC3C,OAAOH;AAAA,MACP,OAAOG,KAAYH;AAAA,MACnB,MAAM,cAAcA,CAAI;AAAA,IAAA,EACxB;AAAA,IACF,QAAQJ,EAAiBD,CAAM;AAAA,IAC/B,cAAcC,EAAiB,CAAC,QAAQ,CAAC;AAAA,IACzC,KAAKF,EAAK,IAAI,CAAC,EAAE,MAAAM,GAAM,OAAAC,EAAA,OAAa,EAAE,OAAOD,GAAM,OAAOA,GAAM,OAAAC,IAAQ;AAAA,IACxE,YAAYV,EAAY,IAAI,CAAC,EAAE,MAAAS,GAAM,MAAAE,GAAM,OAAAD,SAAa;AAAA,MACtD,OAAOD;AAAA,MACP,OAAOA;AAAA,MACP,MAAAE;AAAA,MACA,OAAAD;AAAA,IAAA,EACA;AAAA,IACF,UAAUT,EAAU,IAAI,CAAC,EAAE,MAAAQ,GAAM,MAAAE,GAAM,OAAAD,EAAA,OAAa,EAAE,OAAOD,GAAM,OAAOA,GAAM,MAAAE,GAAM,OAAAD,IAAQ;AAAA,IAC9F,aAAaR,EAAa,IAAI,CAAC,EAAE,MAAAO,GAAM,MAAAE,GAAM,OAAAD,SAAa;AAAA,MACxD,OAAOD;AAAA,MACP,OAAOA;AAAA,MACP,MAAAE;AAAA,MACA,OAAAD;AAAA,IAAA,EACA;AAAA,EAAA;AAEN;"}
1
+ {"version":3,"file":"getTableFieldOptions.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getTableFieldOptions.ts"],"sourcesContent":["import type { ProductType } from '@shared/api'\nimport type { BuiltInFieldOptions } from '../types'\nimport type { FolderType, Status, Tag, TaskType } from '../types/project'\n\ntype Params = {\n users: {\n name: string\n fullName?: string\n }[]\n statuses: Status[]\n folderTypes: FolderType[]\n taskTypes: TaskType[]\n productTypes: ProductType[]\n tags: Tag[]\n scopes: string[]\n}\n\nexport const getTableFieldOptions = ({\n users,\n statuses,\n folderTypes,\n taskTypes,\n productTypes,\n tags,\n scopes,\n}: Params): BuiltInFieldOptions => {\n const getStatusOptions = (allowedScopes: string[]) =>\n statuses\n .filter(\n (status) => !status.scope || allowedScopes.some((scope) => status.scope?.includes(scope)),\n )\n .map(({ name, color, icon, scope }) => ({\n value: name,\n label: name,\n color,\n icon,\n scope,\n }))\n\n return {\n assignee: users.map(({ name, fullName }) => ({\n value: name,\n label: fullName || name,\n icon: `/api/users/${name}/avatar`,\n })),\n status: getStatusOptions(scopes),\n folderStatus: getStatusOptions(['folder']),\n tag: tags.map(({ name, color }) => ({ value: name, label: name, color })),\n folderType: folderTypes.map(({ name, icon, color }) => ({\n value: name,\n label: name,\n icon,\n color,\n })),\n taskType: taskTypes.map(({ name, icon, color }) => ({ value: name, label: name, icon, color })),\n productType: productTypes.map(({ name, icon, color }) => ({\n value: name,\n label: name,\n icon,\n color,\n })),\n }\n}\n"],"names":["getTableFieldOptions","users","statuses","folderTypes","taskTypes","productTypes","tags","scopes","getStatusOptions","allowedScopes","status","scope","name","color","icon","fullName"],"mappings":"AAiBO,MAAMA,IAAuB,CAAC;AAAA,EACnC,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AACF,MAAmC;AACjC,QAAMC,IAAmB,CAACC,MACxBP,EACG;AAAA,IACC,CAACQ,MAAW,CAACA,EAAO,SAASD,EAAc,KAAK,CAACE,MAAUD,EAAO,OAAO,SAASC,CAAK,CAAC;AAAA,EAAA,EAEzF,IAAI,CAAC,EAAE,MAAAC,GAAM,OAAAC,GAAO,MAAAC,GAAM,OAAAH,SAAa;AAAA,IACtC,OAAOC;AAAA,IACP,OAAOA;AAAA,IACP,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAH;AAAA,EAAA,EACA;AAEN,SAAO;AAAA,IACL,UAAUV,EAAM,IAAI,CAAC,EAAE,MAAAW,GAAM,UAAAG,SAAgB;AAAA,MAC3C,OAAOH;AAAA,MACP,OAAOG,KAAYH;AAAA,MACnB,MAAM,cAAcA,CAAI;AAAA,IAAA,EACxB;AAAA,IACF,QAAQJ,EAAiBD,CAAM;AAAA,IAC/B,cAAcC,EAAiB,CAAC,QAAQ,CAAC;AAAA,IACzC,KAAKF,EAAK,IAAI,CAAC,EAAE,MAAAM,GAAM,OAAAC,EAAA,OAAa,EAAE,OAAOD,GAAM,OAAOA,GAAM,OAAAC,IAAQ;AAAA,IACxE,YAAYV,EAAY,IAAI,CAAC,EAAE,MAAAS,GAAM,MAAAE,GAAM,OAAAD,SAAa;AAAA,MACtD,OAAOD;AAAA,MACP,OAAOA;AAAA,MACP,MAAAE;AAAA,MACA,OAAAD;AAAA,IAAA,EACA;AAAA,IACF,UAAUT,EAAU,IAAI,CAAC,EAAE,MAAAQ,GAAM,MAAAE,GAAM,OAAAD,EAAA,OAAa,EAAE,OAAOD,GAAM,OAAOA,GAAM,MAAAE,GAAM,OAAAD,IAAQ;AAAA,IAC9F,aAAaR,EAAa,IAAI,CAAC,EAAE,MAAAO,GAAM,MAAAE,GAAM,OAAAD,SAAa;AAAA,MACxD,OAAOD;AAAA,MACP,OAAOA;AAAA,MACP,MAAAE;AAAA,MACA,OAAAD;AAAA,IAAA,EACA;AAAA,EAAA;AAEN;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTypeDefaultValue.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getTypeDefaultValue.ts"],"sourcesContent":["import { AttributeData } from '@shared/api'\n\nexport const getTypeDefaultValue = (type: AttributeData['type']) => {\n switch (type) {\n case 'boolean':\n return false\n case 'datetime':\n return null\n case 'float':\n case 'integer':\n return 0\n case 'string':\n return ''\n case 'list_of_strings':\n case 'list_of_integers':\n case 'list_of_any':\n case 'list_of_submodels':\n return []\n case 'dict':\n return {}\n default:\n return null\n }\n}\n"],"names":["getTypeDefaultValue","type"],"mappings":"gFAEO,MAAMA,EAAuBC,GAAgC,CAClE,OAAQA,EAAA,CACN,IAAK,UACH,MAAO,GACT,IAAK,WACH,OAAO,KACT,IAAK,QACL,IAAK,UACH,MAAO,GACT,IAAK,SACH,MAAO,GACT,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,oBACH,MAAO,CAAA,EACT,IAAK,OACH,MAAO,CAAA,EACT,QACE,OAAO,IAAA,CAEb"}
1
+ {"version":3,"file":"getTypeDefaultValue.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getTypeDefaultValue.ts"],"sourcesContent":["import type { AttributeData } from '@shared/api'\n\nexport const getTypeDefaultValue = (type: AttributeData['type']) => {\n switch (type) {\n case 'boolean':\n return false\n case 'datetime':\n return null\n case 'float':\n case 'integer':\n return 0\n case 'string':\n return ''\n case 'list_of_strings':\n case 'list_of_integers':\n case 'list_of_any':\n case 'list_of_submodels':\n return []\n case 'dict':\n return {}\n default:\n return null\n }\n}\n"],"names":["getTypeDefaultValue","type"],"mappings":"gFAEO,MAAMA,EAAuBC,GAAgC,CAClE,OAAQA,EAAA,CACN,IAAK,UACH,MAAO,GACT,IAAK,WACH,OAAO,KACT,IAAK,QACL,IAAK,UACH,MAAO,GACT,IAAK,SACH,MAAO,GACT,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,oBACH,MAAO,CAAA,EACT,IAAK,OACH,MAAO,CAAA,EACT,QACE,OAAO,IAAA,CAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTypeDefaultValue.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getTypeDefaultValue.ts"],"sourcesContent":["import { AttributeData } from '@shared/api'\n\nexport const getTypeDefaultValue = (type: AttributeData['type']) => {\n switch (type) {\n case 'boolean':\n return false\n case 'datetime':\n return null\n case 'float':\n case 'integer':\n return 0\n case 'string':\n return ''\n case 'list_of_strings':\n case 'list_of_integers':\n case 'list_of_any':\n case 'list_of_submodels':\n return []\n case 'dict':\n return {}\n default:\n return null\n }\n}\n"],"names":["getTypeDefaultValue","type"],"mappings":"AAEO,MAAMA,IAAsB,CAACC,MAAgC;AAClE,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,CAAA;AAAA,IACT,KAAK;AACH,aAAO,CAAA;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
1
+ {"version":3,"file":"getTypeDefaultValue.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/getTypeDefaultValue.ts"],"sourcesContent":["import type { AttributeData } from '@shared/api'\n\nexport const getTypeDefaultValue = (type: AttributeData['type']) => {\n switch (type) {\n case 'boolean':\n return false\n case 'datetime':\n return null\n case 'float':\n case 'integer':\n return 0\n case 'string':\n return ''\n case 'list_of_strings':\n case 'list_of_integers':\n case 'list_of_any':\n case 'list_of_submodels':\n return []\n case 'dict':\n return {}\n default:\n return null\n }\n}\n"],"names":["getTypeDefaultValue","type"],"mappings":"AAEO,MAAMA,IAAsB,CAACC,MAAgC;AAClE,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,CAAA;AAAA,IACT,KAAK;AACH,aAAO,CAAA;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
@@ -1 +1 @@
1
- {"version":3,"file":"linksToTableData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/linksToTableData.ts"],"sourcesContent":["// converts the links array to the data shown in the table (object of link keys with list of link entity names)\n// we split the links by direction (in/out) and store them in an object\n\nimport { LinkEntity } from '@shared/components'\nimport { getLinkKey } from '../buildTreeTableColumns'\nimport { EntityLink } from '@shared/api'\nimport { getEntityColor, getEntityIcon, IconAnatomy } from '@shared/util/iconUtils'\n\nexport type LinkId = string\nexport type LinkValue = LinkEntity[]\nexport type LinksTableData = Record<LinkId, LinkValue>\n\nexport const linksToTableData = (\n links: EntityLink[] | undefined,\n entityType: string,\n anatomy: IconAnatomy,\n): LinksTableData =>\n links?.reduce((acc, edge) => {\n const { linkType, direction, entityType: linkEntityType, id, node, isRestricted } = edge\n\n // Handle restricted links (node is null)\n if (isRestricted || !node) {\n const entityData: LinkEntity = {\n label: '',\n parents: [],\n linkId: id,\n entityId: '',\n entityType: linkEntityType,\n icon: getEntityIcon(linkEntityType, undefined, anatomy),\n color: undefined,\n isRestricted: true,\n }\n\n const linkTypeName = linkTypeToLinkName(linkType, entityType, linkEntityType, direction)\n const tableId = getLinkKey({ name: linkTypeName }, direction)\n\n if (!acc[tableId]) {\n acc[tableId] = []\n }\n\n if (!acc[tableId].includes(entityData)) {\n acc[tableId].push(entityData)\n }\n\n return acc\n }\n\n // Handle normal links\n const entityData: LinkEntity = {\n label: (node.label || node.name) as string,\n parents: node.parents,\n linkId: id,\n entityId: node.id as string,\n entityType: linkEntityType,\n icon: getEntityIcon(linkEntityType, node.subType, anatomy),\n color: getEntityColor(linkEntityType, node.subType, anatomy),\n }\n\n // we must build the entity link type name based on the direction and entity types\n // e.g. \"linkType|inEntityType|outEntityType\"\n const linkTypeName = linkTypeToLinkName(linkType, entityType, linkEntityType, direction)\n\n const tableId = getLinkKey({ name: linkTypeName }, direction)\n\n if (!acc[tableId]) {\n acc[tableId] = []\n }\n\n // add the entity name to the link type\n if (!acc[tableId].includes(entityData)) {\n acc[tableId].push(entityData)\n }\n\n return acc\n }, {} as LinksTableData) || {}\n\n// converts the link type + in/out entity types to a link name format {linkType}|in|out\nconst linkTypeToLinkName = (\n linkType: string,\n baseEntityType: string,\n linkEntityType: string,\n direction: 'in' | 'out' | string,\n): string => {\n const firstType = direction === 'in' ? linkEntityType : baseEntityType\n const secondType = direction === 'in' ? baseEntityType : linkEntityType\n return `${linkType}|${firstType}|${secondType}`\n}\n"],"names":["linksToTableData","links","entityType","anatomy","acc","edge","linkType","direction","linkEntityType","id","node","isRestricted","entityData","getEntityIcon","linkTypeName","linkTypeToLinkName","tableId","getLinkKey","getEntityColor","baseEntityType"],"mappings":"+KAYaA,EAAmB,CAC9BC,EACAC,EACAC,IAEAF,GAAO,OAAO,CAACG,EAAKC,IAAS,CAC3B,KAAM,CAAE,SAAAC,EAAU,UAAAC,EAAW,WAAYC,EAAgB,GAAAC,EAAI,KAAAC,EAAM,aAAAC,GAAiBN,EAGpF,GAAIM,GAAgB,CAACD,EAAM,CACzB,MAAME,EAAyB,CAC7B,MAAO,GACP,QAAS,CAAA,EACT,OAAQH,EACR,SAAU,GACV,WAAYD,EACZ,KAAMK,EAAAA,cAAcL,EAAgB,OAAWL,CAAO,EACtD,MAAO,OACP,aAAc,EAAA,EAGVW,EAAeC,EAAmBT,EAAUJ,EAAYM,EAAgBD,CAAS,EACjFS,EAAUC,EAAAA,WAAW,CAAE,KAAMH,CAAAA,EAAgBP,CAAS,EAE5D,OAAKH,EAAIY,CAAO,IACdZ,EAAIY,CAAO,EAAI,CAAA,GAGZZ,EAAIY,CAAO,EAAE,SAASJ,CAAU,GACnCR,EAAIY,CAAO,EAAE,KAAKJ,CAAU,EAGvBR,CACT,CAGA,MAAMQ,EAAyB,CAC7B,MAAQF,EAAK,OAASA,EAAK,KAC3B,QAASA,EAAK,QACd,OAAQD,EACR,SAAUC,EAAK,GACf,WAAYF,EACZ,KAAMK,EAAAA,cAAcL,EAAgBE,EAAK,QAASP,CAAO,EACzD,MAAOe,EAAAA,eAAeV,EAAgBE,EAAK,QAASP,CAAO,CAAA,EAKvDW,EAAeC,EAAmBT,EAAUJ,EAAYM,EAAgBD,CAAS,EAEjFS,EAAUC,EAAAA,WAAW,CAAE,KAAMH,CAAA,EAAgBP,CAAS,EAE5D,OAAKH,EAAIY,CAAO,IACdZ,EAAIY,CAAO,EAAI,CAAA,GAIZZ,EAAIY,CAAO,EAAE,SAASJ,CAAU,GACnCR,EAAIY,CAAO,EAAE,KAAKJ,CAAU,EAGvBR,CACT,EAAG,CAAA,CAAoB,GAAK,CAAA,EAGxBW,EAAqB,CACzBT,EACAa,EACAX,EACAD,IAIO,GAAGD,CAAQ,IAFAC,IAAc,KAAOC,EAAiBW,CAEzB,IADZZ,IAAc,KAAOY,EAAiBX,CACZ"}
1
+ {"version":3,"file":"linksToTableData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/linksToTableData.ts"],"sourcesContent":["// converts the links array to the data shown in the table (object of link keys with list of link entity names)\n// we split the links by direction (in/out) and store them in an object\n\nimport type { LinkEntity } from '@shared/components/LinksManager/LinksManager'\nimport { getLinkKey } from '../buildTreeTableColumns'\nimport { EntityLink } from '@shared/api'\nimport { getEntityColor, getEntityIcon, IconAnatomy } from '@shared/util/iconUtils'\n\nexport type LinkId = string\nexport type LinkValue = LinkEntity[]\nexport type LinksTableData = Record<LinkId, LinkValue>\n\nexport const linksToTableData = (\n links: EntityLink[] | undefined,\n entityType: string,\n anatomy: IconAnatomy,\n): LinksTableData =>\n links?.reduce((acc, edge) => {\n const { linkType, direction, entityType: linkEntityType, id, node, isRestricted } = edge\n\n // Handle restricted links (node is null)\n if (isRestricted || !node) {\n const entityData: LinkEntity = {\n label: '',\n parents: [],\n linkId: id,\n entityId: '',\n entityType: linkEntityType,\n icon: getEntityIcon(linkEntityType, undefined, anatomy),\n color: undefined,\n isRestricted: true,\n }\n\n const linkTypeName = linkTypeToLinkName(linkType, entityType, linkEntityType, direction)\n const tableId = getLinkKey({ name: linkTypeName }, direction)\n\n if (!acc[tableId]) {\n acc[tableId] = []\n }\n\n if (!acc[tableId].includes(entityData)) {\n acc[tableId].push(entityData)\n }\n\n return acc\n }\n\n // Handle normal links\n const entityData: LinkEntity = {\n label: (node.label || node.name) as string,\n parents: node.parents,\n linkId: id,\n entityId: node.id as string,\n entityType: linkEntityType,\n icon: getEntityIcon(linkEntityType, node.subType, anatomy),\n color: getEntityColor(linkEntityType, node.subType, anatomy),\n }\n\n // we must build the entity link type name based on the direction and entity types\n // e.g. \"linkType|inEntityType|outEntityType\"\n const linkTypeName = linkTypeToLinkName(linkType, entityType, linkEntityType, direction)\n\n const tableId = getLinkKey({ name: linkTypeName }, direction)\n\n if (!acc[tableId]) {\n acc[tableId] = []\n }\n\n // add the entity name to the link type\n if (!acc[tableId].includes(entityData)) {\n acc[tableId].push(entityData)\n }\n\n return acc\n }, {} as LinksTableData) || {}\n\n// converts the link type + in/out entity types to a link name format {linkType}|in|out\nconst linkTypeToLinkName = (\n linkType: string,\n baseEntityType: string,\n linkEntityType: string,\n direction: 'in' | 'out' | string,\n): string => {\n const firstType = direction === 'in' ? linkEntityType : baseEntityType\n const secondType = direction === 'in' ? baseEntityType : linkEntityType\n return `${linkType}|${firstType}|${secondType}`\n}\n"],"names":["linksToTableData","links","entityType","anatomy","acc","edge","linkType","direction","linkEntityType","id","node","isRestricted","entityData","getEntityIcon","linkTypeName","linkTypeToLinkName","tableId","getLinkKey","getEntityColor","baseEntityType"],"mappings":"+KAYaA,EAAmB,CAC9BC,EACAC,EACAC,IAEAF,GAAO,OAAO,CAACG,EAAKC,IAAS,CAC3B,KAAM,CAAE,SAAAC,EAAU,UAAAC,EAAW,WAAYC,EAAgB,GAAAC,EAAI,KAAAC,EAAM,aAAAC,GAAiBN,EAGpF,GAAIM,GAAgB,CAACD,EAAM,CACzB,MAAME,EAAyB,CAC7B,MAAO,GACP,QAAS,CAAA,EACT,OAAQH,EACR,SAAU,GACV,WAAYD,EACZ,KAAMK,EAAAA,cAAcL,EAAgB,OAAWL,CAAO,EACtD,MAAO,OACP,aAAc,EAAA,EAGVW,EAAeC,EAAmBT,EAAUJ,EAAYM,EAAgBD,CAAS,EACjFS,EAAUC,EAAAA,WAAW,CAAE,KAAMH,CAAAA,EAAgBP,CAAS,EAE5D,OAAKH,EAAIY,CAAO,IACdZ,EAAIY,CAAO,EAAI,CAAA,GAGZZ,EAAIY,CAAO,EAAE,SAASJ,CAAU,GACnCR,EAAIY,CAAO,EAAE,KAAKJ,CAAU,EAGvBR,CACT,CAGA,MAAMQ,EAAyB,CAC7B,MAAQF,EAAK,OAASA,EAAK,KAC3B,QAASA,EAAK,QACd,OAAQD,EACR,SAAUC,EAAK,GACf,WAAYF,EACZ,KAAMK,EAAAA,cAAcL,EAAgBE,EAAK,QAASP,CAAO,EACzD,MAAOe,EAAAA,eAAeV,EAAgBE,EAAK,QAASP,CAAO,CAAA,EAKvDW,EAAeC,EAAmBT,EAAUJ,EAAYM,EAAgBD,CAAS,EAEjFS,EAAUC,EAAAA,WAAW,CAAE,KAAMH,CAAA,EAAgBP,CAAS,EAE5D,OAAKH,EAAIY,CAAO,IACdZ,EAAIY,CAAO,EAAI,CAAA,GAIZZ,EAAIY,CAAO,EAAE,SAASJ,CAAU,GACnCR,EAAIY,CAAO,EAAE,KAAKJ,CAAU,EAGvBR,CACT,EAAG,CAAA,CAAoB,GAAK,CAAA,EAGxBW,EAAqB,CACzBT,EACAa,EACAX,EACAD,IAIO,GAAGD,CAAQ,IAFAC,IAAc,KAAOC,EAAiBW,CAEzB,IADZZ,IAAc,KAAOY,EAAiBX,CACZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"linksToTableData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/linksToTableData.ts"],"sourcesContent":["// converts the links array to the data shown in the table (object of link keys with list of link entity names)\n// we split the links by direction (in/out) and store them in an object\n\nimport { LinkEntity } from '@shared/components'\nimport { getLinkKey } from '../buildTreeTableColumns'\nimport { EntityLink } from '@shared/api'\nimport { getEntityColor, getEntityIcon, IconAnatomy } from '@shared/util/iconUtils'\n\nexport type LinkId = string\nexport type LinkValue = LinkEntity[]\nexport type LinksTableData = Record<LinkId, LinkValue>\n\nexport const linksToTableData = (\n links: EntityLink[] | undefined,\n entityType: string,\n anatomy: IconAnatomy,\n): LinksTableData =>\n links?.reduce((acc, edge) => {\n const { linkType, direction, entityType: linkEntityType, id, node, isRestricted } = edge\n\n // Handle restricted links (node is null)\n if (isRestricted || !node) {\n const entityData: LinkEntity = {\n label: '',\n parents: [],\n linkId: id,\n entityId: '',\n entityType: linkEntityType,\n icon: getEntityIcon(linkEntityType, undefined, anatomy),\n color: undefined,\n isRestricted: true,\n }\n\n const linkTypeName = linkTypeToLinkName(linkType, entityType, linkEntityType, direction)\n const tableId = getLinkKey({ name: linkTypeName }, direction)\n\n if (!acc[tableId]) {\n acc[tableId] = []\n }\n\n if (!acc[tableId].includes(entityData)) {\n acc[tableId].push(entityData)\n }\n\n return acc\n }\n\n // Handle normal links\n const entityData: LinkEntity = {\n label: (node.label || node.name) as string,\n parents: node.parents,\n linkId: id,\n entityId: node.id as string,\n entityType: linkEntityType,\n icon: getEntityIcon(linkEntityType, node.subType, anatomy),\n color: getEntityColor(linkEntityType, node.subType, anatomy),\n }\n\n // we must build the entity link type name based on the direction and entity types\n // e.g. \"linkType|inEntityType|outEntityType\"\n const linkTypeName = linkTypeToLinkName(linkType, entityType, linkEntityType, direction)\n\n const tableId = getLinkKey({ name: linkTypeName }, direction)\n\n if (!acc[tableId]) {\n acc[tableId] = []\n }\n\n // add the entity name to the link type\n if (!acc[tableId].includes(entityData)) {\n acc[tableId].push(entityData)\n }\n\n return acc\n }, {} as LinksTableData) || {}\n\n// converts the link type + in/out entity types to a link name format {linkType}|in|out\nconst linkTypeToLinkName = (\n linkType: string,\n baseEntityType: string,\n linkEntityType: string,\n direction: 'in' | 'out' | string,\n): string => {\n const firstType = direction === 'in' ? linkEntityType : baseEntityType\n const secondType = direction === 'in' ? baseEntityType : linkEntityType\n return `${linkType}|${firstType}|${secondType}`\n}\n"],"names":["linksToTableData","links","entityType","anatomy","acc","edge","linkType","direction","linkEntityType","id","node","isRestricted","entityData","getEntityIcon","linkTypeName","linkTypeToLinkName","tableId","getLinkKey","getEntityColor","baseEntityType"],"mappings":";;AAYO,MAAMA,IAAmB,CAC9BC,GACAC,GACAC,MAEAF,GAAO,OAAO,CAACG,GAAKC,MAAS;AAC3B,QAAM,EAAE,UAAAC,GAAU,WAAAC,GAAW,YAAYC,GAAgB,IAAAC,GAAI,MAAAC,GAAM,cAAAC,MAAiBN;AAGpF,MAAIM,KAAgB,CAACD,GAAM;AACzB,UAAME,IAAyB;AAAA,MAC7B,OAAO;AAAA,MACP,SAAS,CAAA;AAAA,MACT,QAAQH;AAAA,MACR,UAAU;AAAA,MACV,YAAYD;AAAA,MACZ,MAAMK,EAAcL,GAAgB,QAAWL,CAAO;AAAA,MACtD,OAAO;AAAA,MACP,cAAc;AAAA,IAAA,GAGVW,IAAeC,EAAmBT,GAAUJ,GAAYM,GAAgBD,CAAS,GACjFS,IAAUC,EAAW,EAAE,MAAMH,EAAAA,GAAgBP,CAAS;AAE5D,WAAKH,EAAIY,CAAO,MACdZ,EAAIY,CAAO,IAAI,CAAA,IAGZZ,EAAIY,CAAO,EAAE,SAASJ,CAAU,KACnCR,EAAIY,CAAO,EAAE,KAAKJ,CAAU,GAGvBR;AAAA,EACT;AAGA,QAAMQ,IAAyB;AAAA,IAC7B,OAAQF,EAAK,SAASA,EAAK;AAAA,IAC3B,SAASA,EAAK;AAAA,IACd,QAAQD;AAAA,IACR,UAAUC,EAAK;AAAA,IACf,YAAYF;AAAA,IACZ,MAAMK,EAAcL,GAAgBE,EAAK,SAASP,CAAO;AAAA,IACzD,OAAOe,EAAeV,GAAgBE,EAAK,SAASP,CAAO;AAAA,EAAA,GAKvDW,IAAeC,EAAmBT,GAAUJ,GAAYM,GAAgBD,CAAS,GAEjFS,IAAUC,EAAW,EAAE,MAAMH,EAAA,GAAgBP,CAAS;AAE5D,SAAKH,EAAIY,CAAO,MACdZ,EAAIY,CAAO,IAAI,CAAA,IAIZZ,EAAIY,CAAO,EAAE,SAASJ,CAAU,KACnCR,EAAIY,CAAO,EAAE,KAAKJ,CAAU,GAGvBR;AACT,GAAG,CAAA,CAAoB,KAAK,CAAA,GAGxBW,IAAqB,CACzBT,GACAa,GACAX,GACAD,MAIO,GAAGD,CAAQ,IAFAC,MAAc,OAAOC,IAAiBW,CAEzB,IADZZ,MAAc,OAAOY,IAAiBX,CACZ;"}
1
+ {"version":3,"file":"linksToTableData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/linksToTableData.ts"],"sourcesContent":["// converts the links array to the data shown in the table (object of link keys with list of link entity names)\n// we split the links by direction (in/out) and store them in an object\n\nimport type { LinkEntity } from '@shared/components/LinksManager/LinksManager'\nimport { getLinkKey } from '../buildTreeTableColumns'\nimport { EntityLink } from '@shared/api'\nimport { getEntityColor, getEntityIcon, IconAnatomy } from '@shared/util/iconUtils'\n\nexport type LinkId = string\nexport type LinkValue = LinkEntity[]\nexport type LinksTableData = Record<LinkId, LinkValue>\n\nexport const linksToTableData = (\n links: EntityLink[] | undefined,\n entityType: string,\n anatomy: IconAnatomy,\n): LinksTableData =>\n links?.reduce((acc, edge) => {\n const { linkType, direction, entityType: linkEntityType, id, node, isRestricted } = edge\n\n // Handle restricted links (node is null)\n if (isRestricted || !node) {\n const entityData: LinkEntity = {\n label: '',\n parents: [],\n linkId: id,\n entityId: '',\n entityType: linkEntityType,\n icon: getEntityIcon(linkEntityType, undefined, anatomy),\n color: undefined,\n isRestricted: true,\n }\n\n const linkTypeName = linkTypeToLinkName(linkType, entityType, linkEntityType, direction)\n const tableId = getLinkKey({ name: linkTypeName }, direction)\n\n if (!acc[tableId]) {\n acc[tableId] = []\n }\n\n if (!acc[tableId].includes(entityData)) {\n acc[tableId].push(entityData)\n }\n\n return acc\n }\n\n // Handle normal links\n const entityData: LinkEntity = {\n label: (node.label || node.name) as string,\n parents: node.parents,\n linkId: id,\n entityId: node.id as string,\n entityType: linkEntityType,\n icon: getEntityIcon(linkEntityType, node.subType, anatomy),\n color: getEntityColor(linkEntityType, node.subType, anatomy),\n }\n\n // we must build the entity link type name based on the direction and entity types\n // e.g. \"linkType|inEntityType|outEntityType\"\n const linkTypeName = linkTypeToLinkName(linkType, entityType, linkEntityType, direction)\n\n const tableId = getLinkKey({ name: linkTypeName }, direction)\n\n if (!acc[tableId]) {\n acc[tableId] = []\n }\n\n // add the entity name to the link type\n if (!acc[tableId].includes(entityData)) {\n acc[tableId].push(entityData)\n }\n\n return acc\n }, {} as LinksTableData) || {}\n\n// converts the link type + in/out entity types to a link name format {linkType}|in|out\nconst linkTypeToLinkName = (\n linkType: string,\n baseEntityType: string,\n linkEntityType: string,\n direction: 'in' | 'out' | string,\n): string => {\n const firstType = direction === 'in' ? linkEntityType : baseEntityType\n const secondType = direction === 'in' ? baseEntityType : linkEntityType\n return `${linkType}|${firstType}|${secondType}`\n}\n"],"names":["linksToTableData","links","entityType","anatomy","acc","edge","linkType","direction","linkEntityType","id","node","isRestricted","entityData","getEntityIcon","linkTypeName","linkTypeToLinkName","tableId","getLinkKey","getEntityColor","baseEntityType"],"mappings":";;AAYO,MAAMA,IAAmB,CAC9BC,GACAC,GACAC,MAEAF,GAAO,OAAO,CAACG,GAAKC,MAAS;AAC3B,QAAM,EAAE,UAAAC,GAAU,WAAAC,GAAW,YAAYC,GAAgB,IAAAC,GAAI,MAAAC,GAAM,cAAAC,MAAiBN;AAGpF,MAAIM,KAAgB,CAACD,GAAM;AACzB,UAAME,IAAyB;AAAA,MAC7B,OAAO;AAAA,MACP,SAAS,CAAA;AAAA,MACT,QAAQH;AAAA,MACR,UAAU;AAAA,MACV,YAAYD;AAAA,MACZ,MAAMK,EAAcL,GAAgB,QAAWL,CAAO;AAAA,MACtD,OAAO;AAAA,MACP,cAAc;AAAA,IAAA,GAGVW,IAAeC,EAAmBT,GAAUJ,GAAYM,GAAgBD,CAAS,GACjFS,IAAUC,EAAW,EAAE,MAAMH,EAAAA,GAAgBP,CAAS;AAE5D,WAAKH,EAAIY,CAAO,MACdZ,EAAIY,CAAO,IAAI,CAAA,IAGZZ,EAAIY,CAAO,EAAE,SAASJ,CAAU,KACnCR,EAAIY,CAAO,EAAE,KAAKJ,CAAU,GAGvBR;AAAA,EACT;AAGA,QAAMQ,IAAyB;AAAA,IAC7B,OAAQF,EAAK,SAASA,EAAK;AAAA,IAC3B,SAASA,EAAK;AAAA,IACd,QAAQD;AAAA,IACR,UAAUC,EAAK;AAAA,IACf,YAAYF;AAAA,IACZ,MAAMK,EAAcL,GAAgBE,EAAK,SAASP,CAAO;AAAA,IACzD,OAAOe,EAAeV,GAAgBE,EAAK,SAASP,CAAO;AAAA,EAAA,GAKvDW,IAAeC,EAAmBT,GAAUJ,GAAYM,GAAgBD,CAAS,GAEjFS,IAAUC,EAAW,EAAE,MAAMH,EAAA,GAAgBP,CAAS;AAE5D,SAAKH,EAAIY,CAAO,MACdZ,EAAIY,CAAO,IAAI,CAAA,IAIZZ,EAAIY,CAAO,EAAE,SAASJ,CAAU,KACnCR,EAAIY,CAAO,EAAE,KAAKJ,CAAU,GAGvBR;AACT,GAAG,CAAA,CAAoB,KAAK,CAAA,GAGxBW,IAAqB,CACzBT,GACAa,GACAX,GACAD,MAIO,GAAGD,CAAQ,IAFAC,MAAc,OAAOC,IAAiBW,CAEzB,IADZZ,MAAc,OAAOY,IAAiBX,CACZ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"loadingUtils.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/loadingUtils.ts"],"sourcesContent":["import { TableRow } from '../types/table'\nimport { FolderNodeMap } from '../types/table'\nimport { LoadingTasks } from '../types'\nimport { AttributeModel } from '@shared/api'\nimport { uuid } from 'short-uuid'\n\n/**\n * Generates an array of placeholder rows for loading state\n * @param attribs - Attribute models used to populate empty attribute fields\n * @param count - Number of loading rows to generate (default: 50)\n * @returns Array of TableRow objects with loading state\n */\nexport const generateLoadingRows = (count = 50, attrib = {}): TableRow[] => {\n // @ts-ignore\n return new Array(count).fill(0).map((_, index) => ({\n id: uuid(),\n isLoading: true,\n ...attrib,\n }))\n}\n\n/**\n * Generates an array of dummy attribute models for loading states\n * @param count - Number of dummy attributes to generate (default: 10)\n * @returns Array of AttributeModel objects\n */\nexport const generateDummyAttributes = (count = 10): AttributeModel[] => {\n return Array(count)\n .fill(null)\n .map((_, i): AttributeModel => {\n return {\n name: `loading-attribute${i}`,\n scope: ['folder', 'task'],\n data: {\n type: 'string',\n },\n position: i,\n }\n })\n}\n\n/**\n * Parameters for determineLoadingTaskFolders function\n */\nexport type DetermineLoadingTaskFoldersParams = {\n expandedFoldersTasks: { folderId: string | null }[]\n expandedParentIds: string[]\n foldersMap: FolderNodeMap\n}\n\n/**\n * Determines which folders are currently loading tasks\n * @param params - Object containing parameters for determining loading folders\n * @returns Array of folder IDs that are in loading state\n */\nexport const determineLoadingTaskFolders = ({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n}: DetermineLoadingTaskFoldersParams): LoadingTasks => {\n // find the folderIds that are being fetched (not the ones that are already loaded)\n const folderIds = expandedFoldersTasks.map((task) => task.folderId)\n const expandedParentIdsThatHaveTasks = expandedParentIds.filter(\n (id) => foldersMap.get(id)?.hasTasks,\n )\n const folderIdsSet = new Set(folderIds)\n const loadingParentIds = new Set<string>()\n for (const folderId of expandedParentIdsThatHaveTasks) {\n if (!folderIdsSet.has(folderId)) {\n loadingParentIds.add(folderId)\n }\n }\n\n const loadingTasks: LoadingTasks = {}\n for (const folderId of loadingParentIds) {\n // find the folder by id\n const folder = foldersMap.get(folderId)\n if (folder) {\n loadingTasks[folderId] = folder.taskNames?.length || 0\n }\n }\n\n return loadingTasks\n}\n"],"names":["generateLoadingRows","count","attrib","_","index","uuid","generateDummyAttributes","i","determineLoadingTaskFolders","expandedFoldersTasks","expandedParentIds","foldersMap","folderIds","task","expandedParentIdsThatHaveTasks","id","folderIdsSet","loadingParentIds","folderId","loadingTasks","folder"],"mappings":"8GAYaA,EAAsB,CAACC,EAAQ,GAAIC,EAAS,CAAA,IAEhD,IAAI,MAAMD,CAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAACE,EAAGC,KAAW,CACjD,GAAIC,EAAAA,KAAA,EACJ,UAAW,GACX,GAAGH,CAAA,EACH,EAQSI,EAA0B,CAACL,EAAQ,KACvC,MAAMA,CAAK,EACf,KAAK,IAAI,EACT,IAAI,CAACE,EAAGI,KACA,CACL,KAAM,oBAAoBA,CAAC,GAC3B,MAAO,CAAC,SAAU,MAAM,EACxB,KAAM,CACJ,KAAM,QAAA,EAER,SAAUA,CAAA,EAEb,EAiBQC,EAA8B,CAAC,CAC1C,qBAAAC,EACA,kBAAAC,EACA,WAAAC,CACF,IAAuD,CAErD,MAAMC,EAAYH,EAAqB,IAAKI,GAASA,EAAK,QAAQ,EAC5DC,EAAiCJ,EAAkB,OACtDK,GAAOJ,EAAW,IAAII,CAAE,GAAG,QAAA,EAExBC,EAAe,IAAI,IAAIJ,CAAS,EAChCK,MAAuB,IAC7B,UAAWC,KAAYJ,EAChBE,EAAa,IAAIE,CAAQ,GAC5BD,EAAiB,IAAIC,CAAQ,EAIjC,MAAMC,EAA6B,CAAA,EACnC,UAAWD,KAAYD,EAAkB,CAEvC,MAAMG,EAAST,EAAW,IAAIO,CAAQ,EAClCE,IACFD,EAAaD,CAAQ,EAAIE,EAAO,WAAW,QAAU,EAEzD,CAEA,OAAOD,CACT"}
1
+ {"version":3,"file":"loadingUtils.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/loadingUtils.ts"],"sourcesContent":["import { TableRow } from '../types/table'\nimport { FolderNodeMap } from '../types/table'\nimport { LoadingTasks } from '../types'\nimport type { AttributeModel } from '@shared/api'\nimport { uuid } from 'short-uuid'\n\n/**\n * Generates an array of placeholder rows for loading state\n * @param attribs - Attribute models used to populate empty attribute fields\n * @param count - Number of loading rows to generate (default: 50)\n * @returns Array of TableRow objects with loading state\n */\nexport const generateLoadingRows = (count = 50, attrib = {}): TableRow[] => {\n // @ts-ignore\n return new Array(count).fill(0).map((_, index) => ({\n id: uuid(),\n isLoading: true,\n ...attrib,\n }))\n}\n\n/**\n * Generates an array of dummy attribute models for loading states\n * @param count - Number of dummy attributes to generate (default: 10)\n * @returns Array of AttributeModel objects\n */\nexport const generateDummyAttributes = (count = 10): AttributeModel[] => {\n return Array(count)\n .fill(null)\n .map((_, i): AttributeModel => {\n return {\n name: `loading-attribute${i}`,\n scope: ['folder', 'task'],\n data: {\n type: 'string',\n },\n position: i,\n }\n })\n}\n\n/**\n * Parameters for determineLoadingTaskFolders function\n */\nexport type DetermineLoadingTaskFoldersParams = {\n expandedFoldersTasks: { folderId: string | null }[]\n expandedParentIds: string[]\n foldersMap: FolderNodeMap\n}\n\n/**\n * Determines which folders are currently loading tasks\n * @param params - Object containing parameters for determining loading folders\n * @returns Array of folder IDs that are in loading state\n */\nexport const determineLoadingTaskFolders = ({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n}: DetermineLoadingTaskFoldersParams): LoadingTasks => {\n // find the folderIds that are being fetched (not the ones that are already loaded)\n const folderIds = expandedFoldersTasks.map((task) => task.folderId)\n const expandedParentIdsThatHaveTasks = expandedParentIds.filter(\n (id) => foldersMap.get(id)?.hasTasks,\n )\n const folderIdsSet = new Set(folderIds)\n const loadingParentIds = new Set<string>()\n for (const folderId of expandedParentIdsThatHaveTasks) {\n if (!folderIdsSet.has(folderId)) {\n loadingParentIds.add(folderId)\n }\n }\n\n const loadingTasks: LoadingTasks = {}\n for (const folderId of loadingParentIds) {\n // find the folder by id\n const folder = foldersMap.get(folderId)\n if (folder) {\n loadingTasks[folderId] = folder.taskNames?.length || 0\n }\n }\n\n return loadingTasks\n}\n"],"names":["generateLoadingRows","count","attrib","_","index","uuid","generateDummyAttributes","i","determineLoadingTaskFolders","expandedFoldersTasks","expandedParentIds","foldersMap","folderIds","task","expandedParentIdsThatHaveTasks","id","folderIdsSet","loadingParentIds","folderId","loadingTasks","folder"],"mappings":"8GAYaA,EAAsB,CAACC,EAAQ,GAAIC,EAAS,CAAA,IAEhD,IAAI,MAAMD,CAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAACE,EAAGC,KAAW,CACjD,GAAIC,EAAAA,KAAA,EACJ,UAAW,GACX,GAAGH,CAAA,EACH,EAQSI,EAA0B,CAACL,EAAQ,KACvC,MAAMA,CAAK,EACf,KAAK,IAAI,EACT,IAAI,CAACE,EAAGI,KACA,CACL,KAAM,oBAAoBA,CAAC,GAC3B,MAAO,CAAC,SAAU,MAAM,EACxB,KAAM,CACJ,KAAM,QAAA,EAER,SAAUA,CAAA,EAEb,EAiBQC,EAA8B,CAAC,CAC1C,qBAAAC,EACA,kBAAAC,EACA,WAAAC,CACF,IAAuD,CAErD,MAAMC,EAAYH,EAAqB,IAAKI,GAASA,EAAK,QAAQ,EAC5DC,EAAiCJ,EAAkB,OACtDK,GAAOJ,EAAW,IAAII,CAAE,GAAG,QAAA,EAExBC,EAAe,IAAI,IAAIJ,CAAS,EAChCK,MAAuB,IAC7B,UAAWC,KAAYJ,EAChBE,EAAa,IAAIE,CAAQ,GAC5BD,EAAiB,IAAIC,CAAQ,EAIjC,MAAMC,EAA6B,CAAA,EACnC,UAAWD,KAAYD,EAAkB,CAEvC,MAAMG,EAAST,EAAW,IAAIO,CAAQ,EAClCE,IACFD,EAAaD,CAAQ,EAAIE,EAAO,WAAW,QAAU,EAEzD,CAEA,OAAOD,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"loadingUtils.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/loadingUtils.ts"],"sourcesContent":["import { TableRow } from '../types/table'\nimport { FolderNodeMap } from '../types/table'\nimport { LoadingTasks } from '../types'\nimport { AttributeModel } from '@shared/api'\nimport { uuid } from 'short-uuid'\n\n/**\n * Generates an array of placeholder rows for loading state\n * @param attribs - Attribute models used to populate empty attribute fields\n * @param count - Number of loading rows to generate (default: 50)\n * @returns Array of TableRow objects with loading state\n */\nexport const generateLoadingRows = (count = 50, attrib = {}): TableRow[] => {\n // @ts-ignore\n return new Array(count).fill(0).map((_, index) => ({\n id: uuid(),\n isLoading: true,\n ...attrib,\n }))\n}\n\n/**\n * Generates an array of dummy attribute models for loading states\n * @param count - Number of dummy attributes to generate (default: 10)\n * @returns Array of AttributeModel objects\n */\nexport const generateDummyAttributes = (count = 10): AttributeModel[] => {\n return Array(count)\n .fill(null)\n .map((_, i): AttributeModel => {\n return {\n name: `loading-attribute${i}`,\n scope: ['folder', 'task'],\n data: {\n type: 'string',\n },\n position: i,\n }\n })\n}\n\n/**\n * Parameters for determineLoadingTaskFolders function\n */\nexport type DetermineLoadingTaskFoldersParams = {\n expandedFoldersTasks: { folderId: string | null }[]\n expandedParentIds: string[]\n foldersMap: FolderNodeMap\n}\n\n/**\n * Determines which folders are currently loading tasks\n * @param params - Object containing parameters for determining loading folders\n * @returns Array of folder IDs that are in loading state\n */\nexport const determineLoadingTaskFolders = ({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n}: DetermineLoadingTaskFoldersParams): LoadingTasks => {\n // find the folderIds that are being fetched (not the ones that are already loaded)\n const folderIds = expandedFoldersTasks.map((task) => task.folderId)\n const expandedParentIdsThatHaveTasks = expandedParentIds.filter(\n (id) => foldersMap.get(id)?.hasTasks,\n )\n const folderIdsSet = new Set(folderIds)\n const loadingParentIds = new Set<string>()\n for (const folderId of expandedParentIdsThatHaveTasks) {\n if (!folderIdsSet.has(folderId)) {\n loadingParentIds.add(folderId)\n }\n }\n\n const loadingTasks: LoadingTasks = {}\n for (const folderId of loadingParentIds) {\n // find the folder by id\n const folder = foldersMap.get(folderId)\n if (folder) {\n loadingTasks[folderId] = folder.taskNames?.length || 0\n }\n }\n\n return loadingTasks\n}\n"],"names":["generateLoadingRows","count","attrib","_","index","uuid","generateDummyAttributes","i","determineLoadingTaskFolders","expandedFoldersTasks","expandedParentIds","foldersMap","folderIds","task","expandedParentIdsThatHaveTasks","id","folderIdsSet","loadingParentIds","folderId","loadingTasks","folder"],"mappings":";AAYO,MAAMA,IAAsB,CAACC,IAAQ,IAAIC,IAAS,CAAA,MAEhD,IAAI,MAAMD,CAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAACE,GAAGC,OAAW;AAAA,EACjD,IAAIC,EAAA;AAAA,EACJ,WAAW;AAAA,EACX,GAAGH;AAAA,EACH,GAQSI,IAA0B,CAACL,IAAQ,OACvC,MAAMA,CAAK,EACf,KAAK,IAAI,EACT,IAAI,CAACE,GAAGI,OACA;AAAA,EACL,MAAM,oBAAoBA,CAAC;AAAA,EAC3B,OAAO,CAAC,UAAU,MAAM;AAAA,EACxB,MAAM;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,UAAUA;AAAA,EAEb,GAiBQC,IAA8B,CAAC;AAAA,EAC1C,sBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,YAAAC;AACF,MAAuD;AAErD,QAAMC,IAAYH,EAAqB,IAAI,CAACI,MAASA,EAAK,QAAQ,GAC5DC,IAAiCJ,EAAkB;AAAA,IACvD,CAACK,MAAOJ,EAAW,IAAII,CAAE,GAAG;AAAA,EAAA,GAExBC,IAAe,IAAI,IAAIJ,CAAS,GAChCK,wBAAuB,IAAA;AAC7B,aAAWC,KAAYJ;AACrB,IAAKE,EAAa,IAAIE,CAAQ,KAC5BD,EAAiB,IAAIC,CAAQ;AAIjC,QAAMC,IAA6B,CAAA;AACnC,aAAWD,KAAYD,GAAkB;AAEvC,UAAMG,IAAST,EAAW,IAAIO,CAAQ;AACtC,IAAIE,MACFD,EAAaD,CAAQ,IAAIE,EAAO,WAAW,UAAU;AAAA,EAEzD;AAEA,SAAOD;AACT;"}
1
+ {"version":3,"file":"loadingUtils.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/loadingUtils.ts"],"sourcesContent":["import { TableRow } from '../types/table'\nimport { FolderNodeMap } from '../types/table'\nimport { LoadingTasks } from '../types'\nimport type { AttributeModel } from '@shared/api'\nimport { uuid } from 'short-uuid'\n\n/**\n * Generates an array of placeholder rows for loading state\n * @param attribs - Attribute models used to populate empty attribute fields\n * @param count - Number of loading rows to generate (default: 50)\n * @returns Array of TableRow objects with loading state\n */\nexport const generateLoadingRows = (count = 50, attrib = {}): TableRow[] => {\n // @ts-ignore\n return new Array(count).fill(0).map((_, index) => ({\n id: uuid(),\n isLoading: true,\n ...attrib,\n }))\n}\n\n/**\n * Generates an array of dummy attribute models for loading states\n * @param count - Number of dummy attributes to generate (default: 10)\n * @returns Array of AttributeModel objects\n */\nexport const generateDummyAttributes = (count = 10): AttributeModel[] => {\n return Array(count)\n .fill(null)\n .map((_, i): AttributeModel => {\n return {\n name: `loading-attribute${i}`,\n scope: ['folder', 'task'],\n data: {\n type: 'string',\n },\n position: i,\n }\n })\n}\n\n/**\n * Parameters for determineLoadingTaskFolders function\n */\nexport type DetermineLoadingTaskFoldersParams = {\n expandedFoldersTasks: { folderId: string | null }[]\n expandedParentIds: string[]\n foldersMap: FolderNodeMap\n}\n\n/**\n * Determines which folders are currently loading tasks\n * @param params - Object containing parameters for determining loading folders\n * @returns Array of folder IDs that are in loading state\n */\nexport const determineLoadingTaskFolders = ({\n expandedFoldersTasks,\n expandedParentIds,\n foldersMap,\n}: DetermineLoadingTaskFoldersParams): LoadingTasks => {\n // find the folderIds that are being fetched (not the ones that are already loaded)\n const folderIds = expandedFoldersTasks.map((task) => task.folderId)\n const expandedParentIdsThatHaveTasks = expandedParentIds.filter(\n (id) => foldersMap.get(id)?.hasTasks,\n )\n const folderIdsSet = new Set(folderIds)\n const loadingParentIds = new Set<string>()\n for (const folderId of expandedParentIdsThatHaveTasks) {\n if (!folderIdsSet.has(folderId)) {\n loadingParentIds.add(folderId)\n }\n }\n\n const loadingTasks: LoadingTasks = {}\n for (const folderId of loadingParentIds) {\n // find the folder by id\n const folder = foldersMap.get(folderId)\n if (folder) {\n loadingTasks[folderId] = folder.taskNames?.length || 0\n }\n }\n\n return loadingTasks\n}\n"],"names":["generateLoadingRows","count","attrib","_","index","uuid","generateDummyAttributes","i","determineLoadingTaskFolders","expandedFoldersTasks","expandedParentIds","foldersMap","folderIds","task","expandedParentIdsThatHaveTasks","id","folderIdsSet","loadingParentIds","folderId","loadingTasks","folder"],"mappings":";AAYO,MAAMA,IAAsB,CAACC,IAAQ,IAAIC,IAAS,CAAA,MAEhD,IAAI,MAAMD,CAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAACE,GAAGC,OAAW;AAAA,EACjD,IAAIC,EAAA;AAAA,EACJ,WAAW;AAAA,EACX,GAAGH;AAAA,EACH,GAQSI,IAA0B,CAACL,IAAQ,OACvC,MAAMA,CAAK,EACf,KAAK,IAAI,EACT,IAAI,CAACE,GAAGI,OACA;AAAA,EACL,MAAM,oBAAoBA,CAAC;AAAA,EAC3B,OAAO,CAAC,UAAU,MAAM;AAAA,EACxB,MAAM;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,UAAUA;AAAA,EAEb,GAiBQC,IAA8B,CAAC;AAAA,EAC1C,sBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,YAAAC;AACF,MAAuD;AAErD,QAAMC,IAAYH,EAAqB,IAAI,CAACI,MAASA,EAAK,QAAQ,GAC5DC,IAAiCJ,EAAkB;AAAA,IACvD,CAACK,MAAOJ,EAAW,IAAII,CAAE,GAAG;AAAA,EAAA,GAExBC,IAAe,IAAI,IAAIJ,CAAS,GAChCK,wBAAuB,IAAA;AAC7B,aAAWC,KAAYJ;AACrB,IAAKE,EAAa,IAAIE,CAAQ,KAC5BD,EAAiB,IAAIC,CAAQ;AAIjC,QAAMC,IAA6B,CAAA;AACnC,aAAWD,KAAYD,GAAkB;AAEvC,UAAMG,IAAST,EAAW,IAAIO,CAAQ;AACtC,IAAIE,MACFD,EAAaD,CAAQ,IAAIE,EAAO,WAAW,UAAU;AAAA,EAEzD;AAEA,SAAOD;AACT;"}
@@ -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 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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"}
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 type { 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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"}