@wordpress/editor 14.30.1-next.a730c9c8c.0 → 14.31.1-next.f56bd8138.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/comment-author-info.js +2 -2
- package/build/components/collab-sidebar/comment-author-info.js.map +1 -1
- package/build/components/collab-sidebar/comments.js +87 -25
- package/build/components/collab-sidebar/comments.js.map +1 -1
- package/build/components/collab-sidebar/index.js +4 -1
- package/build/components/collab-sidebar/index.js.map +1 -1
- package/build/components/post-excerpt/panel.js +5 -2
- package/build/components/post-excerpt/panel.js.map +1 -1
- package/build/components/post-template/hooks.js +20 -5
- package/build/components/post-template/hooks.js.map +1 -1
- package/build/components/post-type-support-check/index.js +12 -1
- package/build/components/post-type-support-check/index.js.map +1 -1
- package/build/components/provider/index.js +1 -1
- package/build/components/provider/index.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-module/components/collab-sidebar/comment-author-info.js +3 -3
- package/build-module/components/collab-sidebar/comment-author-info.js.map +1 -1
- package/build-module/components/collab-sidebar/comments.js +91 -30
- package/build-module/components/collab-sidebar/comments.js.map +1 -1
- package/build-module/components/collab-sidebar/index.js +4 -1
- package/build-module/components/collab-sidebar/index.js.map +1 -1
- package/build-module/components/post-excerpt/panel.js +5 -2
- package/build-module/components/post-excerpt/panel.js.map +1 -1
- package/build-module/components/post-template/hooks.js +20 -5
- package/build-module/components/post-template/hooks.js.map +1 -1
- package/build-module/components/post-type-support-check/index.js +11 -1
- package/build-module/components/post-type-support-check/index.js.map +1 -1
- package/build-module/components/provider/index.js +1 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/dataviews/store/private-actions.js +1 -1
- package/build-module/dataviews/store/private-actions.js.map +1 -1
- package/build-style/style-rtl.css +13 -0
- package/build-style/style.css +13 -0
- package/build-types/components/collab-sidebar/comment-author-info.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/comments.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
- package/build-types/components/post-template/hooks.d.ts +1 -1
- package/build-types/components/post-template/hooks.d.ts.map +1 -1
- package/build-types/components/post-type-support-check/index.d.ts.map +1 -1
- package/build-types/components/provider/index.d.ts.map +1 -1
- package/package.json +37 -37
- package/src/components/collab-sidebar/comment-author-info.js +4 -1
- package/src/components/collab-sidebar/comments.js +97 -39
- package/src/components/collab-sidebar/index.js +3 -1
- package/src/components/collab-sidebar/style.scss +84 -84
- package/src/components/post-excerpt/panel.js +6 -1
- package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +2 -2
- package/src/components/post-template/hooks.js +23 -7
- package/src/components/post-type-support-check/index.js +18 -1
- package/src/components/post-type-support-check/test/index.js +37 -0
- package/src/components/provider/index.js +4 -1
- package/src/dataviews/store/private-actions.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","useState","RawHTML","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalConfirmDialog","ConfirmDialog","Button","DropdownMenu","published","moreVertical","__","_x","_n","sprintf","useSelect","store","blockEditorStore","CommentAuthorInfo","CommentForm","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Comments","threads","onEditComment","onAddReply","onCommentDelete","onCommentResolve","onCommentReopen","showCommentBoard","setShowCommentBoard","blockCommentId","select","getBlockAttributes","getSelectedBlockClientId","_clientId","focusThread","setFocusThread","clearThreadFocus","children","Array","isArray","length","alignment","className","justify","spacing","map","thread","id","onClick","Thread","isFocused","CommentBoard","onResolve","onReopen","onEdit","onDelete","status","reply","__next40pxDefaultSize","variant","onSubmit","inputComment","onCancel","event","stopPropagation","placeholderText","submitButtonText","rows","actionState","setActionState","showConfirmDialog","setShowConfirmDialog","handleConfirmDelete","handleCancel","actions","title","moreActions","filter","item","avatar","author_avatar_urls","name","author_name","date","parent","label","size","icon","disabled","accessibleWhenDisabled","controls","value","content","rendered","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\tDropdownMenu,\n} from '@wordpress/components';\nimport { published, moreVertical } from '@wordpress/icons';\nimport { __, _x, _n, sprintf } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport CommentAuthorInfo from './comment-author-info';\nimport CommentForm from './comment-form';\n\n/**\n * Renders the Comments component.\n *\n * @param {Object} props - The component props.\n * @param {Array} props.threads - The array of comment threads.\n * @param {Function} props.onEditComment - The function to handle comment editing.\n * @param {Function} props.onAddReply - The function to add a reply to a comment.\n * @param {Function} props.onCommentDelete - The function to delete a comment.\n * @param {Function} props.onCommentResolve - The function to mark a comment as resolved.\n * @param {Function} props.onCommentReopen - The function to reopen a resolved comment.\n * @param {boolean} props.showCommentBoard - Whether to show the comment board.\n * @param {Function} props.setShowCommentBoard - The function to set the comment board visibility.\n * @return {React.ReactNode} The rendered Comments component.\n */\nexport function Comments( {\n\tthreads,\n\tonEditComment,\n\tonAddReply,\n\tonCommentDelete,\n\tonCommentResolve,\n\tonCommentReopen,\n\tshowCommentBoard,\n\tsetShowCommentBoard,\n} ) {\n\tconst { blockCommentId } = 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 [ focusThread, setFocusThread ] = useState(\n\t\tshowCommentBoard && blockCommentId ? blockCommentId : null\n\t);\n\n\tconst clearThreadFocus = () => {\n\t\tsetFocusThread( null );\n\t\tsetShowCommentBoard( false );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// If there are no comments, show a message indicating no comments are available.\n\t\t\t\t( ! Array.isArray( threads ) || threads.length === 0 ) && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__thread\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\tspacing=\"3\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// translators: message displayed when there are no comments available\n\t\t\t\t\t\t\t__( 'No comments available' )\n\t\t\t\t\t\t}\n\t\t\t\t\t</VStack>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ Array.isArray( threads ) &&\n\t\t\t\tthreads.length > 0 &&\n\t\t\t\tthreads.map( ( thread ) => (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tkey={ thread.id }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'editor-collab-sidebar-panel__thread',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'editor-collab-sidebar-panel__active-thread':\n\t\t\t\t\t\t\t\t\tblockCommentId &&\n\t\t\t\t\t\t\t\t\tblockCommentId === thread.id,\n\t\t\t\t\t\t\t\t'editor-collab-sidebar-panel__focus-thread':\n\t\t\t\t\t\t\t\t\tfocusThread && focusThread === thread.id,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tid={ thread.id }\n\t\t\t\t\t\tspacing=\"3\"\n\t\t\t\t\t\tonClick={ () => setFocusThread( thread.id ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Thread\n\t\t\t\t\t\t\tthread={ thread }\n\t\t\t\t\t\t\tonAddReply={ onAddReply }\n\t\t\t\t\t\t\tonCommentDelete={ onCommentDelete }\n\t\t\t\t\t\t\tonCommentResolve={ onCommentResolve }\n\t\t\t\t\t\t\tonCommentReopen={ onCommentReopen }\n\t\t\t\t\t\t\tonEditComment={ onEditComment }\n\t\t\t\t\t\t\tisFocused={ focusThread === thread.id }\n\t\t\t\t\t\t\tclearThreadFocus={ clearThreadFocus }\n\t\t\t\t\t\t\tsetFocusThread={ setFocusThread }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nfunction Thread( {\n\tthread,\n\tonEditComment,\n\tonAddReply,\n\tonCommentDelete,\n\tonCommentResolve,\n\tonCommentReopen,\n\tisFocused,\n\tclearThreadFocus,\n\tsetFocusThread,\n} ) {\n\treturn (\n\t\t<>\n\t\t\t<CommentBoard\n\t\t\t\tthread={ thread }\n\t\t\t\tonResolve={ onCommentResolve }\n\t\t\t\tonReopen={ onCommentReopen }\n\t\t\t\tonEdit={ onEditComment }\n\t\t\t\tonDelete={ onCommentDelete }\n\t\t\t\tstatus={ thread.status }\n\t\t\t/>\n\t\t\t{ 0 < thread?.reply?.length && (\n\t\t\t\t<>\n\t\t\t\t\t{ ! isFocused && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__show-more-reply\"\n\t\t\t\t\t\t\tonClick={ () => setFocusThread( thread.id ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: number of replies.\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'%s more reply',\n\t\t\t\t\t\t\t\t\t'%s more replies',\n\t\t\t\t\t\t\t\t\tthread?.reply?.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tthread?.reply?.length\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ isFocused &&\n\t\t\t\t\t\tthread.reply.map( ( reply ) => (\n\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\tkey={ reply.id }\n\t\t\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__child-thread\"\n\t\t\t\t\t\t\t\tid={ reply.id }\n\t\t\t\t\t\t\t\tspacing=\"2\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ 'approved' !== thread.status && (\n\t\t\t\t\t\t\t\t\t<CommentBoard\n\t\t\t\t\t\t\t\t\t\tthread={ reply }\n\t\t\t\t\t\t\t\t\t\tonEdit={ onEditComment }\n\t\t\t\t\t\t\t\t\t\tonDelete={ onCommentDelete }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ 'approved' === thread.status && (\n\t\t\t\t\t\t\t\t\t<CommentBoard thread={ reply } />\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ isFocused && (\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__child-thread\"\n\t\t\t\t\tspacing=\"2\"\n\t\t\t\t>\n\t\t\t\t\t<HStack alignment=\"left\" spacing=\"3\" justify=\"flex-start\">\n\t\t\t\t\t\t<CommentAuthorInfo />\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tspacing=\"3\"\n\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__comment-field\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<CommentForm\n\t\t\t\t\t\t\tonSubmit={ ( inputComment ) => {\n\t\t\t\t\t\t\t\tif ( 'approved' === thread.status ) {\n\t\t\t\t\t\t\t\t\tonCommentReopen( thread.id );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonAddReply( inputComment, thread.id );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonCancel={ ( event ) => {\n\t\t\t\t\t\t\t\tevent.stopPropagation(); // Prevent the parent onClick from being triggered\n\t\t\t\t\t\t\t\tclearThreadFocus();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tplaceholderText={\n\t\t\t\t\t\t\t\t'approved' === thread.status &&\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Adding a comment will re-open this discussion….'\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsubmitButtonText={\n\t\t\t\t\t\t\t\t'approved' === thread.status\n\t\t\t\t\t\t\t\t\t? _x(\n\t\t\t\t\t\t\t\t\t\t\t'Reopen & Reply',\n\t\t\t\t\t\t\t\t\t\t\t'Reopen comment and add reply'\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: _x( 'Reply', 'Add reply comment' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trows={ 'approved' === thread.status ? 2 : 4 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nconst CommentBoard = ( {\n\tthread,\n\tonResolve,\n\tonReopen,\n\tonEdit,\n\tonDelete,\n\tstatus,\n} ) => {\n\tconst [ actionState, setActionState ] = useState( false );\n\tconst [ showConfirmDialog, setShowConfirmDialog ] = useState( false );\n\n\tconst handleConfirmDelete = () => {\n\t\tonDelete( thread.id );\n\t\tsetActionState( false );\n\t\tsetShowConfirmDialog( false );\n\t};\n\n\tconst handleCancel = () => {\n\t\tsetActionState( false );\n\t\tsetShowConfirmDialog( false );\n\t};\n\n\tconst actions = [\n\t\tonEdit &&\n\t\t\tstatus !== 'approved' && {\n\t\t\t\ttitle: _x( 'Edit', 'Edit comment' ),\n\t\t\t\tonClick: () => {\n\t\t\t\t\tsetActionState( 'edit' );\n\t\t\t\t},\n\t\t\t},\n\t\tonDelete && {\n\t\t\ttitle: _x( 'Delete', 'Delete comment' ),\n\t\t\tonClick: () => {\n\t\t\t\tsetActionState( 'delete' );\n\t\t\t\tsetShowConfirmDialog( true );\n\t\t\t},\n\t\t},\n\t\tonReopen &&\n\t\t\tstatus === 'approved' && {\n\t\t\t\ttitle: _x( 'Reopen', 'Reopen comment' ),\n\t\t\t\tonClick: () => {\n\t\t\t\t\tonReopen( thread.id );\n\t\t\t\t},\n\t\t\t},\n\t];\n\n\tconst moreActions = actions.filter( ( item ) => item?.onClick );\n\n\treturn (\n\t\t<>\n\t\t\t<HStack alignment=\"left\" spacing=\"3\" justify=\"flex-start\">\n\t\t\t\t<CommentAuthorInfo\n\t\t\t\t\tavatar={ thread?.author_avatar_urls?.[ 48 ] }\n\t\t\t\t\tname={ thread?.author_name }\n\t\t\t\t\tdate={ thread?.date }\n\t\t\t\t/>\n\t\t\t\t<span className=\"editor-collab-sidebar-panel__comment-status\">\n\t\t\t\t\t<HStack alignment=\"right\" justify=\"flex-end\" spacing=\"0\">\n\t\t\t\t\t\t{ 0 === thread?.parent && onResolve && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t\t'Resolve',\n\t\t\t\t\t\t\t\t\t'Mark comment as resolved'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ticon={ published }\n\t\t\t\t\t\t\t\tdisabled={ status === 'approved' }\n\t\t\t\t\t\t\t\taccessibleWhenDisabled={ status === 'approved' }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonResolve( thread.id );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ 0 < moreActions.length && (\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t\t'Select an action',\n\t\t\t\t\t\t\t\t\t'Select comment action'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__comment-dropdown-menu\"\n\t\t\t\t\t\t\t\tcontrols={ moreActions }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</HStack>\n\t\t\t\t</span>\n\t\t\t</HStack>\n\t\t\t{ 'edit' === actionState ? (\n\t\t\t\t<CommentForm\n\t\t\t\t\tonSubmit={ ( value ) => {\n\t\t\t\t\t\tonEdit( thread.id, value );\n\t\t\t\t\t\tsetActionState( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonCancel={ () => handleCancel() }\n\t\t\t\t\tthread={ thread }\n\t\t\t\t\tsubmitButtonText={ _x( 'Update', 'verb' ) }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<RawHTML className=\"editor-collab-sidebar-panel__user-comment\">\n\t\t\t\t\t{ thread?.content?.rendered }\n\t\t\t\t</RawHTML>\n\t\t\t) }\n\t\t\t{ 'delete' === actionState && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen={ showConfirmDialog }\n\t\t\t\t\tonConfirm={ handleConfirmDelete }\n\t\t\t\t\tonCancel={ handleCancel }\n\t\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\t>\n\t\t\t\t\t{\n\t\t\t\t\t\t// translators: message displayed when confirming an action\n\t\t\t\t\t\t__( 'Are you sure you want to delete this comment?' )\n\t\t\t\t\t}\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</>\n\t);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","useState","RawHTML","useEffect","useMemo","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalConfirmDialog","ConfirmDialog","Button","DropdownMenu","published","moreVertical","__","_x","sprintf","_n","useSelect","useDispatch","store","blockEditorStore","privateApis","blockEditorPrivateApis","unlock","CommentAuthorInfo","CommentForm","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","useBlockElement","findBlockByCommentId","commentId","blockList","block","attributes","blockCommentId","clientId","innerBlocks","found","Comments","threads","onEditComment","onAddReply","onCommentDelete","onCommentResolve","onCommentReopen","showCommentBoard","setShowCommentBoard","blocks","select","getBlockAttributes","getSelectedBlockClientId","getBlocks","_clientId","flashBlock","clearThreadFocus","setFocusThread","focusThread","children","Array","isArray","length","alignment","className","justify","spacing","map","thread","Thread","isFocused","id","relatedBlock","relatedBlockElement","handleCommentSelect","threadId","scrollIntoView","behavior","onClick","CommentBoard","onResolve","onReopen","onEdit","onDelete","status","reply","__next40pxDefaultSize","variant","onSubmit","inputComment","onCancel","event","stopPropagation","placeholderText","submitButtonText","rows","actionState","setActionState","showConfirmDialog","setShowConfirmDialog","handleConfirmDelete","handleCancel","actions","title","moreActions","filter","item","avatar","author_avatar_urls","name","author_name","date","parent","label","size","icon","disabled","accessibleWhenDisabled","controls","value","content","rendered","isOpen","onConfirm","confirmButtonText"],"sources":["@wordpress/editor/src/components/collab-sidebar/comments.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useState, RawHTML, useEffect, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tButton,\n\tDropdownMenu,\n} from '@wordpress/components';\n\nimport { published, moreVertical } from '@wordpress/icons';\nimport { __, _x, sprintf, _n } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tstore as blockEditorStore,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport CommentAuthorInfo from './comment-author-info';\nimport CommentForm from './comment-form';\n\nconst { useBlockElement } = unlock( blockEditorPrivateApis );\n\n/**\n * Finds the first block that has the specified comment ID.\n *\n * @param {string} commentId - The comment ID to search for.\n * @param {Array} blockList - The list of blocks to search through.\n * @return {string|null} The client ID of the found block, or null if not found.\n */\nconst findBlockByCommentId = ( commentId, blockList ) => {\n\tfor ( const block of blockList ) {\n\t\tif ( block.attributes?.blockCommentId === commentId ) {\n\t\t\treturn block.clientId;\n\t\t}\n\t\tif ( block.innerBlocks ) {\n\t\t\tconst found = findBlockByCommentId( commentId, block.innerBlocks );\n\t\t\tif ( found ) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/**\n * Renders the Comments component.\n *\n * @param {Object} props - The component props.\n * @param {Array} props.threads - The array of comment threads.\n * @param {Function} props.onEditComment - The function to handle comment editing.\n * @param {Function} props.onAddReply - The function to add a reply to a comment.\n * @param {Function} props.onCommentDelete - The function to delete a comment.\n * @param {Function} props.onCommentResolve - The function to mark a comment as resolved.\n * @param {Function} props.onCommentReopen - The function to reopen a resolved comment.\n * @param {boolean} props.showCommentBoard - Whether to show the comment board.\n * @param {Function} props.setShowCommentBoard - The function to set the comment board visibility.\n * @return {React.ReactNode} The rendered Comments component.\n */\nexport function Comments( {\n\tthreads,\n\tonEditComment,\n\tonAddReply,\n\tonCommentDelete,\n\tonCommentResolve,\n\tonCommentReopen,\n\tshowCommentBoard,\n\tsetShowCommentBoard,\n} ) {\n\tconst { blockCommentId, blocks } = useSelect( ( select ) => {\n\t\tconst { getBlockAttributes, getSelectedBlockClientId, getBlocks } =\n\t\t\tselect( blockEditorStore );\n\t\tconst _clientId = getSelectedBlockClientId();\n\t\treturn {\n\t\t\tblockCommentId: _clientId\n\t\t\t\t? getBlockAttributes( _clientId )?.blockCommentId\n\t\t\t\t: null,\n\t\t\tblocks: getBlocks(),\n\t\t};\n\t}, [] );\n\n\tconst { flashBlock } = useDispatch( blockEditorStore );\n\n\tconst clearThreadFocus = () => {\n\t\tsetFocusThread( null );\n\t\tsetShowCommentBoard( false );\n\t};\n\n\tconst [ focusThread, setFocusThread ] = useState(\n\t\tshowCommentBoard && blockCommentId ? blockCommentId : null\n\t);\n\n\tuseEffect( () => {\n\t\t// Highlight comment when block is selected.\n\t\tif ( blockCommentId && ! focusThread ) {\n\t\t\tsetFocusThread( blockCommentId );\n\t\t}\n\t}, [ blockCommentId, focusThread, blocks, setFocusThread ] );\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// If there are no comments, show a message indicating no comments are available.\n\t\t\t\t( ! Array.isArray( threads ) || threads.length === 0 ) && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__thread\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\tspacing=\"3\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// translators: message displayed when there are no comments available\n\t\t\t\t\t\t\t__( 'No comments available' )\n\t\t\t\t\t\t}\n\t\t\t\t\t</VStack>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ Array.isArray( threads ) &&\n\t\t\t\tthreads.length > 0 &&\n\t\t\t\tthreads.map( ( thread ) => (\n\t\t\t\t\t<Thread\n\t\t\t\t\t\tkey={ thread.id }\n\t\t\t\t\t\tthread={ thread }\n\t\t\t\t\t\tonAddReply={ onAddReply }\n\t\t\t\t\t\tonCommentDelete={ onCommentDelete }\n\t\t\t\t\t\tonCommentResolve={ onCommentResolve }\n\t\t\t\t\t\tonCommentReopen={ onCommentReopen }\n\t\t\t\t\t\tonEditComment={ onEditComment }\n\t\t\t\t\t\tisFocused={ focusThread === thread.id }\n\t\t\t\t\t\tclearThreadFocus={ clearThreadFocus }\n\t\t\t\t\t\tsetFocusThread={ setFocusThread }\n\t\t\t\t\t\tblockCommentId={ blockCommentId }\n\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\tflashBlock={ flashBlock }\n\t\t\t\t\t\tsetShowCommentBoard={ setShowCommentBoard }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nfunction Thread( {\n\tthread,\n\tonEditComment,\n\tonAddReply,\n\tonCommentDelete,\n\tonCommentResolve,\n\tonCommentReopen,\n\tisFocused,\n\tclearThreadFocus,\n\tsetFocusThread,\n\tblocks,\n\tflashBlock,\n\tsetShowCommentBoard,\n} ) {\n\t// Find first block that has this comment ID - run at component root level.\n\tconst relatedBlock = useMemo( () => {\n\t\tif ( ! thread.id || ! blocks ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn findBlockByCommentId( thread.id, blocks );\n\t}, [ thread.id, blocks ] );\n\n\tconst relatedBlockElement = useBlockElement( relatedBlock );\n\n\tconst handleCommentSelect = ( threadId ) => {\n\t\tsetShowCommentBoard( false );\n\t\tsetFocusThread( threadId );\n\t\tif ( relatedBlock && relatedBlockElement ) {\n\t\t\trelatedBlockElement.scrollIntoView( {\n\t\t\t\tbehavior: 'instant',\n\t\t\t\tblock: 'center',\n\t\t\t} );\n\t\t\tflashBlock( relatedBlock );\n\t\t}\n\t};\n\n\treturn (\n\t\t<VStack\n\t\t\tclassName={ clsx( 'editor-collab-sidebar-panel__thread', {\n\t\t\t\t'editor-collab-sidebar-panel__focus-thread': isFocused,\n\t\t\t} ) }\n\t\t\tid={ thread.id }\n\t\t\tspacing=\"3\"\n\t\t\tonClick={ () => handleCommentSelect( thread.id ) }\n\t\t>\n\t\t\t<CommentBoard\n\t\t\t\tthread={ thread }\n\t\t\t\tonResolve={ onCommentResolve }\n\t\t\t\tonReopen={ onCommentReopen }\n\t\t\t\tonEdit={ onEditComment }\n\t\t\t\tonDelete={ onCommentDelete }\n\t\t\t\tstatus={ thread.status }\n\t\t\t/>\n\t\t\t{ 0 < thread?.reply?.length && (\n\t\t\t\t<>\n\t\t\t\t\t{ ! isFocused && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__show-more-reply\"\n\t\t\t\t\t\t\tonClick={ () => setFocusThread( thread.id ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: number of replies.\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'%s more reply',\n\t\t\t\t\t\t\t\t\t'%s more replies',\n\t\t\t\t\t\t\t\t\tthread?.reply?.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tthread?.reply?.length\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ isFocused &&\n\t\t\t\t\t\tthread.reply.map( ( reply ) => (\n\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\tkey={ reply.id }\n\t\t\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__child-thread\"\n\t\t\t\t\t\t\t\tid={ reply.id }\n\t\t\t\t\t\t\t\tspacing=\"2\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ 'approved' !== thread.status && (\n\t\t\t\t\t\t\t\t\t<CommentBoard\n\t\t\t\t\t\t\t\t\t\tthread={ reply }\n\t\t\t\t\t\t\t\t\t\tonEdit={ onEditComment }\n\t\t\t\t\t\t\t\t\t\tonDelete={ onCommentDelete }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ 'approved' === thread.status && (\n\t\t\t\t\t\t\t\t\t<CommentBoard thread={ reply } />\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t) ) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ isFocused && (\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__child-thread\"\n\t\t\t\t\tspacing=\"2\"\n\t\t\t\t>\n\t\t\t\t\t<HStack alignment=\"left\" spacing=\"3\" justify=\"flex-start\">\n\t\t\t\t\t\t<CommentAuthorInfo />\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tspacing=\"3\"\n\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__comment-field\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<CommentForm\n\t\t\t\t\t\t\tonSubmit={ ( inputComment ) => {\n\t\t\t\t\t\t\t\tif ( 'approved' === thread.status ) {\n\t\t\t\t\t\t\t\t\tonCommentReopen( thread.id );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonAddReply( inputComment, thread.id );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonCancel={ ( event ) => {\n\t\t\t\t\t\t\t\tevent.stopPropagation(); // Prevent the parent onClick from being triggered\n\t\t\t\t\t\t\t\tclearThreadFocus();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tplaceholderText={\n\t\t\t\t\t\t\t\t'approved' === thread.status &&\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Adding a comment will re-open this discussion….'\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsubmitButtonText={\n\t\t\t\t\t\t\t\t'approved' === thread.status\n\t\t\t\t\t\t\t\t\t? _x(\n\t\t\t\t\t\t\t\t\t\t\t'Reopen & Reply',\n\t\t\t\t\t\t\t\t\t\t\t'Reopen comment and add reply'\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: _x( 'Reply', 'Add reply comment' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trows={ 'approved' === thread.status ? 2 : 4 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nconst CommentBoard = ( {\n\tthread,\n\tonResolve,\n\tonReopen,\n\tonEdit,\n\tonDelete,\n\tstatus,\n} ) => {\n\tconst [ actionState, setActionState ] = useState( false );\n\tconst [ showConfirmDialog, setShowConfirmDialog ] = useState( false );\n\n\tconst handleConfirmDelete = () => {\n\t\tonDelete( thread.id );\n\t\tsetActionState( false );\n\t\tsetShowConfirmDialog( false );\n\t};\n\n\tconst handleCancel = () => {\n\t\tsetActionState( false );\n\t\tsetShowConfirmDialog( false );\n\t};\n\n\tconst actions = [\n\t\tonEdit &&\n\t\t\tstatus !== 'approved' && {\n\t\t\t\ttitle: _x( 'Edit', 'Edit comment' ),\n\t\t\t\tonClick: () => {\n\t\t\t\t\tsetActionState( 'edit' );\n\t\t\t\t},\n\t\t\t},\n\t\tonDelete && {\n\t\t\ttitle: _x( 'Delete', 'Delete comment' ),\n\t\t\tonClick: () => {\n\t\t\t\tsetActionState( 'delete' );\n\t\t\t\tsetShowConfirmDialog( true );\n\t\t\t},\n\t\t},\n\t\tonReopen &&\n\t\t\tstatus === 'approved' && {\n\t\t\t\ttitle: _x( 'Reopen', 'Reopen comment' ),\n\t\t\t\tonClick: () => {\n\t\t\t\t\tonReopen( thread.id );\n\t\t\t\t},\n\t\t\t},\n\t];\n\n\tconst moreActions = actions.filter( ( item ) => item?.onClick );\n\n\treturn (\n\t\t<>\n\t\t\t<HStack alignment=\"left\" spacing=\"3\" justify=\"flex-start\">\n\t\t\t\t<CommentAuthorInfo\n\t\t\t\t\tavatar={ thread?.author_avatar_urls?.[ 48 ] }\n\t\t\t\t\tname={ thread?.author_name }\n\t\t\t\t\tdate={ thread?.date }\n\t\t\t\t/>\n\t\t\t\t<span className=\"editor-collab-sidebar-panel__comment-status\">\n\t\t\t\t\t<HStack alignment=\"right\" justify=\"flex-end\" spacing=\"0\">\n\t\t\t\t\t\t{ 0 === thread?.parent && onResolve && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t\t'Resolve',\n\t\t\t\t\t\t\t\t\t'Mark comment as resolved'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ticon={ published }\n\t\t\t\t\t\t\t\tdisabled={ status === 'approved' }\n\t\t\t\t\t\t\t\taccessibleWhenDisabled={ status === 'approved' }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonResolve( thread.id );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ 0 < moreActions.length && (\n\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t\t'Select an action',\n\t\t\t\t\t\t\t\t\t'Select comment action'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tclassName=\"editor-collab-sidebar-panel__comment-dropdown-menu\"\n\t\t\t\t\t\t\t\tcontrols={ moreActions }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</HStack>\n\t\t\t\t</span>\n\t\t\t</HStack>\n\t\t\t{ 'edit' === actionState ? (\n\t\t\t\t<CommentForm\n\t\t\t\t\tonSubmit={ ( value ) => {\n\t\t\t\t\t\tonEdit( thread.id, value );\n\t\t\t\t\t\tsetActionState( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonCancel={ () => handleCancel() }\n\t\t\t\t\tthread={ thread }\n\t\t\t\t\tsubmitButtonText={ _x( 'Update', 'verb' ) }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<RawHTML className=\"editor-collab-sidebar-panel__user-comment\">\n\t\t\t\t\t{ thread?.content?.rendered }\n\t\t\t\t</RawHTML>\n\t\t\t) }\n\t\t\t{ 'delete' === actionState && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen={ showConfirmDialog }\n\t\t\t\t\tonConfirm={ handleConfirmDelete }\n\t\t\t\t\tonCancel={ handleCancel }\n\t\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\t>\n\t\t\t\t\t{\n\t\t\t\t\t\t// translators: message displayed when confirming an action\n\t\t\t\t\t\t__( 'Are you sure you want to delete this comment?' )\n\t\t\t\t\t}\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</>\n\t);\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,QAAQ,EAAEC,OAAO,EAAEC,SAAS,EAAEC,OAAO,QAAQ,oBAAoB;AAC1E,SACCC,oBAAoB,IAAIC,MAAM,EAC9BC,oBAAoB,IAAIC,MAAM,EAC9BC,2BAA2B,IAAIC,aAAa,EAC5CC,MAAM,EACNC,YAAY,QACN,uBAAuB;AAE9B,SAASC,SAAS,EAAEC,YAAY,QAAQ,kBAAkB;AAC1D,SAASC,EAAE,EAAEC,EAAE,EAAEC,OAAO,EAAEC,EAAE,QAAQ,iBAAiB;AACrD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SACCC,KAAK,IAAIC,gBAAgB,EACzBC,WAAW,IAAIC,sBAAsB,QAC/B,yBAAyB;;AAEhC;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,iBAAiB,MAAM,uBAAuB;AACrD,OAAOC,WAAW,MAAM,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAEzC,MAAM;EAAEC;AAAgB,CAAC,GAAGT,MAAM,CAAED,sBAAuB,CAAC;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMW,oBAAoB,GAAGA,CAAEC,SAAS,EAAEC,SAAS,KAAM;EACxD,KAAM,MAAMC,KAAK,IAAID,SAAS,EAAG;IAChC,IAAKC,KAAK,CAACC,UAAU,EAAEC,cAAc,KAAKJ,SAAS,EAAG;MACrD,OAAOE,KAAK,CAACG,QAAQ;IACtB;IACA,IAAKH,KAAK,CAACI,WAAW,EAAG;MACxB,MAAMC,KAAK,GAAGR,oBAAoB,CAAEC,SAAS,EAAEE,KAAK,CAACI,WAAY,CAAC;MAClE,IAAKC,KAAK,EAAG;QACZ,OAAOA,KAAK;MACb;IACD;EACD;EACA,OAAO,IAAI;AACZ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAE;EACzBC,OAAO;EACPC,aAAa;EACbC,UAAU;EACVC,eAAe;EACfC,gBAAgB;EAChBC,eAAe;EACfC,gBAAgB;EAChBC;AACD,CAAC,EAAG;EACH,MAAM;IAAEZ,cAAc;IAAEa;EAAO,CAAC,GAAGlC,SAAS,CAAImC,MAAM,IAAM;IAC3D,MAAM;MAAEC,kBAAkB;MAAEC,wBAAwB;MAAEC;IAAU,CAAC,GAChEH,MAAM,CAAEhC,gBAAiB,CAAC;IAC3B,MAAMoC,SAAS,GAAGF,wBAAwB,CAAC,CAAC;IAC5C,OAAO;MACNhB,cAAc,EAAEkB,SAAS,GACtBH,kBAAkB,CAAEG,SAAU,CAAC,EAAElB,cAAc,GAC/C,IAAI;MACPa,MAAM,EAAEI,SAAS,CAAC;IACnB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IAAEE;EAAW,CAAC,GAAGvC,WAAW,CAAEE,gBAAiB,CAAC;EAEtD,MAAMsC,gBAAgB,GAAGA,CAAA,KAAM;IAC9BC,cAAc,CAAE,IAAK,CAAC;IACtBT,mBAAmB,CAAE,KAAM,CAAC;EAC7B,CAAC;EAED,MAAM,CAAEU,WAAW,EAAED,cAAc,CAAE,GAAG5D,QAAQ,CAC/CkD,gBAAgB,IAAIX,cAAc,GAAGA,cAAc,GAAG,IACvD,CAAC;EAEDrC,SAAS,CAAE,MAAM;IAChB;IACA,IAAKqC,cAAc,IAAI,CAAEsB,WAAW,EAAG;MACtCD,cAAc,CAAErB,cAAe,CAAC;IACjC;EACD,CAAC,EAAE,CAAEA,cAAc,EAAEsB,WAAW,EAAET,MAAM,EAAEQ,cAAc,CAAG,CAAC;EAE5D,oBACC5B,KAAA,CAAAF,SAAA;IAAAgC,QAAA;IAEE;IACA,CAAE,CAAEC,KAAK,CAACC,OAAO,CAAEpB,OAAQ,CAAC,IAAIA,OAAO,CAACqB,MAAM,KAAK,CAAC,kBACnDrC,IAAA,CAACrB,MAAM;MACN2D,SAAS,EAAC,MAAM;MAChBC,SAAS,EAAC,qCAAqC;MAC/CC,OAAO,EAAC,YAAY;MACpBC,OAAO,EAAC,GAAG;MAAAP,QAAA;MAGV;MACAhD,EAAE,CAAE,uBAAwB;IAAC,CAEvB,CACR,EAEAiD,KAAK,CAACC,OAAO,CAAEpB,OAAQ,CAAC,IACzBA,OAAO,CAACqB,MAAM,GAAG,CAAC,IAClBrB,OAAO,CAAC0B,GAAG,CAAIC,MAAM,iBACpB3C,IAAA,CAAC4C,MAAM;MAEND,MAAM,EAAGA,MAAQ;MACjBzB,UAAU,EAAGA,UAAY;MACzBC,eAAe,EAAGA,eAAiB;MACnCC,gBAAgB,EAAGA,gBAAkB;MACrCC,eAAe,EAAGA,eAAiB;MACnCJ,aAAa,EAAGA,aAAe;MAC/B4B,SAAS,EAAGZ,WAAW,KAAKU,MAAM,CAACG,EAAI;MACvCf,gBAAgB,EAAGA,gBAAkB;MACrCC,cAAc,EAAGA,cAAgB;MACjCrB,cAAc,EAAGA,cAAgB;MACjCa,MAAM,EAAGA,MAAQ;MACjBM,UAAU,EAAGA,UAAY;MACzBP,mBAAmB,EAAGA;IAAqB,GAbrCoB,MAAM,CAACG,EAcb,CACA,CAAC;EAAA,CACH,CAAC;AAEL;AAEA,SAASF,MAAMA,CAAE;EAChBD,MAAM;EACN1B,aAAa;EACbC,UAAU;EACVC,eAAe;EACfC,gBAAgB;EAChBC,eAAe;EACfwB,SAAS;EACTd,gBAAgB;EAChBC,cAAc;EACdR,MAAM;EACNM,UAAU;EACVP;AACD,CAAC,EAAG;EACH;EACA,MAAMwB,YAAY,GAAGxE,OAAO,CAAE,MAAM;IACnC,IAAK,CAAEoE,MAAM,CAACG,EAAE,IAAI,CAAEtB,MAAM,EAAG;MAC9B,OAAO,IAAI;IACZ;IACA,OAAOlB,oBAAoB,CAAEqC,MAAM,CAACG,EAAE,EAAEtB,MAAO,CAAC;EACjD,CAAC,EAAE,CAAEmB,MAAM,CAACG,EAAE,EAAEtB,MAAM,CAAG,CAAC;EAE1B,MAAMwB,mBAAmB,GAAG3C,eAAe,CAAE0C,YAAa,CAAC;EAE3D,MAAME,mBAAmB,GAAKC,QAAQ,IAAM;IAC3C3B,mBAAmB,CAAE,KAAM,CAAC;IAC5BS,cAAc,CAAEkB,QAAS,CAAC;IAC1B,IAAKH,YAAY,IAAIC,mBAAmB,EAAG;MAC1CA,mBAAmB,CAACG,cAAc,CAAE;QACnCC,QAAQ,EAAE,SAAS;QACnB3C,KAAK,EAAE;MACR,CAAE,CAAC;MACHqB,UAAU,CAAEiB,YAAa,CAAC;IAC3B;EACD,CAAC;EAED,oBACC3C,KAAA,CAACzB,MAAM;IACN4D,SAAS,EAAGpE,IAAI,CAAE,qCAAqC,EAAE;MACxD,2CAA2C,EAAE0E;IAC9C,CAAE,CAAG;IACLC,EAAE,EAAGH,MAAM,CAACG,EAAI;IAChBL,OAAO,EAAC,GAAG;IACXY,OAAO,EAAGA,CAAA,KAAMJ,mBAAmB,CAAEN,MAAM,CAACG,EAAG,CAAG;IAAAZ,QAAA,gBAElDlC,IAAA,CAACsD,YAAY;MACZX,MAAM,EAAGA,MAAQ;MACjBY,SAAS,EAAGnC,gBAAkB;MAC9BoC,QAAQ,EAAGnC,eAAiB;MAC5BoC,MAAM,EAAGxC,aAAe;MACxByC,QAAQ,EAAGvC,eAAiB;MAC5BwC,MAAM,EAAGhB,MAAM,CAACgB;IAAQ,CACxB,CAAC,EACA,CAAC,GAAGhB,MAAM,EAAEiB,KAAK,EAAEvB,MAAM,iBAC1BjC,KAAA,CAAAF,SAAA;MAAAgC,QAAA,GACG,CAAEW,SAAS,iBACZ7C,IAAA,CAAClB,MAAM;QACN+E,qBAAqB;QACrBC,OAAO,EAAC,MAAM;QACdvB,SAAS,EAAC,8CAA8C;QACxDc,OAAO,EAAGA,CAAA,KAAMrB,cAAc,CAAEW,MAAM,CAACG,EAAG,CAAG;QAAAZ,QAAA,EAE3C9C,OAAO;QACR;QACAC,EAAE,CACD,eAAe,EACf,iBAAiB,EACjBsD,MAAM,EAAEiB,KAAK,EAAEvB,MAChB,CAAC,EACDM,MAAM,EAAEiB,KAAK,EAAEvB,MAChB;MAAC,CACM,CACR,EAECQ,SAAS,IACVF,MAAM,CAACiB,KAAK,CAAClB,GAAG,CAAIkB,KAAK,iBACxBxD,KAAA,CAACzB,MAAM;QAEN4D,SAAS,EAAC,2CAA2C;QACrDO,EAAE,EAAGc,KAAK,CAACd,EAAI;QACfL,OAAO,EAAC,GAAG;QAAAP,QAAA,GAET,UAAU,KAAKS,MAAM,CAACgB,MAAM,iBAC7B3D,IAAA,CAACsD,YAAY;UACZX,MAAM,EAAGiB,KAAO;UAChBH,MAAM,EAAGxC,aAAe;UACxByC,QAAQ,EAAGvC;QAAiB,CAC5B,CACD,EACC,UAAU,KAAKwB,MAAM,CAACgB,MAAM,iBAC7B3D,IAAA,CAACsD,YAAY;UAACX,MAAM,EAAGiB;QAAO,CAAE,CAChC;MAAA,GAdKA,KAAK,CAACd,EAeL,CACP,CAAC;IAAA,CACH,CACF,EACCD,SAAS,iBACVzC,KAAA,CAACzB,MAAM;MACN4D,SAAS,EAAC,2CAA2C;MACrDE,OAAO,EAAC,GAAG;MAAAP,QAAA,gBAEXlC,IAAA,CAACvB,MAAM;QAAC6D,SAAS,EAAC,MAAM;QAACG,OAAO,EAAC,GAAG;QAACD,OAAO,EAAC,YAAY;QAAAN,QAAA,eACxDlC,IAAA,CAACH,iBAAiB,IAAE;MAAC,CACd,CAAC,eACTG,IAAA,CAACrB,MAAM;QACN8D,OAAO,EAAC,GAAG;QACXF,SAAS,EAAC,4CAA4C;QAAAL,QAAA,eAEtDlC,IAAA,CAACF,WAAW;UACXiE,QAAQ,EAAKC,YAAY,IAAM;YAC9B,IAAK,UAAU,KAAKrB,MAAM,CAACgB,MAAM,EAAG;cACnCtC,eAAe,CAAEsB,MAAM,CAACG,EAAG,CAAC;YAC7B;YACA5B,UAAU,CAAE8C,YAAY,EAAErB,MAAM,CAACG,EAAG,CAAC;UACtC,CAAG;UACHmB,QAAQ,EAAKC,KAAK,IAAM;YACvBA,KAAK,CAACC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzBpC,gBAAgB,CAAC,CAAC;UACnB,CAAG;UACHqC,eAAe,EACd,UAAU,KAAKzB,MAAM,CAACgB,MAAM,IAC5BzE,EAAE,CACD,iDACD,CACA;UACDmF,gBAAgB,EACf,UAAU,KAAK1B,MAAM,CAACgB,MAAM,GACzBxE,EAAE,CACF,gBAAgB,EAChB,8BACA,CAAC,GACDA,EAAE,CAAE,OAAO,EAAE,mBAAoB,CACpC;UACDmF,IAAI,EAAG,UAAU,KAAK3B,MAAM,CAACgB,MAAM,GAAG,CAAC,GAAG;QAAG,CAC7C;MAAC,CACK,CAAC;IAAA,CACF,CACR;EAAA,CACM,CAAC;AAEX;AAEA,MAAML,YAAY,GAAGA,CAAE;EACtBX,MAAM;EACNY,SAAS;EACTC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC;AACD,CAAC,KAAM;EACN,MAAM,CAAEY,WAAW,EAAEC,cAAc,CAAE,GAAGpG,QAAQ,CAAE,KAAM,CAAC;EACzD,MAAM,CAAEqG,iBAAiB,EAAEC,oBAAoB,CAAE,GAAGtG,QAAQ,CAAE,KAAM,CAAC;EAErE,MAAMuG,mBAAmB,GAAGA,CAAA,KAAM;IACjCjB,QAAQ,CAAEf,MAAM,CAACG,EAAG,CAAC;IACrB0B,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,CACfpB,MAAM,IACLE,MAAM,KAAK,UAAU,IAAI;IACxBmB,KAAK,EAAE3F,EAAE,CAAE,MAAM,EAAE,cAAe,CAAC;IACnCkE,OAAO,EAAEA,CAAA,KAAM;MACdmB,cAAc,CAAE,MAAO,CAAC;IACzB;EACD,CAAC,EACFd,QAAQ,IAAI;IACXoB,KAAK,EAAE3F,EAAE,CAAE,QAAQ,EAAE,gBAAiB,CAAC;IACvCkE,OAAO,EAAEA,CAAA,KAAM;MACdmB,cAAc,CAAE,QAAS,CAAC;MAC1BE,oBAAoB,CAAE,IAAK,CAAC;IAC7B;EACD,CAAC,EACDlB,QAAQ,IACPG,MAAM,KAAK,UAAU,IAAI;IACxBmB,KAAK,EAAE3F,EAAE,CAAE,QAAQ,EAAE,gBAAiB,CAAC;IACvCkE,OAAO,EAAEA,CAAA,KAAM;MACdG,QAAQ,CAAEb,MAAM,CAACG,EAAG,CAAC;IACtB;EACD,CAAC,CACF;EAED,MAAMiC,WAAW,GAAGF,OAAO,CAACG,MAAM,CAAIC,IAAI,IAAMA,IAAI,EAAE5B,OAAQ,CAAC;EAE/D,oBACCjD,KAAA,CAAAF,SAAA;IAAAgC,QAAA,gBACC9B,KAAA,CAAC3B,MAAM;MAAC6D,SAAS,EAAC,MAAM;MAACG,OAAO,EAAC,GAAG;MAACD,OAAO,EAAC,YAAY;MAAAN,QAAA,gBACxDlC,IAAA,CAACH,iBAAiB;QACjBqF,MAAM,EAAGvC,MAAM,EAAEwC,kBAAkB,GAAI,EAAE,CAAI;QAC7CC,IAAI,EAAGzC,MAAM,EAAE0C,WAAa;QAC5BC,IAAI,EAAG3C,MAAM,EAAE2C;MAAM,CACrB,CAAC,eACFtF,IAAA;QAAMuC,SAAS,EAAC,6CAA6C;QAAAL,QAAA,eAC5D9B,KAAA,CAAC3B,MAAM;UAAC6D,SAAS,EAAC,OAAO;UAACE,OAAO,EAAC,UAAU;UAACC,OAAO,EAAC,GAAG;UAAAP,QAAA,GACrD,CAAC,KAAKS,MAAM,EAAE4C,MAAM,IAAIhC,SAAS,iBAClCvD,IAAA,CAAClB,MAAM;YACN0G,KAAK,EAAGrG,EAAE,CACT,SAAS,EACT,0BACD,CAAG;YACHsG,IAAI,EAAC,OAAO;YACZC,IAAI,EAAG1G,SAAW;YAClB2G,QAAQ,EAAGhC,MAAM,KAAK,UAAY;YAClCiC,sBAAsB,EAAGjC,MAAM,KAAK,UAAY;YAChDN,OAAO,EAAGA,CAAA,KAAM;cACfE,SAAS,CAAEZ,MAAM,CAACG,EAAG,CAAC;YACvB;UAAG,CACH,CACD,EACC,CAAC,GAAGiC,WAAW,CAAC1C,MAAM,iBACvBrC,IAAA,CAACjB,YAAY;YACZ2G,IAAI,EAAGzG,YAAc;YACrBuG,KAAK,EAAGrG,EAAE,CACT,kBAAkB,EAClB,uBACD,CAAG;YACHoD,SAAS,EAAC,oDAAoD;YAC9DsD,QAAQ,EAAGd;UAAa,CACxB,CACD;QAAA,CACM;MAAC,CACJ,CAAC;IAAA,CACA,CAAC,EACP,MAAM,KAAKR,WAAW,gBACvBvE,IAAA,CAACF,WAAW;MACXiE,QAAQ,EAAK+B,KAAK,IAAM;QACvBrC,MAAM,CAAEd,MAAM,CAACG,EAAE,EAAEgD,KAAM,CAAC;QAC1BtB,cAAc,CAAE,KAAM,CAAC;MACxB,CAAG;MACHP,QAAQ,EAAGA,CAAA,KAAMW,YAAY,CAAC,CAAG;MACjCjC,MAAM,EAAGA,MAAQ;MACjB0B,gBAAgB,EAAGlF,EAAE,CAAE,QAAQ,EAAE,MAAO;IAAG,CAC3C,CAAC,gBAEFa,IAAA,CAAC3B,OAAO;MAACkE,SAAS,EAAC,2CAA2C;MAAAL,QAAA,EAC3DS,MAAM,EAAEoD,OAAO,EAAEC;IAAQ,CACnB,CACT,EACC,QAAQ,KAAKzB,WAAW,iBACzBvE,IAAA,CAACnB,aAAa;MACboH,MAAM,EAAGxB,iBAAmB;MAC5ByB,SAAS,EAAGvB,mBAAqB;MACjCV,QAAQ,EAAGW,YAAc;MACzBuB,iBAAiB,EAAGjH,EAAE,CAAE,QAAS,CAAG;MAAAgD,QAAA;MAGnC;MACAhD,EAAE,CAAE,+CAAgD;IAAC,CAExC,CACf;EAAA,CACA,CAAC;AAEL,CAAC","ignoreList":[]}
|
|
@@ -226,7 +226,9 @@ export default function CollabSidebar() {
|
|
|
226
226
|
const {
|
|
227
227
|
records: threads,
|
|
228
228
|
totalPages
|
|
229
|
-
} = useEntityRecords('root', 'comment', queryArgs
|
|
229
|
+
} = useEntityRecords('root', 'comment', queryArgs, {
|
|
230
|
+
enabled: !!postId && typeof postId === 'number'
|
|
231
|
+
});
|
|
230
232
|
const hasMoreComments = totalPages && totalPages > 1;
|
|
231
233
|
const {
|
|
232
234
|
blockCommentId
|
|
@@ -331,6 +333,7 @@ export default function CollabSidebar() {
|
|
|
331
333
|
,
|
|
332
334
|
title: __('Comments'),
|
|
333
335
|
icon: commentIcon,
|
|
336
|
+
closeLabel: __('Close Comments'),
|
|
334
337
|
children: /*#__PURE__*/_jsx(CollabSidebarContent, {
|
|
335
338
|
comments: resultComments,
|
|
336
339
|
showCommentBoard: showCommentBoard,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","useSelect","useDispatch","resolveSelect","subscribe","useState","useMemo","comment","commentIcon","addFilter","store","noticesStore","coreStore","useEntityBlockEditor","useEntityRecords","blockEditorStore","interfaceStore","PluginSidebar","collabHistorySidebarName","collabSidebarName","Comments","AddComment","editorStore","AddCommentButton","CommentAvatarIndicator","useGlobalStylesContext","getCommentIdsFromBlocks","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","modifyBlockCommentAttributes","settings","attributes","blockCommentId","type","CollabSidebarContent","showCommentBoard","setShowCommentBoard","styles","comments","createNotice","saveEntityRecord","deleteEntityRecord","getEntityRecord","postId","select","getCurrentPostId","_postId","getSelectedBlockClientId","updateBlockAttributes","onError","error","errorMessage","message","code","isDismissible","addNewComment","parentCommentId","savedRecord","post","content","comment_type","comment_approved","parent","throwOnError","id","onCommentResolve","commentId","status","onCommentReopen","onEditComment","onCommentDelete","childComment","undefined","className","style","children","onSubmit","threads","onAddReply","CollabSidebar","enableComplementaryArea","getActiveComplementaryArea","postType","getCurrentPostType","queryArgs","per_page","records","totalPages","hasMoreComments","getBlockAttributes","_clientId","openCollabBoard","blocks","resultComments","unresolvedSortedThreads","compare","result","allComments","forEach","item","reply","push","length","updatedResult","map","reverse","blockCommentIds","threadIdMap","Map","thread","unresolvedSortedComments","get","filter","merged","GlobalStyles","backgroundColor","color","background","unsubscribe","activeSidebar","AddCommentComponent","currentThread","find","onClick","identifier","title","icon","isPinnable","header","headerClassName"],"sources":["@wordpress/editor/src/components/collab-sidebar/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseSelect,\n\tuseDispatch,\n\tresolveSelect,\n\tsubscribe,\n} 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 {\n\tstore as coreStore,\n\tuseEntityBlockEditor,\n\tuseEntityRecords,\n} 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 { collabHistorySidebarName, collabSidebarName } from './constants';\nimport { Comments } from './comments';\nimport { AddComment } from './add-comment';\nimport { store as editorStore } from '../../store';\nimport AddCommentButton from './comment-button';\nimport CommentAvatarIndicator from './comment-indicator-toolbar';\nimport { useGlobalStylesContext } from '../global-styles-provider';\nimport { getCommentIdsFromBlocks } from './utils';\n\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( {\n\tshowCommentBoard,\n\tsetShowCommentBoard,\n\tstyles,\n\tcomments,\n} ) {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst { saveEntityRecord, deleteEntityRecord } = useDispatch( coreStore );\n\tconst { getEntityRecord } = resolveSelect( coreStore );\n\n\tconst { postId } = useSelect( ( select ) => {\n\t\tconst { getCurrentPostId } = select( editorStore );\n\t\tconst _postId = getCurrentPostId();\n\n\t\treturn {\n\t\t\tpostId: _postId,\n\t\t};\n\t}, [] );\n\n\tconst { getSelectedBlockClientId } = useSelect( blockEditorStore );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tconst onError = ( error ) => {\n\t\tconst errorMessage =\n\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t? error.message\n\t\t\t\t: __( 'An error occurred while performing an update.' );\n\t\tcreateNotice( 'error', errorMessage, {\n\t\t\ttype: 'snackbar',\n\t\t\tisDismissible: true,\n\t\t} );\n\t};\n\n\tconst addNewComment = async ( comment, parentCommentId ) => {\n\t\ttry {\n\t\t\tconst savedRecord = await saveEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'comment',\n\t\t\t\t{\n\t\t\t\t\tpost: postId,\n\t\t\t\t\tcontent: comment,\n\t\t\t\t\tcomment_type: 'block_comment',\n\t\t\t\t\tcomment_approved: 0,\n\t\t\t\t\t...( parentCommentId ? { parent: parentCommentId } : {} ),\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// If it's a main comment, update the block attributes with the comment id.\n\t\t\tif ( ! parentCommentId && savedRecord?.id ) {\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? __( 'Reply 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} catch ( error ) {\n\t\t\tonError( error );\n\t\t}\n\t};\n\n\tconst onCommentResolve = async ( commentId ) => {\n\t\ttry {\n\t\t\tawait saveEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'comment',\n\t\t\t\t{\n\t\t\t\t\tid: commentId,\n\t\t\t\t\tstatus: 'approved',\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\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} catch ( error ) {\n\t\t\tonError( error );\n\t\t}\n\t};\n\n\tconst onCommentReopen = async ( commentId ) => {\n\t\ttry {\n\t\t\tawait saveEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'comment',\n\t\t\t\t{\n\t\t\t\t\tid: commentId,\n\t\t\t\t\tstatus: 'hold',\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t\tcreateNotice( 'snackbar', __( 'Comment reopened.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tonError( error );\n\t\t}\n\t};\n\n\tconst onEditComment = async ( commentId, comment ) => {\n\t\ttry {\n\t\t\tawait saveEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'comment',\n\t\t\t\t{\n\t\t\t\t\tid: commentId,\n\t\t\t\t\tcontent: comment,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t\tcreateNotice( 'snackbar', __( 'Comment edited successfully.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tonError( error );\n\t\t}\n\t};\n\n\tconst onCommentDelete = async ( commentId ) => {\n\t\ttry {\n\t\t\tconst childComment = await getEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'comment',\n\t\t\t\tcommentId\n\t\t\t);\n\t\t\tawait deleteEntityRecord( 'root', 'comment', commentId, undefined, {\n\t\t\t\tthrowOnError: true,\n\t\t\t} );\n\n\t\t\tif ( childComment && ! childComment.parent ) {\n\t\t\t\tupdateBlockAttributes( getSelectedBlockClientId(), {\n\t\t\t\t\tblockCommentId: undefined,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tcreateNotice( 'snackbar', __( 'Comment deleted successfully.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tonError( error );\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"editor-collab-sidebar-panel\" style={ styles }>\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\tkey={ getSelectedBlockClientId() }\n\t\t\t\tthreads={ comments }\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\tonCommentReopen={ onCommentReopen }\n\t\t\t\tshowCommentBoard={ showCommentBoard }\n\t\t\t\tsetShowCommentBoard={ setShowCommentBoard }\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\tconst { getActiveComplementaryArea } = useSelect( interfaceStore );\n\n\tconst { postId, postType } = useSelect( ( select ) => {\n\t\tconst { getCurrentPostId, getCurrentPostType } = select( editorStore );\n\t\treturn {\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostType: getCurrentPostType(),\n\t\t};\n\t}, [] );\n\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);\n\n\tconst hasMoreComments = totalPages && totalPages > 1;\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', collabHistorySidebarName );\n\t};\n\n\tconst [ blocks ] = useEntityBlockEditor( 'postType', postType, {\n\t\tid: postId,\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.\n\t\tallComments.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\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 blockCommentIds = getCommentIdsFromBlocks( blocks );\n\n\t\tconst threadIdMap = new Map(\n\t\t\tupdatedResult.map( ( thread ) => [ 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 = blockCommentIds\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, blocks ] );\n\n\t// Get the global styles to set the background color of the sidebar.\n\tconst { merged: GlobalStyles } = useGlobalStylesContext();\n\tconst backgroundColor = GlobalStyles?.styles?.color?.background;\n\n\tif ( 0 < resultComments.length ) {\n\t\tconst unsubscribe = subscribe( () => {\n\t\t\tconst activeSidebar = getActiveComplementaryArea( 'core' );\n\n\t\t\tif ( ! activeSidebar ) {\n\t\t\t\tenableComplementaryArea( 'core', collabSidebarName );\n\t\t\t\tunsubscribe();\n\t\t\t}\n\t\t} );\n\t}\n\n\tconst AddCommentComponent = blockCommentId\n\t\t? CommentAvatarIndicator\n\t\t: AddCommentButton;\n\n\t// Find the current thread for the selected block.\n\tconst currentThread = blockCommentId\n\t\t? resultComments.find( ( thread ) => thread.id === blockCommentId )\n\t\t: null;\n\n\t// If postId is not a valid number, do not render the comment sidebar.\n\tif ( ! ( !! postId && typeof postId === 'number' ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<AddCommentComponent\n\t\t\t\tonClick={ openCollabBoard }\n\t\t\t\tthread={ currentThread }\n\t\t\t\thasMoreComments={ hasMoreComments }\n\t\t\t/>\n\t\t\t<PluginSidebar\n\t\t\t\tidentifier={ collabHistorySidebarName }\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\tcomments={ resultComments }\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\t<PluginSidebar\n\t\t\t\tisPinnable={ false }\n\t\t\t\theader={ false }\n\t\t\t\tidentifier={ collabSidebarName }\n\t\t\t\tclassName=\"editor-collab-sidebar\"\n\t\t\t\theaderClassName=\"editor-collab-sidebar__header\"\n\t\t\t>\n\t\t\t\t<CollabSidebarContent\n\t\t\t\t\tcomments={ unresolvedSortedThreads }\n\t\t\t\t\tshowCommentBoard={ showCommentBoard }\n\t\t\t\t\tsetShowCommentBoard={ setShowCommentBoard }\n\t\t\t\t\tstyles={ {\n\t\t\t\t\t\tbackgroundColor,\n\t\t\t\t\t} }\n\t\t\t\t/>\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","subscribe","useState","useMemo","comment","commentIcon","addFilter","store","noticesStore","coreStore","useEntityBlockEditor","useEntityRecords","blockEditorStore","interfaceStore","PluginSidebar","collabHistorySidebarName","collabSidebarName","Comments","AddComment","editorStore","AddCommentButton","CommentAvatarIndicator","useGlobalStylesContext","getCommentIdsFromBlocks","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","modifyBlockCommentAttributes","settings","attributes","blockCommentId","type","CollabSidebarContent","showCommentBoard","setShowCommentBoard","styles","comments","createNotice","saveEntityRecord","deleteEntityRecord","getEntityRecord","postId","select","getCurrentPostId","_postId","getSelectedBlockClientId","updateBlockAttributes","onError","error","errorMessage","message","code","isDismissible","addNewComment","parentCommentId","savedRecord","post","content","comment_type","comment_approved","parent","throwOnError","id","onCommentResolve","commentId","status","onCommentReopen","onEditComment","onCommentDelete","childComment","undefined","className","style","children","onSubmit","threads","onAddReply","CollabSidebar","enableComplementaryArea","getActiveComplementaryArea","postType","getCurrentPostType","queryArgs","per_page","records","totalPages","enabled","hasMoreComments","getBlockAttributes","_clientId","openCollabBoard","blocks","resultComments","unresolvedSortedThreads","compare","result","allComments","forEach","item","reply","push","length","updatedResult","map","reverse","blockCommentIds","threadIdMap","Map","thread","unresolvedSortedComments","get","filter","merged","GlobalStyles","backgroundColor","color","background","unsubscribe","activeSidebar","AddCommentComponent","currentThread","find","onClick","identifier","title","icon","closeLabel","isPinnable","header","headerClassName"],"sources":["@wordpress/editor/src/components/collab-sidebar/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseSelect,\n\tuseDispatch,\n\tresolveSelect,\n\tsubscribe,\n} 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 {\n\tstore as coreStore,\n\tuseEntityBlockEditor,\n\tuseEntityRecords,\n} 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 { collabHistorySidebarName, collabSidebarName } from './constants';\nimport { Comments } from './comments';\nimport { AddComment } from './add-comment';\nimport { store as editorStore } from '../../store';\nimport AddCommentButton from './comment-button';\nimport CommentAvatarIndicator from './comment-indicator-toolbar';\nimport { useGlobalStylesContext } from '../global-styles-provider';\nimport { getCommentIdsFromBlocks } from './utils';\n\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( {\n\tshowCommentBoard,\n\tsetShowCommentBoard,\n\tstyles,\n\tcomments,\n} ) {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst { saveEntityRecord, deleteEntityRecord } = useDispatch( coreStore );\n\tconst { getEntityRecord } = resolveSelect( coreStore );\n\n\tconst { postId } = useSelect( ( select ) => {\n\t\tconst { getCurrentPostId } = select( editorStore );\n\t\tconst _postId = getCurrentPostId();\n\n\t\treturn {\n\t\t\tpostId: _postId,\n\t\t};\n\t}, [] );\n\n\tconst { getSelectedBlockClientId } = useSelect( blockEditorStore );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tconst onError = ( error ) => {\n\t\tconst errorMessage =\n\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t? error.message\n\t\t\t\t: __( 'An error occurred while performing an update.' );\n\t\tcreateNotice( 'error', errorMessage, {\n\t\t\ttype: 'snackbar',\n\t\t\tisDismissible: true,\n\t\t} );\n\t};\n\n\tconst addNewComment = async ( comment, parentCommentId ) => {\n\t\ttry {\n\t\t\tconst savedRecord = await saveEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'comment',\n\t\t\t\t{\n\t\t\t\t\tpost: postId,\n\t\t\t\t\tcontent: comment,\n\t\t\t\t\tcomment_type: 'block_comment',\n\t\t\t\t\tcomment_approved: 0,\n\t\t\t\t\t...( parentCommentId ? { parent: parentCommentId } : {} ),\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// If it's a main comment, update the block attributes with the comment id.\n\t\t\tif ( ! parentCommentId && savedRecord?.id ) {\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? __( 'Reply 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} catch ( error ) {\n\t\t\tonError( error );\n\t\t}\n\t};\n\n\tconst onCommentResolve = async ( commentId ) => {\n\t\ttry {\n\t\t\tawait saveEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'comment',\n\t\t\t\t{\n\t\t\t\t\tid: commentId,\n\t\t\t\t\tstatus: 'approved',\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\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} catch ( error ) {\n\t\t\tonError( error );\n\t\t}\n\t};\n\n\tconst onCommentReopen = async ( commentId ) => {\n\t\ttry {\n\t\t\tawait saveEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'comment',\n\t\t\t\t{\n\t\t\t\t\tid: commentId,\n\t\t\t\t\tstatus: 'hold',\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t\tcreateNotice( 'snackbar', __( 'Comment reopened.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tonError( error );\n\t\t}\n\t};\n\n\tconst onEditComment = async ( commentId, comment ) => {\n\t\ttry {\n\t\t\tawait saveEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'comment',\n\t\t\t\t{\n\t\t\t\t\tid: commentId,\n\t\t\t\t\tcontent: comment,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t\tcreateNotice( 'snackbar', __( 'Comment edited successfully.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tonError( error );\n\t\t}\n\t};\n\n\tconst onCommentDelete = async ( commentId ) => {\n\t\ttry {\n\t\t\tconst childComment = await getEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'comment',\n\t\t\t\tcommentId\n\t\t\t);\n\t\t\tawait deleteEntityRecord( 'root', 'comment', commentId, undefined, {\n\t\t\t\tthrowOnError: true,\n\t\t\t} );\n\n\t\t\tif ( childComment && ! childComment.parent ) {\n\t\t\t\tupdateBlockAttributes( getSelectedBlockClientId(), {\n\t\t\t\t\tblockCommentId: undefined,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tcreateNotice( 'snackbar', __( 'Comment deleted successfully.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tonError( error );\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"editor-collab-sidebar-panel\" style={ styles }>\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\tkey={ getSelectedBlockClientId() }\n\t\t\t\tthreads={ comments }\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\tonCommentReopen={ onCommentReopen }\n\t\t\t\tshowCommentBoard={ showCommentBoard }\n\t\t\t\tsetShowCommentBoard={ setShowCommentBoard }\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\tconst { getActiveComplementaryArea } = useSelect( interfaceStore );\n\n\tconst { postId, postType } = useSelect( ( select ) => {\n\t\tconst { getCurrentPostId, getCurrentPostType } = select( editorStore );\n\t\treturn {\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostType: getCurrentPostType(),\n\t\t};\n\t}, [] );\n\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 hasMoreComments = totalPages && totalPages > 1;\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', collabHistorySidebarName );\n\t};\n\n\tconst [ blocks ] = useEntityBlockEditor( 'postType', postType, {\n\t\tid: postId,\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.\n\t\tallComments.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\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 blockCommentIds = getCommentIdsFromBlocks( blocks );\n\n\t\tconst threadIdMap = new Map(\n\t\t\tupdatedResult.map( ( thread ) => [ 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 = blockCommentIds\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, blocks ] );\n\n\t// Get the global styles to set the background color of the sidebar.\n\tconst { merged: GlobalStyles } = useGlobalStylesContext();\n\tconst backgroundColor = GlobalStyles?.styles?.color?.background;\n\n\tif ( 0 < resultComments.length ) {\n\t\tconst unsubscribe = subscribe( () => {\n\t\t\tconst activeSidebar = getActiveComplementaryArea( 'core' );\n\n\t\t\tif ( ! activeSidebar ) {\n\t\t\t\tenableComplementaryArea( 'core', collabSidebarName );\n\t\t\t\tunsubscribe();\n\t\t\t}\n\t\t} );\n\t}\n\n\tconst AddCommentComponent = blockCommentId\n\t\t? CommentAvatarIndicator\n\t\t: AddCommentButton;\n\n\t// Find the current thread for the selected block.\n\tconst currentThread = blockCommentId\n\t\t? resultComments.find( ( thread ) => thread.id === blockCommentId )\n\t\t: null;\n\n\t// If postId is not a valid number, do not render the comment sidebar.\n\tif ( ! ( !! postId && typeof postId === 'number' ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<AddCommentComponent\n\t\t\t\tonClick={ openCollabBoard }\n\t\t\t\tthread={ currentThread }\n\t\t\t\thasMoreComments={ hasMoreComments }\n\t\t\t/>\n\t\t\t<PluginSidebar\n\t\t\t\tidentifier={ collabHistorySidebarName }\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\tcloseLabel={ __( 'Close Comments' ) }\n\t\t\t>\n\t\t\t\t<CollabSidebarContent\n\t\t\t\t\tcomments={ resultComments }\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\t<PluginSidebar\n\t\t\t\tisPinnable={ false }\n\t\t\t\theader={ false }\n\t\t\t\tidentifier={ collabSidebarName }\n\t\t\t\tclassName=\"editor-collab-sidebar\"\n\t\t\t\theaderClassName=\"editor-collab-sidebar__header\"\n\t\t\t>\n\t\t\t\t<CollabSidebarContent\n\t\t\t\t\tcomments={ unresolvedSortedThreads }\n\t\t\t\t\tshowCommentBoard={ showCommentBoard }\n\t\t\t\t\tsetShowCommentBoard={ setShowCommentBoard }\n\t\t\t\t\tstyles={ {\n\t\t\t\t\t\tbackgroundColor,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</PluginSidebar>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -84,11 +84,13 @@ function PrivateExcerpt() {
|
|
|
84
84
|
shouldBeUsedAsDescription,
|
|
85
85
|
allowEditing
|
|
86
86
|
} = useSelect(select => {
|
|
87
|
+
var _getEditedPostAttribu;
|
|
87
88
|
const {
|
|
88
89
|
getCurrentPostType,
|
|
89
90
|
getCurrentPostId,
|
|
90
91
|
getEditedPostAttribute,
|
|
91
|
-
isEditorPanelEnabled
|
|
92
|
+
isEditorPanelEnabled,
|
|
93
|
+
__experimentalGetDefaultTemplateType
|
|
92
94
|
} = select(editorStore);
|
|
93
95
|
const postType = getCurrentPostType();
|
|
94
96
|
const isTemplateOrTemplatePart = ['wp_template', 'wp_template_part'].includes(postType);
|
|
@@ -99,11 +101,12 @@ function PrivateExcerpt() {
|
|
|
99
101
|
const _usedAttribute = isTemplateOrTemplatePart ? 'description' : 'excerpt';
|
|
100
102
|
// We need to fetch the entity in this case to check if we'll allow editing.
|
|
101
103
|
const template = isTemplateOrTemplatePart && select(coreStore).getEntityRecord('postType', postType, getCurrentPostId());
|
|
104
|
+
const fallback = isTemplateOrTemplatePart ? __experimentalGetDefaultTemplateType(template.slug).description : undefined;
|
|
102
105
|
// For post types that use excerpt as description, we do not abide
|
|
103
106
|
// by the `isEnabled` panel flag in order to render them as text.
|
|
104
107
|
const _shouldRender = isEditorPanelEnabled(PANEL_NAME) || _shouldBeUsedAsDescription;
|
|
105
108
|
return {
|
|
106
|
-
excerpt: getEditedPostAttribute(_usedAttribute),
|
|
109
|
+
excerpt: (_getEditedPostAttribu = getEditedPostAttribute(_usedAttribute)) !== null && _getEditedPostAttribu !== void 0 ? _getEditedPostAttribu : fallback,
|
|
107
110
|
shouldRender: _shouldRender,
|
|
108
111
|
shouldBeUsedAsDescription: _shouldBeUsedAsDescription,
|
|
109
112
|
// If we should render, allow editing for all post types that are not used as description.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","PanelBody","__experimentalText","Text","Dropdown","Button","__experimentalVStack","VStack","useDispatch","useSelect","useMemo","useState","__experimentalInspectorPopoverHeader","InspectorPopoverHeader","store","coreStore","decodeEntities","PostExcerptForm","PostExcerptCheck","PluginPostExcerpt","TEMPLATE_ORIGINS","editorStore","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PANEL_NAME","ExcerptPanel","isOpened","isEnabled","postType","select","isEditorPanelOpened","isEditorPanelEnabled","getCurrentPostType","toggleEditorPanelOpened","toggleExcerptPanel","shouldUseDescriptionLabel","includes","title","opened","onToggle","children","Slot","fills","PostExcerptPanel","PrivatePostExcerptPanel","PrivateExcerpt","shouldRender","excerpt","shouldBeUsedAsDescription","allowEditing","getCurrentPostId","getEditedPostAttribute","isTemplateOrTemplatePart","isPattern","_shouldBeUsedAsDescription","_usedAttribute","template","getEntityRecord","_shouldRender","source","custom","has_theme_file","is_custom","popoverAnchor","setPopoverAnchor","label","popoverProps","anchor","headerTitle","placement","offset","shift","excerptText","align","numberOfLines","truncate","excerptPlaceholder","triggerEditLabel","className","contentClassName","focusOnMount","ref","renderToggle","__next40pxDefaultSize","onClick","variant","renderContent","onClose","spacing","hideLabelFromVision","updateOnBlur"],"sources":["@wordpress/editor/src/components/post-excerpt/panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tPanelBody,\n\t__experimentalText as Text,\n\tDropdown,\n\tButton,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useMemo, useState } from '@wordpress/element';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport PostExcerptForm from './index';\nimport PostExcerptCheck from './check';\nimport PluginPostExcerpt from './plugin';\nimport { TEMPLATE_ORIGINS } from '../../store/constants';\nimport { store as editorStore } from '../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'post-excerpt';\n\nfunction ExcerptPanel() {\n\tconst { isOpened, isEnabled, postType } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisEditorPanelOpened,\n\t\t\tisEditorPanelEnabled,\n\t\t\tgetCurrentPostType,\n\t\t} = select( editorStore );\n\n\t\treturn {\n\t\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t\t\tisEnabled: isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tpostType: getCurrentPostType(),\n\t\t};\n\t}, [] );\n\n\tconst { toggleEditorPanelOpened } = useDispatch( editorStore );\n\tconst toggleExcerptPanel = () => toggleEditorPanelOpened( PANEL_NAME );\n\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\t// There are special cases where we want to label the excerpt as a description.\n\tconst shouldUseDescriptionLabel = [\n\t\t'wp_template',\n\t\t'wp_template_part',\n\t\t'wp_block',\n\t].includes( postType );\n\n\treturn (\n\t\t<PanelBody\n\t\t\ttitle={\n\t\t\t\tshouldUseDescriptionLabel\n\t\t\t\t\t? __( 'Description' )\n\t\t\t\t\t: __( 'Excerpt' )\n\t\t\t}\n\t\t\topened={ isOpened }\n\t\t\tonToggle={ toggleExcerptPanel }\n\t\t>\n\t\t\t<PluginPostExcerpt.Slot>\n\t\t\t\t{ ( fills ) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PostExcerptForm />\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</PluginPostExcerpt.Slot>\n\t\t</PanelBody>\n\t);\n}\n\n/**\n * Is rendered if the post type supports excerpts and allows editing the excerpt.\n *\n * @return {React.ReactNode} The rendered PostExcerptPanel component.\n */\nexport default function PostExcerptPanel() {\n\treturn (\n\t\t<PostExcerptCheck>\n\t\t\t<ExcerptPanel />\n\t\t</PostExcerptCheck>\n\t);\n}\n\nexport function PrivatePostExcerptPanel() {\n\treturn (\n\t\t<PostExcerptCheck>\n\t\t\t<PrivateExcerpt />\n\t\t</PostExcerptCheck>\n\t);\n}\n\nfunction PrivateExcerpt() {\n\tconst { shouldRender, excerpt, shouldBeUsedAsDescription, allowEditing } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetCurrentPostType,\n\t\t\t\tgetCurrentPostId,\n\t\t\t\tgetEditedPostAttribute,\n\t\t\t\tisEditorPanelEnabled,\n\t\t\t} = select( editorStore );\n\t\t\tconst postType = getCurrentPostType();\n\t\t\tconst isTemplateOrTemplatePart = [\n\t\t\t\t'wp_template',\n\t\t\t\t'wp_template_part',\n\t\t\t].includes( postType );\n\t\t\tconst isPattern = postType === 'wp_block';\n\t\t\t// These post types use the `excerpt` field as a description semantically, so we need to\n\t\t\t// handle proper labeling and some flows where we should always render them as text.\n\t\t\tconst _shouldBeUsedAsDescription =\n\t\t\t\tisTemplateOrTemplatePart || isPattern;\n\t\t\tconst _usedAttribute = isTemplateOrTemplatePart\n\t\t\t\t? 'description'\n\t\t\t\t: 'excerpt';\n\t\t\t// We need to fetch the entity in this case to check if we'll allow editing.\n\t\t\tconst template =\n\t\t\t\tisTemplateOrTemplatePart &&\n\t\t\t\tselect( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\tgetCurrentPostId()\n\t\t\t\t);\n\t\t\t// For post types that use excerpt as description, we do not abide\n\t\t\t// by the `isEnabled` panel flag in order to render them as text.\n\t\t\tconst _shouldRender =\n\t\t\t\tisEditorPanelEnabled( PANEL_NAME ) ||\n\t\t\t\t_shouldBeUsedAsDescription;\n\t\t\treturn {\n\t\t\t\texcerpt: getEditedPostAttribute( _usedAttribute ),\n\t\t\t\tshouldRender: _shouldRender,\n\t\t\t\tshouldBeUsedAsDescription: _shouldBeUsedAsDescription,\n\t\t\t\t// If we should render, allow editing for all post types that are not used as description.\n\t\t\t\t// For the rest allow editing only for user generated entities.\n\t\t\t\tallowEditing:\n\t\t\t\t\t_shouldRender &&\n\t\t\t\t\t( ! _shouldBeUsedAsDescription ||\n\t\t\t\t\t\tisPattern ||\n\t\t\t\t\t\t( template &&\n\t\t\t\t\t\t\ttemplate.source === TEMPLATE_ORIGINS.custom &&\n\t\t\t\t\t\t\t! template.has_theme_file &&\n\t\t\t\t\t\t\ttemplate.is_custom ) ),\n\t\t\t};\n\t\t}, [] );\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst label = shouldBeUsedAsDescription\n\t\t? __( 'Description' )\n\t\t: __( 'Excerpt' );\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\t'aria-label': label,\n\t\t\theaderTitle: label,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor, label ]\n\t);\n\tif ( ! shouldRender ) {\n\t\treturn false;\n\t}\n\tconst excerptText = !! excerpt && (\n\t\t<Text align=\"left\" numberOfLines={ 4 } truncate={ allowEditing }>\n\t\t\t{ decodeEntities( excerpt ) }\n\t\t</Text>\n\t);\n\tif ( ! allowEditing ) {\n\t\treturn excerptText;\n\t}\n\tconst excerptPlaceholder = shouldBeUsedAsDescription\n\t\t? __( 'Add a description…' )\n\t\t: __( 'Add an excerpt…' );\n\tconst triggerEditLabel = shouldBeUsedAsDescription\n\t\t? __( 'Edit description' )\n\t\t: __( 'Edit excerpt' );\n\treturn (\n\t\t<VStack>\n\t\t\t{ excerptText }\n\t\t\t<Dropdown\n\t\t\t\tclassName=\"editor-post-excerpt__dropdown\"\n\t\t\t\tcontentClassName=\"editor-post-excerpt__dropdown__content\"\n\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\tfocusOnMount\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\trenderToggle={ ( { onToggle } ) => (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ excerptText ? triggerEditLabel : excerptPlaceholder }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<InspectorPopoverHeader\n\t\t\t\t\t\t\ttitle={ label }\n\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t\t<PluginPostExcerpt.Slot>\n\t\t\t\t\t\t\t\t{ ( fills ) => (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<PostExcerptForm\n\t\t\t\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\t\t\t\tupdateOnBlur\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{ fills }\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</PluginPostExcerpt.Slot>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t/>\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["__","PanelBody","__experimentalText","Text","Dropdown","Button","__experimentalVStack","VStack","useDispatch","useSelect","useMemo","useState","__experimentalInspectorPopoverHeader","InspectorPopoverHeader","store","coreStore","decodeEntities","PostExcerptForm","PostExcerptCheck","PluginPostExcerpt","TEMPLATE_ORIGINS","editorStore","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PANEL_NAME","ExcerptPanel","isOpened","isEnabled","postType","select","isEditorPanelOpened","isEditorPanelEnabled","getCurrentPostType","toggleEditorPanelOpened","toggleExcerptPanel","shouldUseDescriptionLabel","includes","title","opened","onToggle","children","Slot","fills","PostExcerptPanel","PrivatePostExcerptPanel","PrivateExcerpt","shouldRender","excerpt","shouldBeUsedAsDescription","allowEditing","_getEditedPostAttribu","getCurrentPostId","getEditedPostAttribute","__experimentalGetDefaultTemplateType","isTemplateOrTemplatePart","isPattern","_shouldBeUsedAsDescription","_usedAttribute","template","getEntityRecord","fallback","slug","description","undefined","_shouldRender","source","custom","has_theme_file","is_custom","popoverAnchor","setPopoverAnchor","label","popoverProps","anchor","headerTitle","placement","offset","shift","excerptText","align","numberOfLines","truncate","excerptPlaceholder","triggerEditLabel","className","contentClassName","focusOnMount","ref","renderToggle","__next40pxDefaultSize","onClick","variant","renderContent","onClose","spacing","hideLabelFromVision","updateOnBlur"],"sources":["@wordpress/editor/src/components/post-excerpt/panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tPanelBody,\n\t__experimentalText as Text,\n\tDropdown,\n\tButton,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useMemo, useState } from '@wordpress/element';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport PostExcerptForm from './index';\nimport PostExcerptCheck from './check';\nimport PluginPostExcerpt from './plugin';\nimport { TEMPLATE_ORIGINS } from '../../store/constants';\nimport { store as editorStore } from '../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'post-excerpt';\n\nfunction ExcerptPanel() {\n\tconst { isOpened, isEnabled, postType } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisEditorPanelOpened,\n\t\t\tisEditorPanelEnabled,\n\t\t\tgetCurrentPostType,\n\t\t} = select( editorStore );\n\n\t\treturn {\n\t\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t\t\tisEnabled: isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tpostType: getCurrentPostType(),\n\t\t};\n\t}, [] );\n\n\tconst { toggleEditorPanelOpened } = useDispatch( editorStore );\n\tconst toggleExcerptPanel = () => toggleEditorPanelOpened( PANEL_NAME );\n\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\t// There are special cases where we want to label the excerpt as a description.\n\tconst shouldUseDescriptionLabel = [\n\t\t'wp_template',\n\t\t'wp_template_part',\n\t\t'wp_block',\n\t].includes( postType );\n\n\treturn (\n\t\t<PanelBody\n\t\t\ttitle={\n\t\t\t\tshouldUseDescriptionLabel\n\t\t\t\t\t? __( 'Description' )\n\t\t\t\t\t: __( 'Excerpt' )\n\t\t\t}\n\t\t\topened={ isOpened }\n\t\t\tonToggle={ toggleExcerptPanel }\n\t\t>\n\t\t\t<PluginPostExcerpt.Slot>\n\t\t\t\t{ ( fills ) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PostExcerptForm />\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</PluginPostExcerpt.Slot>\n\t\t</PanelBody>\n\t);\n}\n\n/**\n * Is rendered if the post type supports excerpts and allows editing the excerpt.\n *\n * @return {React.ReactNode} The rendered PostExcerptPanel component.\n */\nexport default function PostExcerptPanel() {\n\treturn (\n\t\t<PostExcerptCheck>\n\t\t\t<ExcerptPanel />\n\t\t</PostExcerptCheck>\n\t);\n}\n\nexport function PrivatePostExcerptPanel() {\n\treturn (\n\t\t<PostExcerptCheck>\n\t\t\t<PrivateExcerpt />\n\t\t</PostExcerptCheck>\n\t);\n}\n\nfunction PrivateExcerpt() {\n\tconst { shouldRender, excerpt, shouldBeUsedAsDescription, allowEditing } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetCurrentPostType,\n\t\t\t\tgetCurrentPostId,\n\t\t\t\tgetEditedPostAttribute,\n\t\t\t\tisEditorPanelEnabled,\n\t\t\t\t__experimentalGetDefaultTemplateType,\n\t\t\t} = select( editorStore );\n\t\t\tconst postType = getCurrentPostType();\n\t\t\tconst isTemplateOrTemplatePart = [\n\t\t\t\t'wp_template',\n\t\t\t\t'wp_template_part',\n\t\t\t].includes( postType );\n\t\t\tconst isPattern = postType === 'wp_block';\n\t\t\t// These post types use the `excerpt` field as a description semantically, so we need to\n\t\t\t// handle proper labeling and some flows where we should always render them as text.\n\t\t\tconst _shouldBeUsedAsDescription =\n\t\t\t\tisTemplateOrTemplatePart || isPattern;\n\t\t\tconst _usedAttribute = isTemplateOrTemplatePart\n\t\t\t\t? 'description'\n\t\t\t\t: 'excerpt';\n\t\t\t// We need to fetch the entity in this case to check if we'll allow editing.\n\t\t\tconst template =\n\t\t\t\tisTemplateOrTemplatePart &&\n\t\t\t\tselect( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\tgetCurrentPostId()\n\t\t\t\t);\n\t\t\tconst fallback = isTemplateOrTemplatePart\n\t\t\t\t? __experimentalGetDefaultTemplateType( template.slug )\n\t\t\t\t\t\t.description\n\t\t\t\t: undefined;\n\t\t\t// For post types that use excerpt as description, we do not abide\n\t\t\t// by the `isEnabled` panel flag in order to render them as text.\n\t\t\tconst _shouldRender =\n\t\t\t\tisEditorPanelEnabled( PANEL_NAME ) ||\n\t\t\t\t_shouldBeUsedAsDescription;\n\t\t\treturn {\n\t\t\t\texcerpt: getEditedPostAttribute( _usedAttribute ) ?? fallback,\n\t\t\t\tshouldRender: _shouldRender,\n\t\t\t\tshouldBeUsedAsDescription: _shouldBeUsedAsDescription,\n\t\t\t\t// If we should render, allow editing for all post types that are not used as description.\n\t\t\t\t// For the rest allow editing only for user generated entities.\n\t\t\t\tallowEditing:\n\t\t\t\t\t_shouldRender &&\n\t\t\t\t\t( ! _shouldBeUsedAsDescription ||\n\t\t\t\t\t\tisPattern ||\n\t\t\t\t\t\t( template &&\n\t\t\t\t\t\t\ttemplate.source === TEMPLATE_ORIGINS.custom &&\n\t\t\t\t\t\t\t! template.has_theme_file &&\n\t\t\t\t\t\t\ttemplate.is_custom ) ),\n\t\t\t};\n\t\t}, [] );\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst label = shouldBeUsedAsDescription\n\t\t? __( 'Description' )\n\t\t: __( 'Excerpt' );\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\t'aria-label': label,\n\t\t\theaderTitle: label,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor, label ]\n\t);\n\tif ( ! shouldRender ) {\n\t\treturn false;\n\t}\n\tconst excerptText = !! excerpt && (\n\t\t<Text align=\"left\" numberOfLines={ 4 } truncate={ allowEditing }>\n\t\t\t{ decodeEntities( excerpt ) }\n\t\t</Text>\n\t);\n\tif ( ! allowEditing ) {\n\t\treturn excerptText;\n\t}\n\tconst excerptPlaceholder = shouldBeUsedAsDescription\n\t\t? __( 'Add a description…' )\n\t\t: __( 'Add an excerpt…' );\n\tconst triggerEditLabel = shouldBeUsedAsDescription\n\t\t? __( 'Edit description' )\n\t\t: __( 'Edit excerpt' );\n\treturn (\n\t\t<VStack>\n\t\t\t{ excerptText }\n\t\t\t<Dropdown\n\t\t\t\tclassName=\"editor-post-excerpt__dropdown\"\n\t\t\t\tcontentClassName=\"editor-post-excerpt__dropdown__content\"\n\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\tfocusOnMount\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\trenderToggle={ ( { onToggle } ) => (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ excerptText ? triggerEditLabel : excerptPlaceholder }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<InspectorPopoverHeader\n\t\t\t\t\t\t\ttitle={ label }\n\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t\t<PluginPostExcerpt.Slot>\n\t\t\t\t\t\t\t\t{ ( fills ) => (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<PostExcerptForm\n\t\t\t\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\t\t\t\tupdateOnBlur\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{ fills }\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</PluginPostExcerpt.Slot>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t/>\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -50,16 +50,31 @@ export function useAllowSwitchingTemplates() {
|
|
|
50
50
|
}, [postId, postType]);
|
|
51
51
|
}
|
|
52
52
|
function useTemplates(postType) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
// To do: create a new selector to checks if templates exist at all instead
|
|
54
|
+
// of and unbound request. In the modal, the user templates should be
|
|
55
|
+
// paginated and we should not make an unbound request.
|
|
56
|
+
const {
|
|
57
|
+
staticTemplates,
|
|
58
|
+
templates
|
|
59
|
+
} = useSelect(select => {
|
|
60
|
+
return {
|
|
61
|
+
staticTemplates: select(coreStore).getEntityRecords('postType', 'wp_registered_template', {
|
|
62
|
+
per_page: -1,
|
|
63
|
+
post_type: postType
|
|
64
|
+
}),
|
|
65
|
+
templates: select(coreStore).getEntityRecords('postType', 'wp_template', {
|
|
66
|
+
per_page: -1,
|
|
67
|
+
post_type: postType
|
|
68
|
+
})
|
|
69
|
+
};
|
|
70
|
+
}, [postType]);
|
|
71
|
+
return useMemo(() => [...(staticTemplates || []), ...(templates || [])], [staticTemplates, templates]);
|
|
57
72
|
}
|
|
58
73
|
export function useAvailableTemplates(postType) {
|
|
59
74
|
const currentTemplateSlug = useCurrentTemplateSlug();
|
|
60
75
|
const allowSwitchingTemplate = useAllowSwitchingTemplates();
|
|
61
76
|
const templates = useTemplates(postType);
|
|
62
|
-
return useMemo(() => allowSwitchingTemplate && templates?.filter(template => template.is_custom && template.slug !== currentTemplateSlug && !!template.content.raw // Skip empty templates.
|
|
77
|
+
return useMemo(() => allowSwitchingTemplate && templates?.filter(template => (template.is_custom || template.type === 'wp_template') && template.slug !== currentTemplateSlug && !!template.content.raw // Skip empty templates.
|
|
63
78
|
), [templates, currentTemplateSlug, allowSwitchingTemplate]);
|
|
64
79
|
}
|
|
65
80
|
export function useCurrentTemplateSlug() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSelect","useMemo","store","coreStore","editorStore","useEditedPostContext","select","getCurrentPostId","getCurrentPostType","postId","postType","useAllowSwitchingTemplates","canUser","getEntityRecord","getEntityRecords","siteSettings","kind","name","undefined","isPostsPage","page_for_posts","isFrontPage","page_on_front","templates","per_page","hasFrontPage","some","slug","useTemplates","post_type","useAvailableTemplates","currentTemplateSlug","useCurrentTemplateSlug","allowSwitchingTemplate","filter","template","is_custom","content","raw","entityTemplate","post","getEditedEntityRecord","find"],"sources":["@wordpress/editor/src/components/post-template/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport function useEditedPostContext() {\n\treturn useSelect( ( select ) => {\n\t\tconst { getCurrentPostId, getCurrentPostType } = select( editorStore );\n\t\treturn {\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostType: getCurrentPostType(),\n\t\t};\n\t}, [] );\n}\nexport function useAllowSwitchingTemplates() {\n\tconst { postType, postId } = useEditedPostContext();\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser, getEntityRecord, getEntityRecords } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst siteSettings = canUser( 'read', {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t} )\n\t\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t\t: undefined;\n\n\t\t\tconst isPostsPage = +postId === siteSettings?.page_for_posts;\n\t\t\tconst isFrontPage =\n\t\t\t\tpostType === 'page' && +postId === siteSettings?.page_on_front;\n\t\t\t// If current page is set front page or posts page, we also need\n\t\t\t// to check if the current theme has a template for it. If not\n\t\t\tconst templates = isFrontPage\n\t\t\t\t? getEntityRecords( 'postType', 'wp_template', {\n\t\t\t\t\t\tper_page: -1,\n\t\t\t\t } )\n\t\t\t\t: [];\n\t\t\tconst hasFrontPage =\n\t\t\t\tisFrontPage &&\n\t\t\t\t!! templates?.some( ( { slug } ) => slug === 'front-page' );\n\t\t\treturn ! isPostsPage && ! hasFrontPage;\n\t\t},\n\t\t[ postId, postType ]\n\t);\n}\n\nfunction useTemplates( postType ) {\n\
|
|
1
|
+
{"version":3,"names":["useSelect","useMemo","store","coreStore","editorStore","useEditedPostContext","select","getCurrentPostId","getCurrentPostType","postId","postType","useAllowSwitchingTemplates","canUser","getEntityRecord","getEntityRecords","siteSettings","kind","name","undefined","isPostsPage","page_for_posts","isFrontPage","page_on_front","templates","per_page","hasFrontPage","some","slug","useTemplates","staticTemplates","post_type","useAvailableTemplates","currentTemplateSlug","useCurrentTemplateSlug","allowSwitchingTemplate","filter","template","is_custom","type","content","raw","entityTemplate","post","getEditedEntityRecord","find"],"sources":["@wordpress/editor/src/components/post-template/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport function useEditedPostContext() {\n\treturn useSelect( ( select ) => {\n\t\tconst { getCurrentPostId, getCurrentPostType } = select( editorStore );\n\t\treturn {\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostType: getCurrentPostType(),\n\t\t};\n\t}, [] );\n}\nexport function useAllowSwitchingTemplates() {\n\tconst { postType, postId } = useEditedPostContext();\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser, getEntityRecord, getEntityRecords } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst siteSettings = canUser( 'read', {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t} )\n\t\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t\t: undefined;\n\n\t\t\tconst isPostsPage = +postId === siteSettings?.page_for_posts;\n\t\t\tconst isFrontPage =\n\t\t\t\tpostType === 'page' && +postId === siteSettings?.page_on_front;\n\t\t\t// If current page is set front page or posts page, we also need\n\t\t\t// to check if the current theme has a template for it. If not\n\t\t\tconst templates = isFrontPage\n\t\t\t\t? getEntityRecords( 'postType', 'wp_template', {\n\t\t\t\t\t\tper_page: -1,\n\t\t\t\t } )\n\t\t\t\t: [];\n\t\t\tconst hasFrontPage =\n\t\t\t\tisFrontPage &&\n\t\t\t\t!! templates?.some( ( { slug } ) => slug === 'front-page' );\n\t\t\treturn ! isPostsPage && ! hasFrontPage;\n\t\t},\n\t\t[ postId, postType ]\n\t);\n}\n\nfunction useTemplates( postType ) {\n\t// To do: create a new selector to checks if templates exist at all instead\n\t// of and unbound request. In the modal, the user templates should be\n\t// paginated and we should not make an unbound request.\n\tconst { staticTemplates, templates } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tstaticTemplates: select( coreStore ).getEntityRecords(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_registered_template',\n\t\t\t\t\t{ per_page: -1, post_type: postType }\n\t\t\t\t),\n\t\t\t\ttemplates: select( coreStore ).getEntityRecords(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_template',\n\t\t\t\t\t{ per_page: -1, post_type: postType }\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ postType ]\n\t);\n\treturn useMemo(\n\t\t() => [ ...( staticTemplates || [] ), ...( templates || [] ) ],\n\t\t[ staticTemplates, templates ]\n\t);\n}\n\nexport function useAvailableTemplates( postType ) {\n\tconst currentTemplateSlug = useCurrentTemplateSlug();\n\tconst allowSwitchingTemplate = useAllowSwitchingTemplates();\n\tconst templates = useTemplates( postType );\n\treturn useMemo(\n\t\t() =>\n\t\t\tallowSwitchingTemplate &&\n\t\t\ttemplates?.filter(\n\t\t\t\t( template ) =>\n\t\t\t\t\t( template.is_custom || template.type === 'wp_template' ) &&\n\t\t\t\t\ttemplate.slug !== currentTemplateSlug &&\n\t\t\t\t\t!! template.content.raw // Skip empty templates.\n\t\t\t),\n\t\t[ templates, currentTemplateSlug, allowSwitchingTemplate ]\n\t);\n}\n\nexport function useCurrentTemplateSlug() {\n\tconst { postType, postId } = useEditedPostContext();\n\tconst templates = useTemplates( postType );\n\tconst entityTemplate = useSelect(\n\t\t( select ) => {\n\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t\treturn post?.template;\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tif ( ! entityTemplate ) {\n\t\treturn;\n\t}\n\t// If a page has a `template` set and is not included in the list\n\t// of the theme's templates, do not return it, in order to resolve\n\t// to the current theme's default template.\n\treturn templates?.find( ( template ) => template.slug === entityTemplate )\n\t\t?.slug;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASD,KAAK,IAAIE,WAAW,QAAQ,aAAa;AAElD,OAAO,SAASC,oBAAoBA,CAAA,EAAG;EACtC,OAAOL,SAAS,CAAIM,MAAM,IAAM;IAC/B,MAAM;MAAEC,gBAAgB;MAAEC;IAAmB,CAAC,GAAGF,MAAM,CAAEF,WAAY,CAAC;IACtE,OAAO;MACNK,MAAM,EAAEF,gBAAgB,CAAC,CAAC;MAC1BG,QAAQ,EAAEF,kBAAkB,CAAC;IAC9B,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR;AACA,OAAO,SAASG,0BAA0BA,CAAA,EAAG;EAC5C,MAAM;IAAED,QAAQ;IAAED;EAAO,CAAC,GAAGJ,oBAAoB,CAAC,CAAC;EACnD,OAAOL,SAAS,CACbM,MAAM,IAAM;IACb,MAAM;MAAEM,OAAO;MAAEC,eAAe;MAAEC;IAAiB,CAAC,GACnDR,MAAM,CAAEH,SAAU,CAAC;IACpB,MAAMY,YAAY,GAAGH,OAAO,CAAE,MAAM,EAAE;MACrCI,IAAI,EAAE,MAAM;MACZC,IAAI,EAAE;IACP,CAAE,CAAC,GACAJ,eAAe,CAAE,MAAM,EAAE,MAAO,CAAC,GACjCK,SAAS;IAEZ,MAAMC,WAAW,GAAG,CAACV,MAAM,KAAKM,YAAY,EAAEK,cAAc;IAC5D,MAAMC,WAAW,GAChBX,QAAQ,KAAK,MAAM,IAAI,CAACD,MAAM,KAAKM,YAAY,EAAEO,aAAa;IAC/D;IACA;IACA,MAAMC,SAAS,GAAGF,WAAW,GAC1BP,gBAAgB,CAAE,UAAU,EAAE,aAAa,EAAE;MAC7CU,QAAQ,EAAE,CAAC;IACX,CAAE,CAAC,GACH,EAAE;IACL,MAAMC,YAAY,GACjBJ,WAAW,IACX,CAAC,CAAEE,SAAS,EAAEG,IAAI,CAAE,CAAE;MAAEC;IAAK,CAAC,KAAMA,IAAI,KAAK,YAAa,CAAC;IAC5D,OAAO,CAAER,WAAW,IAAI,CAAEM,YAAY;EACvC,CAAC,EACD,CAAEhB,MAAM,EAAEC,QAAQ,CACnB,CAAC;AACF;AAEA,SAASkB,YAAYA,CAAElB,QAAQ,EAAG;EACjC;EACA;EACA;EACA,MAAM;IAAEmB,eAAe;IAAEN;EAAU,CAAC,GAAGvB,SAAS,CAC7CM,MAAM,IAAM;IACb,OAAO;MACNuB,eAAe,EAAEvB,MAAM,CAAEH,SAAU,CAAC,CAACW,gBAAgB,CACpD,UAAU,EACV,wBAAwB,EACxB;QAAEU,QAAQ,EAAE,CAAC,CAAC;QAAEM,SAAS,EAAEpB;MAAS,CACrC,CAAC;MACDa,SAAS,EAAEjB,MAAM,CAAEH,SAAU,CAAC,CAACW,gBAAgB,CAC9C,UAAU,EACV,aAAa,EACb;QAAEU,QAAQ,EAAE,CAAC,CAAC;QAAEM,SAAS,EAAEpB;MAAS,CACrC;IACD,CAAC;EACF,CAAC,EACD,CAAEA,QAAQ,CACX,CAAC;EACD,OAAOT,OAAO,CACb,MAAM,CAAE,IAAK4B,eAAe,IAAI,EAAE,CAAE,EAAE,IAAKN,SAAS,IAAI,EAAE,CAAE,CAAE,EAC9D,CAAEM,eAAe,EAAEN,SAAS,CAC7B,CAAC;AACF;AAEA,OAAO,SAASQ,qBAAqBA,CAAErB,QAAQ,EAAG;EACjD,MAAMsB,mBAAmB,GAAGC,sBAAsB,CAAC,CAAC;EACpD,MAAMC,sBAAsB,GAAGvB,0BAA0B,CAAC,CAAC;EAC3D,MAAMY,SAAS,GAAGK,YAAY,CAAElB,QAAS,CAAC;EAC1C,OAAOT,OAAO,CACb,MACCiC,sBAAsB,IACtBX,SAAS,EAAEY,MAAM,CACdC,QAAQ,IACT,CAAEA,QAAQ,CAACC,SAAS,IAAID,QAAQ,CAACE,IAAI,KAAK,aAAa,KACvDF,QAAQ,CAACT,IAAI,KAAKK,mBAAmB,IACrC,CAAC,CAAEI,QAAQ,CAACG,OAAO,CAACC,GAAG,CAAC;EAC1B,CAAC,EACF,CAAEjB,SAAS,EAAES,mBAAmB,EAAEE,sBAAsB,CACzD,CAAC;AACF;AAEA,OAAO,SAASD,sBAAsBA,CAAA,EAAG;EACxC,MAAM;IAAEvB,QAAQ;IAAED;EAAO,CAAC,GAAGJ,oBAAoB,CAAC,CAAC;EACnD,MAAMkB,SAAS,GAAGK,YAAY,CAAElB,QAAS,CAAC;EAC1C,MAAM+B,cAAc,GAAGzC,SAAS,CAC7BM,MAAM,IAAM;IACb,MAAMoC,IAAI,GAAGpC,MAAM,CAAEH,SAAU,CAAC,CAACwC,qBAAqB,CACrD,UAAU,EACVjC,QAAQ,EACRD,MACD,CAAC;IACD,OAAOiC,IAAI,EAAEN,QAAQ;EACtB,CAAC,EACD,CAAE1B,QAAQ,EAAED,MAAM,CACnB,CAAC;EAED,IAAK,CAAEgC,cAAc,EAAG;IACvB;EACD;EACA;EACA;EACA;EACA,OAAOlB,SAAS,EAAEqB,IAAI,CAAIR,QAAQ,IAAMA,QAAQ,CAACT,IAAI,KAAKc,cAAe,CAAC,EACvEd,IAAI;AACR","ignoreList":[]}
|
|
@@ -8,6 +8,16 @@ import { store as coreStore } from '@wordpress/core-data';
|
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
10
|
import { store as editorStore } from '../../store';
|
|
11
|
+
function checkSupport(supports = {}, key) {
|
|
12
|
+
// Check for top-level support keys.
|
|
13
|
+
if (supports[key] !== undefined) {
|
|
14
|
+
return !!supports[key];
|
|
15
|
+
}
|
|
16
|
+
const [topKey, subKey] = key.split('.');
|
|
17
|
+
// Try to unwrap sub-properties from the superfluous array.
|
|
18
|
+
const [subProperties] = Array.isArray(supports[topKey]) ? supports[topKey] : [];
|
|
19
|
+
return Array.isArray(subProperties) ? subProperties.includes(subKey) : !!subProperties?.[subKey];
|
|
20
|
+
}
|
|
11
21
|
|
|
12
22
|
/**
|
|
13
23
|
* A component which renders its own children only if the current editor post
|
|
@@ -36,7 +46,7 @@ function PostTypeSupportCheck({
|
|
|
36
46
|
}, []);
|
|
37
47
|
let isSupported = !!postType;
|
|
38
48
|
if (postType) {
|
|
39
|
-
isSupported = (Array.isArray(supportKeys) ? supportKeys : [supportKeys]).some(key =>
|
|
49
|
+
isSupported = (Array.isArray(supportKeys) ? supportKeys : [supportKeys]).some(key => checkSupport(postType.supports, key));
|
|
40
50
|
}
|
|
41
51
|
if (!isSupported) {
|
|
42
52
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSelect","store","coreStore","editorStore","
|
|
1
|
+
{"version":3,"names":["useSelect","store","coreStore","editorStore","checkSupport","supports","key","undefined","topKey","subKey","split","subProperties","Array","isArray","includes","PostTypeSupportCheck","children","supportKeys","postType","select","getEditedPostAttribute","getPostType","isSupported","some"],"sources":["@wordpress/editor/src/components/post-type-support-check/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nfunction checkSupport( supports = {}, key ) {\n\t// Check for top-level support keys.\n\tif ( supports[ key ] !== undefined ) {\n\t\treturn !! supports[ key ];\n\t}\n\n\tconst [ topKey, subKey ] = key.split( '.' );\n\t// Try to unwrap sub-properties from the superfluous array.\n\tconst [ subProperties ] = Array.isArray( supports[ topKey ] )\n\t\t? supports[ topKey ]\n\t\t: [];\n\n\treturn Array.isArray( subProperties )\n\t\t? subProperties.includes( subKey )\n\t\t: !! subProperties?.[ subKey ];\n}\n\n/**\n * A component which renders its own children only if the current editor post\n * type supports one of the given `supportKeys` prop.\n *\n * @param {Object} props Props.\n * @param {React.ReactNode} props.children Children to be rendered if post\n * type supports.\n * @param {(string|string[])} props.supportKeys String or string array of keys\n * to test.\n *\n * @return {React.ReactNode} The component to be rendered.\n */\nfunction PostTypeSupportCheck( { children, supportKeys } ) {\n\tconst postType = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute } = select( editorStore );\n\t\tconst { getPostType } = select( coreStore );\n\t\treturn getPostType( getEditedPostAttribute( 'type' ) );\n\t}, [] );\n\tlet isSupported = !! postType;\n\tif ( postType ) {\n\t\tisSupported = (\n\t\t\tArray.isArray( supportKeys ) ? supportKeys : [ supportKeys ]\n\t\t).some( ( key ) => checkSupport( postType.supports, key ) );\n\t}\n\n\tif ( ! isSupported ) {\n\t\treturn null;\n\t}\n\n\treturn children;\n}\n\nexport default PostTypeSupportCheck;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASD,KAAK,IAAIE,WAAW,QAAQ,aAAa;AAElD,SAASC,YAAYA,CAAEC,QAAQ,GAAG,CAAC,CAAC,EAAEC,GAAG,EAAG;EAC3C;EACA,IAAKD,QAAQ,CAAEC,GAAG,CAAE,KAAKC,SAAS,EAAG;IACpC,OAAO,CAAC,CAAEF,QAAQ,CAAEC,GAAG,CAAE;EAC1B;EAEA,MAAM,CAAEE,MAAM,EAAEC,MAAM,CAAE,GAAGH,GAAG,CAACI,KAAK,CAAE,GAAI,CAAC;EAC3C;EACA,MAAM,CAAEC,aAAa,CAAE,GAAGC,KAAK,CAACC,OAAO,CAAER,QAAQ,CAAEG,MAAM,CAAG,CAAC,GAC1DH,QAAQ,CAAEG,MAAM,CAAE,GAClB,EAAE;EAEL,OAAOI,KAAK,CAACC,OAAO,CAAEF,aAAc,CAAC,GAClCA,aAAa,CAACG,QAAQ,CAAEL,MAAO,CAAC,GAChC,CAAC,CAAEE,aAAa,GAAIF,MAAM,CAAE;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASM,oBAAoBA,CAAE;EAAEC,QAAQ;EAAEC;AAAY,CAAC,EAAG;EAC1D,MAAMC,QAAQ,GAAGlB,SAAS,CAAImB,MAAM,IAAM;IACzC,MAAM;MAAEC;IAAuB,CAAC,GAAGD,MAAM,CAAEhB,WAAY,CAAC;IACxD,MAAM;MAAEkB;IAAY,CAAC,GAAGF,MAAM,CAAEjB,SAAU,CAAC;IAC3C,OAAOmB,WAAW,CAAED,sBAAsB,CAAE,MAAO,CAAE,CAAC;EACvD,CAAC,EAAE,EAAG,CAAC;EACP,IAAIE,WAAW,GAAG,CAAC,CAAEJ,QAAQ;EAC7B,IAAKA,QAAQ,EAAG;IACfI,WAAW,GAAG,CACbV,KAAK,CAACC,OAAO,CAAEI,WAAY,CAAC,GAAGA,WAAW,GAAG,CAAEA,WAAW,CAAE,EAC3DM,IAAI,CAAIjB,GAAG,IAAMF,YAAY,CAAEc,QAAQ,CAACb,QAAQ,EAAEC,GAAI,CAAE,CAAC;EAC5D;EAEA,IAAK,CAAEgB,WAAW,EAAG;IACpB,OAAO,IAAI;EACZ;EAEA,OAAON,QAAQ;AAChB;AAEA,eAAeD,oBAAoB","ignoreList":[]}
|
|
@@ -184,7 +184,7 @@ export const ExperimentalEditorProvider = withRegistryProvider(({
|
|
|
184
184
|
const defaultBlockContext = useMemo(() => {
|
|
185
185
|
const postContext = {};
|
|
186
186
|
// If it is a template, try to inherit the post type from the name.
|
|
187
|
-
if (post.type === 'wp_template') {
|
|
187
|
+
if (post.type === 'wp_template' || post.type === 'wp_registered_template') {
|
|
188
188
|
if (post.slug === 'page') {
|
|
189
189
|
postContext.postType = 'page';
|
|
190
190
|
} else if (post.slug === 'single') {
|