@wordpress/editor 14.11.0 → 14.12.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/README.md +0 -8
- package/build/components/collab-sidebar/add-comment.js +5 -6
- package/build/components/collab-sidebar/add-comment.js.map +1 -1
- package/build/components/collab-sidebar/index.js +75 -73
- package/build/components/collab-sidebar/index.js.map +1 -1
- package/build/components/commands/index.js +142 -34
- package/build/components/commands/index.js.map +1 -1
- package/build/components/create-template-part-modal/index.js +1 -0
- package/build/components/create-template-part-modal/index.js.map +1 -1
- package/build/components/document-bar/index.js +9 -3
- package/build/components/document-bar/index.js.map +1 -1
- package/build/components/document-tools/index.js +8 -4
- package/build/components/document-tools/index.js.map +1 -1
- package/build/components/editor-interface/index.js +1 -2
- package/build/components/editor-interface/index.js.map +1 -1
- package/build/components/global-styles-provider/index.js +20 -8
- package/build/components/global-styles-provider/index.js.map +1 -1
- package/build/components/header/index.js +10 -12
- package/build/components/header/index.js.map +1 -1
- package/build/components/more-menu/index.js +9 -7
- package/build/components/more-menu/index.js.map +1 -1
- package/build/components/post-taxonomies/flat-term-selector.js +10 -8
- package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build/components/post-template/swap-template-button.js +0 -3
- package/build/components/post-template/swap-template-button.js.map +1 -1
- package/build/components/post-transform-panel/index.js +0 -3
- package/build/components/post-transform-panel/index.js.map +1 -1
- package/build/components/preferences-modal/index.js +26 -22
- package/build/components/preferences-modal/index.js.map +1 -1
- package/build/components/preview-dropdown/index.js +23 -4
- package/build/components/preview-dropdown/index.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.js +10 -9
- package/build/components/provider/use-block-editor-settings.js.map +1 -1
- package/build/components/sidebar/post-summary.js +2 -2
- package/build/components/sidebar/post-summary.js.map +1 -1
- package/build/components/start-page-options/index.js +0 -3
- package/build/components/start-page-options/index.js.map +1 -1
- package/build/components/start-template-options/index.js +0 -3
- package/build/components/start-template-options/index.js.map +1 -1
- package/build/components/visual-editor/index.js +5 -2
- package/build/components/visual-editor/index.js.map +1 -1
- package/build/store/actions.js +65 -16
- package/build/store/actions.js.map +1 -1
- package/build/store/constants.js +0 -2
- package/build/store/constants.js.map +1 -1
- package/build/store/index.js +0 -4
- package/build/store/index.js.map +1 -1
- package/build/store/selectors.js +2 -2
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/collab-sidebar/add-comment.js +5 -6
- package/build-module/components/collab-sidebar/add-comment.js.map +1 -1
- package/build-module/components/collab-sidebar/index.js +76 -74
- package/build-module/components/collab-sidebar/index.js.map +1 -1
- package/build-module/components/commands/index.js +145 -38
- package/build-module/components/commands/index.js.map +1 -1
- package/build-module/components/create-template-part-modal/index.js +1 -0
- package/build-module/components/create-template-part-modal/index.js.map +1 -1
- package/build-module/components/document-bar/index.js +10 -4
- package/build-module/components/document-bar/index.js.map +1 -1
- package/build-module/components/document-tools/index.js +8 -4
- package/build-module/components/document-tools/index.js.map +1 -1
- package/build-module/components/editor-interface/index.js +1 -2
- package/build-module/components/editor-interface/index.js.map +1 -1
- package/build-module/components/global-styles-provider/index.js +20 -8
- package/build-module/components/global-styles-provider/index.js.map +1 -1
- package/build-module/components/header/index.js +10 -12
- package/build-module/components/header/index.js.map +1 -1
- package/build-module/components/more-menu/index.js +9 -7
- package/build-module/components/more-menu/index.js.map +1 -1
- package/build-module/components/post-taxonomies/flat-term-selector.js +10 -8
- package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build-module/components/post-template/swap-template-button.js +0 -3
- package/build-module/components/post-template/swap-template-button.js.map +1 -1
- package/build-module/components/post-transform-panel/index.js +0 -3
- package/build-module/components/post-transform-panel/index.js.map +1 -1
- package/build-module/components/preferences-modal/index.js +26 -22
- package/build-module/components/preferences-modal/index.js.map +1 -1
- package/build-module/components/preview-dropdown/index.js +24 -5
- package/build-module/components/preview-dropdown/index.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.js +11 -10
- package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
- package/build-module/components/sidebar/post-summary.js +2 -2
- package/build-module/components/sidebar/post-summary.js.map +1 -1
- package/build-module/components/start-page-options/index.js +0 -3
- package/build-module/components/start-page-options/index.js.map +1 -1
- package/build-module/components/start-template-options/index.js +0 -3
- package/build-module/components/start-template-options/index.js.map +1 -1
- package/build-module/components/visual-editor/index.js +5 -2
- package/build-module/components/visual-editor/index.js.map +1 -1
- package/build-module/store/actions.js +61 -14
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/constants.js +0 -2
- package/build-module/store/constants.js.map +1 -1
- package/build-module/store/index.js +0 -4
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/selectors.js +2 -2
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +22 -6
- package/build-style/style.css +22 -6
- package/build-types/components/collab-sidebar/add-comment.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
- package/build-types/components/commands/index.d.ts.map +1 -1
- package/build-types/components/create-template-part-modal/index.d.ts.map +1 -1
- package/build-types/components/document-bar/index.d.ts.map +1 -1
- package/build-types/components/document-tools/index.d.ts.map +1 -1
- package/build-types/components/editor-interface/index.d.ts.map +1 -1
- package/build-types/components/global-styles-provider/index.d.ts.map +1 -1
- package/build-types/components/header/index.d.ts +1 -2
- package/build-types/components/header/index.d.ts.map +1 -1
- package/build-types/components/more-menu/index.d.ts.map +1 -1
- package/build-types/components/post-taxonomies/flat-term-selector.d.ts.map +1 -1
- package/build-types/components/post-template/hooks.d.ts +2 -2
- package/build-types/components/post-template/swap-template-button.d.ts.map +1 -1
- package/build-types/components/post-transform-panel/index.d.ts.map +1 -1
- package/build-types/components/preferences-modal/index.d.ts.map +1 -1
- package/build-types/components/preview-dropdown/index.d.ts.map +1 -1
- package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
- package/build-types/components/start-page-options/index.d.ts.map +1 -1
- package/build-types/components/start-template-options/index.d.ts.map +1 -1
- package/build-types/components/visual-editor/index.d.ts.map +1 -1
- package/build-types/dataviews/store/reducer.d.ts +5 -2
- package/build-types/dataviews/store/reducer.d.ts.map +1 -1
- package/build-types/lock-unlock.d.ts +2 -2
- package/build-types/store/actions.d.ts +9 -1
- package/build-types/store/actions.d.ts.map +1 -1
- package/build-types/store/constants.d.ts +0 -2
- package/build-types/store/constants.d.ts.map +1 -1
- package/build-types/store/index.d.ts +9 -11
- package/build-types/store/index.d.ts.map +1 -1
- package/build-types/store/reducer.d.ts +24 -4
- package/build-types/store/reducer.d.ts.map +1 -1
- package/build-types/store/selectors.d.ts +3 -3
- package/build-types/store/selectors.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/components/collab-sidebar/add-comment.js +17 -20
- package/src/components/collab-sidebar/index.js +79 -88
- package/src/components/commands/index.js +390 -270
- package/src/components/create-template-part-modal/index.js +1 -0
- package/src/components/document-bar/index.js +10 -1
- package/src/components/document-bar/style.scss +13 -0
- package/src/components/document-tools/index.js +7 -1
- package/src/components/editor-interface/index.js +0 -1
- package/src/components/global-styles-provider/index.js +20 -8
- package/src/components/header/index.js +18 -10
- package/src/components/more-menu/index.js +12 -7
- package/src/components/plugin-post-publish-panel/test/__snapshots__/index.js.snap +1 -1
- package/src/components/post-taxonomies/flat-term-selector.js +8 -8
- package/src/components/post-template/swap-template-button.js +0 -3
- package/src/components/post-transform-panel/index.js +0 -3
- package/src/components/preferences-modal/index.js +26 -19
- package/src/components/preferences-modal/test/index.js +1 -1
- package/src/components/preview-dropdown/index.js +45 -16
- package/src/components/provider/use-block-editor-settings.js +10 -9
- package/src/components/sidebar/post-summary.js +1 -1
- package/src/components/sidebar/style.scss +1 -3
- package/src/components/start-page-options/index.js +0 -3
- package/src/components/start-template-options/index.js +0 -3
- package/src/components/visual-editor/index.js +7 -1
- package/src/components/visual-editor/style.scss +11 -0
- package/src/store/actions.js +110 -33
- package/src/store/constants.ts +0 -2
- package/src/store/index.js +0 -4
- package/src/store/selectors.js +2 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
5
|
import { useSelect, useDispatch, resolveSelect } from '@wordpress/data';
|
|
6
|
-
import { useState,
|
|
6
|
+
import { useState, useMemo } from '@wordpress/element';
|
|
7
7
|
import { comment as commentIcon } from '@wordpress/icons';
|
|
8
8
|
import { addFilter } from '@wordpress/hooks';
|
|
9
9
|
import { store as noticesStore } from '@wordpress/notices';
|
|
@@ -22,7 +22,6 @@ import { store as editorStore } from '../../store';
|
|
|
22
22
|
import AddCommentButton from './comment-button';
|
|
23
23
|
import AddCommentToolbarButton from './comment-button-toolbar';
|
|
24
24
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
25
|
-
const threadsEmptyArray = [];
|
|
26
25
|
const isBlockCommentExperimentEnabled = window?.__experimentalEnableBlockComment;
|
|
27
26
|
const modifyBlockCommentAttributes = settings => {
|
|
28
27
|
if (!settings.attributes.blockCommentId) {
|
|
@@ -38,11 +37,10 @@ const modifyBlockCommentAttributes = settings => {
|
|
|
38
37
|
|
|
39
38
|
// Apply the filter to all core blocks
|
|
40
39
|
addFilter('blocks.registerBlockType', 'block-comment/modify-core-block-attributes', modifyBlockCommentAttributes);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
export default function CollabSidebar() {
|
|
40
|
+
function CollabSidebarContent({
|
|
41
|
+
showCommentBoard,
|
|
42
|
+
setShowCommentBoard
|
|
43
|
+
}) {
|
|
46
44
|
const {
|
|
47
45
|
createNotice
|
|
48
46
|
} = useDispatch(noticesStore);
|
|
@@ -54,49 +52,27 @@ export default function CollabSidebar() {
|
|
|
54
52
|
getEntityRecord
|
|
55
53
|
} = resolveSelect(coreStore);
|
|
56
54
|
const {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const [blockCommentID, setBlockCommentID] = useState(null);
|
|
60
|
-
const [showCommentBoard, setShowCommentBoard] = useState(false);
|
|
61
|
-
const {
|
|
62
|
-
postId
|
|
55
|
+
postId,
|
|
56
|
+
threads
|
|
63
57
|
} = useSelect(select => {
|
|
64
|
-
return {
|
|
65
|
-
postId: select(editorStore).getCurrentPostId()
|
|
66
|
-
};
|
|
67
|
-
}, []);
|
|
68
|
-
const postStatus = useSelect(select => {
|
|
69
|
-
const post = select(editorStore).getCurrentPost();
|
|
70
|
-
return {
|
|
71
|
-
postStatus: post?.status
|
|
72
|
-
};
|
|
73
|
-
}, []);
|
|
74
|
-
const threads = useSelect(select => {
|
|
75
|
-
if (!postId) {
|
|
76
|
-
return threadsEmptyArray;
|
|
77
|
-
}
|
|
78
58
|
const {
|
|
79
|
-
|
|
80
|
-
} = select(
|
|
81
|
-
const
|
|
82
|
-
|
|
59
|
+
getCurrentPostId
|
|
60
|
+
} = select(editorStore);
|
|
61
|
+
const _postId = getCurrentPostId();
|
|
62
|
+
const data = !!_postId ? select(coreStore).getEntityRecords('root', 'comment', {
|
|
63
|
+
post: _postId,
|
|
83
64
|
type: 'block_comment',
|
|
84
65
|
status: 'any',
|
|
85
66
|
per_page: 100
|
|
86
|
-
});
|
|
87
|
-
return
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
getSelectedBlockClientId
|
|
92
|
-
} = select(blockEditorStore);
|
|
93
|
-
return getSelectedBlockClientId();
|
|
67
|
+
}) : null;
|
|
68
|
+
return {
|
|
69
|
+
postId: _postId,
|
|
70
|
+
threads: data
|
|
71
|
+
};
|
|
94
72
|
}, []);
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Get the dispatch functions to save the comment and update the block attributes.
|
|
73
|
+
const {
|
|
74
|
+
getSelectedBlockClientId
|
|
75
|
+
} = useSelect(blockEditorStore);
|
|
100
76
|
const {
|
|
101
77
|
updateBlockAttributes
|
|
102
78
|
} = useDispatch(blockEditorStore);
|
|
@@ -106,7 +82,7 @@ export default function CollabSidebar() {
|
|
|
106
82
|
// Create a compare to store the references to all objects by id
|
|
107
83
|
const compare = {};
|
|
108
84
|
const result = [];
|
|
109
|
-
const filteredComments = threads.filter(comment => comment.status !== 'trash');
|
|
85
|
+
const filteredComments = (threads !== null && threads !== void 0 ? threads : []).filter(comment => comment.status !== 'trash');
|
|
110
86
|
|
|
111
87
|
// Initialize each object with an empty `reply` array
|
|
112
88
|
filteredComments.forEach(item => {
|
|
@@ -128,10 +104,6 @@ export default function CollabSidebar() {
|
|
|
128
104
|
});
|
|
129
105
|
return result;
|
|
130
106
|
}, [threads]);
|
|
131
|
-
const openCollabBoard = () => {
|
|
132
|
-
setShowCommentBoard(true);
|
|
133
|
-
enableComplementaryArea('core', 'edit-post/collab-sidebar');
|
|
134
|
-
};
|
|
135
107
|
|
|
136
108
|
// Function to save the comment.
|
|
137
109
|
const addNewComment = async (comment, parentCommentId) => {
|
|
@@ -153,7 +125,7 @@ export default function CollabSidebar() {
|
|
|
153
125
|
if (savedRecord) {
|
|
154
126
|
// If it's a main comment, update the block attributes with the comment id.
|
|
155
127
|
if (!parentCommentId) {
|
|
156
|
-
updateBlockAttributes(
|
|
128
|
+
updateBlockAttributes(getSelectedBlockClientId(), {
|
|
157
129
|
blockCommentId: savedRecord?.id
|
|
158
130
|
});
|
|
159
131
|
}
|
|
@@ -211,7 +183,7 @@ export default function CollabSidebar() {
|
|
|
211
183
|
const childComment = await getEntityRecord('root', 'comment', commentId);
|
|
212
184
|
await deleteEntityRecord('root', 'comment', commentId);
|
|
213
185
|
if (childComment && !childComment.parent) {
|
|
214
|
-
updateBlockAttributes(
|
|
186
|
+
updateBlockAttributes(getSelectedBlockClientId(), {
|
|
215
187
|
blockCommentId: undefined
|
|
216
188
|
});
|
|
217
189
|
}
|
|
@@ -222,20 +194,61 @@ export default function CollabSidebar() {
|
|
|
222
194
|
isDismissible: true
|
|
223
195
|
});
|
|
224
196
|
};
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
197
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
198
|
+
className: "editor-collab-sidebar-panel",
|
|
199
|
+
children: [/*#__PURE__*/_jsx(AddComment, {
|
|
200
|
+
onSubmit: addNewComment,
|
|
201
|
+
showCommentBoard: showCommentBoard,
|
|
202
|
+
setShowCommentBoard: setShowCommentBoard
|
|
203
|
+
}), /*#__PURE__*/_jsx(Comments, {
|
|
204
|
+
threads: resultComments,
|
|
205
|
+
onEditComment: onEditComment,
|
|
206
|
+
onAddReply: addNewComment,
|
|
207
|
+
onCommentDelete: onCommentDelete,
|
|
208
|
+
onCommentResolve: onCommentResolve
|
|
209
|
+
})]
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Renders the Collab sidebar.
|
|
215
|
+
*/
|
|
216
|
+
export default function CollabSidebar() {
|
|
217
|
+
const [showCommentBoard, setShowCommentBoard] = useState(false);
|
|
218
|
+
const {
|
|
219
|
+
enableComplementaryArea
|
|
220
|
+
} = useDispatch(interfaceStore);
|
|
221
|
+
const {
|
|
222
|
+
postStatus
|
|
223
|
+
} = useSelect(select => {
|
|
224
|
+
return {
|
|
225
|
+
postStatus: select(editorStore).getEditedPostAttribute('status')
|
|
226
|
+
};
|
|
227
|
+
}, []);
|
|
228
|
+
const {
|
|
229
|
+
blockCommentId
|
|
230
|
+
} = useSelect(select => {
|
|
231
|
+
const {
|
|
232
|
+
getBlockAttributes,
|
|
233
|
+
getSelectedBlockClientId
|
|
234
|
+
} = select(blockEditorStore);
|
|
235
|
+
const _clientId = getSelectedBlockClientId();
|
|
236
|
+
return {
|
|
237
|
+
blockCommentId: _clientId ? getBlockAttributes(_clientId)?.blockCommentId : null
|
|
238
|
+
};
|
|
239
|
+
}, []);
|
|
240
|
+
const openCollabBoard = () => {
|
|
241
|
+
setShowCommentBoard(true);
|
|
242
|
+
enableComplementaryArea('core', 'edit-post/collab-sidebar');
|
|
243
|
+
};
|
|
230
244
|
|
|
231
245
|
// Check if the experimental flag is enabled.
|
|
232
|
-
if (!isBlockCommentExperimentEnabled || postStatus
|
|
246
|
+
if (!isBlockCommentExperimentEnabled || postStatus === 'publish') {
|
|
233
247
|
return null; // or maybe return some message indicating no threads are available.
|
|
234
248
|
}
|
|
249
|
+
const AddCommentComponent = blockCommentId ? AddCommentToolbarButton : AddCommentButton;
|
|
235
250
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
236
|
-
children: [
|
|
237
|
-
onClick: openCollabBoard
|
|
238
|
-
}), blockCommentID > 0 && /*#__PURE__*/_jsx(AddCommentToolbarButton, {
|
|
251
|
+
children: [/*#__PURE__*/_jsx(AddCommentComponent, {
|
|
239
252
|
onClick: openCollabBoard
|
|
240
253
|
}), /*#__PURE__*/_jsx(PluginSidebar, {
|
|
241
254
|
identifier: collabSidebarName
|
|
@@ -243,20 +256,9 @@ export default function CollabSidebar() {
|
|
|
243
256
|
,
|
|
244
257
|
title: __('Comments'),
|
|
245
258
|
icon: commentIcon,
|
|
246
|
-
children: /*#__PURE__*/
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
threads: resultComments,
|
|
250
|
-
onSubmit: addNewComment,
|
|
251
|
-
showCommentBoard: showCommentBoard,
|
|
252
|
-
setShowCommentBoard: setShowCommentBoard
|
|
253
|
-
}), /*#__PURE__*/_jsx(Comments, {
|
|
254
|
-
threads: resultComments,
|
|
255
|
-
onEditComment: onEditComment,
|
|
256
|
-
onAddReply: addNewComment,
|
|
257
|
-
onCommentDelete: onCommentDelete,
|
|
258
|
-
onCommentResolve: onCommentResolve
|
|
259
|
-
})]
|
|
259
|
+
children: /*#__PURE__*/_jsx(CollabSidebarContent, {
|
|
260
|
+
showCommentBoard: showCommentBoard,
|
|
261
|
+
setShowCommentBoard: setShowCommentBoard
|
|
260
262
|
})
|
|
261
263
|
})]
|
|
262
264
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","useSelect","useDispatch","resolveSelect","useState","useEffect","useMemo","comment","commentIcon","addFilter","store","noticesStore","coreStore","blockEditorStore","interfaceStore","PluginSidebar","collabSidebarName","Comments","AddComment","editorStore","AddCommentButton","AddCommentToolbarButton","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","threadsEmptyArray","isBlockCommentExperimentEnabled","window","__experimentalEnableBlockComment","modifyBlockCommentAttributes","settings","attributes","blockCommentId","type","CollabSidebar","createNotice","saveEntityRecord","deleteEntityRecord","getEntityRecord","enableComplementaryArea","blockCommentID","setBlockCommentID","showCommentBoard","setShowCommentBoard","postId","select","getCurrentPostId","postStatus","post","getCurrentPost","status","threads","getEntityRecords","data","per_page","clientId","getSelectedBlockClientId","blockDetails","getBlock","updateBlockAttributes","resultComments","compare","result","filteredComments","filter","forEach","item","id","reply","parent","push","openCollabBoard","addNewComment","parentCommentId","args","content","comment_type","comment_approved","updatedArgs","savedRecord","isDismissible","onError","onCommentResolve","commentId","onEditComment","onCommentDelete","childComment","undefined","children","onClick","identifier","title","icon","className","onSubmit","onAddReply"],"sources":["@wordpress/editor/src/components/collab-sidebar/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch, resolveSelect } from '@wordpress/data';\nimport { useState, useEffect, useMemo } from '@wordpress/element';\nimport { comment as commentIcon } from '@wordpress/icons';\nimport { addFilter } from '@wordpress/hooks';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as interfaceStore } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport PluginSidebar from '../plugin-sidebar';\nimport { collabSidebarName } from './constants';\nimport { Comments } from './comments';\nimport { AddComment } from './add-comment';\nimport { store as editorStore } from '../../store';\nimport AddCommentButton from './comment-button';\nimport AddCommentToolbarButton from './comment-button-toolbar';\n\nconst threadsEmptyArray = [];\n\nconst isBlockCommentExperimentEnabled =\n\twindow?.__experimentalEnableBlockComment;\nconst modifyBlockCommentAttributes = ( settings ) => {\n\tif ( ! settings.attributes.blockCommentId ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tblockCommentId: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n};\n\n// Apply the filter to all core blocks\naddFilter(\n\t'blocks.registerBlockType',\n\t'block-comment/modify-core-block-attributes',\n\tmodifyBlockCommentAttributes\n);\n\n/**\n * Renders the Collab sidebar.\n */\nexport default function CollabSidebar() {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst { saveEntityRecord, deleteEntityRecord } = useDispatch( coreStore );\n\tconst { getEntityRecord } = resolveSelect( coreStore );\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\tconst [ blockCommentID, setBlockCommentID ] = useState( null );\n\tconst [ showCommentBoard, setShowCommentBoard ] = useState( false );\n\tconst { postId } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostId: select( editorStore ).getCurrentPostId(),\n\t\t};\n\t}, [] );\n\n\tconst postStatus = useSelect( ( select ) => {\n\t\tconst post = select( editorStore ).getCurrentPost();\n\t\treturn { postStatus: post?.status };\n\t}, [] );\n\n\tconst threads = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! postId ) {\n\t\t\t\treturn threadsEmptyArray;\n\t\t\t}\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\t\t\tconst data = getEntityRecords( 'root', 'comment', {\n\t\t\t\tpost: postId,\n\t\t\t\ttype: 'block_comment',\n\t\t\t\tstatus: 'any',\n\t\t\t\tper_page: 100,\n\t\t\t} );\n\t\t\treturn data || threadsEmptyArray;\n\t\t},\n\t\t[ postId ]\n\t);\n\n\tconst clientId = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientId } = select( blockEditorStore );\n\t\treturn getSelectedBlockClientId();\n\t}, [] );\n\n\tconst blockDetails = useSelect(\n\t\t( select ) => {\n\t\t\treturn clientId\n\t\t\t\t? select( blockEditorStore ).getBlock( clientId )\n\t\t\t\t: null;\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Get the dispatch functions to save the comment and update the block attributes.\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\t// Process comments to build the tree structure\n\tconst resultComments = 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 filteredComments = threads.filter(\n\t\t\t( comment ) => comment.status !== 'trash'\n\t\t);\n\n\t\t// Initialize each object with an empty `reply` array\n\t\tfilteredComments.forEach( ( item ) => {\n\t\t\tcompare[ item.id ] = { ...item, reply: [] };\n\t\t} );\n\n\t\t// Iterate over the data to build the tree structure\n\t\tfilteredComments.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\treturn result;\n\t}, [ threads ] );\n\n\tconst openCollabBoard = () => {\n\t\tsetShowCommentBoard( true );\n\t\tenableComplementaryArea( 'core', 'edit-post/collab-sidebar' );\n\t};\n\n\t// Function to save the comment.\n\tconst addNewComment = async ( comment, parentCommentId ) => {\n\t\tconst args = {\n\t\t\tpost: postId,\n\t\t\tcontent: comment,\n\t\t\tcomment_type: 'block_comment',\n\t\t\tcomment_approved: 0,\n\t\t};\n\n\t\t// Create a new object, conditionally including the parent property\n\t\tconst updatedArgs = {\n\t\t\t...args,\n\t\t\t...( parentCommentId ? { parent: parentCommentId } : {} ),\n\t\t};\n\n\t\tconst savedRecord = await saveEntityRecord(\n\t\t\t'root',\n\t\t\t'comment',\n\t\t\tupdatedArgs\n\t\t);\n\n\t\tif ( savedRecord ) {\n\t\t\t// If it's a main comment, update the block attributes with the comment id.\n\t\t\tif ( ! parentCommentId ) {\n\t\t\t\tupdateBlockAttributes( clientId, {\n\t\t\t\t\tblockCommentId: savedRecord?.id,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tcreateNotice(\n\t\t\t\t'snackbar',\n\t\t\t\tparentCommentId\n\t\t\t\t\t? // translators: Reply added successfully\n\t\t\t\t\t __( 'Reply added successfully.' )\n\t\t\t\t\t: // translators: Comment added successfully\n\t\t\t\t\t __( 'Comment added successfully.' ),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tisDismissible: true,\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tonError();\n\t\t}\n\t};\n\n\tconst onCommentResolve = async ( commentId ) => {\n\t\tconst savedRecord = await saveEntityRecord( 'root', 'comment', {\n\t\t\tid: commentId,\n\t\t\tstatus: 'approved',\n\t\t} );\n\n\t\tif ( savedRecord ) {\n\t\t\t// translators: Comment resolved successfully\n\t\t\tcreateNotice( 'snackbar', __( 'Comment marked as resolved.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t} else {\n\t\t\tonError();\n\t\t}\n\t};\n\n\tconst onEditComment = async ( commentId, comment ) => {\n\t\tconst savedRecord = await saveEntityRecord( 'root', 'comment', {\n\t\t\tid: commentId,\n\t\t\tcontent: comment,\n\t\t} );\n\n\t\tif ( savedRecord ) {\n\t\t\tcreateNotice(\n\t\t\t\t'snackbar',\n\t\t\t\t// translators: Comment edited successfully\n\t\t\t\t__( 'Comment edited successfully.' ),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tisDismissible: true,\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tonError();\n\t\t}\n\t};\n\n\tconst onError = () => {\n\t\tcreateNotice(\n\t\t\t'error',\n\t\t\t// translators: Error message when comment submission fails\n\t\t\t__(\n\t\t\t\t'Something went wrong. Please try publishing the post, or you may have already submitted your comment earlier.'\n\t\t\t),\n\t\t\t{\n\t\t\t\tisDismissible: true,\n\t\t\t}\n\t\t);\n\t};\n\n\tconst onCommentDelete = async ( commentId ) => {\n\t\tconst childComment = await getEntityRecord(\n\t\t\t'root',\n\t\t\t'comment',\n\t\t\tcommentId\n\t\t);\n\t\tawait deleteEntityRecord( 'root', 'comment', commentId );\n\n\t\tif ( childComment && ! childComment.parent ) {\n\t\t\tupdateBlockAttributes( clientId, {\n\t\t\t\tblockCommentId: undefined,\n\t\t\t} );\n\t\t}\n\n\t\tcreateNotice(\n\t\t\t'snackbar',\n\t\t\t// translators: Comment deleted successfully\n\t\t\t__( 'Comment deleted successfully.' ),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tisDismissible: true,\n\t\t\t}\n\t\t);\n\t};\n\n\tuseEffect( () => {\n\t\tif ( blockDetails ) {\n\t\t\tsetBlockCommentID( blockDetails?.attributes.blockCommentId );\n\t\t}\n\t}, [ postId, clientId ] );\n\n\t// Check if the experimental flag is enabled.\n\tif (\n\t\t! isBlockCommentExperimentEnabled ||\n\t\tpostStatus.postStatus === 'publish'\n\t) {\n\t\treturn null; // or maybe return some message indicating no threads are available.\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ ! blockCommentID && (\n\t\t\t\t<AddCommentButton onClick={ openCollabBoard } />\n\t\t\t) }\n\n\t\t\t{ blockCommentID > 0 && (\n\t\t\t\t<AddCommentToolbarButton onClick={ openCollabBoard } />\n\t\t\t) }\n\t\t\t<PluginSidebar\n\t\t\t\tidentifier={ collabSidebarName }\n\t\t\t\t// translators: Comments sidebar title\n\t\t\t\ttitle={ __( 'Comments' ) }\n\t\t\t\ticon={ commentIcon }\n\t\t\t>\n\t\t\t\t<div className=\"editor-collab-sidebar-panel\">\n\t\t\t\t\t<AddComment\n\t\t\t\t\t\tthreads={ resultComments }\n\t\t\t\t\t\tonSubmit={ addNewComment }\n\t\t\t\t\t\tshowCommentBoard={ showCommentBoard }\n\t\t\t\t\t\tsetShowCommentBoard={ setShowCommentBoard }\n\t\t\t\t\t/>\n\t\t\t\t\t<Comments\n\t\t\t\t\t\tthreads={ resultComments }\n\t\t\t\t\t\tonEditComment={ onEditComment }\n\t\t\t\t\t\tonAddReply={ addNewComment }\n\t\t\t\t\t\tonCommentDelete={ onCommentDelete }\n\t\t\t\t\t\tonCommentResolve={ onCommentResolve }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</PluginSidebar>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["__","useSelect","useDispatch","resolveSelect","useState","useMemo","comment","commentIcon","addFilter","store","noticesStore","coreStore","blockEditorStore","interfaceStore","PluginSidebar","collabSidebarName","Comments","AddComment","editorStore","AddCommentButton","AddCommentToolbarButton","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","isBlockCommentExperimentEnabled","window","__experimentalEnableBlockComment","modifyBlockCommentAttributes","settings","attributes","blockCommentId","type","CollabSidebarContent","showCommentBoard","setShowCommentBoard","createNotice","saveEntityRecord","deleteEntityRecord","getEntityRecord","postId","threads","select","getCurrentPostId","_postId","data","getEntityRecords","post","status","per_page","getSelectedBlockClientId","updateBlockAttributes","resultComments","compare","result","filteredComments","filter","forEach","item","id","reply","parent","push","addNewComment","parentCommentId","args","content","comment_type","comment_approved","updatedArgs","savedRecord","isDismissible","onError","onCommentResolve","commentId","onEditComment","onCommentDelete","childComment","undefined","className","children","onSubmit","onAddReply","CollabSidebar","enableComplementaryArea","postStatus","getEditedPostAttribute","getBlockAttributes","_clientId","openCollabBoard","AddCommentComponent","onClick","identifier","title","icon"],"sources":["@wordpress/editor/src/components/collab-sidebar/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch, resolveSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\nimport { comment as commentIcon } from '@wordpress/icons';\nimport { addFilter } from '@wordpress/hooks';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as interfaceStore } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport PluginSidebar from '../plugin-sidebar';\nimport { collabSidebarName } from './constants';\nimport { Comments } from './comments';\nimport { AddComment } from './add-comment';\nimport { store as editorStore } from '../../store';\nimport AddCommentButton from './comment-button';\nimport AddCommentToolbarButton from './comment-button-toolbar';\n\nconst isBlockCommentExperimentEnabled =\n\twindow?.__experimentalEnableBlockComment;\nconst modifyBlockCommentAttributes = ( settings ) => {\n\tif ( ! settings.attributes.blockCommentId ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tblockCommentId: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n};\n\n// Apply the filter to all core blocks\naddFilter(\n\t'blocks.registerBlockType',\n\t'block-comment/modify-core-block-attributes',\n\tmodifyBlockCommentAttributes\n);\n\nfunction CollabSidebarContent( { showCommentBoard, setShowCommentBoard } ) {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst { saveEntityRecord, deleteEntityRecord } = useDispatch( coreStore );\n\tconst { getEntityRecord } = resolveSelect( coreStore );\n\n\tconst { postId, threads } = useSelect( ( select ) => {\n\t\tconst { getCurrentPostId } = select( editorStore );\n\t\tconst _postId = getCurrentPostId();\n\t\tconst data = !! _postId\n\t\t\t? select( coreStore ).getEntityRecords( 'root', 'comment', {\n\t\t\t\t\tpost: _postId,\n\t\t\t\t\ttype: 'block_comment',\n\t\t\t\t\tstatus: 'any',\n\t\t\t\t\tper_page: 100,\n\t\t\t } )\n\t\t\t: null;\n\n\t\treturn {\n\t\t\tpostId: _postId,\n\t\t\tthreads: data,\n\t\t};\n\t}, [] );\n\n\tconst { getSelectedBlockClientId } = useSelect( blockEditorStore );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\t// Process comments to build the tree structure\n\tconst resultComments = 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 filteredComments = ( threads ?? [] ).filter(\n\t\t\t( comment ) => comment.status !== 'trash'\n\t\t);\n\n\t\t// Initialize each object with an empty `reply` array\n\t\tfilteredComments.forEach( ( item ) => {\n\t\t\tcompare[ item.id ] = { ...item, reply: [] };\n\t\t} );\n\n\t\t// Iterate over the data to build the tree structure\n\t\tfilteredComments.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\treturn result;\n\t}, [ threads ] );\n\n\t// Function to save the comment.\n\tconst addNewComment = async ( comment, parentCommentId ) => {\n\t\tconst args = {\n\t\t\tpost: postId,\n\t\t\tcontent: comment,\n\t\t\tcomment_type: 'block_comment',\n\t\t\tcomment_approved: 0,\n\t\t};\n\n\t\t// Create a new object, conditionally including the parent property\n\t\tconst updatedArgs = {\n\t\t\t...args,\n\t\t\t...( parentCommentId ? { parent: parentCommentId } : {} ),\n\t\t};\n\n\t\tconst savedRecord = await saveEntityRecord(\n\t\t\t'root',\n\t\t\t'comment',\n\t\t\tupdatedArgs\n\t\t);\n\n\t\tif ( savedRecord ) {\n\t\t\t// If it's a main comment, update the block attributes with the comment id.\n\t\t\tif ( ! parentCommentId ) {\n\t\t\t\tupdateBlockAttributes( getSelectedBlockClientId(), {\n\t\t\t\t\tblockCommentId: savedRecord?.id,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tcreateNotice(\n\t\t\t\t'snackbar',\n\t\t\t\tparentCommentId\n\t\t\t\t\t? // translators: Reply added successfully\n\t\t\t\t\t __( 'Reply added successfully.' )\n\t\t\t\t\t: // translators: Comment added successfully\n\t\t\t\t\t __( 'Comment added successfully.' ),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tisDismissible: true,\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tonError();\n\t\t}\n\t};\n\n\tconst onCommentResolve = async ( commentId ) => {\n\t\tconst savedRecord = await saveEntityRecord( 'root', 'comment', {\n\t\t\tid: commentId,\n\t\t\tstatus: 'approved',\n\t\t} );\n\n\t\tif ( savedRecord ) {\n\t\t\t// translators: Comment resolved successfully\n\t\t\tcreateNotice( 'snackbar', __( 'Comment marked as resolved.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t} else {\n\t\t\tonError();\n\t\t}\n\t};\n\n\tconst onEditComment = async ( commentId, comment ) => {\n\t\tconst savedRecord = await saveEntityRecord( 'root', 'comment', {\n\t\t\tid: commentId,\n\t\t\tcontent: comment,\n\t\t} );\n\n\t\tif ( savedRecord ) {\n\t\t\tcreateNotice(\n\t\t\t\t'snackbar',\n\t\t\t\t// translators: Comment edited successfully\n\t\t\t\t__( 'Comment edited successfully.' ),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tisDismissible: true,\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tonError();\n\t\t}\n\t};\n\n\tconst onError = () => {\n\t\tcreateNotice(\n\t\t\t'error',\n\t\t\t// translators: Error message when comment submission fails\n\t\t\t__(\n\t\t\t\t'Something went wrong. Please try publishing the post, or you may have already submitted your comment earlier.'\n\t\t\t),\n\t\t\t{\n\t\t\t\tisDismissible: true,\n\t\t\t}\n\t\t);\n\t};\n\n\tconst onCommentDelete = async ( commentId ) => {\n\t\tconst childComment = await getEntityRecord(\n\t\t\t'root',\n\t\t\t'comment',\n\t\t\tcommentId\n\t\t);\n\t\tawait deleteEntityRecord( 'root', 'comment', commentId );\n\n\t\tif ( childComment && ! childComment.parent ) {\n\t\t\tupdateBlockAttributes( getSelectedBlockClientId(), {\n\t\t\t\tblockCommentId: undefined,\n\t\t\t} );\n\t\t}\n\n\t\tcreateNotice(\n\t\t\t'snackbar',\n\t\t\t// translators: Comment deleted successfully\n\t\t\t__( 'Comment deleted successfully.' ),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tisDismissible: true,\n\t\t\t}\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className=\"editor-collab-sidebar-panel\">\n\t\t\t<AddComment\n\t\t\t\tonSubmit={ addNewComment }\n\t\t\t\tshowCommentBoard={ showCommentBoard }\n\t\t\t\tsetShowCommentBoard={ setShowCommentBoard }\n\t\t\t/>\n\t\t\t<Comments\n\t\t\t\tthreads={ resultComments }\n\t\t\t\tonEditComment={ onEditComment }\n\t\t\t\tonAddReply={ addNewComment }\n\t\t\t\tonCommentDelete={ onCommentDelete }\n\t\t\t\tonCommentResolve={ onCommentResolve }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\n/**\n * Renders the Collab sidebar.\n */\nexport default function CollabSidebar() {\n\tconst [ showCommentBoard, setShowCommentBoard ] = useState( false );\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\n\tconst { postStatus } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostStatus:\n\t\t\t\tselect( editorStore ).getEditedPostAttribute( 'status' ),\n\t\t};\n\t}, [] );\n\n\tconst { blockCommentId } = useSelect( ( select ) => {\n\t\tconst { getBlockAttributes, getSelectedBlockClientId } =\n\t\t\tselect( blockEditorStore );\n\t\tconst _clientId = getSelectedBlockClientId();\n\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\n\tconst openCollabBoard = () => {\n\t\tsetShowCommentBoard( true );\n\t\tenableComplementaryArea( 'core', 'edit-post/collab-sidebar' );\n\t};\n\n\t// Check if the experimental flag is enabled.\n\tif ( ! isBlockCommentExperimentEnabled || postStatus === 'publish' ) {\n\t\treturn null; // or maybe return some message indicating no threads are available.\n\t}\n\n\tconst AddCommentComponent = blockCommentId\n\t\t? AddCommentToolbarButton\n\t\t: AddCommentButton;\n\n\treturn (\n\t\t<>\n\t\t\t<AddCommentComponent onClick={ openCollabBoard } />\n\t\t\t<PluginSidebar\n\t\t\t\tidentifier={ collabSidebarName }\n\t\t\t\t// translators: Comments sidebar title\n\t\t\t\ttitle={ __( 'Comments' ) }\n\t\t\t\ticon={ commentIcon }\n\t\t\t>\n\t\t\t\t<CollabSidebarContent\n\t\t\t\t\tshowCommentBoard={ showCommentBoard }\n\t\t\t\t\tsetShowCommentBoard={ setShowCommentBoard }\n\t\t\t\t/>\n\t\t\t</PluginSidebar>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,29 +2,31 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
5
|
-
import { __, isRTL } from '@wordpress/i18n';
|
|
6
|
-
import { blockDefault, code, drawerLeft, drawerRight, edit, formatListBullets, listView, external, keyboard, symbol } from '@wordpress/icons';
|
|
5
|
+
import { __, isRTL, sprintf } from '@wordpress/i18n';
|
|
6
|
+
import { blockDefault, code, drawerLeft, drawerRight, edit, formatListBullets, listView, external, keyboard, symbol, page, layout, rotateRight, rotateLeft } from '@wordpress/icons';
|
|
7
7
|
import { useCommandLoader } from '@wordpress/commands';
|
|
8
8
|
import { store as preferencesStore } from '@wordpress/preferences';
|
|
9
9
|
import { store as noticesStore } from '@wordpress/notices';
|
|
10
10
|
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
11
|
-
import { store as coreStore } from '@wordpress/core-data';
|
|
11
|
+
import { store as coreStore, useEntityRecord } from '@wordpress/core-data';
|
|
12
12
|
import { store as interfaceStore } from '@wordpress/interface';
|
|
13
|
+
import { decodeEntities } from '@wordpress/html-entities';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Internal dependencies
|
|
16
17
|
*/
|
|
18
|
+
import { unlock } from '../../lock-unlock';
|
|
17
19
|
import { store as editorStore } from '../../store';
|
|
18
|
-
import { PATTERN_POST_TYPE } from '../../store/constants';
|
|
20
|
+
import { PATTERN_POST_TYPE, TEMPLATE_PART_POST_TYPE, TEMPLATE_POST_TYPE } from '../../store/constants';
|
|
19
21
|
import { modalName as patternRenameModalName } from '../pattern-rename-modal';
|
|
20
22
|
import { modalName as patternDuplicateModalName } from '../pattern-duplicate-modal';
|
|
21
|
-
|
|
23
|
+
import isTemplateRevertable from '../../store/utils/is-template-revertable';
|
|
24
|
+
const getEditorCommandLoader = () => function useEditorCommandLoader() {
|
|
22
25
|
const {
|
|
23
26
|
editorMode,
|
|
24
27
|
isListViewOpen,
|
|
25
28
|
showBlockBreadcrumbs,
|
|
26
29
|
isDistractionFree,
|
|
27
|
-
isTopToolbar,
|
|
28
30
|
isFocusMode,
|
|
29
31
|
isPreviewMode,
|
|
30
32
|
isViewable,
|
|
@@ -53,7 +55,6 @@ function useEditorCommandLoader() {
|
|
|
53
55
|
showBlockBreadcrumbs: get('core', 'showBlockBreadcrumbs'),
|
|
54
56
|
isDistractionFree: get('core', 'distractionFree'),
|
|
55
57
|
isFocusMode: get('core', 'focusMode'),
|
|
56
|
-
isTopToolbar: get('core', 'fixedToolbar'),
|
|
57
58
|
isPreviewMode: getSettings().isPreviewMode,
|
|
58
59
|
isViewable: (_getPostType$viewable = getPostType(getCurrentPostType())?.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false,
|
|
59
60
|
isCodeEditingEnabled: getEditorSettings().codeEditingEnabled,
|
|
@@ -74,7 +75,9 @@ function useEditorCommandLoader() {
|
|
|
74
75
|
__unstableSaveForPreview,
|
|
75
76
|
setIsListViewOpened,
|
|
76
77
|
switchEditorMode,
|
|
77
|
-
toggleDistractionFree
|
|
78
|
+
toggleDistractionFree,
|
|
79
|
+
toggleSpotlightMode,
|
|
80
|
+
toggleTopToolbar
|
|
78
81
|
} = useDispatch(editorStore);
|
|
79
82
|
const {
|
|
80
83
|
openModal,
|
|
@@ -129,18 +132,8 @@ function useEditorCommandLoader() {
|
|
|
129
132
|
callback: ({
|
|
130
133
|
close
|
|
131
134
|
}) => {
|
|
132
|
-
|
|
135
|
+
toggleSpotlightMode();
|
|
133
136
|
close();
|
|
134
|
-
createInfoNotice(isFocusMode ? __('Spotlight off.') : __('Spotlight on.'), {
|
|
135
|
-
id: 'core/editor/toggle-spotlight-mode/notice',
|
|
136
|
-
type: 'snackbar',
|
|
137
|
-
actions: [{
|
|
138
|
-
label: __('Undo'),
|
|
139
|
-
onClick: () => {
|
|
140
|
-
toggle('core', 'focusMode');
|
|
141
|
-
}
|
|
142
|
-
}]
|
|
143
|
-
});
|
|
144
137
|
}
|
|
145
138
|
});
|
|
146
139
|
commands.push({
|
|
@@ -164,21 +157,8 @@ function useEditorCommandLoader() {
|
|
|
164
157
|
callback: ({
|
|
165
158
|
close
|
|
166
159
|
}) => {
|
|
167
|
-
|
|
168
|
-
if (isDistractionFree) {
|
|
169
|
-
toggleDistractionFree();
|
|
170
|
-
}
|
|
160
|
+
toggleTopToolbar();
|
|
171
161
|
close();
|
|
172
|
-
createInfoNotice(isTopToolbar ? __('Top toolbar off.') : __('Top toolbar on.'), {
|
|
173
|
-
id: 'core/editor/toggle-top-toolbar/notice',
|
|
174
|
-
type: 'snackbar',
|
|
175
|
-
actions: [{
|
|
176
|
-
label: __('Undo'),
|
|
177
|
-
onClick: () => {
|
|
178
|
-
toggle('core', 'fixedToolbar');
|
|
179
|
-
}
|
|
180
|
-
}]
|
|
181
|
-
});
|
|
182
162
|
}
|
|
183
163
|
});
|
|
184
164
|
if (allowSwitchEditorMode) {
|
|
@@ -274,8 +254,8 @@ function useEditorCommandLoader() {
|
|
|
274
254
|
commands,
|
|
275
255
|
isLoading: false
|
|
276
256
|
};
|
|
277
|
-
}
|
|
278
|
-
function useEditedEntityContextualCommands() {
|
|
257
|
+
};
|
|
258
|
+
const getEditedEntityContextualCommands = () => function useEditedEntityContextualCommands() {
|
|
279
259
|
const {
|
|
280
260
|
postType
|
|
281
261
|
} = useSelect(select => {
|
|
@@ -318,16 +298,143 @@ function useEditedEntityContextualCommands() {
|
|
|
318
298
|
isLoading: false,
|
|
319
299
|
commands
|
|
320
300
|
};
|
|
321
|
-
}
|
|
301
|
+
};
|
|
302
|
+
const getPageContentFocusCommands = () => function usePageContentFocusCommands() {
|
|
303
|
+
const {
|
|
304
|
+
onNavigateToEntityRecord,
|
|
305
|
+
goBack,
|
|
306
|
+
templateId,
|
|
307
|
+
isPreviewMode
|
|
308
|
+
} = useSelect(select => {
|
|
309
|
+
const {
|
|
310
|
+
getRenderingMode,
|
|
311
|
+
getEditorSettings: _getEditorSettings,
|
|
312
|
+
getCurrentTemplateId
|
|
313
|
+
} = unlock(select(editorStore));
|
|
314
|
+
const editorSettings = _getEditorSettings();
|
|
315
|
+
return {
|
|
316
|
+
isTemplateHidden: getRenderingMode() === 'post-only',
|
|
317
|
+
onNavigateToEntityRecord: editorSettings.onNavigateToEntityRecord,
|
|
318
|
+
getEditorSettings: _getEditorSettings,
|
|
319
|
+
goBack: editorSettings.onNavigateToPreviousEntityRecord,
|
|
320
|
+
templateId: getCurrentTemplateId(),
|
|
321
|
+
isPreviewMode: editorSettings.isPreviewMode
|
|
322
|
+
};
|
|
323
|
+
}, []);
|
|
324
|
+
const {
|
|
325
|
+
editedRecord: template,
|
|
326
|
+
hasResolved
|
|
327
|
+
} = useEntityRecord('postType', 'wp_template', templateId);
|
|
328
|
+
if (isPreviewMode) {
|
|
329
|
+
return {
|
|
330
|
+
isLoading: false,
|
|
331
|
+
commands: []
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
const commands = [];
|
|
335
|
+
if (templateId && hasResolved) {
|
|
336
|
+
commands.push({
|
|
337
|
+
name: 'core/switch-to-template-focus',
|
|
338
|
+
label: sprintf(/* translators: %s: template title */
|
|
339
|
+
__('Edit template: %s'), decodeEntities(template.title)),
|
|
340
|
+
icon: layout,
|
|
341
|
+
callback: ({
|
|
342
|
+
close
|
|
343
|
+
}) => {
|
|
344
|
+
onNavigateToEntityRecord({
|
|
345
|
+
postId: templateId,
|
|
346
|
+
postType: 'wp_template'
|
|
347
|
+
});
|
|
348
|
+
close();
|
|
349
|
+
}
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
if (!!goBack) {
|
|
353
|
+
commands.push({
|
|
354
|
+
name: 'core/switch-to-previous-entity',
|
|
355
|
+
label: __('Go back'),
|
|
356
|
+
icon: page,
|
|
357
|
+
callback: ({
|
|
358
|
+
close
|
|
359
|
+
}) => {
|
|
360
|
+
goBack();
|
|
361
|
+
close();
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
return {
|
|
366
|
+
isLoading: false,
|
|
367
|
+
commands
|
|
368
|
+
};
|
|
369
|
+
};
|
|
370
|
+
const getManipulateDocumentCommands = () => function useManipulateDocumentCommands() {
|
|
371
|
+
const {
|
|
372
|
+
postType,
|
|
373
|
+
postId
|
|
374
|
+
} = useSelect(select => {
|
|
375
|
+
const {
|
|
376
|
+
getCurrentPostId,
|
|
377
|
+
getCurrentPostType
|
|
378
|
+
} = select(editorStore);
|
|
379
|
+
return {
|
|
380
|
+
postType: getCurrentPostType(),
|
|
381
|
+
postId: getCurrentPostId()
|
|
382
|
+
};
|
|
383
|
+
}, []);
|
|
384
|
+
const {
|
|
385
|
+
editedRecord: template,
|
|
386
|
+
hasResolved
|
|
387
|
+
} = useEntityRecord('postType', postType, postId);
|
|
388
|
+
// eslint-disable-next-line @wordpress/no-unused-vars-before-return
|
|
389
|
+
const {
|
|
390
|
+
revertTemplate
|
|
391
|
+
} = unlock(useDispatch(editorStore));
|
|
392
|
+
if (!hasResolved || ![TEMPLATE_PART_POST_TYPE, TEMPLATE_POST_TYPE].includes(postType)) {
|
|
393
|
+
return {
|
|
394
|
+
isLoading: true,
|
|
395
|
+
commands: []
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
const commands = [];
|
|
399
|
+
if (isTemplateRevertable(template)) {
|
|
400
|
+
const label = template.type === TEMPLATE_POST_TYPE ? sprintf(/* translators: %s: template title */
|
|
401
|
+
__('Reset template: %s'), decodeEntities(template.title)) : sprintf(/* translators: %s: template part title */
|
|
402
|
+
__('Reset template part: %s'), decodeEntities(template.title));
|
|
403
|
+
commands.push({
|
|
404
|
+
name: 'core/reset-template',
|
|
405
|
+
label,
|
|
406
|
+
icon: isRTL() ? rotateRight : rotateLeft,
|
|
407
|
+
callback: ({
|
|
408
|
+
close
|
|
409
|
+
}) => {
|
|
410
|
+
revertTemplate(template);
|
|
411
|
+
close();
|
|
412
|
+
}
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
return {
|
|
416
|
+
isLoading: !hasResolved,
|
|
417
|
+
commands
|
|
418
|
+
};
|
|
419
|
+
};
|
|
322
420
|
export default function useCommands() {
|
|
323
421
|
useCommandLoader({
|
|
324
422
|
name: 'core/editor/edit-ui',
|
|
325
|
-
hook:
|
|
423
|
+
hook: getEditorCommandLoader()
|
|
326
424
|
});
|
|
327
425
|
useCommandLoader({
|
|
328
426
|
name: 'core/editor/contextual-commands',
|
|
329
|
-
hook:
|
|
427
|
+
hook: getEditedEntityContextualCommands(),
|
|
428
|
+
context: 'entity-edit'
|
|
429
|
+
});
|
|
430
|
+
useCommandLoader({
|
|
431
|
+
name: 'core/editor/page-content-focus',
|
|
432
|
+
hook: getPageContentFocusCommands(),
|
|
330
433
|
context: 'entity-edit'
|
|
331
434
|
});
|
|
435
|
+
useCommandLoader({
|
|
436
|
+
name: 'core/edit-site/manipulate-document',
|
|
437
|
+
hook: getManipulateDocumentCommands()
|
|
438
|
+
});
|
|
332
439
|
}
|
|
333
440
|
//# sourceMappingURL=index.js.map
|