@wordpress/editor 14.31.1-next.f56bd8138.0 → 14.32.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/CHANGELOG.md +2 -0
- package/build/components/collab-sidebar/add-comment.js +10 -4
- package/build/components/collab-sidebar/add-comment.js.map +1 -1
- package/build/components/collab-sidebar/comment-author-info.js +39 -11
- package/build/components/collab-sidebar/comment-author-info.js.map +1 -1
- package/build/components/collab-sidebar/comment-form.js +23 -19
- package/build/components/collab-sidebar/comment-form.js.map +1 -1
- package/build/components/collab-sidebar/comment-indicator-toolbar.js +7 -4
- package/build/components/collab-sidebar/comment-indicator-toolbar.js.map +1 -1
- package/build/components/collab-sidebar/comments.js +220 -169
- package/build/components/collab-sidebar/comments.js.map +1 -1
- package/build/components/collab-sidebar/hooks.js +96 -0
- package/build/components/collab-sidebar/hooks.js.map +1 -0
- package/build/components/collab-sidebar/index.js +79 -169
- package/build/components/collab-sidebar/index.js.map +1 -1
- package/build/components/collab-sidebar/utils.js +72 -25
- package/build/components/collab-sidebar/utils.js.map +1 -1
- package/build/components/header/index.js +5 -1
- package/build/components/header/index.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.js +1 -1
- package/build/components/provider/use-block-editor-settings.js.map +1 -1
- package/build/dataviews/store/private-actions.js +1 -1
- package/build/dataviews/store/private-actions.js.map +1 -1
- package/build/store/actions.js +63 -2
- package/build/store/actions.js.map +1 -1
- package/build-module/components/collab-sidebar/add-comment.js +11 -5
- package/build-module/components/collab-sidebar/add-comment.js.map +1 -1
- package/build-module/components/collab-sidebar/comment-author-info.js +42 -14
- package/build-module/components/collab-sidebar/comment-author-info.js.map +1 -1
- package/build-module/components/collab-sidebar/comment-form.js +26 -22
- package/build-module/components/collab-sidebar/comment-form.js.map +1 -1
- package/build-module/components/collab-sidebar/comment-indicator-toolbar.js +8 -5
- package/build-module/components/collab-sidebar/comment-indicator-toolbar.js.map +1 -1
- package/build-module/components/collab-sidebar/comments.js +223 -172
- package/build-module/components/collab-sidebar/comments.js.map +1 -1
- package/build-module/components/collab-sidebar/hooks.js +89 -0
- package/build-module/components/collab-sidebar/hooks.js.map +1 -0
- package/build-module/components/collab-sidebar/index.js +82 -172
- package/build-module/components/collab-sidebar/index.js.map +1 -1
- package/build-module/components/collab-sidebar/utils.js +70 -24
- package/build-module/components/collab-sidebar/utils.js.map +1 -1
- package/build-module/components/header/index.js +5 -1
- package/build-module/components/header/index.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.js +1 -1
- package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
- package/build-module/dataviews/store/private-actions.js +2 -2
- package/build-module/dataviews/store/private-actions.js.map +1 -1
- package/build-module/store/actions.js +63 -2
- package/build-module/store/actions.js.map +1 -1
- package/build-style/style-rtl.css +60 -19
- package/build-style/style.css +60 -19
- package/build-types/components/collab-sidebar/add-comment.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/comment-author-info.d.ts +3 -1
- package/build-types/components/collab-sidebar/comment-author-info.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/comment-form.d.ts +3 -5
- package/build-types/components/collab-sidebar/comment-form.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/comment-indicator-toolbar.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/comments.d.ts +1 -7
- package/build-types/components/collab-sidebar/comments.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/hooks.d.ts +6 -0
- package/build-types/components/collab-sidebar/hooks.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/utils.d.ts +11 -6
- package/build-types/components/collab-sidebar/utils.d.ts.map +1 -1
- package/build-types/components/header/index.d.ts.map +1 -1
- package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
- package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
- package/build-types/store/actions.d.ts.map +1 -1
- package/package.json +37 -37
- package/src/components/collab-sidebar/add-comment.js +9 -4
- package/src/components/collab-sidebar/comment-author-info.js +51 -28
- package/src/components/collab-sidebar/comment-form.js +25 -24
- package/src/components/collab-sidebar/comment-indicator-toolbar.js +16 -5
- package/src/components/collab-sidebar/comments.js +271 -210
- package/src/components/collab-sidebar/hooks.js +95 -0
- package/src/components/collab-sidebar/index.js +107 -218
- package/src/components/collab-sidebar/style.scss +34 -20
- package/src/components/collab-sidebar/utils.js +73 -30
- package/src/components/header/index.js +6 -3
- package/src/components/provider/use-block-editor-settings.js +1 -0
- package/src/dataviews/store/private-actions.ts +6 -0
- package/src/store/actions.js +93 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -8,13 +8,16 @@ exports.Comments = Comments;
|
|
|
8
8
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
9
9
|
var _element = require("@wordpress/element");
|
|
10
10
|
var _components = require("@wordpress/components");
|
|
11
|
+
var _compose = require("@wordpress/compose");
|
|
11
12
|
var _icons = require("@wordpress/icons");
|
|
12
13
|
var _i18n = require("@wordpress/i18n");
|
|
13
14
|
var _data = require("@wordpress/data");
|
|
15
|
+
var _dom = require("@wordpress/dom");
|
|
14
16
|
var _blockEditor = require("@wordpress/block-editor");
|
|
15
17
|
var _lockUnlock = require("../../lock-unlock");
|
|
16
18
|
var _commentAuthorInfo = _interopRequireDefault(require("./comment-author-info"));
|
|
17
19
|
var _commentForm = _interopRequireDefault(require("./comment-form"));
|
|
20
|
+
var _utils = require("./utils");
|
|
18
21
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
22
|
/**
|
|
20
23
|
* External dependencies
|
|
@@ -31,28 +34,9 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
31
34
|
const {
|
|
32
35
|
useBlockElement
|
|
33
36
|
} = (0, _lockUnlock.unlock)(_blockEditor.privateApis);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
*
|
|
38
|
-
* @param {string} commentId - The comment ID to search for.
|
|
39
|
-
* @param {Array} blockList - The list of blocks to search through.
|
|
40
|
-
* @return {string|null} The client ID of the found block, or null if not found.
|
|
41
|
-
*/
|
|
42
|
-
const findBlockByCommentId = (commentId, blockList) => {
|
|
43
|
-
for (const block of blockList) {
|
|
44
|
-
if (block.attributes?.blockCommentId === commentId) {
|
|
45
|
-
return block.clientId;
|
|
46
|
-
}
|
|
47
|
-
if (block.innerBlocks) {
|
|
48
|
-
const found = findBlockByCommentId(commentId, block.innerBlocks);
|
|
49
|
-
if (found) {
|
|
50
|
-
return found;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return null;
|
|
55
|
-
};
|
|
37
|
+
const {
|
|
38
|
+
Menu
|
|
39
|
+
} = (0, _lockUnlock.unlock)(_components.privateApis);
|
|
56
40
|
|
|
57
41
|
/**
|
|
58
42
|
* Renders the Comments component.
|
|
@@ -62,9 +46,6 @@ const findBlockByCommentId = (commentId, blockList) => {
|
|
|
62
46
|
* @param {Function} props.onEditComment - The function to handle comment editing.
|
|
63
47
|
* @param {Function} props.onAddReply - The function to add a reply to a comment.
|
|
64
48
|
* @param {Function} props.onCommentDelete - The function to delete a comment.
|
|
65
|
-
* @param {Function} props.onCommentResolve - The function to mark a comment as resolved.
|
|
66
|
-
* @param {Function} props.onCommentReopen - The function to reopen a resolved comment.
|
|
67
|
-
* @param {boolean} props.showCommentBoard - Whether to show the comment board.
|
|
68
49
|
* @param {Function} props.setShowCommentBoard - The function to set the comment board visibility.
|
|
69
50
|
* @return {React.ReactNode} The rendered Comments component.
|
|
70
51
|
*/
|
|
@@ -73,170 +54,208 @@ function Comments({
|
|
|
73
54
|
onEditComment,
|
|
74
55
|
onAddReply,
|
|
75
56
|
onCommentDelete,
|
|
76
|
-
onCommentResolve,
|
|
77
|
-
onCommentReopen,
|
|
78
|
-
showCommentBoard,
|
|
79
57
|
setShowCommentBoard
|
|
80
58
|
}) {
|
|
81
|
-
const {
|
|
82
|
-
blockCommentId,
|
|
83
|
-
blocks
|
|
84
|
-
} = (0, _data.useSelect)(select => {
|
|
59
|
+
const blockCommentId = (0, _data.useSelect)(select => {
|
|
85
60
|
const {
|
|
86
61
|
getBlockAttributes,
|
|
87
|
-
getSelectedBlockClientId
|
|
88
|
-
getBlocks
|
|
62
|
+
getSelectedBlockClientId
|
|
89
63
|
} = select(_blockEditor.store);
|
|
90
|
-
const
|
|
91
|
-
return
|
|
92
|
-
blockCommentId: _clientId ? getBlockAttributes(_clientId)?.blockCommentId : null,
|
|
93
|
-
blocks: getBlocks()
|
|
94
|
-
};
|
|
64
|
+
const clientId = getSelectedBlockClientId();
|
|
65
|
+
return clientId ? getBlockAttributes(clientId)?.metadata?.commentId : null;
|
|
95
66
|
}, []);
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
setFocusThread(null);
|
|
101
|
-
setShowCommentBoard(false);
|
|
102
|
-
};
|
|
103
|
-
const [focusThread, setFocusThread] = (0, _element.useState)(showCommentBoard && blockCommentId ? blockCommentId : null);
|
|
104
|
-
(0, _element.useEffect)(() => {
|
|
105
|
-
// Highlight comment when block is selected.
|
|
106
|
-
if (blockCommentId && !focusThread) {
|
|
107
|
-
setFocusThread(blockCommentId);
|
|
108
|
-
}
|
|
109
|
-
}, [blockCommentId, focusThread, blocks, setFocusThread]);
|
|
110
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
111
|
-
children: [
|
|
112
|
-
// If there are no comments, show a message indicating no comments are available.
|
|
113
|
-
(!Array.isArray(threads) || threads.length === 0) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
67
|
+
const [selectedThread = blockCommentId, setSelectedThread] = (0, _element.useState)();
|
|
68
|
+
const hasThreads = Array.isArray(threads) && threads.length > 0;
|
|
69
|
+
if (!hasThreads) {
|
|
70
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
114
71
|
alignment: "left",
|
|
115
72
|
className: "editor-collab-sidebar-panel__thread",
|
|
116
73
|
justify: "flex-start",
|
|
117
|
-
spacing: "
|
|
74
|
+
spacing: "2",
|
|
118
75
|
children:
|
|
119
76
|
// translators: message displayed when there are no comments available
|
|
120
77
|
(0, _i18n.__)('No comments available')
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
blocks: blocks,
|
|
133
|
-
flashBlock: flashBlock,
|
|
134
|
-
setShowCommentBoard: setShowCommentBoard
|
|
135
|
-
}, thread.id))]
|
|
136
|
-
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return threads.map(thread => /*#__PURE__*/(0, _jsxRuntime.jsx)(Thread, {
|
|
81
|
+
thread: thread,
|
|
82
|
+
onAddReply: onAddReply,
|
|
83
|
+
onCommentDelete: onCommentDelete,
|
|
84
|
+
onEditComment: onEditComment,
|
|
85
|
+
isSelected: selectedThread === thread.id,
|
|
86
|
+
setSelectedThread: setSelectedThread,
|
|
87
|
+
setShowCommentBoard: setShowCommentBoard
|
|
88
|
+
}, thread.id));
|
|
137
89
|
}
|
|
138
90
|
function Thread({
|
|
139
91
|
thread,
|
|
140
92
|
onEditComment,
|
|
141
93
|
onAddReply,
|
|
142
94
|
onCommentDelete,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
isFocused,
|
|
146
|
-
clearThreadFocus,
|
|
147
|
-
setFocusThread,
|
|
148
|
-
blocks,
|
|
149
|
-
flashBlock,
|
|
95
|
+
isSelected,
|
|
96
|
+
setSelectedThread,
|
|
150
97
|
setShowCommentBoard
|
|
151
98
|
}) {
|
|
152
|
-
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
99
|
+
const threadRef = (0, _element.useRef)(null);
|
|
100
|
+
const {
|
|
101
|
+
toggleBlockHighlight
|
|
102
|
+
} = (0, _data.useDispatch)(_blockEditor.store);
|
|
103
|
+
const relatedBlockElement = useBlockElement(thread.blockClientId);
|
|
104
|
+
const debouncedToggleBlockHighlight = (0, _compose.useDebounce)(toggleBlockHighlight, 50);
|
|
105
|
+
const onMouseEnter = () => {
|
|
106
|
+
debouncedToggleBlockHighlight(thread.blockClientId, true);
|
|
107
|
+
};
|
|
108
|
+
const onMouseLeave = () => {
|
|
109
|
+
debouncedToggleBlockHighlight(thread.blockClientId, false);
|
|
110
|
+
};
|
|
111
|
+
const handleCommentSelect = ({
|
|
112
|
+
id,
|
|
113
|
+
blockClientId
|
|
114
|
+
}) => {
|
|
161
115
|
setShowCommentBoard(false);
|
|
162
|
-
|
|
163
|
-
if (
|
|
116
|
+
setSelectedThread(id);
|
|
117
|
+
if (blockClientId && relatedBlockElement) {
|
|
164
118
|
relatedBlockElement.scrollIntoView({
|
|
165
119
|
behavior: 'instant',
|
|
166
120
|
block: 'center'
|
|
167
121
|
});
|
|
168
|
-
flashBlock(relatedBlock);
|
|
169
122
|
}
|
|
170
123
|
};
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}),
|
|
124
|
+
const focusThread = () => {
|
|
125
|
+
threadRef.current?.focus();
|
|
126
|
+
};
|
|
127
|
+
const unselectThread = () => {
|
|
128
|
+
setSelectedThread(null);
|
|
129
|
+
setShowCommentBoard(false);
|
|
130
|
+
};
|
|
131
|
+
const replies = thread?.reply;
|
|
132
|
+
const lastReply = !!replies.length ? replies[replies.length - 1] : undefined;
|
|
133
|
+
const restReplies = !!replies.length ? replies.slice(0, -1) : [];
|
|
134
|
+
const commentExcerpt = (0, _utils.getCommentExcerpt)((0, _dom.__unstableStripHTML)(thread.content.rendered), 10);
|
|
135
|
+
const ariaLabel = relatedBlockElement ? (0, _i18n.sprintf)(
|
|
136
|
+
// translators: %s: comment excerpt
|
|
137
|
+
(0, _i18n.__)('Comment: %s'), commentExcerpt) : (0, _i18n.sprintf)(
|
|
138
|
+
// translators: %s: comment excerpt
|
|
139
|
+
(0, _i18n.__)('Original block deleted. Comment: %s'), commentExcerpt);
|
|
140
|
+
return (
|
|
141
|
+
/*#__PURE__*/
|
|
142
|
+
// Disable reason: role="listitem" does in fact support aria-expanded.
|
|
143
|
+
// eslint-disable-next-line jsx-a11y/role-supports-aria-props
|
|
144
|
+
(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
145
|
+
className: (0, _clsx.default)('editor-collab-sidebar-panel__thread', {
|
|
146
|
+
'is-selected': isSelected
|
|
147
|
+
}),
|
|
148
|
+
id: `thread-${thread.id}`,
|
|
149
|
+
spacing: "2",
|
|
150
|
+
onClick: () => handleCommentSelect(thread),
|
|
151
|
+
onMouseEnter: onMouseEnter,
|
|
152
|
+
onMouseLeave: onMouseLeave,
|
|
153
|
+
onFocus: onMouseEnter,
|
|
154
|
+
onBlur: onMouseLeave,
|
|
155
|
+
onKeyDown: event => {
|
|
156
|
+
// Expand or Collapse thread.
|
|
157
|
+
if (event.key === 'Enter' && event.currentTarget === event.target) {
|
|
158
|
+
if (isSelected) {
|
|
159
|
+
unselectThread();
|
|
160
|
+
} else {
|
|
161
|
+
handleCommentSelect(thread);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Collapse thread and focus the thread.
|
|
165
|
+
if (event.key === 'Escape') {
|
|
166
|
+
unselectThread();
|
|
167
|
+
focusThread();
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
tabIndex: 0,
|
|
171
|
+
role: "listitem",
|
|
172
|
+
ref: threadRef,
|
|
173
|
+
"aria-label": ariaLabel,
|
|
174
|
+
"aria-expanded": isSelected,
|
|
175
|
+
children: [!relatedBlockElement && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalText, {
|
|
176
|
+
as: "p",
|
|
177
|
+
weight: 500,
|
|
178
|
+
variant: "muted",
|
|
179
|
+
children: (0, _i18n.__)('Original block deleted.')
|
|
180
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(CommentBoard, {
|
|
181
|
+
thread: thread,
|
|
182
|
+
onEdit: (params = {}) => {
|
|
183
|
+
const {
|
|
184
|
+
status
|
|
185
|
+
} = params;
|
|
186
|
+
onEditComment(params);
|
|
187
|
+
if (status === 'approved') {
|
|
188
|
+
unselectThread();
|
|
189
|
+
focusThread();
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
onDelete: onCommentDelete,
|
|
193
|
+
status: thread.status
|
|
194
|
+
}), isSelected && replies.map(reply => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
195
195
|
className: "editor-collab-sidebar-panel__child-thread",
|
|
196
196
|
id: reply.id,
|
|
197
197
|
spacing: "2",
|
|
198
|
-
children:
|
|
198
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(CommentBoard, {
|
|
199
199
|
thread: reply,
|
|
200
|
-
onEdit: onEditComment,
|
|
201
|
-
onDelete: onCommentDelete
|
|
202
|
-
}), 'approved' === thread.status && /*#__PURE__*/(0, _jsxRuntime.jsx)(CommentBoard, {
|
|
203
|
-
thread: reply
|
|
204
|
-
})]
|
|
205
|
-
}, reply.id))]
|
|
206
|
-
}), isFocused && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
207
|
-
className: "editor-collab-sidebar-panel__child-thread",
|
|
208
|
-
spacing: "2",
|
|
209
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHStack, {
|
|
210
|
-
alignment: "left",
|
|
211
|
-
spacing: "3",
|
|
212
|
-
justify: "flex-start",
|
|
213
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_commentAuthorInfo.default, {})
|
|
214
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
215
|
-
spacing: "3",
|
|
216
|
-
className: "editor-collab-sidebar-panel__comment-field",
|
|
217
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_commentForm.default, {
|
|
218
|
-
onSubmit: inputComment => {
|
|
219
|
-
if ('approved' === thread.status) {
|
|
220
|
-
onCommentReopen(thread.id);
|
|
221
|
-
}
|
|
222
|
-
onAddReply(inputComment, thread.id);
|
|
223
|
-
},
|
|
224
|
-
onCancel: event => {
|
|
225
|
-
event.stopPropagation(); // Prevent the parent onClick from being triggered
|
|
226
|
-
clearThreadFocus();
|
|
227
|
-
},
|
|
228
|
-
placeholderText: 'approved' === thread.status && (0, _i18n.__)('Adding a comment will re-open this discussion….'),
|
|
229
|
-
submitButtonText: 'approved' === thread.status ? (0, _i18n._x)('Reopen & Reply', 'Reopen comment and add reply') : (0, _i18n._x)('Reply', 'Add reply comment'),
|
|
230
|
-
rows: 'approved' === thread.status ? 2 : 4
|
|
200
|
+
onEdit: 'approved' !== thread.status ? onEditComment : undefined,
|
|
201
|
+
onDelete: 'approved' !== thread.status ? onCommentDelete : undefined
|
|
231
202
|
})
|
|
203
|
+
}, reply.id)), !isSelected && restReplies.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHStack, {
|
|
204
|
+
className: "editor-collab-sidebar-panel__more-reply-separator",
|
|
205
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
206
|
+
size: "compact",
|
|
207
|
+
variant: "tertiary",
|
|
208
|
+
className: "editor-collab-sidebar-panel__more-reply-button",
|
|
209
|
+
onClick: () => setSelectedThread(thread.id),
|
|
210
|
+
children: (0, _i18n.sprintf)(
|
|
211
|
+
// translators: %s: number of replies.
|
|
212
|
+
(0, _i18n._n)('%s more reply', '%s more replies', restReplies.length), restReplies.length)
|
|
213
|
+
})
|
|
214
|
+
}), !isSelected && lastReply && /*#__PURE__*/(0, _jsxRuntime.jsx)(CommentBoard, {
|
|
215
|
+
thread: lastReply,
|
|
216
|
+
onEdit: 'approved' !== thread.status ? onEditComment : undefined,
|
|
217
|
+
onDelete: 'approved' !== thread.status ? onCommentDelete : undefined
|
|
218
|
+
}), isSelected && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
219
|
+
className: "editor-collab-sidebar-panel__child-thread",
|
|
220
|
+
spacing: "2",
|
|
221
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHStack, {
|
|
222
|
+
alignment: "left",
|
|
223
|
+
spacing: "3",
|
|
224
|
+
justify: "flex-start",
|
|
225
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_commentAuthorInfo.default, {})
|
|
226
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
227
|
+
spacing: "2",
|
|
228
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_commentForm.default, {
|
|
229
|
+
onSubmit: inputComment => {
|
|
230
|
+
if ('approved' === thread.status) {
|
|
231
|
+
onEditComment({
|
|
232
|
+
id: thread.id,
|
|
233
|
+
status: 'hold'
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
onAddReply({
|
|
237
|
+
content: inputComment,
|
|
238
|
+
parent: thread.id
|
|
239
|
+
});
|
|
240
|
+
},
|
|
241
|
+
onCancel: event => {
|
|
242
|
+
threadRef.current?.focus();
|
|
243
|
+
event.stopPropagation(); // Prevent the parent onClick from being triggered
|
|
244
|
+
unselectThread();
|
|
245
|
+
},
|
|
246
|
+
submitButtonText: 'approved' === thread.status ? (0, _i18n.__)('Reopen & Reply') : (0, _i18n.__)('Reply'),
|
|
247
|
+
rows: 'approved' === thread.status ? 2 : 4,
|
|
248
|
+
labelText: (0, _i18n.sprintf)(
|
|
249
|
+
// translators: %1$s: comment identifier, %2$s: author name
|
|
250
|
+
(0, _i18n.__)('Reply to Comment %1$s by %2$s'), thread.id, thread?.author_name || 'Unknown')
|
|
251
|
+
})
|
|
252
|
+
})]
|
|
232
253
|
})]
|
|
233
|
-
})
|
|
234
|
-
|
|
254
|
+
})
|
|
255
|
+
);
|
|
235
256
|
}
|
|
236
257
|
const CommentBoard = ({
|
|
237
258
|
thread,
|
|
238
|
-
onResolve,
|
|
239
|
-
onReopen,
|
|
240
259
|
onEdit,
|
|
241
260
|
onDelete,
|
|
242
261
|
status
|
|
@@ -244,7 +263,7 @@ const CommentBoard = ({
|
|
|
244
263
|
const [actionState, setActionState] = (0, _element.useState)(false);
|
|
245
264
|
const [showConfirmDialog, setShowConfirmDialog] = (0, _element.useState)(false);
|
|
246
265
|
const handleConfirmDelete = () => {
|
|
247
|
-
onDelete(thread
|
|
266
|
+
onDelete(thread);
|
|
248
267
|
setActionState(false);
|
|
249
268
|
setShowConfirmDialog(false);
|
|
250
269
|
};
|
|
@@ -253,22 +272,29 @@ const CommentBoard = ({
|
|
|
253
272
|
setShowConfirmDialog(false);
|
|
254
273
|
};
|
|
255
274
|
const actions = [onEdit && status !== 'approved' && {
|
|
275
|
+
id: 'edit',
|
|
256
276
|
title: (0, _i18n._x)('Edit', 'Edit comment'),
|
|
257
277
|
onClick: () => {
|
|
258
278
|
setActionState('edit');
|
|
259
279
|
}
|
|
260
280
|
}, onDelete && {
|
|
281
|
+
id: 'delete',
|
|
261
282
|
title: (0, _i18n._x)('Delete', 'Delete comment'),
|
|
262
283
|
onClick: () => {
|
|
263
284
|
setActionState('delete');
|
|
264
285
|
setShowConfirmDialog(true);
|
|
265
286
|
}
|
|
266
|
-
},
|
|
287
|
+
}, onEdit && status === 'approved' && {
|
|
288
|
+
id: 'reopen',
|
|
267
289
|
title: (0, _i18n._x)('Reopen', 'Reopen comment'),
|
|
268
290
|
onClick: () => {
|
|
269
|
-
|
|
291
|
+
onEdit({
|
|
292
|
+
id: thread.id,
|
|
293
|
+
status: 'hold'
|
|
294
|
+
});
|
|
270
295
|
}
|
|
271
296
|
}];
|
|
297
|
+
const canResolve = thread?.parent === 0;
|
|
272
298
|
const moreActions = actions.filter(item => item?.onClick);
|
|
273
299
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
274
300
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
|
|
@@ -278,38 +304,63 @@ const CommentBoard = ({
|
|
|
278
304
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_commentAuthorInfo.default, {
|
|
279
305
|
avatar: thread?.author_avatar_urls?.[48],
|
|
280
306
|
name: thread?.author_name,
|
|
281
|
-
date: thread?.date
|
|
282
|
-
|
|
307
|
+
date: thread?.date,
|
|
308
|
+
userId: thread?.author
|
|
309
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FlexItem, {
|
|
283
310
|
className: "editor-collab-sidebar-panel__comment-status",
|
|
311
|
+
onClick: event => {
|
|
312
|
+
// Prevent the thread from being selected.
|
|
313
|
+
event.stopPropagation();
|
|
314
|
+
},
|
|
284
315
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
|
|
285
|
-
alignment: "right",
|
|
286
|
-
justify: "flex-end",
|
|
287
316
|
spacing: "0",
|
|
288
|
-
children: [
|
|
317
|
+
children: [canResolve && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
289
318
|
label: (0, _i18n._x)('Resolve', 'Mark comment as resolved'),
|
|
290
319
|
size: "small",
|
|
291
320
|
icon: _icons.published,
|
|
292
321
|
disabled: status === 'approved',
|
|
293
322
|
accessibleWhenDisabled: status === 'approved',
|
|
294
323
|
onClick: () => {
|
|
295
|
-
|
|
324
|
+
onEdit({
|
|
325
|
+
id: thread.id,
|
|
326
|
+
status: 'approved'
|
|
327
|
+
});
|
|
296
328
|
}
|
|
297
|
-
}),
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
329
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(Menu, {
|
|
330
|
+
placement: "bottom-end",
|
|
331
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Menu.TriggerButton, {
|
|
332
|
+
render: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
333
|
+
size: "small",
|
|
334
|
+
icon: _icons.moreVertical,
|
|
335
|
+
label: (0, _i18n.__)('Actions'),
|
|
336
|
+
disabled: !moreActions.length,
|
|
337
|
+
accessibleWhenDisabled: true
|
|
338
|
+
})
|
|
339
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(Menu.Popover, {
|
|
340
|
+
children: moreActions.map(action => /*#__PURE__*/(0, _jsxRuntime.jsx)(Menu.Item, {
|
|
341
|
+
onClick: () => action.onClick(),
|
|
342
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Menu.ItemLabel, {
|
|
343
|
+
children: action.title
|
|
344
|
+
})
|
|
345
|
+
}, action.id))
|
|
346
|
+
})]
|
|
302
347
|
})]
|
|
303
348
|
})
|
|
304
349
|
})]
|
|
305
350
|
}), 'edit' === actionState ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_commentForm.default, {
|
|
306
351
|
onSubmit: value => {
|
|
307
|
-
onEdit(
|
|
352
|
+
onEdit({
|
|
353
|
+
id: thread.id,
|
|
354
|
+
content: value
|
|
355
|
+
});
|
|
308
356
|
setActionState(false);
|
|
309
357
|
},
|
|
310
358
|
onCancel: () => handleCancel(),
|
|
311
359
|
thread: thread,
|
|
312
|
-
submitButtonText: (0, _i18n._x)('Update', 'verb')
|
|
360
|
+
submitButtonText: (0, _i18n._x)('Update', 'verb'),
|
|
361
|
+
labelText: (0, _i18n.sprintf)(
|
|
362
|
+
// translators: %1$s: comment identifier, %2$s: author name.
|
|
363
|
+
(0, _i18n.__)('Edit Comment %1$s by %2$s'), thread.id, thread?.author_name || 'Unknown')
|
|
313
364
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_element.RawHTML, {
|
|
314
365
|
className: "editor-collab-sidebar-panel__user-comment",
|
|
315
366
|
children: thread?.content?.rendered
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_components","_icons","_i18n","_data","_blockEditor","_lockUnlock","_commentAuthorInfo","_commentForm","_jsxRuntime","useBlockElement","unlock","blockEditorPrivateApis","findBlockByCommentId","commentId","blockList","block","attributes","blockCommentId","clientId","innerBlocks","found","Comments","threads","onEditComment","onAddReply","onCommentDelete","onCommentResolve","onCommentReopen","showCommentBoard","setShowCommentBoard","blocks","useSelect","select","getBlockAttributes","getSelectedBlockClientId","getBlocks","blockEditorStore","_clientId","flashBlock","useDispatch","clearThreadFocus","setFocusThread","focusThread","useState","useEffect","jsxs","Fragment","children","Array","isArray","length","jsx","__experimentalVStack","alignment","className","justify","spacing","__","map","thread","Thread","isFocused","id","relatedBlock","useMemo","relatedBlockElement","handleCommentSelect","threadId","scrollIntoView","behavior","clsx","onClick","CommentBoard","onResolve","onReopen","onEdit","onDelete","status","reply","Button","__next40pxDefaultSize","variant","sprintf","_n","__experimentalHStack","default","onSubmit","inputComment","onCancel","event","stopPropagation","placeholderText","submitButtonText","_x","rows","actionState","setActionState","showConfirmDialog","setShowConfirmDialog","handleConfirmDelete","handleCancel","actions","title","moreActions","filter","item","avatar","author_avatar_urls","name","author_name","date","parent","label","size","icon","published","disabled","accessibleWhenDisabled","DropdownMenu","moreVertical","controls","value","RawHTML","content","rendered","__experimentalConfirmDialog","isOpen","onConfirm","confirmButtonText"],"sources":["@wordpress/editor/src/components/collab-sidebar/comments.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useState, RawHTML, useEffect, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tButton,\n\tDropdownMenu,\n} from '@wordpress/components';\n\nimport { published, moreVertical } from '@wordpress/icons';\nimport { __, _x, sprintf, _n } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tstore as blockEditorStore,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport CommentAuthorInfo from './comment-author-info';\nimport CommentForm from './comment-form';\n\nconst { useBlockElement } = unlock( blockEditorPrivateApis );\n\n/**\n * Finds the first block that has the specified comment ID.\n *\n * @param {string} commentId - The comment ID to search for.\n * @param {Array} blockList - The list of blocks to search through.\n * @return {string|null} The client ID of the found block, or null if not found.\n */\nconst findBlockByCommentId = ( commentId, blockList ) => {\n\tfor ( const block of blockList ) {\n\t\tif ( block.attributes?.blockCommentId === commentId ) {\n\t\t\treturn block.clientId;\n\t\t}\n\t\tif ( block.innerBlocks ) {\n\t\t\tconst found = findBlockByCommentId( commentId, block.innerBlocks );\n\t\t\tif ( found ) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/**\n * Renders the Comments component.\n *\n * @param {Object} props - The component props.\n * @param {Array} props.threads - The array of comment threads.\n * @param {Function} props.onEditComment - The function to handle comment editing.\n * @param {Function} props.onAddReply - The function to add a reply to a comment.\n * @param {Function} props.onCommentDelete - The function to delete a comment.\n * @param {Function} props.onCommentResolve - The function to mark a comment as resolved.\n * @param {Function} props.onCommentReopen - The function to reopen a resolved comment.\n * @param {boolean} props.showCommentBoard - Whether to show the comment board.\n * @param {Function} props.setShowCommentBoard - The function to set the comment board visibility.\n * @return {React.ReactNode} The rendered Comments component.\n */\nexport function Comments( {\n\tthreads,\n\tonEditComment,\n\tonAddReply,\n\tonCommentDelete,\n\tonCommentResolve,\n\tonCommentReopen,\n\tshowCommentBoard,\n\tsetShowCommentBoard,\n} ) {\n\tconst { blockCommentId, blocks } = useSelect( ( select ) => {\n\t\tconst { getBlockAttributes, getSelectedBlockClientId, getBlocks } =\n\t\t\tselect( blockEditorStore );\n\t\tconst _clientId = getSelectedBlockClientId();\n\t\treturn {\n\t\t\tblockCommentId: _clientId\n\t\t\t\t? getBlockAttributes( _clientId )?.blockCommentId\n\t\t\t\t: null,\n\t\t\tblocks: getBlocks(),\n\t\t};\n\t}, [] );\n\n\tconst { flashBlock } = useDispatch( blockEditorStore );\n\n\tconst clearThreadFocus = () => {\n\t\tsetFocusThread( null );\n\t\tsetShowCommentBoard( false );\n\t};\n\n\tconst [ focusThread, setFocusThread ] = useState(\n\t\tshowCommentBoard && blockCommentId ? blockCommentId : null\n\t);\n\n\tuseEffect( () => {\n\t\t// Highlight comment when block is selected.\n\t\tif ( blockCommentId && ! focusThread ) {\n\t\t\tsetFocusThread( blockCommentId );\n\t\t}\n\t}, [ blockCommentId, focusThread, blocks, setFocusThread ] );\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// If there are no comments, show a message indicating no comments are available.\n\t\t\t\t( ! Array.isArray( threads ) || threads.length === 0 ) && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__thread\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\tspacing=\"3\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// translators: message displayed when there are no comments available\n\t\t\t\t\t\t\t__( 'No comments available' )\n\t\t\t\t\t\t}\n\t\t\t\t\t</VStack>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ Array.isArray( threads ) &&\n\t\t\t\tthreads.length > 0 &&\n\t\t\t\tthreads.map( ( thread ) => (\n\t\t\t\t\t<Thread\n\t\t\t\t\t\tkey={ thread.id }\n\t\t\t\t\t\tthread={ thread }\n\t\t\t\t\t\tonAddReply={ onAddReply }\n\t\t\t\t\t\tonCommentDelete={ onCommentDelete }\n\t\t\t\t\t\tonCommentResolve={ onCommentResolve }\n\t\t\t\t\t\tonCommentReopen={ onCommentReopen }\n\t\t\t\t\t\tonEditComment={ onEditComment }\n\t\t\t\t\t\tisFocused={ focusThread === thread.id }\n\t\t\t\t\t\tclearThreadFocus={ clearThreadFocus }\n\t\t\t\t\t\tsetFocusThread={ setFocusThread }\n\t\t\t\t\t\tblockCommentId={ blockCommentId }\n\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\tflashBlock={ flashBlock }\n\t\t\t\t\t\tsetShowCommentBoard={ setShowCommentBoard }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nfunction Thread( {\n\tthread,\n\tonEditComment,\n\tonAddReply,\n\tonCommentDelete,\n\tonCommentResolve,\n\tonCommentReopen,\n\tisFocused,\n\tclearThreadFocus,\n\tsetFocusThread,\n\tblocks,\n\tflashBlock,\n\tsetShowCommentBoard,\n} ) {\n\t// Find first block that has this comment ID - run at component root level.\n\tconst relatedBlock = useMemo( () => {\n\t\tif ( ! thread.id || ! blocks ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn findBlockByCommentId( thread.id, blocks );\n\t}, [ thread.id, blocks ] );\n\n\tconst relatedBlockElement = useBlockElement( relatedBlock );\n\n\tconst handleCommentSelect = ( threadId ) => {\n\t\tsetShowCommentBoard( false );\n\t\tsetFocusThread( threadId );\n\t\tif ( relatedBlock && relatedBlockElement ) {\n\t\t\trelatedBlockElement.scrollIntoView( {\n\t\t\t\tbehavior: 'instant',\n\t\t\t\tblock: 'center',\n\t\t\t} );\n\t\t\tflashBlock( relatedBlock );\n\t\t}\n\t};\n\n\treturn (\n\t\t<VStack\n\t\t\tclassName={ clsx( 'editor-collab-sidebar-panel__thread', {\n\t\t\t\t'editor-collab-sidebar-panel__focus-thread': isFocused,\n\t\t\t} ) }\n\t\t\tid={ thread.id }\n\t\t\tspacing=\"3\"\n\t\t\tonClick={ () => handleCommentSelect( thread.id ) }\n\t\t>\n\t\t\t<CommentBoard\n\t\t\t\tthread={ thread }\n\t\t\t\tonResolve={ onCommentResolve }\n\t\t\t\tonReopen={ onCommentReopen }\n\t\t\t\tonEdit={ onEditComment }\n\t\t\t\tonDelete={ onCommentDelete }\n\t\t\t\tstatus={ thread.status }\n\t\t\t/>\n\t\t\t{ 0 < thread?.reply?.length && (\n\t\t\t\t<>\n\t\t\t\t\t{ ! isFocused && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__show-more-reply\"\n\t\t\t\t\t\t\tonClick={ () => setFocusThread( thread.id ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: number of replies.\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'%s more reply',\n\t\t\t\t\t\t\t\t\t'%s more replies',\n\t\t\t\t\t\t\t\t\tthread?.reply?.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tthread?.reply?.length\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ isFocused &&\n\t\t\t\t\t\tthread.reply.map( ( reply ) => (\n\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\tkey={ reply.id }\n\t\t\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__child-thread\"\n\t\t\t\t\t\t\t\tid={ reply.id }\n\t\t\t\t\t\t\t\tspacing=\"2\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ 'approved' !== thread.status && (\n\t\t\t\t\t\t\t\t\t<CommentBoard\n\t\t\t\t\t\t\t\t\t\tthread={ reply }\n\t\t\t\t\t\t\t\t\t\tonEdit={ onEditComment }\n\t\t\t\t\t\t\t\t\t\tonDelete={ onCommentDelete }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ 'approved' === thread.status && (\n\t\t\t\t\t\t\t\t\t<CommentBoard thread={ reply } />\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ isFocused && (\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__child-thread\"\n\t\t\t\t\tspacing=\"2\"\n\t\t\t\t>\n\t\t\t\t\t<HStack alignment=\"left\" spacing=\"3\" justify=\"flex-start\">\n\t\t\t\t\t\t<CommentAuthorInfo />\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tspacing=\"3\"\n\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__comment-field\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<CommentForm\n\t\t\t\t\t\t\tonSubmit={ ( inputComment ) => {\n\t\t\t\t\t\t\t\tif ( 'approved' === thread.status ) {\n\t\t\t\t\t\t\t\t\tonCommentReopen( thread.id );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonAddReply( inputComment, thread.id );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonCancel={ ( event ) => {\n\t\t\t\t\t\t\t\tevent.stopPropagation(); // Prevent the parent onClick from being triggered\n\t\t\t\t\t\t\t\tclearThreadFocus();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tplaceholderText={\n\t\t\t\t\t\t\t\t'approved' === thread.status &&\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Adding a comment will re-open this discussion….'\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsubmitButtonText={\n\t\t\t\t\t\t\t\t'approved' === thread.status\n\t\t\t\t\t\t\t\t\t? _x(\n\t\t\t\t\t\t\t\t\t\t\t'Reopen & Reply',\n\t\t\t\t\t\t\t\t\t\t\t'Reopen comment and add reply'\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: _x( 'Reply', 'Add reply comment' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trows={ 'approved' === thread.status ? 2 : 4 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nconst CommentBoard = ( {\n\tthread,\n\tonResolve,\n\tonReopen,\n\tonEdit,\n\tonDelete,\n\tstatus,\n} ) => {\n\tconst [ actionState, setActionState ] = useState( false );\n\tconst [ showConfirmDialog, setShowConfirmDialog ] = useState( false );\n\n\tconst handleConfirmDelete = () => {\n\t\tonDelete( thread.id );\n\t\tsetActionState( false );\n\t\tsetShowConfirmDialog( false );\n\t};\n\n\tconst handleCancel = () => {\n\t\tsetActionState( false );\n\t\tsetShowConfirmDialog( false );\n\t};\n\n\tconst actions = [\n\t\tonEdit &&\n\t\t\tstatus !== 'approved' && {\n\t\t\t\ttitle: _x( 'Edit', 'Edit comment' ),\n\t\t\t\tonClick: () => {\n\t\t\t\t\tsetActionState( 'edit' );\n\t\t\t\t},\n\t\t\t},\n\t\tonDelete && {\n\t\t\ttitle: _x( 'Delete', 'Delete comment' ),\n\t\t\tonClick: () => {\n\t\t\t\tsetActionState( 'delete' );\n\t\t\t\tsetShowConfirmDialog( true );\n\t\t\t},\n\t\t},\n\t\tonReopen &&\n\t\t\tstatus === 'approved' && {\n\t\t\t\ttitle: _x( 'Reopen', 'Reopen comment' ),\n\t\t\t\tonClick: () => {\n\t\t\t\t\tonReopen( thread.id );\n\t\t\t\t},\n\t\t\t},\n\t];\n\n\tconst moreActions = actions.filter( ( item ) => item?.onClick );\n\n\treturn (\n\t\t<>\n\t\t\t<HStack alignment=\"left\" spacing=\"3\" justify=\"flex-start\">\n\t\t\t\t<CommentAuthorInfo\n\t\t\t\t\tavatar={ thread?.author_avatar_urls?.[ 48 ] }\n\t\t\t\t\tname={ thread?.author_name }\n\t\t\t\t\tdate={ thread?.date }\n\t\t\t\t/>\n\t\t\t\t<span className=\"editor-collab-sidebar-panel__comment-status\">\n\t\t\t\t\t<HStack alignment=\"right\" justify=\"flex-end\" spacing=\"0\">\n\t\t\t\t\t\t{ 0 === thread?.parent && onResolve && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t\t'Resolve',\n\t\t\t\t\t\t\t\t\t'Mark comment as resolved'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ticon={ published }\n\t\t\t\t\t\t\t\tdisabled={ status === 'approved' }\n\t\t\t\t\t\t\t\taccessibleWhenDisabled={ status === 'approved' }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonResolve( thread.id );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ 0 < moreActions.length && (\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t\t'Select an action',\n\t\t\t\t\t\t\t\t\t'Select comment action'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__comment-dropdown-menu\"\n\t\t\t\t\t\t\t\tcontrols={ moreActions }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</HStack>\n\t\t\t\t</span>\n\t\t\t</HStack>\n\t\t\t{ 'edit' === actionState ? (\n\t\t\t\t<CommentForm\n\t\t\t\t\tonSubmit={ ( value ) => {\n\t\t\t\t\t\tonEdit( thread.id, value );\n\t\t\t\t\t\tsetActionState( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonCancel={ () => handleCancel() }\n\t\t\t\t\tthread={ thread }\n\t\t\t\t\tsubmitButtonText={ _x( 'Update', 'verb' ) }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<RawHTML className=\"editor-collab-sidebar-panel__user-comment\">\n\t\t\t\t\t{ thread?.content?.rendered }\n\t\t\t\t</RawHTML>\n\t\t\t) }\n\t\t\t{ 'delete' === actionState && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen={ showConfirmDialog }\n\t\t\t\t\tonConfirm={ handleConfirmDelete }\n\t\t\t\t\tonCancel={ handleCancel }\n\t\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\t>\n\t\t\t\t\t{\n\t\t\t\t\t\t// translators: message displayed when confirming an action\n\t\t\t\t\t\t__( 'Are you sure you want to delete this comment?' )\n\t\t\t\t\t}\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</>\n\t);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_components","_compose","_icons","_i18n","_data","_dom","_blockEditor","_lockUnlock","_commentAuthorInfo","_commentForm","_utils","_jsxRuntime","useBlockElement","unlock","blockEditorPrivateApis","Menu","componentsPrivateApis","Comments","threads","onEditComment","onAddReply","onCommentDelete","setShowCommentBoard","blockCommentId","useSelect","select","getBlockAttributes","getSelectedBlockClientId","blockEditorStore","clientId","metadata","commentId","selectedThread","setSelectedThread","useState","hasThreads","Array","isArray","length","jsx","__experimentalVStack","alignment","className","justify","spacing","children","__","map","thread","Thread","isSelected","id","threadRef","useRef","toggleBlockHighlight","useDispatch","relatedBlockElement","blockClientId","debouncedToggleBlockHighlight","useDebounce","onMouseEnter","onMouseLeave","handleCommentSelect","scrollIntoView","behavior","block","focusThread","current","focus","unselectThread","replies","reply","lastReply","undefined","restReplies","slice","commentExcerpt","getCommentExcerpt","stripHTML","content","rendered","ariaLabel","sprintf","jsxs","clsx","onClick","onFocus","onBlur","onKeyDown","event","key","currentTarget","target","tabIndex","role","ref","__experimentalText","as","weight","variant","CommentBoard","onEdit","params","status","onDelete","__experimentalHStack","Button","size","_n","default","onSubmit","inputComment","parent","onCancel","stopPropagation","submitButtonText","rows","labelText","author_name","actionState","setActionState","showConfirmDialog","setShowConfirmDialog","handleConfirmDelete","handleCancel","actions","title","_x","canResolve","moreActions","filter","item","Fragment","avatar","author_avatar_urls","name","date","userId","author","FlexItem","label","icon","published","disabled","accessibleWhenDisabled","placement","TriggerButton","render","moreVertical","Popover","action","Item","ItemLabel","value","RawHTML","__experimentalConfirmDialog","isOpen","onConfirm","confirmButtonText"],"sources":["@wordpress/editor/src/components/collab-sidebar/comments.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useState, RawHTML, useRef } from '@wordpress/element';\nimport {\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tButton,\n\tFlexItem,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useDebounce } from '@wordpress/compose';\n\nimport { published, moreVertical } from '@wordpress/icons';\nimport { __, _x, sprintf, _n } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport {\n\tstore as blockEditorStore,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport CommentAuthorInfo from './comment-author-info';\nimport CommentForm from './comment-form';\nimport { getCommentExcerpt } from './utils';\n\nconst { useBlockElement } = unlock( blockEditorPrivateApis );\nconst { Menu } = unlock( componentsPrivateApis );\n\n/**\n * Renders the Comments component.\n *\n * @param {Object} props - The component props.\n * @param {Array} props.threads - The array of comment threads.\n * @param {Function} props.onEditComment - The function to handle comment editing.\n * @param {Function} props.onAddReply - The function to add a reply to a comment.\n * @param {Function} props.onCommentDelete - The function to delete a comment.\n * @param {Function} props.setShowCommentBoard - The function to set the comment board visibility.\n * @return {React.ReactNode} The rendered Comments component.\n */\nexport function Comments( {\n\tthreads,\n\tonEditComment,\n\tonAddReply,\n\tonCommentDelete,\n\tsetShowCommentBoard,\n} ) {\n\tconst blockCommentId = useSelect( ( select ) => {\n\t\tconst { getBlockAttributes, getSelectedBlockClientId } =\n\t\t\tselect( blockEditorStore );\n\t\tconst clientId = getSelectedBlockClientId();\n\t\treturn clientId\n\t\t\t? getBlockAttributes( clientId )?.metadata?.commentId\n\t\t\t: null;\n\t}, [] );\n\tconst [ selectedThread = blockCommentId, setSelectedThread ] = useState();\n\n\tconst hasThreads = Array.isArray( threads ) && threads.length > 0;\n\tif ( ! hasThreads ) {\n\t\treturn (\n\t\t\t<VStack\n\t\t\t\talignment=\"left\"\n\t\t\t\tclassName=\"editor-collab-sidebar-panel__thread\"\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tspacing=\"2\"\n\t\t\t>\n\t\t\t\t{\n\t\t\t\t\t// translators: message displayed when there are no comments available\n\t\t\t\t\t__( 'No comments available' )\n\t\t\t\t}\n\t\t\t</VStack>\n\t\t);\n\t}\n\n\treturn threads.map( ( thread ) => (\n\t\t<Thread\n\t\t\tkey={ thread.id }\n\t\t\tthread={ thread }\n\t\t\tonAddReply={ onAddReply }\n\t\t\tonCommentDelete={ onCommentDelete }\n\t\t\tonEditComment={ onEditComment }\n\t\t\tisSelected={ selectedThread === thread.id }\n\t\t\tsetSelectedThread={ setSelectedThread }\n\t\t\tsetShowCommentBoard={ setShowCommentBoard }\n\t\t/>\n\t) );\n}\n\nfunction Thread( {\n\tthread,\n\tonEditComment,\n\tonAddReply,\n\tonCommentDelete,\n\tisSelected,\n\tsetSelectedThread,\n\tsetShowCommentBoard,\n} ) {\n\tconst threadRef = useRef( null );\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst relatedBlockElement = useBlockElement( thread.blockClientId );\n\tconst debouncedToggleBlockHighlight = useDebounce(\n\t\ttoggleBlockHighlight,\n\t\t50\n\t);\n\n\tconst onMouseEnter = () => {\n\t\tdebouncedToggleBlockHighlight( thread.blockClientId, true );\n\t};\n\n\tconst onMouseLeave = () => {\n\t\tdebouncedToggleBlockHighlight( thread.blockClientId, false );\n\t};\n\n\tconst handleCommentSelect = ( { id, blockClientId } ) => {\n\t\tsetShowCommentBoard( false );\n\t\tsetSelectedThread( id );\n\t\tif ( blockClientId && relatedBlockElement ) {\n\t\t\trelatedBlockElement.scrollIntoView( {\n\t\t\t\tbehavior: 'instant',\n\t\t\t\tblock: 'center',\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst focusThread = () => {\n\t\tthreadRef.current?.focus();\n\t};\n\n\tconst unselectThread = () => {\n\t\tsetSelectedThread( null );\n\t\tsetShowCommentBoard( false );\n\t};\n\n\tconst replies = thread?.reply;\n\tconst lastReply = !! replies.length\n\t\t? replies[ replies.length - 1 ]\n\t\t: undefined;\n\tconst restReplies = !! replies.length ? replies.slice( 0, -1 ) : [];\n\n\tconst commentExcerpt = getCommentExcerpt(\n\t\tstripHTML( thread.content.rendered ),\n\t\t10\n\t);\n\tconst ariaLabel = relatedBlockElement\n\t\t? sprintf(\n\t\t\t\t// translators: %s: comment excerpt\n\t\t\t\t__( 'Comment: %s' ),\n\t\t\t\tcommentExcerpt\n\t\t )\n\t\t: sprintf(\n\t\t\t\t// translators: %s: comment excerpt\n\t\t\t\t__( 'Original block deleted. Comment: %s' ),\n\t\t\t\tcommentExcerpt\n\t\t );\n\n\treturn (\n\t\t// Disable reason: role=\"listitem\" does in fact support aria-expanded.\n\t\t// eslint-disable-next-line jsx-a11y/role-supports-aria-props\n\t\t<VStack\n\t\t\tclassName={ clsx( 'editor-collab-sidebar-panel__thread', {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t} ) }\n\t\t\tid={ `thread-${ thread.id }` }\n\t\t\tspacing=\"2\"\n\t\t\tonClick={ () => handleCommentSelect( thread ) }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t// Expand or Collapse thread.\n\t\t\t\tif (\n\t\t\t\t\tevent.key === 'Enter' &&\n\t\t\t\t\tevent.currentTarget === event.target\n\t\t\t\t) {\n\t\t\t\t\tif ( isSelected ) {\n\t\t\t\t\t\tunselectThread();\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleCommentSelect( thread );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Collapse thread and focus the thread.\n\t\t\t\tif ( event.key === 'Escape' ) {\n\t\t\t\t\tunselectThread();\n\t\t\t\t\tfocusThread();\n\t\t\t\t}\n\t\t\t} }\n\t\t\ttabIndex={ 0 }\n\t\t\trole=\"listitem\"\n\t\t\tref={ threadRef }\n\t\t\taria-label={ ariaLabel }\n\t\t\taria-expanded={ isSelected }\n\t\t>\n\t\t\t{ ! relatedBlockElement && (\n\t\t\t\t<Text as=\"p\" weight={ 500 } variant=\"muted\">\n\t\t\t\t\t{ __( 'Original block deleted.' ) }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t\t<CommentBoard\n\t\t\t\tthread={ thread }\n\t\t\t\tonEdit={ ( params = {} ) => {\n\t\t\t\t\tconst { status } = params;\n\t\t\t\t\tonEditComment( params );\n\t\t\t\t\tif ( status === 'approved' ) {\n\t\t\t\t\t\tunselectThread();\n\t\t\t\t\t\tfocusThread();\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t\tonDelete={ onCommentDelete }\n\t\t\t\tstatus={ thread.status }\n\t\t\t/>\n\t\t\t{ isSelected &&\n\t\t\t\treplies.map( ( reply ) => (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tkey={ reply.id }\n\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__child-thread\"\n\t\t\t\t\t\tid={ reply.id }\n\t\t\t\t\t\tspacing=\"2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<CommentBoard\n\t\t\t\t\t\t\tthread={ reply }\n\t\t\t\t\t\t\tonEdit={\n\t\t\t\t\t\t\t\t'approved' !== thread.status\n\t\t\t\t\t\t\t\t\t? onEditComment\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonDelete={\n\t\t\t\t\t\t\t\t'approved' !== thread.status\n\t\t\t\t\t\t\t\t\t? onCommentDelete\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t) ) }\n\t\t\t{ ! isSelected && restReplies.length > 0 && (\n\t\t\t\t<HStack className=\"editor-collab-sidebar-panel__more-reply-separator\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__more-reply-button\"\n\t\t\t\t\t\tonClick={ () => setSelectedThread( thread.id ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t// translators: %s: number of replies.\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'%s more reply',\n\t\t\t\t\t\t\t\t'%s more replies',\n\t\t\t\t\t\t\t\trestReplies.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\trestReplies.length\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t{ ! isSelected && lastReply && (\n\t\t\t\t<CommentBoard\n\t\t\t\t\tthread={ lastReply }\n\t\t\t\t\tonEdit={\n\t\t\t\t\t\t'approved' !== thread.status ? onEditComment : undefined\n\t\t\t\t\t}\n\t\t\t\t\tonDelete={\n\t\t\t\t\t\t'approved' !== thread.status\n\t\t\t\t\t\t\t? onCommentDelete\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isSelected && (\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__child-thread\"\n\t\t\t\t\tspacing=\"2\"\n\t\t\t\t>\n\t\t\t\t\t<HStack alignment=\"left\" spacing=\"3\" justify=\"flex-start\">\n\t\t\t\t\t\t<CommentAuthorInfo />\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<VStack spacing=\"2\">\n\t\t\t\t\t\t<CommentForm\n\t\t\t\t\t\t\tonSubmit={ ( inputComment ) => {\n\t\t\t\t\t\t\t\tif ( 'approved' === thread.status ) {\n\t\t\t\t\t\t\t\t\tonEditComment( {\n\t\t\t\t\t\t\t\t\t\tid: thread.id,\n\t\t\t\t\t\t\t\t\t\tstatus: 'hold',\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonAddReply( {\n\t\t\t\t\t\t\t\t\tcontent: inputComment,\n\t\t\t\t\t\t\t\t\tparent: thread.id,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonCancel={ ( event ) => {\n\t\t\t\t\t\t\t\tthreadRef.current?.focus();\n\t\t\t\t\t\t\t\tevent.stopPropagation(); // Prevent the parent onClick from being triggered\n\t\t\t\t\t\t\t\tunselectThread();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tsubmitButtonText={\n\t\t\t\t\t\t\t\t'approved' === thread.status\n\t\t\t\t\t\t\t\t\t? __( 'Reopen & Reply' )\n\t\t\t\t\t\t\t\t\t: __( 'Reply' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trows={ 'approved' === thread.status ? 2 : 4 }\n\t\t\t\t\t\t\tlabelText={ sprintf(\n\t\t\t\t\t\t\t\t// translators: %1$s: comment identifier, %2$s: author name\n\t\t\t\t\t\t\t\t__( 'Reply to Comment %1$s by %2$s' ),\n\t\t\t\t\t\t\t\tthread.id,\n\t\t\t\t\t\t\t\tthread?.author_name || 'Unknown'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nconst CommentBoard = ( { thread, onEdit, onDelete, status } ) => {\n\tconst [ actionState, setActionState ] = useState( false );\n\tconst [ showConfirmDialog, setShowConfirmDialog ] = useState( false );\n\n\tconst handleConfirmDelete = () => {\n\t\tonDelete( thread );\n\t\tsetActionState( false );\n\t\tsetShowConfirmDialog( false );\n\t};\n\n\tconst handleCancel = () => {\n\t\tsetActionState( false );\n\t\tsetShowConfirmDialog( false );\n\t};\n\n\tconst actions = [\n\t\tonEdit &&\n\t\t\tstatus !== 'approved' && {\n\t\t\t\tid: 'edit',\n\t\t\t\ttitle: _x( 'Edit', 'Edit comment' ),\n\t\t\t\tonClick: () => {\n\t\t\t\t\tsetActionState( 'edit' );\n\t\t\t\t},\n\t\t\t},\n\t\tonDelete && {\n\t\t\tid: 'delete',\n\t\t\ttitle: _x( 'Delete', 'Delete comment' ),\n\t\t\tonClick: () => {\n\t\t\t\tsetActionState( 'delete' );\n\t\t\t\tsetShowConfirmDialog( true );\n\t\t\t},\n\t\t},\n\t\tonEdit &&\n\t\t\tstatus === 'approved' && {\n\t\t\t\tid: 'reopen',\n\t\t\t\ttitle: _x( 'Reopen', 'Reopen comment' ),\n\t\t\t\tonClick: () => {\n\t\t\t\t\tonEdit( { id: thread.id, status: 'hold' } );\n\t\t\t\t},\n\t\t\t},\n\t];\n\n\tconst canResolve = thread?.parent === 0;\n\tconst moreActions = actions.filter( ( item ) => item?.onClick );\n\n\treturn (\n\t\t<>\n\t\t\t<HStack alignment=\"left\" spacing=\"3\" justify=\"flex-start\">\n\t\t\t\t<CommentAuthorInfo\n\t\t\t\t\tavatar={ thread?.author_avatar_urls?.[ 48 ] }\n\t\t\t\t\tname={ thread?.author_name }\n\t\t\t\t\tdate={ thread?.date }\n\t\t\t\t\tuserId={ thread?.author }\n\t\t\t\t/>\n\t\t\t\t<FlexItem\n\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__comment-status\"\n\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t// Prevent the thread from being selected.\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<HStack spacing=\"0\">\n\t\t\t\t\t\t{ canResolve && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t\t'Resolve',\n\t\t\t\t\t\t\t\t\t'Mark comment as resolved'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ticon={ published }\n\t\t\t\t\t\t\t\tdisabled={ status === 'approved' }\n\t\t\t\t\t\t\t\taccessibleWhenDisabled={ status === 'approved' }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonEdit( {\n\t\t\t\t\t\t\t\t\t\tid: thread.id,\n\t\t\t\t\t\t\t\t\t\tstatus: 'approved',\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\tdisabled={ ! moreActions.length }\n\t\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t{ moreActions.map( ( action ) => (\n\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => action.onClick() }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ action.title }\n\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t</Menu>\n\t\t\t\t\t</HStack>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t\t{ 'edit' === actionState ? (\n\t\t\t\t<CommentForm\n\t\t\t\t\tonSubmit={ ( value ) => {\n\t\t\t\t\t\tonEdit( {\n\t\t\t\t\t\t\tid: thread.id,\n\t\t\t\t\t\t\tcontent: value,\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tsetActionState( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonCancel={ () => handleCancel() }\n\t\t\t\t\tthread={ thread }\n\t\t\t\t\tsubmitButtonText={ _x( 'Update', 'verb' ) }\n\t\t\t\t\tlabelText={ sprintf(\n\t\t\t\t\t\t// translators: %1$s: comment identifier, %2$s: author name.\n\t\t\t\t\t\t__( 'Edit Comment %1$s by %2$s' ),\n\t\t\t\t\t\tthread.id,\n\t\t\t\t\t\tthread?.author_name || 'Unknown'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<RawHTML className=\"editor-collab-sidebar-panel__user-comment\">\n\t\t\t\t\t{ thread?.content?.rendered }\n\t\t\t\t</RawHTML>\n\t\t\t) }\n\t\t\t{ 'delete' === actionState && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen={ showConfirmDialog }\n\t\t\t\t\tonConfirm={ handleConfirmDelete }\n\t\t\t\t\tonCancel={ handleCancel }\n\t\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\t>\n\t\t\t\t\t{\n\t\t\t\t\t\t// translators: message displayed when confirming an action\n\t\t\t\t\t\t__( 'Are you sure you want to delete this comment?' )\n\t\t\t\t\t}\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</>\n\t);\n};\n"],"mappings":"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","ignoreList":[]}
|