@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,64 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import { useTranslation, useLocale } from "@payloadcms/ui";
5
+ import { MessageSquareIcon } from "lucide-react";
6
+ import { useComments } from "../../providers/CommentsProvider";
7
+ import { resolveLabel } from "./utils/resolveLabel";
8
+ import { excludeComments } from "./utils/exludeComments";
9
+ import { useStablePath } from "./hooks/useStablePath";
10
+ import { useCommentsDrawer } from "../../providers/CommentsDrawerProvider";
11
+ import { IconButton } from "../IconButton";
12
+ import { AddCommentPopup } from "./AddCommentPopup";
13
+ function FieldCommentLabel({ field, htmlFor, path: fieldPath }) {
14
+ const { label, required } = field;
15
+ const { t } = useTranslation();
16
+ const { code: locale } = useLocale();
17
+ const { open: openDrawer, setScrollTargetPath } = useCommentsDrawer();
18
+ const { visibleComments, setFilter, mode } = useComments();
19
+ const [isHovered, setIsHovered] = useState(false);
20
+ const [isPopupOpen, setIsPopupOpen] = useState(false);
21
+ const resolvedLabel = resolveLabel(label, locale);
22
+ const stablePath = useStablePath(fieldPath ?? "");
23
+ const fieldComments = excludeComments(visibleComments, stablePath || void 0, locale);
24
+ const openCommentsCount = fieldComments.length;
25
+ const handleOpenDrawer = () => {
26
+ setFilter("open");
27
+ setScrollTargetPath(stablePath || null);
28
+ openDrawer();
29
+ };
30
+ const handleToggle = (isOpen) => {
31
+ setIsPopupOpen(isOpen);
32
+ };
33
+ return /* @__PURE__ */ jsxs(
34
+ "div",
35
+ {
36
+ className: "flex items-center gap-1.5 pb-1.25",
37
+ onMouseEnter: () => setIsHovered(true),
38
+ onMouseLeave: () => setIsHovered(false),
39
+ children: [
40
+ resolvedLabel && /* @__PURE__ */ jsxs("label", { className: "field-label p-0", htmlFor, children: [
41
+ resolvedLabel,
42
+ required && /* @__PURE__ */ jsx("span", { className: "required", children: "*" })
43
+ ] }),
44
+ fieldPath && (mode === "document" || mode === "global-document") && /* @__PURE__ */ jsx("div", { className: "relative flex items-center", children: openCommentsCount > 0 ? /* @__PURE__ */ jsxs(
45
+ IconButton,
46
+ {
47
+ className: "w-auto px-1 gap-1 text-[12px] font-semibold leading-none",
48
+ size: "sm",
49
+ title: t("comments:openComments", { count: openCommentsCount }),
50
+ onClick: handleOpenDrawer,
51
+ children: [
52
+ /* @__PURE__ */ jsx(MessageSquareIcon, { size: 14 }),
53
+ openCommentsCount
54
+ ]
55
+ }
56
+ ) : /* @__PURE__ */ jsx(AddCommentPopup, { fieldPath: stablePath, showTrigger: isHovered || isPopupOpen, onToggle: handleToggle }) })
57
+ ]
58
+ }
59
+ );
60
+ }
61
+ export {
62
+ FieldCommentLabel
63
+ };
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/FieldCommentLabel/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { useTranslation, useLocale } from \"@payloadcms/ui\";\nimport { MessageSquareIcon } from \"lucide-react\";\nimport { useComments } from \"../../providers/CommentsProvider\";\nimport type { FieldLabelClientProps } from \"payload\";\nimport type { Label } from \"./types\";\nimport { resolveLabel } from \"./utils/resolveLabel\";\nimport { excludeComments } from \"./utils/exludeComments\";\nimport { useStablePath } from \"./hooks/useStablePath\";\nimport { useCommentsDrawer } from \"../../providers/CommentsDrawerProvider\";\nimport { IconButton } from \"../IconButton\";\nimport { AddCommentPopup } from \"./AddCommentPopup\";\n\ninterface Props extends FieldLabelClientProps {\n field: FieldLabelClientProps[\"field\"] & {\n label?: Label;\n required?: boolean;\n };\n}\n\nexport function FieldCommentLabel({ field, htmlFor, path: fieldPath }: Props) {\n const { label, required } = field;\n\n const { t } = useTranslation();\n const { code: locale } = useLocale();\n const { open: openDrawer, setScrollTargetPath } = useCommentsDrawer();\n const { visibleComments, setFilter, mode } = useComments();\n\n const [isHovered, setIsHovered] = useState(false);\n const [isPopupOpen, setIsPopupOpen] = useState(false);\n\n const resolvedLabel = resolveLabel(label, locale);\n const stablePath = useStablePath(fieldPath ?? \"\");\n const fieldComments = excludeComments(visibleComments, stablePath || undefined, locale);\n const openCommentsCount = fieldComments.length;\n\n const handleOpenDrawer = () => {\n setFilter(\"open\");\n setScrollTargetPath(stablePath || null);\n openDrawer();\n };\n\n const handleToggle = (isOpen: boolean) => {\n setIsPopupOpen(isOpen);\n };\n\n return (\n <div\n className=\"flex items-center gap-1.5 pb-1.25\"\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}>\n {resolvedLabel && (\n <label className=\"field-label p-0\" htmlFor={htmlFor}>\n {resolvedLabel}\n\n {required && <span className=\"required\">*</span>}\n </label>\n )}\n\n {fieldPath && (mode === \"document\" || mode === \"global-document\") && (\n <div className=\"relative flex items-center\">\n {openCommentsCount > 0 ?\n <IconButton\n className=\"w-auto px-1 gap-1 text-[12px] font-semibold leading-none\"\n size=\"sm\"\n title={t(\"comments:openComments\" as never, { count: openCommentsCount })}\n onClick={handleOpenDrawer}>\n <MessageSquareIcon size={14} />\n\n {openCommentsCount}\n </IconButton>\n : <AddCommentPopup fieldPath={stablePath} showTrigger={isHovered || isPopupOpen} onToggle={handleToggle} />}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";AAsDQ,SAGe,KAHf;AApDR,SAAS,gBAAgB;AACzB,SAAS,gBAAgB,iBAAiB;AAC1C,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAG5B,SAAS,oBAAoB;AAC7B,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,yBAAyB;AAClC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AASzB,SAAS,kBAAkB,EAAE,OAAO,SAAS,MAAM,UAAU,GAAU;AAC5E,QAAM,EAAE,OAAO,SAAS,IAAI;AAE5B,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,EAAE,MAAM,OAAO,IAAI,UAAU;AACnC,QAAM,EAAE,MAAM,YAAY,oBAAoB,IAAI,kBAAkB;AACpE,QAAM,EAAE,iBAAiB,WAAW,KAAK,IAAI,YAAY;AAEzD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AAEpD,QAAM,gBAAgB,aAAa,OAAO,MAAM;AAChD,QAAM,aAAa,cAAc,aAAa,EAAE;AAChD,QAAM,gBAAgB,gBAAgB,iBAAiB,cAAc,QAAW,MAAM;AACtF,QAAM,oBAAoB,cAAc;AAExC,QAAM,mBAAmB,MAAM;AAC7B,cAAU,MAAM;AAChB,wBAAoB,cAAc,IAAI;AACtC,eAAW;AAAA,EACb;AAEA,QAAM,eAAe,CAAC,WAAoB;AACxC,mBAAe,MAAM;AAAA,EACvB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,cAAc,MAAM,aAAa,IAAI;AAAA,MACrC,cAAc,MAAM,aAAa,KAAK;AAAA,MACrC;AAAA,yBACC,qBAAC,WAAM,WAAU,mBAAkB,SAChC;AAAA;AAAA,UAEA,YAAY,oBAAC,UAAK,WAAU,YAAW,eAAC;AAAA,WAC3C;AAAA,QAGD,cAAc,SAAS,cAAc,SAAS,sBAC7C,oBAAC,SAAI,WAAU,8BACZ,8BAAoB,IACnB;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,OAAO,EAAE,yBAAkC,EAAE,OAAO,kBAAkB,CAAC;AAAA,YACvE,SAAS;AAAA,YACT;AAAA,kCAAC,qBAAkB,MAAM,IAAI;AAAA,cAE5B;AAAA;AAAA;AAAA,QACH,IACA,oBAAC,mBAAgB,WAAW,YAAY,aAAa,aAAa,aAAa,UAAU,cAAc,GAC3G;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -0,0 +1,4 @@
1
+ type LabelStroke = string | undefined;
2
+ export type Label = LabelStroke | Record<string, LabelStroke>;
3
+ export {};
4
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/FieldCommentLabel/types.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtC,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+ export declare function buildStablePath(positionPath: string, getRowId: (positionalIdPath: string) => string | undefined): string;
2
+ //# sourceMappingURL=buildStablePath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildStablePath.d.ts","sourceRoot":"","sources":["../../../../src/components/FieldCommentLabel/utils/buildStablePath.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,UAkB/G"}
@@ -0,0 +1,19 @@
1
+ function buildStablePath(positionPath, getRowId) {
2
+ const segments = positionPath.split(".");
3
+ const result = [];
4
+ for (let i = 0; i < segments.length; i++) {
5
+ const seg = segments[i] ?? "";
6
+ if (/^\d+$/.test(seg)) {
7
+ const positionalParent = segments.slice(0, i).join(".");
8
+ const idPath = positionalParent ? `${positionalParent}.${seg}.id` : `${seg}.id`;
9
+ result.push(getRowId(idPath) ?? seg);
10
+ } else {
11
+ result.push(seg);
12
+ }
13
+ }
14
+ return result.join(".");
15
+ }
16
+ export {
17
+ buildStablePath
18
+ };
19
+ //# sourceMappingURL=buildStablePath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/FieldCommentLabel/utils/buildStablePath.ts"],"sourcesContent":["export function buildStablePath(positionPath: string, getRowId: (positionalIdPath: string) => string | undefined) {\n const segments = positionPath.split(\".\");\n const result: string[] = [];\n\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i] ?? \"\";\n\n if (/^\\d+$/.test(seg)) {\n const positionalParent = segments.slice(0, i).join(\".\");\n const idPath = positionalParent ? `${positionalParent}.${seg}.id` : `${seg}.id`;\n\n result.push(getRowId(idPath) ?? seg);\n } else {\n result.push(seg);\n }\n }\n\n return result.join(\".\");\n}\n"],"mappings":"AAAO,SAAS,gBAAgB,cAAsB,UAA4D;AAChH,QAAM,WAAW,aAAa,MAAM,GAAG;AACvC,QAAM,SAAmB,CAAC;AAE1B,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,UAAM,MAAM,SAAS,CAAC,KAAK;AAE3B,QAAI,QAAQ,KAAK,GAAG,GAAG;AACrB,YAAM,mBAAmB,SAAS,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG;AACtD,YAAM,SAAS,mBAAmB,GAAG,gBAAgB,IAAI,GAAG,QAAQ,GAAG,GAAG;AAE1E,aAAO,KAAK,SAAS,MAAM,KAAK,GAAG;AAAA,IACrC,OAAO;AACL,aAAO,KAAK,GAAG;AAAA,IACjB;AAAA,EACF;AAEA,SAAO,OAAO,KAAK,GAAG;AACxB;","names":[]}
@@ -0,0 +1,3 @@
1
+ import type { Comment } from "../../../types";
2
+ export declare function excludeComments(comments: Comment[] | null, path: string | undefined, currentLocale?: string | null): Comment[];
3
+ //# sourceMappingURL=exludeComments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exludeComments.d.ts","sourceRoot":"","sources":["../../../../src/components/FieldCommentLabel/utils/exludeComments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,aAUlH"}
@@ -0,0 +1,12 @@
1
+ function excludeComments(comments, path, currentLocale) {
2
+ if (!path) return [];
3
+ return (comments ?? []).filter(({ fieldPath, isResolved, locale }) => {
4
+ if (fieldPath !== path || isResolved) return false;
5
+ if (locale && currentLocale && locale !== currentLocale) return false;
6
+ return true;
7
+ });
8
+ }
9
+ export {
10
+ excludeComments
11
+ };
12
+ //# sourceMappingURL=exludeComments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/FieldCommentLabel/utils/exludeComments.ts"],"sourcesContent":["import type { Comment } from \"../../../types\";\n\nexport function excludeComments(comments: Comment[] | null, path: string | undefined, currentLocale?: string | null) {\n if (!path) return [];\n\n return (comments ?? []).filter(({ fieldPath, isResolved, locale }) => {\n if (fieldPath !== path || isResolved) return false;\n\n if (locale && currentLocale && locale !== currentLocale) return false;\n\n return true;\n });\n}\n"],"mappings":"AAEO,SAAS,gBAAgB,UAA4B,MAA0B,eAA+B;AACnH,MAAI,CAAC,KAAM,QAAO,CAAC;AAEnB,UAAQ,YAAY,CAAC,GAAG,OAAO,CAAC,EAAE,WAAW,YAAY,OAAO,MAAM;AACpE,QAAI,cAAc,QAAQ,WAAY,QAAO;AAE7C,QAAI,UAAU,iBAAiB,WAAW,cAAe,QAAO;AAEhE,WAAO;AAAA,EACT,CAAC;AACH;","names":[]}
@@ -0,0 +1,3 @@
1
+ import type { Label } from "../types";
2
+ export declare function resolveLabel(label: Label, locale: string): string | null;
3
+ //# sourceMappingURL=resolveLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveLabel.d.ts","sourceRoot":"","sources":["../../../../src/components/FieldCommentLabel/utils/resolveLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,iBAMxD"}
@@ -0,0 +1,9 @@
1
+ function resolveLabel(label, locale) {
2
+ if (!label) return null;
3
+ if (typeof label === "string") return label;
4
+ return label[locale] ?? label.en ?? Object.values(label)[0] ?? null;
5
+ }
6
+ export {
7
+ resolveLabel
8
+ };
9
+ //# sourceMappingURL=resolveLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/FieldCommentLabel/utils/resolveLabel.ts"],"sourcesContent":["import type { Label } from \"../types\";\n\nexport function resolveLabel(label: Label, locale: string) {\n if (!label) return null;\n\n if (typeof label === \"string\") return label;\n\n return label[locale] ?? label.en ?? Object.values(label)[0] ?? null;\n}\n"],"mappings":"AAEO,SAAS,aAAa,OAAc,QAAgB;AACzD,MAAI,CAAC,MAAO,QAAO;AAEnB,MAAI,OAAO,UAAU,SAAU,QAAO;AAEtC,SAAO,MAAM,MAAM,KAAK,MAAM,MAAM,OAAO,OAAO,KAAK,EAAE,CAAC,KAAK;AACjE;","names":[]}
@@ -0,0 +1,12 @@
1
+ interface Props {
2
+ className?: string;
3
+ title?: string;
4
+ children: React.ReactNode;
5
+ variant?: "neutral" | "neutralSecondary" | "primary";
6
+ size?: "sm" | "md";
7
+ onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
8
+ tabIndex?: number;
9
+ }
10
+ export declare function IconButton({ className, title, children, variant, size, onClick, tabIndex }: Props): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/IconButton/index.tsx"],"names":[],"mappings":"AAsBA,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAAC;IACrD,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAYjG"}
@@ -0,0 +1,38 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { cn } from "../../utils/general/cn";
4
+ const variants = cva("flex justify-center items-center p-0 rounded border-none transition-colors cursor-pointer", {
5
+ variants: {
6
+ variant: {
7
+ neutral: "bg-transparent hover:bg-(--theme-elevation-50) text-(--theme-elevation-450) hover:text-(--theme-text)",
8
+ neutralSecondary: "bg-(--theme-elevation-100) hover:bg-(--theme-elevation-150) text-(--theme-elevation-600) hover:text-(--theme-text)",
9
+ primary: "bg-(--theme-elevation-1000) hover:bg-(--theme-elevation-800) text-(--theme-elevation-0)"
10
+ },
11
+ size: {
12
+ sm: "w-[20px] h-[20px]",
13
+ md: "w-[24px] h-[24px]"
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ variant: "neutral",
18
+ size: "md"
19
+ }
20
+ });
21
+ function IconButton({ className, title, children, variant, size, onClick, tabIndex }) {
22
+ return /* @__PURE__ */ jsx(
23
+ "button",
24
+ {
25
+ className: cn(variants({ variant, size }), className),
26
+ type: "button",
27
+ title,
28
+ "aria-label": title,
29
+ onClick,
30
+ tabIndex,
31
+ children
32
+ }
33
+ );
34
+ }
35
+ export {
36
+ IconButton
37
+ };
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/IconButton/index.tsx"],"sourcesContent":["import { cva } from \"class-variance-authority\";\nimport { cn } from \"../../utils/general/cn\";\n\nconst variants = cva(\"flex justify-center items-center p-0 rounded border-none transition-colors cursor-pointer\", {\n variants: {\n variant: {\n neutral: \"bg-transparent hover:bg-(--theme-elevation-50) text-(--theme-elevation-450) hover:text-(--theme-text)\",\n neutralSecondary:\n \"bg-(--theme-elevation-100) hover:bg-(--theme-elevation-150) text-(--theme-elevation-600) hover:text-(--theme-text)\",\n primary: \"bg-(--theme-elevation-1000) hover:bg-(--theme-elevation-800) text-(--theme-elevation-0)\",\n },\n size: {\n sm: \"w-[20px] h-[20px]\",\n md: \"w-[24px] h-[24px]\",\n },\n },\n defaultVariants: {\n variant: \"neutral\",\n size: \"md\",\n },\n});\n\ninterface Props {\n className?: string;\n title?: string;\n children: React.ReactNode;\n variant?: \"neutral\" | \"neutralSecondary\" | \"primary\";\n size?: \"sm\" | \"md\";\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n tabIndex?: number;\n}\n\nexport function IconButton({ className, title, children, variant, size, onClick, tabIndex }: Props) {\n return (\n <button\n className={cn(variants({ variant, size }), className)}\n type=\"button\"\n title={title}\n aria-label={title}\n onClick={onClick}\n tabIndex={tabIndex}>\n {children}\n </button>\n );\n}\n"],"mappings":"AAkCI;AAlCJ,SAAS,WAAW;AACpB,SAAS,UAAU;AAEnB,MAAM,WAAW,IAAI,6FAA6F;AAAA,EAChH,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,kBACE;AAAA,MACF,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACF,CAAC;AAYM,SAAS,WAAW,EAAE,WAAW,OAAO,UAAU,SAAS,MAAM,SAAS,SAAS,GAAU;AAClG,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,SAAS,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,MACpD,MAAK;AAAA,MACL;AAAA,MACA,cAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACC;AAAA;AAAA,EACH;AAEJ;","names":[]}
@@ -0,0 +1,11 @@
1
+ import type { User } from "../types";
2
+ interface MentionDropdownProps {
3
+ users: User[];
4
+ selectedIndex: number;
5
+ onSelect: (user: User) => void;
6
+ onClose: () => void;
7
+ anchorRef: React.RefObject<HTMLDivElement | null>;
8
+ }
9
+ export declare function MentionDropdown({ users, selectedIndex, onSelect, anchorRef, }: MentionDropdownProps): import("react").ReactPortal | null;
10
+ export {};
11
+ //# sourceMappingURL=MentionDropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MentionDropdown.d.ts","sourceRoot":"","sources":["../../src/components/MentionDropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGrC,UAAU,oBAAoB;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACnD;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,aAAa,EACb,QAAQ,EACR,SAAS,GACV,EAAE,oBAAoB,sCAyCtB"}
@@ -0,0 +1,53 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { createPortal } from "react-dom";
4
+ import { PopupList, useTranslation } from "@payloadcms/ui";
5
+ import { FALLBACK_USERNAME } from "../constants";
6
+ import { useComments } from "../providers/CommentsProvider";
7
+ import { resolveUsername } from "../utils/user/resolveUsername";
8
+ function MentionDropdown({
9
+ users,
10
+ selectedIndex,
11
+ onSelect,
12
+ anchorRef
13
+ }) {
14
+ const { usernameFieldPath } = useComments();
15
+ const { t } = useTranslation();
16
+ const unknownLabel = t("comments:unknownAuthor") ?? FALLBACK_USERNAME;
17
+ if (!anchorRef.current) return null;
18
+ const rect = anchorRef.current.getBoundingClientRect();
19
+ return createPortal(
20
+ /* @__PURE__ */ jsx(
21
+ "div",
22
+ {
23
+ onMouseDown: (e) => e.stopPropagation(),
24
+ style: {
25
+ position: "absolute",
26
+ top: rect.top + window.scrollY,
27
+ left: rect.left + window.scrollX,
28
+ overflowY: "auto",
29
+ width: rect.width,
30
+ maxHeight: "100px",
31
+ transform: "translateY(calc(-100% - 6px))",
32
+ zIndex: 9999
33
+ },
34
+ children: /* @__PURE__ */ jsx(
35
+ "div",
36
+ {
37
+ className: "bg-(--theme-elevation-0) rounded-md shadow-[0_-2px_16px_-2px_rgba(0,0,0,0.2)]",
38
+ onMouseDown: (e) => e.preventDefault(),
39
+ children: /* @__PURE__ */ jsx(PopupList.ButtonGroup, { children: users.length === 0 ? /* @__PURE__ */ jsx("p", { className: "m-0 px-3 py-1.5 text-[13px] text-(--theme-elevation-500)", children: t("comments:noMentionMatches") }) : users.map((user, index) => /* @__PURE__ */ jsxs(PopupList.Button, { active: index === selectedIndex, onClick: () => onSelect(user), children: [
40
+ "@",
41
+ resolveUsername(user, usernameFieldPath, unknownLabel)
42
+ ] }, user.id)) })
43
+ }
44
+ )
45
+ }
46
+ ),
47
+ document.body
48
+ );
49
+ }
50
+ export {
51
+ MentionDropdown
52
+ };
53
+ //# sourceMappingURL=MentionDropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/MentionDropdown.tsx"],"sourcesContent":["\"use client\";\n\nimport { createPortal } from \"react-dom\";\nimport { PopupList, useTranslation } from \"@payloadcms/ui\";\nimport { FALLBACK_USERNAME } from \"../constants\";\nimport { useComments } from \"../providers/CommentsProvider\";\nimport type { User } from \"../types\";\nimport { resolveUsername } from \"../utils/user/resolveUsername\";\n\ninterface MentionDropdownProps {\n users: User[];\n selectedIndex: number;\n onSelect: (user: User) => void;\n onClose: () => void;\n anchorRef: React.RefObject<HTMLDivElement | null>;\n}\n\nexport function MentionDropdown({\n users,\n selectedIndex,\n onSelect,\n anchorRef,\n}: MentionDropdownProps) {\n const { usernameFieldPath } = useComments();\n const { t } = useTranslation();\n const unknownLabel = t(\"comments:unknownAuthor\" as never) ?? FALLBACK_USERNAME;\n\n if (!anchorRef.current) return null;\n\n const rect = anchorRef.current.getBoundingClientRect();\n\n return createPortal(\n <div\n onMouseDown={(e) => e.stopPropagation()}\n style={{\n position: \"absolute\",\n top: rect.top + window.scrollY,\n left: rect.left + window.scrollX,\n overflowY: \"auto\",\n width: rect.width,\n maxHeight: \"100px\",\n transform: \"translateY(calc(-100% - 6px))\",\n zIndex: 9999,\n }}>\n <div\n className=\"bg-(--theme-elevation-0) rounded-md shadow-[0_-2px_16px_-2px_rgba(0,0,0,0.2)]\"\n onMouseDown={(e) => e.preventDefault()}>\n <PopupList.ButtonGroup>\n {users.length === 0 ?\n <p className=\"m-0 px-3 py-1.5 text-[13px] text-(--theme-elevation-500)\">\n {t(\"comments:noMentionMatches\" as never)}\n </p>\n : users.map((user, index) => (\n <PopupList.Button key={user.id} active={index === selectedIndex} onClick={() => onSelect(user)}>\n @{resolveUsername(user, usernameFieldPath, unknownLabel)}\n </PopupList.Button>\n ))\n }\n </PopupList.ButtonGroup>\n </div>\n </div>,\n document.body,\n );\n}\n"],"mappings":";AAiDY,cAIE,YAJF;AA/CZ,SAAS,oBAAoB;AAC7B,SAAS,WAAW,sBAAsB;AAC1C,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAE5B,SAAS,uBAAuB;AAUzB,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,EAAE,kBAAkB,IAAI,YAAY;AAC1C,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,eAAe,EAAE,wBAAiC,KAAK;AAE7D,MAAI,CAAC,UAAU,QAAS,QAAO;AAE/B,QAAM,OAAO,UAAU,QAAQ,sBAAsB;AAErD,SAAO;AAAA,IACL;AAAA,MAAC;AAAA;AAAA,QACC,aAAa,CAAC,MAAM,EAAE,gBAAgB;AAAA,QACtC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,KAAK,KAAK,MAAM,OAAO;AAAA,UACvB,MAAM,KAAK,OAAO,OAAO;AAAA,UACzB,WAAW;AAAA,UACX,OAAO,KAAK;AAAA,UACZ,WAAW;AAAA,UACX,WAAW;AAAA,UACX,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,aAAa,CAAC,MAAM,EAAE,eAAe;AAAA,YACrC,8BAAC,UAAU,aAAV,EACE,gBAAM,WAAW,IAChB,oBAAC,OAAE,WAAU,4DACV,YAAE,2BAAoC,GACzC,IACA,MAAM,IAAI,CAAC,MAAM,UACf,qBAAC,UAAU,QAAV,EAA+B,QAAQ,UAAU,eAAe,SAAS,MAAM,SAAS,IAAI,GAAG;AAAA;AAAA,cAC5F,gBAAgB,MAAM,mBAAmB,YAAY;AAAA,iBADlC,KAAK,EAE5B,CACD,GAEL;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AACF;","names":[]}
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ name: string;
3
+ isSelf: boolean;
4
+ }
5
+ export declare function MentionLabel({ name, isSelf }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MentionLabel/index.tsx"],"names":[],"mappings":"AAEA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,2CAUnD"}
@@ -0,0 +1,21 @@
1
+ import { jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../utils/general/cn";
3
+ function MentionLabel({ name, isSelf }) {
4
+ return /* @__PURE__ */ jsxs(
5
+ "span",
6
+ {
7
+ className: cn(
8
+ "font-medium rounded-sm px-0.5",
9
+ isSelf ? "bg-[#f0be3621] text-[#a36e12]" : "bg-[#36c5f021] text-[#1264a3]"
10
+ ),
11
+ children: [
12
+ "@",
13
+ name
14
+ ]
15
+ }
16
+ );
17
+ }
18
+ export {
19
+ MentionLabel
20
+ };
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/MentionLabel/index.tsx"],"sourcesContent":["import { cn } from \"../../utils/general/cn\";\n\ninterface Props {\n name: string;\n isSelf: boolean;\n}\n\nexport function MentionLabel({ name, isSelf }: Props) {\n return (\n <span\n className={cn(\n \"font-medium rounded-sm px-0.5\",\n isSelf ? \"bg-[#f0be3621] text-[#a36e12]\" : \"bg-[#36c5f021] text-[#1264a3]\",\n )}>\n @{name}\n </span>\n );\n}\n"],"mappings":"AASI;AATJ,SAAS,UAAU;AAOZ,SAAS,aAAa,EAAE,MAAM,OAAO,GAAU;AACpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,SAAS,kCAAkC;AAAA,MAC7C;AAAA,MAAG;AAAA;AAAA,QACD;AAAA;AAAA;AAAA,EACJ;AAEJ;","names":[]}
@@ -0,0 +1,4 @@
1
+ import type { SanitizedConfig } from "payload";
2
+ export declare function setPayloadConfig(config: SanitizedConfig): void;
3
+ export declare function getPayloadConfig(): SanitizedConfig;
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAO/C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,QAEvD;AAED,wBAAgB,gBAAgB,IAAI,eAAe,CAQlD"}
package/dist/config.js ADDED
@@ -0,0 +1,17 @@
1
+ import { PLUGIN_NAME } from "./constants";
2
+ const GLOBAL_CONFIG_KEY = `__${PLUGIN_NAME}_payload_config__`;
3
+ function setPayloadConfig(config) {
4
+ globalThis[GLOBAL_CONFIG_KEY] = config;
5
+ }
6
+ function getPayloadConfig() {
7
+ const config = globalThis[GLOBAL_CONFIG_KEY];
8
+ if (!config) {
9
+ throw new Error(`[${PLUGIN_NAME}] Payload config not initialized.`);
10
+ }
11
+ return config;
12
+ }
13
+ export {
14
+ getPayloadConfig,
15
+ setPayloadConfig
16
+ };
17
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/config.ts"],"sourcesContent":["import type { SanitizedConfig } from \"payload\";\nimport { PLUGIN_NAME } from \"./constants\";\n\nconst GLOBAL_CONFIG_KEY = `__${PLUGIN_NAME}_payload_config__`;\n\ntype GlobalThis = Record<string, unknown>;\n\nexport function setPayloadConfig(config: SanitizedConfig) {\n (globalThis as GlobalThis)[GLOBAL_CONFIG_KEY] = config;\n}\n\nexport function getPayloadConfig(): SanitizedConfig {\n const config = (globalThis as GlobalThis)[GLOBAL_CONFIG_KEY] as SanitizedConfig | undefined;\n\n if (!config) {\n throw new Error(`[${PLUGIN_NAME}] Payload config not initialized.`);\n }\n\n return config;\n}\n"],"mappings":"AACA,SAAS,mBAAmB;AAE5B,MAAM,oBAAoB,KAAK,WAAW;AAInC,SAAS,iBAAiB,QAAyB;AACxD,EAAC,WAA0B,iBAAiB,IAAI;AAClD;AAEO,SAAS,mBAAoC;AAClD,QAAM,SAAU,WAA0B,iBAAiB;AAE3D,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,IAAI,WAAW,mCAAmC;AAAA,EACpE;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,9 @@
1
+ export declare const DEFAULT_COLLECTION_SLUG = "comments";
2
+ export declare const COMMENTS_DRAWER_BASE_SLUG = "comments-panel";
3
+ export declare const PLUGIN_NAME = "payload-plugin-comments";
4
+ export declare const PACKAGE_NAME = "@focus-reactive/payload-plugin-comments";
5
+ export declare const USERNAME_DEFAULT_FIELD_PATH = "name";
6
+ export declare const FALLBACK_USERNAME = "Unknown user";
7
+ export declare const FALLBACK_DELETED_USERNAME = "Deleted user";
8
+ export declare const EXCLUDED_ADMIN_ROUTES: string[];
9
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAClD,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAE1D,eAAO,MAAM,WAAW,4BAA4B,CAAC;AACrD,eAAO,MAAM,YAAY,4CAA4C,CAAC;AAEtE,eAAO,MAAM,2BAA2B,SAAS,CAAC;AAClD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAExD,eAAO,MAAM,qBAAqB,UAGjC,CAAA"}
@@ -0,0 +1,22 @@
1
+ const DEFAULT_COLLECTION_SLUG = "comments";
2
+ const COMMENTS_DRAWER_BASE_SLUG = "comments-panel";
3
+ const PLUGIN_NAME = "payload-plugin-comments";
4
+ const PACKAGE_NAME = "@focus-reactive/payload-plugin-comments";
5
+ const USERNAME_DEFAULT_FIELD_PATH = "name";
6
+ const FALLBACK_USERNAME = "Unknown user";
7
+ const FALLBACK_DELETED_USERNAME = "Deleted user";
8
+ const EXCLUDED_ADMIN_ROUTES = [
9
+ "/admin/account",
10
+ "/admin/create-first-user"
11
+ ];
12
+ export {
13
+ COMMENTS_DRAWER_BASE_SLUG,
14
+ DEFAULT_COLLECTION_SLUG,
15
+ EXCLUDED_ADMIN_ROUTES,
16
+ FALLBACK_DELETED_USERNAME,
17
+ FALLBACK_USERNAME,
18
+ PACKAGE_NAME,
19
+ PLUGIN_NAME,
20
+ USERNAME_DEFAULT_FIELD_PATH
21
+ };
22
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["export const DEFAULT_COLLECTION_SLUG = \"comments\";\nexport const COMMENTS_DRAWER_BASE_SLUG = \"comments-panel\";\n\nexport const PLUGIN_NAME = \"payload-plugin-comments\";\nexport const PACKAGE_NAME = \"@focus-reactive/payload-plugin-comments\";\n\nexport const USERNAME_DEFAULT_FIELD_PATH = \"name\";\nexport const FALLBACK_USERNAME = \"Unknown user\";\nexport const FALLBACK_DELETED_USERNAME = \"Deleted user\";\n\nexport const EXCLUDED_ADMIN_ROUTES = [\n '/admin/account',\n '/admin/create-first-user',\n]\n"],"mappings":"AAAO,MAAM,0BAA0B;AAChC,MAAM,4BAA4B;AAElC,MAAM,cAAc;AACpB,MAAM,eAAe;AAErB,MAAM,8BAA8B;AACpC,MAAM,oBAAoB;AAC1B,MAAM,4BAA4B;AAElC,MAAM,wBAAwB;AAAA,EACnC;AAAA,EACA;AACF;","names":[]}
@@ -0,0 +1,2 @@
1
+ export declare function useRelativeDate(iso: string): string;
2
+ //# sourceMappingURL=useRelativeDate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRelativeDate.d.ts","sourceRoot":"","sources":["../../src/hooks/useRelativeDate.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,UAI1C"}
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { useTranslation } from "@payloadcms/ui";
3
+ import { formatRelativeDate } from "../utils/general/formatRelativeDate";
4
+ function useRelativeDate(iso) {
5
+ const { i18n } = useTranslation();
6
+ return formatRelativeDate(iso, i18n.language);
7
+ }
8
+ export {
9
+ useRelativeDate
10
+ };
11
+ //# sourceMappingURL=useRelativeDate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useRelativeDate.ts"],"sourcesContent":["\"use client\";\n\nimport { useTranslation } from \"@payloadcms/ui\";\nimport { formatRelativeDate } from \"../utils/general/formatRelativeDate\";\n\nexport function useRelativeDate(iso: string) {\n const { i18n } = useTranslation();\n\n return formatRelativeDate(iso, i18n.language);\n}\n"],"mappings":";AAEA,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AAE5B,SAAS,gBAAgB,KAAa;AAC3C,QAAM,EAAE,KAAK,IAAI,eAAe;AAEhC,SAAO,mBAAmB,KAAK,KAAK,QAAQ;AAC9C;","names":[]}
@@ -0,0 +1,5 @@
1
+ export type { CommentsPluginConfig } from "./types";
2
+ export type { CommentsTranslations } from "./translations/types";
3
+ export { commentsPlugin } from "./plugin";
4
+ export { setPayloadConfig } from "./config";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ import { commentsPlugin } from "./plugin";
2
+ import { setPayloadConfig } from "./config";
3
+ export {
4
+ commentsPlugin,
5
+ setPayloadConfig
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export type { CommentsPluginConfig } from \"./types\";\nexport type { CommentsTranslations } from \"./translations/types\";\nexport { commentsPlugin } from \"./plugin\";\nexport { setPayloadConfig } from \"./config\";\n"],"mappings":"AAEA,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;","names":[]}
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from "payload";
2
+ import type { CommentsPluginConfig } from "./types";
3
+ export declare const commentsPlugin: (config?: CommentsPluginConfig) => Plugin;
4
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAQpD,eAAO,MAAM,cAAc,YAChB,oBAAoB,KAAQ,MA2DpC,CAAC"}
package/dist/plugin.js ADDED
@@ -0,0 +1,60 @@
1
+ import { baseCollection as getBaseCollection } from "./collection";
2
+ import { overrideCommentsCollection } from "./utils/config/overrideCommentsCollection";
3
+ import { getComponentPath } from "./utils/path/getComponentPath";
4
+ import { normalizeCollections } from "./utils/config/normalizeCollections";
5
+ import { mergeTranslations } from "./utils/config/mergeTranslations";
6
+ import { overrideCollections } from "./utils/config/overrideCollections";
7
+ import { overrideGlobals } from "./utils/config/overrideGlobals";
8
+ const commentsPlugin = (config = {}) => (incomingConfig) => {
9
+ const { enabled = true, collections: collectionEntries, overrides, usernameFieldPath } = config;
10
+ if (!enabled) {
11
+ return incomingConfig;
12
+ }
13
+ const baseCollection = getBaseCollection(config.tenant);
14
+ const finalCollection = overrideCommentsCollection(baseCollection, overrides);
15
+ const allGlobalSlugs = (incomingConfig.globals ?? []).map((g) => g.slug);
16
+ const allCollectionSlugs = (incomingConfig.collections ?? []).map((c) => c.slug);
17
+ const normalizedCollections = normalizeCollections(collectionEntries);
18
+ const documentTitleFields = normalizedCollections ? Object.fromEntries([...normalizedCollections.entries()].map(([k, v]) => [k, v.titleField])) : {};
19
+ const userTranslations = config.translations ?? {};
20
+ const incomingConfigTranslations = incomingConfig.i18n?.translations ?? {};
21
+ const mergedTranslations = mergeTranslations(incomingConfigTranslations, userTranslations);
22
+ return {
23
+ ...incomingConfig,
24
+ i18n: {
25
+ ...incomingConfig.i18n,
26
+ translations: mergedTranslations
27
+ },
28
+ admin: {
29
+ ...incomingConfig.admin,
30
+ components: {
31
+ ...incomingConfig.admin?.components,
32
+ providers: [
33
+ ...incomingConfig.admin?.components?.providers ?? [],
34
+ getComponentPath("providers/CommentsProviderWrapper", "CommentsProviderWrapper"),
35
+ getComponentPath("providers/GlobalCommentsLoader", "GlobalCommentsLoader")
36
+ ],
37
+ actions: [
38
+ ...incomingConfig.admin?.components?.actions ?? [],
39
+ getComponentPath("components/CommentsHeaderButton", "CommentsHeaderButton")
40
+ ]
41
+ },
42
+ custom: {
43
+ ...incomingConfig.admin?.custom,
44
+ commentsPlugin: {
45
+ collections: allCollectionSlugs,
46
+ documentTitleFields,
47
+ globals: allGlobalSlugs,
48
+ tenant: config.tenant,
49
+ usernameFieldPath
50
+ }
51
+ }
52
+ },
53
+ collections: [...overrideCollections(incomingConfig.collections), finalCollection],
54
+ globals: overrideGlobals(incomingConfig.globals)
55
+ };
56
+ };
57
+ export {
58
+ commentsPlugin
59
+ };
60
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { Config, Plugin } from \"payload\";\nimport { baseCollection as getBaseCollection } from \"./collection\";\nimport type { CommentsPluginConfig } from \"./types\";\nimport { overrideCommentsCollection } from \"./utils/config/overrideCommentsCollection\";\nimport { getComponentPath } from \"./utils/path/getComponentPath\";\nimport { normalizeCollections } from \"./utils/config/normalizeCollections\";\nimport { mergeTranslations } from \"./utils/config/mergeTranslations\";\nimport { overrideCollections } from \"./utils/config/overrideCollections\";\nimport { overrideGlobals } from \"./utils/config/overrideGlobals\";\n\nexport const commentsPlugin =\n (config: CommentsPluginConfig = {}): Plugin =>\n (incomingConfig: Config): Config => {\n const { enabled = true, collections: collectionEntries, overrides, usernameFieldPath } = config;\n\n if (!enabled) {\n return incomingConfig;\n }\n\n const baseCollection = getBaseCollection(config.tenant);\n const finalCollection = overrideCommentsCollection(baseCollection, overrides);\n\n const allGlobalSlugs = (incomingConfig.globals ?? []).map((g) => g.slug);\n const allCollectionSlugs = (incomingConfig.collections ?? []).map((c) => c.slug);\n\n const normalizedCollections = normalizeCollections(collectionEntries);\n const documentTitleFields =\n normalizedCollections ?\n Object.fromEntries([...normalizedCollections.entries()].map(([k, v]) => [k, v.titleField]))\n : {};\n\n const userTranslations = config.translations ?? {};\n const incomingConfigTranslations = (incomingConfig.i18n?.translations as Record<string, object> | undefined) ?? {};\n\n const mergedTranslations = mergeTranslations(incomingConfigTranslations, userTranslations);\n\n return {\n ...incomingConfig,\n i18n: {\n ...incomingConfig.i18n,\n translations: mergedTranslations,\n },\n admin: {\n ...incomingConfig.admin,\n components: {\n ...incomingConfig.admin?.components,\n providers: [\n ...(incomingConfig.admin?.components?.providers ?? []),\n getComponentPath(\"providers/CommentsProviderWrapper\", \"CommentsProviderWrapper\"),\n getComponentPath(\"providers/GlobalCommentsLoader\", \"GlobalCommentsLoader\"),\n ],\n actions: [\n ...(incomingConfig.admin?.components?.actions ?? []),\n getComponentPath(\"components/CommentsHeaderButton\", \"CommentsHeaderButton\"),\n ],\n },\n custom: {\n ...incomingConfig.admin?.custom,\n commentsPlugin: {\n collections: allCollectionSlugs,\n documentTitleFields,\n globals: allGlobalSlugs,\n tenant: config.tenant,\n usernameFieldPath,\n },\n },\n },\n collections: [...overrideCollections(incomingConfig.collections), finalCollection],\n globals: overrideGlobals(incomingConfig.globals),\n };\n };\n"],"mappings":"AACA,SAAS,kBAAkB,yBAAyB;AAEpD,SAAS,kCAAkC;AAC3C,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,yBAAyB;AAClC,SAAS,2BAA2B;AACpC,SAAS,uBAAuB;AAEzB,MAAM,iBACX,CAAC,SAA+B,CAAC,MACjC,CAAC,mBAAmC;AAClC,QAAM,EAAE,UAAU,MAAM,aAAa,mBAAmB,WAAW,kBAAkB,IAAI;AAEzF,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,kBAAkB,OAAO,MAAM;AACtD,QAAM,kBAAkB,2BAA2B,gBAAgB,SAAS;AAE5E,QAAM,kBAAkB,eAAe,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI;AACvE,QAAM,sBAAsB,eAAe,eAAe,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI;AAE/E,QAAM,wBAAwB,qBAAqB,iBAAiB;AACpE,QAAM,sBACJ,wBACE,OAAO,YAAY,CAAC,GAAG,sBAAsB,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAC1F,CAAC;AAEL,QAAM,mBAAmB,OAAO,gBAAgB,CAAC;AACjD,QAAM,6BAA8B,eAAe,MAAM,gBAAuD,CAAC;AAEjH,QAAM,qBAAqB,kBAAkB,4BAA4B,gBAAgB;AAEzF,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM;AAAA,MACJ,GAAG,eAAe;AAAA,MAClB,cAAc;AAAA,IAChB;AAAA,IACA,OAAO;AAAA,MACL,GAAG,eAAe;AAAA,MAClB,YAAY;AAAA,QACV,GAAG,eAAe,OAAO;AAAA,QACzB,WAAW;AAAA,UACT,GAAI,eAAe,OAAO,YAAY,aAAa,CAAC;AAAA,UACpD,iBAAiB,qCAAqC,yBAAyB;AAAA,UAC/E,iBAAiB,kCAAkC,sBAAsB;AAAA,QAC3E;AAAA,QACA,SAAS;AAAA,UACP,GAAI,eAAe,OAAO,YAAY,WAAW,CAAC;AAAA,UAClD,iBAAiB,mCAAmC,sBAAsB;AAAA,QAC5E;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,eAAe,OAAO;AAAA,QACzB,gBAAgB;AAAA,UACd,aAAa;AAAA,UACb;AAAA,UACA,SAAS;AAAA,UACT,QAAQ,OAAO;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa,CAAC,GAAG,oBAAoB,eAAe,WAAW,GAAG,eAAe;AAAA,IACjF,SAAS,gBAAgB,eAAe,OAAO;AAAA,EACjD;AACF;","names":[]}
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from "react";
2
+ interface CommentsDrawerContextProps {
3
+ slug: string;
4
+ scrollTargetPath: string | null;
5
+ open: () => void;
6
+ setScrollTargetPath: (path: string | null) => void;
7
+ }
8
+ interface Props {
9
+ children: ReactNode;
10
+ }
11
+ export declare function CommentsDrawerProvider({ children }: Props): import("react/jsx-runtime").JSX.Element;
12
+ export declare function useCommentsDrawer(): CommentsDrawerContextProps;
13
+ export {};
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/CommentsDrawerProvider/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAC;AAI5E,UAAU,0BAA0B;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACpD;AAID,UAAU,KAAK;IACb,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAiBzD;AAED,wBAAgB,iBAAiB,+BAMhC"}
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { useDrawerSlug, useModal } from "@payloadcms/ui";
4
+ import { createContext, useContext, useState } from "react";
5
+ import { COMMENTS_DRAWER_BASE_SLUG } from "../../constants";
6
+ import { useComments } from "../CommentsProvider";
7
+ const CommentsDrawerContext = createContext(null);
8
+ function CommentsDrawerProvider({ children }) {
9
+ const [scrollTargetPath, setScrollTargetPath] = useState(null);
10
+ const slug = useDrawerSlug(COMMENTS_DRAWER_BASE_SLUG);
11
+ const { openModal } = useModal();
12
+ const { syncComments } = useComments();
13
+ const open = () => {
14
+ openModal(slug);
15
+ void syncComments();
16
+ };
17
+ return /* @__PURE__ */ jsx(CommentsDrawerContext.Provider, { value: { slug, scrollTargetPath, open, setScrollTargetPath }, children });
18
+ }
19
+ function useCommentsDrawer() {
20
+ const context = useContext(CommentsDrawerContext);
21
+ if (!context) throw new Error("useCommentsDrawer must be used within a CommentsProvider");
22
+ return context;
23
+ }
24
+ export {
25
+ CommentsDrawerProvider,
26
+ useCommentsDrawer
27
+ };
28
+ //# sourceMappingURL=index.js.map