@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.
- package/README.md +563 -0
- package/dist/collection/access/isAuth.d.ts +3 -0
- package/dist/collection/access/isAuth.d.ts.map +1 -0
- package/dist/collection/access/isAuth.js +8 -0
- package/dist/collection/access/isAuth.js.map +1 -0
- package/dist/collection/hooks/setAuthorBeforeCreate.d.ts +3 -0
- package/dist/collection/hooks/setAuthorBeforeCreate.d.ts.map +1 -0
- package/dist/collection/hooks/setAuthorBeforeCreate.js +10 -0
- package/dist/collection/hooks/setAuthorBeforeCreate.js.map +1 -0
- package/dist/collection/hooks/setTenantBeforeCreate.d.ts +3 -0
- package/dist/collection/hooks/setTenantBeforeCreate.d.ts.map +1 -0
- package/dist/collection/hooks/setTenantBeforeCreate.js +24 -0
- package/dist/collection/hooks/setTenantBeforeCreate.js.map +1 -0
- package/dist/collection/index.d.ts +4 -0
- package/dist/collection/index.d.ts.map +1 -0
- package/dist/collection/index.js +139 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +11 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Avatar/index.js +11 -0
- package/dist/components/Avatar/index.js.map +1 -0
- package/dist/components/CommentEditor/ActionPanel.d.ts +8 -0
- package/dist/components/CommentEditor/ActionPanel.d.ts.map +1 -0
- package/dist/components/CommentEditor/ActionPanel.js +17 -0
- package/dist/components/CommentEditor/ActionPanel.js.map +1 -0
- package/dist/components/CommentEditor/index.d.ts +23 -0
- package/dist/components/CommentEditor/index.d.ts.map +1 -0
- package/dist/components/CommentEditor/index.js +265 -0
- package/dist/components/CommentEditor/index.js.map +1 -0
- package/dist/components/CommentItem/ToolsPanel.d.ts +9 -0
- package/dist/components/CommentItem/ToolsPanel.d.ts.map +1 -0
- package/dist/components/CommentItem/ToolsPanel.js +22 -0
- package/dist/components/CommentItem/ToolsPanel.js.map +1 -0
- package/dist/components/CommentItem/index.d.ts +8 -0
- package/dist/components/CommentItem/index.d.ts.map +1 -0
- package/dist/components/CommentItem/index.js +65 -0
- package/dist/components/CommentItem/index.js.map +1 -0
- package/dist/components/CommentsDrawer/components/Header.d.ts +6 -0
- package/dist/components/CommentsDrawer/components/Header.d.ts.map +1 -0
- package/dist/components/CommentsDrawer/components/Header.js +46 -0
- package/dist/components/CommentsDrawer/components/Header.js.map +1 -0
- package/dist/components/CommentsDrawer/index.d.ts +6 -0
- package/dist/components/CommentsDrawer/index.d.ts.map +1 -0
- package/dist/components/CommentsDrawer/index.js +30 -0
- package/dist/components/CommentsDrawer/index.js.map +1 -0
- package/dist/components/CommentsHeaderButton/index.d.ts +2 -0
- package/dist/components/CommentsHeaderButton/index.d.ts.map +1 -0
- package/dist/components/CommentsHeaderButton/index.js +19 -0
- package/dist/components/CommentsHeaderButton/index.js.map +1 -0
- package/dist/components/CommentsPanel/components/CollapsibleGroup.d.ts +10 -0
- package/dist/components/CommentsPanel/components/CollapsibleGroup.d.ts.map +1 -0
- package/dist/components/CommentsPanel/components/CollapsibleGroup.js +68 -0
- package/dist/components/CommentsPanel/components/CollapsibleGroup.js.map +1 -0
- package/dist/components/CommentsPanel/components/DocumentView.d.ts +9 -0
- package/dist/components/CommentsPanel/components/DocumentView.d.ts.map +1 -0
- package/dist/components/CommentsPanel/components/DocumentView.js +28 -0
- package/dist/components/CommentsPanel/components/DocumentView.js.map +1 -0
- package/dist/components/CommentsPanel/components/FieldGroupSection.d.ts +11 -0
- package/dist/components/CommentsPanel/components/FieldGroupSection.d.ts.map +1 -0
- package/dist/components/CommentsPanel/components/FieldGroupSection.js +62 -0
- package/dist/components/CommentsPanel/components/FieldGroupSection.js.map +1 -0
- package/dist/components/CommentsPanel/components/GlobalDocumentView.d.ts +9 -0
- package/dist/components/CommentsPanel/components/GlobalDocumentView.d.ts.map +1 -0
- package/dist/components/CommentsPanel/components/GlobalDocumentView.js +20 -0
- package/dist/components/CommentsPanel/components/GlobalDocumentView.js.map +1 -0
- package/dist/components/CommentsPanel/components/GlobalView.d.ts +9 -0
- package/dist/components/CommentsPanel/components/GlobalView.d.ts.map +1 -0
- package/dist/components/CommentsPanel/components/GlobalView.js +62 -0
- package/dist/components/CommentsPanel/components/GlobalView.js.map +1 -0
- package/dist/components/CommentsPanel/constants.d.ts +3 -0
- package/dist/components/CommentsPanel/constants.d.ts.map +1 -0
- package/dist/components/CommentsPanel/constants.js +9 -0
- package/dist/components/CommentsPanel/constants.js.map +1 -0
- package/dist/components/CommentsPanel/hooks/useCollapseState.d.ts +2 -0
- package/dist/components/CommentsPanel/hooks/useCollapseState.d.ts.map +1 -0
- package/dist/components/CommentsPanel/hooks/useCollapseState.js +44 -0
- package/dist/components/CommentsPanel/hooks/useCollapseState.js.map +1 -0
- package/dist/components/CommentsPanel/hooks/useScrollToTargetFieldGroup.d.ts +2 -0
- package/dist/components/CommentsPanel/hooks/useScrollToTargetFieldGroup.d.ts.map +1 -0
- package/dist/components/CommentsPanel/hooks/useScrollToTargetFieldGroup.js +35 -0
- package/dist/components/CommentsPanel/hooks/useScrollToTargetFieldGroup.js.map +1 -0
- package/dist/components/CommentsPanel/index.d.ts +6 -0
- package/dist/components/CommentsPanel/index.d.ts.map +1 -0
- package/dist/components/CommentsPanel/index.js +32 -0
- package/dist/components/CommentsPanel/index.js.map +1 -0
- package/dist/components/CommentsPanel/types.d.ts +4 -0
- package/dist/components/CommentsPanel/types.d.ts.map +1 -0
- package/dist/components/CommentsPanel/types.js +1 -0
- package/dist/components/CommentsPanel/types.js.map +1 -0
- package/dist/components/CommentsPanel/utils/createCollapsibleGroupKey.d.ts +10 -0
- package/dist/components/CommentsPanel/utils/createCollapsibleGroupKey.d.ts.map +1 -0
- package/dist/components/CommentsPanel/utils/createCollapsibleGroupKey.js +15 -0
- package/dist/components/CommentsPanel/utils/createCollapsibleGroupKey.js.map +1 -0
- package/dist/components/CommentsPanel/utils/filterComments.d.ts +9 -0
- package/dist/components/CommentsPanel/utils/filterComments.d.ts.map +1 -0
- package/dist/components/CommentsPanel/utils/filterComments.js +17 -0
- package/dist/components/CommentsPanel/utils/filterComments.js.map +1 -0
- package/dist/components/CommentsPanel/utils/groupCommentsByFieldPath.d.ts +4 -0
- package/dist/components/CommentsPanel/utils/groupCommentsByFieldPath.d.ts.map +1 -0
- package/dist/components/CommentsPanel/utils/groupCommentsByFieldPath.js +14 -0
- package/dist/components/CommentsPanel/utils/groupCommentsByFieldPath.js.map +1 -0
- package/dist/components/CommentsPanel/utils/groupCommentsGlobally.d.ts +18 -0
- package/dist/components/CommentsPanel/utils/groupCommentsGlobally.d.ts.map +1 -0
- package/dist/components/CommentsPanel/utils/groupCommentsGlobally.js +58 -0
- package/dist/components/CommentsPanel/utils/groupCommentsGlobally.js.map +1 -0
- package/dist/components/CommentsPanel/utils/resolveEntityLabel.d.ts +3 -0
- package/dist/components/CommentsPanel/utils/resolveEntityLabel.d.ts.map +1 -0
- package/dist/components/CommentsPanel/utils/resolveEntityLabel.js +14 -0
- package/dist/components/CommentsPanel/utils/resolveEntityLabel.js.map +1 -0
- package/dist/components/CommentsPanel/utils/resolveFieldLabel.d.ts +11 -0
- package/dist/components/CommentsPanel/utils/resolveFieldLabel.d.ts.map +1 -0
- package/dist/components/CommentsPanel/utils/resolveFieldLabel.js +9 -0
- package/dist/components/CommentsPanel/utils/resolveFieldLabel.js.map +1 -0
- package/dist/components/CommentsPanel/utils/sortGroupsByCreatedAt.d.ts +4 -0
- package/dist/components/CommentsPanel/utils/sortGroupsByCreatedAt.d.ts.map +1 -0
- package/dist/components/CommentsPanel/utils/sortGroupsByCreatedAt.js +11 -0
- package/dist/components/CommentsPanel/utils/sortGroupsByCreatedAt.js.map +1 -0
- package/dist/components/FieldCommentLabel/AddCommentPopup.d.ts +8 -0
- package/dist/components/FieldCommentLabel/AddCommentPopup.d.ts.map +1 -0
- package/dist/components/FieldCommentLabel/AddCommentPopup.js +50 -0
- package/dist/components/FieldCommentLabel/AddCommentPopup.js.map +1 -0
- package/dist/components/FieldCommentLabel/hooks/useStablePath.d.ts +2 -0
- package/dist/components/FieldCommentLabel/hooks/useStablePath.d.ts.map +1 -0
- package/dist/components/FieldCommentLabel/hooks/useStablePath.js +12 -0
- package/dist/components/FieldCommentLabel/hooks/useStablePath.js.map +1 -0
- package/dist/components/FieldCommentLabel/index.d.ts +11 -0
- package/dist/components/FieldCommentLabel/index.d.ts.map +1 -0
- package/dist/components/FieldCommentLabel/index.js +64 -0
- package/dist/components/FieldCommentLabel/index.js.map +1 -0
- package/dist/components/FieldCommentLabel/types.d.ts +4 -0
- package/dist/components/FieldCommentLabel/types.d.ts.map +1 -0
- package/dist/components/FieldCommentLabel/types.js +1 -0
- package/dist/components/FieldCommentLabel/types.js.map +1 -0
- package/dist/components/FieldCommentLabel/utils/buildStablePath.d.ts +2 -0
- package/dist/components/FieldCommentLabel/utils/buildStablePath.d.ts.map +1 -0
- package/dist/components/FieldCommentLabel/utils/buildStablePath.js +19 -0
- package/dist/components/FieldCommentLabel/utils/buildStablePath.js.map +1 -0
- package/dist/components/FieldCommentLabel/utils/exludeComments.d.ts +3 -0
- package/dist/components/FieldCommentLabel/utils/exludeComments.d.ts.map +1 -0
- package/dist/components/FieldCommentLabel/utils/exludeComments.js +12 -0
- package/dist/components/FieldCommentLabel/utils/exludeComments.js.map +1 -0
- package/dist/components/FieldCommentLabel/utils/resolveLabel.d.ts +3 -0
- package/dist/components/FieldCommentLabel/utils/resolveLabel.d.ts.map +1 -0
- package/dist/components/FieldCommentLabel/utils/resolveLabel.js +9 -0
- package/dist/components/FieldCommentLabel/utils/resolveLabel.js.map +1 -0
- package/dist/components/IconButton/index.d.ts +12 -0
- package/dist/components/IconButton/index.d.ts.map +1 -0
- package/dist/components/IconButton/index.js +38 -0
- package/dist/components/IconButton/index.js.map +1 -0
- package/dist/components/MentionDropdown.d.ts +11 -0
- package/dist/components/MentionDropdown.d.ts.map +1 -0
- package/dist/components/MentionDropdown.js +53 -0
- package/dist/components/MentionDropdown.js.map +1 -0
- package/dist/components/MentionLabel/index.d.ts +7 -0
- package/dist/components/MentionLabel/index.d.ts.map +1 -0
- package/dist/components/MentionLabel/index.js +21 -0
- package/dist/components/MentionLabel/index.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +9 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +22 -0
- package/dist/constants.js.map +1 -0
- package/dist/hooks/useRelativeDate.d.ts +2 -0
- package/dist/hooks/useRelativeDate.d.ts.map +1 -0
- package/dist/hooks/useRelativeDate.js +11 -0
- package/dist/hooks/useRelativeDate.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +4 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +60 -0
- package/dist/plugin.js.map +1 -0
- package/dist/providers/CommentsDrawerProvider/index.d.ts +14 -0
- package/dist/providers/CommentsDrawerProvider/index.d.ts.map +1 -0
- package/dist/providers/CommentsDrawerProvider/index.js +28 -0
- package/dist/providers/CommentsDrawerProvider/index.js.map +1 -0
- package/dist/providers/CommentsProvider/index.d.ts +39 -0
- package/dist/providers/CommentsProvider/index.d.ts.map +1 -0
- package/dist/providers/CommentsProvider/index.js +237 -0
- package/dist/providers/CommentsProvider/index.js.map +1 -0
- package/dist/providers/CommentsProvider/mergeDocumentTitles.d.ts +3 -0
- package/dist/providers/CommentsProvider/mergeDocumentTitles.d.ts.map +1 -0
- package/dist/providers/CommentsProvider/mergeDocumentTitles.js +10 -0
- package/dist/providers/CommentsProvider/mergeDocumentTitles.js.map +1 -0
- package/dist/providers/CommentsProviderWrapper/index.d.ts +7 -0
- package/dist/providers/CommentsProviderWrapper/index.d.ts.map +1 -0
- package/dist/providers/CommentsProviderWrapper/index.js +16 -0
- package/dist/providers/CommentsProviderWrapper/index.js.map +1 -0
- package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.d.ts +13 -0
- package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.d.ts.map +1 -0
- package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.js +22 -0
- package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.js.map +1 -0
- package/dist/providers/GlobalCommentsLoader/index.d.ts +10 -0
- package/dist/providers/GlobalCommentsLoader/index.d.ts.map +1 -0
- package/dist/providers/GlobalCommentsLoader/index.js +31 -0
- package/dist/providers/GlobalCommentsLoader/index.js.map +1 -0
- package/dist/services/createComment.d.ts +12 -0
- package/dist/services/createComment.d.ts.map +1 -0
- package/dist/services/createComment.js +83 -0
- package/dist/services/createComment.js.map +1 -0
- package/dist/services/deleteComment.d.ts +3 -0
- package/dist/services/deleteComment.d.ts.map +1 -0
- package/dist/services/deleteComment.js +34 -0
- package/dist/services/deleteComment.js.map +1 -0
- package/dist/services/fetchMentionableUsers.d.ts +3 -0
- package/dist/services/fetchMentionableUsers.d.ts.map +1 -0
- package/dist/services/fetchMentionableUsers.js +46 -0
- package/dist/services/fetchMentionableUsers.js.map +1 -0
- package/dist/services/fieldLabels/fetchFieldLabels.d.ts +3 -0
- package/dist/services/fieldLabels/fetchFieldLabels.d.ts.map +1 -0
- package/dist/services/fieldLabels/fetchFieldLabels.js +74 -0
- package/dist/services/fieldLabels/fetchFieldLabels.js.map +1 -0
- package/dist/services/fieldLabels/utils/groupFieldPathsByDocument.d.ts +5 -0
- package/dist/services/fieldLabels/utils/groupFieldPathsByDocument.d.ts.map +1 -0
- package/dist/services/fieldLabels/utils/groupFieldPathsByDocument.js +21 -0
- package/dist/services/fieldLabels/utils/groupFieldPathsByDocument.js.map +1 -0
- package/dist/services/fieldLabels/utils/resolveFieldPath.d.ts +4 -0
- package/dist/services/fieldLabels/utils/resolveFieldPath.d.ts.map +1 -0
- package/dist/services/fieldLabels/utils/resolveFieldPath.js +66 -0
- package/dist/services/fieldLabels/utils/resolveFieldPath.js.map +1 -0
- package/dist/services/fieldLabels/utils/schemaUtils.d.ts +6 -0
- package/dist/services/fieldLabels/utils/schemaUtils.d.ts.map +1 -0
- package/dist/services/fieldLabels/utils/schemaUtils.js +60 -0
- package/dist/services/fieldLabels/utils/schemaUtils.js.map +1 -0
- package/dist/services/findAllComments.d.ts +11 -0
- package/dist/services/findAllComments.d.ts.map +1 -0
- package/dist/services/findAllComments.js +47 -0
- package/dist/services/findAllComments.js.map +1 -0
- package/dist/services/getCurrentTenantId.d.ts +3 -0
- package/dist/services/getCurrentTenantId.d.ts.map +1 -0
- package/dist/services/getCurrentTenantId.js +13 -0
- package/dist/services/getCurrentTenantId.js.map +1 -0
- package/dist/services/getDocumentTitles.d.ts +3 -0
- package/dist/services/getDocumentTitles.d.ts.map +1 -0
- package/dist/services/getDocumentTitles.js +61 -0
- package/dist/services/getDocumentTitles.js.map +1 -0
- package/dist/services/getEntitiesLabels.d.ts +3 -0
- package/dist/services/getEntitiesLabels.d.ts.map +1 -0
- package/dist/services/getEntitiesLabels.js +14 -0
- package/dist/services/getEntitiesLabels.js.map +1 -0
- package/dist/services/resolveComment.d.ts +3 -0
- package/dist/services/resolveComment.d.ts.map +1 -0
- package/dist/services/resolveComment.js +41 -0
- package/dist/services/resolveComment.js.map +1 -0
- package/dist/services/sendMentionEmails.d.ts +11 -0
- package/dist/services/sendMentionEmails.d.ts.map +1 -0
- package/dist/services/sendMentionEmails.js +73 -0
- package/dist/services/sendMentionEmails.js.map +1 -0
- package/dist/services/syncAllCommentsData.d.ts +12 -0
- package/dist/services/syncAllCommentsData.d.ts.map +1 -0
- package/dist/services/syncAllCommentsData.js +48 -0
- package/dist/services/syncAllCommentsData.js.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/translations/en.d.ts +5 -0
- package/dist/translations/en.d.ts.map +1 -0
- package/dist/translations/en.js +36 -0
- package/dist/translations/en.js.map +1 -0
- package/dist/translations/types.d.ts +32 -0
- package/dist/translations/types.d.ts.map +1 -0
- package/dist/translations/types.js +1 -0
- package/dist/translations/types.js.map +1 -0
- package/dist/types/base.d.ts +10 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/base.js +1 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/collection.d.ts +2 -0
- package/dist/types/collection.d.ts.map +1 -0
- package/dist/types/collection.js +1 -0
- package/dist/types/collection.js.map +1 -0
- package/dist/types/comment.d.ts +23 -0
- package/dist/types/comment.d.ts.map +1 -0
- package/dist/types/comment.js +1 -0
- package/dist/types/comment.js.map +1 -0
- package/dist/types/config.d.ts +112 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/entity.d.ts +15 -0
- package/dist/types/entity.d.ts.map +1 -0
- package/dist/types/entity.js +1 -0
- package/dist/types/entity.js.map +1 -0
- package/dist/types/general.d.ts +10 -0
- package/dist/types/general.d.ts.map +1 -0
- package/dist/types/general.js +1 -0
- package/dist/types/general.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/user.d.ts +6 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +1 -0
- package/dist/types/user.js.map +1 -0
- package/dist/utils/comment/extractVisibleComments.d.ts +13 -0
- package/dist/utils/comment/extractVisibleComments.d.ts.map +1 -0
- package/dist/utils/comment/extractVisibleComments.js +17 -0
- package/dist/utils/comment/extractVisibleComments.js.map +1 -0
- package/dist/utils/comment/filterCommentsByLocale.d.ts +3 -0
- package/dist/utils/comment/filterCommentsByLocale.d.ts.map +1 -0
- package/dist/utils/comment/filterCommentsByLocale.js +12 -0
- package/dist/utils/comment/filterCommentsByLocale.js.map +1 -0
- package/dist/utils/comment/renderCommentText.d.ts +12 -0
- package/dist/utils/comment/renderCommentText.d.ts.map +1 -0
- package/dist/utils/comment/renderCommentText.js +38 -0
- package/dist/utils/comment/renderCommentText.js.map +1 -0
- package/dist/utils/comment/serializeEditor.d.ts +2 -0
- package/dist/utils/comment/serializeEditor.d.ts.map +1 -0
- package/dist/utils/comment/serializeEditor.js +30 -0
- package/dist/utils/comment/serializeEditor.js.map +1 -0
- package/dist/utils/config/injectFieldCommentComponents.d.ts +4 -0
- package/dist/utils/config/injectFieldCommentComponents.d.ts.map +1 -0
- package/dist/utils/config/injectFieldCommentComponents.js +80 -0
- package/dist/utils/config/injectFieldCommentComponents.js.map +1 -0
- package/dist/utils/config/mergeTranslations.d.ts +3 -0
- package/dist/utils/config/mergeTranslations.d.ts.map +1 -0
- package/dist/utils/config/mergeTranslations.js +29 -0
- package/dist/utils/config/mergeTranslations.js.map +1 -0
- package/dist/utils/config/normalizeCollections.d.ts +7 -0
- package/dist/utils/config/normalizeCollections.d.ts.map +1 -0
- package/dist/utils/config/normalizeCollections.js +15 -0
- package/dist/utils/config/normalizeCollections.js.map +1 -0
- package/dist/utils/config/overrideCollections.d.ts +3 -0
- package/dist/utils/config/overrideCollections.d.ts.map +1 -0
- package/dist/utils/config/overrideCollections.js +38 -0
- package/dist/utils/config/overrideCollections.js.map +1 -0
- package/dist/utils/config/overrideCommentsCollection.d.ts +4 -0
- package/dist/utils/config/overrideCommentsCollection.d.ts.map +1 -0
- package/dist/utils/config/overrideCommentsCollection.js +14 -0
- package/dist/utils/config/overrideCommentsCollection.js.map +1 -0
- package/dist/utils/config/overrideGlobals.d.ts +3 -0
- package/dist/utils/config/overrideGlobals.d.ts.map +1 -0
- package/dist/utils/config/overrideGlobals.js +8 -0
- package/dist/utils/config/overrideGlobals.js.map +1 -0
- package/dist/utils/error/getDefaultErrorMessage.d.ts +2 -0
- package/dist/utils/error/getDefaultErrorMessage.d.ts.map +1 -0
- package/dist/utils/error/getDefaultErrorMessage.js +9 -0
- package/dist/utils/error/getDefaultErrorMessage.js.map +1 -0
- package/dist/utils/general/cn.d.ts +3 -0
- package/dist/utils/general/cn.d.ts.map +1 -0
- package/dist/utils/general/cn.js +9 -0
- package/dist/utils/general/cn.js.map +1 -0
- package/dist/utils/general/formatRelativeDate.d.ts +2 -0
- package/dist/utils/general/formatRelativeDate.d.ts.map +1 -0
- package/dist/utils/general/formatRelativeDate.js +28 -0
- package/dist/utils/general/formatRelativeDate.js.map +1 -0
- package/dist/utils/general/getURL.d.ts +2 -0
- package/dist/utils/general/getURL.d.ts.map +1 -0
- package/dist/utils/general/getURL.js +13 -0
- package/dist/utils/general/getURL.js.map +1 -0
- package/dist/utils/general/getValueByPath.d.ts +4 -0
- package/dist/utils/general/getValueByPath.d.ts.map +1 -0
- package/dist/utils/general/getValueByPath.js +19 -0
- package/dist/utils/general/getValueByPath.js.map +1 -0
- package/dist/utils/mention/isSelfMention.d.ts +4 -0
- package/dist/utils/mention/isSelfMention.d.ts.map +1 -0
- package/dist/utils/mention/isSelfMention.js +7 -0
- package/dist/utils/mention/isSelfMention.js.map +1 -0
- package/dist/utils/mention/parseMentionIds.d.ts +2 -0
- package/dist/utils/mention/parseMentionIds.d.ts.map +1 -0
- package/dist/utils/mention/parseMentionIds.js +13 -0
- package/dist/utils/mention/parseMentionIds.js.map +1 -0
- package/dist/utils/mode/defineModeByPathname.d.ts +11 -0
- package/dist/utils/mode/defineModeByPathname.d.ts.map +1 -0
- package/dist/utils/mode/defineModeByPathname.js +39 -0
- package/dist/utils/mode/defineModeByPathname.js.map +1 -0
- package/dist/utils/path/detectPluginBasePath.d.ts +2 -0
- package/dist/utils/path/detectPluginBasePath.d.ts.map +1 -0
- package/dist/utils/path/detectPluginBasePath.js +8 -0
- package/dist/utils/path/detectPluginBasePath.js.map +1 -0
- package/dist/utils/path/getComponentPath.d.ts +15 -0
- package/dist/utils/path/getComponentPath.d.ts.map +1 -0
- package/dist/utils/path/getComponentPath.js +22 -0
- package/dist/utils/path/getComponentPath.js.map +1 -0
- package/dist/utils/payload/extractPayload.d.ts +3 -0
- package/dist/utils/payload/extractPayload.d.ts.map +1 -0
- package/dist/utils/payload/extractPayload.js +9 -0
- package/dist/utils/payload/extractPayload.js.map +1 -0
- package/dist/utils/user/resolveUsername.d.ts +4 -0
- package/dist/utils/user/resolveUsername.d.ts.map +1 -0
- package/dist/utils/user/resolveUsername.js +14 -0
- package/dist/utils/user/resolveUsername.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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":[]}
|
package/dist/config.d.ts
ADDED
|
@@ -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 @@
|
|
|
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":[]}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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":[]}
|
package/dist/plugin.d.ts
ADDED
|
@@ -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
|