@ynput/ayon-frontend-shared 0.3.16 → 0.3.17

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 (414) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +28 -24
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/Views.cjs.js +1 -1
  5. package/dist/Views.cjs.js.map +1 -1
  6. package/dist/Views.es.js +36 -41
  7. package/dist/Views.es.js.map +1 -1
  8. package/dist/_virtual/index.cjs.js +1 -1
  9. package/dist/_virtual/index.cjs2.js +1 -1
  10. package/dist/_virtual/index.cjs3.js +1 -1
  11. package/dist/_virtual/index.cjs4.js +1 -1
  12. package/dist/_virtual/index.cjs5.js +1 -1
  13. package/dist/_virtual/index.cjs6.js +1 -1
  14. package/dist/_virtual/index.cjs8.js +1 -1
  15. package/dist/_virtual/index.es.js +4 -5
  16. package/dist/_virtual/index.es2.js +6 -2
  17. package/dist/_virtual/index.es2.js.map +1 -1
  18. package/dist/_virtual/index.es3.js +2 -5
  19. package/dist/_virtual/index.es3.js.map +1 -1
  20. package/dist/_virtual/index.es4.js +5 -2
  21. package/dist/_virtual/index.es4.js.map +1 -1
  22. package/dist/_virtual/index.es5.js +2 -5
  23. package/dist/_virtual/index.es5.js.map +1 -1
  24. package/dist/_virtual/index.es6.js +5 -2
  25. package/dist/_virtual/index.es6.js.map +1 -1
  26. package/dist/_virtual/index.es7.js +2 -2
  27. package/dist/_virtual/index.es8.js +2 -5
  28. package/dist/_virtual/index.es8.js.map +1 -1
  29. package/dist/index.cjs.js +1 -1
  30. package/dist/index.es.js +15 -11
  31. package/dist/index.es.js.map +1 -1
  32. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  33. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  34. package/dist/node_modules/react-use-websocket/dist/index.cjs.js +1 -1
  35. package/dist/node_modules/react-use-websocket/dist/index.es.js +1 -1
  36. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  37. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js.map +1 -1
  38. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  39. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  40. package/dist/node_modules/remove-accents/index.es.js +1 -1
  41. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  42. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  43. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  44. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  45. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  46. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  47. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  48. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  49. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  50. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  51. package/dist/shared/src/api/generated/access.cjs.js.map +1 -1
  52. package/dist/shared/src/api/generated/access.es.js.map +1 -1
  53. package/dist/shared/src/api/generated/graphql.cjs.js +5 -3
  54. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  55. package/dist/shared/src/api/generated/graphql.es.js +2 -0
  56. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  57. package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
  58. package/dist/shared/src/api/generated/users.es.js.map +1 -1
  59. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +13 -1
  60. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  61. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +72 -25
  62. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  63. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  64. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  65. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +25 -21
  66. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  67. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  68. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  69. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +14 -14
  70. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  71. package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js +1 -1
  72. package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js.map +1 -1
  73. package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js +23 -23
  74. package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js.map +1 -1
  75. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  76. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  77. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +71 -36
  78. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  79. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  80. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  81. package/dist/shared/src/components/LinksManager/LinksManager.es.js +120 -89
  82. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  83. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js +52 -12
  84. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -1
  85. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +63 -21
  86. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js.map +1 -1
  87. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  88. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  89. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +8 -4
  90. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  91. package/dist/shared/src/components/LinksManager/utils/groupLinks.cjs.js +2 -0
  92. package/dist/shared/src/components/LinksManager/utils/groupLinks.cjs.js.map +1 -0
  93. package/dist/shared/src/components/LinksManager/utils/groupLinks.es.js +18 -0
  94. package/dist/shared/src/components/LinksManager/utils/groupLinks.es.js.map +1 -0
  95. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  96. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  97. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +8 -4
  98. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  99. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  100. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  101. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +10 -6
  102. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  103. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  104. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  105. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +8 -4
  106. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  107. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  108. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  109. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +8 -4
  110. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  111. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  112. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  113. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +8 -4
  114. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  115. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  116. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  117. package/dist/shared/src/components/RenameForm/RenameForm.es.js +9 -5
  118. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  119. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  120. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  121. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +139 -128
  122. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  123. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  124. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  125. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +90 -81
  126. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  127. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  128. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  129. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +8 -4
  130. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  131. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +1 -1
  132. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -1
  133. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +9 -5
  134. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js.map +1 -1
  135. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  136. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  137. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +8 -4
  138. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  139. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  140. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  141. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +8 -4
  142. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  143. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  144. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  145. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +8 -4
  146. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  147. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  148. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  149. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +8 -4
  150. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  151. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  152. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  153. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +20 -16
  154. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  155. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  156. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  157. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +8 -4
  158. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  159. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  160. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  161. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +9 -5
  162. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  163. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  164. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  165. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +12 -8
  166. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  167. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  168. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +22 -18
  170. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  171. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  172. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  173. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +8 -4
  174. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  175. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  176. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +8 -4
  178. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  179. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  180. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  181. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +57 -45
  182. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  183. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  184. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  185. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +8 -4
  186. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  187. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  188. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  189. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +8 -4
  190. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  191. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  192. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  193. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +8 -4
  194. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  195. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  196. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  197. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.cjs.js +2 -0
  198. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.cjs.js.map +1 -0
  199. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.es.js +70 -0
  200. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.es.js.map +1 -0
  201. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  202. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/Feed/Feed.es.js +247 -151
  204. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  205. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  206. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -4
  208. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  209. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  210. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +6 -2
  212. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  213. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js +1 -0
  214. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.es.js +1 -0
  216. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.es.js.map +1 -1
  217. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  218. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +9 -5
  220. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  221. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  222. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +8 -4
  224. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  225. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js +1 -1
  226. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js +3 -3
  228. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js.map +1 -1
  229. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  230. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +8 -4
  232. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  233. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  234. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  235. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +59 -55
  236. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  238. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +9 -5
  240. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  242. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +8 -4
  244. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  246. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  247. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +6 -2
  248. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  250. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +8 -4
  252. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  254. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  255. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +8 -4
  256. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  257. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +16 -16
  260. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -1
  261. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  263. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +6 -2
  264. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  265. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +9 -5
  268. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  269. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  270. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +6 -2
  272. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  274. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +8 -4
  276. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  277. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  278. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  279. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +8 -4
  280. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  281. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  282. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  283. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +6 -2
  284. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  285. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  286. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  287. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +6 -2
  288. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  289. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  290. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  291. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +6 -2
  292. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  293. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  294. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  295. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +8 -4
  296. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  297. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  298. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  299. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +8 -4
  300. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  301. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  302. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  303. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +6 -2
  304. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  306. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  307. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +6 -2
  308. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  310. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  311. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +6 -2
  312. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +17 -13
  316. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  318. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  319. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +7 -3
  320. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  321. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  322. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +60 -48
  324. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  325. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  326. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +6 -2
  328. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  329. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  330. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +8 -4
  332. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  333. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  334. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +24 -24
  335. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  336. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  337. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +8 -4
  338. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  339. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  340. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +8 -4
  342. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  343. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  345. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  346. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +8 -4
  348. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  349. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  350. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  351. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +24 -23
  352. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  353. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  354. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +83 -88
  356. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  357. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  358. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +1 -1
  360. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  361. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  362. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +56 -53
  364. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  365. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
  366. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +23 -144
  368. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  369. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.cjs.js.map +1 -1
  370. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.es.js.map +1 -1
  371. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  372. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  373. package/dist/shared/src/containers/Views/types.cjs.js +2 -0
  374. package/dist/shared/src/containers/Views/types.cjs.js.map +1 -0
  375. package/dist/shared/src/containers/Views/types.es.js +15 -0
  376. package/dist/shared/src/containers/Views/types.es.js.map +1 -0
  377. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js.map +1 -1
  378. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js.map +1 -1
  379. package/dist/shared/src/containers/Views/utils/isViewStudioScope.cjs.js +2 -0
  380. package/dist/shared/src/containers/Views/utils/isViewStudioScope.cjs.js.map +1 -0
  381. package/dist/shared/src/containers/Views/utils/isViewStudioScope.es.js +5 -0
  382. package/dist/shared/src/containers/Views/utils/isViewStudioScope.es.js.map +1 -0
  383. package/dist/shared/src/containers/Views/utils/portalUtils.cjs.js.map +1 -1
  384. package/dist/shared/src/containers/Views/utils/portalUtils.es.js.map +1 -1
  385. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  386. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  387. package/dist/shared/src/context/DetailsPanelContext.es.js +76 -77
  388. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  389. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  390. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  391. package/dist/shared/src/context/WebsocketContext.es.js +9 -5
  392. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  393. package/dist/types/api/generated/access.d.ts +6 -0
  394. package/dist/types/api/generated/graphql.d.ts +8 -4
  395. package/dist/types/api/generated/users.d.ts +6 -1
  396. package/dist/types/components/LinksManager/LinkManagerItem.d.ts +2 -0
  397. package/dist/types/components/LinksManager/LinksManager.styled.d.ts +6 -0
  398. package/dist/types/components/LinksManager/utils/groupLinks.d.ts +14 -0
  399. package/dist/types/components/ReviewablesList/ReviewablesUpload.d.ts +1 -0
  400. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
  401. package/dist/types/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.d.ts +11 -0
  402. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +1 -0
  403. package/dist/types/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.d.ts +2 -1
  404. package/dist/types/containers/Views/ViewsMenuContainer/ViewsMenuContainer.d.ts +2 -2
  405. package/dist/types/containers/Views/context/ViewsContext.d.ts +3 -2
  406. package/dist/types/containers/Views/hooks/useBaseViewMutations.d.ts +1 -1
  407. package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +2 -3
  408. package/dist/types/containers/Views/hooks/useSaveViewFromCurrent.d.ts +2 -1
  409. package/dist/types/containers/Views/hooks/useViewSettingsChanged.d.ts +1 -1
  410. package/dist/types/containers/Views/index.d.ts +1 -7
  411. package/dist/types/containers/Views/types.d.ts +10 -0
  412. package/dist/types/containers/Views/utils/isViewStudioScope.d.ts +2 -0
  413. package/dist/types/containers/Views/utils/portalUtils.d.ts +1 -1
  414. package/package.json +1 -1
@@ -4,5 +4,5 @@
4
4
  overflow: hidden;
5
5
  display: flex;
6
6
  flex-direction: column;
7
- `,I=({isEditing:d,anchorId:A,containerClassName:T="table-container",onClose:u,children:H})=>{const h=i.useRef(null),[c,w]=i.useState(null),[x,v]=i.useState(void 0),[b,y]=i.useState(void 0),o=document.getElementById(A),r=o?.closest(`.${T}`),L=()=>{if(!d)return;if(!o||!r){w({top:window.innerHeight/2,left:window.innerWidth/2,showAbove:!1}),v(void 0),y(void 0);return}const e=o.getBoundingClientRect(),n=r.getBoundingClientRect(),t=n.right,W=window.innerWidth-n.right,s=24,k=250,a=400,P=600,R=window.innerWidth,D=window.innerHeight,E=t-e.left;let l={},g=a;E<a?e.right-s>=a?l.right=Math.max(R-e.right,s+W):(l.left=s,g=R-2*s):(l.left=e.left,g=Math.max(a,E)),v(g);const f=D-e.bottom-s,S=e.top-s;let p,O=!1,m;f<k&&S>f?(O=!0,p=e.top-4,m=S-4):(p=e.bottom+4,m=f-4),y(Math.min(Math.max(200,m),P)),w({top:p,...l,showAbove:O})};i.useLayoutEffect(()=>{L()},[d,o]),i.useLayoutEffect(()=>{if(r){const e=new ResizeObserver(()=>{L()});return e.observe(r),()=>e.disconnect()}},[r,o]),i.useLayoutEffect(()=>{const e=n=>{const t=n.target;h.current&&!h.current.contains(t)&&o&&!o.contains(t)&&!t.closest(".entity-picker-dialog")&&!t.querySelector(".entity-picker-dialog")&&!t.closest("dialog")&&!t.closest(".dropdown")&&!t.closest(".p-dialog-mask")&&!t.closest(".p-datepicker")&&!t.closest("."+C)&&u?.()};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[u,o]);const M=e=>{const n=e.target;n.tagName==="INPUT"||n.tagName==="TEXTAREA"||n.isContentEditable||e.key==="Escape"&&(e.stopPropagation(),u?.())};return d?q.createPortal(B.jsxRuntimeExports.jsx(j,{ref:h,style:{top:c?.top,left:c?.left,right:c?.right,...c?.showAbove&&{transform:"translateY(-100%)"},visibility:c?"visible":"hidden",maxWidth:x?`${x}px`:"none",maxHeight:b?`${b}px`:"none"},className:"links-widget-popup",onKeyDown:M,children:H}),document.body):null};exports.BLOCK_DIALOG_CLOSE_CLASS=C;exports.CellEditingDialog=I;
7
+ `,I=({isEditing:d,anchorId:T,containerClassName:A="table-container",onClose:u,children:H})=>{const h=i.useRef(null),[c,v]=i.useState(null),[w,x]=i.useState(void 0),[b,y]=i.useState(void 0),o=document.getElementById(T),r=o?.closest(`.${A}`),E=()=>{if(!d)return;if(!o||!r){v({top:window.innerHeight/2,left:window.innerWidth/2,showAbove:!1}),x(void 0),y(void 0);return}const e=o.getBoundingClientRect(),n=r.getBoundingClientRect(),t=n.right,W=window.innerWidth-n.right,s=24,k=250,a=400,P=600,L=window.innerWidth,D=window.innerHeight,R=t-e.left;let l={},g=a;R<a?e.right-s>=a?l.right=Math.max(L-e.right,s+W):(l.left=s,g=L-2*s):(l.left=e.left,g=Math.max(a,R)),x(g);const f=D-e.bottom-s,S=e.top-s;let p,O=!1,m;f<k&&S>f?(O=!0,p=e.top-4,m=S-4):(p=e.bottom+4,m=f-4),y(Math.min(Math.max(200,m),P)),v({top:p,...l,showAbove:O})};i.useLayoutEffect(()=>{E()},[d,o]),i.useLayoutEffect(()=>{if(r){const e=new ResizeObserver(()=>{E()});return e.observe(r),()=>e.disconnect()}},[r,o]),i.useLayoutEffect(()=>{const e=n=>{const t=n.target;h.current&&!h.current.contains(t)&&o&&!o.contains(t)&&!t.closest(".entity-picker-dialog")&&!t.querySelector(".entity-picker-dialog")&&!t.closest("dialog")&&!t.closest(".dropdown")&&!t.closest(".p-dialog-mask")&&!t.closest(".p-datepicker")&&!t.closest("."+C)&&(document.activeElement instanceof HTMLElement&&document.activeElement.blur(),u?.())};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[u,o]);const M=e=>{const n=e.target;n.tagName==="INPUT"||n.tagName==="TEXTAREA"||n.isContentEditable||e.key==="Escape"&&(e.stopPropagation(),u?.())};return d?q.createPortal(B.jsxRuntimeExports.jsx(j,{ref:h,style:{top:c?.top,left:c?.left,right:c?.right,...c?.showAbove&&{transform:"translateY(-100%)"},visibility:c?"visible":"hidden",maxWidth:w?`${w}px`:"none",maxHeight:b?`${b}px`:"none"},className:"links-widget-popup",onKeyDown:M,children:H}),document.body):null};exports.BLOCK_DIALOG_CLOSE_CLASS=C;exports.CellEditingDialog=I;
8
8
  //# sourceMappingURL=CellEditingDialog.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CellEditingDialog.cjs.js","sources":["../../../../../src/components/LinksManager/CellEditingDialog.tsx"],"sourcesContent":["import { FC, useRef, useLayoutEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { createPortal } from 'react-dom'\n\nexport const BLOCK_DIALOG_CLOSE_CLASS = 'block-dialog-close'\n\nconst StyledPopUp = styled.div`\n position: fixed;\n z-index: 310;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n`\n\ntype Position = {\n top: number\n left?: number\n right?: number\n showAbove?: boolean\n}\n\nexport interface LinksManagerDialogProps {\n isEditing: boolean\n anchorId: string\n containerClassName?: string\n onClose?: () => void\n children?: React.ReactNode\n}\n\nexport const CellEditingDialog: FC<LinksManagerDialogProps> = ({\n isEditing,\n anchorId,\n containerClassName = 'table-container',\n onClose,\n children,\n}) => {\n const popupRef = useRef<HTMLDivElement>(null)\n\n const [position, setPosition] = useState<Position | null>(null)\n const [maxWidth, setMaxWidth] = useState<number | undefined>(undefined)\n const [maxHeight, setMaxHeight] = useState<number | undefined>(undefined)\n\n // get the cell element based on the cellId\n const anchorElement = document.getElementById(anchorId)\n const tableContainer = anchorElement?.closest(`.${containerClassName}`)\n\n const updatePosition = () => {\n if (!isEditing) return\n\n if (!anchorElement || !tableContainer) {\n // if the anchor element is not found, position in the center of the screen\n setPosition({\n top: window.innerHeight / 2,\n left: window.innerWidth / 2,\n showAbove: false,\n })\n setMaxWidth(undefined)\n setMaxHeight(undefined)\n return\n }\n\n const cellRect = anchorElement.getBoundingClientRect()\n\n const containerRect = tableContainer.getBoundingClientRect()\n const containerRight = containerRect.right\n const containerToRightOfScreen = window.innerWidth - containerRect.right\n\n const screenPadding = 24\n const minHeightThreshold = 250\n const minWidthThreshold = 400\n const maxMaxHeight = 600\n const screenWidth = window.innerWidth\n const screenHeight = window.innerHeight\n\n // Check if we have enough space to the right of the cell\n const spaceToRight = containerRight - cellRect.left\n let position: { left?: number; right?: number } = {}\n let dialogWidth = minWidthThreshold\n\n if (spaceToRight < minWidthThreshold) {\n // Not enough space to the right, anchor to the right side of the cell\n const spaceToLeft = cellRect.right - screenPadding\n if (spaceToLeft >= minWidthThreshold) {\n // Anchor to the right side of the cell\n position.right = Math.max(\n screenWidth - cellRect.right,\n screenPadding + containerToRightOfScreen,\n )\n } else {\n // Not enough space on either side, center and use available width\n position.left = screenPadding\n dialogWidth = screenWidth - 2 * screenPadding\n }\n } else {\n // Enough space to the right, position normally\n position.left = cellRect.left\n dialogWidth = Math.max(minWidthThreshold, spaceToRight)\n }\n\n setMaxWidth(dialogWidth)\n\n const spaceBelow = screenHeight - cellRect.bottom - screenPadding\n const spaceAbove = cellRect.top - screenPadding\n let top: number\n let showAbove = false\n let availableHeight: number\n\n if (spaceBelow < minHeightThreshold && spaceAbove > spaceBelow) {\n showAbove = true\n top = cellRect.top - 4\n availableHeight = spaceAbove - 4\n } else {\n top = cellRect.bottom + 4\n availableHeight = spaceBelow - 4\n }\n\n // Set max height to prevent dialog from going off screen\n setMaxHeight(Math.min(Math.max(200, availableHeight), maxMaxHeight)) // Minimum 200px height\n\n setPosition({\n top,\n ...position,\n showAbove,\n })\n }\n\n useLayoutEffect(() => {\n updatePosition()\n }, [isEditing, anchorElement])\n\n // watch for when the tableContainer width changes\n useLayoutEffect(() => {\n if (tableContainer) {\n const resizeObserver = new ResizeObserver(() => {\n updatePosition()\n })\n resizeObserver.observe(tableContainer)\n return () => resizeObserver.disconnect()\n }\n }, [tableContainer, anchorElement])\n\n // close the dialog when clicking outside of it\n useLayoutEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n\n if (\n popupRef.current &&\n !popupRef.current.contains(target) &&\n anchorElement &&\n !anchorElement.contains(target) &&\n // check we are not clicking inside the EntityPickerDialog\n !target.closest('.entity-picker-dialog') &&\n // check we are not clicking on the dialog backdrop\n !target.querySelector('.entity-picker-dialog') &&\n // check we are not clicking inside another dialog\n !target.closest('dialog') &&\n // check we are not clicking inside a dropdown\n !target.closest('.dropdown') &&\n !target.closest('.p-dialog-mask') &&\n !target.closest('.p-datepicker') &&\n !target.closest('.' + BLOCK_DIALOG_CLOSE_CLASS)\n ) {\n onClose?.()\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [onClose, anchorElement])\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n // check we are not inside an input or textarea\n const target = e.target as HTMLElement\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return\n }\n\n // close dialog on escape\n if (e.key === 'Escape') {\n e.stopPropagation()\n onClose?.()\n }\n }\n\n if (!isEditing) return null\n return createPortal(\n <StyledPopUp\n ref={popupRef}\n style={{\n top: position?.top,\n left: position?.left,\n right: position?.right,\n ...(position?.showAbove && { transform: 'translateY(-100%)' }),\n visibility: position ? 'visible' : 'hidden',\n maxWidth: maxWidth ? `${maxWidth}px` : 'none',\n maxHeight: maxHeight ? `${maxHeight}px` : 'none',\n }}\n className=\"links-widget-popup\"\n onKeyDown={handleKeyDown}\n >\n {children}\n </StyledPopUp>,\n document.body,\n )\n}\n"],"names":["BLOCK_DIALOG_CLOSE_CLASS","StyledPopUp","styled","CellEditingDialog","isEditing","anchorId","containerClassName","onClose","children","popupRef","useRef","position","setPosition","useState","maxWidth","setMaxWidth","maxHeight","setMaxHeight","anchorElement","tableContainer","updatePosition","cellRect","containerRect","containerRight","containerToRightOfScreen","screenPadding","minHeightThreshold","minWidthThreshold","maxMaxHeight","screenWidth","screenHeight","spaceToRight","dialogWidth","spaceBelow","spaceAbove","top","showAbove","availableHeight","useLayoutEffect","resizeObserver","handleClickOutside","event","target","handleKeyDown","createPortal","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"CellEditingDialog.cjs.js","sources":["../../../../../src/components/LinksManager/CellEditingDialog.tsx"],"sourcesContent":["import { FC, useRef, useLayoutEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { createPortal } from 'react-dom'\n\nexport const BLOCK_DIALOG_CLOSE_CLASS = 'block-dialog-close'\n\nconst StyledPopUp = styled.div`\n position: fixed;\n z-index: 310;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n`\n\ntype Position = {\n top: number\n left?: number\n right?: number\n showAbove?: boolean\n}\n\nexport interface LinksManagerDialogProps {\n isEditing: boolean\n anchorId: string\n containerClassName?: string\n onClose?: () => void\n children?: React.ReactNode\n}\n\nexport const CellEditingDialog: FC<LinksManagerDialogProps> = ({\n isEditing,\n anchorId,\n containerClassName = 'table-container',\n onClose,\n children,\n}) => {\n const popupRef = useRef<HTMLDivElement>(null)\n\n const [position, setPosition] = useState<Position | null>(null)\n const [maxWidth, setMaxWidth] = useState<number | undefined>(undefined)\n const [maxHeight, setMaxHeight] = useState<number | undefined>(undefined)\n\n // get the cell element based on the cellId\n const anchorElement = document.getElementById(anchorId)\n const tableContainer = anchorElement?.closest(`.${containerClassName}`)\n\n const updatePosition = () => {\n if (!isEditing) return\n\n if (!anchorElement || !tableContainer) {\n // if the anchor element is not found, position in the center of the screen\n setPosition({\n top: window.innerHeight / 2,\n left: window.innerWidth / 2,\n showAbove: false,\n })\n setMaxWidth(undefined)\n setMaxHeight(undefined)\n return\n }\n\n const cellRect = anchorElement.getBoundingClientRect()\n\n const containerRect = tableContainer.getBoundingClientRect()\n const containerRight = containerRect.right\n const containerToRightOfScreen = window.innerWidth - containerRect.right\n\n const screenPadding = 24\n const minHeightThreshold = 250\n const minWidthThreshold = 400\n const maxMaxHeight = 600\n const screenWidth = window.innerWidth\n const screenHeight = window.innerHeight\n\n // Check if we have enough space to the right of the cell\n const spaceToRight = containerRight - cellRect.left\n let position: { left?: number; right?: number } = {}\n let dialogWidth = minWidthThreshold\n\n if (spaceToRight < minWidthThreshold) {\n // Not enough space to the right, anchor to the right side of the cell\n const spaceToLeft = cellRect.right - screenPadding\n if (spaceToLeft >= minWidthThreshold) {\n // Anchor to the right side of the cell\n position.right = Math.max(\n screenWidth - cellRect.right,\n screenPadding + containerToRightOfScreen,\n )\n } else {\n // Not enough space on either side, center and use available width\n position.left = screenPadding\n dialogWidth = screenWidth - 2 * screenPadding\n }\n } else {\n // Enough space to the right, position normally\n position.left = cellRect.left\n dialogWidth = Math.max(minWidthThreshold, spaceToRight)\n }\n\n setMaxWidth(dialogWidth)\n\n const spaceBelow = screenHeight - cellRect.bottom - screenPadding\n const spaceAbove = cellRect.top - screenPadding\n let top: number\n let showAbove = false\n let availableHeight: number\n\n if (spaceBelow < minHeightThreshold && spaceAbove > spaceBelow) {\n showAbove = true\n top = cellRect.top - 4\n availableHeight = spaceAbove - 4\n } else {\n top = cellRect.bottom + 4\n availableHeight = spaceBelow - 4\n }\n\n // Set max height to prevent dialog from going off screen\n setMaxHeight(Math.min(Math.max(200, availableHeight), maxMaxHeight)) // Minimum 200px height\n\n setPosition({\n top,\n ...position,\n showAbove,\n })\n }\n\n useLayoutEffect(() => {\n updatePosition()\n }, [isEditing, anchorElement])\n\n // watch for when the tableContainer width changes\n useLayoutEffect(() => {\n if (tableContainer) {\n const resizeObserver = new ResizeObserver(() => {\n updatePosition()\n })\n resizeObserver.observe(tableContainer)\n return () => resizeObserver.disconnect()\n }\n }, [tableContainer, anchorElement])\n\n // close the dialog when clicking outside of it\n useLayoutEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n\n if (\n popupRef.current &&\n !popupRef.current.contains(target) &&\n anchorElement &&\n !anchorElement.contains(target) &&\n // check we are not clicking inside the EntityPickerDialog\n !target.closest('.entity-picker-dialog') &&\n // check we are not clicking on the dialog backdrop\n !target.querySelector('.entity-picker-dialog') &&\n // check we are not clicking inside another dialog\n !target.closest('dialog') &&\n // check we are not clicking inside a dropdown\n !target.closest('.dropdown') &&\n !target.closest('.p-dialog-mask') &&\n !target.closest('.p-datepicker') &&\n !target.closest('.' + BLOCK_DIALOG_CLOSE_CLASS)\n ) {\n // Blur active element first so inputs can commit their values before unmount\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement.blur()\n }\n onClose?.()\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [onClose, anchorElement])\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n // check we are not inside an input or textarea\n const target = e.target as HTMLElement\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return\n }\n\n // close dialog on escape\n if (e.key === 'Escape') {\n e.stopPropagation()\n onClose?.()\n }\n }\n\n if (!isEditing) return null\n return createPortal(\n <StyledPopUp\n ref={popupRef}\n style={{\n top: position?.top,\n left: position?.left,\n right: position?.right,\n ...(position?.showAbove && { transform: 'translateY(-100%)' }),\n visibility: position ? 'visible' : 'hidden',\n maxWidth: maxWidth ? `${maxWidth}px` : 'none',\n maxHeight: maxHeight ? `${maxHeight}px` : 'none',\n }}\n className=\"links-widget-popup\"\n onKeyDown={handleKeyDown}\n >\n {children}\n </StyledPopUp>,\n document.body,\n )\n}\n"],"names":["BLOCK_DIALOG_CLOSE_CLASS","StyledPopUp","styled","CellEditingDialog","isEditing","anchorId","containerClassName","onClose","children","popupRef","useRef","position","setPosition","useState","maxWidth","setMaxWidth","maxHeight","setMaxHeight","anchorElement","tableContainer","updatePosition","cellRect","containerRect","containerRight","containerToRightOfScreen","screenPadding","minHeightThreshold","minWidthThreshold","maxMaxHeight","screenWidth","screenHeight","spaceToRight","dialogWidth","spaceBelow","spaceAbove","top","showAbove","availableHeight","useLayoutEffect","resizeObserver","handleClickOutside","event","target","handleKeyDown","createPortal","jsx"],"mappings":"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"}
@@ -13,55 +13,55 @@ const I = "block-dialog-close", K = j.div`
13
13
  anchorId: k,
14
14
  containerClassName: A = "table-container",
15
15
  onClose: d,
16
- children: C
16
+ children: M
17
17
  }) => {
18
- const h = N(null), [s, x] = u(null), [v, b] = u(void 0), [y, R] = u(void 0), o = document.getElementById(k), r = o?.closest(`.${A}`), E = () => {
18
+ const h = N(null), [s, v] = u(null), [x, b] = u(void 0), [y, E] = u(void 0), o = document.getElementById(k), c = o?.closest(`.${A}`), R = () => {
19
19
  if (!l) return;
20
- if (!o || !r) {
21
- x({
20
+ if (!o || !c) {
21
+ v({
22
22
  top: window.innerHeight / 2,
23
23
  left: window.innerWidth / 2,
24
24
  showAbove: !1
25
- }), b(void 0), R(void 0);
25
+ }), b(void 0), E(void 0);
26
26
  return;
27
27
  }
28
- const t = o.getBoundingClientRect(), n = r.getBoundingClientRect(), e = n.right, O = window.innerWidth - n.right, i = 24, P = 250, c = 400, S = 600, H = window.innerWidth, B = window.innerHeight, L = e - t.left;
29
- let a = {}, p = c;
30
- L < c ? t.right - i >= c ? a.right = Math.max(
28
+ const t = o.getBoundingClientRect(), n = c.getBoundingClientRect(), e = n.right, O = window.innerWidth - n.right, i = 24, P = 250, r = 400, S = 600, H = window.innerWidth, B = window.innerHeight, L = e - t.left;
29
+ let a = {}, m = r;
30
+ L < r ? t.right - i >= r ? a.right = Math.max(
31
31
  H - t.right,
32
32
  i + O
33
- ) : (a.left = i, p = H - 2 * i) : (a.left = t.left, p = Math.max(c, L)), b(p);
34
- const g = B - t.bottom - i, T = t.top - i;
35
- let m, W = !1, f;
36
- g < P && T > g ? (W = !0, m = t.top - 4, f = T - 4) : (m = t.bottom + 4, f = g - 4), R(Math.min(Math.max(200, f), S)), x({
37
- top: m,
33
+ ) : (a.left = i, m = H - 2 * i) : (a.left = t.left, m = Math.max(r, L)), b(m);
34
+ const p = B - t.bottom - i, T = t.top - i;
35
+ let g, W = !1, f;
36
+ p < P && T > p ? (W = !0, g = t.top - 4, f = T - 4) : (g = t.bottom + 4, f = p - 4), E(Math.min(Math.max(200, f), S)), v({
37
+ top: g,
38
38
  ...a,
39
39
  showAbove: W
40
40
  });
41
41
  };
42
42
  w(() => {
43
- E();
43
+ R();
44
44
  }, [l, o]), w(() => {
45
- if (r) {
45
+ if (c) {
46
46
  const t = new ResizeObserver(() => {
47
- E();
47
+ R();
48
48
  });
49
- return t.observe(r), () => t.disconnect();
49
+ return t.observe(c), () => t.disconnect();
50
50
  }
51
- }, [r, o]), w(() => {
51
+ }, [c, o]), w(() => {
52
52
  const t = (n) => {
53
53
  const e = n.target;
54
54
  h.current && !h.current.contains(e) && o && !o.contains(e) && // check we are not clicking inside the EntityPickerDialog
55
55
  !e.closest(".entity-picker-dialog") && // check we are not clicking on the dialog backdrop
56
56
  !e.querySelector(".entity-picker-dialog") && // check we are not clicking inside another dialog
57
57
  !e.closest("dialog") && // check we are not clicking inside a dropdown
58
- !e.closest(".dropdown") && !e.closest(".p-dialog-mask") && !e.closest(".p-datepicker") && !e.closest("." + I) && d?.();
58
+ !e.closest(".dropdown") && !e.closest(".p-dialog-mask") && !e.closest(".p-datepicker") && !e.closest("." + I) && (document.activeElement instanceof HTMLElement && document.activeElement.blur(), d?.());
59
59
  };
60
60
  return document.addEventListener("mousedown", t), () => {
61
61
  document.removeEventListener("mousedown", t);
62
62
  };
63
63
  }, [d, o]);
64
- const M = (t) => {
64
+ const C = (t) => {
65
65
  const n = t.target;
66
66
  n.tagName === "INPUT" || n.tagName === "TEXTAREA" || n.isContentEditable || t.key === "Escape" && (t.stopPropagation(), d?.());
67
67
  };
@@ -76,12 +76,12 @@ const I = "block-dialog-close", K = j.div`
76
76
  right: s?.right,
77
77
  ...s?.showAbove && { transform: "translateY(-100%)" },
78
78
  visibility: s ? "visible" : "hidden",
79
- maxWidth: v ? `${v}px` : "none",
79
+ maxWidth: x ? `${x}px` : "none",
80
80
  maxHeight: y ? `${y}px` : "none"
81
81
  },
82
82
  className: "links-widget-popup",
83
- onKeyDown: M,
84
- children: C
83
+ onKeyDown: C,
84
+ children: M
85
85
  }
86
86
  ),
87
87
  document.body
@@ -1 +1 @@
1
- {"version":3,"file":"CellEditingDialog.es.js","sources":["../../../../../src/components/LinksManager/CellEditingDialog.tsx"],"sourcesContent":["import { FC, useRef, useLayoutEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { createPortal } from 'react-dom'\n\nexport const BLOCK_DIALOG_CLOSE_CLASS = 'block-dialog-close'\n\nconst StyledPopUp = styled.div`\n position: fixed;\n z-index: 310;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n`\n\ntype Position = {\n top: number\n left?: number\n right?: number\n showAbove?: boolean\n}\n\nexport interface LinksManagerDialogProps {\n isEditing: boolean\n anchorId: string\n containerClassName?: string\n onClose?: () => void\n children?: React.ReactNode\n}\n\nexport const CellEditingDialog: FC<LinksManagerDialogProps> = ({\n isEditing,\n anchorId,\n containerClassName = 'table-container',\n onClose,\n children,\n}) => {\n const popupRef = useRef<HTMLDivElement>(null)\n\n const [position, setPosition] = useState<Position | null>(null)\n const [maxWidth, setMaxWidth] = useState<number | undefined>(undefined)\n const [maxHeight, setMaxHeight] = useState<number | undefined>(undefined)\n\n // get the cell element based on the cellId\n const anchorElement = document.getElementById(anchorId)\n const tableContainer = anchorElement?.closest(`.${containerClassName}`)\n\n const updatePosition = () => {\n if (!isEditing) return\n\n if (!anchorElement || !tableContainer) {\n // if the anchor element is not found, position in the center of the screen\n setPosition({\n top: window.innerHeight / 2,\n left: window.innerWidth / 2,\n showAbove: false,\n })\n setMaxWidth(undefined)\n setMaxHeight(undefined)\n return\n }\n\n const cellRect = anchorElement.getBoundingClientRect()\n\n const containerRect = tableContainer.getBoundingClientRect()\n const containerRight = containerRect.right\n const containerToRightOfScreen = window.innerWidth - containerRect.right\n\n const screenPadding = 24\n const minHeightThreshold = 250\n const minWidthThreshold = 400\n const maxMaxHeight = 600\n const screenWidth = window.innerWidth\n const screenHeight = window.innerHeight\n\n // Check if we have enough space to the right of the cell\n const spaceToRight = containerRight - cellRect.left\n let position: { left?: number; right?: number } = {}\n let dialogWidth = minWidthThreshold\n\n if (spaceToRight < minWidthThreshold) {\n // Not enough space to the right, anchor to the right side of the cell\n const spaceToLeft = cellRect.right - screenPadding\n if (spaceToLeft >= minWidthThreshold) {\n // Anchor to the right side of the cell\n position.right = Math.max(\n screenWidth - cellRect.right,\n screenPadding + containerToRightOfScreen,\n )\n } else {\n // Not enough space on either side, center and use available width\n position.left = screenPadding\n dialogWidth = screenWidth - 2 * screenPadding\n }\n } else {\n // Enough space to the right, position normally\n position.left = cellRect.left\n dialogWidth = Math.max(minWidthThreshold, spaceToRight)\n }\n\n setMaxWidth(dialogWidth)\n\n const spaceBelow = screenHeight - cellRect.bottom - screenPadding\n const spaceAbove = cellRect.top - screenPadding\n let top: number\n let showAbove = false\n let availableHeight: number\n\n if (spaceBelow < minHeightThreshold && spaceAbove > spaceBelow) {\n showAbove = true\n top = cellRect.top - 4\n availableHeight = spaceAbove - 4\n } else {\n top = cellRect.bottom + 4\n availableHeight = spaceBelow - 4\n }\n\n // Set max height to prevent dialog from going off screen\n setMaxHeight(Math.min(Math.max(200, availableHeight), maxMaxHeight)) // Minimum 200px height\n\n setPosition({\n top,\n ...position,\n showAbove,\n })\n }\n\n useLayoutEffect(() => {\n updatePosition()\n }, [isEditing, anchorElement])\n\n // watch for when the tableContainer width changes\n useLayoutEffect(() => {\n if (tableContainer) {\n const resizeObserver = new ResizeObserver(() => {\n updatePosition()\n })\n resizeObserver.observe(tableContainer)\n return () => resizeObserver.disconnect()\n }\n }, [tableContainer, anchorElement])\n\n // close the dialog when clicking outside of it\n useLayoutEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n\n if (\n popupRef.current &&\n !popupRef.current.contains(target) &&\n anchorElement &&\n !anchorElement.contains(target) &&\n // check we are not clicking inside the EntityPickerDialog\n !target.closest('.entity-picker-dialog') &&\n // check we are not clicking on the dialog backdrop\n !target.querySelector('.entity-picker-dialog') &&\n // check we are not clicking inside another dialog\n !target.closest('dialog') &&\n // check we are not clicking inside a dropdown\n !target.closest('.dropdown') &&\n !target.closest('.p-dialog-mask') &&\n !target.closest('.p-datepicker') &&\n !target.closest('.' + BLOCK_DIALOG_CLOSE_CLASS)\n ) {\n onClose?.()\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [onClose, anchorElement])\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n // check we are not inside an input or textarea\n const target = e.target as HTMLElement\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return\n }\n\n // close dialog on escape\n if (e.key === 'Escape') {\n e.stopPropagation()\n onClose?.()\n }\n }\n\n if (!isEditing) return null\n return createPortal(\n <StyledPopUp\n ref={popupRef}\n style={{\n top: position?.top,\n left: position?.left,\n right: position?.right,\n ...(position?.showAbove && { transform: 'translateY(-100%)' }),\n visibility: position ? 'visible' : 'hidden',\n maxWidth: maxWidth ? `${maxWidth}px` : 'none',\n maxHeight: maxHeight ? `${maxHeight}px` : 'none',\n }}\n className=\"links-widget-popup\"\n onKeyDown={handleKeyDown}\n >\n {children}\n </StyledPopUp>,\n document.body,\n )\n}\n"],"names":["BLOCK_DIALOG_CLOSE_CLASS","StyledPopUp","styled","CellEditingDialog","isEditing","anchorId","containerClassName","onClose","children","popupRef","useRef","position","setPosition","useState","maxWidth","setMaxWidth","maxHeight","setMaxHeight","anchorElement","tableContainer","updatePosition","cellRect","containerRect","containerRight","containerToRightOfScreen","screenPadding","minHeightThreshold","minWidthThreshold","maxMaxHeight","screenWidth","screenHeight","spaceToRight","dialogWidth","spaceBelow","spaceAbove","top","showAbove","availableHeight","useLayoutEffect","resizeObserver","handleClickOutside","event","target","handleKeyDown","e","createPortal","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"CellEditingDialog.es.js","sources":["../../../../../src/components/LinksManager/CellEditingDialog.tsx"],"sourcesContent":["import { FC, useRef, useLayoutEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { createPortal } from 'react-dom'\n\nexport const BLOCK_DIALOG_CLOSE_CLASS = 'block-dialog-close'\n\nconst StyledPopUp = styled.div`\n position: fixed;\n z-index: 310;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n`\n\ntype Position = {\n top: number\n left?: number\n right?: number\n showAbove?: boolean\n}\n\nexport interface LinksManagerDialogProps {\n isEditing: boolean\n anchorId: string\n containerClassName?: string\n onClose?: () => void\n children?: React.ReactNode\n}\n\nexport const CellEditingDialog: FC<LinksManagerDialogProps> = ({\n isEditing,\n anchorId,\n containerClassName = 'table-container',\n onClose,\n children,\n}) => {\n const popupRef = useRef<HTMLDivElement>(null)\n\n const [position, setPosition] = useState<Position | null>(null)\n const [maxWidth, setMaxWidth] = useState<number | undefined>(undefined)\n const [maxHeight, setMaxHeight] = useState<number | undefined>(undefined)\n\n // get the cell element based on the cellId\n const anchorElement = document.getElementById(anchorId)\n const tableContainer = anchorElement?.closest(`.${containerClassName}`)\n\n const updatePosition = () => {\n if (!isEditing) return\n\n if (!anchorElement || !tableContainer) {\n // if the anchor element is not found, position in the center of the screen\n setPosition({\n top: window.innerHeight / 2,\n left: window.innerWidth / 2,\n showAbove: false,\n })\n setMaxWidth(undefined)\n setMaxHeight(undefined)\n return\n }\n\n const cellRect = anchorElement.getBoundingClientRect()\n\n const containerRect = tableContainer.getBoundingClientRect()\n const containerRight = containerRect.right\n const containerToRightOfScreen = window.innerWidth - containerRect.right\n\n const screenPadding = 24\n const minHeightThreshold = 250\n const minWidthThreshold = 400\n const maxMaxHeight = 600\n const screenWidth = window.innerWidth\n const screenHeight = window.innerHeight\n\n // Check if we have enough space to the right of the cell\n const spaceToRight = containerRight - cellRect.left\n let position: { left?: number; right?: number } = {}\n let dialogWidth = minWidthThreshold\n\n if (spaceToRight < minWidthThreshold) {\n // Not enough space to the right, anchor to the right side of the cell\n const spaceToLeft = cellRect.right - screenPadding\n if (spaceToLeft >= minWidthThreshold) {\n // Anchor to the right side of the cell\n position.right = Math.max(\n screenWidth - cellRect.right,\n screenPadding + containerToRightOfScreen,\n )\n } else {\n // Not enough space on either side, center and use available width\n position.left = screenPadding\n dialogWidth = screenWidth - 2 * screenPadding\n }\n } else {\n // Enough space to the right, position normally\n position.left = cellRect.left\n dialogWidth = Math.max(minWidthThreshold, spaceToRight)\n }\n\n setMaxWidth(dialogWidth)\n\n const spaceBelow = screenHeight - cellRect.bottom - screenPadding\n const spaceAbove = cellRect.top - screenPadding\n let top: number\n let showAbove = false\n let availableHeight: number\n\n if (spaceBelow < minHeightThreshold && spaceAbove > spaceBelow) {\n showAbove = true\n top = cellRect.top - 4\n availableHeight = spaceAbove - 4\n } else {\n top = cellRect.bottom + 4\n availableHeight = spaceBelow - 4\n }\n\n // Set max height to prevent dialog from going off screen\n setMaxHeight(Math.min(Math.max(200, availableHeight), maxMaxHeight)) // Minimum 200px height\n\n setPosition({\n top,\n ...position,\n showAbove,\n })\n }\n\n useLayoutEffect(() => {\n updatePosition()\n }, [isEditing, anchorElement])\n\n // watch for when the tableContainer width changes\n useLayoutEffect(() => {\n if (tableContainer) {\n const resizeObserver = new ResizeObserver(() => {\n updatePosition()\n })\n resizeObserver.observe(tableContainer)\n return () => resizeObserver.disconnect()\n }\n }, [tableContainer, anchorElement])\n\n // close the dialog when clicking outside of it\n useLayoutEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n\n if (\n popupRef.current &&\n !popupRef.current.contains(target) &&\n anchorElement &&\n !anchorElement.contains(target) &&\n // check we are not clicking inside the EntityPickerDialog\n !target.closest('.entity-picker-dialog') &&\n // check we are not clicking on the dialog backdrop\n !target.querySelector('.entity-picker-dialog') &&\n // check we are not clicking inside another dialog\n !target.closest('dialog') &&\n // check we are not clicking inside a dropdown\n !target.closest('.dropdown') &&\n !target.closest('.p-dialog-mask') &&\n !target.closest('.p-datepicker') &&\n !target.closest('.' + BLOCK_DIALOG_CLOSE_CLASS)\n ) {\n // Blur active element first so inputs can commit their values before unmount\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement.blur()\n }\n onClose?.()\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [onClose, anchorElement])\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n // check we are not inside an input or textarea\n const target = e.target as HTMLElement\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return\n }\n\n // close dialog on escape\n if (e.key === 'Escape') {\n e.stopPropagation()\n onClose?.()\n }\n }\n\n if (!isEditing) return null\n return createPortal(\n <StyledPopUp\n ref={popupRef}\n style={{\n top: position?.top,\n left: position?.left,\n right: position?.right,\n ...(position?.showAbove && { transform: 'translateY(-100%)' }),\n visibility: position ? 'visible' : 'hidden',\n maxWidth: maxWidth ? `${maxWidth}px` : 'none',\n maxHeight: maxHeight ? `${maxHeight}px` : 'none',\n }}\n className=\"links-widget-popup\"\n onKeyDown={handleKeyDown}\n >\n {children}\n </StyledPopUp>,\n document.body,\n )\n}\n"],"names":["BLOCK_DIALOG_CLOSE_CLASS","StyledPopUp","styled","CellEditingDialog","isEditing","anchorId","containerClassName","onClose","children","popupRef","useRef","position","setPosition","useState","maxWidth","setMaxWidth","maxHeight","setMaxHeight","anchorElement","tableContainer","updatePosition","cellRect","containerRect","containerRight","containerToRightOfScreen","screenPadding","minHeightThreshold","minWidthThreshold","maxMaxHeight","screenWidth","screenHeight","spaceToRight","dialogWidth","spaceBelow","spaceAbove","top","showAbove","availableHeight","useLayoutEffect","resizeObserver","handleClickOutside","event","target","handleKeyDown","e","createPortal","jsx"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../../_virtual/jsx-runtime.cjs.js"),c=require("react"),a=require("@ynput/ayon-react-components");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");const p=require("../../api/queries/entities/transformDetailsPanelData.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");const x=require("./LinksManager.styled.cjs.js"),l=require("clsx"),m=require("../EntityIcon/EntityIcon.cjs.js"),d=({link:e,isSelected:q=!1,onEntityClick:n,onRemove:o,isManager:i=!1})=>{const s=p.detailsPanelEntityTypes.includes(e.entityType)&&!e.isRestricted;return r.jsxRuntimeExports.jsxs(x.LinkItem,{onClick:()=>s&&n?.(e.entityId,e.entityType),"data-tooltip":e.isRestricted?i?"Unknown Link - Entity not found":"Access Restricted - Insufficient Permissions to Entity":e.parents.join("/")+"/"+e.label,className:l({clickable:s,selected:q,restricted:e.isRestricted&&!i,unknown:e.isRestricted&&i}),children:[r.jsxRuntimeExports.jsx(m.EntityIcon,{entity:{entityType:e.entityType},icon:e?.icon,color:e.color}),r.jsxRuntimeExports.jsx("span",{className:"title",children:e.isRestricted?r.jsxRuntimeExports.jsx("span",{className:"label",children:i?"Unknown":"Access Restricted"}):r.jsxRuntimeExports.jsxs(r.jsxRuntimeExports.Fragment,{children:[e.parents?.map((t,u)=>r.jsxRuntimeExports.jsxs(c.Fragment,{children:[r.jsxRuntimeExports.jsx("span",{children:t},u+"-path"),r.jsxRuntimeExports.jsx("span",{children:"/"},u+"-separator")]},u)),r.jsxRuntimeExports.jsx("span",{className:"label",children:e.label})]})}),(!e.isRestricted||i)&&r.jsxRuntimeExports.jsx(a.Button,{icon:"link_off",variant:"text",className:"remove",onClick:t=>o(t,e),"data-tooltip":"Remove link"})]},e.linkId)};exports.LinkManagerItem=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../../_virtual/jsx-runtime.cjs.js"),q=require("react"),h=require("@ynput/ayon-react-components");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");const g=require("../../api/queries/entities/transformDetailsPanelData.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");const a=require("./LinksManager.styled.cjs.js"),C=require("clsx"),b=require("../EntityIcon/EntityIcon.cjs.js"),I=({link:e,count:t,isSelected:d=!1,onEntityClick:x,onRemove:m,onCountChange:y,isManager:s=!1})=>{const[c,u]=q.useState(!1),[l,n]=q.useState(t),j=r=>{r.stopPropagation(),!e.isRestricted&&(n(t),u(!0))},R=()=>{const r=Math.max(1,l);r!==t&&y?.(r),u(!1)},E=()=>{n(t),u(!1)},f=r=>{r.stopPropagation(),r.key==="Enter"?r.currentTarget.blur():r.key==="Escape"&&E()},p=g.detailsPanelEntityTypes.includes(e.entityType)&&!e.isRestricted;return i.jsxRuntimeExports.jsxs(a.LinkItem,{onClick:()=>!c&&p&&x?.(e.entityId,e.entityType),"data-tooltip":e.isRestricted?s?"Unknown Link - Entity not found":"Access Restricted - Insufficient Permissions to Entity":e.parents.join("/")+"/"+e.label,className:C({clickable:p,selected:d,restricted:e.isRestricted&&!s,unknown:e.isRestricted&&s}),children:[i.jsxRuntimeExports.jsx(b.EntityIcon,{entity:{entityType:e.entityType},icon:e?.icon,color:e.color}),i.jsxRuntimeExports.jsx("span",{className:"title",children:e.isRestricted?i.jsxRuntimeExports.jsx("span",{className:"label",children:s?"Unknown":"Access Restricted"}):i.jsxRuntimeExports.jsxs(i.jsxRuntimeExports.Fragment,{children:[e.parents?.map((r,o)=>i.jsxRuntimeExports.jsxs(q.Fragment,{children:[i.jsxRuntimeExports.jsx("span",{children:r},o+"-path"),i.jsxRuntimeExports.jsx("span",{children:"/"},o+"-separator")]},o)),i.jsxRuntimeExports.jsx("span",{className:"label",children:e.label})]})}),!e.isRestricted&&(c?i.jsxRuntimeExports.jsx(a.CountInput,{value:l,min:1,autoFocus:!0,onChange:r=>n(parseInt(r.target.value)||1),onFocus:r=>r.target.select(),onBlur:R,onKeyDown:f,onClick:r=>r.stopPropagation(),"data-tooltip":"Number of links to this entity."}):i.jsxRuntimeExports.jsxs(a.CountBadge,{onClick:j,tabIndex:0,"data-tooltip":"Number of links to this entity.",children:["x",t]})),(!e.isRestricted||s)&&i.jsxRuntimeExports.jsx(h.Button,{icon:"link_off",variant:"text",className:"remove",onClick:r=>m(r,e),"data-tooltip":t>1?`Remove all ${t} links`:"Remove link"})]})};exports.LinkManagerItem=I;
2
2
  //# sourceMappingURL=LinkManagerItem.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkManagerItem.cjs.js","sources":["../../../../../src/components/LinksManager/LinkManagerItem.tsx"],"sourcesContent":["import { FC, Fragment } from 'react'\nimport { Button } from '@ynput/ayon-react-components'\nimport { detailsPanelEntityTypes } from '@shared/api'\nimport * as Styled from './LinksManager.styled'\nimport { LinkEntity } from './LinksManager'\nimport clsx from 'clsx'\nimport { EntityIcon } from '@shared/components/EntityIcon'\n\nexport interface LinkManagerItemProps {\n link: LinkEntity\n isSelected?: boolean\n onEntityClick?: (entityId: string, entityType: string) => void\n onRemove: (e: React.MouseEvent<HTMLButtonElement>, link: LinkEntity) => void\n isManager?: boolean\n}\n\nexport const LinkManagerItem: FC<LinkManagerItemProps> = ({\n link,\n isSelected = false,\n onEntityClick,\n onRemove,\n isManager = false,\n}) => {\n const entityTypeSupported = detailsPanelEntityTypes.includes(link.entityType as any)\n const isClickable = entityTypeSupported && !link.isRestricted\n return (\n <Styled.LinkItem\n key={link.linkId}\n onClick={() => isClickable && onEntityClick?.(link.entityId, link.entityType)}\n data-tooltip={\n link.isRestricted\n ? isManager\n ? 'Unknown Link - Entity not found'\n : 'Access Restricted - Insufficient Permissions to Entity'\n : link.parents.join('/') + '/' + link.label\n }\n className={clsx({\n clickable: isClickable,\n selected: isSelected,\n restricted: link.isRestricted && !isManager,\n unknown: link.isRestricted && isManager,\n })}\n >\n <EntityIcon entity={{entityType: link.entityType}} icon={link?.icon} color={link.color} />\n <span className=\"title\">\n {link.isRestricted ? (\n <span className=\"label\">{isManager ? 'Unknown' : 'Access Restricted'}</span>\n ) : (\n <>\n {link.parents?.map((part, index) => (\n <Fragment key={index}>\n <span key={index + '-path'}>{part}</span>\n <span key={index + '-separator'}>/</span>\n </Fragment>\n ))}\n <span className=\"label\">{link.label}</span>\n </>\n )}\n </span>\n {(!link.isRestricted || isManager) && (\n <Button\n icon={'link_off'}\n variant=\"text\"\n className=\"remove\"\n onClick={(e) => onRemove(e, link)}\n data-tooltip={'Remove link'}\n />\n )}\n </Styled.LinkItem>\n )\n}\n"],"names":["LinkManagerItem","link","isSelected","onEntityClick","onRemove","isManager","isClickable","detailsPanelEntityTypes","jsxs","Styled.LinkItem","clsx","jsx","EntityIcon","Fragment","part","index","Button","e"],"mappings":"0+JAgBaA,EAA4C,CAAC,CACxD,KAAAC,EACA,WAAAC,EAAa,GACb,cAAAC,EACA,SAAAC,EACA,UAAAC,EAAY,EACd,IAAM,CAEJ,MAAMC,EADsBC,EAAAA,wBAAwB,SAASN,EAAK,UAAiB,GACxC,CAACA,EAAK,aACjD,OACEO,EAAAA,kBAAAA,KAACC,EAAAA,SAAA,CAEC,QAAS,IAAMH,GAAeH,IAAgBF,EAAK,SAAUA,EAAK,UAAU,EAC5E,eACEA,EAAK,aACDI,EACE,kCACA,yDACFJ,EAAK,QAAQ,KAAK,GAAG,EAAI,IAAMA,EAAK,MAE1C,UAAWS,EAAK,CACd,UAAWJ,EACX,SAAUJ,EACV,WAAYD,EAAK,cAAgB,CAACI,EAClC,QAASJ,EAAK,cAAgBI,CAAA,CAC/B,EAED,SAAA,CAAAM,EAAAA,kBAAAA,IAACC,EAAAA,WAAA,CAAW,OAAQ,CAAC,WAAYX,EAAK,UAAA,EAAa,KAAMA,GAAM,KAAM,MAAOA,EAAK,KAAA,CAAO,EACxFU,wBAAC,OAAA,CAAK,UAAU,QACb,WAAK,aACJA,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,QAAS,SAAAN,EAAY,UAAY,mBAAA,CAAoB,EAErEG,EAAAA,kBAAAA,KAAAK,6BAAA,CACG,SAAA,CAAAZ,EAAK,SAAS,IAAI,CAACa,EAAMC,IACxBP,EAAAA,kBAAAA,KAACK,WAAA,CACC,SAAA,CAAAF,EAAAA,kBAAAA,IAAC,OAAA,CAA4B,SAAAG,CAAA,EAAlBC,EAAQ,OAAe,EAClCJ,EAAAA,kBAAAA,IAAC,OAAA,CAAgC,SAAA,GAAA,EAAtBI,EAAQ,YAAe,CAAA,CAAA,EAFrBA,CAGf,CACD,EACDJ,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,QAAS,WAAK,KAAA,CAAM,CAAA,CAAA,CACtC,CAAA,CAEJ,GACE,CAACV,EAAK,cAAgBI,IACtBM,EAAAA,kBAAAA,IAACK,EAAAA,OAAA,CACC,KAAM,WACN,QAAQ,OACR,UAAU,SACV,QAAUC,GAAMb,EAASa,EAAGhB,CAAI,EAChC,eAAc,aAAA,CAAA,CAChB,CAAA,EAvCGA,EAAK,MAAA,CA2ChB"}
1
+ {"version":3,"file":"LinkManagerItem.cjs.js","sources":["../../../../../src/components/LinksManager/LinkManagerItem.tsx"],"sourcesContent":["import { FC, Fragment, useState } from 'react'\nimport { Button } from '@ynput/ayon-react-components'\nimport { detailsPanelEntityTypes } from '@shared/api'\nimport * as Styled from './LinksManager.styled'\nimport { LinkEntity } from './LinksManager'\nimport clsx from 'clsx'\nimport { EntityIcon } from '@shared/components/EntityIcon'\n\nexport interface LinkManagerItemProps {\n link: LinkEntity\n count: number\n isSelected?: boolean\n onEntityClick?: (entityId: string, entityType: string) => void\n onRemove: (e: React.MouseEvent<HTMLButtonElement>, link: LinkEntity) => void\n onCountChange?: (newCount: number) => void\n isManager?: boolean\n}\n\nexport const LinkManagerItem: FC<LinkManagerItemProps> = ({\n link,\n count,\n isSelected = false,\n onEntityClick,\n onRemove,\n onCountChange,\n isManager = false,\n}) => {\n const [isEditingCount, setIsEditingCount] = useState(false)\n const [editValue, setEditValue] = useState(count)\n\n const handleBadgeClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (link.isRestricted) return\n setEditValue(count)\n setIsEditingCount(true)\n }\n\n const commitCount = () => {\n const newCount = Math.max(1, editValue)\n if (newCount !== count) {\n onCountChange?.(newCount)\n }\n setIsEditingCount(false)\n }\n\n const cancelEdit = () => {\n setEditValue(count)\n setIsEditingCount(false)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n e.stopPropagation()\n if (e.key === 'Enter') {\n e.currentTarget.blur()\n } else if (e.key === 'Escape') {\n cancelEdit()\n }\n }\n\n const entityTypeSupported = detailsPanelEntityTypes.includes(link.entityType as any)\n const isClickable = entityTypeSupported && !link.isRestricted\n return (\n <Styled.LinkItem\n onClick={() => !isEditingCount && isClickable && onEntityClick?.(link.entityId, link.entityType)}\n data-tooltip={\n link.isRestricted\n ? isManager\n ? 'Unknown Link - Entity not found'\n : 'Access Restricted - Insufficient Permissions to Entity'\n : link.parents.join('/') + '/' + link.label\n }\n className={clsx({\n clickable: isClickable,\n selected: isSelected,\n restricted: link.isRestricted && !isManager,\n unknown: link.isRestricted && isManager,\n })}\n >\n <EntityIcon entity={{entityType: link.entityType}} icon={link?.icon} color={link.color} />\n <span className=\"title\">\n {link.isRestricted ? (\n <span className=\"label\">{isManager ? 'Unknown' : 'Access Restricted'}</span>\n ) : (\n <>\n {link.parents?.map((part, index) => (\n <Fragment key={index}>\n <span key={index + '-path'}>{part}</span>\n <span key={index + '-separator'}>/</span>\n </Fragment>\n ))}\n <span className=\"label\">{link.label}</span>\n </>\n )}\n </span>\n {!link.isRestricted && (\n isEditingCount ? (\n <Styled.CountInput\n value={editValue}\n min={1}\n autoFocus\n onChange={(e) => setEditValue(parseInt(e.target.value) || 1)}\n onFocus={(e) => e.target.select()}\n onBlur={commitCount}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n data-tooltip=\"Number of links to this entity.\"\n />\n ) : (\n <Styled.CountBadge\n onClick={handleBadgeClick}\n tabIndex={0}\n data-tooltip=\"Number of links to this entity.\"\n >\n x{count}\n </Styled.CountBadge>\n )\n )}\n {(!link.isRestricted || isManager) && (\n <Button\n icon={'link_off'}\n variant=\"text\"\n className=\"remove\"\n onClick={(e) => onRemove(e, link)}\n data-tooltip={count > 1 ? `Remove all ${count} links` : 'Remove link'}\n />\n )}\n </Styled.LinkItem>\n )\n}\n"],"names":["LinkManagerItem","link","count","isSelected","onEntityClick","onRemove","onCountChange","isManager","isEditingCount","setIsEditingCount","useState","editValue","setEditValue","handleBadgeClick","e","commitCount","newCount","cancelEdit","handleKeyDown","isClickable","detailsPanelEntityTypes","jsxs","Styled.LinkItem","clsx","jsx","EntityIcon","Fragment","part","index","Styled.CountInput","Styled.CountBadge","Button"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { j as o } from "../../../../_virtual/jsx-runtime.es.js";
2
- import { Fragment as n } from "react";
3
- import { Button as a } from "@ynput/ayon-react-components";
1
+ import { j as i } from "../../../../_virtual/jsx-runtime.es.js";
2
+ import { useState as l, Fragment as R } from "react";
3
+ import { Button as E } from "@ynput/ayon-react-components";
4
4
  import "../../api/base/client.es.js";
5
5
  import "../../api/generated/graphql.es.js";
6
6
  import "../../api/generated/graphqlLinks.es.js";
@@ -56,7 +56,7 @@ import "../../api/queries/config/getConfig.es.js";
56
56
  import "../../api/queries/config/updateConfig.es.js";
57
57
  import "../../api/queries/entities/getEntity.es.js";
58
58
  import "../../api/queries/entities/getEntityPanel.es.js";
59
- import { detailsPanelEntityTypes as d } from "../../api/queries/entities/transformDetailsPanelData.es.js";
59
+ import { detailsPanelEntityTypes as b } from "../../api/queries/entities/transformDetailsPanelData.es.js";
60
60
  import "../../api/queries/entities/updateEntity.es.js";
61
61
  import "../../api/queries/entityLists/getLists.es.js";
62
62
  import "../../api/queries/entityLists/updateLists.es.js";
@@ -91,53 +91,88 @@ import "../../api/queries/views/getViews.es.js";
91
91
  import "../../api/queries/views/updateViews.es.js";
92
92
  import "../../api/queries/watchers/getWatchers.es.js";
93
93
  import "../../api/queries/uris/getUris.es.js";
94
- import { LinkItem as l } from "./LinksManager.styled.es.js";
95
- import y from "clsx";
96
- import { EntityIcon as f } from "../EntityIcon/EntityIcon.es.js";
97
- const po = ({
94
+ import { LinkItem as g, CountInput as I, CountBadge as T } from "./LinksManager.styled.es.js";
95
+ import N from "clsx";
96
+ import { EntityIcon as v } from "../EntityIcon/EntityIcon.es.js";
97
+ const jo = ({
98
98
  link: t,
99
- isSelected: e = !1,
100
- onEntityClick: s,
101
- onRemove: c,
102
- isManager: r = !1
99
+ count: r,
100
+ isSelected: d = !1,
101
+ onEntityClick: u,
102
+ onRemove: y,
103
+ onCountChange: f,
104
+ isManager: p = !1
103
105
  }) => {
104
- const m = d.includes(t.entityType) && !t.isRestricted;
105
- return /* @__PURE__ */ o.jsxs(
106
- l,
106
+ const [n, m] = l(!1), [a, e] = l(r), x = (o) => {
107
+ o.stopPropagation(), !t.isRestricted && (e(r), m(!0));
108
+ }, h = () => {
109
+ const o = Math.max(1, a);
110
+ o !== r && f?.(o), m(!1);
111
+ }, j = () => {
112
+ e(r), m(!1);
113
+ }, C = (o) => {
114
+ o.stopPropagation(), o.key === "Enter" ? o.currentTarget.blur() : o.key === "Escape" && j();
115
+ }, c = b.includes(t.entityType) && !t.isRestricted;
116
+ return /* @__PURE__ */ i.jsxs(
117
+ g,
107
118
  {
108
- onClick: () => m && s?.(t.entityId, t.entityType),
109
- "data-tooltip": t.isRestricted ? r ? "Unknown Link - Entity not found" : "Access Restricted - Insufficient Permissions to Entity" : t.parents.join("/") + "/" + t.label,
110
- className: y({
111
- clickable: m,
112
- selected: e,
113
- restricted: t.isRestricted && !r,
114
- unknown: t.isRestricted && r
119
+ onClick: () => !n && c && u?.(t.entityId, t.entityType),
120
+ "data-tooltip": t.isRestricted ? p ? "Unknown Link - Entity not found" : "Access Restricted - Insufficient Permissions to Entity" : t.parents.join("/") + "/" + t.label,
121
+ className: N({
122
+ clickable: c,
123
+ selected: d,
124
+ restricted: t.isRestricted && !p,
125
+ unknown: t.isRestricted && p
115
126
  }),
116
127
  children: [
117
- /* @__PURE__ */ o.jsx(f, { entity: { entityType: t.entityType }, icon: t?.icon, color: t.color }),
118
- /* @__PURE__ */ o.jsx("span", { className: "title", children: t.isRestricted ? /* @__PURE__ */ o.jsx("span", { className: "label", children: r ? "Unknown" : "Access Restricted" }) : /* @__PURE__ */ o.jsxs(o.Fragment, { children: [
119
- t.parents?.map((i, p) => /* @__PURE__ */ o.jsxs(n, { children: [
120
- /* @__PURE__ */ o.jsx("span", { children: i }, p + "-path"),
121
- /* @__PURE__ */ o.jsx("span", { children: "/" }, p + "-separator")
122
- ] }, p)),
123
- /* @__PURE__ */ o.jsx("span", { className: "label", children: t.label })
128
+ /* @__PURE__ */ i.jsx(v, { entity: { entityType: t.entityType }, icon: t?.icon, color: t.color }),
129
+ /* @__PURE__ */ i.jsx("span", { className: "title", children: t.isRestricted ? /* @__PURE__ */ i.jsx("span", { className: "label", children: p ? "Unknown" : "Access Restricted" }) : /* @__PURE__ */ i.jsxs(i.Fragment, { children: [
130
+ t.parents?.map((o, s) => /* @__PURE__ */ i.jsxs(R, { children: [
131
+ /* @__PURE__ */ i.jsx("span", { children: o }, s + "-path"),
132
+ /* @__PURE__ */ i.jsx("span", { children: "/" }, s + "-separator")
133
+ ] }, s)),
134
+ /* @__PURE__ */ i.jsx("span", { className: "label", children: t.label })
124
135
  ] }) }),
125
- (!t.isRestricted || r) && /* @__PURE__ */ o.jsx(
126
- a,
136
+ !t.isRestricted && (n ? /* @__PURE__ */ i.jsx(
137
+ I,
138
+ {
139
+ value: a,
140
+ min: 1,
141
+ autoFocus: !0,
142
+ onChange: (o) => e(parseInt(o.target.value) || 1),
143
+ onFocus: (o) => o.target.select(),
144
+ onBlur: h,
145
+ onKeyDown: C,
146
+ onClick: (o) => o.stopPropagation(),
147
+ "data-tooltip": "Number of links to this entity."
148
+ }
149
+ ) : /* @__PURE__ */ i.jsxs(
150
+ T,
151
+ {
152
+ onClick: x,
153
+ tabIndex: 0,
154
+ "data-tooltip": "Number of links to this entity.",
155
+ children: [
156
+ "x",
157
+ r
158
+ ]
159
+ }
160
+ )),
161
+ (!t.isRestricted || p) && /* @__PURE__ */ i.jsx(
162
+ E,
127
163
  {
128
164
  icon: "link_off",
129
165
  variant: "text",
130
166
  className: "remove",
131
- onClick: (i) => c(i, t),
132
- "data-tooltip": "Remove link"
167
+ onClick: (o) => y(o, t),
168
+ "data-tooltip": r > 1 ? `Remove all ${r} links` : "Remove link"
133
169
  }
134
170
  )
135
171
  ]
136
- },
137
- t.linkId
172
+ }
138
173
  );
139
174
  };
140
175
  export {
141
- po as LinkManagerItem
176
+ jo as LinkManagerItem
142
177
  };
143
178
  //# sourceMappingURL=LinkManagerItem.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkManagerItem.es.js","sources":["../../../../../src/components/LinksManager/LinkManagerItem.tsx"],"sourcesContent":["import { FC, Fragment } from 'react'\nimport { Button } from '@ynput/ayon-react-components'\nimport { detailsPanelEntityTypes } from '@shared/api'\nimport * as Styled from './LinksManager.styled'\nimport { LinkEntity } from './LinksManager'\nimport clsx from 'clsx'\nimport { EntityIcon } from '@shared/components/EntityIcon'\n\nexport interface LinkManagerItemProps {\n link: LinkEntity\n isSelected?: boolean\n onEntityClick?: (entityId: string, entityType: string) => void\n onRemove: (e: React.MouseEvent<HTMLButtonElement>, link: LinkEntity) => void\n isManager?: boolean\n}\n\nexport const LinkManagerItem: FC<LinkManagerItemProps> = ({\n link,\n isSelected = false,\n onEntityClick,\n onRemove,\n isManager = false,\n}) => {\n const entityTypeSupported = detailsPanelEntityTypes.includes(link.entityType as any)\n const isClickable = entityTypeSupported && !link.isRestricted\n return (\n <Styled.LinkItem\n key={link.linkId}\n onClick={() => isClickable && onEntityClick?.(link.entityId, link.entityType)}\n data-tooltip={\n link.isRestricted\n ? isManager\n ? 'Unknown Link - Entity not found'\n : 'Access Restricted - Insufficient Permissions to Entity'\n : link.parents.join('/') + '/' + link.label\n }\n className={clsx({\n clickable: isClickable,\n selected: isSelected,\n restricted: link.isRestricted && !isManager,\n unknown: link.isRestricted && isManager,\n })}\n >\n <EntityIcon entity={{entityType: link.entityType}} icon={link?.icon} color={link.color} />\n <span className=\"title\">\n {link.isRestricted ? (\n <span className=\"label\">{isManager ? 'Unknown' : 'Access Restricted'}</span>\n ) : (\n <>\n {link.parents?.map((part, index) => (\n <Fragment key={index}>\n <span key={index + '-path'}>{part}</span>\n <span key={index + '-separator'}>/</span>\n </Fragment>\n ))}\n <span className=\"label\">{link.label}</span>\n </>\n )}\n </span>\n {(!link.isRestricted || isManager) && (\n <Button\n icon={'link_off'}\n variant=\"text\"\n className=\"remove\"\n onClick={(e) => onRemove(e, link)}\n data-tooltip={'Remove link'}\n />\n )}\n </Styled.LinkItem>\n )\n}\n"],"names":["LinkManagerItem","link","isSelected","onEntityClick","onRemove","isManager","isClickable","detailsPanelEntityTypes","jsxs","Styled.LinkItem","clsx","jsx","EntityIcon","Fragment","part","index","Button","e"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,MAAMA,KAA4C,CAAC;AAAA,EACxD,MAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AACd,MAAM;AAEJ,QAAMC,IADsBC,EAAwB,SAASN,EAAK,UAAiB,KACxC,CAACA,EAAK;AACjD,SACEO,gBAAAA,EAAAA;AAAAA,IAACC;AAAAA,IAAA;AAAA,MAEC,SAAS,MAAMH,KAAeH,IAAgBF,EAAK,UAAUA,EAAK,UAAU;AAAA,MAC5E,gBACEA,EAAK,eACDI,IACE,oCACA,2DACFJ,EAAK,QAAQ,KAAK,GAAG,IAAI,MAAMA,EAAK;AAAA,MAE1C,WAAWS,EAAK;AAAA,QACd,WAAWJ;AAAA,QACX,UAAUJ;AAAA,QACV,YAAYD,EAAK,gBAAgB,CAACI;AAAA,QAClC,SAASJ,EAAK,gBAAgBI;AAAA,MAAA,CAC/B;AAAA,MAED,UAAA;AAAA,QAAAM,gBAAAA,EAAAA,IAACC,GAAA,EAAW,QAAQ,EAAC,YAAYX,EAAK,WAAA,GAAa,MAAMA,GAAM,MAAM,OAAOA,EAAK,MAAA,CAAO;AAAA,QACxFU,gBAAAA,MAAC,QAAA,EAAK,WAAU,SACb,YAAK,eACJA,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,SAAS,UAAAN,IAAY,YAAY,oBAAA,CAAoB,IAErEG,gBAAAA,EAAAA,KAAAK,YAAA,EACG,UAAA;AAAA,UAAAZ,EAAK,SAAS,IAAI,CAACa,GAAMC,MACxBP,gBAAAA,EAAAA,KAACK,GAAA,EACC,UAAA;AAAA,YAAAF,gBAAAA,EAAAA,IAAC,QAAA,EAA4B,UAAAG,EAAA,GAAlBC,IAAQ,OAAe;AAAA,YAClCJ,gBAAAA,EAAAA,IAAC,QAAA,EAAgC,UAAA,IAAA,GAAtBI,IAAQ,YAAe;AAAA,UAAA,EAAA,GAFrBA,CAGf,CACD;AAAA,UACDJ,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,SAAS,YAAK,MAAA,CAAM;AAAA,QAAA,EAAA,CACtC,EAAA,CAEJ;AAAA,SACE,CAACV,EAAK,gBAAgBI,MACtBM,gBAAAA,EAAAA;AAAAA,UAACK;AAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,CAACC,MAAMb,EAASa,GAAGhB,CAAI;AAAA,YAChC,gBAAc;AAAA,UAAA;AAAA,QAAA;AAAA,MAChB;AAAA,IAAA;AAAA,IAvCGA,EAAK;AAAA,EAAA;AA2ChB;"}
1
+ {"version":3,"file":"LinkManagerItem.es.js","sources":["../../../../../src/components/LinksManager/LinkManagerItem.tsx"],"sourcesContent":["import { FC, Fragment, useState } from 'react'\nimport { Button } from '@ynput/ayon-react-components'\nimport { detailsPanelEntityTypes } from '@shared/api'\nimport * as Styled from './LinksManager.styled'\nimport { LinkEntity } from './LinksManager'\nimport clsx from 'clsx'\nimport { EntityIcon } from '@shared/components/EntityIcon'\n\nexport interface LinkManagerItemProps {\n link: LinkEntity\n count: number\n isSelected?: boolean\n onEntityClick?: (entityId: string, entityType: string) => void\n onRemove: (e: React.MouseEvent<HTMLButtonElement>, link: LinkEntity) => void\n onCountChange?: (newCount: number) => void\n isManager?: boolean\n}\n\nexport const LinkManagerItem: FC<LinkManagerItemProps> = ({\n link,\n count,\n isSelected = false,\n onEntityClick,\n onRemove,\n onCountChange,\n isManager = false,\n}) => {\n const [isEditingCount, setIsEditingCount] = useState(false)\n const [editValue, setEditValue] = useState(count)\n\n const handleBadgeClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (link.isRestricted) return\n setEditValue(count)\n setIsEditingCount(true)\n }\n\n const commitCount = () => {\n const newCount = Math.max(1, editValue)\n if (newCount !== count) {\n onCountChange?.(newCount)\n }\n setIsEditingCount(false)\n }\n\n const cancelEdit = () => {\n setEditValue(count)\n setIsEditingCount(false)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n e.stopPropagation()\n if (e.key === 'Enter') {\n e.currentTarget.blur()\n } else if (e.key === 'Escape') {\n cancelEdit()\n }\n }\n\n const entityTypeSupported = detailsPanelEntityTypes.includes(link.entityType as any)\n const isClickable = entityTypeSupported && !link.isRestricted\n return (\n <Styled.LinkItem\n onClick={() => !isEditingCount && isClickable && onEntityClick?.(link.entityId, link.entityType)}\n data-tooltip={\n link.isRestricted\n ? isManager\n ? 'Unknown Link - Entity not found'\n : 'Access Restricted - Insufficient Permissions to Entity'\n : link.parents.join('/') + '/' + link.label\n }\n className={clsx({\n clickable: isClickable,\n selected: isSelected,\n restricted: link.isRestricted && !isManager,\n unknown: link.isRestricted && isManager,\n })}\n >\n <EntityIcon entity={{entityType: link.entityType}} icon={link?.icon} color={link.color} />\n <span className=\"title\">\n {link.isRestricted ? (\n <span className=\"label\">{isManager ? 'Unknown' : 'Access Restricted'}</span>\n ) : (\n <>\n {link.parents?.map((part, index) => (\n <Fragment key={index}>\n <span key={index + '-path'}>{part}</span>\n <span key={index + '-separator'}>/</span>\n </Fragment>\n ))}\n <span className=\"label\">{link.label}</span>\n </>\n )}\n </span>\n {!link.isRestricted && (\n isEditingCount ? (\n <Styled.CountInput\n value={editValue}\n min={1}\n autoFocus\n onChange={(e) => setEditValue(parseInt(e.target.value) || 1)}\n onFocus={(e) => e.target.select()}\n onBlur={commitCount}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n data-tooltip=\"Number of links to this entity.\"\n />\n ) : (\n <Styled.CountBadge\n onClick={handleBadgeClick}\n tabIndex={0}\n data-tooltip=\"Number of links to this entity.\"\n >\n x{count}\n </Styled.CountBadge>\n )\n )}\n {(!link.isRestricted || isManager) && (\n <Button\n icon={'link_off'}\n variant=\"text\"\n className=\"remove\"\n onClick={(e) => onRemove(e, link)}\n data-tooltip={count > 1 ? `Remove all ${count} links` : 'Remove link'}\n />\n )}\n </Styled.LinkItem>\n )\n}\n"],"names":["LinkManagerItem","link","count","isSelected","onEntityClick","onRemove","onCountChange","isManager","isEditingCount","setIsEditingCount","useState","editValue","setEditValue","handleBadgeClick","e","commitCount","newCount","cancelEdit","handleKeyDown","isClickable","detailsPanelEntityTypes","jsxs","Styled.LinkItem","clsx","jsx","EntityIcon","Fragment","part","index","Styled.CountInput","Styled.CountBadge","Button"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../_virtual/jsx-runtime.cjs.js"),I=require("react"),i=require("./LinksManager.styled.cjs.js"),S=require("lodash");require("react-toastify");const q=require("../../util/getEntityId.cjs.js");require("../../util/pubsub.cjs.js");const L=require("./hooks/useUpdateLinks.cjs.js"),M=require("./AddNewLinks.cjs.js"),v=require("../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js"),b=require("./LinkManagerItem.cjs.js"),C=require("@ynput/ayon-react-components");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/SubtasksModulesContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");const T=require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");const P=({linkTypeLabel:p,direction:u,links:a=[],projectName:n,entityId:m,entityType:y,linkType:g,targetEntityType:s,folderId:d,selectedEntityIds:j=[],onClose:c,onEntityClick:E})=>{const{user:l}=T.useGlobalContext(),R=l?.data?.isAdmin||l?.data?.isManager,o=L({projectName:n,direction:u,entityId:m,entityType:y,targetEntityType:s,linkType:g}),[k,x]=I.useState(null),h=(t,r)=>{t.stopPropagation(),o.remove([{id:r.linkId,target:{entityId:r.entityId,entityType:r.entityType}}])};return e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsxs(i.Container,{children:[e.jsxRuntimeExports.jsxs(i.Header,{children:[S.upperFirst(p)," links (",u,")",e.jsxRuntimeExports.jsx(C.Button,{icon:"close",variant:"text",className:"remove",onClick:c,"data-shortcut":"Escape","data-tooltip-delay":500})]}),e.jsxRuntimeExports.jsxs(i.LinksList,{children:[a?.map(t=>e.jsxRuntimeExports.jsx(b.LinkManagerItem,{link:t,isSelected:j.includes(t.entityId),onEntityClick:E,onRemove:h,isManager:R},t.linkId)),a.length===0&&e.jsxRuntimeExports.jsx(i.SubHeader,{children:"No links yet"})]}),e.jsxRuntimeExports.jsx(M,{targetEntityType:s,projectName:n,onClose:c,onAdd:t=>o.add([{targetEntityId:t,linkId:q.getEntityId()}]),onSearchTypeChange:x})]}),k==="picker"&&e.jsxRuntimeExports.jsx(v.EntityPickerDialog,{onClose:()=>x(null),projectName:n,entityType:s,initialSelection:d?{folder:{[d]:!0}}:void 0,onSubmit:t=>o.add(t.map(r=>({targetEntityId:r,linkId:q.getEntityId()}))),isMultiSelect:!0})]})};exports.LinksManager=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../../../_virtual/jsx-runtime.cjs.js"),E=require("react"),o=require("./LinksManager.styled.cjs.js"),D=require("lodash");require("react-toastify");const d=require("../../util/getEntityId.cjs.js");require("../../util/pubsub.cjs.js");const P=require("./hooks/useUpdateLinks.cjs.js"),G=require("./AddNewLinks.cjs.js"),H=require("../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js"),w=require("./LinkManagerItem.cjs.js"),B=require("@ynput/ayon-react-components");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/SubtasksModulesContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");const F=require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");const K=require("./utils/groupLinks.cjs.js"),O=({linkTypeLabel:I,direction:l,links:m=[],projectName:a,entityId:j,entityType:g,linkType:h,targetEntityType:u,folderId:y,selectedEntityIds:v=[],onClose:x,onEntityClick:R})=>{const{user:q}=F.useGlobalContext(),L=q?.data?.isAdmin||q?.data?.isManager,i=P({projectName:a,direction:l,entityId:j,entityType:g,targetEntityType:u,linkType:h}),[C,p]=E.useState(null),[M,S]=E.useState({}),f=K.groupLinksByEntity(m),k=e=>{const t=M[e.groupKey];return t!==void 0&&t!==e.count?t:e.count},T=(e,t)=>{e.stopPropagation(),i.remove(t.linkIds.map(c=>({id:c,target:{entityId:t.entityId,entityType:t.representative.entityType}})))},b=(e,t)=>{const c=k(e);S(r=>({...r,[e.groupKey]:t}));const s=t-c;if(s>0){const r=Array.from({length:s},()=>({targetEntityId:e.entityId,linkId:d.getEntityId()}));i.add(r)}else if(s<0){const r=e.linkIds.slice(s).map(A=>({id:A,target:{entityId:e.entityId,entityType:e.representative.entityType}}));i.remove(r)}};return n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[n.jsxRuntimeExports.jsxs(o.Container,{onMouseDown:e=>{e.target!==document.activeElement&&document.activeElement instanceof HTMLInputElement&&document.activeElement.blur()},children:[n.jsxRuntimeExports.jsxs(o.Header,{children:[D.upperFirst(I)," links (",l,")",n.jsxRuntimeExports.jsx(B.Button,{icon:"close",variant:"text",className:"remove",onClick:x,"data-shortcut":"Escape","data-tooltip-delay":500})]}),n.jsxRuntimeExports.jsxs(o.LinksList,{children:[f.map(e=>n.jsxRuntimeExports.jsx(w.LinkManagerItem,{link:e.representative,count:k(e),isSelected:v.includes(e.entityId),onEntityClick:R,onRemove:t=>T(t,e),onCountChange:t=>b(e,t),isManager:L},e.representative.linkId)),m.length===0&&n.jsxRuntimeExports.jsx(o.SubHeader,{children:"No links yet"})]}),n.jsxRuntimeExports.jsx(G,{targetEntityType:u,projectName:a,onClose:x,onAdd:e=>i.add([{targetEntityId:e,linkId:d.getEntityId()}]),onSearchTypeChange:p})]}),C==="picker"&&n.jsxRuntimeExports.jsx(H.EntityPickerDialog,{onClose:()=>p(null),projectName:a,entityType:u,initialSelection:y?{folder:{[y]:!0}}:void 0,onSubmit:e=>i.add(e.map(t=>({targetEntityId:t,linkId:d.getEntityId()}))),isMultiSelect:!0})]})};exports.LinksManager=O;
2
2
  //# sourceMappingURL=LinksManager.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinksManager.cjs.js","sources":["../../../../../src/components/LinksManager/LinksManager.tsx"],"sourcesContent":["import { FC, useState } from 'react'\nimport * as Styled from './LinksManager.styled'\nimport { getEntityId } from '@shared/util'\nimport useUpdateLinks from './hooks/useUpdateLinks'\nimport AddNewLinks, { LinkSearchType } from './AddNewLinks'\nimport { EntityPickerDialog, PickerEntityType } from '@shared/containers/EntityPickerDialog'\nimport { upperFirst } from 'lodash'\nimport { LinkManagerItem } from './LinkManagerItem'\nimport { Button } from '@ynput/ayon-react-components'\nimport { useGlobalContext } from '@shared/context'\n\nexport type LinkEntity = {\n linkId: string\n entityId: string\n label: string\n parents: string[]\n entityType: string\n icon: string\n color?: string // color from folder/task type anatomy\n isRestricted?: boolean // flag to indicate if this link is restricted (node is null from API)\n}\n\nexport interface LinksManagerProps {\n linkTypeLabel: string\n direction?: 'in' | 'out'\n links: LinkEntity[] // used to display basic info about the links entity\n projectName: string\n entityId: string // the entity id of the entity that has these links\n linkType: string // full link type e.g. workflow|task|task\n entityType: string // the entity type of the entity that has these links\n targetEntityType: string // the entity type of the out links\n folderId?: string | null // the folder selected or the parent folder of the selected (used in EntityPickerDialog)\n selectedEntityIds?: string[] // list of selected entity IDs to highlight\n onClose?: () => void\n onEntityClick?: (entityId: string, entityType: string) => void // a click on an linked entity\n}\n\nexport const LinksManager: FC<LinksManagerProps> = ({\n linkTypeLabel,\n direction,\n links = [],\n projectName,\n entityId,\n entityType,\n linkType,\n targetEntityType,\n folderId,\n selectedEntityIds = [],\n onClose,\n onEntityClick,\n}) => {\n const { user } = useGlobalContext()\n const isManager = user?.data?.isAdmin || user?.data?.isManager\n\n const linksUpdater = useUpdateLinks({\n projectName,\n direction,\n entityId,\n entityType,\n targetEntityType,\n linkType,\n })\n\n const [searchType, setSearchType] = useState<LinkSearchType>(null)\n\n const handleRemove = (e: React.MouseEvent<HTMLButtonElement>, link: LinkEntity) => {\n // prevent clicks higher up\n e.stopPropagation()\n\n linksUpdater.remove([\n {\n id: link.linkId,\n target: { entityId: link.entityId, entityType: link.entityType },\n },\n ])\n }\n\n return (\n <>\n <Styled.Container>\n <Styled.Header>\n {upperFirst(linkTypeLabel)} links ({direction})\n <Button\n icon={'close'}\n variant=\"text\"\n className=\"remove\"\n onClick={onClose}\n data-shortcut={'Escape'}\n data-tooltip-delay={500}\n />\n </Styled.Header>\n <Styled.LinksList>\n {links?.map((link) => (\n <LinkManagerItem\n key={link.linkId}\n link={link}\n isSelected={selectedEntityIds.includes(link.entityId)}\n onEntityClick={onEntityClick}\n onRemove={handleRemove}\n isManager={isManager}\n />\n ))}\n {links.length === 0 && <Styled.SubHeader>No links yet</Styled.SubHeader>}\n </Styled.LinksList>\n <AddNewLinks\n targetEntityType={targetEntityType}\n projectName={projectName}\n onClose={onClose}\n onAdd={(id) => linksUpdater.add([{ targetEntityId: id, linkId: getEntityId() }])}\n onSearchTypeChange={setSearchType}\n />\n </Styled.Container>\n {searchType === 'picker' && (\n <EntityPickerDialog\n onClose={() => setSearchType(null)}\n projectName={projectName}\n entityType={targetEntityType as PickerEntityType} // the type of entity to pick\n initialSelection={folderId ? { folder: { [folderId]: true } } : undefined} // preselect current folder\n onSubmit={(s) =>\n linksUpdater.add(s.map((id) => ({ targetEntityId: id, linkId: getEntityId() })))\n }\n isMultiSelect\n />\n )}\n </>\n )\n}\n"],"names":["LinksManager","linkTypeLabel","direction","links","projectName","entityId","entityType","linkType","targetEntityType","folderId","selectedEntityIds","onClose","onEntityClick","user","useGlobalContext","isManager","linksUpdater","useUpdateLinks","searchType","setSearchType","useState","handleRemove","e","link","jsxs","Fragment","Styled.Container","Styled.Header","upperFirst","jsx","Button","Styled.LinksList","LinkManagerItem","Styled.SubHeader","AddNewLinks","id","getEntityId","EntityPickerDialog","s"],"mappings":"k6CAqCO,MAAMA,EAAsC,CAAC,CAClD,cAAAC,EACA,UAAAC,EACA,MAAAC,EAAQ,CAAA,EACR,YAAAC,EACA,SAAAC,EACA,WAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,kBAAAC,EAAoB,CAAA,EACpB,QAAAC,EACA,cAAAC,CACF,IAAM,CACJ,KAAM,CAAE,KAAAC,CAAA,EAASC,mBAAA,EACXC,EAAYF,GAAM,MAAM,SAAWA,GAAM,MAAM,UAE/CG,EAAeC,EAAe,CAClC,YAAAb,EACA,UAAAF,EACA,SAAAG,EACA,WAAAC,EACA,iBAAAE,EACA,SAAAD,CAAA,CACD,EAEK,CAACW,EAAYC,CAAa,EAAIC,EAAAA,SAAyB,IAAI,EAE3DC,EAAe,CAACC,EAAwCC,IAAqB,CAEjFD,EAAE,gBAAA,EAEFN,EAAa,OAAO,CAClB,CACE,GAAIO,EAAK,OACT,OAAQ,CAAE,SAAUA,EAAK,SAAU,WAAYA,EAAK,UAAA,CAAW,CACjE,CACD,CACH,EAEA,OACEC,EAAAA,kBAAAA,KAAAC,6BAAA,CACE,SAAA,CAAAD,yBAACE,EAAAA,UAAA,CACC,SAAA,CAAAF,yBAACG,EAAAA,OAAA,CACE,SAAA,CAAAC,EAAAA,WAAW3B,CAAa,EAAE,WAASC,EAAU,IAC9C2B,EAAAA,kBAAAA,IAACC,EAAAA,OAAA,CACC,KAAM,QACN,QAAQ,OACR,UAAU,SACV,QAASnB,EACT,gBAAe,SACf,qBAAoB,GAAA,CAAA,CACtB,EACF,EACAa,yBAACO,EAAAA,UAAA,CACE,SAAA,CAAA5B,GAAO,IAAKoB,GACXM,EAAAA,kBAAAA,IAACG,EAAAA,gBAAA,CAEC,KAAAT,EACA,WAAYb,EAAkB,SAASa,EAAK,QAAQ,EACpD,cAAAX,EACA,SAAUS,EACV,UAAAN,CAAA,EALKQ,EAAK,MAAA,CAOb,EACApB,EAAM,SAAW,2BAAM8B,EAAAA,UAAA,CAAiB,SAAA,cAAA,CAAY,CAAA,EACvD,EACAJ,EAAAA,kBAAAA,IAACK,EAAA,CACC,iBAAA1B,EACA,YAAAJ,EACA,QAAAO,EACA,MAAQwB,GAAOnB,EAAa,IAAI,CAAC,CAAE,eAAgBmB,EAAI,OAAQC,EAAAA,YAAA,CAAY,CAAG,CAAC,EAC/E,mBAAoBjB,CAAA,CAAA,CACtB,EACF,EACCD,IAAe,UACdW,EAAAA,kBAAAA,IAACQ,EAAAA,mBAAA,CACC,QAAS,IAAMlB,EAAc,IAAI,EACjC,YAAAf,EACA,WAAYI,EACZ,iBAAkBC,EAAW,CAAE,OAAQ,CAAE,CAACA,CAAQ,EAAG,EAAA,CAAK,EAAM,OAChE,SAAW6B,GACTtB,EAAa,IAAIsB,EAAE,IAAKH,IAAQ,CAAE,eAAgBA,EAAI,OAAQC,EAAAA,YAAA,CAAY,EAAI,CAAC,EAEjF,cAAa,EAAA,CAAA,CACf,EAEJ,CAEJ"}
1
+ {"version":3,"file":"LinksManager.cjs.js","sources":["../../../../../src/components/LinksManager/LinksManager.tsx"],"sourcesContent":["import { FC, useState } from 'react'\nimport * as Styled from './LinksManager.styled'\nimport { getEntityId } from '@shared/util'\nimport useUpdateLinks from './hooks/useUpdateLinks'\nimport AddNewLinks, { LinkSearchType } from './AddNewLinks'\nimport { EntityPickerDialog, PickerEntityType } from '@shared/containers/EntityPickerDialog'\nimport { upperFirst } from 'lodash'\nimport { LinkManagerItem } from './LinkManagerItem'\nimport { Button } from '@ynput/ayon-react-components'\nimport { useGlobalContext } from '@shared/context'\nimport { groupLinksByEntity, GroupedLink } from './utils/groupLinks'\n\nexport type LinkEntity = {\n linkId: string\n entityId: string\n label: string\n parents: string[]\n entityType: string\n icon: string\n color?: string // color from folder/task type anatomy\n isRestricted?: boolean // flag to indicate if this link is restricted (node is null from API)\n}\n\nexport interface LinksManagerProps {\n linkTypeLabel: string\n direction?: 'in' | 'out'\n links: LinkEntity[] // used to display basic info about the links entity\n projectName: string\n entityId: string // the entity id of the entity that has these links\n linkType: string // full link type e.g. workflow|task|task\n entityType: string // the entity type of the entity that has these links\n targetEntityType: string // the entity type of the out links\n folderId?: string | null // the folder selected or the parent folder of the selected (used in EntityPickerDialog)\n selectedEntityIds?: string[] // list of selected entity IDs to highlight\n onClose?: () => void\n onEntityClick?: (entityId: string, entityType: string) => void // a click on an linked entity\n}\n\nexport const LinksManager: FC<LinksManagerProps> = ({\n linkTypeLabel,\n direction,\n links = [],\n projectName,\n entityId,\n entityType,\n linkType,\n targetEntityType,\n folderId,\n selectedEntityIds = [],\n onClose,\n onEntityClick,\n}) => {\n const { user } = useGlobalContext()\n const isManager = user?.data?.isAdmin || user?.data?.isManager\n\n const linksUpdater = useUpdateLinks({\n projectName,\n direction,\n entityId,\n entityType,\n targetEntityType,\n linkType,\n })\n\n const [searchType, setSearchType] = useState<LinkSearchType>(null)\n // Optimistic counts for immediate UI feedback (creates are not optimistic in the cache)\n const [optimisticCounts, setOptimisticCounts] = useState<Record<string, number>>({})\n\n const groupedLinks = groupLinksByEntity(links)\n\n // Get display count: use optimistic value until real data catches up\n const getDisplayCount = (group: GroupedLink) => {\n const optimistic = optimisticCounts[group.groupKey]\n if (optimistic !== undefined && optimistic !== group.count) {\n return optimistic\n }\n return group.count\n }\n\n const handleRemoveGroup = (e: React.MouseEvent<HTMLButtonElement>, group: GroupedLink) => {\n e.stopPropagation()\n\n linksUpdater.remove(\n group.linkIds.map((id) => ({\n id,\n target: { entityId: group.entityId, entityType: group.representative.entityType },\n })),\n )\n }\n\n const handleCountChange = (group: GroupedLink, newCount: number) => {\n const currentCount = getDisplayCount(group)\n // Set optimistic count immediately for instant UI feedback\n setOptimisticCounts((prev) => ({ ...prev, [group.groupKey]: newCount }))\n\n const diff = newCount - currentCount\n if (diff > 0) {\n // Add more links\n const newLinks = Array.from({ length: diff }, () => ({\n targetEntityId: group.entityId,\n linkId: getEntityId(),\n }))\n linksUpdater.add(newLinks)\n } else if (diff < 0) {\n // Remove links from the end (diff is negative, so slice(-3) takes last 3)\n const linksToRemove = group.linkIds.slice(diff).map((id) => ({\n id,\n target: { entityId: group.entityId, entityType: group.representative.entityType },\n }))\n linksUpdater.remove(linksToRemove)\n }\n }\n\n return (\n <>\n <Styled.Container\n onMouseDown={(e) => {\n // Blur active input when clicking anywhere in the dialog (so count input commits)\n if (e.target !== document.activeElement && document.activeElement instanceof HTMLInputElement) {\n document.activeElement.blur()\n }\n }}\n >\n <Styled.Header>\n {upperFirst(linkTypeLabel)} links ({direction})\n <Button\n icon={'close'}\n variant=\"text\"\n className=\"remove\"\n onClick={onClose}\n data-shortcut={'Escape'}\n data-tooltip-delay={500}\n />\n </Styled.Header>\n <Styled.LinksList>\n {groupedLinks.map((group) => (\n <LinkManagerItem\n key={group.representative.linkId}\n link={group.representative}\n count={getDisplayCount(group)}\n isSelected={selectedEntityIds.includes(group.entityId)}\n onEntityClick={onEntityClick}\n onRemove={(e) => handleRemoveGroup(e, group)}\n onCountChange={(newCount) => handleCountChange(group, newCount)}\n isManager={isManager}\n />\n ))}\n {links.length === 0 && <Styled.SubHeader>No links yet</Styled.SubHeader>}\n </Styled.LinksList>\n <AddNewLinks\n targetEntityType={targetEntityType}\n projectName={projectName}\n onClose={onClose}\n onAdd={(id) => linksUpdater.add([{ targetEntityId: id, linkId: getEntityId() }])}\n onSearchTypeChange={setSearchType}\n />\n </Styled.Container>\n {searchType === 'picker' && (\n <EntityPickerDialog\n onClose={() => setSearchType(null)}\n projectName={projectName}\n entityType={targetEntityType as PickerEntityType} // the type of entity to pick\n initialSelection={folderId ? { folder: { [folderId]: true } } : undefined} // preselect current folder\n onSubmit={(s) =>\n linksUpdater.add(s.map((id) => ({ targetEntityId: id, linkId: getEntityId() })))\n }\n isMultiSelect\n />\n )}\n </>\n )\n}\n"],"names":["LinksManager","linkTypeLabel","direction","links","projectName","entityId","entityType","linkType","targetEntityType","folderId","selectedEntityIds","onClose","onEntityClick","user","useGlobalContext","isManager","linksUpdater","useUpdateLinks","searchType","setSearchType","useState","optimisticCounts","setOptimisticCounts","groupedLinks","groupLinksByEntity","getDisplayCount","group","optimistic","handleRemoveGroup","id","handleCountChange","newCount","currentCount","prev","diff","newLinks","getEntityId","linksToRemove","jsxs","Fragment","Styled.Container","Styled.Header","upperFirst","jsx","Button","Styled.LinksList","LinkManagerItem","e","Styled.SubHeader","AddNewLinks","EntityPickerDialog","s"],"mappings":"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"}