@wordpress/editor 14.44.1-next.v.202604201441.0 → 14.45.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-menu-item.cjs → add-note-menu-item.cjs} +17 -14
- package/build/components/collab-sidebar/add-note-menu-item.cjs.map +7 -0
- package/build/components/collab-sidebar/{add-comment.cjs → add-note.cjs} +28 -41
- package/build/components/collab-sidebar/add-note.cjs.map +7 -0
- package/build/components/collab-sidebar/board-store.cjs +3 -0
- package/build/components/collab-sidebar/board-store.cjs.map +2 -2
- package/build/components/collab-sidebar/floating-container.cjs +4 -3
- package/build/components/collab-sidebar/floating-container.cjs.map +3 -3
- package/build/components/collab-sidebar/hooks.cjs +92 -135
- package/build/components/collab-sidebar/hooks.cjs.map +3 -3
- package/build/components/collab-sidebar/index.cjs +28 -79
- package/build/components/collab-sidebar/index.cjs.map +3 -3
- package/build/components/collab-sidebar/{comment-author-info.cjs → note-byline.cjs} +13 -9
- package/build/components/collab-sidebar/note-byline.cjs.map +7 -0
- package/build/components/collab-sidebar/note-card.cjs +58 -0
- package/build/components/collab-sidebar/note-card.cjs.map +7 -0
- package/build/components/collab-sidebar/{comment-form.cjs → note-form.cjs} +45 -36
- package/build/components/collab-sidebar/note-form.cjs.map +7 -0
- package/build/components/collab-sidebar/{comment-indicator-toolbar.cjs → note-indicator-toolbar.cjs} +31 -27
- package/build/components/collab-sidebar/note-indicator-toolbar.cjs.map +7 -0
- package/build/components/collab-sidebar/note-thread.cjs +321 -0
- package/build/components/collab-sidebar/note-thread.cjs.map +7 -0
- package/build/components/collab-sidebar/note.cjs +207 -0
- package/build/components/collab-sidebar/note.cjs.map +7 -0
- package/build/components/collab-sidebar/notes.cjs +237 -0
- package/build/components/collab-sidebar/notes.cjs.map +7 -0
- package/build/components/collab-sidebar/utils.cjs +23 -25
- package/build/components/collab-sidebar/utils.cjs.map +2 -2
- package/build/components/document-bar/index.cjs.map +3 -3
- package/build/components/error-boundary/index.cjs.map +3 -3
- package/build/components/list-view-sidebar/list-view-outline.cjs.map +3 -3
- package/build/components/media/media-editor-modal.cjs +93 -0
- package/build/components/media/media-editor-modal.cjs.map +7 -0
- package/build/components/more-menu/index.cjs +3 -2
- package/build/components/more-menu/index.cjs.map +2 -2
- package/build/components/post-actions/set-as-homepage.cjs.map +3 -3
- package/build/components/post-actions/set-as-posts-page.cjs.map +3 -3
- package/build/components/post-card-panel/index.cjs +2 -2
- package/build/components/post-card-panel/index.cjs.map +3 -3
- package/build/components/post-content-information/index.cjs.map +3 -3
- package/build/components/post-excerpt/panel.cjs.map +3 -3
- package/build/components/post-last-edited-panel/index.cjs.map +3 -3
- package/build/components/post-preview-button/index.cjs +3 -2
- package/build/components/post-preview-button/index.cjs.map +2 -2
- package/build/components/post-publish-button/index.cjs +2 -2
- package/build/components/post-publish-button/index.cjs.map +2 -2
- package/build/components/post-publish-button/label.cjs +4 -2
- package/build/components/post-publish-button/label.cjs.map +2 -2
- package/build/components/post-publish-panel/postpublish.cjs +3 -2
- package/build/components/post-publish-panel/postpublish.cjs.map +2 -2
- package/build/components/post-revisions-panel/index.cjs +2 -2
- package/build/components/post-revisions-panel/index.cjs.map +2 -2
- package/build/components/post-revisions-preview/diff-markers.cjs +1 -1
- package/build/components/post-revisions-preview/diff-markers.cjs.map +2 -2
- package/build/components/post-revisions-preview/revisions-slider.cjs +1 -0
- package/build/components/post-revisions-preview/revisions-slider.cjs.map +2 -2
- package/build/components/post-saved-state/index.cjs +4 -1
- package/build/components/post-saved-state/index.cjs.map +2 -2
- package/build/components/post-text-editor/index.cjs +3 -4
- package/build/components/post-text-editor/index.cjs.map +2 -2
- package/build/components/preview-dropdown/index.cjs +3 -2
- package/build/components/preview-dropdown/index.cjs.map +2 -2
- package/build/components/provider/index.cjs +3 -1
- package/build/components/provider/index.cjs.map +3 -3
- package/build/components/provider/use-block-editor-settings.cjs +7 -1
- package/build/components/provider/use-block-editor-settings.cjs.map +3 -3
- package/build/components/provider/use-upload-save-lock.cjs +2 -12
- package/build/components/provider/use-upload-save-lock.cjs.map +2 -2
- package/build/components/resizable-editor/resize-handle.cjs +2 -1
- package/build/components/resizable-editor/resize-handle.cjs.map +2 -2
- package/build/components/revision-created-panel/index.cjs.map +3 -3
- package/build/components/site-discussion/index.cjs.map +2 -2
- package/build/components/template-actions-panel/classic-theme-content.cjs.map +2 -2
- package/build/components/template-part-menu-items/convert-to-regular.cjs +54 -11
- package/build/components/template-part-menu-items/convert-to-regular.cjs.map +3 -3
- package/build/components/visual-editor/index.cjs +5 -22
- package/build/components/visual-editor/index.cjs.map +2 -2
- package/build/store/private-actions.cjs +0 -8
- package/build/store/private-actions.cjs.map +2 -2
- package/build/store/private-selectors.cjs +0 -5
- package/build/store/private-selectors.cjs.map +2 -2
- package/build/store/reducer.cjs +0 -10
- package/build/store/reducer.cjs.map +2 -2
- package/build/utils/media-finalize/index.cjs +3 -2
- package/build/utils/media-finalize/index.cjs.map +2 -2
- package/build/utils/media-upload/index.cjs +14 -25
- package/build/utils/media-upload/index.cjs.map +2 -2
- package/build-module/components/collab-sidebar/{comment-menu-item.mjs → add-note-menu-item.mjs} +10 -11
- package/build-module/components/collab-sidebar/add-note-menu-item.mjs.map +7 -0
- package/build-module/components/collab-sidebar/{add-comment.mjs → add-note.mjs} +26 -29
- package/build-module/components/collab-sidebar/add-note.mjs.map +7 -0
- package/build-module/components/collab-sidebar/board-store.mjs +3 -0
- package/build-module/components/collab-sidebar/board-store.mjs.map +2 -2
- package/build-module/components/collab-sidebar/floating-container.mjs +4 -3
- package/build-module/components/collab-sidebar/floating-container.mjs.map +2 -2
- package/build-module/components/collab-sidebar/hooks.mjs +91 -137
- package/build-module/components/collab-sidebar/hooks.mjs.map +2 -2
- package/build-module/components/collab-sidebar/index.mjs +29 -84
- package/build-module/components/collab-sidebar/index.mjs.map +2 -2
- package/build-module/components/collab-sidebar/{comment-author-info.mjs → note-byline.mjs} +7 -7
- package/build-module/components/collab-sidebar/note-byline.mjs.map +7 -0
- package/build-module/components/collab-sidebar/note-card.mjs +33 -0
- package/build-module/components/collab-sidebar/note-card.mjs.map +7 -0
- package/build-module/components/collab-sidebar/note-form.mjs +84 -0
- package/build-module/components/collab-sidebar/note-form.mjs.map +7 -0
- package/build-module/components/collab-sidebar/{comment-indicator-toolbar.mjs → note-indicator-toolbar.mjs} +25 -29
- package/build-module/components/collab-sidebar/note-indicator-toolbar.mjs.map +7 -0
- package/build-module/components/collab-sidebar/note-thread.mjs +289 -0
- package/build-module/components/collab-sidebar/note-thread.mjs.map +7 -0
- package/build-module/components/collab-sidebar/note.mjs +176 -0
- package/build-module/components/collab-sidebar/note.mjs.map +7 -0
- package/build-module/components/collab-sidebar/notes.mjs +215 -0
- package/build-module/components/collab-sidebar/notes.mjs.map +7 -0
- package/build-module/components/collab-sidebar/utils.mjs +19 -21
- package/build-module/components/collab-sidebar/utils.mjs.map +2 -2
- package/build-module/components/document-bar/index.mjs +3 -3
- package/build-module/components/document-bar/index.mjs.map +2 -2
- package/build-module/components/error-boundary/index.mjs +2 -2
- package/build-module/components/error-boundary/index.mjs.map +2 -2
- package/build-module/components/list-view-sidebar/list-view-outline.mjs +5 -5
- package/build-module/components/list-view-sidebar/list-view-outline.mjs.map +2 -2
- package/build-module/components/media/media-editor-modal.mjs +62 -0
- package/build-module/components/media/media-editor-modal.mjs.map +7 -0
- package/build-module/components/more-menu/index.mjs +3 -7
- package/build-module/components/more-menu/index.mjs.map +2 -2
- package/build-module/components/post-actions/set-as-homepage.mjs +2 -2
- package/build-module/components/post-actions/set-as-homepage.mjs.map +2 -2
- package/build-module/components/post-actions/set-as-posts-page.mjs +2 -2
- package/build-module/components/post-actions/set-as-posts-page.mjs.map +2 -2
- package/build-module/components/post-card-panel/index.mjs +5 -5
- package/build-module/components/post-card-panel/index.mjs.map +2 -2
- package/build-module/components/post-content-information/index.mjs +2 -2
- package/build-module/components/post-content-information/index.mjs.map +2 -2
- package/build-module/components/post-excerpt/panel.mjs +2 -2
- package/build-module/components/post-excerpt/panel.mjs.map +2 -2
- package/build-module/components/post-last-edited-panel/index.mjs +2 -2
- package/build-module/components/post-last-edited-panel/index.mjs.map +2 -2
- package/build-module/components/post-preview-button/index.mjs +3 -2
- package/build-module/components/post-preview-button/index.mjs.map +2 -2
- package/build-module/components/post-publish-button/index.mjs +2 -2
- package/build-module/components/post-publish-button/index.mjs.map +2 -2
- package/build-module/components/post-publish-button/label.mjs +4 -2
- package/build-module/components/post-publish-button/label.mjs.map +2 -2
- package/build-module/components/post-publish-panel/postpublish.mjs +3 -3
- package/build-module/components/post-publish-panel/postpublish.mjs.map +2 -2
- package/build-module/components/post-revisions-panel/index.mjs +2 -2
- package/build-module/components/post-revisions-panel/index.mjs.map +2 -2
- package/build-module/components/post-revisions-preview/diff-markers.mjs +1 -1
- package/build-module/components/post-revisions-preview/diff-markers.mjs.map +2 -2
- package/build-module/components/post-revisions-preview/revisions-slider.mjs +1 -0
- package/build-module/components/post-revisions-preview/revisions-slider.mjs.map +2 -2
- package/build-module/components/post-saved-state/index.mjs +4 -1
- package/build-module/components/post-saved-state/index.mjs.map +2 -2
- package/build-module/components/post-text-editor/index.mjs +2 -3
- package/build-module/components/post-text-editor/index.mjs.map +2 -2
- package/build-module/components/preview-dropdown/index.mjs +2 -2
- package/build-module/components/preview-dropdown/index.mjs.map +2 -2
- package/build-module/components/provider/index.mjs +3 -1
- package/build-module/components/provider/index.mjs.map +2 -2
- package/build-module/components/provider/use-block-editor-settings.mjs +7 -1
- package/build-module/components/provider/use-block-editor-settings.mjs.map +2 -2
- package/build-module/components/provider/use-upload-save-lock.mjs +2 -12
- package/build-module/components/provider/use-upload-save-lock.mjs.map +2 -2
- package/build-module/components/resizable-editor/resize-handle.mjs +2 -5
- package/build-module/components/resizable-editor/resize-handle.mjs.map +2 -2
- package/build-module/components/revision-created-panel/index.mjs +2 -2
- package/build-module/components/revision-created-panel/index.mjs.map +2 -2
- package/build-module/components/site-discussion/index.mjs +2 -2
- package/build-module/components/site-discussion/index.mjs.map +2 -2
- package/build-module/components/template-actions-panel/classic-theme-content.mjs +2 -2
- package/build-module/components/template-actions-panel/classic-theme-content.mjs.map +2 -2
- package/build-module/components/template-part-menu-items/convert-to-regular.mjs +60 -14
- package/build-module/components/template-part-menu-items/convert-to-regular.mjs.map +2 -2
- package/build-module/components/visual-editor/index.mjs +5 -22
- package/build-module/components/visual-editor/index.mjs.map +2 -2
- package/build-module/store/private-actions.mjs +0 -7
- package/build-module/store/private-actions.mjs.map +2 -2
- package/build-module/store/private-selectors.mjs +0 -4
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/reducer.mjs +0 -9
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-module/utils/media-finalize/index.mjs +3 -2
- package/build-module/utils/media-finalize/index.mjs.map +2 -2
- package/build-module/utils/media-upload/index.mjs +14 -25
- package/build-module/utils/media-upload/index.mjs.map +2 -2
- package/build-style/style-rtl.css +386 -142
- package/build-style/style.css +386 -142
- package/build-types/components/collab-sidebar/add-note-menu-item.d.ts +5 -0
- package/build-types/components/collab-sidebar/add-note-menu-item.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/add-note.d.ts +6 -0
- package/build-types/components/collab-sidebar/add-note.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/board-store.d.ts +1 -0
- package/build-types/components/collab-sidebar/board-store.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/floating-container.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/hooks.d.ts +8 -21
- package/build-types/components/collab-sidebar/hooks.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/note-byline.d.ts +7 -0
- package/build-types/components/collab-sidebar/note-byline.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/note-card.d.ts +8 -0
- package/build-types/components/collab-sidebar/note-card.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/note-form.d.ts +7 -0
- package/build-types/components/collab-sidebar/note-form.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/note-indicator-toolbar.d.ts +5 -0
- package/build-types/components/collab-sidebar/note-indicator-toolbar.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/note-thread.d.ts +11 -0
- package/build-types/components/collab-sidebar/note-thread.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/note.d.ts +9 -0
- package/build-types/components/collab-sidebar/note.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/notes.d.ts +7 -0
- package/build-types/components/collab-sidebar/notes.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/utils.d.ts +21 -20
- package/build-types/components/collab-sidebar/utils.d.ts.map +1 -1
- package/build-types/components/media/media-editor-modal.d.ts +11 -0
- package/build-types/components/media/media-editor-modal.d.ts.map +1 -0
- package/build-types/components/more-menu/index.d.ts.map +1 -1
- package/build-types/components/post-preview-button/index.d.ts.map +1 -1
- package/build-types/components/post-publish-button/index.d.ts.map +1 -1
- package/build-types/components/post-publish-button/label.d.ts.map +1 -1
- package/build-types/components/post-revisions-preview/revisions-slider.d.ts.map +1 -1
- package/build-types/components/post-saved-state/index.d.ts.map +1 -1
- package/build-types/components/provider/index.d.ts.map +1 -1
- package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
- package/build-types/components/provider/use-upload-save-lock.d.ts +0 -2
- package/build-types/components/provider/use-upload-save-lock.d.ts.map +1 -1
- package/build-types/components/resizable-editor/resize-handle.d.ts.map +1 -1
- package/build-types/components/template-part-menu-items/convert-to-regular.d.ts.map +1 -1
- package/build-types/components/visual-editor/index.d.ts.map +1 -1
- package/build-types/store/private-actions.d.ts +0 -7
- package/build-types/store/private-actions.d.ts.map +1 -1
- package/build-types/store/private-selectors.d.ts +0 -7
- package/build-types/store/private-selectors.d.ts.map +1 -1
- package/build-types/store/reducer.d.ts +0 -10
- package/build-types/store/reducer.d.ts.map +1 -1
- package/build-types/utils/media-finalize/index.d.ts +1 -1
- package/build-types/utils/media-finalize/index.d.ts.map +1 -1
- package/build-types/utils/media-upload/index.d.ts.map +1 -1
- package/package.json +46 -46
- package/src/components/collab-sidebar/README.md +117 -0
- package/src/components/collab-sidebar/{comment-menu-item.js → add-note-menu-item.js} +8 -10
- package/src/components/collab-sidebar/{add-comment.js → add-note.js} +20 -21
- package/src/components/collab-sidebar/board-store.js +4 -2
- package/src/components/collab-sidebar/floating-container.js +5 -4
- package/src/components/collab-sidebar/hooks.js +115 -175
- package/src/components/collab-sidebar/index.js +35 -95
- package/src/components/collab-sidebar/{comment-author-info.js → note-byline.js} +5 -6
- package/src/components/collab-sidebar/note-card.js +36 -0
- package/src/components/collab-sidebar/{comment-form.js → note-form.js} +25 -27
- package/src/components/collab-sidebar/{comment-indicator-toolbar.js → note-indicator-toolbar.js} +29 -32
- package/src/components/collab-sidebar/note-thread.js +331 -0
- package/src/components/collab-sidebar/note.js +209 -0
- package/src/components/collab-sidebar/notes.js +276 -0
- package/src/components/collab-sidebar/style.scss +21 -11
- package/src/components/collab-sidebar/test/utils.js +65 -63
- package/src/components/collab-sidebar/utils.js +33 -35
- package/src/components/document-bar/index.js +4 -4
- package/src/components/error-boundary/index.js +3 -3
- package/src/components/list-view-sidebar/list-view-outline.js +6 -6
- package/src/components/media/media-editor-modal.js +95 -0
- package/src/components/more-menu/index.js +3 -7
- package/src/components/post-actions/set-as-homepage.js +2 -2
- package/src/components/post-actions/set-as-posts-page.js +2 -2
- package/src/components/post-card-panel/index.js +7 -7
- package/src/components/post-content-information/index.js +3 -3
- package/src/components/post-excerpt/panel.js +3 -3
- package/src/components/post-last-edited-panel/index.js +3 -3
- package/src/components/post-preview-button/index.js +3 -2
- package/src/components/post-publish-button/index.js +6 -5
- package/src/components/post-publish-button/label.js +3 -1
- package/src/components/post-publish-panel/postpublish.js +2 -2
- package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +8 -14
- package/src/components/post-revisions-panel/index.js +3 -3
- package/src/components/post-revisions-preview/diff-markers.js +1 -1
- package/src/components/post-revisions-preview/revisions-slider.js +1 -0
- package/src/components/post-saved-state/index.js +4 -1
- package/src/components/post-saved-state/test/__snapshots__/index.js.snap +0 -1
- package/src/components/post-text-editor/index.js +3 -3
- package/src/components/preview-dropdown/index.js +2 -2
- package/src/components/provider/index.js +4 -0
- package/src/components/provider/use-block-editor-settings.js +10 -0
- package/src/components/provider/use-upload-save-lock.js +2 -17
- package/src/components/resizable-editor/resize-handle.js +2 -5
- package/src/components/revision-created-panel/index.js +3 -3
- package/src/components/site-discussion/index.js +3 -3
- package/src/components/template-actions-panel/classic-theme-content.js +3 -3
- package/src/components/template-part-menu-items/convert-to-regular.js +74 -12
- package/src/components/visual-editor/index.js +2 -29
- package/src/store/private-actions.js +0 -13
- package/src/store/private-selectors.js +0 -10
- package/src/store/reducer.js +0 -16
- package/src/utils/media-finalize/index.js +2 -1
- package/src/utils/media-finalize/test/index.js +25 -1
- package/src/utils/media-upload/index.js +26 -29
- package/build/components/collab-sidebar/add-comment.cjs.map +0 -7
- package/build/components/collab-sidebar/comment-author-info.cjs.map +0 -7
- package/build/components/collab-sidebar/comment-form.cjs.map +0 -7
- package/build/components/collab-sidebar/comment-indicator-toolbar.cjs.map +0 -7
- package/build/components/collab-sidebar/comment-menu-item.cjs.map +0 -7
- package/build/components/collab-sidebar/comments.cjs +0 -696
- package/build/components/collab-sidebar/comments.cjs.map +0 -7
- package/build-module/components/collab-sidebar/add-comment.mjs.map +0 -7
- package/build-module/components/collab-sidebar/comment-author-info.mjs.map +0 -7
- package/build-module/components/collab-sidebar/comment-form.mjs +0 -82
- package/build-module/components/collab-sidebar/comment-form.mjs.map +0 -7
- package/build-module/components/collab-sidebar/comment-indicator-toolbar.mjs.map +0 -7
- package/build-module/components/collab-sidebar/comment-menu-item.mjs.map +0 -7
- package/build-module/components/collab-sidebar/comments.mjs +0 -678
- package/build-module/components/collab-sidebar/comments.mjs.map +0 -7
- package/build-types/components/collab-sidebar/add-comment.d.ts +0 -6
- package/build-types/components/collab-sidebar/add-comment.d.ts.map +0 -1
- package/build-types/components/collab-sidebar/comment-author-info.d.ts +0 -8
- package/build-types/components/collab-sidebar/comment-author-info.d.ts.map +0 -1
- package/build-types/components/collab-sidebar/comment-form.d.ts +0 -9
- package/build-types/components/collab-sidebar/comment-form.d.ts.map +0 -1
- package/build-types/components/collab-sidebar/comment-indicator-toolbar.d.ts +0 -6
- package/build-types/components/collab-sidebar/comment-indicator-toolbar.d.ts.map +0 -1
- package/build-types/components/collab-sidebar/comment-menu-item.d.ts +0 -6
- package/build-types/components/collab-sidebar/comment-menu-item.d.ts.map +0 -1
- package/build-types/components/collab-sidebar/comments.d.ts +0 -10
- package/build-types/components/collab-sidebar/comments.d.ts.map +0 -1
- package/src/components/collab-sidebar/comments.js +0 -812
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import {
|
|
5
|
-
useFloating,
|
|
6
|
-
offset as offsetMiddleware,
|
|
7
|
-
autoUpdate,
|
|
8
|
-
} from '@floating-ui/react-dom';
|
|
9
|
-
|
|
10
1
|
/**
|
|
11
2
|
* WordPress dependencies
|
|
12
3
|
*/
|
|
@@ -24,6 +15,7 @@ import {
|
|
|
24
15
|
privateApis as blockEditorPrivateApis,
|
|
25
16
|
} from '@wordpress/block-editor';
|
|
26
17
|
import { store as noticesStore } from '@wordpress/notices';
|
|
18
|
+
import { getScrollContainer } from '@wordpress/dom';
|
|
27
19
|
import { decodeEntities } from '@wordpress/html-entities';
|
|
28
20
|
import { store as interfaceStore } from '@wordpress/interface';
|
|
29
21
|
|
|
@@ -34,11 +26,11 @@ import { store as editorStore } from '../../store';
|
|
|
34
26
|
import { FLOATING_NOTES_SIDEBAR } from './constants';
|
|
35
27
|
import { unlock } from '../../lock-unlock';
|
|
36
28
|
import { createBoardStore } from './board-store';
|
|
37
|
-
import {
|
|
29
|
+
import { calculateNotePositions } from './utils';
|
|
38
30
|
|
|
39
|
-
const {
|
|
31
|
+
const { cleanEmptyObject } = unlock( blockEditorPrivateApis );
|
|
40
32
|
|
|
41
|
-
export function
|
|
33
|
+
export function useNoteThreads( postId ) {
|
|
42
34
|
const queryArgs = {
|
|
43
35
|
post: postId,
|
|
44
36
|
type: 'note',
|
|
@@ -61,110 +53,89 @@ export function useBlockComments( postId ) {
|
|
|
61
53
|
};
|
|
62
54
|
}, [] );
|
|
63
55
|
|
|
64
|
-
// Process
|
|
65
|
-
const {
|
|
56
|
+
// Process notes to build the tree structure.
|
|
57
|
+
const { notes, unresolvedNotes } = useMemo( () => {
|
|
66
58
|
if ( ! threads || threads.length === 0 ) {
|
|
67
|
-
return {
|
|
59
|
+
return { notes: [], unresolvedNotes: [] };
|
|
68
60
|
}
|
|
69
61
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
62
|
+
// Single pass over clientIds: build clientId->noteId map AND reverse lookup.
|
|
63
|
+
const blocksWithNotes = {};
|
|
64
|
+
const clientIdByNoteId = new Map();
|
|
65
|
+
for ( const clientId of clientIds ) {
|
|
66
|
+
const noteId = getBlockAttributes( clientId )?.metadata?.noteId;
|
|
67
|
+
if ( noteId ) {
|
|
68
|
+
const key = String( noteId );
|
|
69
|
+
blocksWithNotes[ clientId ] = key;
|
|
70
|
+
clientIdByNoteId.set( key, clientId );
|
|
74
71
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
//
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const commentIdToBlockClientId = Object.keys(
|
|
84
|
-
blocksWithComments
|
|
85
|
-
).reduce( ( mapping, clientId ) => {
|
|
86
|
-
mapping[ blocksWithComments[ clientId ] ] = clientId;
|
|
87
|
-
return mapping;
|
|
88
|
-
}, {} );
|
|
89
|
-
|
|
90
|
-
// Initialize each object with an empty `reply` array and map blockClientId.
|
|
91
|
-
threads.forEach( ( item ) => {
|
|
92
|
-
const itemBlock = commentIdToBlockClientId[ item.id ];
|
|
93
|
-
|
|
94
|
-
compare[ item.id ] = {
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Materialize threads; collect roots; replies linked in a second pass
|
|
75
|
+
// via unshift to invert order (matches prior reverse semantics).
|
|
76
|
+
const threadsById = new Map();
|
|
77
|
+
const rootThreads = [];
|
|
78
|
+
for ( const item of threads ) {
|
|
79
|
+
const thread = {
|
|
95
80
|
...item,
|
|
96
81
|
reply: [],
|
|
97
|
-
blockClientId:
|
|
82
|
+
blockClientId:
|
|
83
|
+
item.parent === 0
|
|
84
|
+
? clientIdByNoteId.get( String( item.id ) ) ?? null
|
|
85
|
+
: null,
|
|
98
86
|
};
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
// Iterate over the data to build the tree structure.
|
|
102
|
-
threads.forEach( ( item ) => {
|
|
87
|
+
threadsById.set( item.id, thread );
|
|
103
88
|
if ( item.parent === 0 ) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
89
|
+
rootThreads.push( thread );
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
for ( const item of threads ) {
|
|
93
|
+
if ( item.parent !== 0 ) {
|
|
94
|
+
threadsById
|
|
95
|
+
.get( item.parent )
|
|
96
|
+
?.reply.unshift( threadsById.get( item.id ) );
|
|
109
97
|
}
|
|
110
|
-
} );
|
|
111
|
-
|
|
112
|
-
if ( 0 === result?.length ) {
|
|
113
|
-
return { resultComments: [], unresolvedSortedThreads: [] };
|
|
114
98
|
}
|
|
115
99
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
} ) );
|
|
120
|
-
|
|
121
|
-
const threadIdMap = new Map(
|
|
122
|
-
updatedResult.map( ( thread ) => [ String( thread.id ), thread ] )
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
// Prepare sets to determine which threads are linked to existing blocks.
|
|
126
|
-
const mappedIds = new Set(
|
|
127
|
-
Object.values( blocksWithComments ).map( ( id ) => String( id ) )
|
|
128
|
-
);
|
|
129
|
-
|
|
130
|
-
// Get comments by block order, first unresolved, then resolved.
|
|
131
|
-
const unresolvedSortedComments = Object.values( blocksWithComments )
|
|
132
|
-
.map( ( commentId ) => threadIdMap.get( String( commentId ) ) )
|
|
133
|
-
.filter(
|
|
134
|
-
( thread ) => thread !== undefined && thread.status === 'hold'
|
|
135
|
-
);
|
|
100
|
+
if ( rootThreads.length === 0 ) {
|
|
101
|
+
return { notes: [], unresolvedNotes: [] };
|
|
102
|
+
}
|
|
136
103
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
104
|
+
// Single partition over notes-in-block-order.
|
|
105
|
+
const unresolved = [];
|
|
106
|
+
const resolved = [];
|
|
107
|
+
for ( const noteId of Object.values( blocksWithNotes ) ) {
|
|
108
|
+
const thread =
|
|
109
|
+
threadsById.get( Number( noteId ) ) ??
|
|
110
|
+
threadsById.get( noteId );
|
|
111
|
+
if ( ! thread ) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if ( thread.status === 'hold' ) {
|
|
115
|
+
unresolved.push( thread );
|
|
116
|
+
} else if ( thread.status === 'approved' ) {
|
|
117
|
+
resolved.push( thread );
|
|
118
|
+
}
|
|
119
|
+
}
|
|
143
120
|
|
|
144
|
-
//
|
|
145
|
-
const
|
|
146
|
-
( thread ) => !
|
|
121
|
+
// Orphans: root threads without a linked block. They only need to come last.
|
|
122
|
+
const orphans = rootThreads.filter(
|
|
123
|
+
( thread ) => ! thread.blockClientId
|
|
147
124
|
);
|
|
148
125
|
|
|
149
|
-
const allSortedComments = [
|
|
150
|
-
...unresolvedSortedComments,
|
|
151
|
-
...resolvedSortedComments,
|
|
152
|
-
...orphanedComments,
|
|
153
|
-
];
|
|
154
|
-
|
|
155
126
|
return {
|
|
156
|
-
|
|
157
|
-
|
|
127
|
+
notes: [ ...unresolved, ...resolved, ...orphans ],
|
|
128
|
+
unresolvedNotes: unresolved,
|
|
158
129
|
};
|
|
159
130
|
}, [ clientIds, threads, getBlockAttributes ] );
|
|
160
131
|
|
|
161
132
|
return {
|
|
162
|
-
|
|
163
|
-
|
|
133
|
+
notes,
|
|
134
|
+
unresolvedNotes,
|
|
164
135
|
};
|
|
165
136
|
}
|
|
166
137
|
|
|
167
|
-
export function
|
|
138
|
+
export function useNoteActions() {
|
|
168
139
|
const { createNotice } = useDispatch( noticesStore );
|
|
169
140
|
const { saveEntityRecord, deleteEntityRecord } = useDispatch( coreStore );
|
|
170
141
|
const { getCurrentPostId } = useSelect( editorStore );
|
|
@@ -198,7 +169,7 @@ export function useBlockCommentsActions() {
|
|
|
198
169
|
{ throwOnError: true }
|
|
199
170
|
);
|
|
200
171
|
|
|
201
|
-
// If it's a
|
|
172
|
+
// If it's a top-level note, update the block attributes with the note id.
|
|
202
173
|
if ( ! parent && savedRecord?.id ) {
|
|
203
174
|
const clientId = getSelectedBlockClientId();
|
|
204
175
|
const metadata = getBlockAttributes( clientId )?.metadata;
|
|
@@ -248,8 +219,8 @@ export function useBlockCommentsActions() {
|
|
|
248
219
|
}
|
|
249
220
|
);
|
|
250
221
|
|
|
251
|
-
// Then create a new
|
|
252
|
-
const
|
|
222
|
+
// Then create a new note with the metadata.
|
|
223
|
+
const newNoteData = {
|
|
253
224
|
post: getCurrentPostId(),
|
|
254
225
|
content: content || '', // Empty content for resolve, content for reopen.
|
|
255
226
|
type: 'note',
|
|
@@ -261,7 +232,7 @@ export function useBlockCommentsActions() {
|
|
|
261
232
|
},
|
|
262
233
|
};
|
|
263
234
|
|
|
264
|
-
await saveEntityRecord( 'root', 'comment',
|
|
235
|
+
await saveEntityRecord( 'root', 'comment', newNoteData, {
|
|
265
236
|
throwOnError: true,
|
|
266
237
|
} );
|
|
267
238
|
} else {
|
|
@@ -289,19 +260,13 @@ export function useBlockCommentsActions() {
|
|
|
289
260
|
}
|
|
290
261
|
};
|
|
291
262
|
|
|
292
|
-
const onDelete = async (
|
|
263
|
+
const onDelete = async ( note ) => {
|
|
293
264
|
try {
|
|
294
|
-
await deleteEntityRecord(
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
comment.id,
|
|
298
|
-
undefined,
|
|
299
|
-
{
|
|
300
|
-
throwOnError: true,
|
|
301
|
-
}
|
|
302
|
-
);
|
|
265
|
+
await deleteEntityRecord( 'root', 'comment', note.id, undefined, {
|
|
266
|
+
throwOnError: true,
|
|
267
|
+
} );
|
|
303
268
|
|
|
304
|
-
if ( !
|
|
269
|
+
if ( ! note.parent ) {
|
|
305
270
|
const clientId = getSelectedBlockClientId();
|
|
306
271
|
const metadata = getBlockAttributes( clientId )?.metadata;
|
|
307
272
|
updateBlockAttributes( clientId, {
|
|
@@ -354,92 +319,67 @@ export function useEnableFloatingSidebar( enabled = false ) {
|
|
|
354
319
|
}, [ enabled, registry ] );
|
|
355
320
|
}
|
|
356
321
|
|
|
357
|
-
export function useFloatingBoard( {
|
|
358
|
-
|
|
322
|
+
export function useFloatingBoard( {
|
|
323
|
+
threads,
|
|
324
|
+
selectedNoteId,
|
|
325
|
+
isFloating,
|
|
326
|
+
sidebarRef,
|
|
327
|
+
} ) {
|
|
328
|
+
const [ notePositions, setNotePositions ] = useState( {} );
|
|
359
329
|
const [ store ] = useState( createBoardStore );
|
|
360
|
-
const { setCanvasMinHeight } = unlock( useDispatch( editorStore ) );
|
|
361
330
|
|
|
362
331
|
const heights = useSyncExternalStore( store.subscribe, store.getSnapshot );
|
|
363
332
|
|
|
364
|
-
//
|
|
365
|
-
//
|
|
333
|
+
// Notes are positioned in canvas content-space; CSS inherits
|
|
334
|
+
// `--canvas-scroll` to translate each thread in sync with the canvas.
|
|
366
335
|
useEffect( () => {
|
|
367
|
-
if ( ! isFloating ) {
|
|
336
|
+
if ( ! isFloating || ! sidebarRef?.current ) {
|
|
368
337
|
return;
|
|
369
338
|
}
|
|
370
339
|
|
|
340
|
+
const panel = sidebarRef.current;
|
|
341
|
+
const blockEl = store.getFirstBlockElement();
|
|
342
|
+
// Climb to the block-list root so nested scroll containers
|
|
343
|
+
// (e.g. a Group with overflow:auto) don't shadow the canvas.
|
|
344
|
+
const rootEl = blockEl?.closest( '.is-root-container' ) ?? blockEl;
|
|
345
|
+
const canvas = rootEl ? getScrollContainer( rootEl ) : null;
|
|
346
|
+
|
|
347
|
+
const applyScroll = () => {
|
|
348
|
+
panel.style.setProperty(
|
|
349
|
+
'--canvas-scroll',
|
|
350
|
+
`${ -( canvas?.scrollTop ?? 0 ) }px`
|
|
351
|
+
);
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
// Recalc is deferred to a rAF; back-to-back updates collapse into one paint.
|
|
371
355
|
const rafId = window.requestAnimationFrame( () => {
|
|
372
|
-
const
|
|
356
|
+
const result = calculateNotePositions( {
|
|
373
357
|
threads,
|
|
374
358
|
selectedNoteId,
|
|
375
359
|
blockRects: store.getBlockRects(),
|
|
376
360
|
heights,
|
|
361
|
+
scrollTop: canvas?.scrollTop ?? 0,
|
|
377
362
|
} );
|
|
378
|
-
|
|
379
|
-
|
|
363
|
+
|
|
364
|
+
setNotePositions( result.positions );
|
|
365
|
+
applyScroll();
|
|
380
366
|
} );
|
|
381
367
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
368
|
+
// Root scrolling elements (documentElement/body) don't fire scroll
|
|
369
|
+
// on themselves; capture on the window catches them in either canvas.
|
|
370
|
+
const view = canvas?.ownerDocument?.defaultView;
|
|
371
|
+
const listenerOptions = { passive: true, capture: true };
|
|
372
|
+
view?.addEventListener( 'scroll', applyScroll, listenerOptions );
|
|
373
|
+
|
|
374
|
+
return () => {
|
|
375
|
+
window.cancelAnimationFrame( rafId );
|
|
376
|
+
view?.removeEventListener( 'scroll', applyScroll, listenerOptions );
|
|
377
|
+
};
|
|
378
|
+
}, [ sidebarRef, heights, isFloating, selectedNoteId, store, threads ] );
|
|
391
379
|
|
|
392
380
|
return {
|
|
393
|
-
|
|
381
|
+
notePositions,
|
|
394
382
|
registerThread: store.registerThread,
|
|
395
383
|
unregisterThread: store.unregisterThread,
|
|
396
384
|
};
|
|
397
385
|
}
|
|
398
|
-
|
|
399
|
-
export function useFloatingThread( {
|
|
400
|
-
thread,
|
|
401
|
-
calculatedOffset,
|
|
402
|
-
registerThread,
|
|
403
|
-
unregisterThread,
|
|
404
|
-
} ) {
|
|
405
|
-
const blockElement = useBlockElement( thread.blockClientId );
|
|
406
|
-
|
|
407
|
-
// Use floating-ui to track the block element's position with the calculated offset.
|
|
408
|
-
const { y, refs } = useFloating( {
|
|
409
|
-
placement: 'right-start',
|
|
410
|
-
middleware: [
|
|
411
|
-
offsetMiddleware( {
|
|
412
|
-
crossAxis: calculatedOffset || -16,
|
|
413
|
-
} ),
|
|
414
|
-
],
|
|
415
|
-
whileElementsMounted: autoUpdate,
|
|
416
|
-
} );
|
|
417
|
-
|
|
418
|
-
// Set the floating-ui reference element.
|
|
419
|
-
useEffect( () => {
|
|
420
|
-
if ( blockElement ) {
|
|
421
|
-
refs.setReference( blockElement );
|
|
422
|
-
}
|
|
423
|
-
}, [ blockElement, refs ] );
|
|
424
|
-
|
|
425
|
-
// Register block + floating elements with the board.
|
|
426
|
-
// The board's ResizeObserver tracks height changes automatically.
|
|
427
|
-
useEffect( () => {
|
|
428
|
-
const floatingEl = refs.floating?.current;
|
|
429
|
-
if ( floatingEl && registerThread ) {
|
|
430
|
-
registerThread( thread.id, blockElement, floatingEl );
|
|
431
|
-
}
|
|
432
|
-
return () => unregisterThread?.( thread.id );
|
|
433
|
-
}, [
|
|
434
|
-
blockElement,
|
|
435
|
-
thread.id,
|
|
436
|
-
refs.floating,
|
|
437
|
-
registerThread,
|
|
438
|
-
unregisterThread,
|
|
439
|
-
] );
|
|
440
|
-
|
|
441
|
-
return {
|
|
442
|
-
y,
|
|
443
|
-
refs,
|
|
444
|
-
};
|
|
445
|
-
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
5
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
6
|
-
import { __experimentalVStack as VStack } from '@wordpress/components';
|
|
7
6
|
import { useRef } from '@wordpress/element';
|
|
8
7
|
import { useViewportMatch } from '@wordpress/compose';
|
|
9
8
|
import { useShortcut } from '@wordpress/keyboard-shortcuts';
|
|
@@ -21,58 +20,15 @@ import {
|
|
|
21
20
|
FLOATING_NOTES_SIDEBAR,
|
|
22
21
|
SIDEBARS,
|
|
23
22
|
} from './constants';
|
|
24
|
-
import {
|
|
23
|
+
import { Notes } from './notes';
|
|
25
24
|
import { store as editorStore } from '../../store';
|
|
26
|
-
import
|
|
27
|
-
import
|
|
25
|
+
import { AddNoteMenuItem } from './add-note-menu-item';
|
|
26
|
+
import { NoteAvatarIndicator } from './note-indicator-toolbar';
|
|
28
27
|
import { useGlobalStylesContext } from '../global-styles-provider';
|
|
29
|
-
import {
|
|
30
|
-
useBlockComments,
|
|
31
|
-
useBlockCommentsActions,
|
|
32
|
-
useEnableFloatingSidebar,
|
|
33
|
-
} from './hooks';
|
|
28
|
+
import { useNoteThreads, useEnableFloatingSidebar } from './hooks';
|
|
34
29
|
import PostTypeSupportCheck from '../post-type-support-check';
|
|
35
30
|
import { unlock } from '../../lock-unlock';
|
|
36
31
|
|
|
37
|
-
function NotesSidebarContent( {
|
|
38
|
-
styles,
|
|
39
|
-
comments,
|
|
40
|
-
commentSidebarRef,
|
|
41
|
-
isFloating = false,
|
|
42
|
-
} ) {
|
|
43
|
-
const { onCreate, onEdit, onDelete } = useBlockCommentsActions();
|
|
44
|
-
|
|
45
|
-
return (
|
|
46
|
-
<VStack
|
|
47
|
-
className="editor-collab-sidebar-panel"
|
|
48
|
-
style={ styles }
|
|
49
|
-
role="tree"
|
|
50
|
-
spacing="3"
|
|
51
|
-
justify="flex-start"
|
|
52
|
-
ref={ ( node ) => {
|
|
53
|
-
// Sometimes previous sidebar unmounts after the new one mounts.
|
|
54
|
-
// This ensures we always have the latest reference.
|
|
55
|
-
if ( node ) {
|
|
56
|
-
// eslint-disable-next-line react-compiler/react-compiler
|
|
57
|
-
commentSidebarRef.current = node;
|
|
58
|
-
}
|
|
59
|
-
} }
|
|
60
|
-
aria-label={
|
|
61
|
-
isFloating ? __( 'Unresolved notes' ) : __( 'All notes' )
|
|
62
|
-
}
|
|
63
|
-
>
|
|
64
|
-
<Comments
|
|
65
|
-
threads={ comments }
|
|
66
|
-
onEditComment={ onEdit }
|
|
67
|
-
onAddReply={ onCreate }
|
|
68
|
-
onCommentDelete={ onDelete }
|
|
69
|
-
commentSidebarRef={ commentSidebarRef }
|
|
70
|
-
isFloating={ isFloating }
|
|
71
|
-
/>
|
|
72
|
-
</VStack>
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
32
|
function NotesSidebar( { postId } ) {
|
|
77
33
|
const { getActiveComplementaryArea } = useSelect( interfaceStore );
|
|
78
34
|
const { enableComplementaryArea } = useDispatch( interfaceStore );
|
|
@@ -81,28 +37,22 @@ function NotesSidebar( { postId } ) {
|
|
|
81
37
|
);
|
|
82
38
|
const { selectNote } = unlock( useDispatch( editorStore ) );
|
|
83
39
|
const isLargeViewport = useViewportMatch( 'medium' );
|
|
84
|
-
const
|
|
40
|
+
const sidebarRef = useRef( null );
|
|
85
41
|
|
|
86
|
-
const { clientId,
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
? getBlockName( _clientId ) === 'core/freeform'
|
|
101
|
-
: false,
|
|
102
|
-
};
|
|
103
|
-
},
|
|
104
|
-
[]
|
|
105
|
-
);
|
|
42
|
+
const { clientId, noteId, isClassicBlock } = useSelect( ( select ) => {
|
|
43
|
+
const { getBlockAttributes, getSelectedBlockClientId, getBlockName } =
|
|
44
|
+
select( blockEditorStore );
|
|
45
|
+
const _clientId = getSelectedBlockClientId();
|
|
46
|
+
return {
|
|
47
|
+
clientId: _clientId,
|
|
48
|
+
noteId: _clientId
|
|
49
|
+
? getBlockAttributes( _clientId )?.metadata?.noteId
|
|
50
|
+
: null,
|
|
51
|
+
isClassicBlock: _clientId
|
|
52
|
+
? getBlockName( _clientId ) === 'core/freeform'
|
|
53
|
+
: false,
|
|
54
|
+
};
|
|
55
|
+
}, [] );
|
|
106
56
|
const { isDistractionFree } = useSelect( ( select ) => {
|
|
107
57
|
const { get } = select( preferencesStore );
|
|
108
58
|
return {
|
|
@@ -114,17 +64,15 @@ function NotesSidebar( { postId } ) {
|
|
|
114
64
|
[]
|
|
115
65
|
);
|
|
116
66
|
|
|
117
|
-
const {
|
|
118
|
-
useBlockComments( postId );
|
|
67
|
+
const { notes, unresolvedNotes } = useNoteThreads( postId );
|
|
119
68
|
|
|
120
69
|
// Only enable the floating sidebar for large viewports.
|
|
121
70
|
const showFloatingSidebar = isLargeViewport;
|
|
122
71
|
// Fallback to "All notes" sidebar on smaller viewports.
|
|
123
|
-
const showAllNotesSidebar =
|
|
124
|
-
resultComments.length > 0 || ! showFloatingSidebar;
|
|
72
|
+
const showAllNotesSidebar = notes.length > 0 || ! showFloatingSidebar;
|
|
125
73
|
useEnableFloatingSidebar(
|
|
126
74
|
showFloatingSidebar &&
|
|
127
|
-
(
|
|
75
|
+
( unresolvedNotes.length > 0 || selectedNote !== undefined )
|
|
128
76
|
);
|
|
129
77
|
|
|
130
78
|
useShortcut(
|
|
@@ -137,10 +85,7 @@ function NotesSidebar( { postId } ) {
|
|
|
137
85
|
// When multiple notes per block are supported. Remove note ID check.
|
|
138
86
|
// See: https://github.com/WordPress/gutenberg/pull/75147.
|
|
139
87
|
isDisabled:
|
|
140
|
-
isDistractionFree ||
|
|
141
|
-
isClassicBlock ||
|
|
142
|
-
! clientId ||
|
|
143
|
-
!! blockCommentId,
|
|
88
|
+
isDistractionFree || isClassicBlock || ! clientId || !! noteId,
|
|
144
89
|
}
|
|
145
90
|
);
|
|
146
91
|
|
|
@@ -149,8 +94,8 @@ function NotesSidebar( { postId } ) {
|
|
|
149
94
|
const backgroundColor = GlobalStyles?.styles?.color?.background;
|
|
150
95
|
|
|
151
96
|
// Find the current thread for the selected block.
|
|
152
|
-
const currentThread =
|
|
153
|
-
?
|
|
97
|
+
const currentThread = noteId
|
|
98
|
+
? notes.find( ( thread ) => thread.id === noteId )
|
|
154
99
|
: null;
|
|
155
100
|
|
|
156
101
|
async function openTheSidebar( selectedClientId ) {
|
|
@@ -160,7 +105,7 @@ function NotesSidebar( { postId } ) {
|
|
|
160
105
|
selectedClientId && selectedClientId !== clientId
|
|
161
106
|
? selectedClientId
|
|
162
107
|
: clientId;
|
|
163
|
-
const targetNote =
|
|
108
|
+
const targetNote = notes.find(
|
|
164
109
|
( note ) => note.blockClientId === targetClientId
|
|
165
110
|
);
|
|
166
111
|
|
|
@@ -187,18 +132,18 @@ function NotesSidebar( { postId } ) {
|
|
|
187
132
|
}
|
|
188
133
|
|
|
189
134
|
if ( isDistractionFree ) {
|
|
190
|
-
return <
|
|
135
|
+
return <AddNoteMenuItem isDistractionFree />;
|
|
191
136
|
}
|
|
192
137
|
|
|
193
138
|
return (
|
|
194
139
|
<>
|
|
195
140
|
{ !! currentThread && (
|
|
196
|
-
<
|
|
197
|
-
|
|
141
|
+
<NoteAvatarIndicator
|
|
142
|
+
note={ currentThread }
|
|
198
143
|
onClick={ openTheSidebar }
|
|
199
144
|
/>
|
|
200
145
|
) }
|
|
201
|
-
<
|
|
146
|
+
<AddNoteMenuItem onClick={ openTheSidebar } />
|
|
202
147
|
{ showAllNotesSidebar && (
|
|
203
148
|
<PluginSidebar
|
|
204
149
|
identifier={ ALL_NOTES_SIDEBAR }
|
|
@@ -212,10 +157,7 @@ function NotesSidebar( { postId } ) {
|
|
|
212
157
|
icon={ commentIcon }
|
|
213
158
|
closeLabel={ __( 'Close Notes' ) }
|
|
214
159
|
>
|
|
215
|
-
<
|
|
216
|
-
comments={ resultComments }
|
|
217
|
-
commentSidebarRef={ commentSidebarRef }
|
|
218
|
-
/>
|
|
160
|
+
<Notes notes={ notes } sidebarRef={ sidebarRef } />
|
|
219
161
|
</PluginSidebar>
|
|
220
162
|
) }
|
|
221
163
|
{ isLargeViewport && (
|
|
@@ -227,12 +169,10 @@ function NotesSidebar( { postId } ) {
|
|
|
227
169
|
headerClassName="editor-collab-sidebar__header"
|
|
228
170
|
backgroundColor={ backgroundColor }
|
|
229
171
|
>
|
|
230
|
-
<
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
styles={ {
|
|
234
|
-
backgroundColor,
|
|
235
|
-
} }
|
|
172
|
+
<Notes
|
|
173
|
+
notes={ unresolvedNotes }
|
|
174
|
+
sidebarRef={ sidebarRef }
|
|
175
|
+
styles={ { backgroundColor } }
|
|
236
176
|
isFloating
|
|
237
177
|
/>
|
|
238
178
|
</PluginSidebar>
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { Tooltip
|
|
4
|
+
import { Tooltip } from '@wordpress/components';
|
|
5
|
+
import { Stack } from '@wordpress/ui';
|
|
5
6
|
import { __, _x } from '@wordpress/i18n';
|
|
6
7
|
import {
|
|
7
8
|
dateI18n,
|
|
@@ -18,7 +19,7 @@ import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
|
18
19
|
*/
|
|
19
20
|
import { getAvatarBorderColor } from './utils';
|
|
20
21
|
|
|
21
|
-
function
|
|
22
|
+
export function NoteByline( { avatar, name, date, userId } ) {
|
|
22
23
|
const hasAvatar = !! avatar;
|
|
23
24
|
const dateSettings = getDateSettings();
|
|
24
25
|
const {
|
|
@@ -89,7 +90,7 @@ function CommentAuthorInfo( { avatar, name, date, userId } ) {
|
|
|
89
90
|
),
|
|
90
91
|
} }
|
|
91
92
|
/>
|
|
92
|
-
<
|
|
93
|
+
<Stack direction="column">
|
|
93
94
|
<span className="editor-collab-sidebar-panel__user-name">
|
|
94
95
|
{ name ?? currentUserName }
|
|
95
96
|
</span>
|
|
@@ -103,9 +104,7 @@ function CommentAuthorInfo( { avatar, name, date, userId } ) {
|
|
|
103
104
|
</time>
|
|
104
105
|
</Tooltip>
|
|
105
106
|
) }
|
|
106
|
-
</
|
|
107
|
+
</Stack>
|
|
107
108
|
</>
|
|
108
109
|
);
|
|
109
110
|
}
|
|
110
|
-
|
|
111
|
-
export default CommentAuthorInfo;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { FlexItem } from '@wordpress/components';
|
|
5
|
+
import { Stack } from '@wordpress/ui';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import { NoteByline } from './note-byline';
|
|
11
|
+
|
|
12
|
+
export function NoteCard( { note, actions, className, children, ...props } ) {
|
|
13
|
+
return (
|
|
14
|
+
<Stack direction="column" gap="sm" className={ className } { ...props }>
|
|
15
|
+
<Stack direction="row" align="center" justify="flex-start" gap="md">
|
|
16
|
+
<NoteByline
|
|
17
|
+
avatar={ note?.author_avatar_urls?.[ 48 ] }
|
|
18
|
+
name={ note?.author_name }
|
|
19
|
+
date={ note?.date }
|
|
20
|
+
userId={ note?.author }
|
|
21
|
+
/>
|
|
22
|
+
{ actions && (
|
|
23
|
+
<FlexItem
|
|
24
|
+
className="editor-collab-sidebar-panel__note-actions"
|
|
25
|
+
onClick={ ( event ) => event.stopPropagation() }
|
|
26
|
+
>
|
|
27
|
+
<Stack direction="row" align="center">
|
|
28
|
+
{ actions }
|
|
29
|
+
</Stack>
|
|
30
|
+
</FlexItem>
|
|
31
|
+
) }
|
|
32
|
+
</Stack>
|
|
33
|
+
{ children }
|
|
34
|
+
</Stack>
|
|
35
|
+
);
|
|
36
|
+
}
|