@focus-reactive/payload-plugin-comments 1.0.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 +563 -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 +28 -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,2 @@
1
+ export declare function useCollapseState(groupKey: string): [isCollapsed: boolean, toggle: () => void];
2
+ //# sourceMappingURL=useCollapseState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCollapseState.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/hooks/useCollapseState.ts"],"names":[],"mappings":"AAoBA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CA8B7F"}
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { useState, useEffect } from "react";
3
+ const STORAGE_KEY = "payload-comments-collapsed";
4
+ function readStorage() {
5
+ try {
6
+ return JSON.parse(localStorage.getItem(STORAGE_KEY) ?? "{}");
7
+ } catch {
8
+ return {};
9
+ }
10
+ }
11
+ function writeStorage(data) {
12
+ try {
13
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(data));
14
+ } catch {
15
+ }
16
+ }
17
+ function useCollapseState(groupKey) {
18
+ const [isCollapsed, setIsCollapsed] = useState(() => {
19
+ const stored = readStorage();
20
+ return stored[groupKey] === true;
21
+ });
22
+ useEffect(() => {
23
+ const stored = readStorage();
24
+ setIsCollapsed(stored[groupKey] === true);
25
+ }, [groupKey]);
26
+ const toggle = () => {
27
+ setIsCollapsed((prev) => {
28
+ const next = !prev;
29
+ const stored = readStorage();
30
+ if (next) {
31
+ stored[groupKey] = true;
32
+ } else {
33
+ delete stored[groupKey];
34
+ }
35
+ writeStorage(stored);
36
+ return next;
37
+ });
38
+ };
39
+ return [isCollapsed, toggle];
40
+ }
41
+ export {
42
+ useCollapseState
43
+ };
44
+ //# sourceMappingURL=useCollapseState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/hooks/useCollapseState.ts"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect } from \"react\";\n\nconst STORAGE_KEY = \"payload-comments-collapsed\";\n\nfunction readStorage(): Record<string, boolean> {\n try {\n return JSON.parse(localStorage.getItem(STORAGE_KEY) ?? \"{}\");\n } catch {\n return {};\n }\n}\n\nfunction writeStorage(data: Record<string, boolean>) {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(data));\n } catch {}\n}\n\nexport function useCollapseState(groupKey: string): [isCollapsed: boolean, toggle: () => void] {\n const [isCollapsed, setIsCollapsed] = useState(() => {\n const stored = readStorage();\n\n return stored[groupKey] === true;\n });\n\n useEffect(() => {\n const stored = readStorage();\n\n setIsCollapsed(stored[groupKey] === true);\n }, [groupKey]);\n\n const toggle = () => {\n setIsCollapsed((prev) => {\n const next = !prev;\n const stored = readStorage();\n\n if (next) {\n stored[groupKey] = true;\n } else {\n delete stored[groupKey];\n }\n\n writeStorage(stored);\n return next;\n });\n };\n\n return [isCollapsed, toggle];\n}\n"],"mappings":";AAEA,SAAS,UAAU,iBAAiB;AAEpC,MAAM,cAAc;AAEpB,SAAS,cAAuC;AAC9C,MAAI;AACF,WAAO,KAAK,MAAM,aAAa,QAAQ,WAAW,KAAK,IAAI;AAAA,EAC7D,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEA,SAAS,aAAa,MAA+B;AACnD,MAAI;AACF,iBAAa,QAAQ,aAAa,KAAK,UAAU,IAAI,CAAC;AAAA,EACxD,QAAQ;AAAA,EAAC;AACX;AAEO,SAAS,iBAAiB,UAA8D;AAC7F,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,MAAM;AACnD,UAAM,SAAS,YAAY;AAE3B,WAAO,OAAO,QAAQ,MAAM;AAAA,EAC9B,CAAC;AAED,YAAU,MAAM;AACd,UAAM,SAAS,YAAY;AAE3B,mBAAe,OAAO,QAAQ,MAAM,IAAI;AAAA,EAC1C,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,SAAS,MAAM;AACnB,mBAAe,CAAC,SAAS;AACvB,YAAM,OAAO,CAAC;AACd,YAAM,SAAS,YAAY;AAE3B,UAAI,MAAM;AACR,eAAO,QAAQ,IAAI;AAAA,MACrB,OAAO;AACL,eAAO,OAAO,QAAQ;AAAA,MACxB;AAEA,mBAAa,MAAM;AACnB,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SAAO,CAAC,aAAa,MAAM;AAC7B;","names":[]}
@@ -0,0 +1,2 @@
1
+ export declare function useScrollToTargetFieldGroup(): void;
2
+ //# sourceMappingURL=useScrollToTargetFieldGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollToTargetFieldGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/hooks/useScrollToTargetFieldGroup.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,SAqC1C"}
@@ -0,0 +1,35 @@
1
+ import { useCommentsDrawer } from "../../../providers/CommentsDrawerProvider";
2
+ import { useLayoutEffect } from "react";
3
+ function useScrollToTargetFieldGroup() {
4
+ const { scrollTargetPath, setScrollTargetPath } = useCommentsDrawer();
5
+ useLayoutEffect(() => {
6
+ if (!scrollTargetPath) return;
7
+ const id = setTimeout(() => {
8
+ const section = document.querySelector(`[data-field-path="${CSS.escape(scrollTargetPath)}"]`);
9
+ if (!section) return;
10
+ let scrollContainer = section.parentElement;
11
+ while (scrollContainer && scrollContainer !== document.documentElement) {
12
+ const { overflow, overflowY } = getComputedStyle(scrollContainer);
13
+ if (/auto|scroll/.test(overflow + overflowY)) break;
14
+ scrollContainer = scrollContainer.parentElement;
15
+ }
16
+ if (!scrollContainer || scrollContainer === document.documentElement) {
17
+ section.scrollIntoView({ behavior: "smooth", block: "start" });
18
+ setScrollTargetPath(null);
19
+ return;
20
+ }
21
+ const header = scrollContainer.querySelector("header");
22
+ const headerHeight = header?.getBoundingClientRect().height ?? 0;
23
+ const sectionTop = section.getBoundingClientRect().top;
24
+ const containerTop = scrollContainer.getBoundingClientRect().top;
25
+ const scrollOffset = sectionTop - containerTop - headerHeight + scrollContainer.scrollTop;
26
+ scrollContainer.scrollTo({ top: scrollOffset, behavior: "smooth" });
27
+ setScrollTargetPath(null);
28
+ }, 300);
29
+ return () => clearTimeout(id);
30
+ }, [scrollTargetPath, setScrollTargetPath]);
31
+ }
32
+ export {
33
+ useScrollToTargetFieldGroup
34
+ };
35
+ //# sourceMappingURL=useScrollToTargetFieldGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/hooks/useScrollToTargetFieldGroup.ts"],"sourcesContent":["import { useCommentsDrawer } from \"../../../providers/CommentsDrawerProvider\";\nimport { useLayoutEffect } from \"react\";\n\nexport function useScrollToTargetFieldGroup() {\n const { scrollTargetPath, setScrollTargetPath } = useCommentsDrawer();\n\n useLayoutEffect(() => {\n if (!scrollTargetPath) return;\n\n const id = setTimeout(() => {\n const section = document.querySelector(`[data-field-path=\"${CSS.escape(scrollTargetPath)}\"]`);\n if (!section) return;\n\n let scrollContainer: Element | null = section.parentElement;\n\n while (scrollContainer && scrollContainer !== document.documentElement) {\n const { overflow, overflowY } = getComputedStyle(scrollContainer);\n if (/auto|scroll/.test(overflow + overflowY)) break;\n scrollContainer = scrollContainer.parentElement;\n }\n\n if (!scrollContainer || scrollContainer === document.documentElement) {\n section.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n setScrollTargetPath(null);\n return;\n }\n\n const header = scrollContainer.querySelector(\"header\");\n const headerHeight = header?.getBoundingClientRect().height ?? 0;\n\n const sectionTop = section.getBoundingClientRect().top;\n const containerTop = scrollContainer.getBoundingClientRect().top;\n const scrollOffset = sectionTop - containerTop - headerHeight + scrollContainer.scrollTop;\n\n scrollContainer.scrollTo({ top: scrollOffset, behavior: \"smooth\" });\n setScrollTargetPath(null);\n }, 300);\n\n return () => clearTimeout(id);\n }, [scrollTargetPath, setScrollTargetPath]);\n}\n"],"mappings":"AAAA,SAAS,yBAAyB;AAClC,SAAS,uBAAuB;AAEzB,SAAS,8BAA8B;AAC5C,QAAM,EAAE,kBAAkB,oBAAoB,IAAI,kBAAkB;AAEpE,kBAAgB,MAAM;AACpB,QAAI,CAAC,iBAAkB;AAEvB,UAAM,KAAK,WAAW,MAAM;AAC1B,YAAM,UAAU,SAAS,cAAc,qBAAqB,IAAI,OAAO,gBAAgB,CAAC,IAAI;AAC5F,UAAI,CAAC,QAAS;AAEd,UAAI,kBAAkC,QAAQ;AAE9C,aAAO,mBAAmB,oBAAoB,SAAS,iBAAiB;AACtE,cAAM,EAAE,UAAU,UAAU,IAAI,iBAAiB,eAAe;AAChE,YAAI,cAAc,KAAK,WAAW,SAAS,EAAG;AAC9C,0BAAkB,gBAAgB;AAAA,MACpC;AAEA,UAAI,CAAC,mBAAmB,oBAAoB,SAAS,iBAAiB;AACpE,gBAAQ,eAAe,EAAE,UAAU,UAAU,OAAO,QAAQ,CAAC;AAC7D,4BAAoB,IAAI;AACxB;AAAA,MACF;AAEA,YAAM,SAAS,gBAAgB,cAAc,QAAQ;AACrD,YAAM,eAAe,QAAQ,sBAAsB,EAAE,UAAU;AAE/D,YAAM,aAAa,QAAQ,sBAAsB,EAAE;AACnD,YAAM,eAAe,gBAAgB,sBAAsB,EAAE;AAC7D,YAAM,eAAe,aAAa,eAAe,eAAe,gBAAgB;AAEhF,sBAAgB,SAAS,EAAE,KAAK,cAAc,UAAU,SAAS,CAAC;AAClE,0BAAoB,IAAI;AAAA,IAC1B,GAAG,GAAG;AAEN,WAAO,MAAM,aAAa,EAAE;AAAA,EAC9B,GAAG,CAAC,kBAAkB,mBAAmB,CAAC;AAC5C;","names":[]}
@@ -0,0 +1,6 @@
1
+ interface Props {
2
+ className: string;
3
+ }
4
+ export declare const CommentsPanel: ({ className }: 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/CommentsPanel/index.tsx"],"names":[],"mappings":"AAWA,UAAU,KAAK;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,kBAAmB,KAAK,4CAsBjD,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { useAuth } from "@payloadcms/ui";
4
+ import { cn } from "../../utils/general/cn";
5
+ import { useComments } from "../../providers/CommentsProvider";
6
+ import { filterComments } from "./utils/filterComments";
7
+ import { DocumentView } from "./components/DocumentView";
8
+ import { GlobalView } from "./components/GlobalView";
9
+ import { GlobalDocumentView } from "./components/GlobalDocumentView";
10
+ import { useScrollToTargetFieldGroup } from "./hooks/useScrollToTargetFieldGroup";
11
+ const CommentsPanel = ({ className }) => {
12
+ const { user } = useAuth();
13
+ const { visibleComments, filter, mode } = useComments();
14
+ const userId = user?.id ?? null;
15
+ const filteredComments = filterComments({
16
+ comments: visibleComments,
17
+ filter,
18
+ currentUserId: userId ?? void 0
19
+ });
20
+ useScrollToTargetFieldGroup();
21
+ if (mode === "document") {
22
+ return /* @__PURE__ */ jsx(DocumentView, { comments: filteredComments, userId, className: cn(className) });
23
+ }
24
+ if (mode === "global-document") {
25
+ return /* @__PURE__ */ jsx(GlobalDocumentView, { comments: filteredComments, userId, className: cn(className) });
26
+ }
27
+ return /* @__PURE__ */ jsx(GlobalView, { comments: filteredComments, userId, className: cn(className) });
28
+ };
29
+ export {
30
+ CommentsPanel
31
+ };
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/CommentsPanel/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { useAuth } from \"@payloadcms/ui\";\nimport { cn } from \"../../utils/general/cn\";\nimport { useComments } from \"../../providers/CommentsProvider\";\nimport { filterComments } from \"./utils/filterComments\";\nimport { DocumentView } from \"./components/DocumentView\";\nimport { GlobalView } from \"./components/GlobalView\";\nimport { GlobalDocumentView } from \"./components/GlobalDocumentView\";\nimport { useScrollToTargetFieldGroup } from \"./hooks/useScrollToTargetFieldGroup\";\n\ninterface Props {\n className: string;\n}\n\nexport const CommentsPanel = ({ className }: Props) => {\n const { user } = useAuth();\n const { visibleComments, filter, mode } = useComments();\n\n const userId = (user?.id as number) ?? null;\n const filteredComments = filterComments({\n comments: visibleComments,\n filter,\n currentUserId: userId ?? undefined,\n });\n\n useScrollToTargetFieldGroup();\n\n if (mode === \"document\") {\n return <DocumentView comments={filteredComments} userId={userId} className={cn(className)} />;\n }\n\n if (mode === \"global-document\") {\n return <GlobalDocumentView comments={filteredComments} userId={userId} className={cn(className)} />;\n }\n\n return <GlobalView comments={filteredComments} userId={userId} className={cn(className)} />;\n};\n"],"mappings":";AA6BW;AA3BX,SAAS,eAAe;AACxB,SAAS,UAAU;AACnB,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,0BAA0B;AACnC,SAAS,mCAAmC;AAMrC,MAAM,gBAAgB,CAAC,EAAE,UAAU,MAAa;AACrD,QAAM,EAAE,KAAK,IAAI,QAAQ;AACzB,QAAM,EAAE,iBAAiB,QAAQ,KAAK,IAAI,YAAY;AAEtD,QAAM,SAAU,MAAM,MAAiB;AACvC,QAAM,mBAAmB,eAAe;AAAA,IACtC,UAAU;AAAA,IACV;AAAA,IACA,eAAe,UAAU;AAAA,EAC3B,CAAC;AAED,8BAA4B;AAE5B,MAAI,SAAS,YAAY;AACvB,WAAO,oBAAC,gBAAa,UAAU,kBAAkB,QAAgB,WAAW,GAAG,SAAS,GAAG;AAAA,EAC7F;AAEA,MAAI,SAAS,mBAAmB;AAC9B,WAAO,oBAAC,sBAAmB,UAAU,kBAAkB,QAAgB,WAAW,GAAG,SAAS,GAAG;AAAA,EACnG;AAEA,SAAO,oBAAC,cAAW,UAAU,kBAAkB,QAAgB,WAAW,GAAG,SAAS,GAAG;AAC3F;","names":[]}
@@ -0,0 +1,4 @@
1
+ import type { Comment } from "../../types";
2
+ export type FieldPath = string | null;
3
+ export type Group = [FieldPath, Comment[]];
4
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/CommentsPanel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;AAEtC,MAAM,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ import type { FieldPath } from "../types";
2
+ interface Props {
3
+ collectionSlug?: string;
4
+ documentId?: number | null;
5
+ globalSlug?: string;
6
+ fieldPath?: FieldPath;
7
+ }
8
+ export declare function createCollapsibleGroupKey({ collectionSlug, documentId, globalSlug, fieldPath: fieldPathProp }: Props): string;
9
+ export {};
10
+ //# sourceMappingURL=createCollapsibleGroupKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCollapsibleGroupKey.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/utils/createCollapsibleGroupKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,UAAU,KAAK;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,KAAK,UAcpH"}
@@ -0,0 +1,15 @@
1
+ function createCollapsibleGroupKey({ collectionSlug, documentId, globalSlug, fieldPath: fieldPathProp }) {
2
+ const fieldPath = fieldPathProp === null ? "__general__" : fieldPathProp;
3
+ const fieldPathSegment = fieldPath === void 0 ? "" : `-${fieldPath}`;
4
+ if (collectionSlug && documentId) {
5
+ return `${collectionSlug}-${documentId}${fieldPathSegment}`;
6
+ }
7
+ if (globalSlug) {
8
+ return `${globalSlug}${fieldPathSegment}`;
9
+ }
10
+ return "";
11
+ }
12
+ export {
13
+ createCollapsibleGroupKey
14
+ };
15
+ //# sourceMappingURL=createCollapsibleGroupKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/utils/createCollapsibleGroupKey.ts"],"sourcesContent":["import type { FieldPath } from \"../types\";\n\ninterface Props {\n collectionSlug?: string;\n documentId?: number | null;\n globalSlug?: string;\n fieldPath?: FieldPath;\n}\n\nexport function createCollapsibleGroupKey({ collectionSlug, documentId, globalSlug, fieldPath: fieldPathProp }: Props) {\n const fieldPath = fieldPathProp === null ? \"__general__\" : fieldPathProp;\n\n const fieldPathSegment = fieldPath === undefined ? \"\" : `-${fieldPath}`;\n\n if (collectionSlug && documentId) {\n return `${collectionSlug}-${documentId}${fieldPathSegment}`;\n }\n\n if (globalSlug) {\n return `${globalSlug}${fieldPathSegment}`;\n }\n\n return \"\";\n}\n"],"mappings":"AASO,SAAS,0BAA0B,EAAE,gBAAgB,YAAY,YAAY,WAAW,cAAc,GAAU;AACrH,QAAM,YAAY,kBAAkB,OAAO,gBAAgB;AAE3D,QAAM,mBAAmB,cAAc,SAAY,KAAK,IAAI,SAAS;AAErE,MAAI,kBAAkB,YAAY;AAChC,WAAO,GAAG,cAAc,IAAI,UAAU,GAAG,gBAAgB;AAAA,EAC3D;AAEA,MAAI,YAAY;AACd,WAAO,GAAG,UAAU,GAAG,gBAAgB;AAAA,EACzC;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,9 @@
1
+ import type { Comment, FilterMode } from "../../../types";
2
+ interface Props {
3
+ comments: Comment[];
4
+ filter: FilterMode;
5
+ currentUserId?: number | null;
6
+ }
7
+ export declare function filterComments({ comments, filter, currentUserId }: Props): Comment[];
8
+ export {};
9
+ //# sourceMappingURL=filterComments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterComments.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/utils/filterComments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1D,UAAU,KAAK;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,KAAK,aAkBxE"}
@@ -0,0 +1,17 @@
1
+ function filterComments({ comments, filter, currentUserId }) {
2
+ return comments.filter((comment) => {
3
+ if (filter === "open") return !comment.isResolved;
4
+ if (filter === "resolved") return comment.isResolved;
5
+ if (filter === "mentioned") {
6
+ return comment.mentions?.some(({ user: mentionUser }) => {
7
+ if (typeof mentionUser === "number") return mentionUser === currentUserId;
8
+ return mentionUser.id === currentUserId;
9
+ }) ?? false;
10
+ }
11
+ return false;
12
+ });
13
+ }
14
+ export {
15
+ filterComments
16
+ };
17
+ //# sourceMappingURL=filterComments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/utils/filterComments.ts"],"sourcesContent":["import type { Comment, FilterMode } from \"../../../types\";\n\ninterface Props {\n comments: Comment[];\n filter: FilterMode;\n currentUserId?: number | null;\n}\n\nexport function filterComments({ comments, filter, currentUserId }: Props) {\n return comments.filter((comment) => {\n if (filter === \"open\") return !comment.isResolved;\n\n if (filter === \"resolved\") return comment.isResolved;\n\n if (filter === \"mentioned\") {\n return (\n comment.mentions?.some(({ user: mentionUser }) => {\n if (typeof mentionUser === \"number\") return mentionUser === currentUserId;\n\n return mentionUser.id === currentUserId;\n }) ?? false\n );\n }\n\n return false;\n });\n}\n"],"mappings":"AAQO,SAAS,eAAe,EAAE,UAAU,QAAQ,cAAc,GAAU;AACzE,SAAO,SAAS,OAAO,CAAC,YAAY;AAClC,QAAI,WAAW,OAAQ,QAAO,CAAC,QAAQ;AAEvC,QAAI,WAAW,WAAY,QAAO,QAAQ;AAE1C,QAAI,WAAW,aAAa;AAC1B,aACE,QAAQ,UAAU,KAAK,CAAC,EAAE,MAAM,YAAY,MAAM;AAChD,YAAI,OAAO,gBAAgB,SAAU,QAAO,gBAAgB;AAE5D,eAAO,YAAY,OAAO;AAAA,MAC5B,CAAC,KAAK;AAAA,IAEV;AAEA,WAAO;AAAA,EACT,CAAC;AACH;","names":[]}
@@ -0,0 +1,4 @@
1
+ import type { Comment } from "../../../types";
2
+ import type { FieldPath } from "../types";
3
+ export declare function groupCommentsByFieldPath(comments: Comment[]): Map<FieldPath, Comment[]>;
4
+ //# sourceMappingURL=groupCommentsByFieldPath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupCommentsByFieldPath.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/utils/groupCommentsByFieldPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAYvF"}
@@ -0,0 +1,14 @@
1
+ import { sortGroupsByCreatedAt } from "./sortGroupsByCreatedAt";
2
+ function groupCommentsByFieldPath(comments) {
3
+ const groupMap = /* @__PURE__ */ new Map();
4
+ for (const comment of comments) {
5
+ const key = comment.fieldPath ?? null;
6
+ if (!groupMap.has(key)) groupMap.set(key, []);
7
+ groupMap.get(key).push(comment);
8
+ }
9
+ return sortGroupsByCreatedAt(groupMap);
10
+ }
11
+ export {
12
+ groupCommentsByFieldPath
13
+ };
14
+ //# sourceMappingURL=groupCommentsByFieldPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/utils/groupCommentsByFieldPath.ts"],"sourcesContent":["import type { Comment } from \"../../../types\";\nimport type { FieldPath } from \"../types\";\nimport { sortGroupsByCreatedAt } from \"./sortGroupsByCreatedAt\";\n\nexport function groupCommentsByFieldPath(comments: Comment[]): Map<FieldPath, Comment[]> {\n const groupMap = new Map<FieldPath, Comment[]>();\n\n for (const comment of comments) {\n const key = comment.fieldPath ?? null;\n\n if (!groupMap.has(key)) groupMap.set(key, []);\n\n groupMap.get(key)!.push(comment);\n }\n\n return sortGroupsByCreatedAt(groupMap);\n}\n"],"mappings":"AAEA,SAAS,6BAA6B;AAE/B,SAAS,yBAAyB,UAAgD;AACvF,QAAM,WAAW,oBAAI,IAA0B;AAE/C,aAAW,WAAW,UAAU;AAC9B,UAAM,MAAM,QAAQ,aAAa;AAEjC,QAAI,CAAC,SAAS,IAAI,GAAG,EAAG,UAAS,IAAI,KAAK,CAAC,CAAC;AAE5C,aAAS,IAAI,GAAG,EAAG,KAAK,OAAO;AAAA,EACjC;AAEA,SAAO,sBAAsB,QAAQ;AACvC;","names":[]}
@@ -0,0 +1,18 @@
1
+ import type { Comment } from "../../../types";
2
+ import type { FieldPath } from "../types";
3
+ type CommentsMap = Map<FieldPath, Comment[]>;
4
+ type CollectionCommentsMapByDoc = Map<number, CommentsMap>;
5
+ export type CollectionCommentsEntry = {
6
+ type: "collection";
7
+ slug: string;
8
+ docs: CollectionCommentsMapByDoc;
9
+ };
10
+ export type GlobalCommentsEntry = {
11
+ type: "global";
12
+ slug: string;
13
+ fields: CommentsMap;
14
+ };
15
+ export type EntityCommentsEntry = CollectionCommentsEntry | GlobalCommentsEntry;
16
+ export declare function groupCommentsGlobally(comments: Comment[]): EntityCommentsEntry[];
17
+ export {};
18
+ //# sourceMappingURL=groupCommentsGlobally.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupCommentsGlobally.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/utils/groupCommentsGlobally.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,KAAK,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAE7C,KAAK,0BAA0B,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAE3D,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,0BAA0B,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG,mBAAmB,CAAC;AAIhF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAgFhF"}
@@ -0,0 +1,58 @@
1
+ import { sortGroupsByCreatedAt } from "./sortGroupsByCreatedAt";
2
+ const extractCommentCreatedAtTime = (c) => new Date(c.createdAt).getTime();
3
+ function groupCommentsGlobally(comments) {
4
+ const collections = /* @__PURE__ */ new Map();
5
+ const globals = /* @__PURE__ */ new Map();
6
+ for (const comment of comments) {
7
+ if (comment.globalSlug) {
8
+ const slug2 = comment.globalSlug;
9
+ const field2 = comment.fieldPath ?? null;
10
+ if (!globals.has(slug2)) globals.set(slug2, /* @__PURE__ */ new Map());
11
+ const fields2 = globals.get(slug2);
12
+ if (!fields2.has(field2)) fields2.set(field2, []);
13
+ fields2.get(field2).push(comment);
14
+ continue;
15
+ }
16
+ const slug = comment.collectionSlug;
17
+ const docId = comment.documentId;
18
+ const field = comment.fieldPath ?? null;
19
+ if (!slug || !docId) continue;
20
+ if (!collections.has(slug)) collections.set(slug, /* @__PURE__ */ new Map());
21
+ const docs = collections.get(slug);
22
+ if (!docs.has(docId)) docs.set(docId, /* @__PURE__ */ new Map());
23
+ const fields = docs.get(docId);
24
+ if (!fields.has(field)) fields.set(field, []);
25
+ fields.get(field).push(comment);
26
+ }
27
+ for (const [slug, docs] of collections.entries()) {
28
+ for (const [docId, fields] of docs.entries()) {
29
+ docs.set(docId, sortGroupsByCreatedAt(fields));
30
+ }
31
+ const oldestInFields = (fields) => Math.min(...[...fields.values()].flat().map(extractCommentCreatedAtTime));
32
+ const sortedDocs = new Map([...docs.entries()].sort(([, a], [, b]) => oldestInFields(a) - oldestInFields(b)));
33
+ collections.set(slug, sortedDocs);
34
+ }
35
+ for (const [slug, fields] of globals.entries()) {
36
+ globals.set(slug, sortGroupsByCreatedAt(fields));
37
+ }
38
+ const oldestInCollectionDocs = (docs) => Math.min(...[...docs.values()].flatMap((fields) => [...fields.values()].flat()).map(extractCommentCreatedAtTime));
39
+ const oldestInGlobalFields = (fields) => Math.min(...[...fields.values()].flat().map(extractCommentCreatedAtTime));
40
+ const entries = [];
41
+ for (const [slug, docs] of collections.entries()) {
42
+ entries.push({
43
+ entry: { type: "collection", slug, docs },
44
+ time: oldestInCollectionDocs(docs)
45
+ });
46
+ }
47
+ for (const [slug, fields] of globals.entries()) {
48
+ entries.push({
49
+ entry: { type: "global", slug, fields },
50
+ time: oldestInGlobalFields(fields)
51
+ });
52
+ }
53
+ return entries.sort((a, b) => a.time - b.time).map(({ entry }) => entry);
54
+ }
55
+ export {
56
+ groupCommentsGlobally
57
+ };
58
+ //# sourceMappingURL=groupCommentsGlobally.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/utils/groupCommentsGlobally.ts"],"sourcesContent":["import type { Comment } from \"../../../types\";\nimport { sortGroupsByCreatedAt } from \"./sortGroupsByCreatedAt\";\nimport type { FieldPath } from \"../types\";\n\ntype CommentsMap = Map<FieldPath, Comment[]>;\n\ntype CollectionCommentsMapByDoc = Map<number, CommentsMap>;\n\nexport type CollectionCommentsEntry = {\n type: \"collection\";\n slug: string;\n docs: CollectionCommentsMapByDoc;\n};\n\nexport type GlobalCommentsEntry = {\n type: \"global\";\n slug: string;\n fields: CommentsMap;\n};\n\nexport type EntityCommentsEntry = CollectionCommentsEntry | GlobalCommentsEntry;\n\nconst extractCommentCreatedAtTime = (c: Comment) => new Date(c.createdAt).getTime();\n\nexport function groupCommentsGlobally(comments: Comment[]): EntityCommentsEntry[] {\n const collections = new Map<string, CollectionCommentsMapByDoc>();\n const globals = new Map<string, CommentsMap>();\n\n for (const comment of comments) {\n if (comment.globalSlug) {\n const slug = comment.globalSlug;\n const field = comment.fieldPath ?? null;\n\n if (!globals.has(slug)) globals.set(slug, new Map());\n\n const fields = globals.get(slug)!;\n\n if (!fields.has(field)) fields.set(field, []);\n\n fields.get(field)!.push(comment);\n\n continue;\n }\n\n const slug = comment.collectionSlug;\n const docId = comment.documentId;\n const field = comment.fieldPath ?? null;\n if (!slug || !docId) continue;\n\n if (!collections.has(slug)) collections.set(slug, new Map());\n\n const docs = collections.get(slug)!;\n\n if (!docs.has(docId)) docs.set(docId, new Map());\n\n const fields = docs.get(docId)!;\n\n if (!fields.has(field)) fields.set(field, []);\n\n fields.get(field)!.push(comment);\n }\n\n // Sort collection inner maps\n for (const [slug, docs] of collections.entries()) {\n for (const [docId, fields] of docs.entries()) {\n docs.set(docId, sortGroupsByCreatedAt(fields));\n }\n\n const oldestInFields = (fields: Map<FieldPath, Comment[]>) =>\n Math.min(...[...fields.values()].flat().map(extractCommentCreatedAtTime));\n\n const sortedDocs = new Map([...docs.entries()].sort(([, a], [, b]) => oldestInFields(a) - oldestInFields(b)));\n\n collections.set(slug, sortedDocs);\n }\n\n // Sort globals inner maps\n for (const [slug, fields] of globals.entries()) {\n globals.set(slug, sortGroupsByCreatedAt(fields));\n }\n\n const oldestInCollectionDocs = (docs: CollectionCommentsMapByDoc) =>\n Math.min(...[...docs.values()].flatMap((fields) => [...fields.values()].flat()).map(extractCommentCreatedAtTime));\n\n const oldestInGlobalFields = (fields: Map<FieldPath, Comment[]>) =>\n Math.min(...[...fields.values()].flat().map(extractCommentCreatedAtTime));\n\n const entries: Array<{ entry: EntityCommentsEntry; time: number }> = [];\n\n for (const [slug, docs] of collections.entries()) {\n entries.push({\n entry: { type: \"collection\", slug, docs },\n time: oldestInCollectionDocs(docs),\n });\n }\n\n for (const [slug, fields] of globals.entries()) {\n entries.push({\n entry: { type: \"global\", slug, fields },\n time: oldestInGlobalFields(fields),\n });\n }\n\n return entries.sort((a, b) => a.time - b.time).map(({ entry }) => entry);\n}\n"],"mappings":"AACA,SAAS,6BAA6B;AAqBtC,MAAM,8BAA8B,CAAC,MAAe,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ;AAE3E,SAAS,sBAAsB,UAA4C;AAChF,QAAM,cAAc,oBAAI,IAAwC;AAChE,QAAM,UAAU,oBAAI,IAAyB;AAE7C,aAAW,WAAW,UAAU;AAC9B,QAAI,QAAQ,YAAY;AACtB,YAAMA,QAAO,QAAQ;AACrB,YAAMC,SAAQ,QAAQ,aAAa;AAEnC,UAAI,CAAC,QAAQ,IAAID,KAAI,EAAG,SAAQ,IAAIA,OAAM,oBAAI,IAAI,CAAC;AAEnD,YAAME,UAAS,QAAQ,IAAIF,KAAI;AAE/B,UAAI,CAACE,QAAO,IAAID,MAAK,EAAG,CAAAC,QAAO,IAAID,QAAO,CAAC,CAAC;AAE5C,MAAAC,QAAO,IAAID,MAAK,EAAG,KAAK,OAAO;AAE/B;AAAA,IACF;AAEA,UAAM,OAAO,QAAQ;AACrB,UAAM,QAAQ,QAAQ;AACtB,UAAM,QAAQ,QAAQ,aAAa;AACnC,QAAI,CAAC,QAAQ,CAAC,MAAO;AAErB,QAAI,CAAC,YAAY,IAAI,IAAI,EAAG,aAAY,IAAI,MAAM,oBAAI,IAAI,CAAC;AAE3D,UAAM,OAAO,YAAY,IAAI,IAAI;AAEjC,QAAI,CAAC,KAAK,IAAI,KAAK,EAAG,MAAK,IAAI,OAAO,oBAAI,IAAI,CAAC;AAE/C,UAAM,SAAS,KAAK,IAAI,KAAK;AAE7B,QAAI,CAAC,OAAO,IAAI,KAAK,EAAG,QAAO,IAAI,OAAO,CAAC,CAAC;AAE5C,WAAO,IAAI,KAAK,EAAG,KAAK,OAAO;AAAA,EACjC;AAGA,aAAW,CAAC,MAAM,IAAI,KAAK,YAAY,QAAQ,GAAG;AAChD,eAAW,CAAC,OAAO,MAAM,KAAK,KAAK,QAAQ,GAAG;AAC5C,WAAK,IAAI,OAAO,sBAAsB,MAAM,CAAC;AAAA,IAC/C;AAEA,UAAM,iBAAiB,CAAC,WACtB,KAAK,IAAI,GAAG,CAAC,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,2BAA2B,CAAC;AAE1E,UAAM,aAAa,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,eAAe,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC;AAE5G,gBAAY,IAAI,MAAM,UAAU;AAAA,EAClC;AAGA,aAAW,CAAC,MAAM,MAAM,KAAK,QAAQ,QAAQ,GAAG;AAC9C,YAAQ,IAAI,MAAM,sBAAsB,MAAM,CAAC;AAAA,EACjD;AAEA,QAAM,yBAAyB,CAAC,SAC9B,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,2BAA2B,CAAC;AAElH,QAAM,uBAAuB,CAAC,WAC5B,KAAK,IAAI,GAAG,CAAC,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,2BAA2B,CAAC;AAE1E,QAAM,UAA+D,CAAC;AAEtE,aAAW,CAAC,MAAM,IAAI,KAAK,YAAY,QAAQ,GAAG;AAChD,YAAQ,KAAK;AAAA,MACX,OAAO,EAAE,MAAM,cAAc,MAAM,KAAK;AAAA,MACxC,MAAM,uBAAuB,IAAI;AAAA,IACnC,CAAC;AAAA,EACH;AAEA,aAAW,CAAC,MAAM,MAAM,KAAK,QAAQ,QAAQ,GAAG;AAC9C,YAAQ,KAAK;AAAA,MACX,OAAO,EAAE,MAAM,UAAU,MAAM,OAAO;AAAA,MACtC,MAAM,qBAAqB,MAAM;AAAA,IACnC,CAAC;AAAA,EACH;AAEA,SAAO,QAAQ,KAAK,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,KAAK;AACzE;","names":["slug","field","fields"]}
@@ -0,0 +1,3 @@
1
+ import type { EntityLabel } from "../../../types";
2
+ export declare function resolveEntityLabel(label: EntityLabel | undefined, locale: string, fallback: string): string;
3
+ //# sourceMappingURL=resolveEntityLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveEntityLabel.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/utils/resolveEntityLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAalG"}
@@ -0,0 +1,14 @@
1
+ function resolveEntityLabel(label, locale, fallback) {
2
+ if (label === void 0) return fallback;
3
+ if (typeof label === "string") return label;
4
+ const byLocale = label[locale];
5
+ if (byLocale !== void 0) return byLocale;
6
+ const byEn = label["en"];
7
+ if (byEn !== void 0) return byEn;
8
+ const first = Object.values(label)[0];
9
+ return first ?? fallback;
10
+ }
11
+ export {
12
+ resolveEntityLabel
13
+ };
14
+ //# sourceMappingURL=resolveEntityLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/utils/resolveEntityLabel.ts"],"sourcesContent":["import type { EntityLabel } from \"../../../types\";\n\nexport function resolveEntityLabel(label: EntityLabel | undefined, locale: string, fallback: string) {\n if (label === undefined) return fallback;\n if (typeof label === \"string\") return label;\n\n const byLocale = label[locale];\n if (byLocale !== undefined) return byLocale;\n\n const byEn = label[\"en\"];\n if (byEn !== undefined) return byEn;\n\n const first = Object.values(label)[0];\n\n return first ?? fallback;\n}\n"],"mappings":"AAEO,SAAS,mBAAmB,OAAgC,QAAgB,UAAkB;AACnG,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,OAAO,UAAU,SAAU,QAAO;AAEtC,QAAM,WAAW,MAAM,MAAM;AAC7B,MAAI,aAAa,OAAW,QAAO;AAEnC,QAAM,OAAO,MAAM,IAAI;AACvB,MAAI,SAAS,OAAW,QAAO;AAE/B,QAAM,QAAQ,OAAO,OAAO,KAAK,EAAE,CAAC;AAEpC,SAAO,SAAS;AAClB;","names":[]}
@@ -0,0 +1,11 @@
1
+ import type { GlobalFieldLabelRegistry } from "../../../types";
2
+ interface Props {
3
+ registry: GlobalFieldLabelRegistry;
4
+ collectionSlug?: string;
5
+ documentId?: number;
6
+ globalSlug?: string;
7
+ fieldPath: string;
8
+ }
9
+ export declare function resolveFieldLabel({ registry, collectionSlug, documentId, globalSlug, fieldPath }: Props): string;
10
+ export {};
11
+ //# sourceMappingURL=resolveFieldLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveFieldLabel.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/utils/resolveFieldLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,UAAU,KAAK;IACb,QAAQ,EAAE,wBAAwB,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,UAMvG"}
@@ -0,0 +1,9 @@
1
+ function resolveFieldLabel({ registry, collectionSlug, documentId, globalSlug, fieldPath }) {
2
+ const segments = registry[collectionSlug ?? globalSlug ?? ""]?.[documentId ?? 0]?.[fieldPath];
3
+ if (!segments) return fieldPath;
4
+ return segments.map((s) => s.type === "field" ? s.label : `#${s.position + 1}`).join(" > ");
5
+ }
6
+ export {
7
+ resolveFieldLabel
8
+ };
9
+ //# sourceMappingURL=resolveFieldLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/utils/resolveFieldLabel.ts"],"sourcesContent":["import type { GlobalFieldLabelRegistry } from \"../../../types\";\n\ninterface Props {\n registry: GlobalFieldLabelRegistry;\n collectionSlug?: string;\n documentId?: number;\n globalSlug?: string;\n fieldPath: string;\n}\n\nexport function resolveFieldLabel({ registry, collectionSlug, documentId, globalSlug, fieldPath }: Props) {\n const segments = registry[collectionSlug ?? globalSlug ?? \"\"]?.[documentId ?? 0]?.[fieldPath];\n\n if (!segments) return fieldPath;\n\n return segments.map((s) => (s.type === \"field\" ? s.label : `#${s.position + 1}`)).join(\" > \");\n}\n"],"mappings":"AAUO,SAAS,kBAAkB,EAAE,UAAU,gBAAgB,YAAY,YAAY,UAAU,GAAU;AACxG,QAAM,WAAW,SAAS,kBAAkB,cAAc,EAAE,IAAI,cAAc,CAAC,IAAI,SAAS;AAE5F,MAAI,CAAC,SAAU,QAAO;AAEtB,SAAO,SAAS,IAAI,CAAC,MAAO,EAAE,SAAS,UAAU,EAAE,QAAQ,IAAI,EAAE,WAAW,CAAC,EAAG,EAAE,KAAK,KAAK;AAC9F;","names":[]}
@@ -0,0 +1,4 @@
1
+ import type { Comment } from "../../../types";
2
+ import type { FieldPath } from "../types";
3
+ export declare function sortGroupsByCreatedAt(groupMap: Map<FieldPath, Comment[]>): Map<FieldPath, Comment[]>;
4
+ //# sourceMappingURL=sortGroupsByCreatedAt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortGroupsByCreatedAt.d.ts","sourceRoot":"","sources":["../../../../src/components/CommentsPanel/utils/sortGroupsByCreatedAt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CASpG"}
@@ -0,0 +1,11 @@
1
+ function sortGroupsByCreatedAt(groupMap) {
2
+ const toTime = (c) => new Date(c.createdAt).getTime();
3
+ const oldest = (arr) => Math.min(...arr.map(toTime));
4
+ return new Map(
5
+ [...groupMap.entries()].sort(([, a], [, b]) => oldest(a) - oldest(b)).map(([key, arr]) => [key, [...arr].sort((a, b) => toTime(a) - toTime(b))])
6
+ );
7
+ }
8
+ export {
9
+ sortGroupsByCreatedAt
10
+ };
11
+ //# sourceMappingURL=sortGroupsByCreatedAt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CommentsPanel/utils/sortGroupsByCreatedAt.ts"],"sourcesContent":["import type { Comment } from \"../../../types\";\nimport type { FieldPath } from \"../types\";\n\nexport function sortGroupsByCreatedAt(groupMap: Map<FieldPath, Comment[]>): Map<FieldPath, Comment[]> {\n const toTime = (c: Comment) => new Date(c.createdAt).getTime();\n const oldest = (arr: Comment[]) => Math.min(...arr.map(toTime));\n\n return new Map(\n [...groupMap.entries()]\n .sort(([, a], [, b]) => oldest(a) - oldest(b))\n .map(([key, arr]) => [key, [...arr].sort((a, b) => toTime(a) - toTime(b))]),\n );\n}\n"],"mappings":"AAGO,SAAS,sBAAsB,UAAgE;AACpG,QAAM,SAAS,CAAC,MAAe,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ;AAC7D,QAAM,SAAS,CAAC,QAAmB,KAAK,IAAI,GAAG,IAAI,IAAI,MAAM,CAAC;AAE9D,SAAO,IAAI;AAAA,IACT,CAAC,GAAG,SAAS,QAAQ,CAAC,EACnB,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,EAC5C,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAAA,EAC9E;AACF;","names":[]}
@@ -0,0 +1,8 @@
1
+ interface Props {
2
+ fieldPath: string;
3
+ showTrigger: boolean;
4
+ onToggle: (isOpen: boolean) => void;
5
+ }
6
+ export declare function AddCommentPopup({ fieldPath, showTrigger, onToggle }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=AddCommentPopup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddCommentPopup.d.ts","sourceRoot":"","sources":["../../../src/components/FieldCommentLabel/AddCommentPopup.tsx"],"names":[],"mappings":"AAUA,UAAU,KAAK;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAyC1E"}
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Popup, useTranslation } from "@payloadcms/ui";
4
+ import { IconButton } from "../IconButton";
5
+ import { cn } from "../../utils/general/cn";
6
+ import { MessageSquarePlus } from "lucide-react";
7
+ import { CommentEditor } from "../CommentEditor";
8
+ import { useComments } from "../../providers/CommentsProvider";
9
+ import { useRef } from "react";
10
+ function AddCommentPopup({ fieldPath, showTrigger, onToggle }) {
11
+ const { t } = useTranslation();
12
+ const { mode, globalSlug } = useComments();
13
+ const editorAPI = useRef(null);
14
+ const trigger = /* @__PURE__ */ jsx(IconButton, { className: cn(showTrigger ? "opacity-100" : "opacity-0"), size: "sm", title: t("comments:add"), children: /* @__PURE__ */ jsx(MessageSquarePlus, { size: 14 }) });
15
+ return /* @__PURE__ */ jsx(
16
+ Popup,
17
+ {
18
+ buttonType: "custom",
19
+ button: trigger,
20
+ horizontalAlign: "right",
21
+ size: "fit-content",
22
+ onToggleOpen: (active) => {
23
+ onToggle(active);
24
+ setTimeout(() => editorAPI.current?.focus());
25
+ },
26
+ onToggleClose: () => {
27
+ editorAPI.current?.clear();
28
+ },
29
+ render: ({ close }) => /* @__PURE__ */ jsxs("div", { className: "w-80", children: [
30
+ /* @__PURE__ */ jsx("p", { className: "m-0 mb-3 text-[14px] font-semibold text-(--theme-text)", children: t("comments:add") }),
31
+ /* @__PURE__ */ jsx(
32
+ CommentEditor,
33
+ {
34
+ ref: editorAPI,
35
+ fieldPath,
36
+ globalSlug: mode === "global-document" ? globalSlug ?? void 0 : void 0,
37
+ autoFocus: true,
38
+ onSuccessAddComment: close,
39
+ onEscapePress: close,
40
+ placeholder: `${t("comments:writeComment")}\u2026`
41
+ }
42
+ )
43
+ ] })
44
+ }
45
+ );
46
+ }
47
+ export {
48
+ AddCommentPopup
49
+ };
50
+ //# sourceMappingURL=AddCommentPopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/FieldCommentLabel/AddCommentPopup.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popup, useTranslation } from \"@payloadcms/ui\";\nimport { IconButton } from \"../IconButton\";\nimport { cn } from \"../../utils/general/cn\";\nimport { MessageSquarePlus } from \"lucide-react\";\nimport { CommentEditor, type CommentEditorHandle } from \"../CommentEditor\";\nimport { useComments } from \"../../providers/CommentsProvider\";\nimport { useRef } from \"react\";\n\ninterface Props {\n fieldPath: string;\n showTrigger: boolean;\n onToggle: (isOpen: boolean) => void;\n}\n\nexport function AddCommentPopup({ fieldPath, showTrigger, onToggle }: Props) {\n const { t } = useTranslation();\n const { mode, globalSlug } = useComments();\n const editorAPI = useRef<CommentEditorHandle | null>(null);\n\n const trigger = (\n <IconButton className={cn(showTrigger ? \"opacity-100\" : \"opacity-0\")} size=\"sm\" title={t(\"comments:add\" as never)}>\n <MessageSquarePlus size={14} />\n </IconButton>\n );\n\n return (\n <Popup\n buttonType=\"custom\"\n button={trigger}\n horizontalAlign=\"right\"\n size=\"fit-content\"\n onToggleOpen={(active: boolean) => {\n onToggle(active);\n setTimeout(() => editorAPI.current?.focus());\n }}\n onToggleClose={() => {\n editorAPI.current?.clear();\n }}\n render={({ close }) => (\n <div className=\"w-80\">\n <p className=\"m-0 mb-3 text-[14px] font-semibold text-(--theme-text)\">{t(\"comments:add\" as never)}</p>\n\n <CommentEditor\n ref={editorAPI}\n fieldPath={fieldPath}\n globalSlug={mode === \"global-document\" ? (globalSlug ?? undefined) : undefined}\n autoFocus\n onSuccessAddComment={close}\n onEscapePress={close}\n placeholder={`${t(\"comments:writeComment\" as never)}…`}\n />\n </div>\n )}\n />\n );\n}\n"],"mappings":";AAuBM,cAkBE,YAlBF;AArBN,SAAS,OAAO,sBAAsB;AACtC,SAAS,kBAAkB;AAC3B,SAAS,UAAU;AACnB,SAAS,yBAAyB;AAClC,SAAS,qBAA+C;AACxD,SAAS,mBAAmB;AAC5B,SAAS,cAAc;AAQhB,SAAS,gBAAgB,EAAE,WAAW,aAAa,SAAS,GAAU;AAC3E,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,EAAE,MAAM,WAAW,IAAI,YAAY;AACzC,QAAM,YAAY,OAAmC,IAAI;AAEzD,QAAM,UACJ,oBAAC,cAAW,WAAW,GAAG,cAAc,gBAAgB,WAAW,GAAG,MAAK,MAAK,OAAO,EAAE,cAAuB,GAC9G,8BAAC,qBAAkB,MAAM,IAAI,GAC/B;AAGF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX,QAAQ;AAAA,MACR,iBAAgB;AAAA,MAChB,MAAK;AAAA,MACL,cAAc,CAAC,WAAoB;AACjC,iBAAS,MAAM;AACf,mBAAW,MAAM,UAAU,SAAS,MAAM,CAAC;AAAA,MAC7C;AAAA,MACA,eAAe,MAAM;AACnB,kBAAU,SAAS,MAAM;AAAA,MAC3B;AAAA,MACA,QAAQ,CAAC,EAAE,MAAM,MACf,qBAAC,SAAI,WAAU,QACb;AAAA,4BAAC,OAAE,WAAU,0DAA0D,YAAE,cAAuB,GAAE;AAAA,QAElG;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL;AAAA,YACA,YAAY,SAAS,oBAAqB,cAAc,SAAa;AAAA,YACrE,WAAS;AAAA,YACT,qBAAqB;AAAA,YACrB,eAAe;AAAA,YACf,aAAa,GAAG,EAAE,uBAAgC,CAAC;AAAA;AAAA,QACrD;AAAA,SACF;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -0,0 +1,2 @@
1
+ export declare function useStablePath(positionPath: string): string;
2
+ //# sourceMappingURL=useStablePath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStablePath.d.ts","sourceRoot":"","sources":["../../../../src/components/FieldCommentLabel/hooks/useStablePath.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,UAIjD"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useFormFields } from "@payloadcms/ui";
3
+ import { buildStablePath } from "../utils/buildStablePath";
4
+ function useStablePath(positionPath) {
5
+ return useFormFields(
6
+ ([fields]) => buildStablePath(positionPath, (idPath) => fields[idPath]?.value)
7
+ );
8
+ }
9
+ export {
10
+ useStablePath
11
+ };
12
+ //# sourceMappingURL=useStablePath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/FieldCommentLabel/hooks/useStablePath.ts"],"sourcesContent":["\"use client\";\n\nimport { useFormFields } from \"@payloadcms/ui\";\nimport { buildStablePath } from \"../utils/buildStablePath\";\n\nexport function useStablePath(positionPath: string) {\n return useFormFields(([fields]) =>\n buildStablePath(positionPath, (idPath) => fields[idPath]?.value as string | undefined),\n );\n}\n"],"mappings":";AAEA,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAEzB,SAAS,cAAc,cAAsB;AAClD,SAAO;AAAA,IAAc,CAAC,CAAC,MAAM,MAC3B,gBAAgB,cAAc,CAAC,WAAW,OAAO,MAAM,GAAG,KAA2B;AAAA,EACvF;AACF;","names":[]}
@@ -0,0 +1,11 @@
1
+ import type { FieldLabelClientProps } from "payload";
2
+ import type { Label } from "./types";
3
+ interface Props extends FieldLabelClientProps {
4
+ field: FieldLabelClientProps["field"] & {
5
+ label?: Label;
6
+ required?: boolean;
7
+ };
8
+ }
9
+ export declare function FieldCommentLabel({ field, htmlFor, path: fieldPath }: Props): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FieldCommentLabel/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAQrC,UAAU,KAAM,SAAQ,qBAAqB;IAC3C,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG;QACtC,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAED,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,2CAwD3E"}