@focus-reactive/payload-plugin-comments 1.1.0

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 (387) hide show
  1. package/README.md +562 -0
  2. package/dist/collection/access/isAuth.d.ts +3 -0
  3. package/dist/collection/access/isAuth.d.ts.map +1 -0
  4. package/dist/collection/access/isAuth.js +8 -0
  5. package/dist/collection/access/isAuth.js.map +1 -0
  6. package/dist/collection/hooks/setAuthorBeforeCreate.d.ts +3 -0
  7. package/dist/collection/hooks/setAuthorBeforeCreate.d.ts.map +1 -0
  8. package/dist/collection/hooks/setAuthorBeforeCreate.js +10 -0
  9. package/dist/collection/hooks/setAuthorBeforeCreate.js.map +1 -0
  10. package/dist/collection/hooks/setTenantBeforeCreate.d.ts +3 -0
  11. package/dist/collection/hooks/setTenantBeforeCreate.d.ts.map +1 -0
  12. package/dist/collection/hooks/setTenantBeforeCreate.js +24 -0
  13. package/dist/collection/hooks/setTenantBeforeCreate.js.map +1 -0
  14. package/dist/collection/index.d.ts +4 -0
  15. package/dist/collection/index.d.ts.map +1 -0
  16. package/dist/collection/index.js +139 -0
  17. package/dist/collection/index.js.map +1 -0
  18. package/dist/components/Avatar/index.d.ts +11 -0
  19. package/dist/components/Avatar/index.d.ts.map +1 -0
  20. package/dist/components/Avatar/index.js +11 -0
  21. package/dist/components/Avatar/index.js.map +1 -0
  22. package/dist/components/CommentEditor/ActionPanel.d.ts +8 -0
  23. package/dist/components/CommentEditor/ActionPanel.d.ts.map +1 -0
  24. package/dist/components/CommentEditor/ActionPanel.js +17 -0
  25. package/dist/components/CommentEditor/ActionPanel.js.map +1 -0
  26. package/dist/components/CommentEditor/index.d.ts +23 -0
  27. package/dist/components/CommentEditor/index.d.ts.map +1 -0
  28. package/dist/components/CommentEditor/index.js +265 -0
  29. package/dist/components/CommentEditor/index.js.map +1 -0
  30. package/dist/components/CommentItem/ToolsPanel.d.ts +9 -0
  31. package/dist/components/CommentItem/ToolsPanel.d.ts.map +1 -0
  32. package/dist/components/CommentItem/ToolsPanel.js +22 -0
  33. package/dist/components/CommentItem/ToolsPanel.js.map +1 -0
  34. package/dist/components/CommentItem/index.d.ts +8 -0
  35. package/dist/components/CommentItem/index.d.ts.map +1 -0
  36. package/dist/components/CommentItem/index.js +65 -0
  37. package/dist/components/CommentItem/index.js.map +1 -0
  38. package/dist/components/CommentsDrawer/components/Header.d.ts +6 -0
  39. package/dist/components/CommentsDrawer/components/Header.d.ts.map +1 -0
  40. package/dist/components/CommentsDrawer/components/Header.js +46 -0
  41. package/dist/components/CommentsDrawer/components/Header.js.map +1 -0
  42. package/dist/components/CommentsDrawer/index.d.ts +6 -0
  43. package/dist/components/CommentsDrawer/index.d.ts.map +1 -0
  44. package/dist/components/CommentsDrawer/index.js +30 -0
  45. package/dist/components/CommentsDrawer/index.js.map +1 -0
  46. package/dist/components/CommentsHeaderButton/index.d.ts +2 -0
  47. package/dist/components/CommentsHeaderButton/index.d.ts.map +1 -0
  48. package/dist/components/CommentsHeaderButton/index.js +19 -0
  49. package/dist/components/CommentsHeaderButton/index.js.map +1 -0
  50. package/dist/components/CommentsPanel/components/CollapsibleGroup.d.ts +10 -0
  51. package/dist/components/CommentsPanel/components/CollapsibleGroup.d.ts.map +1 -0
  52. package/dist/components/CommentsPanel/components/CollapsibleGroup.js +68 -0
  53. package/dist/components/CommentsPanel/components/CollapsibleGroup.js.map +1 -0
  54. package/dist/components/CommentsPanel/components/DocumentView.d.ts +9 -0
  55. package/dist/components/CommentsPanel/components/DocumentView.d.ts.map +1 -0
  56. package/dist/components/CommentsPanel/components/DocumentView.js +20 -0
  57. package/dist/components/CommentsPanel/components/DocumentView.js.map +1 -0
  58. package/dist/components/CommentsPanel/components/FieldGroupSection.d.ts +11 -0
  59. package/dist/components/CommentsPanel/components/FieldGroupSection.d.ts.map +1 -0
  60. package/dist/components/CommentsPanel/components/FieldGroupSection.js +62 -0
  61. package/dist/components/CommentsPanel/components/FieldGroupSection.js.map +1 -0
  62. package/dist/components/CommentsPanel/components/GlobalDocumentView.d.ts +9 -0
  63. package/dist/components/CommentsPanel/components/GlobalDocumentView.d.ts.map +1 -0
  64. package/dist/components/CommentsPanel/components/GlobalDocumentView.js +20 -0
  65. package/dist/components/CommentsPanel/components/GlobalDocumentView.js.map +1 -0
  66. package/dist/components/CommentsPanel/components/GlobalView.d.ts +9 -0
  67. package/dist/components/CommentsPanel/components/GlobalView.d.ts.map +1 -0
  68. package/dist/components/CommentsPanel/components/GlobalView.js +62 -0
  69. package/dist/components/CommentsPanel/components/GlobalView.js.map +1 -0
  70. package/dist/components/CommentsPanel/constants.d.ts +3 -0
  71. package/dist/components/CommentsPanel/constants.d.ts.map +1 -0
  72. package/dist/components/CommentsPanel/constants.js +9 -0
  73. package/dist/components/CommentsPanel/constants.js.map +1 -0
  74. package/dist/components/CommentsPanel/hooks/useCollapseState.d.ts +2 -0
  75. package/dist/components/CommentsPanel/hooks/useCollapseState.d.ts.map +1 -0
  76. package/dist/components/CommentsPanel/hooks/useCollapseState.js +44 -0
  77. package/dist/components/CommentsPanel/hooks/useCollapseState.js.map +1 -0
  78. package/dist/components/CommentsPanel/hooks/useScrollToTargetFieldGroup.d.ts +2 -0
  79. package/dist/components/CommentsPanel/hooks/useScrollToTargetFieldGroup.d.ts.map +1 -0
  80. package/dist/components/CommentsPanel/hooks/useScrollToTargetFieldGroup.js +35 -0
  81. package/dist/components/CommentsPanel/hooks/useScrollToTargetFieldGroup.js.map +1 -0
  82. package/dist/components/CommentsPanel/index.d.ts +6 -0
  83. package/dist/components/CommentsPanel/index.d.ts.map +1 -0
  84. package/dist/components/CommentsPanel/index.js +32 -0
  85. package/dist/components/CommentsPanel/index.js.map +1 -0
  86. package/dist/components/CommentsPanel/types.d.ts +4 -0
  87. package/dist/components/CommentsPanel/types.d.ts.map +1 -0
  88. package/dist/components/CommentsPanel/types.js +1 -0
  89. package/dist/components/CommentsPanel/types.js.map +1 -0
  90. package/dist/components/CommentsPanel/utils/createCollapsibleGroupKey.d.ts +10 -0
  91. package/dist/components/CommentsPanel/utils/createCollapsibleGroupKey.d.ts.map +1 -0
  92. package/dist/components/CommentsPanel/utils/createCollapsibleGroupKey.js +15 -0
  93. package/dist/components/CommentsPanel/utils/createCollapsibleGroupKey.js.map +1 -0
  94. package/dist/components/CommentsPanel/utils/filterComments.d.ts +9 -0
  95. package/dist/components/CommentsPanel/utils/filterComments.d.ts.map +1 -0
  96. package/dist/components/CommentsPanel/utils/filterComments.js +17 -0
  97. package/dist/components/CommentsPanel/utils/filterComments.js.map +1 -0
  98. package/dist/components/CommentsPanel/utils/groupCommentsByFieldPath.d.ts +4 -0
  99. package/dist/components/CommentsPanel/utils/groupCommentsByFieldPath.d.ts.map +1 -0
  100. package/dist/components/CommentsPanel/utils/groupCommentsByFieldPath.js +14 -0
  101. package/dist/components/CommentsPanel/utils/groupCommentsByFieldPath.js.map +1 -0
  102. package/dist/components/CommentsPanel/utils/groupCommentsGlobally.d.ts +18 -0
  103. package/dist/components/CommentsPanel/utils/groupCommentsGlobally.d.ts.map +1 -0
  104. package/dist/components/CommentsPanel/utils/groupCommentsGlobally.js +58 -0
  105. package/dist/components/CommentsPanel/utils/groupCommentsGlobally.js.map +1 -0
  106. package/dist/components/CommentsPanel/utils/resolveEntityLabel.d.ts +3 -0
  107. package/dist/components/CommentsPanel/utils/resolveEntityLabel.d.ts.map +1 -0
  108. package/dist/components/CommentsPanel/utils/resolveEntityLabel.js +14 -0
  109. package/dist/components/CommentsPanel/utils/resolveEntityLabel.js.map +1 -0
  110. package/dist/components/CommentsPanel/utils/resolveFieldLabel.d.ts +11 -0
  111. package/dist/components/CommentsPanel/utils/resolveFieldLabel.d.ts.map +1 -0
  112. package/dist/components/CommentsPanel/utils/resolveFieldLabel.js +9 -0
  113. package/dist/components/CommentsPanel/utils/resolveFieldLabel.js.map +1 -0
  114. package/dist/components/CommentsPanel/utils/sortGroupsByCreatedAt.d.ts +4 -0
  115. package/dist/components/CommentsPanel/utils/sortGroupsByCreatedAt.d.ts.map +1 -0
  116. package/dist/components/CommentsPanel/utils/sortGroupsByCreatedAt.js +11 -0
  117. package/dist/components/CommentsPanel/utils/sortGroupsByCreatedAt.js.map +1 -0
  118. package/dist/components/FieldCommentLabel/AddCommentPopup.d.ts +8 -0
  119. package/dist/components/FieldCommentLabel/AddCommentPopup.d.ts.map +1 -0
  120. package/dist/components/FieldCommentLabel/AddCommentPopup.js +50 -0
  121. package/dist/components/FieldCommentLabel/AddCommentPopup.js.map +1 -0
  122. package/dist/components/FieldCommentLabel/hooks/useStablePath.d.ts +2 -0
  123. package/dist/components/FieldCommentLabel/hooks/useStablePath.d.ts.map +1 -0
  124. package/dist/components/FieldCommentLabel/hooks/useStablePath.js +12 -0
  125. package/dist/components/FieldCommentLabel/hooks/useStablePath.js.map +1 -0
  126. package/dist/components/FieldCommentLabel/index.d.ts +11 -0
  127. package/dist/components/FieldCommentLabel/index.d.ts.map +1 -0
  128. package/dist/components/FieldCommentLabel/index.js +64 -0
  129. package/dist/components/FieldCommentLabel/index.js.map +1 -0
  130. package/dist/components/FieldCommentLabel/types.d.ts +4 -0
  131. package/dist/components/FieldCommentLabel/types.d.ts.map +1 -0
  132. package/dist/components/FieldCommentLabel/types.js +1 -0
  133. package/dist/components/FieldCommentLabel/types.js.map +1 -0
  134. package/dist/components/FieldCommentLabel/utils/buildStablePath.d.ts +2 -0
  135. package/dist/components/FieldCommentLabel/utils/buildStablePath.d.ts.map +1 -0
  136. package/dist/components/FieldCommentLabel/utils/buildStablePath.js +19 -0
  137. package/dist/components/FieldCommentLabel/utils/buildStablePath.js.map +1 -0
  138. package/dist/components/FieldCommentLabel/utils/exludeComments.d.ts +3 -0
  139. package/dist/components/FieldCommentLabel/utils/exludeComments.d.ts.map +1 -0
  140. package/dist/components/FieldCommentLabel/utils/exludeComments.js +12 -0
  141. package/dist/components/FieldCommentLabel/utils/exludeComments.js.map +1 -0
  142. package/dist/components/FieldCommentLabel/utils/resolveLabel.d.ts +3 -0
  143. package/dist/components/FieldCommentLabel/utils/resolveLabel.d.ts.map +1 -0
  144. package/dist/components/FieldCommentLabel/utils/resolveLabel.js +9 -0
  145. package/dist/components/FieldCommentLabel/utils/resolveLabel.js.map +1 -0
  146. package/dist/components/IconButton/index.d.ts +12 -0
  147. package/dist/components/IconButton/index.d.ts.map +1 -0
  148. package/dist/components/IconButton/index.js +38 -0
  149. package/dist/components/IconButton/index.js.map +1 -0
  150. package/dist/components/MentionDropdown.d.ts +11 -0
  151. package/dist/components/MentionDropdown.d.ts.map +1 -0
  152. package/dist/components/MentionDropdown.js +53 -0
  153. package/dist/components/MentionDropdown.js.map +1 -0
  154. package/dist/components/MentionLabel/index.d.ts +7 -0
  155. package/dist/components/MentionLabel/index.d.ts.map +1 -0
  156. package/dist/components/MentionLabel/index.js +21 -0
  157. package/dist/components/MentionLabel/index.js.map +1 -0
  158. package/dist/config.d.ts +4 -0
  159. package/dist/config.d.ts.map +1 -0
  160. package/dist/config.js +17 -0
  161. package/dist/config.js.map +1 -0
  162. package/dist/constants.d.ts +9 -0
  163. package/dist/constants.d.ts.map +1 -0
  164. package/dist/constants.js +22 -0
  165. package/dist/constants.js.map +1 -0
  166. package/dist/hooks/useRelativeDate.d.ts +2 -0
  167. package/dist/hooks/useRelativeDate.d.ts.map +1 -0
  168. package/dist/hooks/useRelativeDate.js +11 -0
  169. package/dist/hooks/useRelativeDate.js.map +1 -0
  170. package/dist/index.d.ts +5 -0
  171. package/dist/index.d.ts.map +1 -0
  172. package/dist/index.js +7 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/plugin.d.ts +4 -0
  175. package/dist/plugin.d.ts.map +1 -0
  176. package/dist/plugin.js +60 -0
  177. package/dist/plugin.js.map +1 -0
  178. package/dist/providers/CommentsDrawerProvider/index.d.ts +14 -0
  179. package/dist/providers/CommentsDrawerProvider/index.d.ts.map +1 -0
  180. package/dist/providers/CommentsDrawerProvider/index.js +28 -0
  181. package/dist/providers/CommentsDrawerProvider/index.js.map +1 -0
  182. package/dist/providers/CommentsProvider/index.d.ts +39 -0
  183. package/dist/providers/CommentsProvider/index.d.ts.map +1 -0
  184. package/dist/providers/CommentsProvider/index.js +237 -0
  185. package/dist/providers/CommentsProvider/index.js.map +1 -0
  186. package/dist/providers/CommentsProvider/mergeDocumentTitles.d.ts +3 -0
  187. package/dist/providers/CommentsProvider/mergeDocumentTitles.d.ts.map +1 -0
  188. package/dist/providers/CommentsProvider/mergeDocumentTitles.js +10 -0
  189. package/dist/providers/CommentsProvider/mergeDocumentTitles.js.map +1 -0
  190. package/dist/providers/CommentsProviderWrapper/index.d.ts +7 -0
  191. package/dist/providers/CommentsProviderWrapper/index.d.ts.map +1 -0
  192. package/dist/providers/CommentsProviderWrapper/index.js +16 -0
  193. package/dist/providers/CommentsProviderWrapper/index.js.map +1 -0
  194. package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.d.ts +13 -0
  195. package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.d.ts.map +1 -0
  196. package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.js +22 -0
  197. package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.js.map +1 -0
  198. package/dist/providers/GlobalCommentsLoader/index.d.ts +10 -0
  199. package/dist/providers/GlobalCommentsLoader/index.d.ts.map +1 -0
  200. package/dist/providers/GlobalCommentsLoader/index.js +31 -0
  201. package/dist/providers/GlobalCommentsLoader/index.js.map +1 -0
  202. package/dist/services/createComment.d.ts +12 -0
  203. package/dist/services/createComment.d.ts.map +1 -0
  204. package/dist/services/createComment.js +83 -0
  205. package/dist/services/createComment.js.map +1 -0
  206. package/dist/services/deleteComment.d.ts +3 -0
  207. package/dist/services/deleteComment.d.ts.map +1 -0
  208. package/dist/services/deleteComment.js +34 -0
  209. package/dist/services/deleteComment.js.map +1 -0
  210. package/dist/services/fetchMentionableUsers.d.ts +3 -0
  211. package/dist/services/fetchMentionableUsers.d.ts.map +1 -0
  212. package/dist/services/fetchMentionableUsers.js +46 -0
  213. package/dist/services/fetchMentionableUsers.js.map +1 -0
  214. package/dist/services/fieldLabels/fetchFieldLabels.d.ts +3 -0
  215. package/dist/services/fieldLabels/fetchFieldLabels.d.ts.map +1 -0
  216. package/dist/services/fieldLabels/fetchFieldLabels.js +74 -0
  217. package/dist/services/fieldLabels/fetchFieldLabels.js.map +1 -0
  218. package/dist/services/fieldLabels/utils/groupFieldPathsByDocument.d.ts +5 -0
  219. package/dist/services/fieldLabels/utils/groupFieldPathsByDocument.d.ts.map +1 -0
  220. package/dist/services/fieldLabels/utils/groupFieldPathsByDocument.js +21 -0
  221. package/dist/services/fieldLabels/utils/groupFieldPathsByDocument.js.map +1 -0
  222. package/dist/services/fieldLabels/utils/resolveFieldPath.d.ts +4 -0
  223. package/dist/services/fieldLabels/utils/resolveFieldPath.d.ts.map +1 -0
  224. package/dist/services/fieldLabels/utils/resolveFieldPath.js +66 -0
  225. package/dist/services/fieldLabels/utils/resolveFieldPath.js.map +1 -0
  226. package/dist/services/fieldLabels/utils/schemaUtils.d.ts +6 -0
  227. package/dist/services/fieldLabels/utils/schemaUtils.d.ts.map +1 -0
  228. package/dist/services/fieldLabels/utils/schemaUtils.js +60 -0
  229. package/dist/services/fieldLabels/utils/schemaUtils.js.map +1 -0
  230. package/dist/services/findAllComments.d.ts +11 -0
  231. package/dist/services/findAllComments.d.ts.map +1 -0
  232. package/dist/services/findAllComments.js +47 -0
  233. package/dist/services/findAllComments.js.map +1 -0
  234. package/dist/services/getCurrentTenantId.d.ts +3 -0
  235. package/dist/services/getCurrentTenantId.d.ts.map +1 -0
  236. package/dist/services/getCurrentTenantId.js +13 -0
  237. package/dist/services/getCurrentTenantId.js.map +1 -0
  238. package/dist/services/getDocumentTitles.d.ts +3 -0
  239. package/dist/services/getDocumentTitles.d.ts.map +1 -0
  240. package/dist/services/getDocumentTitles.js +61 -0
  241. package/dist/services/getDocumentTitles.js.map +1 -0
  242. package/dist/services/getEntitiesLabels.d.ts +3 -0
  243. package/dist/services/getEntitiesLabels.d.ts.map +1 -0
  244. package/dist/services/getEntitiesLabels.js +14 -0
  245. package/dist/services/getEntitiesLabels.js.map +1 -0
  246. package/dist/services/resolveComment.d.ts +3 -0
  247. package/dist/services/resolveComment.d.ts.map +1 -0
  248. package/dist/services/resolveComment.js +41 -0
  249. package/dist/services/resolveComment.js.map +1 -0
  250. package/dist/services/sendMentionEmails.d.ts +11 -0
  251. package/dist/services/sendMentionEmails.d.ts.map +1 -0
  252. package/dist/services/sendMentionEmails.js +73 -0
  253. package/dist/services/sendMentionEmails.js.map +1 -0
  254. package/dist/services/syncAllCommentsData.d.ts +12 -0
  255. package/dist/services/syncAllCommentsData.d.ts.map +1 -0
  256. package/dist/services/syncAllCommentsData.js +48 -0
  257. package/dist/services/syncAllCommentsData.js.map +1 -0
  258. package/dist/styles.css +2 -0
  259. package/dist/translations/en.d.ts +5 -0
  260. package/dist/translations/en.d.ts.map +1 -0
  261. package/dist/translations/en.js +36 -0
  262. package/dist/translations/en.js.map +1 -0
  263. package/dist/translations/types.d.ts +32 -0
  264. package/dist/translations/types.d.ts.map +1 -0
  265. package/dist/translations/types.js +1 -0
  266. package/dist/translations/types.js.map +1 -0
  267. package/dist/types/base.d.ts +10 -0
  268. package/dist/types/base.d.ts.map +1 -0
  269. package/dist/types/base.js +1 -0
  270. package/dist/types/base.js.map +1 -0
  271. package/dist/types/collection.d.ts +2 -0
  272. package/dist/types/collection.d.ts.map +1 -0
  273. package/dist/types/collection.js +1 -0
  274. package/dist/types/collection.js.map +1 -0
  275. package/dist/types/comment.d.ts +23 -0
  276. package/dist/types/comment.d.ts.map +1 -0
  277. package/dist/types/comment.js +1 -0
  278. package/dist/types/comment.js.map +1 -0
  279. package/dist/types/config.d.ts +112 -0
  280. package/dist/types/config.d.ts.map +1 -0
  281. package/dist/types/config.js +1 -0
  282. package/dist/types/config.js.map +1 -0
  283. package/dist/types/entity.d.ts +15 -0
  284. package/dist/types/entity.d.ts.map +1 -0
  285. package/dist/types/entity.js +1 -0
  286. package/dist/types/entity.js.map +1 -0
  287. package/dist/types/general.d.ts +10 -0
  288. package/dist/types/general.d.ts.map +1 -0
  289. package/dist/types/general.js +1 -0
  290. package/dist/types/general.js.map +1 -0
  291. package/dist/types/index.d.ts +8 -0
  292. package/dist/types/index.d.ts.map +1 -0
  293. package/dist/types/index.js +1 -0
  294. package/dist/types/index.js.map +1 -0
  295. package/dist/types/user.d.ts +6 -0
  296. package/dist/types/user.d.ts.map +1 -0
  297. package/dist/types/user.js +1 -0
  298. package/dist/types/user.js.map +1 -0
  299. package/dist/utils/comment/extractVisibleComments.d.ts +13 -0
  300. package/dist/utils/comment/extractVisibleComments.d.ts.map +1 -0
  301. package/dist/utils/comment/extractVisibleComments.js +17 -0
  302. package/dist/utils/comment/extractVisibleComments.js.map +1 -0
  303. package/dist/utils/comment/filterCommentsByLocale.d.ts +3 -0
  304. package/dist/utils/comment/filterCommentsByLocale.d.ts.map +1 -0
  305. package/dist/utils/comment/filterCommentsByLocale.js +12 -0
  306. package/dist/utils/comment/filterCommentsByLocale.js.map +1 -0
  307. package/dist/utils/comment/renderCommentText.d.ts +12 -0
  308. package/dist/utils/comment/renderCommentText.d.ts.map +1 -0
  309. package/dist/utils/comment/renderCommentText.js +38 -0
  310. package/dist/utils/comment/renderCommentText.js.map +1 -0
  311. package/dist/utils/comment/serializeEditor.d.ts +2 -0
  312. package/dist/utils/comment/serializeEditor.d.ts.map +1 -0
  313. package/dist/utils/comment/serializeEditor.js +30 -0
  314. package/dist/utils/comment/serializeEditor.js.map +1 -0
  315. package/dist/utils/config/injectFieldCommentComponents.d.ts +4 -0
  316. package/dist/utils/config/injectFieldCommentComponents.d.ts.map +1 -0
  317. package/dist/utils/config/injectFieldCommentComponents.js +80 -0
  318. package/dist/utils/config/injectFieldCommentComponents.js.map +1 -0
  319. package/dist/utils/config/mergeTranslations.d.ts +3 -0
  320. package/dist/utils/config/mergeTranslations.d.ts.map +1 -0
  321. package/dist/utils/config/mergeTranslations.js +29 -0
  322. package/dist/utils/config/mergeTranslations.js.map +1 -0
  323. package/dist/utils/config/normalizeCollections.d.ts +7 -0
  324. package/dist/utils/config/normalizeCollections.d.ts.map +1 -0
  325. package/dist/utils/config/normalizeCollections.js +15 -0
  326. package/dist/utils/config/normalizeCollections.js.map +1 -0
  327. package/dist/utils/config/overrideCollections.d.ts +3 -0
  328. package/dist/utils/config/overrideCollections.d.ts.map +1 -0
  329. package/dist/utils/config/overrideCollections.js +38 -0
  330. package/dist/utils/config/overrideCollections.js.map +1 -0
  331. package/dist/utils/config/overrideCommentsCollection.d.ts +4 -0
  332. package/dist/utils/config/overrideCommentsCollection.d.ts.map +1 -0
  333. package/dist/utils/config/overrideCommentsCollection.js +14 -0
  334. package/dist/utils/config/overrideCommentsCollection.js.map +1 -0
  335. package/dist/utils/config/overrideGlobals.d.ts +3 -0
  336. package/dist/utils/config/overrideGlobals.d.ts.map +1 -0
  337. package/dist/utils/config/overrideGlobals.js +8 -0
  338. package/dist/utils/config/overrideGlobals.js.map +1 -0
  339. package/dist/utils/error/getDefaultErrorMessage.d.ts +2 -0
  340. package/dist/utils/error/getDefaultErrorMessage.d.ts.map +1 -0
  341. package/dist/utils/error/getDefaultErrorMessage.js +9 -0
  342. package/dist/utils/error/getDefaultErrorMessage.js.map +1 -0
  343. package/dist/utils/general/cn.d.ts +3 -0
  344. package/dist/utils/general/cn.d.ts.map +1 -0
  345. package/dist/utils/general/cn.js +9 -0
  346. package/dist/utils/general/cn.js.map +1 -0
  347. package/dist/utils/general/formatRelativeDate.d.ts +2 -0
  348. package/dist/utils/general/formatRelativeDate.d.ts.map +1 -0
  349. package/dist/utils/general/formatRelativeDate.js +28 -0
  350. package/dist/utils/general/formatRelativeDate.js.map +1 -0
  351. package/dist/utils/general/getURL.d.ts +2 -0
  352. package/dist/utils/general/getURL.d.ts.map +1 -0
  353. package/dist/utils/general/getURL.js +13 -0
  354. package/dist/utils/general/getURL.js.map +1 -0
  355. package/dist/utils/general/getValueByPath.d.ts +4 -0
  356. package/dist/utils/general/getValueByPath.d.ts.map +1 -0
  357. package/dist/utils/general/getValueByPath.js +19 -0
  358. package/dist/utils/general/getValueByPath.js.map +1 -0
  359. package/dist/utils/mention/isSelfMention.d.ts +4 -0
  360. package/dist/utils/mention/isSelfMention.d.ts.map +1 -0
  361. package/dist/utils/mention/isSelfMention.js +7 -0
  362. package/dist/utils/mention/isSelfMention.js.map +1 -0
  363. package/dist/utils/mention/parseMentionIds.d.ts +2 -0
  364. package/dist/utils/mention/parseMentionIds.d.ts.map +1 -0
  365. package/dist/utils/mention/parseMentionIds.js +13 -0
  366. package/dist/utils/mention/parseMentionIds.js.map +1 -0
  367. package/dist/utils/mode/defineModeByPathname.d.ts +11 -0
  368. package/dist/utils/mode/defineModeByPathname.d.ts.map +1 -0
  369. package/dist/utils/mode/defineModeByPathname.js +39 -0
  370. package/dist/utils/mode/defineModeByPathname.js.map +1 -0
  371. package/dist/utils/path/detectPluginBasePath.d.ts +2 -0
  372. package/dist/utils/path/detectPluginBasePath.d.ts.map +1 -0
  373. package/dist/utils/path/detectPluginBasePath.js +8 -0
  374. package/dist/utils/path/detectPluginBasePath.js.map +1 -0
  375. package/dist/utils/path/getComponentPath.d.ts +15 -0
  376. package/dist/utils/path/getComponentPath.d.ts.map +1 -0
  377. package/dist/utils/path/getComponentPath.js +22 -0
  378. package/dist/utils/path/getComponentPath.js.map +1 -0
  379. package/dist/utils/payload/extractPayload.d.ts +3 -0
  380. package/dist/utils/payload/extractPayload.d.ts.map +1 -0
  381. package/dist/utils/payload/extractPayload.js +9 -0
  382. package/dist/utils/payload/extractPayload.js.map +1 -0
  383. package/dist/utils/user/resolveUsername.d.ts +4 -0
  384. package/dist/utils/user/resolveUsername.d.ts.map +1 -0
  385. package/dist/utils/user/resolveUsername.js +14 -0
  386. package/dist/utils/user/resolveUsername.js.map +1 -0
  387. package/package.json +113 -0
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { startTransition } from "react";
4
+ import { useTranslation } from "@payloadcms/ui";
5
+ import { cn } from "../../utils/general/cn";
6
+ import { useComments } from "../../providers/CommentsProvider";
7
+ import { renderCommentText } from "../../utils/comment/renderCommentText";
8
+ import { resolveUsername } from "../../utils/user/resolveUsername";
9
+ import { FALLBACK_DELETED_USERNAME, FALLBACK_USERNAME } from "../../constants";
10
+ import { ToolsPanel } from "./ToolsPanel";
11
+ import { useRelativeDate } from "../../hooks/useRelativeDate";
12
+ import { Avatar } from "../Avatar";
13
+ function CommentItem({ comment, currentUserId }) {
14
+ const { resolveComment, removeComment, usernameFieldPath } = useComments();
15
+ const { t } = useTranslation();
16
+ const createdAtRelativeDate = useRelativeDate(comment.createdAt);
17
+ const deletedUserLabel = t("comments:deletedUser") ?? FALLBACK_DELETED_USERNAME;
18
+ const unknownLabel = t("comments:unknownAuthor") ?? FALLBACK_USERNAME;
19
+ const narrowedAuthor = typeof comment.author === "object" ? comment.author : null;
20
+ const authorName = resolveUsername(narrowedAuthor, usernameFieldPath, unknownLabel);
21
+ const isResolved = comment.isResolved ?? false;
22
+ const authorId = comment.author && typeof comment.author === "object" && "id" in comment.author ? comment.author.id : null;
23
+ const canDelete = currentUserId !== null && authorId === currentUserId;
24
+ const handleToggleResolve = () => {
25
+ startTransition(async () => {
26
+ await resolveComment(comment.id, !isResolved);
27
+ });
28
+ };
29
+ const handleDelete = () => {
30
+ startTransition(async () => {
31
+ await removeComment(comment.id);
32
+ });
33
+ };
34
+ return /* @__PURE__ */ jsxs("div", { className: cn("group relative"), children: [
35
+ /* @__PURE__ */ jsx(
36
+ ToolsPanel,
37
+ {
38
+ isResolved,
39
+ canDelete,
40
+ onDelete: handleDelete,
41
+ onResolve: handleToggleResolve
42
+ }
43
+ ),
44
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-2.5 items-start", children: [
45
+ /* @__PURE__ */ jsx(Avatar, { user: narrowedAuthor, usernameFieldPath, fallbackName: unknownLabel }),
46
+ /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
47
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
48
+ /* @__PURE__ */ jsx("span", { className: "font-semibold text-[13px] text-(--theme-text)", children: authorName }),
49
+ /* @__PURE__ */ jsx("span", { className: "text-[11px] text-(--theme-elevation-450)", children: createdAtRelativeDate })
50
+ ] }),
51
+ /* @__PURE__ */ jsx("p", { className: "m-0 text-[13px] leading-normal text-(--theme-text) whitespace-pre-wrap wrap-break-word", children: renderCommentText({
52
+ text: comment.text,
53
+ mentions: comment.mentions,
54
+ currentUserId,
55
+ usernameFieldPath,
56
+ fallbackDeletedUsername: deletedUserLabel
57
+ }) })
58
+ ] })
59
+ ] })
60
+ ] });
61
+ }
62
+ export {
63
+ CommentItem
64
+ };
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/CommentItem/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { startTransition } from \"react\";\nimport { useTranslation } from \"@payloadcms/ui\";\nimport { cn } from \"../../utils/general/cn\";\nimport type { Comment } from \"../../types\";\nimport { useComments } from \"../../providers/CommentsProvider\";\nimport { renderCommentText } from \"../../utils/comment/renderCommentText\";\nimport { resolveUsername } from \"../../utils/user/resolveUsername\";\nimport { FALLBACK_DELETED_USERNAME, FALLBACK_USERNAME } from \"../../constants\";\nimport { ToolsPanel } from \"./ToolsPanel\";\nimport { useRelativeDate } from \"../../hooks/useRelativeDate\";\nimport { Avatar } from \"../Avatar\";\n\ninterface Props {\n comment: Comment;\n currentUserId: number | null;\n}\n\nexport function CommentItem({ comment, currentUserId }: Props) {\n const { resolveComment, removeComment, usernameFieldPath } = useComments();\n const { t } = useTranslation();\n const createdAtRelativeDate = useRelativeDate(comment.createdAt);\n\n const deletedUserLabel = t(\"comments:deletedUser\" as never) ?? FALLBACK_DELETED_USERNAME;\n const unknownLabel = t(\"comments:unknownAuthor\" as never) ?? FALLBACK_USERNAME;\n const narrowedAuthor = typeof comment.author === \"object\" ? comment.author : null;\n const authorName = resolveUsername(narrowedAuthor, usernameFieldPath, unknownLabel);\n\n const isResolved = comment.isResolved ?? false;\n\n const authorId =\n comment.author && typeof comment.author === \"object\" && \"id\" in comment.author ? comment.author.id : null;\n const canDelete = currentUserId !== null && authorId === currentUserId;\n\n const handleToggleResolve = () => {\n startTransition(async () => {\n await resolveComment(comment.id, !isResolved);\n });\n };\n\n const handleDelete = () => {\n startTransition(async () => {\n await removeComment(comment.id);\n });\n };\n\n return (\n <div className={cn(\"group relative\")}>\n <ToolsPanel\n isResolved={isResolved}\n canDelete={canDelete}\n onDelete={handleDelete}\n onResolve={handleToggleResolve}\n />\n\n <div className=\"flex gap-2.5 items-start\">\n <Avatar user={narrowedAuthor} usernameFieldPath={usernameFieldPath} fallbackName={unknownLabel} />\n\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2 mb-1\">\n <span className=\"font-semibold text-[13px] text-(--theme-text)\">{authorName}</span>\n <span className=\"text-[11px] text-(--theme-elevation-450)\">{createdAtRelativeDate}</span>\n </div>\n\n <p className=\"m-0 text-[13px] leading-normal text-(--theme-text) whitespace-pre-wrap wrap-break-word\">\n {renderCommentText({\n text: comment.text,\n mentions: comment.mentions,\n currentUserId,\n usernameFieldPath,\n fallbackDeletedUsername: deletedUserLabel,\n })}\n </p>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";AAiDM,cAWI,YAXJ;AA/CN,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAC/B,SAAS,UAAU;AAEnB,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,uBAAuB;AAChC,SAAS,2BAA2B,yBAAyB;AAC7D,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,cAAc;AAOhB,SAAS,YAAY,EAAE,SAAS,cAAc,GAAU;AAC7D,QAAM,EAAE,gBAAgB,eAAe,kBAAkB,IAAI,YAAY;AACzE,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,wBAAwB,gBAAgB,QAAQ,SAAS;AAE/D,QAAM,mBAAmB,EAAE,sBAA+B,KAAK;AAC/D,QAAM,eAAe,EAAE,wBAAiC,KAAK;AAC7D,QAAM,iBAAiB,OAAO,QAAQ,WAAW,WAAW,QAAQ,SAAS;AAC7E,QAAM,aAAa,gBAAgB,gBAAgB,mBAAmB,YAAY;AAElF,QAAM,aAAa,QAAQ,cAAc;AAEzC,QAAM,WACJ,QAAQ,UAAU,OAAO,QAAQ,WAAW,YAAY,QAAQ,QAAQ,SAAS,QAAQ,OAAO,KAAK;AACvG,QAAM,YAAY,kBAAkB,QAAQ,aAAa;AAEzD,QAAM,sBAAsB,MAAM;AAChC,oBAAgB,YAAY;AAC1B,YAAM,eAAe,QAAQ,IAAI,CAAC,UAAU;AAAA,IAC9C,CAAC;AAAA,EACH;AAEA,QAAM,eAAe,MAAM;AACzB,oBAAgB,YAAY;AAC1B,YAAM,cAAc,QAAQ,EAAE;AAAA,IAChC,CAAC;AAAA,EACH;AAEA,SACE,qBAAC,SAAI,WAAW,GAAG,gBAAgB,GACjC;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,WAAW;AAAA;AAAA,IACb;AAAA,IAEA,qBAAC,SAAI,WAAU,4BACb;AAAA,0BAAC,UAAO,MAAM,gBAAgB,mBAAsC,cAAc,cAAc;AAAA,MAEhG,qBAAC,SAAI,WAAU,UACb;AAAA,6BAAC,SAAI,WAAU,gCACb;AAAA,8BAAC,UAAK,WAAU,iDAAiD,sBAAW;AAAA,UAC5E,oBAAC,UAAK,WAAU,4CAA4C,iCAAsB;AAAA,WACpF;AAAA,QAEA,oBAAC,OAAE,WAAU,0FACV,4BAAkB;AAAA,UACjB,MAAM,QAAQ;AAAA,UACd,UAAU,QAAQ;AAAA,UAClB;AAAA,UACA;AAAA,UACA,yBAAyB;AAAA,QAC3B,CAAC,GACH;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,6 @@
1
+ interface HeaderProps {
2
+ slug: string;
3
+ }
4
+ export declare function Header({ slug }: HeaderProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsDrawer/components/Header.tsx"],"names":[],"mappings":"AASA,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,2CAwC3C"}
@@ -0,0 +1,46 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { SelectInput, useModal, useTranslation } from "@payloadcms/ui";
4
+ import { useComments } from "../../../providers/CommentsProvider";
5
+ import { LoaderCircleIcon, XIcon } from "lucide-react";
6
+ import { IconButton } from "../../IconButton";
7
+ function Header({ slug }) {
8
+ const { t } = useTranslation();
9
+ const { closeModal } = useModal();
10
+ const { filter, setFilter, syncCommentsStatus } = useComments();
11
+ const options = [
12
+ { label: t("comments:filterOpen"), value: "open" },
13
+ { label: t("comments:filterResolved"), value: "resolved" },
14
+ { label: t("comments:filterMentioned"), value: "mentioned" }
15
+ ];
16
+ return /* @__PURE__ */ jsxs("header", { className: "sticky top-0 flex items-center gap-3 py-5 bg-(--theme-bg)", children: [
17
+ /* @__PURE__ */ jsx("h2", { className: "m-0 text-2xl font-bold", children: t("comments:label") }),
18
+ syncCommentsStatus === "loading" && /* @__PURE__ */ jsx(
19
+ LoaderCircleIcon,
20
+ {
21
+ width: 14,
22
+ height: 14,
23
+ className: "text-(--theme-elevation-450) animate-spin shrink-0",
24
+ "aria-label": t("comments:syncingComments")
25
+ }
26
+ ),
27
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 ml-auto", children: [
28
+ /* @__PURE__ */ jsx(
29
+ SelectInput,
30
+ {
31
+ name: "filter",
32
+ path: "filter",
33
+ options,
34
+ value: filter,
35
+ onChange: (option) => setFilter(option.value),
36
+ isClearable: false
37
+ }
38
+ ),
39
+ /* @__PURE__ */ jsx(IconButton, { onClick: () => closeModal(slug), title: t("comments:close"), children: /* @__PURE__ */ jsx(XIcon, { width: 16, height: 16 }) })
40
+ ] })
41
+ ] });
42
+ }
43
+ export {
44
+ Header
45
+ };
46
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsDrawer/components/Header.tsx"],"sourcesContent":["\"use client\";\n\nimport { SelectInput, useModal, useTranslation } from \"@payloadcms/ui\";\nimport { useComments } from \"../../../providers/CommentsProvider\";\nimport type { FilterMode } from \"../../../types\";\nimport { LoaderCircleIcon, XIcon } from \"lucide-react\";\nimport type { OptionObject } from \"payload\";\nimport { IconButton } from \"../../IconButton\";\n\ninterface HeaderProps {\n slug: string;\n}\n\nexport function Header({ slug }: HeaderProps) {\n const { t } = useTranslation();\n const { closeModal } = useModal();\n const { filter, setFilter, syncCommentsStatus } = useComments();\n\n const options = [\n { label: t(\"comments:filterOpen\" as never), value: \"open\" },\n { label: t(\"comments:filterResolved\" as never), value: \"resolved\" },\n { label: t(\"comments:filterMentioned\" as never), value: \"mentioned\" },\n ];\n\n return (\n <header className=\"sticky top-0 flex items-center gap-3 py-5 bg-(--theme-bg)\">\n <h2 className=\"m-0 text-2xl font-bold\">{t(\"comments:label\" as never)}</h2>\n\n {syncCommentsStatus === \"loading\" && (\n <LoaderCircleIcon\n width={14}\n height={14}\n className=\"text-(--theme-elevation-450) animate-spin shrink-0\"\n aria-label={t(\"comments:syncingComments\" as never)}\n />\n )}\n\n <div className=\"flex items-center gap-2 ml-auto\">\n <SelectInput\n name=\"filter\"\n path=\"filter\"\n options={options}\n value={filter}\n onChange={(option) => setFilter((option as OptionObject).value as FilterMode)}\n isClearable={false}\n />\n\n <IconButton onClick={() => closeModal(slug)} title={t(\"comments:close\" as never)}>\n <XIcon width={16} height={16} />\n </IconButton>\n </div>\n </header>\n );\n}\n"],"mappings":";AA0BM,cAWA,YAXA;AAxBN,SAAS,aAAa,UAAU,sBAAsB;AACtD,SAAS,mBAAmB;AAE5B,SAAS,kBAAkB,aAAa;AAExC,SAAS,kBAAkB;AAMpB,SAAS,OAAO,EAAE,KAAK,GAAgB;AAC5C,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,EAAE,WAAW,IAAI,SAAS;AAChC,QAAM,EAAE,QAAQ,WAAW,mBAAmB,IAAI,YAAY;AAE9D,QAAM,UAAU;AAAA,IACd,EAAE,OAAO,EAAE,qBAA8B,GAAG,OAAO,OAAO;AAAA,IAC1D,EAAE,OAAO,EAAE,yBAAkC,GAAG,OAAO,WAAW;AAAA,IAClE,EAAE,OAAO,EAAE,0BAAmC,GAAG,OAAO,YAAY;AAAA,EACtE;AAEA,SACE,qBAAC,YAAO,WAAU,6DAChB;AAAA,wBAAC,QAAG,WAAU,0BAA0B,YAAE,gBAAyB,GAAE;AAAA,IAEpE,uBAAuB,aACtB;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAU;AAAA,QACV,cAAY,EAAE,0BAAmC;AAAA;AAAA,IACnD;AAAA,IAGF,qBAAC,SAAI,WAAU,mCACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,MAAK;AAAA,UACL;AAAA,UACA,OAAO;AAAA,UACP,UAAU,CAAC,WAAW,UAAW,OAAwB,KAAmB;AAAA,UAC5E,aAAa;AAAA;AAAA,MACf;AAAA,MAEA,oBAAC,cAAW,SAAS,MAAM,WAAW,IAAI,GAAG,OAAO,EAAE,gBAAyB,GAC7E,8BAAC,SAAM,OAAO,IAAI,QAAQ,IAAI,GAChC;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,6 @@
1
+ interface Props {
2
+ slug: string;
3
+ }
4
+ export declare function CommentsDrawer({ slug }: Props): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CommentsDrawer/index.tsx"],"names":[],"mappings":"AAQA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,2CAoB7C"}
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { createPortal } from "react-dom";
4
+ import { CommentsPanel } from "../CommentsPanel";
5
+ import { Header } from "./components/Header";
6
+ import { cn } from "../../utils/general/cn";
7
+ import { Drawer, useModal } from "@payloadcms/ui";
8
+ function CommentsDrawer({ slug }) {
9
+ const { modalState, closeModal, containerRef } = useModal();
10
+ const isOpen = !!modalState[slug]?.isOpen;
11
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
12
+ isOpen && containerRef.current && createPortal(
13
+ /* @__PURE__ */ jsx("div", { className: "fixed inset-0 bg-black/50 z-29 cursor-pointer", onClick: () => closeModal(slug) }),
14
+ containerRef.current
15
+ ),
16
+ /* @__PURE__ */ jsx(
17
+ Drawer,
18
+ {
19
+ className: cn("comments-drawer max-w-150 w-full m-0 ml-auto relative"),
20
+ slug,
21
+ Header: /* @__PURE__ */ jsx(Header, { slug }),
22
+ children: /* @__PURE__ */ jsx(CommentsPanel, { className: "pb-5" })
23
+ }
24
+ )
25
+ ] });
26
+ }
27
+ export {
28
+ CommentsDrawer
29
+ };
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/CommentsDrawer/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { createPortal } from \"react-dom\";\nimport { CommentsPanel } from \"../CommentsPanel\";\nimport { Header } from \"./components/Header\";\nimport { cn } from \"../../utils/general/cn\";\nimport { Drawer, useModal } from \"@payloadcms/ui\";\n\ninterface Props {\n slug: string;\n}\n\nexport function CommentsDrawer({ slug }: Props) {\n const { modalState, closeModal, containerRef } = useModal();\n const isOpen = !!modalState[slug]?.isOpen;\n\n return (\n <>\n {isOpen\n && containerRef.current\n && createPortal(\n <div className=\"fixed inset-0 bg-black/50 z-29 cursor-pointer\" onClick={() => closeModal(slug)} />,\n containerRef.current,\n )}\n <Drawer\n className={cn(\"comments-drawer max-w-150 w-full m-0 ml-auto relative\")}\n slug={slug}\n Header={<Header slug={slug} />}>\n <CommentsPanel className=\"pb-5\" />\n </Drawer>\n </>\n );\n}\n"],"mappings":";AAiBI,mBAIM,KAJN;AAfJ,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AACvB,SAAS,UAAU;AACnB,SAAS,QAAQ,gBAAgB;AAM1B,SAAS,eAAe,EAAE,KAAK,GAAU;AAC9C,QAAM,EAAE,YAAY,YAAY,aAAa,IAAI,SAAS;AAC1D,QAAM,SAAS,CAAC,CAAC,WAAW,IAAI,GAAG;AAEnC,SACE,iCACG;AAAA,cACI,aAAa,WACb;AAAA,MACD,oBAAC,SAAI,WAAU,iDAAgD,SAAS,MAAM,WAAW,IAAI,GAAG;AAAA,MAChG,aAAa;AAAA,IACf;AAAA,IACF;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,uDAAuD;AAAA,QACrE;AAAA,QACA,QAAQ,oBAAC,UAAO,MAAY;AAAA,QAC5B,8BAAC,iBAAc,WAAU,QAAO;AAAA;AAAA,IAClC;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,2 @@
1
+ export declare function CommentsHeaderButton(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CommentsHeaderButton/index.tsx"],"names":[],"mappings":"AAQA,wBAAgB,oBAAoB,4CAanC"}
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { useTranslation } from "@payloadcms/ui";
4
+ import { MessageSquare } from "lucide-react";
5
+ import { CommentsDrawer } from "../CommentsDrawer";
6
+ import { useCommentsDrawer } from "../../providers/CommentsDrawerProvider";
7
+ import { IconButton } from "../IconButton";
8
+ function CommentsHeaderButton() {
9
+ const { slug, open } = useCommentsDrawer();
10
+ const { t } = useTranslation();
11
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
12
+ /* @__PURE__ */ jsx(IconButton, { variant: "neutralSecondary", onClick: () => open(), title: t("comments:openCommentsAria"), children: /* @__PURE__ */ jsx(MessageSquare, { size: 16 }) }),
13
+ /* @__PURE__ */ jsx(CommentsDrawer, { slug })
14
+ ] });
15
+ }
16
+ export {
17
+ CommentsHeaderButton
18
+ };
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/CommentsHeaderButton/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTranslation } from \"@payloadcms/ui\";\nimport { MessageSquare } from \"lucide-react\";\nimport { CommentsDrawer } from \"../CommentsDrawer\";\nimport { useCommentsDrawer } from \"../../providers/CommentsDrawerProvider\";\nimport { IconButton } from \"../IconButton\";\n\nexport function CommentsHeaderButton() {\n const { slug, open } = useCommentsDrawer();\n const { t } = useTranslation();\n\n return (\n <>\n <IconButton variant=\"neutralSecondary\" onClick={() => open()} title={t(\"comments:openCommentsAria\" as never)}>\n <MessageSquare size={16} />\n </IconButton>\n\n <CommentsDrawer slug={slug} />\n </>\n );\n}\n"],"mappings":";AAaI,mBAEI,KAFJ;AAXJ,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;AAClC,SAAS,kBAAkB;AAEpB,SAAS,uBAAuB;AACrC,QAAM,EAAE,MAAM,KAAK,IAAI,kBAAkB;AACzC,QAAM,EAAE,EAAE,IAAI,eAAe;AAE7B,SACE,iCACE;AAAA,wBAAC,cAAW,SAAQ,oBAAmB,SAAS,MAAM,KAAK,GAAG,OAAO,EAAE,2BAAoC,GACzG,8BAAC,iBAAc,MAAM,IAAI,GAC3B;AAAA,IAEA,oBAAC,kBAAe,MAAY;AAAA,KAC9B;AAEJ;","names":[]}
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from "react";
2
+ interface CollapsibleGroupProps {
3
+ groupKey: string;
4
+ label: string;
5
+ children: ReactNode;
6
+ level: "collection" | "document" | "field";
7
+ }
8
+ export declare function CollapsibleGroup({ groupKey, label, children, level }: CollapsibleGroupProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=CollapsibleGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsibleGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/components/CollapsibleGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;CAC5C;AAgCD,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,qBAAqB,2CAyB3F"}
@@ -0,0 +1,68 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { ChevronDown } from "lucide-react";
4
+ import { cva } from "class-variance-authority";
5
+ import { useCollapseState } from "../hooks/useCollapseState";
6
+ import { cn } from "../../../utils/general/cn";
7
+ const collapsibleGroupVariants = {
8
+ wrapper: cva("flex w-full items-center gap-2 cursor-pointer select-none", {
9
+ variants: {
10
+ level: {
11
+ collection: "py-2",
12
+ document: "py-2",
13
+ field: "py-1.5"
14
+ }
15
+ }
16
+ }),
17
+ label: cva("flex-1 truncate", {
18
+ variants: {
19
+ level: {
20
+ collection: "text-[14px] font-semibold text-(--theme-text)",
21
+ document: "text-[13px] font-semibold text-(--theme-text)",
22
+ field: "text-[12px] font-medium text-(--theme-elevation-600)"
23
+ }
24
+ }
25
+ }),
26
+ childWrapper: cva("", {
27
+ variants: {
28
+ level: {
29
+ collection: "border-l-2 border-(--theme-elevation-100) pl-3",
30
+ document: "border-l-2 border-(--theme-elevation-100) pl-3",
31
+ field: ""
32
+ }
33
+ }
34
+ })
35
+ };
36
+ function CollapsibleGroup({ groupKey, label, children, level }) {
37
+ const [isCollapsed, toggle] = useCollapseState(groupKey);
38
+ return /* @__PURE__ */ jsxs("div", { children: [
39
+ /* @__PURE__ */ jsxs(
40
+ "div",
41
+ {
42
+ role: "button",
43
+ tabIndex: 0,
44
+ onClick: toggle,
45
+ onKeyDown: (e) => (e.key === "Enter" || e.key === " ") && toggle(),
46
+ "aria-expanded": !isCollapsed,
47
+ className: collapsibleGroupVariants.wrapper({ level }),
48
+ children: [
49
+ /* @__PURE__ */ jsx("span", { className: collapsibleGroupVariants.label({ level }), children: label }),
50
+ /* @__PURE__ */ jsx(
51
+ ChevronDown,
52
+ {
53
+ className: cn(
54
+ "shrink-0 w-4 h-4 text-(--theme-elevation-450) transition-transform duration-150",
55
+ isCollapsed && "-rotate-90"
56
+ )
57
+ }
58
+ )
59
+ ]
60
+ }
61
+ ),
62
+ !isCollapsed && /* @__PURE__ */ jsx("div", { className: collapsibleGroupVariants.childWrapper({ level }), children })
63
+ ] });
64
+ }
65
+ export {
66
+ CollapsibleGroup
67
+ };
68
+ //# sourceMappingURL=CollapsibleGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/components/CollapsibleGroup.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cva } from \"class-variance-authority\";\nimport { useCollapseState } from \"../hooks/useCollapseState\";\nimport { cn } from \"../../../utils/general/cn\";\n\ninterface CollapsibleGroupProps {\n groupKey: string;\n label: string;\n children: ReactNode;\n level: \"collection\" | \"document\" | \"field\";\n}\n\nconst collapsibleGroupVariants = {\n wrapper: cva(\"flex w-full items-center gap-2 cursor-pointer select-none\", {\n variants: {\n level: {\n collection: \"py-2\",\n document: \"py-2\",\n field: \"py-1.5\",\n },\n },\n }),\n label: cva(\"flex-1 truncate\", {\n variants: {\n level: {\n collection: \"text-[14px] font-semibold text-(--theme-text)\",\n document: \"text-[13px] font-semibold text-(--theme-text)\",\n field: \"text-[12px] font-medium text-(--theme-elevation-600)\",\n },\n },\n }),\n childWrapper: cva(\"\", {\n variants: {\n level: {\n collection: \"border-l-2 border-(--theme-elevation-100) pl-3\",\n document: \"border-l-2 border-(--theme-elevation-100) pl-3\",\n field: \"\",\n },\n },\n }),\n};\n\nexport function CollapsibleGroup({ groupKey, label, children, level }: CollapsibleGroupProps) {\n const [isCollapsed, toggle] = useCollapseState(groupKey);\n\n return (\n <div>\n <div\n role=\"button\"\n tabIndex={0}\n onClick={toggle}\n onKeyDown={(e) => (e.key === \"Enter\" || e.key === \" \") && toggle()}\n aria-expanded={!isCollapsed}\n className={collapsibleGroupVariants.wrapper({ level })}>\n <span className={collapsibleGroupVariants.label({ level })}>{label}</span>\n\n <ChevronDown\n className={cn(\n \"shrink-0 w-4 h-4 text-(--theme-elevation-450) transition-transform duration-150\",\n isCollapsed && \"-rotate-90\",\n )}\n />\n </div>\n\n {!isCollapsed && <div className={collapsibleGroupVariants.childWrapper({ level })}>{children}</div>}\n </div>\n );\n}\n"],"mappings":";AAkDM,SAOE,KAPF;AA/CN,SAAS,mBAAmB;AAC5B,SAAS,WAAW;AACpB,SAAS,wBAAwB;AACjC,SAAS,UAAU;AASnB,MAAM,2BAA2B;AAAA,EAC/B,SAAS,IAAI,6DAA6D;AAAA,IACxE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,OAAO,IAAI,mBAAmB;AAAA,IAC5B,UAAU;AAAA,MACR,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,cAAc,IAAI,IAAI;AAAA,IACpB,UAAU;AAAA,MACR,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,iBAAiB,EAAE,UAAU,OAAO,UAAU,MAAM,GAA0B;AAC5F,QAAM,CAAC,aAAa,MAAM,IAAI,iBAAiB,QAAQ;AAEvD,SACE,qBAAC,SACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,WAAW,CAAC,OAAO,EAAE,QAAQ,WAAW,EAAE,QAAQ,QAAQ,OAAO;AAAA,QACjE,iBAAe,CAAC;AAAA,QAChB,WAAW,yBAAyB,QAAQ,EAAE,MAAM,CAAC;AAAA,QACrD;AAAA,8BAAC,UAAK,WAAW,yBAAyB,MAAM,EAAE,MAAM,CAAC,GAAI,iBAAM;AAAA,UAEnE;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,eAAe;AAAA,cACjB;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IACF;AAAA,IAEC,CAAC,eAAe,oBAAC,SAAI,WAAW,yBAAyB,aAAa,EAAE,MAAM,CAAC,GAAI,UAAS;AAAA,KAC/F;AAEJ;","names":[]}
@@ -0,0 +1,9 @@
1
+ import type { Comment } from "../../../types";
2
+ interface Props {
3
+ comments: Comment[];
4
+ userId: number | null;
5
+ className: string;
6
+ }
7
+ export declare function DocumentView({ comments, userId, className }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=DocumentView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentView.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/components/DocumentView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAM9C,UAAU,KAAK;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,2CAiBlE"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useTranslation } from "@payloadcms/ui";
4
+ import { useComments } from "../../../providers/CommentsProvider";
5
+ import { groupCommentsByFieldPath } from "../utils/groupCommentsByFieldPath";
6
+ import { FILTER_NO_COMMENTS_KEYS } from "../constants";
7
+ import { FieldGroupSection } from "./FieldGroupSection";
8
+ function DocumentView({ comments, userId, className }) {
9
+ const { t } = useTranslation();
10
+ const { filter } = useComments();
11
+ const fields = groupCommentsByFieldPath(comments);
12
+ return /* @__PURE__ */ jsxs("div", { className, children: [
13
+ comments.length === 0 && /* @__PURE__ */ jsx("p", { className: "text-(--theme-elevation-450) text-[13px] text-center py-6 m-0", children: t(FILTER_NO_COMMENTS_KEYS[filter]) }),
14
+ /* @__PURE__ */ jsx(FieldGroupSection, { fields, userId })
15
+ ] });
16
+ }
17
+ export {
18
+ DocumentView
19
+ };
20
+ //# sourceMappingURL=DocumentView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/components/DocumentView.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTranslation } from \"@payloadcms/ui\";\nimport type { Comment } from \"../../../types\";\nimport { useComments } from \"../../../providers/CommentsProvider\";\nimport { groupCommentsByFieldPath } from \"../utils/groupCommentsByFieldPath\";\nimport { FILTER_NO_COMMENTS_KEYS } from \"../constants\";\nimport { FieldGroupSection } from \"./FieldGroupSection\";\n\ninterface Props {\n comments: Comment[];\n userId: number | null;\n className: string;\n}\n\nexport function DocumentView({ comments, userId, className }: Props) {\n const { t } = useTranslation();\n const { filter } = useComments();\n\n const fields = groupCommentsByFieldPath(comments);\n\n return (\n <div className={className}>\n {comments.length === 0 && (\n <p className=\"text-(--theme-elevation-450) text-[13px] text-center py-6 m-0\">\n {t(FILTER_NO_COMMENTS_KEYS[filter] as never)}\n </p>\n )}\n\n <FieldGroupSection fields={fields} userId={userId} />\n </div>\n );\n}\n"],"mappings":";AAsBI,SAEI,KAFJ;AApBJ,SAAS,sBAAsB;AAE/B,SAAS,mBAAmB;AAC5B,SAAS,gCAAgC;AACzC,SAAS,+BAA+B;AACxC,SAAS,yBAAyB;AAQ3B,SAAS,aAAa,EAAE,UAAU,QAAQ,UAAU,GAAU;AACnE,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,EAAE,OAAO,IAAI,YAAY;AAE/B,QAAM,SAAS,yBAAyB,QAAQ;AAEhD,SACE,qBAAC,SAAI,WACF;AAAA,aAAS,WAAW,KACnB,oBAAC,OAAE,WAAU,iEACV,YAAE,wBAAwB,MAAM,CAAU,GAC7C;AAAA,IAGF,oBAAC,qBAAkB,QAAgB,QAAgB;AAAA,KACrD;AAEJ;","names":[]}
@@ -0,0 +1,11 @@
1
+ import type { Comment } from "../../../types/comment";
2
+ interface Props {
3
+ fields: Map<string | null, Comment[]>;
4
+ userId: number | null;
5
+ collectionSlug?: string;
6
+ documentId?: number;
7
+ globalSlug?: string;
8
+ }
9
+ export declare function FieldGroupSection({ fields, userId, collectionSlug, documentId, globalSlug }: Props): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=FieldGroupSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldGroupSection.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/components/FieldGroupSection.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAQtD,UAAU,KAAK;IACb,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,KAAK,2CAiDlG"}
@@ -0,0 +1,62 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { useTranslation } from "@payloadcms/ui";
4
+ import { CollapsibleGroup } from "./CollapsibleGroup";
5
+ import { CommentItem } from "../../CommentItem";
6
+ import { createCollapsibleGroupKey } from "../utils/createCollapsibleGroupKey";
7
+ import { resolveFieldLabel } from "../utils/resolveFieldLabel";
8
+ import { useComments } from "../../../providers/CommentsProvider";
9
+ import { CommentEditor } from "../../CommentEditor";
10
+ function FieldGroupSection({ fields, userId, collectionSlug, documentId, globalSlug }) {
11
+ const { t } = useTranslation();
12
+ const { fieldLabelRegistry } = useComments();
13
+ const generalComments = fields.get(null) ?? [];
14
+ const fieldEntries = [...fields.entries()].filter((entry) => entry[0] !== null);
15
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
16
+ /* @__PURE__ */ jsx(
17
+ CollapsibleGroup,
18
+ {
19
+ groupKey: createCollapsibleGroupKey({ collectionSlug, documentId, globalSlug, fieldPath: null }),
20
+ label: t("comments:general"),
21
+ level: "field",
22
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
23
+ generalComments.map((comment) => /* @__PURE__ */ jsx(CommentItem, { comment, currentUserId: userId }, comment.id)),
24
+ /* @__PURE__ */ jsx(
25
+ CommentEditor,
26
+ {
27
+ fieldPath: null,
28
+ collectionSlug,
29
+ documentId,
30
+ globalSlug
31
+ }
32
+ )
33
+ ] })
34
+ }
35
+ ),
36
+ fieldEntries.map(([fieldPath, fieldComments]) => /* @__PURE__ */ jsx(
37
+ CollapsibleGroup,
38
+ {
39
+ groupKey: createCollapsibleGroupKey({ collectionSlug, documentId, globalSlug, fieldPath }),
40
+ label: resolveFieldLabel({ registry: fieldLabelRegistry, collectionSlug, documentId, globalSlug, fieldPath }),
41
+ level: "field",
42
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", "data-field-path": fieldPath, children: [
43
+ fieldComments.map((comment) => /* @__PURE__ */ jsx(CommentItem, { comment, currentUserId: userId }, comment.id)),
44
+ /* @__PURE__ */ jsx(
45
+ CommentEditor,
46
+ {
47
+ fieldPath,
48
+ collectionSlug,
49
+ documentId,
50
+ globalSlug
51
+ }
52
+ )
53
+ ] })
54
+ },
55
+ fieldPath
56
+ ))
57
+ ] });
58
+ }
59
+ export {
60
+ FieldGroupSection
61
+ };
62
+ //# sourceMappingURL=FieldGroupSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/components/FieldGroupSection.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTranslation } from \"@payloadcms/ui\";\nimport type { Comment } from \"../../../types/comment\";\nimport { CollapsibleGroup } from \"./CollapsibleGroup\";\nimport { CommentItem } from \"../../CommentItem\";\nimport { createCollapsibleGroupKey } from \"../utils/createCollapsibleGroupKey\";\nimport { resolveFieldLabel } from \"../utils/resolveFieldLabel\";\nimport { useComments } from \"../../../providers/CommentsProvider\";\nimport { CommentEditor } from \"../../CommentEditor\";\n\ninterface Props {\n fields: Map<string | null, Comment[]>;\n userId: number | null;\n collectionSlug?: string;\n documentId?: number;\n globalSlug?: string;\n}\n\nexport function FieldGroupSection({ fields, userId, collectionSlug, documentId, globalSlug }: Props) {\n const { t } = useTranslation();\n const { fieldLabelRegistry } = useComments();\n\n const generalComments = fields.get(null) ?? [];\n const fieldEntries = [...fields.entries()].filter((entry): entry is [string, Comment[]] => entry[0] !== null);\n\n return (\n <>\n <CollapsibleGroup\n groupKey={createCollapsibleGroupKey({ collectionSlug, documentId, globalSlug, fieldPath: null })}\n label={t(\"comments:general\" as never)}\n level=\"field\">\n <div className=\"flex flex-col gap-3\">\n {generalComments.map((comment) => (\n <CommentItem key={comment.id} comment={comment} currentUserId={userId} />\n ))}\n\n <CommentEditor\n fieldPath={null}\n collectionSlug={collectionSlug}\n documentId={documentId}\n globalSlug={globalSlug}\n />\n </div>\n </CollapsibleGroup>\n\n {fieldEntries.map(([fieldPath, fieldComments]) => (\n <CollapsibleGroup\n key={fieldPath}\n groupKey={createCollapsibleGroupKey({ collectionSlug, documentId, globalSlug, fieldPath })}\n label={resolveFieldLabel({ registry: fieldLabelRegistry, collectionSlug, documentId, globalSlug, fieldPath })}\n level=\"field\">\n <div className=\"flex flex-col gap-3\" data-field-path={fieldPath}>\n {fieldComments.map((comment) => (\n <CommentItem key={comment.id} comment={comment} currentUserId={userId} />\n ))}\n\n <CommentEditor\n fieldPath={fieldPath}\n collectionSlug={collectionSlug}\n documentId={documentId}\n globalSlug={globalSlug}\n />\n </div>\n </CollapsibleGroup>\n ))}\n </>\n );\n}\n"],"mappings":";AA2BI,mBAOQ,KAFJ,YALJ;AAzBJ,SAAS,sBAAsB;AAE/B,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,SAAS,iCAAiC;AAC1C,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAUvB,SAAS,kBAAkB,EAAE,QAAQ,QAAQ,gBAAgB,YAAY,WAAW,GAAU;AACnG,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,EAAE,mBAAmB,IAAI,YAAY;AAE3C,QAAM,kBAAkB,OAAO,IAAI,IAAI,KAAK,CAAC;AAC7C,QAAM,eAAe,CAAC,GAAG,OAAO,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAwC,MAAM,CAAC,MAAM,IAAI;AAE5G,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,0BAA0B,EAAE,gBAAgB,YAAY,YAAY,WAAW,KAAK,CAAC;AAAA,QAC/F,OAAO,EAAE,kBAA2B;AAAA,QACpC,OAAM;AAAA,QACN,+BAAC,SAAI,WAAU,uBACZ;AAAA,0BAAgB,IAAI,CAAC,YACpB,oBAAC,eAA6B,SAAkB,eAAe,UAA7C,QAAQ,EAA6C,CACxE;AAAA,UAED;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACF;AAAA,WACF;AAAA;AAAA,IACF;AAAA,IAEC,aAAa,IAAI,CAAC,CAAC,WAAW,aAAa,MAC1C;AAAA,MAAC;AAAA;AAAA,QAEC,UAAU,0BAA0B,EAAE,gBAAgB,YAAY,YAAY,UAAU,CAAC;AAAA,QACzF,OAAO,kBAAkB,EAAE,UAAU,oBAAoB,gBAAgB,YAAY,YAAY,UAAU,CAAC;AAAA,QAC5G,OAAM;AAAA,QACN,+BAAC,SAAI,WAAU,uBAAsB,mBAAiB,WACnD;AAAA,wBAAc,IAAI,CAAC,YAClB,oBAAC,eAA6B,SAAkB,eAAe,UAA7C,QAAQ,EAA6C,CACxE;AAAA,UAED;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACF;AAAA,WACF;AAAA;AAAA,MAfK;AAAA,IAgBP,CACD;AAAA,KACH;AAEJ;","names":[]}
@@ -0,0 +1,9 @@
1
+ import type { Comment } from "../../../types";
2
+ interface Props {
3
+ comments: Comment[];
4
+ userId: number | null;
5
+ className: string;
6
+ }
7
+ export declare function GlobalDocumentView({ comments, userId, className }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=GlobalDocumentView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalDocumentView.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/components/GlobalDocumentView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAM9C,UAAU,KAAK;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,2CAiBxE"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useTranslation } from "@payloadcms/ui";
4
+ import { useComments } from "../../../providers/CommentsProvider";
5
+ import { groupCommentsByFieldPath } from "../utils/groupCommentsByFieldPath";
6
+ import { FILTER_NO_COMMENTS_KEYS } from "../constants";
7
+ import { FieldGroupSection } from "./FieldGroupSection";
8
+ function GlobalDocumentView({ comments, userId, className }) {
9
+ const { t } = useTranslation();
10
+ const { filter } = useComments();
11
+ const fields = groupCommentsByFieldPath(comments);
12
+ return /* @__PURE__ */ jsxs("div", { className, children: [
13
+ comments.length === 0 && /* @__PURE__ */ jsx("p", { className: "text-(--theme-elevation-450) text-[13px] text-center py-6 m-0", children: t(FILTER_NO_COMMENTS_KEYS[filter]) }),
14
+ /* @__PURE__ */ jsx(FieldGroupSection, { fields, userId })
15
+ ] });
16
+ }
17
+ export {
18
+ GlobalDocumentView
19
+ };
20
+ //# sourceMappingURL=GlobalDocumentView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/components/GlobalDocumentView.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTranslation } from \"@payloadcms/ui\";\nimport type { Comment } from \"../../../types\";\nimport { useComments } from \"../../../providers/CommentsProvider\";\nimport { groupCommentsByFieldPath } from \"../utils/groupCommentsByFieldPath\";\nimport { FILTER_NO_COMMENTS_KEYS } from \"../constants\";\nimport { FieldGroupSection } from \"./FieldGroupSection\";\n\ninterface Props {\n comments: Comment[];\n userId: number | null;\n className: string;\n}\n\nexport function GlobalDocumentView({ comments, userId, className }: Props) {\n const { t } = useTranslation();\n const { filter } = useComments();\n\n const fields = groupCommentsByFieldPath(comments);\n\n return (\n <div className={className}>\n {comments.length === 0 && (\n <p className=\"text-(--theme-elevation-450) text-[13px] text-center py-6 m-0\">\n {t(FILTER_NO_COMMENTS_KEYS[filter] as never)}\n </p>\n )}\n\n <FieldGroupSection fields={fields} userId={userId} />\n </div>\n );\n}\n"],"mappings":";AAsBI,SAEI,KAFJ;AApBJ,SAAS,sBAAsB;AAE/B,SAAS,mBAAmB;AAC5B,SAAS,gCAAgC;AACzC,SAAS,+BAA+B;AACxC,SAAS,yBAAyB;AAQ3B,SAAS,mBAAmB,EAAE,UAAU,QAAQ,UAAU,GAAU;AACzE,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,EAAE,OAAO,IAAI,YAAY;AAE/B,QAAM,SAAS,yBAAyB,QAAQ;AAEhD,SACE,qBAAC,SAAI,WACF;AAAA,aAAS,WAAW,KACnB,oBAAC,OAAE,WAAU,iEACV,YAAE,wBAAwB,MAAM,CAAU,GAC7C;AAAA,IAGF,oBAAC,qBAAkB,QAAgB,QAAgB;AAAA,KACrD;AAEJ;","names":[]}
@@ -0,0 +1,9 @@
1
+ import type { Comment } from "../../../types/comment";
2
+ interface Props {
3
+ comments: Comment[];
4
+ userId: number | null;
5
+ className: string;
6
+ }
7
+ export declare function GlobalView({ comments, userId, className }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=GlobalView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalView.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/components/GlobalView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAStD,UAAU,KAAK;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,2CAwDhE"}
@@ -0,0 +1,62 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useLocale, useTranslation } from "@payloadcms/ui";
4
+ import { useComments } from "../../../providers/CommentsProvider";
5
+ import { groupCommentsGlobally } from "../utils/groupCommentsGlobally";
6
+ import { resolveEntityLabel } from "../utils/resolveEntityLabel";
7
+ import { CollapsibleGroup } from "./CollapsibleGroup";
8
+ import { FILTER_NO_COMMENTS_KEYS } from "../constants";
9
+ import { FieldGroupSection } from "./FieldGroupSection";
10
+ import { createCollapsibleGroupKey } from "../utils/createCollapsibleGroupKey";
11
+ function GlobalView({ comments, userId, className }) {
12
+ const { t } = useTranslation();
13
+ const { documentTitles, filter, collectionLabels, globalLabels } = useComments();
14
+ const { code: locale } = useLocale();
15
+ const groupedComments = groupCommentsGlobally(comments);
16
+ return /* @__PURE__ */ jsxs("div", { className, children: [
17
+ comments.length === 0 && /* @__PURE__ */ jsx("p", { className: "text-(--theme-elevation-450) text-[13px] text-center py-6 m-0", children: t(FILTER_NO_COMMENTS_KEYS[filter]) }),
18
+ groupedComments.map((entry) => {
19
+ if (entry.type === "collection") {
20
+ const { slug: slug2, docs } = entry;
21
+ return /* @__PURE__ */ jsx(
22
+ CollapsibleGroup,
23
+ {
24
+ groupKey: slug2,
25
+ label: resolveEntityLabel(collectionLabels[slug2], locale, slug2),
26
+ level: "collection",
27
+ children: [...docs.entries()].map(([docId, fields2]) => {
28
+ const title = documentTitles[slug2]?.[String(docId)] ?? String(docId);
29
+ const documentId = Number(docId);
30
+ return /* @__PURE__ */ jsx(
31
+ CollapsibleGroup,
32
+ {
33
+ groupKey: createCollapsibleGroupKey({ collectionSlug: slug2, documentId }),
34
+ label: title,
35
+ level: "document",
36
+ children: /* @__PURE__ */ jsx(FieldGroupSection, { fields: fields2, userId, collectionSlug: slug2, documentId })
37
+ },
38
+ docId
39
+ );
40
+ })
41
+ },
42
+ slug2
43
+ );
44
+ }
45
+ const { slug, fields } = entry;
46
+ return /* @__PURE__ */ jsx(
47
+ CollapsibleGroup,
48
+ {
49
+ groupKey: slug,
50
+ label: resolveEntityLabel(globalLabels[slug], locale, slug),
51
+ level: "collection",
52
+ children: /* @__PURE__ */ jsx(FieldGroupSection, { fields, userId, globalSlug: slug })
53
+ },
54
+ slug
55
+ );
56
+ })
57
+ ] });
58
+ }
59
+ export {
60
+ GlobalView
61
+ };
62
+ //# sourceMappingURL=GlobalView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/components/GlobalView.tsx"],"sourcesContent":["\"use client\";\n\nimport { useLocale, useTranslation } from \"@payloadcms/ui\";\nimport type { Comment } from \"../../../types/comment\";\nimport { useComments } from \"../../../providers/CommentsProvider\";\nimport { groupCommentsGlobally } from \"../utils/groupCommentsGlobally\";\nimport { resolveEntityLabel } from \"../utils/resolveEntityLabel\";\nimport { CollapsibleGroup } from \"./CollapsibleGroup\";\nimport { FILTER_NO_COMMENTS_KEYS } from \"../constants\";\nimport { FieldGroupSection } from \"./FieldGroupSection\";\nimport { createCollapsibleGroupKey } from \"../utils/createCollapsibleGroupKey\";\n\ninterface Props {\n comments: Comment[];\n userId: number | null;\n className: string;\n}\n\nexport function GlobalView({ comments, userId, className }: Props) {\n const { t } = useTranslation();\n const { documentTitles, filter, collectionLabels, globalLabels } = useComments();\n const { code: locale } = useLocale();\n const groupedComments = groupCommentsGlobally(comments);\n\n return (\n <div className={className}>\n {comments.length === 0 && (\n <p className=\"text-(--theme-elevation-450) text-[13px] text-center py-6 m-0\">\n {t(FILTER_NO_COMMENTS_KEYS[filter] as never)}\n </p>\n )}\n\n {groupedComments.map((entry) => {\n if (entry.type === \"collection\") {\n const { slug, docs } = entry;\n\n return (\n <CollapsibleGroup\n key={slug}\n groupKey={slug}\n label={resolveEntityLabel(collectionLabels[slug], locale, slug)}\n level=\"collection\">\n {[...docs.entries()].map(([docId, fields]) => {\n const title = documentTitles[slug]?.[String(docId)] ?? String(docId);\n const documentId = Number(docId);\n\n return (\n <CollapsibleGroup\n key={docId}\n groupKey={createCollapsibleGroupKey({ collectionSlug: slug, documentId })}\n label={title}\n level=\"document\">\n <FieldGroupSection fields={fields} userId={userId} collectionSlug={slug} documentId={documentId} />\n </CollapsibleGroup>\n );\n })}\n </CollapsibleGroup>\n );\n }\n\n const { slug, fields } = entry;\n\n return (\n <CollapsibleGroup\n key={slug}\n groupKey={slug}\n label={resolveEntityLabel(globalLabels[slug], locale, slug)}\n level=\"collection\">\n <FieldGroupSection fields={fields} userId={userId} globalSlug={slug} />\n </CollapsibleGroup>\n );\n })}\n </div>\n );\n}\n"],"mappings":";AAyBI,SAEI,KAFJ;AAvBJ,SAAS,WAAW,sBAAsB;AAE1C,SAAS,mBAAmB;AAC5B,SAAS,6BAA6B;AACtC,SAAS,0BAA0B;AACnC,SAAS,wBAAwB;AACjC,SAAS,+BAA+B;AACxC,SAAS,yBAAyB;AAClC,SAAS,iCAAiC;AAQnC,SAAS,WAAW,EAAE,UAAU,QAAQ,UAAU,GAAU;AACjE,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,EAAE,gBAAgB,QAAQ,kBAAkB,aAAa,IAAI,YAAY;AAC/E,QAAM,EAAE,MAAM,OAAO,IAAI,UAAU;AACnC,QAAM,kBAAkB,sBAAsB,QAAQ;AAEtD,SACE,qBAAC,SAAI,WACF;AAAA,aAAS,WAAW,KACnB,oBAAC,OAAE,WAAU,iEACV,YAAE,wBAAwB,MAAM,CAAU,GAC7C;AAAA,IAGD,gBAAgB,IAAI,CAAC,UAAU;AAC9B,UAAI,MAAM,SAAS,cAAc;AAC/B,cAAM,EAAE,MAAAA,OAAM,KAAK,IAAI;AAEvB,eACE;AAAA,UAAC;AAAA;AAAA,YAEC,UAAUA;AAAA,YACV,OAAO,mBAAmB,iBAAiBA,KAAI,GAAG,QAAQA,KAAI;AAAA,YAC9D,OAAM;AAAA,YACL,WAAC,GAAG,KAAK,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,OAAOC,OAAM,MAAM;AAC5C,oBAAM,QAAQ,eAAeD,KAAI,IAAI,OAAO,KAAK,CAAC,KAAK,OAAO,KAAK;AACnE,oBAAM,aAAa,OAAO,KAAK;AAE/B,qBACE;AAAA,gBAAC;AAAA;AAAA,kBAEC,UAAU,0BAA0B,EAAE,gBAAgBA,OAAM,WAAW,CAAC;AAAA,kBACxE,OAAO;AAAA,kBACP,OAAM;AAAA,kBACN,8BAAC,qBAAkB,QAAQC,SAAQ,QAAgB,gBAAgBD,OAAM,YAAwB;AAAA;AAAA,gBAJ5F;AAAA,cAKP;AAAA,YAEJ,CAAC;AAAA;AAAA,UAjBIA;AAAA,QAkBP;AAAA,MAEJ;AAEA,YAAM,EAAE,MAAM,OAAO,IAAI;AAEzB,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,UAAU;AAAA,UACV,OAAO,mBAAmB,aAAa,IAAI,GAAG,QAAQ,IAAI;AAAA,UAC1D,OAAM;AAAA,UACN,8BAAC,qBAAkB,QAAgB,QAAgB,YAAY,MAAM;AAAA;AAAA,QAJhE;AAAA,MAKP;AAAA,IAEJ,CAAC;AAAA,KACH;AAEJ;","names":["slug","fields"]}
@@ -0,0 +1,3 @@
1
+ import type { FilterMode } from "../../types";
2
+ export declare const FILTER_NO_COMMENTS_KEYS: Record<FilterMode, string>;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/CommentsPanel/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAI9D,CAAC"}
@@ -0,0 +1,9 @@
1
+ const FILTER_NO_COMMENTS_KEYS = {
2
+ open: "comments:noOpenComments",
3
+ resolved: "comments:noResolvedComments",
4
+ mentioned: "comments:noMentionedComments"
5
+ };
6
+ export {
7
+ FILTER_NO_COMMENTS_KEYS
8
+ };
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/CommentsPanel/constants.ts"],"sourcesContent":["import type { FilterMode } from \"../../types\";\n\nexport const FILTER_NO_COMMENTS_KEYS: Record<FilterMode, string> = {\n open: \"comments:noOpenComments\",\n resolved: \"comments:noResolvedComments\",\n mentioned: \"comments:noMentionedComments\",\n};\n"],"mappings":"AAEO,MAAM,0BAAsD;AAAA,EACjE,MAAM;AAAA,EACN,UAAU;AAAA,EACV,WAAW;AACb;","names":[]}
@@ -0,0 +1,2 @@
1
+ export declare function useCollapseState(groupKey: string): [isCollapsed: boolean, toggle: () => void];
2
+ //# sourceMappingURL=useCollapseState.d.ts.map