@wordpress/editor 14.31.1-next.233ccab9b.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 +4 -2
- package/build/components/collab-sidebar/add-comment.js.map +1 -1
- package/build/components/collab-sidebar/comments.js +147 -89
- package/build/components/collab-sidebar/comments.js.map +1 -1
- package/build/components/collab-sidebar/hooks.js +1 -1
- package/build/components/collab-sidebar/hooks.js.map +1 -1
- package/build/components/collab-sidebar/index.js +47 -45
- package/build/components/collab-sidebar/index.js.map +1 -1
- package/build/components/collab-sidebar/utils.js +47 -0
- package/build/components/collab-sidebar/utils.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 +4 -2
- package/build-module/components/collab-sidebar/add-comment.js.map +1 -1
- package/build-module/components/collab-sidebar/comments.js +149 -91
- package/build-module/components/collab-sidebar/comments.js.map +1 -1
- package/build-module/components/collab-sidebar/hooks.js +1 -1
- package/build-module/components/collab-sidebar/hooks.js.map +1 -1
- package/build-module/components/collab-sidebar/index.js +45 -43
- package/build-module/components/collab-sidebar/index.js.map +1 -1
- package/build-module/components/collab-sidebar/utils.js +46 -0
- package/build-module/components/collab-sidebar/utils.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 +7 -10
- package/build-style/style.css +7 -10
- package/build-types/components/collab-sidebar/add-comment.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/comments.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/hooks.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/utils.d.ts +8 -0
- package/build-types/components/collab-sidebar/utils.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 +4 -2
- package/src/components/collab-sidebar/comments.js +113 -33
- package/src/components/collab-sidebar/hooks.js +2 -1
- package/src/components/collab-sidebar/index.js +47 -46
- package/src/components/collab-sidebar/style.scss +9 -10
- package/src/components/collab-sidebar/utils.js +54 -0
- 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
package/CHANGELOG.md
CHANGED
|
@@ -46,7 +46,7 @@ function AddComment({
|
|
|
46
46
|
const selectedBlock = getSelectedBlock();
|
|
47
47
|
return {
|
|
48
48
|
clientId: selectedBlock?.clientId,
|
|
49
|
-
blockCommentId: selectedBlock?.attributes?.
|
|
49
|
+
blockCommentId: selectedBlock?.attributes?.metadata?.commentId,
|
|
50
50
|
isEmptyDefaultBlock: selectedBlock ? (0, _blocks.isUnmodifiedDefaultBlock)(selectedBlock) : false
|
|
51
51
|
};
|
|
52
52
|
});
|
|
@@ -55,8 +55,10 @@ function AddComment({
|
|
|
55
55
|
}
|
|
56
56
|
const commentLabel = (0, _i18n.__)('New Comment');
|
|
57
57
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
58
|
+
className: "editor-collab-sidebar-panel__thread is-selected",
|
|
58
59
|
spacing: "3",
|
|
59
|
-
|
|
60
|
+
tabIndex: 0,
|
|
61
|
+
role: "listitem",
|
|
60
62
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHStack, {
|
|
61
63
|
alignment: "left",
|
|
62
64
|
spacing: "3",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_data","_components","_blockEditor","_blocks","_commentAuthorInfo","_interopRequireDefault","_commentForm","_jsxRuntime","AddComment","onSubmit","showCommentBoard","setShowCommentBoard","clientId","blockCommentId","isEmptyDefaultBlock","useSelect","select","getSelectedBlock","blockEditorStore","selectedBlock","attributes","isUnmodifiedDefaultBlock","undefined","commentLabel","__","jsxs","__experimentalVStack","spacing","
|
|
1
|
+
{"version":3,"names":["_i18n","require","_data","_components","_blockEditor","_blocks","_commentAuthorInfo","_interopRequireDefault","_commentForm","_jsxRuntime","AddComment","onSubmit","showCommentBoard","setShowCommentBoard","clientId","blockCommentId","isEmptyDefaultBlock","useSelect","select","getSelectedBlock","blockEditorStore","selectedBlock","attributes","metadata","commentId","isUnmodifiedDefaultBlock","undefined","commentLabel","__","jsxs","__experimentalVStack","className","spacing","tabIndex","role","children","jsx","__experimentalHStack","alignment","default","inputComment","content","onCancel","submitButtonText","_x","labelText"],"sources":["@wordpress/editor/src/components/collab-sidebar/add-comment.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport CommentAuthorInfo from './comment-author-info';\nimport CommentForm from './comment-form';\n\n/**\n * Renders the UI for adding a comment in the Gutenberg editor's collaboration sidebar.\n *\n * @param {Object} props - The component props.\n * @param {Function} props.onSubmit - A callback function to be called when the user submits a comment.\n * @param {boolean} props.showCommentBoard - The function to edit the comment.\n * @param {Function} props.setShowCommentBoard - The function to delete the comment.\n * @return {React.ReactNode} The rendered comment input UI.\n */\nexport function AddComment( {\n\tonSubmit,\n\tshowCommentBoard,\n\tsetShowCommentBoard,\n} ) {\n\tconst { clientId, blockCommentId, isEmptyDefaultBlock } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSelectedBlock } = select( blockEditorStore );\n\t\t\tconst selectedBlock = getSelectedBlock();\n\t\t\treturn {\n\t\t\t\tclientId: selectedBlock?.clientId,\n\t\t\t\tblockCommentId: selectedBlock?.attributes?.metadata?.commentId,\n\t\t\t\tisEmptyDefaultBlock: selectedBlock\n\t\t\t\t\t? isUnmodifiedDefaultBlock( selectedBlock )\n\t\t\t\t\t: false,\n\t\t\t};\n\t\t}\n\t);\n\n\tif (\n\t\t! showCommentBoard ||\n\t\t! clientId ||\n\t\tundefined !== blockCommentId ||\n\t\tisEmptyDefaultBlock\n\t) {\n\t\treturn null;\n\t}\n\n\tconst commentLabel = __( 'New Comment' );\n\n\treturn (\n\t\t<VStack\n\t\t\tclassName=\"editor-collab-sidebar-panel__thread is-selected\"\n\t\t\tspacing=\"3\"\n\t\t\ttabIndex={ 0 }\n\t\t\trole=\"listitem\"\n\t\t>\n\t\t\t<HStack alignment=\"left\" spacing=\"3\">\n\t\t\t\t<CommentAuthorInfo />\n\t\t\t</HStack>\n\t\t\t<CommentForm\n\t\t\t\tonSubmit={ ( inputComment ) => {\n\t\t\t\t\tonSubmit( { content: inputComment } );\n\t\t\t\t} }\n\t\t\t\tonCancel={ () => {\n\t\t\t\t\tsetShowCommentBoard( false );\n\t\t\t\t} }\n\t\t\t\tsubmitButtonText={ _x( 'Comment', 'Add comment button' ) }\n\t\t\t\tlabelText={ commentLabel }\n\t\t\t/>\n\t\t</VStack>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAIA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAKA,IAAAK,kBAAA,GAAAC,sBAAA,CAAAN,OAAA;AACA,IAAAO,YAAA,GAAAD,sBAAA,CAAAN,OAAA;AAAyC,IAAAQ,WAAA,GAAAR,OAAA;AAhBzC;AACA;AACA;;AAUA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASS,UAAUA,CAAE;EAC3BC,QAAQ;EACRC,gBAAgB;EAChBC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC,QAAQ;IAAEC,cAAc;IAAEC;EAAoB,CAAC,GAAG,IAAAC,eAAS,EAChEC,MAAM,IAAM;IACb,MAAM;MAAEC;IAAiB,CAAC,GAAGD,MAAM,CAAEE,kBAAiB,CAAC;IACvD,MAAMC,aAAa,GAAGF,gBAAgB,CAAC,CAAC;IACxC,OAAO;MACNL,QAAQ,EAAEO,aAAa,EAAEP,QAAQ;MACjCC,cAAc,EAAEM,aAAa,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,SAAS;MAC9DR,mBAAmB,EAAEK,aAAa,GAC/B,IAAAI,gCAAwB,EAAEJ,aAAc,CAAC,GACzC;IACJ,CAAC;EACF,CACD,CAAC;EAED,IACC,CAAET,gBAAgB,IAClB,CAAEE,QAAQ,IACVY,SAAS,KAAKX,cAAc,IAC5BC,mBAAmB,EAClB;IACD,OAAO,IAAI;EACZ;EAEA,MAAMW,YAAY,GAAG,IAAAC,QAAE,EAAE,aAAc,CAAC;EAExC,oBACC,IAAAnB,WAAA,CAAAoB,IAAA,EAAC1B,WAAA,CAAA2B,oBAAM;IACNC,SAAS,EAAC,iDAAiD;IAC3DC,OAAO,EAAC,GAAG;IACXC,QAAQ,EAAG,CAAG;IACdC,IAAI,EAAC,UAAU;IAAAC,QAAA,gBAEf,IAAA1B,WAAA,CAAA2B,GAAA,EAACjC,WAAA,CAAAkC,oBAAM;MAACC,SAAS,EAAC,MAAM;MAACN,OAAO,EAAC,GAAG;MAAAG,QAAA,eACnC,IAAA1B,WAAA,CAAA2B,GAAA,EAAC9B,kBAAA,CAAAiC,OAAiB,IAAE;IAAC,CACd,CAAC,eACT,IAAA9B,WAAA,CAAA2B,GAAA,EAAC5B,YAAA,CAAA+B,OAAW;MACX5B,QAAQ,EAAK6B,YAAY,IAAM;QAC9B7B,QAAQ,CAAE;UAAE8B,OAAO,EAAED;QAAa,CAAE,CAAC;MACtC,CAAG;MACHE,QAAQ,EAAGA,CAAA,KAAM;QAChB7B,mBAAmB,CAAE,KAAM,CAAC;MAC7B,CAAG;MACH8B,gBAAgB,EAAG,IAAAC,QAAE,EAAE,SAAS,EAAE,oBAAqB,CAAG;MAC1DC,SAAS,EAAGlB;IAAc,CAC1B,CAAC;EAAA,CACK,CAAC;AAEX","ignoreList":[]}
|
|
@@ -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
|
|
@@ -53,19 +56,15 @@ function Comments({
|
|
|
53
56
|
onCommentDelete,
|
|
54
57
|
setShowCommentBoard
|
|
55
58
|
}) {
|
|
56
|
-
const {
|
|
57
|
-
blockCommentId
|
|
58
|
-
} = (0, _data.useSelect)(select => {
|
|
59
|
+
const blockCommentId = (0, _data.useSelect)(select => {
|
|
59
60
|
const {
|
|
60
61
|
getBlockAttributes,
|
|
61
62
|
getSelectedBlockClientId
|
|
62
63
|
} = select(_blockEditor.store);
|
|
63
64
|
const clientId = getSelectedBlockClientId();
|
|
64
|
-
return
|
|
65
|
-
blockCommentId: clientId ? getBlockAttributes(clientId)?.blockCommentId : null
|
|
66
|
-
};
|
|
65
|
+
return clientId ? getBlockAttributes(clientId)?.metadata?.commentId : null;
|
|
67
66
|
}, []);
|
|
68
|
-
const [
|
|
67
|
+
const [selectedThread = blockCommentId, setSelectedThread] = (0, _element.useState)();
|
|
69
68
|
const hasThreads = Array.isArray(threads) && threads.length > 0;
|
|
70
69
|
if (!hasThreads) {
|
|
71
70
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
@@ -83,8 +82,8 @@ function Comments({
|
|
|
83
82
|
onAddReply: onAddReply,
|
|
84
83
|
onCommentDelete: onCommentDelete,
|
|
85
84
|
onEditComment: onEditComment,
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
isSelected: selectedThread === thread.id,
|
|
86
|
+
setSelectedThread: setSelectedThread,
|
|
88
87
|
setShowCommentBoard: setShowCommentBoard
|
|
89
88
|
}, thread.id));
|
|
90
89
|
}
|
|
@@ -93,107 +92,167 @@ function Thread({
|
|
|
93
92
|
onEditComment,
|
|
94
93
|
onAddReply,
|
|
95
94
|
onCommentDelete,
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
isSelected,
|
|
96
|
+
setSelectedThread,
|
|
98
97
|
setShowCommentBoard
|
|
99
98
|
}) {
|
|
99
|
+
const threadRef = (0, _element.useRef)(null);
|
|
100
100
|
const {
|
|
101
|
-
|
|
101
|
+
toggleBlockHighlight
|
|
102
102
|
} = (0, _data.useDispatch)(_blockEditor.store);
|
|
103
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
|
+
};
|
|
104
111
|
const handleCommentSelect = ({
|
|
105
112
|
id,
|
|
106
113
|
blockClientId
|
|
107
114
|
}) => {
|
|
108
115
|
setShowCommentBoard(false);
|
|
109
|
-
|
|
116
|
+
setSelectedThread(id);
|
|
110
117
|
if (blockClientId && relatedBlockElement) {
|
|
111
118
|
relatedBlockElement.scrollIntoView({
|
|
112
119
|
behavior: 'instant',
|
|
113
120
|
block: 'center'
|
|
114
121
|
});
|
|
115
|
-
flashBlock(blockClientId);
|
|
116
122
|
}
|
|
117
123
|
};
|
|
118
|
-
const
|
|
119
|
-
|
|
124
|
+
const focusThread = () => {
|
|
125
|
+
threadRef.current?.focus();
|
|
126
|
+
};
|
|
127
|
+
const unselectThread = () => {
|
|
128
|
+
setSelectedThread(null);
|
|
120
129
|
setShowCommentBoard(false);
|
|
121
130
|
};
|
|
122
131
|
const replies = thread?.reply;
|
|
123
132
|
const lastReply = !!replies.length ? replies[replies.length - 1] : undefined;
|
|
124
133
|
const restReplies = !!replies.length ? replies.slice(0, -1) : [];
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
id:
|
|
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}`,
|
|
140
149
|
spacing: "2",
|
|
141
|
-
|
|
142
|
-
|
|
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
|
+
className: "editor-collab-sidebar-panel__child-thread",
|
|
196
|
+
id: reply.id,
|
|
197
|
+
spacing: "2",
|
|
198
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(CommentBoard, {
|
|
199
|
+
thread: reply,
|
|
200
|
+
onEdit: 'approved' !== thread.status ? onEditComment : undefined,
|
|
201
|
+
onDelete: 'approved' !== thread.status ? onCommentDelete : undefined
|
|
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,
|
|
143
216
|
onEdit: 'approved' !== thread.status ? onEditComment : undefined,
|
|
144
217
|
onDelete: 'approved' !== thread.status ? onCommentDelete : undefined
|
|
145
|
-
})
|
|
146
|
-
|
|
147
|
-
className: "editor-collab-sidebar-panel__more-reply-separator",
|
|
148
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
149
|
-
size: "compact",
|
|
150
|
-
variant: "tertiary",
|
|
151
|
-
className: "editor-collab-sidebar-panel__more-reply-button",
|
|
152
|
-
onClick: () => setFocusThread(thread.id),
|
|
153
|
-
children: (0, _i18n.sprintf)(
|
|
154
|
-
// translators: %s: number of replies.
|
|
155
|
-
(0, _i18n._n)('%s more reply', '%s more replies', restReplies.length), restReplies.length)
|
|
156
|
-
})
|
|
157
|
-
}), !isFocused && lastReply && /*#__PURE__*/(0, _jsxRuntime.jsx)(CommentBoard, {
|
|
158
|
-
thread: lastReply,
|
|
159
|
-
onEdit: 'approved' !== thread.status ? onEditComment : undefined,
|
|
160
|
-
onDelete: 'approved' !== thread.status ? onCommentDelete : undefined
|
|
161
|
-
}), isFocused && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
162
|
-
className: "editor-collab-sidebar-panel__child-thread",
|
|
163
|
-
spacing: "2",
|
|
164
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalHStack, {
|
|
165
|
-
alignment: "left",
|
|
166
|
-
spacing: "3",
|
|
167
|
-
justify: "flex-start",
|
|
168
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_commentAuthorInfo.default, {})
|
|
169
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
218
|
+
}), isSelected && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
219
|
+
className: "editor-collab-sidebar-panel__child-thread",
|
|
170
220
|
spacing: "2",
|
|
171
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
|
177
239
|
});
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
parent
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
// translators: %1$s: comment identifier, %2$s: author name
|
|
192
|
-
(0, _i18n.__)('Reply to Comment %1$s by %2$s'), thread.id, thread?.author_name || 'Unknown')
|
|
193
|
-
})
|
|
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
|
+
})]
|
|
194
253
|
})]
|
|
195
|
-
})
|
|
196
|
-
|
|
254
|
+
})
|
|
255
|
+
);
|
|
197
256
|
}
|
|
198
257
|
const CommentBoard = ({
|
|
199
258
|
thread,
|
|
@@ -247,11 +306,13 @@ const CommentBoard = ({
|
|
|
247
306
|
name: thread?.author_name,
|
|
248
307
|
date: thread?.date,
|
|
249
308
|
userId: thread?.author
|
|
250
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
309
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FlexItem, {
|
|
251
310
|
className: "editor-collab-sidebar-panel__comment-status",
|
|
311
|
+
onClick: event => {
|
|
312
|
+
// Prevent the thread from being selected.
|
|
313
|
+
event.stopPropagation();
|
|
314
|
+
},
|
|
252
315
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
|
|
253
|
-
alignment: "right",
|
|
254
|
-
justify: "flex-end",
|
|
255
316
|
spacing: "0",
|
|
256
317
|
children: [canResolve && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
257
318
|
label: (0, _i18n._x)('Resolve', 'Mark comment as resolved'),
|
|
@@ -277,10 +338,7 @@ const CommentBoard = ({
|
|
|
277
338
|
})
|
|
278
339
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(Menu.Popover, {
|
|
279
340
|
children: moreActions.map(action => /*#__PURE__*/(0, _jsxRuntime.jsx)(Menu.Item, {
|
|
280
|
-
onClick:
|
|
281
|
-
event.stopPropagation();
|
|
282
|
-
action.onClick();
|
|
283
|
-
},
|
|
341
|
+
onClick: () => action.onClick(),
|
|
284
342
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Menu.ItemLabel, {
|
|
285
343
|
children: action.title
|
|
286
344
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_components","_icons","_i18n","_data","_blockEditor","_lockUnlock","_commentAuthorInfo","_commentForm","_jsxRuntime","useBlockElement","unlock","blockEditorPrivateApis","Menu","componentsPrivateApis","Comments","threads","onEditComment","onAddReply","onCommentDelete","setShowCommentBoard","blockCommentId","useSelect","select","getBlockAttributes","getSelectedBlockClientId","blockEditorStore","clientId","focusThread","setFocusThread","useState","hasThreads","Array","isArray","length","jsx","__experimentalVStack","alignment","className","justify","spacing","children","__","map","thread","Thread","isFocused","id","flashBlock","useDispatch","relatedBlockElement","blockClientId","handleCommentSelect","scrollIntoView","behavior","block","clearThreadFocus","replies","reply","lastReply","undefined","restReplies","slice","jsxs","clsx","onClick","CommentBoard","onEdit","onDelete","status","__experimentalHStack","Button","size","variant","sprintf","_n","default","onSubmit","inputComment","content","parent","onCancel","event","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","label","icon","published","disabled","accessibleWhenDisabled","placement","TriggerButton","render","moreVertical","Popover","action","Item","ItemLabel","value","RawHTML","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 } from '@wordpress/element';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tButton,\n\tprivateApis as componentsPrivateApis,\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 );\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 {\n\t\t\tblockCommentId: clientId\n\t\t\t\t? getBlockAttributes( clientId )?.blockCommentId\n\t\t\t\t: null,\n\t\t};\n\t}, [] );\n\tconst [ focusThread = blockCommentId, setFocusThread ] = 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\tisFocused={ focusThread === thread.id }\n\t\t\tsetFocusThread={ setFocusThread }\n\t\t\tsetShowCommentBoard={ setShowCommentBoard }\n\t\t/>\n\t) );\n}\n\nfunction Thread( {\n\tthread,\n\tonEditComment,\n\tonAddReply,\n\tonCommentDelete,\n\tisFocused,\n\tsetFocusThread,\n\tsetShowCommentBoard,\n} ) {\n\tconst { flashBlock } = useDispatch( blockEditorStore );\n\tconst relatedBlockElement = useBlockElement( thread.blockClientId );\n\n\tconst handleCommentSelect = ( { id, blockClientId } ) => {\n\t\tsetShowCommentBoard( false );\n\t\tsetFocusThread( 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\tflashBlock( blockClientId );\n\t\t}\n\t};\n\n\tconst clearThreadFocus = () => {\n\t\tsetFocusThread( 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\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=\"2\"\n\t\t\tonClick={ () => handleCommentSelect( thread ) }\n\t\t>\n\t\t\t<CommentBoard\n\t\t\t\tthread={ thread }\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{ isFocused &&\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{ ! isFocused && 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={ () => setFocusThread( 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{ ! isFocused && 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{ 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 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\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\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<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{ 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={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\taction.onClick();\n\t\t\t\t\t\t\t\t\t\t} }\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</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( {\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":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAQA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AAQA,IAAAO,WAAA,GAAAP,OAAA;AACA,IAAAQ,kBAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,YAAA,GAAAV,sBAAA,CAAAC,OAAA;AAAyC,IAAAU,WAAA,GAAAV,OAAA;AA9BzC;AACA;AACA;;AAGA;AACA;AACA;;AAkBA;AACA;AACA;;AAKA,MAAM;EAAEW;AAAgB,CAAC,GAAG,IAAAC,kBAAM,EAAEC,wBAAuB,CAAC;AAC5D,MAAM;EAAEC;AAAK,CAAC,GAAG,IAAAF,kBAAM,EAAEG,uBAAsB,CAAC;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,QAAQA,CAAE;EACzBC,OAAO;EACPC,aAAa;EACbC,UAAU;EACVC,eAAe;EACfC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAe,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IACnD,MAAM;MAAEC,kBAAkB;MAAEC;IAAyB,CAAC,GACrDF,MAAM,CAAEG,kBAAiB,CAAC;IAC3B,MAAMC,QAAQ,GAAGF,wBAAwB,CAAC,CAAC;IAC3C,OAAO;MACNJ,cAAc,EAAEM,QAAQ,GACrBH,kBAAkB,CAAEG,QAAS,CAAC,EAAEN,cAAc,GAC9C;IACJ,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAM,CAAEO,WAAW,GAAGP,cAAc,EAAEQ,cAAc,CAAE,GAAG,IAAAC,iBAAQ,EAAC,CAAC;EAEnE,MAAMC,UAAU,GAAGC,KAAK,CAACC,OAAO,CAAEjB,OAAQ,CAAC,IAAIA,OAAO,CAACkB,MAAM,GAAG,CAAC;EACjE,IAAK,CAAEH,UAAU,EAAG;IACnB,oBACC,IAAAtB,WAAA,CAAA0B,GAAA,EAAClC,WAAA,CAAAmC,oBAAM;MACNC,SAAS,EAAC,MAAM;MAChBC,SAAS,EAAC,qCAAqC;MAC/CC,OAAO,EAAC,YAAY;MACpBC,OAAO,EAAC,GAAG;MAAAC,QAAA;MAGV;MACA,IAAAC,QAAE,EAAE,uBAAwB;IAAC,CAEvB,CAAC;EAEX;EAEA,OAAO1B,OAAO,CAAC2B,GAAG,CAAIC,MAAM,iBAC3B,IAAAnC,WAAA,CAAA0B,GAAA,EAACU,MAAM;IAEND,MAAM,EAAGA,MAAQ;IACjB1B,UAAU,EAAGA,UAAY;IACzBC,eAAe,EAAGA,eAAiB;IACnCF,aAAa,EAAGA,aAAe;IAC/B6B,SAAS,EAAGlB,WAAW,KAAKgB,MAAM,CAACG,EAAI;IACvClB,cAAc,EAAGA,cAAgB;IACjCT,mBAAmB,EAAGA;EAAqB,GAPrCwB,MAAM,CAACG,EAQb,CACA,CAAC;AACJ;AAEA,SAASF,MAAMA,CAAE;EAChBD,MAAM;EACN3B,aAAa;EACbC,UAAU;EACVC,eAAe;EACf2B,SAAS;EACTjB,cAAc;EACdT;AACD,CAAC,EAAG;EACH,MAAM;IAAE4B;EAAW,CAAC,GAAG,IAAAC,iBAAW,EAAEvB,kBAAiB,CAAC;EACtD,MAAMwB,mBAAmB,GAAGxC,eAAe,CAAEkC,MAAM,CAACO,aAAc,CAAC;EAEnE,MAAMC,mBAAmB,GAAGA,CAAE;IAAEL,EAAE;IAAEI;EAAc,CAAC,KAAM;IACxD/B,mBAAmB,CAAE,KAAM,CAAC;IAC5BS,cAAc,CAAEkB,EAAG,CAAC;IACpB,IAAKI,aAAa,IAAID,mBAAmB,EAAG;MAC3CA,mBAAmB,CAACG,cAAc,CAAE;QACnCC,QAAQ,EAAE,SAAS;QACnBC,KAAK,EAAE;MACR,CAAE,CAAC;MACHP,UAAU,CAAEG,aAAc,CAAC;IAC5B;EACD,CAAC;EAED,MAAMK,gBAAgB,GAAGA,CAAA,KAAM;IAC9B3B,cAAc,CAAE,IAAK,CAAC;IACtBT,mBAAmB,CAAE,KAAM,CAAC;EAC7B,CAAC;EAED,MAAMqC,OAAO,GAAGb,MAAM,EAAEc,KAAK;EAC7B,MAAMC,SAAS,GAAG,CAAC,CAAEF,OAAO,CAACvB,MAAM,GAChCuB,OAAO,CAAEA,OAAO,CAACvB,MAAM,GAAG,CAAC,CAAE,GAC7B0B,SAAS;EACZ,MAAMC,WAAW,GAAG,CAAC,CAAEJ,OAAO,CAACvB,MAAM,GAAGuB,OAAO,CAACK,KAAK,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC,GAAG,EAAE;EAEnE,oBACC,IAAArD,WAAA,CAAAsD,IAAA,EAAC9D,WAAA,CAAAmC,oBAAM;IACNE,SAAS,EAAG,IAAA0B,aAAI,EAAE,qCAAqC,EAAE;MACxD,2CAA2C,EAAElB;IAC9C,CAAE,CAAG;IACLC,EAAE,EAAGH,MAAM,CAACG,EAAI;IAChBP,OAAO,EAAC,GAAG;IACXyB,OAAO,EAAGA,CAAA,KAAMb,mBAAmB,CAAER,MAAO,CAAG;IAAAH,QAAA,gBAE/C,IAAAhC,WAAA,CAAA0B,GAAA,EAAC+B,YAAY;MACZtB,MAAM,EAAGA,MAAQ;MACjBuB,MAAM,EAAGlD,aAAe;MACxBmD,QAAQ,EAAGjD,eAAiB;MAC5BkD,MAAM,EAAGzB,MAAM,CAACyB;IAAQ,CACxB,CAAC,EACAvB,SAAS,IACVW,OAAO,CAACd,GAAG,CAAIe,KAAK,iBACnB,IAAAjD,WAAA,CAAA0B,GAAA,EAAClC,WAAA,CAAAmC,oBAAM;MAENE,SAAS,EAAC,2CAA2C;MACrDS,EAAE,EAAGW,KAAK,CAACX,EAAI;MACfP,OAAO,EAAC,GAAG;MAAAC,QAAA,eAEX,IAAAhC,WAAA,CAAA0B,GAAA,EAAC+B,YAAY;QACZtB,MAAM,EAAGc,KAAO;QAChBS,MAAM,EACL,UAAU,KAAKvB,MAAM,CAACyB,MAAM,GACzBpD,aAAa,GACb2C,SACH;QACDQ,QAAQ,EACP,UAAU,KAAKxB,MAAM,CAACyB,MAAM,GACzBlD,eAAe,GACfyC;MACH,CACD;IAAC,GAjBIF,KAAK,CAACX,EAkBL,CACP,CAAC,EACF,CAAED,SAAS,IAAIe,WAAW,CAAC3B,MAAM,GAAG,CAAC,iBACtC,IAAAzB,WAAA,CAAA0B,GAAA,EAAClC,WAAA,CAAAqE,oBAAM;MAAChC,SAAS,EAAC,mDAAmD;MAAAG,QAAA,eACpE,IAAAhC,WAAA,CAAA0B,GAAA,EAAClC,WAAA,CAAAsE,MAAM;QACNC,IAAI,EAAC,SAAS;QACdC,OAAO,EAAC,UAAU;QAClBnC,SAAS,EAAC,gDAAgD;QAC1D2B,OAAO,EAAGA,CAAA,KAAMpC,cAAc,CAAEe,MAAM,CAACG,EAAG,CAAG;QAAAN,QAAA,EAE3C,IAAAiC,aAAO;QACR;QACA,IAAAC,QAAE,EACD,eAAe,EACf,iBAAiB,EACjBd,WAAW,CAAC3B,MACb,CAAC,EACD2B,WAAW,CAAC3B,MACb;MAAC,CACM;IAAC,CACF,CACR,EACC,CAAEY,SAAS,IAAIa,SAAS,iBACzB,IAAAlD,WAAA,CAAA0B,GAAA,EAAC+B,YAAY;MACZtB,MAAM,EAAGe,SAAW;MACpBQ,MAAM,EACL,UAAU,KAAKvB,MAAM,CAACyB,MAAM,GAAGpD,aAAa,GAAG2C,SAC/C;MACDQ,QAAQ,EACP,UAAU,KAAKxB,MAAM,CAACyB,MAAM,GACzBlD,eAAe,GACfyC;IACH,CACD,CACD,EACCd,SAAS,iBACV,IAAArC,WAAA,CAAAsD,IAAA,EAAC9D,WAAA,CAAAmC,oBAAM;MACNE,SAAS,EAAC,2CAA2C;MACrDE,OAAO,EAAC,GAAG;MAAAC,QAAA,gBAEX,IAAAhC,WAAA,CAAA0B,GAAA,EAAClC,WAAA,CAAAqE,oBAAM;QAACjC,SAAS,EAAC,MAAM;QAACG,OAAO,EAAC,GAAG;QAACD,OAAO,EAAC,YAAY;QAAAE,QAAA,eACxD,IAAAhC,WAAA,CAAA0B,GAAA,EAAC5B,kBAAA,CAAAqE,OAAiB,IAAE;MAAC,CACd,CAAC,eACT,IAAAnE,WAAA,CAAA0B,GAAA,EAAClC,WAAA,CAAAmC,oBAAM;QAACI,OAAO,EAAC,GAAG;QAAAC,QAAA,eAClB,IAAAhC,WAAA,CAAA0B,GAAA,EAAC3B,YAAA,CAAAoE,OAAW;UACXC,QAAQ,EAAKC,YAAY,IAAM;YAC9B,IAAK,UAAU,KAAKlC,MAAM,CAACyB,MAAM,EAAG;cACnCpD,aAAa,CAAE;gBACd8B,EAAE,EAAEH,MAAM,CAACG,EAAE;gBACbsB,MAAM,EAAE;cACT,CAAE,CAAC;YACJ;YACAnD,UAAU,CAAE;cACX6D,OAAO,EAAED,YAAY;cACrBE,MAAM,EAAEpC,MAAM,CAACG;YAChB,CAAE,CAAC;UACJ,CAAG;UACHkC,QAAQ,EAAKC,KAAK,IAAM;YACvBA,KAAK,CAACC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzB3B,gBAAgB,CAAC,CAAC;UACnB,CAAG;UACH4B,gBAAgB,EACf,UAAU,KAAKxC,MAAM,CAACyB,MAAM,GACzB,IAAA3B,QAAE,EAAE,gBAAiB,CAAC,GACtB,IAAAA,QAAE,EAAE,OAAQ,CACf;UACD2C,IAAI,EAAG,UAAU,KAAKzC,MAAM,CAACyB,MAAM,GAAG,CAAC,GAAG,CAAG;UAC7CiB,SAAS,EAAG,IAAAZ,aAAO;UAClB;UACA,IAAAhC,QAAE,EAAE,+BAAgC,CAAC,EACrCE,MAAM,CAACG,EAAE,EACTH,MAAM,EAAE2C,WAAW,IAAI,SACxB;QAAG,CACH;MAAC,CACK,CAAC;IAAA,CACF,CACR;EAAA,CACM,CAAC;AAEX;AAEA,MAAMrB,YAAY,GAAGA,CAAE;EAAEtB,MAAM;EAAEuB,MAAM;EAAEC,QAAQ;EAAEC;AAAO,CAAC,KAAM;EAChE,MAAM,CAAEmB,WAAW,EAAEC,cAAc,CAAE,GAAG,IAAA3D,iBAAQ,EAAE,KAAM,CAAC;EACzD,MAAM,CAAE4D,iBAAiB,EAAEC,oBAAoB,CAAE,GAAG,IAAA7D,iBAAQ,EAAE,KAAM,CAAC;EAErE,MAAM8D,mBAAmB,GAAGA,CAAA,KAAM;IACjCxB,QAAQ,CAAExB,MAAO,CAAC;IAClB6C,cAAc,CAAE,KAAM,CAAC;IACvBE,oBAAoB,CAAE,KAAM,CAAC;EAC9B,CAAC;EAED,MAAME,YAAY,GAAGA,CAAA,KAAM;IAC1BJ,cAAc,CAAE,KAAM,CAAC;IACvBE,oBAAoB,CAAE,KAAM,CAAC;EAC9B,CAAC;EAED,MAAMG,OAAO,GAAG,CACf3B,MAAM,IACLE,MAAM,KAAK,UAAU,IAAI;IACxBtB,EAAE,EAAE,MAAM;IACVgD,KAAK,EAAE,IAAAC,QAAE,EAAE,MAAM,EAAE,cAAe,CAAC;IACnC/B,OAAO,EAAEA,CAAA,KAAM;MACdwB,cAAc,CAAE,MAAO,CAAC;IACzB;EACD,CAAC,EACFrB,QAAQ,IAAI;IACXrB,EAAE,EAAE,QAAQ;IACZgD,KAAK,EAAE,IAAAC,QAAE,EAAE,QAAQ,EAAE,gBAAiB,CAAC;IACvC/B,OAAO,EAAEA,CAAA,KAAM;MACdwB,cAAc,CAAE,QAAS,CAAC;MAC1BE,oBAAoB,CAAE,IAAK,CAAC;IAC7B;EACD,CAAC,EACDxB,MAAM,IACLE,MAAM,KAAK,UAAU,IAAI;IACxBtB,EAAE,EAAE,QAAQ;IACZgD,KAAK,EAAE,IAAAC,QAAE,EAAE,QAAQ,EAAE,gBAAiB,CAAC;IACvC/B,OAAO,EAAEA,CAAA,KAAM;MACdE,MAAM,CAAE;QAAEpB,EAAE,EAAEH,MAAM,CAACG,EAAE;QAAEsB,MAAM,EAAE;MAAO,CAAE,CAAC;IAC5C;EACD,CAAC,CACF;EAED,MAAM4B,UAAU,GAAGrD,MAAM,EAAEoC,MAAM,KAAK,CAAC;EACvC,MAAMkB,WAAW,GAAGJ,OAAO,CAACK,MAAM,CAAIC,IAAI,IAAMA,IAAI,EAAEnC,OAAQ,CAAC;EAE/D,oBACC,IAAAxD,WAAA,CAAAsD,IAAA,EAAAtD,WAAA,CAAA4F,QAAA;IAAA5D,QAAA,gBACC,IAAAhC,WAAA,CAAAsD,IAAA,EAAC9D,WAAA,CAAAqE,oBAAM;MAACjC,SAAS,EAAC,MAAM;MAACG,OAAO,EAAC,GAAG;MAACD,OAAO,EAAC,YAAY;MAAAE,QAAA,gBACxD,IAAAhC,WAAA,CAAA0B,GAAA,EAAC5B,kBAAA,CAAAqE,OAAiB;QACjB0B,MAAM,EAAG1D,MAAM,EAAE2D,kBAAkB,GAAI,EAAE,CAAI;QAC7CC,IAAI,EAAG5D,MAAM,EAAE2C,WAAa;QAC5BkB,IAAI,EAAG7D,MAAM,EAAE6D,IAAM;QACrBC,MAAM,EAAG9D,MAAM,EAAE+D;MAAQ,CACzB,CAAC,eACF,IAAAlG,WAAA,CAAA0B,GAAA;QAAMG,SAAS,EAAC,6CAA6C;QAAAG,QAAA,eAC5D,IAAAhC,WAAA,CAAAsD,IAAA,EAAC9D,WAAA,CAAAqE,oBAAM;UAACjC,SAAS,EAAC,OAAO;UAACE,OAAO,EAAC,UAAU;UAACC,OAAO,EAAC,GAAG;UAAAC,QAAA,GACrDwD,UAAU,iBACX,IAAAxF,WAAA,CAAA0B,GAAA,EAAClC,WAAA,CAAAsE,MAAM;YACNqC,KAAK,EAAG,IAAAZ,QAAE,EACT,SAAS,EACT,0BACD,CAAG;YACHxB,IAAI,EAAC,OAAO;YACZqC,IAAI,EAAGC,gBAAW;YAClBC,QAAQ,EAAG1C,MAAM,KAAK,UAAY;YAClC2C,sBAAsB,EAAG3C,MAAM,KAAK,UAAY;YAChDJ,OAAO,EAAGA,CAAA,KAAM;cACfE,MAAM,CAAE;gBACPpB,EAAE,EAAEH,MAAM,CAACG,EAAE;gBACbsB,MAAM,EAAE;cACT,CAAE,CAAC;YACJ;UAAG,CACH,CACD,eACD,IAAA5D,WAAA,CAAAsD,IAAA,EAAClD,IAAI;YAACoG,SAAS,EAAC,YAAY;YAAAxE,QAAA,gBAC3B,IAAAhC,WAAA,CAAA0B,GAAA,EAACtB,IAAI,CAACqG,aAAa;cAClBC,MAAM,eACL,IAAA1G,WAAA,CAAA0B,GAAA,EAAClC,WAAA,CAAAsE,MAAM;gBACNC,IAAI,EAAC,OAAO;gBACZqC,IAAI,EAAGO,mBAAc;gBACrBR,KAAK,EAAG,IAAAlE,QAAE,EAAE,SAAU,CAAG;gBACzBqE,QAAQ,EAAG,CAAEb,WAAW,CAAChE,MAAQ;gBACjC8E,sBAAsB;cAAA,CACtB;YACD,CACD,CAAC,eACF,IAAAvG,WAAA,CAAA0B,GAAA,EAACtB,IAAI,CAACwG,OAAO;cAAA5E,QAAA,EACVyD,WAAW,CAACvD,GAAG,CAAI2E,MAAM,iBAC1B,IAAA7G,WAAA,CAAA0B,GAAA,EAACtB,IAAI,CAAC0G,IAAI;gBAETtD,OAAO,EAAKiB,KAAK,IAAM;kBACtBA,KAAK,CAACC,eAAe,CAAC,CAAC;kBACvBmC,MAAM,CAACrD,OAAO,CAAC,CAAC;gBACjB,CAAG;gBAAAxB,QAAA,eAEH,IAAAhC,WAAA,CAAA0B,GAAA,EAACtB,IAAI,CAAC2G,SAAS;kBAAA/E,QAAA,EACZ6E,MAAM,CAACvB;gBAAK,CACC;cAAC,GARXuB,MAAM,CAACvE,EASH,CACV;YAAC,CACU,CAAC;UAAA,CACV,CAAC;QAAA,CACA;MAAC,CACJ,CAAC;IAAA,CACA,CAAC,EACP,MAAM,KAAKyC,WAAW,gBACvB,IAAA/E,WAAA,CAAA0B,GAAA,EAAC3B,YAAA,CAAAoE,OAAW;MACXC,QAAQ,EAAK4C,KAAK,IAAM;QACvBtD,MAAM,CAAE;UACPpB,EAAE,EAAEH,MAAM,CAACG,EAAE;UACbgC,OAAO,EAAE0C;QACV,CAAE,CAAC;QACHhC,cAAc,CAAE,KAAM,CAAC;MACxB,CAAG;MACHR,QAAQ,EAAGA,CAAA,KAAMY,YAAY,CAAC,CAAG;MACjCjD,MAAM,EAAGA,MAAQ;MACjBwC,gBAAgB,EAAG,IAAAY,QAAE,EAAE,QAAQ,EAAE,MAAO,CAAG;MAC3CV,SAAS,EAAG,IAAAZ,aAAO;MAClB;MACA,IAAAhC,QAAE,EAAE,2BAA4B,CAAC,EACjCE,MAAM,CAACG,EAAE,EACTH,MAAM,EAAE2C,WAAW,IAAI,SACxB;IAAG,CACH,CAAC,gBAEF,IAAA9E,WAAA,CAAA0B,GAAA,EAACnC,QAAA,CAAA0H,OAAO;MAACpF,SAAS,EAAC,2CAA2C;MAAAG,QAAA,EAC3DG,MAAM,EAAEmC,OAAO,EAAE4C;IAAQ,CACnB,CACT,EACC,QAAQ,KAAKnC,WAAW,iBACzB,IAAA/E,WAAA,CAAA0B,GAAA,EAAClC,WAAA,CAAA2H,2BAAa;MACbC,MAAM,EAAGnC,iBAAmB;MAC5BoC,SAAS,EAAGlC,mBAAqB;MACjCX,QAAQ,EAAGY,YAAc;MACzBkC,iBAAiB,EAAG,IAAArF,QAAE,EAAE,QAAS,CAAG;MAAAD,QAAA;MAGnC;MACA,IAAAC,QAAE,EAAE,+CAAgD;IAAC,CAExC,CACf;EAAA,CACA,CAAC;AAEL,CAAC","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":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AASA,IAAAG,QAAA,GAAAH,OAAA;AAEA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,IAAA,GAAAP,OAAA;AACA,IAAAQ,YAAA,GAAAR,OAAA;AAQA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,kBAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,YAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,MAAA,GAAAZ,OAAA;AAA4C,IAAAa,WAAA,GAAAb,OAAA;AAnC5C;AACA;AACA;;AAGA;AACA;AACA;;AAsBA;AACA;AACA;;AAMA,MAAM;EAAEc;AAAgB,CAAC,GAAG,IAAAC,kBAAM,EAAEC,wBAAuB,CAAC;AAC5D,MAAM;EAAEC;AAAK,CAAC,GAAG,IAAAF,kBAAM,EAAEG,uBAAsB,CAAC;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,QAAQA,CAAE;EACzBC,OAAO;EACPC,aAAa;EACbC,UAAU;EACVC,eAAe;EACfC;AACD,CAAC,EAAG;EACH,MAAMC,cAAc,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAC/C,MAAM;MAAEC,kBAAkB;MAAEC;IAAyB,CAAC,GACrDF,MAAM,CAAEG,kBAAiB,CAAC;IAC3B,MAAMC,QAAQ,GAAGF,wBAAwB,CAAC,CAAC;IAC3C,OAAOE,QAAQ,GACZH,kBAAkB,CAAEG,QAAS,CAAC,EAAEC,QAAQ,EAAEC,SAAS,GACnD,IAAI;EACR,CAAC,EAAE,EAAG,CAAC;EACP,MAAM,CAAEC,cAAc,GAAGT,cAAc,EAAEU,iBAAiB,CAAE,GAAG,IAAAC,iBAAQ,EAAC,CAAC;EAEzE,MAAMC,UAAU,GAAGC,KAAK,CAACC,OAAO,CAAEnB,OAAQ,CAAC,IAAIA,OAAO,CAACoB,MAAM,GAAG,CAAC;EACjE,IAAK,CAAEH,UAAU,EAAG;IACnB,oBACC,IAAAxB,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAAwC,oBAAM;MACNC,SAAS,EAAC,MAAM;MAChBC,SAAS,EAAC,qCAAqC;MAC/CC,OAAO,EAAC,YAAY;MACpBC,OAAO,EAAC,GAAG;MAAAC,QAAA;MAGV;MACA,IAAAC,QAAE,EAAE,uBAAwB;IAAC,CAEvB,CAAC;EAEX;EAEA,OAAO5B,OAAO,CAAC6B,GAAG,CAAIC,MAAM,iBAC3B,IAAArC,WAAA,CAAA4B,GAAA,EAACU,MAAM;IAEND,MAAM,EAAGA,MAAQ;IACjB5B,UAAU,EAAGA,UAAY;IACzBC,eAAe,EAAGA,eAAiB;IACnCF,aAAa,EAAGA,aAAe;IAC/B+B,UAAU,EAAGlB,cAAc,KAAKgB,MAAM,CAACG,EAAI;IAC3ClB,iBAAiB,EAAGA,iBAAmB;IACvCX,mBAAmB,EAAGA;EAAqB,GAPrC0B,MAAM,CAACG,EAQb,CACA,CAAC;AACJ;AAEA,SAASF,MAAMA,CAAE;EAChBD,MAAM;EACN7B,aAAa;EACbC,UAAU;EACVC,eAAe;EACf6B,UAAU;EACVjB,iBAAiB;EACjBX;AACD,CAAC,EAAG;EACH,MAAM8B,SAAS,GAAG,IAAAC,eAAM,EAAE,IAAK,CAAC;EAChC,MAAM;IAAEC;EAAqB,CAAC,GAAG,IAAAC,iBAAW,EAAE3B,kBAAiB,CAAC;EAChE,MAAM4B,mBAAmB,GAAG5C,eAAe,CAAEoC,MAAM,CAACS,aAAc,CAAC;EACnE,MAAMC,6BAA6B,GAAG,IAAAC,oBAAW,EAChDL,oBAAoB,EACpB,EACD,CAAC;EAED,MAAMM,YAAY,GAAGA,CAAA,KAAM;IAC1BF,6BAA6B,CAAEV,MAAM,CAACS,aAAa,EAAE,IAAK,CAAC;EAC5D,CAAC;EAED,MAAMI,YAAY,GAAGA,CAAA,KAAM;IAC1BH,6BAA6B,CAAEV,MAAM,CAACS,aAAa,EAAE,KAAM,CAAC;EAC7D,CAAC;EAED,MAAMK,mBAAmB,GAAGA,CAAE;IAAEX,EAAE;IAAEM;EAAc,CAAC,KAAM;IACxDnC,mBAAmB,CAAE,KAAM,CAAC;IAC5BW,iBAAiB,CAAEkB,EAAG,CAAC;IACvB,IAAKM,aAAa,IAAID,mBAAmB,EAAG;MAC3CA,mBAAmB,CAACO,cAAc,CAAE;QACnCC,QAAQ,EAAE,SAAS;QACnBC,KAAK,EAAE;MACR,CAAE,CAAC;IACJ;EACD,CAAC;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACzBd,SAAS,CAACe,OAAO,EAAEC,KAAK,CAAC,CAAC;EAC3B,CAAC;EAED,MAAMC,cAAc,GAAGA,CAAA,KAAM;IAC5BpC,iBAAiB,CAAE,IAAK,CAAC;IACzBX,mBAAmB,CAAE,KAAM,CAAC;EAC7B,CAAC;EAED,MAAMgD,OAAO,GAAGtB,MAAM,EAAEuB,KAAK;EAC7B,MAAMC,SAAS,GAAG,CAAC,CAAEF,OAAO,CAAChC,MAAM,GAChCgC,OAAO,CAAEA,OAAO,CAAChC,MAAM,GAAG,CAAC,CAAE,GAC7BmC,SAAS;EACZ,MAAMC,WAAW,GAAG,CAAC,CAAEJ,OAAO,CAAChC,MAAM,GAAGgC,OAAO,CAACK,KAAK,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC,GAAG,EAAE;EAEnE,MAAMC,cAAc,GAAG,IAAAC,wBAAiB,EACvC,IAAAC,wBAAS,EAAE9B,MAAM,CAAC+B,OAAO,CAACC,QAAS,CAAC,EACpC,EACD,CAAC;EACD,MAAMC,SAAS,GAAGzB,mBAAmB,GAClC,IAAA0B,aAAO;EACP;EACA,IAAApC,QAAE,EAAE,aAAc,CAAC,EACnB8B,cACA,CAAC,GACD,IAAAM,aAAO;EACP;EACA,IAAApC,QAAE,EAAE,qCAAsC,CAAC,EAC3C8B,cACA,CAAC;EAEJ;IAAA;IACC;IACA;IACA,IAAAjE,WAAA,CAAAwE,IAAA,EAACnF,WAAA,CAAAwC,oBAAM;MACNE,SAAS,EAAG,IAAA0C,aAAI,EAAE,qCAAqC,EAAE;QACxD,aAAa,EAAElC;MAChB,CAAE,CAAG;MACLC,EAAE,EAAG,UAAWH,MAAM,CAACG,EAAE,EAAK;MAC9BP,OAAO,EAAC,GAAG;MACXyC,OAAO,EAAGA,CAAA,KAAMvB,mBAAmB,CAAEd,MAAO,CAAG;MAC/CY,YAAY,EAAGA,YAAc;MAC7BC,YAAY,EAAGA,YAAc;MAC7ByB,OAAO,EAAG1B,YAAc;MACxB2B,MAAM,EAAG1B,YAAc;MACvB2B,SAAS,EAAKC,KAAK,IAAM;QACxB;QACA,IACCA,KAAK,CAACC,GAAG,KAAK,OAAO,IACrBD,KAAK,CAACE,aAAa,KAAKF,KAAK,CAACG,MAAM,EACnC;UACD,IAAK1C,UAAU,EAAG;YACjBmB,cAAc,CAAC,CAAC;UACjB,CAAC,MAAM;YACNP,mBAAmB,CAAEd,MAAO,CAAC;UAC9B;QACD;QACA;QACA,IAAKyC,KAAK,CAACC,GAAG,KAAK,QAAQ,EAAG;UAC7BrB,cAAc,CAAC,CAAC;UAChBH,WAAW,CAAC,CAAC;QACd;MACD,CAAG;MACH2B,QAAQ,EAAG,CAAG;MACdC,IAAI,EAAC,UAAU;MACfC,GAAG,EAAG3C,SAAW;MACjB,cAAa6B,SAAW;MACxB,iBAAgB/B,UAAY;MAAAL,QAAA,GAE1B,CAAEW,mBAAmB,iBACtB,IAAA7C,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAAgG,kBAAI;QAACC,EAAE,EAAC,GAAG;QAACC,MAAM,EAAG,GAAK;QAACC,OAAO,EAAC,OAAO;QAAAtD,QAAA,EACxC,IAAAC,QAAE,EAAE,yBAA0B;MAAC,CAC5B,CACN,eACD,IAAAnC,WAAA,CAAA4B,GAAA,EAAC6D,YAAY;QACZpD,MAAM,EAAGA,MAAQ;QACjBqD,MAAM,EAAGA,CAAEC,MAAM,GAAG,CAAC,CAAC,KAAM;UAC3B,MAAM;YAAEC;UAAO,CAAC,GAAGD,MAAM;UACzBnF,aAAa,CAAEmF,MAAO,CAAC;UACvB,IAAKC,MAAM,KAAK,UAAU,EAAG;YAC5BlC,cAAc,CAAC,CAAC;YAChBH,WAAW,CAAC,CAAC;UACd;QACD,CAAG;QACHsC,QAAQ,EAAGnF,eAAiB;QAC5BkF,MAAM,EAAGvD,MAAM,CAACuD;MAAQ,CACxB,CAAC,EACArD,UAAU,IACXoB,OAAO,CAACvB,GAAG,CAAIwB,KAAK,iBACnB,IAAA5D,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAAwC,oBAAM;QAENE,SAAS,EAAC,2CAA2C;QACrDS,EAAE,EAAGoB,KAAK,CAACpB,EAAI;QACfP,OAAO,EAAC,GAAG;QAAAC,QAAA,eAEX,IAAAlC,WAAA,CAAA4B,GAAA,EAAC6D,YAAY;UACZpD,MAAM,EAAGuB,KAAO;UAChB8B,MAAM,EACL,UAAU,KAAKrD,MAAM,CAACuD,MAAM,GACzBpF,aAAa,GACbsD,SACH;UACD+B,QAAQ,EACP,UAAU,KAAKxD,MAAM,CAACuD,MAAM,GACzBlF,eAAe,GACfoD;QACH,CACD;MAAC,GAjBIF,KAAK,CAACpB,EAkBL,CACP,CAAC,EACF,CAAED,UAAU,IAAIwB,WAAW,CAACpC,MAAM,GAAG,CAAC,iBACvC,IAAA3B,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAAyG,oBAAM;QAAC/D,SAAS,EAAC,mDAAmD;QAAAG,QAAA,eACpE,IAAAlC,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAA0G,MAAM;UACNC,IAAI,EAAC,SAAS;UACdR,OAAO,EAAC,UAAU;UAClBzD,SAAS,EAAC,gDAAgD;UAC1D2C,OAAO,EAAGA,CAAA,KAAMpD,iBAAiB,CAAEe,MAAM,CAACG,EAAG,CAAG;UAAAN,QAAA,EAE9C,IAAAqC,aAAO;UACR;UACA,IAAA0B,QAAE,EACD,eAAe,EACf,iBAAiB,EACjBlC,WAAW,CAACpC,MACb,CAAC,EACDoC,WAAW,CAACpC,MACb;QAAC,CACM;MAAC,CACF,CACR,EACC,CAAEY,UAAU,IAAIsB,SAAS,iBAC1B,IAAA7D,WAAA,CAAA4B,GAAA,EAAC6D,YAAY;QACZpD,MAAM,EAAGwB,SAAW;QACpB6B,MAAM,EACL,UAAU,KAAKrD,MAAM,CAACuD,MAAM,GAAGpF,aAAa,GAAGsD,SAC/C;QACD+B,QAAQ,EACP,UAAU,KAAKxD,MAAM,CAACuD,MAAM,GACzBlF,eAAe,GACfoD;MACH,CACD,CACD,EACCvB,UAAU,iBACX,IAAAvC,WAAA,CAAAwE,IAAA,EAACnF,WAAA,CAAAwC,oBAAM;QACNE,SAAS,EAAC,2CAA2C;QACrDE,OAAO,EAAC,GAAG;QAAAC,QAAA,gBAEX,IAAAlC,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAAyG,oBAAM;UAAChE,SAAS,EAAC,MAAM;UAACG,OAAO,EAAC,GAAG;UAACD,OAAO,EAAC,YAAY;UAAAE,QAAA,eACxD,IAAAlC,WAAA,CAAA4B,GAAA,EAAC/B,kBAAA,CAAAqG,OAAiB,IAAE;QAAC,CACd,CAAC,eACT,IAAAlG,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAAwC,oBAAM;UAACI,OAAO,EAAC,GAAG;UAAAC,QAAA,eAClB,IAAAlC,WAAA,CAAA4B,GAAA,EAAC9B,YAAA,CAAAoG,OAAW;YACXC,QAAQ,EAAKC,YAAY,IAAM;cAC9B,IAAK,UAAU,KAAK/D,MAAM,CAACuD,MAAM,EAAG;gBACnCpF,aAAa,CAAE;kBACdgC,EAAE,EAAEH,MAAM,CAACG,EAAE;kBACboD,MAAM,EAAE;gBACT,CAAE,CAAC;cACJ;cACAnF,UAAU,CAAE;gBACX2D,OAAO,EAAEgC,YAAY;gBACrBC,MAAM,EAAEhE,MAAM,CAACG;cAChB,CAAE,CAAC;YACJ,CAAG;YACH8D,QAAQ,EAAKxB,KAAK,IAAM;cACvBrC,SAAS,CAACe,OAAO,EAAEC,KAAK,CAAC,CAAC;cAC1BqB,KAAK,CAACyB,eAAe,CAAC,CAAC,CAAC,CAAC;cACzB7C,cAAc,CAAC,CAAC;YACjB,CAAG;YACH8C,gBAAgB,EACf,UAAU,KAAKnE,MAAM,CAACuD,MAAM,GACzB,IAAAzD,QAAE,EAAE,gBAAiB,CAAC,GACtB,IAAAA,QAAE,EAAE,OAAQ,CACf;YACDsE,IAAI,EAAG,UAAU,KAAKpE,MAAM,CAACuD,MAAM,GAAG,CAAC,GAAG,CAAG;YAC7Cc,SAAS,EAAG,IAAAnC,aAAO;YAClB;YACA,IAAApC,QAAE,EAAE,+BAAgC,CAAC,EACrCE,MAAM,CAACG,EAAE,EACTH,MAAM,EAAEsE,WAAW,IAAI,SACxB;UAAG,CACH;QAAC,CACK,CAAC;MAAA,CACF,CACR;IAAA,CACM;EAAC;AAEX;AAEA,MAAMlB,YAAY,GAAGA,CAAE;EAAEpD,MAAM;EAAEqD,MAAM;EAAEG,QAAQ;EAAED;AAAO,CAAC,KAAM;EAChE,MAAM,CAAEgB,WAAW,EAAEC,cAAc,CAAE,GAAG,IAAAtF,iBAAQ,EAAE,KAAM,CAAC;EACzD,MAAM,CAAEuF,iBAAiB,EAAEC,oBAAoB,CAAE,GAAG,IAAAxF,iBAAQ,EAAE,KAAM,CAAC;EAErE,MAAMyF,mBAAmB,GAAGA,CAAA,KAAM;IACjCnB,QAAQ,CAAExD,MAAO,CAAC;IAClBwE,cAAc,CAAE,KAAM,CAAC;IACvBE,oBAAoB,CAAE,KAAM,CAAC;EAC9B,CAAC;EAED,MAAME,YAAY,GAAGA,CAAA,KAAM;IAC1BJ,cAAc,CAAE,KAAM,CAAC;IACvBE,oBAAoB,CAAE,KAAM,CAAC;EAC9B,CAAC;EAED,MAAMG,OAAO,GAAG,CACfxB,MAAM,IACLE,MAAM,KAAK,UAAU,IAAI;IACxBpD,EAAE,EAAE,MAAM;IACV2E,KAAK,EAAE,IAAAC,QAAE,EAAE,MAAM,EAAE,cAAe,CAAC;IACnC1C,OAAO,EAAEA,CAAA,KAAM;MACdmC,cAAc,CAAE,MAAO,CAAC;IACzB;EACD,CAAC,EACFhB,QAAQ,IAAI;IACXrD,EAAE,EAAE,QAAQ;IACZ2E,KAAK,EAAE,IAAAC,QAAE,EAAE,QAAQ,EAAE,gBAAiB,CAAC;IACvC1C,OAAO,EAAEA,CAAA,KAAM;MACdmC,cAAc,CAAE,QAAS,CAAC;MAC1BE,oBAAoB,CAAE,IAAK,CAAC;IAC7B;EACD,CAAC,EACDrB,MAAM,IACLE,MAAM,KAAK,UAAU,IAAI;IACxBpD,EAAE,EAAE,QAAQ;IACZ2E,KAAK,EAAE,IAAAC,QAAE,EAAE,QAAQ,EAAE,gBAAiB,CAAC;IACvC1C,OAAO,EAAEA,CAAA,KAAM;MACdgB,MAAM,CAAE;QAAElD,EAAE,EAAEH,MAAM,CAACG,EAAE;QAAEoD,MAAM,EAAE;MAAO,CAAE,CAAC;IAC5C;EACD,CAAC,CACF;EAED,MAAMyB,UAAU,GAAGhF,MAAM,EAAEgE,MAAM,KAAK,CAAC;EACvC,MAAMiB,WAAW,GAAGJ,OAAO,CAACK,MAAM,CAAIC,IAAI,IAAMA,IAAI,EAAE9C,OAAQ,CAAC;EAE/D,oBACC,IAAA1E,WAAA,CAAAwE,IAAA,EAAAxE,WAAA,CAAAyH,QAAA;IAAAvF,QAAA,gBACC,IAAAlC,WAAA,CAAAwE,IAAA,EAACnF,WAAA,CAAAyG,oBAAM;MAAChE,SAAS,EAAC,MAAM;MAACG,OAAO,EAAC,GAAG;MAACD,OAAO,EAAC,YAAY;MAAAE,QAAA,gBACxD,IAAAlC,WAAA,CAAA4B,GAAA,EAAC/B,kBAAA,CAAAqG,OAAiB;QACjBwB,MAAM,EAAGrF,MAAM,EAAEsF,kBAAkB,GAAI,EAAE,CAAI;QAC7CC,IAAI,EAAGvF,MAAM,EAAEsE,WAAa;QAC5BkB,IAAI,EAAGxF,MAAM,EAAEwF,IAAM;QACrBC,MAAM,EAAGzF,MAAM,EAAE0F;MAAQ,CACzB,CAAC,eACF,IAAA/H,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAA2I,QAAQ;QACRjG,SAAS,EAAC,6CAA6C;QACvD2C,OAAO,EAAKI,KAAK,IAAM;UACtB;UACAA,KAAK,CAACyB,eAAe,CAAC,CAAC;QACxB,CAAG;QAAArE,QAAA,eAEH,IAAAlC,WAAA,CAAAwE,IAAA,EAACnF,WAAA,CAAAyG,oBAAM;UAAC7D,OAAO,EAAC,GAAG;UAAAC,QAAA,GAChBmF,UAAU,iBACX,IAAArH,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAA0G,MAAM;YACNkC,KAAK,EAAG,IAAAb,QAAE,EACT,SAAS,EACT,0BACD,CAAG;YACHpB,IAAI,EAAC,OAAO;YACZkC,IAAI,EAAGC,gBAAW;YAClBC,QAAQ,EAAGxC,MAAM,KAAK,UAAY;YAClCyC,sBAAsB,EAAGzC,MAAM,KAAK,UAAY;YAChDlB,OAAO,EAAGA,CAAA,KAAM;cACfgB,MAAM,CAAE;gBACPlD,EAAE,EAAEH,MAAM,CAACG,EAAE;gBACboD,MAAM,EAAE;cACT,CAAE,CAAC;YACJ;UAAG,CACH,CACD,eACD,IAAA5F,WAAA,CAAAwE,IAAA,EAACpE,IAAI;YAACkI,SAAS,EAAC,YAAY;YAAApG,QAAA,gBAC3B,IAAAlC,WAAA,CAAA4B,GAAA,EAACxB,IAAI,CAACmI,aAAa;cAClBC,MAAM,eACL,IAAAxI,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAA0G,MAAM;gBACNC,IAAI,EAAC,OAAO;gBACZkC,IAAI,EAAGO,mBAAc;gBACrBR,KAAK,EAAG,IAAA9F,QAAE,EAAE,SAAU,CAAG;gBACzBiG,QAAQ,EAAG,CAAEd,WAAW,CAAC3F,MAAQ;gBACjC0G,sBAAsB;cAAA,CACtB;YACD,CACD,CAAC,eACF,IAAArI,WAAA,CAAA4B,GAAA,EAACxB,IAAI,CAACsI,OAAO;cAAAxG,QAAA,EACVoF,WAAW,CAAClF,GAAG,CAAIuG,MAAM,iBAC1B,IAAA3I,WAAA,CAAA4B,GAAA,EAACxB,IAAI,CAACwI,IAAI;gBAETlE,OAAO,EAAGA,CAAA,KAAMiE,MAAM,CAACjE,OAAO,CAAC,CAAG;gBAAAxC,QAAA,eAElC,IAAAlC,WAAA,CAAA4B,GAAA,EAACxB,IAAI,CAACyI,SAAS;kBAAA3G,QAAA,EACZyG,MAAM,CAACxB;gBAAK,CACC;cAAC,GALXwB,MAAM,CAACnG,EAMH,CACV;YAAC,CACU,CAAC;UAAA,CACV,CAAC;QAAA,CACA;MAAC,CACA,CAAC;IAAA,CACJ,CAAC,EACP,MAAM,KAAKoE,WAAW,gBACvB,IAAA5G,WAAA,CAAA4B,GAAA,EAAC9B,YAAA,CAAAoG,OAAW;MACXC,QAAQ,EAAK2C,KAAK,IAAM;QACvBpD,MAAM,CAAE;UACPlD,EAAE,EAAEH,MAAM,CAACG,EAAE;UACb4B,OAAO,EAAE0E;QACV,CAAE,CAAC;QACHjC,cAAc,CAAE,KAAM,CAAC;MACxB,CAAG;MACHP,QAAQ,EAAGA,CAAA,KAAMW,YAAY,CAAC,CAAG;MACjC5E,MAAM,EAAGA,MAAQ;MACjBmE,gBAAgB,EAAG,IAAAY,QAAE,EAAE,QAAQ,EAAE,MAAO,CAAG;MAC3CV,SAAS,EAAG,IAAAnC,aAAO;MAClB;MACA,IAAApC,QAAE,EAAE,2BAA4B,CAAC,EACjCE,MAAM,CAACG,EAAE,EACTH,MAAM,EAAEsE,WAAW,IAAI,SACxB;IAAG,CACH,CAAC,gBAEF,IAAA3G,WAAA,CAAA4B,GAAA,EAACxC,QAAA,CAAA2J,OAAO;MAAChH,SAAS,EAAC,2CAA2C;MAAAG,QAAA,EAC3DG,MAAM,EAAE+B,OAAO,EAAEC;IAAQ,CACnB,CACT,EACC,QAAQ,KAAKuC,WAAW,iBACzB,IAAA5G,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAA2J,2BAAa;MACbC,MAAM,EAAGnC,iBAAmB;MAC5BoC,SAAS,EAAGlC,mBAAqB;MACjCV,QAAQ,EAAGW,YAAc;MACzBkC,iBAAiB,EAAG,IAAAhH,QAAE,EAAE,QAAS,CAAG;MAAAD,QAAA;MAGnC;MACA,IAAAC,QAAE,EAAE,+CAAgD;IAAC,CAExC,CACf;EAAA,CACA,CAAC;AAEL,CAAC","ignoreList":[]}
|
|
@@ -31,7 +31,7 @@ function useBlockComments(postId) {
|
|
|
31
31
|
getClientIdsWithDescendants
|
|
32
32
|
} = select(_blockEditor.store);
|
|
33
33
|
return getClientIdsWithDescendants().reduce((results, clientId) => {
|
|
34
|
-
const commentId = getBlockAttributes(clientId)?.
|
|
34
|
+
const commentId = getBlockAttributes(clientId)?.metadata?.commentId;
|
|
35
35
|
if (commentId) {
|
|
36
36
|
results[commentId] = clientId;
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_coreData","_data","_blockEditor","useBlockComments","postId","queryArgs","post","type","status","per_page","records","threads","totalPages","useEntityRecords","enabled","blocksWithComments","useSelect","select","getBlockAttributes","getClientIdsWithDescendants","blockEditorStore","reduce","results","clientId","commentId","
|
|
1
|
+
{"version":3,"names":["_element","require","_coreData","_data","_blockEditor","useBlockComments","postId","queryArgs","post","type","status","per_page","records","threads","totalPages","useEntityRecords","enabled","blocksWithComments","useSelect","select","getBlockAttributes","getClientIdsWithDescendants","blockEditorStore","reduce","results","clientId","commentId","metadata","resultComments","unresolvedSortedThreads","useMemo","compare","result","allComments","forEach","item","id","reply","blockClientId","parent","push","length","updatedResult","map","reverse","threadIdMap","Map","thread","String","unresolvedSortedComments","Object","keys","get","filter","undefined"],"sources":["@wordpress/editor/src/components/collab-sidebar/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\nexport function useBlockComments( postId ) {\n\tconst queryArgs = {\n\t\tpost: postId,\n\t\ttype: 'block_comment',\n\t\tstatus: 'all',\n\t\tper_page: 100,\n\t};\n\n\tconst { records: threads, totalPages } = useEntityRecords(\n\t\t'root',\n\t\t'comment',\n\t\tqueryArgs,\n\t\t{ enabled: !! postId && typeof postId === 'number' }\n\t);\n\n\tconst blocksWithComments = useSelect( ( select ) => {\n\t\tconst { getBlockAttributes, getClientIdsWithDescendants } =\n\t\t\tselect( blockEditorStore );\n\n\t\treturn getClientIdsWithDescendants().reduce( ( results, clientId ) => {\n\t\t\tconst commentId =\n\t\t\t\tgetBlockAttributes( clientId )?.metadata?.commentId;\n\t\t\tif ( commentId ) {\n\t\t\t\tresults[ commentId ] = clientId;\n\t\t\t}\n\t\t\treturn results;\n\t\t}, {} );\n\t}, [] );\n\n\t// Process comments to build the tree structure.\n\tconst { resultComments, unresolvedSortedThreads } = useMemo( () => {\n\t\t// Create a compare to store the references to all objects by id.\n\t\tconst compare = {};\n\t\tconst result = [];\n\n\t\tconst allComments = threads ?? [];\n\n\t\t// Initialize each object with an empty `reply` array and map blockClientId.\n\t\tallComments.forEach( ( item ) => {\n\t\t\tcompare[ item.id ] = {\n\t\t\t\t...item,\n\t\t\t\treply: [],\n\t\t\t\tblockClientId:\n\t\t\t\t\titem.parent === 0 ? blocksWithComments[ item.id ] : null,\n\t\t\t};\n\t\t} );\n\n\t\t// Iterate over the data to build the tree structure.\n\t\tallComments.forEach( ( item ) => {\n\t\t\tif ( item.parent === 0 ) {\n\t\t\t\t// If parent is 0, it's a root item, push it to the result array.\n\t\t\t\tresult.push( compare[ item.id ] );\n\t\t\t} else if ( compare[ item.parent ] ) {\n\t\t\t\t// Otherwise, find its parent and push it to the parent's `reply` array.\n\t\t\t\tcompare[ item.parent ].reply.push( compare[ item.id ] );\n\t\t\t}\n\t\t} );\n\n\t\tif ( 0 === result?.length ) {\n\t\t\treturn { resultComments: [], unresolvedSortedThreads: [] };\n\t\t}\n\n\t\tconst updatedResult = result.map( ( item ) => ( {\n\t\t\t...item,\n\t\t\treply: [ ...item.reply ].reverse(),\n\t\t} ) );\n\n\t\tconst threadIdMap = new Map(\n\t\t\tupdatedResult.map( ( thread ) => [ String( thread.id ), thread ] )\n\t\t);\n\n\t\t// Get comments by block order, filter out undefined threads, and exclude resolved comments.\n\t\tconst unresolvedSortedComments = Object.keys( blocksWithComments )\n\t\t\t.map( ( id ) => threadIdMap.get( id ) )\n\t\t\t.filter(\n\t\t\t\t( thread ) =>\n\t\t\t\t\tthread !== undefined && thread.status !== 'approved'\n\t\t\t);\n\n\t\treturn {\n\t\t\tresultComments: updatedResult,\n\t\t\tunresolvedSortedThreads: unresolvedSortedComments,\n\t\t};\n\t}, [ threads, blocksWithComments ] );\n\n\treturn { resultComments, unresolvedSortedThreads, totalPages };\n}\n"],"mappings":"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","ignoreList":[]}
|