@focus-reactive/payload-plugin-comments 1.1.0 → 1.2.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 +8 -6
- package/dist/api/mutations/useAddCommentMutation.d.ts +18 -0
- package/dist/api/mutations/useAddCommentMutation.d.ts.map +1 -0
- package/dist/api/mutations/useAddCommentMutation.js +52 -0
- package/dist/api/mutations/useAddCommentMutation.js.map +1 -0
- package/dist/api/mutations/useDeleteCommentMutation.d.ts +11 -0
- package/dist/api/mutations/useDeleteCommentMutation.d.ts.map +1 -0
- package/dist/api/mutations/useDeleteCommentMutation.js +31 -0
- package/dist/api/mutations/useDeleteCommentMutation.js.map +1 -0
- package/dist/api/mutations/useResolveCommentMutation.d.ts +13 -0
- package/dist/api/mutations/useResolveCommentMutation.d.ts.map +1 -0
- package/dist/api/mutations/useResolveCommentMutation.js +41 -0
- package/dist/api/mutations/useResolveCommentMutation.js.map +1 -0
- package/dist/api/queries/useCommentsQuery.d.ts +3 -0
- package/dist/api/queries/useCommentsQuery.d.ts.map +1 -0
- package/dist/api/queries/useCommentsQuery.js +40 -0
- package/dist/api/queries/useCommentsQuery.js.map +1 -0
- package/dist/api/queries/useDocumentTitlesQuery.d.ts +3 -0
- package/dist/api/queries/useDocumentTitlesQuery.d.ts.map +1 -0
- package/dist/api/queries/useDocumentTitlesQuery.js +32 -0
- package/dist/api/queries/useDocumentTitlesQuery.js.map +1 -0
- package/dist/api/queries/useFieldLabelsQuery.d.ts +3 -0
- package/dist/api/queries/useFieldLabelsQuery.d.ts.map +1 -0
- package/dist/api/queries/useFieldLabelsQuery.js +23 -0
- package/dist/api/queries/useFieldLabelsQuery.js.map +1 -0
- package/dist/api/queries/useMentionableUsersQuery.d.ts +2 -0
- package/dist/api/queries/useMentionableUsersQuery.d.ts.map +1 -0
- package/dist/api/queries/useMentionableUsersQuery.js +25 -0
- package/dist/api/queries/useMentionableUsersQuery.js.map +1 -0
- package/dist/api/queryKeys.d.ts +23 -0
- package/dist/api/queryKeys.d.ts.map +1 -0
- package/dist/api/queryKeys.js +40 -0
- package/dist/api/queryKeys.js.map +1 -0
- package/dist/components/CommentEditor/ActionPanel.d.ts +1 -1
- package/dist/components/CommentEditor/ActionPanel.d.ts.map +1 -1
- package/dist/components/CommentEditor/ActionPanel.js +18 -3
- package/dist/components/CommentEditor/ActionPanel.js.map +1 -1
- package/dist/components/CommentEditor/index.d.ts.map +1 -1
- package/dist/components/CommentEditor/index.js +5 -3
- package/dist/components/CommentEditor/index.js.map +1 -1
- package/dist/components/CommentItem/StrikethoroughOverlay/clamp.d.ts +2 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/clamp.d.ts.map +1 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/clamp.js +7 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/clamp.js.map +1 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/index.d.ts +8 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/index.d.ts.map +1 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/index.js +24 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/index.js.map +1 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/measureLineRects.d.ts +3 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/measureLineRects.d.ts.map +1 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/measureLineRects.js +29 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/measureLineRects.js.map +1 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/useStrikethroughAnimation.d.ts +7 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/useStrikethroughAnimation.d.ts.map +1 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/useStrikethroughAnimation.js +114 -0
- package/dist/components/CommentItem/StrikethoroughOverlay/useStrikethroughAnimation.js.map +1 -0
- package/dist/components/CommentItem/index.d.ts.map +1 -1
- package/dist/components/CommentItem/index.js +37 -18
- package/dist/components/CommentItem/index.js.map +1 -1
- package/dist/components/CommentsDrawer/components/Header.d.ts.map +1 -1
- package/dist/components/CommentsDrawer/components/Header.js +4 -33
- package/dist/components/CommentsDrawer/components/Header.js.map +1 -1
- package/dist/components/CommentsHeaderButton/index.js +2 -2
- package/dist/components/CommentsHeaderButton/index.js.map +1 -1
- package/dist/components/CommentsPanel/components/CollapsibleGroup.d.ts +7 -2
- package/dist/components/CommentsPanel/components/CollapsibleGroup.d.ts.map +1 -1
- package/dist/components/CommentsPanel/components/CollapsibleGroup.js +7 -2
- package/dist/components/CommentsPanel/components/CollapsibleGroup.js.map +1 -1
- package/dist/components/CommentsPanel/components/DocumentView.d.ts.map +1 -1
- package/dist/components/CommentsPanel/components/DocumentView.js +11 -9
- package/dist/components/CommentsPanel/components/DocumentView.js.map +1 -1
- package/dist/components/CommentsPanel/components/FieldGroupSection.d.ts.map +1 -1
- package/dist/components/CommentsPanel/components/FieldGroupSection.js +44 -22
- package/dist/components/CommentsPanel/components/FieldGroupSection.js.map +1 -1
- package/dist/components/CommentsPanel/components/GlobalDocumentView.d.ts.map +1 -1
- package/dist/components/CommentsPanel/components/GlobalDocumentView.js +3 -9
- package/dist/components/CommentsPanel/components/GlobalDocumentView.js.map +1 -1
- package/dist/components/CommentsPanel/components/GlobalView.d.ts.map +1 -1
- package/dist/components/CommentsPanel/components/GlobalView.js +38 -41
- package/dist/components/CommentsPanel/components/GlobalView.js.map +1 -1
- package/dist/components/CommentsPanel/hooks/useCollapseState.d.ts +1 -1
- package/dist/components/CommentsPanel/hooks/useCollapseState.d.ts.map +1 -1
- package/dist/components/CommentsPanel/hooks/useCollapseState.js +4 -1
- package/dist/components/CommentsPanel/hooks/useCollapseState.js.map +1 -1
- package/dist/components/CommentsPanel/index.d.ts.map +1 -1
- package/dist/components/CommentsPanel/index.js +14 -11
- package/dist/components/CommentsPanel/index.js.map +1 -1
- package/dist/components/FieldCommentLabel/hooks/useFieldBreadcrumb.d.ts +2 -0
- package/dist/components/FieldCommentLabel/hooks/useFieldBreadcrumb.d.ts.map +1 -0
- package/dist/components/FieldCommentLabel/hooks/useFieldBreadcrumb.js +52 -0
- package/dist/components/FieldCommentLabel/hooks/useFieldBreadcrumb.js.map +1 -0
- package/dist/components/FieldCommentLabel/index.d.ts +1 -1
- package/dist/components/FieldCommentLabel/index.d.ts.map +1 -1
- package/dist/components/FieldCommentLabel/index.js +54 -41
- package/dist/components/FieldCommentLabel/index.js.map +1 -1
- package/dist/components/FieldCommentLabel/types.d.ts +1 -1
- package/dist/components/FieldCommentLabel/types.d.ts.map +1 -1
- package/dist/components/FieldCommentLabel/utils/exludeComments.js +2 -2
- package/dist/components/FieldCommentLabel/utils/exludeComments.js.map +1 -1
- package/dist/components/IconButton/index.d.ts +2 -2
- package/dist/components/IconButton/index.d.ts.map +1 -1
- package/dist/components/IconButton/index.js +11 -1
- package/dist/components/IconButton/index.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -4
- package/dist/constants.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +6 -2
- package/dist/plugin.js.map +1 -1
- package/dist/providers/CommentsDrawerProvider/index.d.ts +8 -0
- package/dist/providers/CommentsDrawerProvider/index.d.ts.map +1 -1
- package/dist/providers/CommentsDrawerProvider/index.js +22 -6
- package/dist/providers/CommentsDrawerProvider/index.js.map +1 -1
- package/dist/providers/CommentsProvider/index.d.ts +7 -17
- package/dist/providers/CommentsProvider/index.d.ts.map +1 -1
- package/dist/providers/CommentsProvider/index.js +105 -196
- package/dist/providers/CommentsProvider/index.js.map +1 -1
- package/dist/providers/CommentsProviderWrapper/index.d.ts +1 -1
- package/dist/providers/CommentsProviderWrapper/index.d.ts.map +1 -1
- package/dist/providers/CommentsProviderWrapper/index.js +11 -1
- package/dist/providers/CommentsProviderWrapper/index.js.map +1 -1
- package/dist/services/findAllComments.d.ts +4 -1
- package/dist/services/findAllComments.d.ts.map +1 -1
- package/dist/services/findAllComments.js +36 -10
- package/dist/services/findAllComments.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/translations/en.d.ts.map +1 -1
- package/dist/translations/en.js +3 -7
- package/dist/translations/en.js.map +1 -1
- package/dist/translations/types.d.ts +2 -6
- package/dist/translations/types.d.ts.map +1 -1
- package/dist/types/general.d.ts +0 -2
- package/dist/types/general.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/query.d.ts +11 -0
- package/dist/types/query.d.ts.map +1 -0
- package/dist/types/query.js +1 -0
- package/dist/types/query.js.map +1 -0
- package/dist/utils/query/toQueryContext.d.ts +3 -0
- package/dist/utils/query/toQueryContext.d.ts.map +1 -0
- package/dist/utils/query/toQueryContext.js +20 -0
- package/dist/utils/query/toQueryContext.js.map +1 -0
- package/package.json +3 -6
- package/dist/components/CommentsPanel/constants.d.ts +0 -3
- package/dist/components/CommentsPanel/constants.d.ts.map +0 -1
- package/dist/components/CommentsPanel/constants.js +0 -9
- package/dist/components/CommentsPanel/constants.js.map +0 -1
- package/dist/components/CommentsPanel/utils/filterComments.d.ts +0 -9
- package/dist/components/CommentsPanel/utils/filterComments.d.ts.map +0 -1
- package/dist/components/CommentsPanel/utils/filterComments.js +0 -17
- package/dist/components/CommentsPanel/utils/filterComments.js.map +0 -1
- package/dist/components/FieldCommentLabel/AddCommentPopup.d.ts +0 -8
- package/dist/components/FieldCommentLabel/AddCommentPopup.d.ts.map +0 -1
- package/dist/components/FieldCommentLabel/AddCommentPopup.js +0 -50
- package/dist/components/FieldCommentLabel/AddCommentPopup.js.map +0 -1
- package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.d.ts +0 -13
- package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.d.ts.map +0 -1
- package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.js +0 -22
- package/dist/providers/GlobalCommentsLoader/GlobalCommentsHydrator.js.map +0 -1
- package/dist/providers/GlobalCommentsLoader/index.d.ts +0 -10
- package/dist/providers/GlobalCommentsLoader/index.d.ts.map +0 -1
- package/dist/providers/GlobalCommentsLoader/index.js +0 -31
- package/dist/providers/GlobalCommentsLoader/index.js.map +0 -1
- package/dist/services/syncAllCommentsData.d.ts +0 -12
- package/dist/services/syncAllCommentsData.d.ts.map +0 -1
- package/dist/services/syncAllCommentsData.js +0 -48
- package/dist/services/syncAllCommentsData.js.map +0 -1
|
@@ -1,62 +1,75 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from "react";
|
|
4
3
|
import { useTranslation, useLocale } from "@payloadcms/ui";
|
|
5
|
-
import { MessageSquareIcon } from "lucide-react";
|
|
4
|
+
import { MessageSquareIcon, MessageSquarePlus } from "lucide-react";
|
|
6
5
|
import { useComments } from "../../providers/CommentsProvider";
|
|
7
6
|
import { resolveLabel } from "./utils/resolveLabel";
|
|
8
7
|
import { excludeComments } from "./utils/exludeComments";
|
|
9
8
|
import { useStablePath } from "./hooks/useStablePath";
|
|
9
|
+
import { useFieldBreadcrumb } from "./hooks/useFieldBreadcrumb";
|
|
10
10
|
import { useCommentsDrawer } from "../../providers/CommentsDrawerProvider";
|
|
11
11
|
import { IconButton } from "../IconButton";
|
|
12
|
-
import {
|
|
12
|
+
import { resolveFieldLabel } from "../CommentsPanel/utils/resolveFieldLabel";
|
|
13
|
+
import { useCommentsQuery } from "../../api/queries/useCommentsQuery";
|
|
14
|
+
import { useFieldLabelsQuery } from "../../api/queries/useFieldLabelsQuery";
|
|
15
|
+
import { filterCommentsByLocale } from "../../utils/comment/filterCommentsByLocale";
|
|
13
16
|
function FieldCommentLabel({ field, htmlFor, path: fieldPath }) {
|
|
14
17
|
const { label, required } = field;
|
|
15
18
|
const { t } = useTranslation();
|
|
16
19
|
const { code: locale } = useLocale();
|
|
17
|
-
const {
|
|
18
|
-
const {
|
|
19
|
-
const [
|
|
20
|
-
const
|
|
20
|
+
const { openForField } = useCommentsDrawer();
|
|
21
|
+
const { mode, queryContext, collectionSlug, documentId, globalSlug } = useComments();
|
|
22
|
+
const { data: allComments = [] } = useCommentsQuery(queryContext);
|
|
23
|
+
const { data: fieldLabelRegistry } = useFieldLabelsQuery(queryContext);
|
|
21
24
|
const resolvedLabel = resolveLabel(label, locale);
|
|
22
25
|
const stablePath = useStablePath(fieldPath ?? "");
|
|
23
|
-
const
|
|
26
|
+
const localeFiltered = filterCommentsByLocale(allComments, locale);
|
|
27
|
+
const fieldComments = excludeComments(localeFiltered, stablePath || void 0, locale);
|
|
24
28
|
const openCommentsCount = fieldComments.length;
|
|
29
|
+
const clientBreadcrumb = useFieldBreadcrumb(fieldPath, resolvedLabel, collectionSlug, globalSlug);
|
|
25
30
|
const handleOpenDrawer = () => {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
if (!stablePath) return;
|
|
32
|
+
const serverLabel = resolveFieldLabel({
|
|
33
|
+
registry: fieldLabelRegistry ?? {},
|
|
34
|
+
collectionSlug: collectionSlug ?? void 0,
|
|
35
|
+
documentId: documentId ?? void 0,
|
|
36
|
+
globalSlug: globalSlug ?? void 0,
|
|
37
|
+
fieldPath: stablePath
|
|
38
|
+
});
|
|
39
|
+
openForField(stablePath, serverLabel !== stablePath ? serverLabel : clientBreadcrumb);
|
|
29
40
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
41
|
+
if (!resolvedLabel) return null;
|
|
42
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 pb-1.25 group", children: [
|
|
43
|
+
/* @__PURE__ */ jsxs("label", { className: "field-label p-0", htmlFor, children: [
|
|
44
|
+
resolvedLabel,
|
|
45
|
+
required && /* @__PURE__ */ jsx("span", { className: "required", children: "*" })
|
|
46
|
+
] }),
|
|
47
|
+
fieldPath && (mode === "document" || mode === "global-document") && /* @__PURE__ */ jsxs("div", { className: "relative flex items-center", children: [
|
|
48
|
+
!!openCommentsCount && /* @__PURE__ */ jsxs(
|
|
49
|
+
IconButton,
|
|
50
|
+
{
|
|
51
|
+
className: "w-auto px-1 gap-1 text-[12px] font-semibold leading-none",
|
|
52
|
+
size: "sm",
|
|
53
|
+
title: t("comments:openComments", { count: openCommentsCount }),
|
|
54
|
+
onClick: handleOpenDrawer,
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ jsx(MessageSquareIcon, { size: 14 }),
|
|
57
|
+
openCommentsCount
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
),
|
|
61
|
+
!openCommentsCount && /* @__PURE__ */ jsx(
|
|
62
|
+
IconButton,
|
|
63
|
+
{
|
|
64
|
+
className: "opacity-0 group-hover:opacity-100 [@media(hover:none)]:opacity-100 transition-opacity",
|
|
65
|
+
size: "sm",
|
|
66
|
+
title: t("comments:add"),
|
|
67
|
+
onClick: handleOpenDrawer,
|
|
68
|
+
children: /* @__PURE__ */ jsx(MessageSquarePlus, { size: 14 })
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
] })
|
|
72
|
+
] });
|
|
60
73
|
}
|
|
61
74
|
export {
|
|
62
75
|
FieldCommentLabel
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/FieldCommentLabel/index.tsx"],"sourcesContent":["\"use client\";\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/FieldCommentLabel/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTranslation, useLocale } from \"@payloadcms/ui\";\nimport { MessageSquareIcon, MessageSquarePlus } 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 { useFieldBreadcrumb } from \"./hooks/useFieldBreadcrumb\";\nimport { useCommentsDrawer } from \"../../providers/CommentsDrawerProvider\";\nimport { IconButton } from \"../IconButton\";\nimport { resolveFieldLabel } from \"../CommentsPanel/utils/resolveFieldLabel\";\nimport { useCommentsQuery } from \"../../api/queries/useCommentsQuery\";\nimport { useFieldLabelsQuery } from \"../../api/queries/useFieldLabelsQuery\";\nimport { filterCommentsByLocale } from \"../../utils/comment/filterCommentsByLocale\";\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\n const { openForField } = useCommentsDrawer();\n const { mode, queryContext, collectionSlug, documentId, globalSlug } = useComments();\n const { data: allComments = [] } = useCommentsQuery(queryContext);\n const { data: fieldLabelRegistry } = useFieldLabelsQuery(queryContext);\n\n const resolvedLabel = resolveLabel(label, locale);\n const stablePath = useStablePath(fieldPath ?? \"\");\n\n const localeFiltered = filterCommentsByLocale(allComments, locale);\n const fieldComments = excludeComments(localeFiltered, stablePath || undefined, locale);\n const openCommentsCount = fieldComments.length;\n\n const clientBreadcrumb = useFieldBreadcrumb(fieldPath, resolvedLabel, collectionSlug, globalSlug);\n\n const handleOpenDrawer = () => {\n if (!stablePath) return;\n\n const serverLabel = resolveFieldLabel({\n registry: fieldLabelRegistry ?? {},\n collectionSlug: collectionSlug ?? undefined,\n documentId: documentId ?? undefined,\n globalSlug: globalSlug ?? undefined,\n fieldPath: stablePath,\n });\n\n openForField(stablePath, serverLabel !== stablePath ? serverLabel : clientBreadcrumb);\n };\n\n if (!resolvedLabel) return null;\n\n return (\n <div className=\"flex items-center gap-1.5 pb-1.25 group\">\n <label className=\"field-label p-0\" htmlFor={htmlFor}>\n {resolvedLabel}\n\n {required && <span className=\"required\">*</span>}\n </label>\n\n {fieldPath && (mode === \"document\" || mode === \"global-document\") && (\n <div className=\"relative flex items-center\">\n {!!openCommentsCount && (\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 )}\n {!openCommentsCount && (\n <IconButton\n className={\"opacity-0 group-hover:opacity-100 [@media(hover:none)]:opacity-100 transition-opacity\"}\n size=\"sm\"\n title={t(\"comments:add\" as never)}\n onClick={handleOpenDrawer}>\n <MessageSquarePlus size={14} />\n </IconButton>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";AA+DM,SAGe,KAHf;AA7DN,SAAS,gBAAgB,iBAAiB;AAC1C,SAAS,mBAAmB,yBAAyB;AACrD,SAAS,mBAAmB;AAG5B,SAAS,oBAAoB;AAC7B,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAClC,SAAS,kBAAkB;AAC3B,SAAS,yBAAyB;AAClC,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;AACpC,SAAS,8BAA8B;AAShC,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;AAEnC,QAAM,EAAE,aAAa,IAAI,kBAAkB;AAC3C,QAAM,EAAE,MAAM,cAAc,gBAAgB,YAAY,WAAW,IAAI,YAAY;AACnF,QAAM,EAAE,MAAM,cAAc,CAAC,EAAE,IAAI,iBAAiB,YAAY;AAChE,QAAM,EAAE,MAAM,mBAAmB,IAAI,oBAAoB,YAAY;AAErE,QAAM,gBAAgB,aAAa,OAAO,MAAM;AAChD,QAAM,aAAa,cAAc,aAAa,EAAE;AAEhD,QAAM,iBAAiB,uBAAuB,aAAa,MAAM;AACjE,QAAM,gBAAgB,gBAAgB,gBAAgB,cAAc,QAAW,MAAM;AACrF,QAAM,oBAAoB,cAAc;AAExC,QAAM,mBAAmB,mBAAmB,WAAW,eAAe,gBAAgB,UAAU;AAEhG,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,WAAY;AAEjB,UAAM,cAAc,kBAAkB;AAAA,MACpC,UAAU,sBAAsB,CAAC;AAAA,MACjC,gBAAgB,kBAAkB;AAAA,MAClC,YAAY,cAAc;AAAA,MAC1B,YAAY,cAAc;AAAA,MAC1B,WAAW;AAAA,IACb,CAAC;AAED,iBAAa,YAAY,gBAAgB,aAAa,cAAc,gBAAgB;AAAA,EACtF;AAEA,MAAI,CAAC,cAAe,QAAO;AAE3B,SACE,qBAAC,SAAI,WAAU,2CACb;AAAA,yBAAC,WAAM,WAAU,mBAAkB,SAChC;AAAA;AAAA,MAEA,YAAY,oBAAC,UAAK,WAAU,YAAW,eAAC;AAAA,OAC3C;AAAA,IAEC,cAAc,SAAS,cAAc,SAAS,sBAC7C,qBAAC,SAAI,WAAU,8BACZ;AAAA,OAAC,CAAC,qBACD;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,MAAK;AAAA,UACL,OAAO,EAAE,yBAAkC,EAAE,OAAO,kBAAkB,CAAC;AAAA,UACvE,SAAS;AAAA,UACT;AAAA,gCAAC,qBAAkB,MAAM,IAAI;AAAA,YAE5B;AAAA;AAAA;AAAA,MACH;AAAA,MAED,CAAC,qBACA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,UACX,MAAK;AAAA,UACL,OAAO,EAAE,cAAuB;AAAA,UAChC,SAAS;AAAA,UACT,8BAAC,qBAAkB,MAAM,IAAI;AAAA;AAAA,MAC/B;AAAA,OAEJ;AAAA,KAEJ;AAEJ;","names":[]}
|
|
@@ -1 +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"}
|
|
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,GAAG,KAAK,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function excludeComments(comments, path, currentLocale) {
|
|
2
2
|
if (!path) return [];
|
|
3
|
-
return (comments ?? []).filter(({ fieldPath,
|
|
4
|
-
if (fieldPath !== path
|
|
3
|
+
return (comments ?? []).filter(({ fieldPath, locale }) => {
|
|
4
|
+
if (fieldPath !== path) return false;
|
|
5
5
|
if (locale && currentLocale && locale !== currentLocale) return false;
|
|
6
6
|
return true;
|
|
7
7
|
});
|
|
@@ -1 +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,
|
|
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, locale }) => {\n if (fieldPath !== path) 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,OAAO,MAAM;AACxD,QAAI,cAAc,KAAM,QAAO;AAE/B,QAAI,UAAU,iBAAiB,WAAW,cAAe,QAAO;AAEhE,WAAO;AAAA,EACT,CAAC;AACH;","names":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface Props {
|
|
1
|
+
interface Props extends React.HTMLAttributes<HTMLButtonElement> {
|
|
2
2
|
className?: string;
|
|
3
3
|
title?: string;
|
|
4
4
|
children: React.ReactNode;
|
|
@@ -7,6 +7,6 @@ interface Props {
|
|
|
7
7
|
onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
|
|
8
8
|
tabIndex?: number;
|
|
9
9
|
}
|
|
10
|
-
export declare function IconButton({ className, title, children, variant, size, onClick, tabIndex }: Props): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare function IconButton({ className, title, children, variant, size, onClick, tabIndex, ...nativeButtonProps }: Props): import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
export {};
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/IconButton/index.tsx"],"names":[],"mappings":"AAsBA,UAAU,KAAK;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/IconButton/index.tsx"],"names":[],"mappings":"AAsBA,UAAU,KAAM,SAAQ,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC;IAC7D,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,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,GAAG,iBAAiB,EACrB,EAAE,KAAK,2CAaP"}
|
|
@@ -18,7 +18,16 @@ const variants = cva("flex justify-center items-center p-0 rounded border-none t
|
|
|
18
18
|
size: "md"
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
|
-
function IconButton({
|
|
21
|
+
function IconButton({
|
|
22
|
+
className,
|
|
23
|
+
title,
|
|
24
|
+
children,
|
|
25
|
+
variant,
|
|
26
|
+
size,
|
|
27
|
+
onClick,
|
|
28
|
+
tabIndex,
|
|
29
|
+
...nativeButtonProps
|
|
30
|
+
}) {
|
|
22
31
|
return /* @__PURE__ */ jsx(
|
|
23
32
|
"button",
|
|
24
33
|
{
|
|
@@ -28,6 +37,7 @@ function IconButton({ className, title, children, variant, size, onClick, tabInd
|
|
|
28
37
|
"aria-label": title,
|
|
29
38
|
onClick,
|
|
30
39
|
tabIndex,
|
|
40
|
+
...nativeButtonProps,
|
|
31
41
|
children
|
|
32
42
|
}
|
|
33
43
|
);
|
|
@@ -1 +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({
|
|
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 extends React.HTMLAttributes<HTMLButtonElement> {\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({\n className,\n title,\n children,\n variant,\n size,\n onClick,\n tabIndex,\n ...nativeButtonProps\n}: 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 {...nativeButtonProps}>\n {children}\n </button>\n );\n}\n"],"mappings":"AA2CI;AA3CJ,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;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAU;AACR,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,GAAG;AAAA,MACH;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
package/dist/constants.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export declare const USERNAME_DEFAULT_FIELD_PATH = "name";
|
|
|
6
6
|
export declare const FALLBACK_USERNAME = "Unknown user";
|
|
7
7
|
export declare const FALLBACK_DELETED_USERNAME = "Deleted user";
|
|
8
8
|
export declare const EXCLUDED_ADMIN_ROUTES: string[];
|
|
9
|
+
export declare const REFETCH_INTERVAL = 15000;
|
|
9
10
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
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,UAAiD,CAAC;AAEpF,eAAO,MAAM,gBAAgB,QAAQ,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -5,10 +5,8 @@ const PACKAGE_NAME = "@focus-reactive/payload-plugin-comments";
|
|
|
5
5
|
const USERNAME_DEFAULT_FIELD_PATH = "name";
|
|
6
6
|
const FALLBACK_USERNAME = "Unknown user";
|
|
7
7
|
const FALLBACK_DELETED_USERNAME = "Deleted user";
|
|
8
|
-
const EXCLUDED_ADMIN_ROUTES = [
|
|
9
|
-
|
|
10
|
-
"/admin/create-first-user"
|
|
11
|
-
];
|
|
8
|
+
const EXCLUDED_ADMIN_ROUTES = ["/admin/account", "/admin/create-first-user"];
|
|
9
|
+
const REFETCH_INTERVAL = 15e3;
|
|
12
10
|
export {
|
|
13
11
|
COMMENTS_DRAWER_BASE_SLUG,
|
|
14
12
|
DEFAULT_COLLECTION_SLUG,
|
|
@@ -17,6 +15,7 @@ export {
|
|
|
17
15
|
FALLBACK_USERNAME,
|
|
18
16
|
PACKAGE_NAME,
|
|
19
17
|
PLUGIN_NAME,
|
|
18
|
+
REFETCH_INTERVAL,
|
|
20
19
|
USERNAME_DEFAULT_FIELD_PATH
|
|
21
20
|
};
|
|
22
21
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +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 = [\
|
|
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 = [\"/admin/account\", \"/admin/create-first-user\"];\n\nexport const REFETCH_INTERVAL = 15000;\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,CAAC,kBAAkB,0BAA0B;AAE3E,MAAM,mBAAmB;","names":[]}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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;AASpD,eAAO,MAAM,cAAc,YAChB,oBAAoB,KAAQ,MA+DpC,CAAC"}
|
package/dist/plugin.js
CHANGED
|
@@ -5,6 +5,7 @@ import { normalizeCollections } from "./utils/config/normalizeCollections";
|
|
|
5
5
|
import { mergeTranslations } from "./utils/config/mergeTranslations";
|
|
6
6
|
import { overrideCollections } from "./utils/config/overrideCollections";
|
|
7
7
|
import { overrideGlobals } from "./utils/config/overrideGlobals";
|
|
8
|
+
import { setPayloadConfig } from "./config";
|
|
8
9
|
const commentsPlugin = (config = {}) => (incomingConfig) => {
|
|
9
10
|
const { enabled = true, collections: collectionEntries, overrides, usernameFieldPath } = config;
|
|
10
11
|
if (!enabled) {
|
|
@@ -31,8 +32,7 @@ const commentsPlugin = (config = {}) => (incomingConfig) => {
|
|
|
31
32
|
...incomingConfig.admin?.components,
|
|
32
33
|
providers: [
|
|
33
34
|
...incomingConfig.admin?.components?.providers ?? [],
|
|
34
|
-
getComponentPath("providers/CommentsProviderWrapper", "CommentsProviderWrapper")
|
|
35
|
-
getComponentPath("providers/GlobalCommentsLoader", "GlobalCommentsLoader")
|
|
35
|
+
getComponentPath("providers/CommentsProviderWrapper", "CommentsProviderWrapper")
|
|
36
36
|
],
|
|
37
37
|
actions: [
|
|
38
38
|
...incomingConfig.admin?.components?.actions ?? [],
|
|
@@ -50,6 +50,10 @@ const commentsPlugin = (config = {}) => (incomingConfig) => {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
|
+
onInit: async (payload) => {
|
|
54
|
+
setPayloadConfig(payload.config);
|
|
55
|
+
await incomingConfig.onInit?.(payload);
|
|
56
|
+
},
|
|
53
57
|
collections: [...overrideCollections(incomingConfig.collections), finalCollection],
|
|
54
58
|
globals: overrideGlobals(incomingConfig.globals)
|
|
55
59
|
};
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +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
|
|
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\";\nimport { setPayloadConfig } from \"./config\";\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 ],\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 onInit: async (payload) => {\n setPayloadConfig(payload.config);\n\n await incomingConfig.onInit?.(payload);\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;AAChC,SAAS,wBAAwB;AAE1B,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,QACjF;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,QAAQ,OAAO,YAAY;AACzB,uBAAiB,QAAQ,MAAM;AAE/B,YAAM,eAAe,SAAS,OAAO;AAAA,IACvC;AAAA,IACA,aAAa,CAAC,GAAG,oBAAoB,eAAe,WAAW,GAAG,eAAe;AAAA,IACjF,SAAS,gBAAgB,eAAe,OAAO;AAAA,EACjD;AACF;","names":[]}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
+
interface PendingField {
|
|
3
|
+
path: string;
|
|
4
|
+
label: string;
|
|
5
|
+
}
|
|
2
6
|
interface CommentsDrawerContextProps {
|
|
3
7
|
slug: string;
|
|
8
|
+
isOpen: boolean;
|
|
4
9
|
scrollTargetPath: string | null;
|
|
10
|
+
pendingField: PendingField | null;
|
|
5
11
|
open: () => void;
|
|
6
12
|
setScrollTargetPath: (path: string | null) => void;
|
|
13
|
+
openForField: (path: string, label: string) => void;
|
|
14
|
+
clearPendingField: () => void;
|
|
7
15
|
}
|
|
8
16
|
interface Props {
|
|
9
17
|
children: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/CommentsDrawerProvider/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/CommentsDrawerProvider/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,SAAS,EAAmC,MAAM,OAAO,CAAC;AAGvF,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,0BAA0B;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAID,UAAU,KAAK;IACb,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAiCzD;AAED,wBAAgB,iBAAiB,+BAMhC"}
|
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useDrawerSlug, useModal } from "@payloadcms/ui";
|
|
4
|
-
import { createContext, useContext, useState } from "react";
|
|
4
|
+
import { createContext, useContext, useEffect, useState } from "react";
|
|
5
5
|
import { COMMENTS_DRAWER_BASE_SLUG } from "../../constants";
|
|
6
|
-
import { useComments } from "../CommentsProvider";
|
|
7
6
|
const CommentsDrawerContext = createContext(null);
|
|
8
7
|
function CommentsDrawerProvider({ children }) {
|
|
9
8
|
const [scrollTargetPath, setScrollTargetPath] = useState(null);
|
|
9
|
+
const [pendingField, setPendingField] = useState(null);
|
|
10
10
|
const slug = useDrawerSlug(COMMENTS_DRAWER_BASE_SLUG);
|
|
11
|
-
const { openModal } = useModal();
|
|
12
|
-
const
|
|
11
|
+
const { openModal, modalState } = useModal();
|
|
12
|
+
const isOpen = modalState[slug]?.isOpen ?? false;
|
|
13
13
|
const open = () => {
|
|
14
14
|
openModal(slug);
|
|
15
|
-
void syncComments();
|
|
16
15
|
};
|
|
17
|
-
|
|
16
|
+
const openForField = (path, label) => {
|
|
17
|
+
setScrollTargetPath(path);
|
|
18
|
+
setPendingField({ path, label });
|
|
19
|
+
openModal(slug);
|
|
20
|
+
};
|
|
21
|
+
const clearPendingField = () => setPendingField(null);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (!isOpen) {
|
|
24
|
+
setPendingField(null);
|
|
25
|
+
}
|
|
26
|
+
}, [isOpen]);
|
|
27
|
+
return /* @__PURE__ */ jsx(
|
|
28
|
+
CommentsDrawerContext.Provider,
|
|
29
|
+
{
|
|
30
|
+
value: { slug, isOpen, scrollTargetPath, pendingField, open, setScrollTargetPath, openForField, clearPendingField },
|
|
31
|
+
children
|
|
32
|
+
}
|
|
33
|
+
);
|
|
18
34
|
}
|
|
19
35
|
function useCommentsDrawer() {
|
|
20
36
|
const context = useContext(CommentsDrawerContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/providers/CommentsDrawerProvider/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { useDrawerSlug, useModal } from \"@payloadcms/ui\";\nimport { createContext, type ReactNode, useContext, useState } from \"react\";\nimport { COMMENTS_DRAWER_BASE_SLUG } from \"../../constants\";\
|
|
1
|
+
{"version":3,"sources":["../../../src/providers/CommentsDrawerProvider/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { useDrawerSlug, useModal } from \"@payloadcms/ui\";\nimport { createContext, type ReactNode, useContext, useEffect, useState } from \"react\";\nimport { COMMENTS_DRAWER_BASE_SLUG } from \"../../constants\";\n\ninterface PendingField {\n path: string;\n label: string;\n}\n\ninterface CommentsDrawerContextProps {\n slug: string;\n isOpen: boolean;\n scrollTargetPath: string | null;\n pendingField: PendingField | null;\n open: () => void;\n setScrollTargetPath: (path: string | null) => void;\n openForField: (path: string, label: string) => void;\n clearPendingField: () => void;\n}\n\nconst CommentsDrawerContext = createContext<CommentsDrawerContextProps | null>(null);\n\ninterface Props {\n children: ReactNode;\n}\n\nexport function CommentsDrawerProvider({ children }: Props) {\n const [scrollTargetPath, setScrollTargetPath] = useState<string | null>(null);\n const [pendingField, setPendingField] = useState<PendingField | null>(null);\n\n const slug = useDrawerSlug(COMMENTS_DRAWER_BASE_SLUG);\n const { openModal, modalState } = useModal();\n\n const isOpen = modalState[slug]?.isOpen ?? false;\n\n const open = () => {\n openModal(slug);\n };\n\n const openForField = (path: string, label: string) => {\n setScrollTargetPath(path);\n setPendingField({ path, label });\n openModal(slug);\n };\n\n const clearPendingField = () => setPendingField(null);\n\n useEffect(() => {\n if (!isOpen) {\n setPendingField(null);\n }\n }, [isOpen]);\n\n return (\n <CommentsDrawerContext.Provider\n value={{ slug, isOpen, scrollTargetPath, pendingField, open, setScrollTargetPath, openForField, clearPendingField }}>\n {children}\n </CommentsDrawerContext.Provider>\n );\n}\n\nexport function useCommentsDrawer() {\n const context = useContext(CommentsDrawerContext);\n\n if (!context) throw new Error(\"useCommentsDrawer must be used within a CommentsProvider\");\n\n return context;\n}\n"],"mappings":";AAwDI;AAtDJ,SAAS,eAAe,gBAAgB;AACxC,SAAS,eAA+B,YAAY,WAAW,gBAAgB;AAC/E,SAAS,iCAAiC;AAkB1C,MAAM,wBAAwB,cAAiD,IAAI;AAM5E,SAAS,uBAAuB,EAAE,SAAS,GAAU;AAC1D,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAwB,IAAI;AAC5E,QAAM,CAAC,cAAc,eAAe,IAAI,SAA8B,IAAI;AAE1E,QAAM,OAAO,cAAc,yBAAyB;AACpD,QAAM,EAAE,WAAW,WAAW,IAAI,SAAS;AAE3C,QAAM,SAAS,WAAW,IAAI,GAAG,UAAU;AAE3C,QAAM,OAAO,MAAM;AACjB,cAAU,IAAI;AAAA,EAChB;AAEA,QAAM,eAAe,CAAC,MAAc,UAAkB;AACpD,wBAAoB,IAAI;AACxB,oBAAgB,EAAE,MAAM,MAAM,CAAC;AAC/B,cAAU,IAAI;AAAA,EAChB;AAEA,QAAM,oBAAoB,MAAM,gBAAgB,IAAI;AAEpD,YAAU,MAAM;AACd,QAAI,CAAC,QAAQ;AACX,sBAAgB,IAAI;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SACE;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC,OAAO,EAAE,MAAM,QAAQ,kBAAkB,cAAc,MAAM,qBAAqB,cAAc,kBAAkB;AAAA,MACjH;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,oBAAoB;AAClC,QAAM,UAAU,WAAW,qBAAqB;AAEhD,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,0DAA0D;AAExF,SAAO;AACT;","names":[]}
|
|
@@ -1,33 +1,23 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { EntityLabelsMap } from "../../types";
|
|
3
|
+
import type { QueryContext } from "../../types";
|
|
4
|
+
import type { Mode } from "../../types";
|
|
4
5
|
interface MutationResult {
|
|
5
6
|
success: boolean;
|
|
6
7
|
error?: string;
|
|
7
8
|
}
|
|
8
9
|
interface CommentsContextProps {
|
|
9
|
-
allComments: Comment[];
|
|
10
|
-
visibleComments: Comment[];
|
|
11
|
-
documentTitles: DocumentTitles;
|
|
12
|
-
collectionLabels: EntityLabelsMap;
|
|
13
|
-
globalLabels: EntityLabelsMap;
|
|
14
10
|
mode: Mode;
|
|
15
11
|
collectionSlug: string | null | undefined;
|
|
16
12
|
documentId: number | null | undefined;
|
|
17
13
|
globalSlug: string | null;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
fieldLabelRegistry: GlobalFieldLabelRegistry;
|
|
22
|
-
syncCommentsStatus: LoadingStatus;
|
|
14
|
+
queryContext: QueryContext;
|
|
15
|
+
collectionLabels: EntityLabelsMap;
|
|
16
|
+
globalLabels: EntityLabelsMap;
|
|
23
17
|
usernameFieldPath: string | undefined;
|
|
24
|
-
setFilter: Dispatch<SetStateAction<FilterMode>>;
|
|
25
|
-
hydrateComments: (incoming?: Comment[], incomingTitles?: DocumentTitles, incomingMentionUsers?: User[], fieldLabels?: GlobalFieldLabelRegistry, incomingCollectionLabels?: EntityLabelsMap, nextLoadError?: boolean, incomingGlobalLabels?: EntityLabelsMap) => void;
|
|
26
|
-
syncComments: () => Promise<void>;
|
|
27
18
|
addComment: (text: string, fieldPath?: string | null, documentId?: number, collectionSlug?: string, locale?: string | null, globalSlugOverride?: string) => Promise<MutationResult>;
|
|
28
19
|
removeComment: (id: string | number) => Promise<MutationResult>;
|
|
29
20
|
resolveComment: (id: string | number, resolved: boolean) => Promise<MutationResult>;
|
|
30
|
-
updateDocumentTitle: (collectionSlug: string, documentId: string, value: string) => void;
|
|
31
21
|
}
|
|
32
22
|
interface Props {
|
|
33
23
|
children: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/CommentsProvider/index.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/CommentsProvider/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,SAAS,EAA2B,MAAM,OAAO,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAwC,MAAM,aAAa,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAUhD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,eAAe,CAAC;IAClC,YAAY,EAAE,eAAe,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,EACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,kBAAkB,CAAC,EAAE,MAAM,KACxB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAChE,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CACrF;AAID,UAAU,KAAK;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,KAAK,2CA8ItE;AAED,wBAAgB,WAAW,yBAM1B"}
|