@wordpress/editor 14.44.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.
Files changed (363) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/collab-sidebar/{comment-menu-item.cjs → add-note-menu-item.cjs} +17 -14
  3. package/build/components/collab-sidebar/add-note-menu-item.cjs.map +7 -0
  4. package/build/components/collab-sidebar/add-note.cjs +100 -0
  5. package/build/components/collab-sidebar/add-note.cjs.map +7 -0
  6. package/build/components/collab-sidebar/board-store.cjs +106 -0
  7. package/build/components/collab-sidebar/board-store.cjs.map +7 -0
  8. package/build/components/collab-sidebar/floating-container.cjs +63 -0
  9. package/build/components/collab-sidebar/floating-container.cjs.map +7 -0
  10. package/build/components/collab-sidebar/hooks.cjs +105 -140
  11. package/build/components/collab-sidebar/hooks.cjs.map +3 -3
  12. package/build/components/collab-sidebar/index.cjs +28 -90
  13. package/build/components/collab-sidebar/index.cjs.map +3 -3
  14. package/build/components/collab-sidebar/{comment-author-info.cjs → note-byline.cjs} +13 -9
  15. package/build/components/collab-sidebar/note-byline.cjs.map +7 -0
  16. package/build/components/collab-sidebar/note-card.cjs +58 -0
  17. package/build/components/collab-sidebar/note-card.cjs.map +7 -0
  18. package/build/components/collab-sidebar/{comment-form.cjs → note-form.cjs} +46 -45
  19. package/build/components/collab-sidebar/note-form.cjs.map +7 -0
  20. package/build/components/collab-sidebar/{comment-indicator-toolbar.cjs → note-indicator-toolbar.cjs} +31 -27
  21. package/build/components/collab-sidebar/note-indicator-toolbar.cjs.map +7 -0
  22. package/build/components/collab-sidebar/note-thread.cjs +321 -0
  23. package/build/components/collab-sidebar/note-thread.cjs.map +7 -0
  24. package/build/components/collab-sidebar/note.cjs +207 -0
  25. package/build/components/collab-sidebar/note.cjs.map +7 -0
  26. package/build/components/collab-sidebar/notes.cjs +237 -0
  27. package/build/components/collab-sidebar/notes.cjs.map +7 -0
  28. package/build/components/collab-sidebar/utils.cjs +80 -14
  29. package/build/components/collab-sidebar/utils.cjs.map +2 -2
  30. package/build/components/collaborators-presence/avatar/component.cjs.map +1 -1
  31. package/build/components/collaborators-presence/index.cjs +3 -3
  32. package/build/components/collaborators-presence/index.cjs.map +2 -2
  33. package/build/components/collaborators-presence/list.cjs +3 -3
  34. package/build/components/collaborators-presence/list.cjs.map +2 -2
  35. package/build/components/document-bar/index.cjs.map +3 -3
  36. package/build/components/error-boundary/index.cjs.map +3 -3
  37. package/build/components/list-view-sidebar/list-view-outline.cjs.map +3 -3
  38. package/build/components/media/media-editor-modal.cjs +93 -0
  39. package/build/components/media/media-editor-modal.cjs.map +7 -0
  40. package/build/components/media-categories/index.cjs +1 -1
  41. package/build/components/media-categories/index.cjs.map +1 -1
  42. package/build/components/more-menu/index.cjs +4 -3
  43. package/build/components/more-menu/index.cjs.map +2 -2
  44. package/build/components/post-actions/set-as-homepage.cjs.map +3 -3
  45. package/build/components/post-actions/set-as-posts-page.cjs.map +3 -3
  46. package/build/components/post-card-panel/index.cjs +2 -2
  47. package/build/components/post-card-panel/index.cjs.map +3 -3
  48. package/build/components/post-content-information/index.cjs.map +3 -3
  49. package/build/components/post-excerpt/panel.cjs.map +3 -3
  50. package/build/components/post-last-edited-panel/index.cjs.map +3 -3
  51. package/build/components/post-preview-button/index.cjs +3 -2
  52. package/build/components/post-preview-button/index.cjs.map +2 -2
  53. package/build/components/post-publish-button/index.cjs +2 -2
  54. package/build/components/post-publish-button/index.cjs.map +2 -2
  55. package/build/components/post-publish-button/label.cjs +4 -2
  56. package/build/components/post-publish-button/label.cjs.map +2 -2
  57. package/build/components/post-publish-panel/maybe-upload-media.cjs +1 -1
  58. package/build/components/post-publish-panel/maybe-upload-media.cjs.map +1 -1
  59. package/build/components/post-publish-panel/postpublish.cjs +3 -2
  60. package/build/components/post-publish-panel/postpublish.cjs.map +2 -2
  61. package/build/components/post-revisions-panel/index.cjs +2 -2
  62. package/build/components/post-revisions-panel/index.cjs.map +2 -2
  63. package/build/components/post-revisions-preview/diff-markers.cjs +1 -1
  64. package/build/components/post-revisions-preview/diff-markers.cjs.map +2 -2
  65. package/build/components/post-revisions-preview/revisions-slider.cjs +1 -0
  66. package/build/components/post-revisions-preview/revisions-slider.cjs.map +2 -2
  67. package/build/components/post-saved-state/index.cjs +4 -1
  68. package/build/components/post-saved-state/index.cjs.map +2 -2
  69. package/build/components/post-text-editor/index.cjs +3 -4
  70. package/build/components/post-text-editor/index.cjs.map +2 -2
  71. package/build/components/preview-dropdown/index.cjs +3 -2
  72. package/build/components/preview-dropdown/index.cjs.map +2 -2
  73. package/build/components/provider/index.cjs +3 -1
  74. package/build/components/provider/index.cjs.map +3 -3
  75. package/build/components/provider/use-block-editor-settings.cjs +7 -1
  76. package/build/components/provider/use-block-editor-settings.cjs.map +3 -3
  77. package/build/components/provider/use-upload-save-lock.cjs +2 -12
  78. package/build/components/provider/use-upload-save-lock.cjs.map +2 -2
  79. package/build/components/resizable-editor/resize-handle.cjs +2 -1
  80. package/build/components/resizable-editor/resize-handle.cjs.map +2 -2
  81. package/build/components/revision-created-panel/index.cjs.map +3 -3
  82. package/build/components/site-discussion/index.cjs.map +2 -2
  83. package/build/components/style-book/constants.cjs +1 -1
  84. package/build/components/style-book/constants.cjs.map +1 -1
  85. package/build/components/style-book/index.cjs +1 -1
  86. package/build/components/style-book/index.cjs.map +1 -1
  87. package/build/components/template-actions-panel/classic-theme-content.cjs.map +2 -2
  88. package/build/components/template-part-menu-items/convert-to-regular.cjs +54 -11
  89. package/build/components/template-part-menu-items/convert-to-regular.cjs.map +3 -3
  90. package/build/components/visual-editor/index.cjs +5 -22
  91. package/build/components/visual-editor/index.cjs.map +2 -2
  92. package/build/store/private-actions.cjs +0 -8
  93. package/build/store/private-actions.cjs.map +2 -2
  94. package/build/store/private-selectors.cjs +0 -5
  95. package/build/store/private-selectors.cjs.map +2 -2
  96. package/build/store/reducer.cjs +0 -10
  97. package/build/store/reducer.cjs.map +2 -2
  98. package/build/utils/media-finalize/index.cjs +3 -2
  99. package/build/utils/media-finalize/index.cjs.map +2 -2
  100. package/build/utils/media-upload/index.cjs +14 -25
  101. package/build/utils/media-upload/index.cjs.map +2 -2
  102. package/build-module/components/collab-sidebar/{comment-menu-item.mjs → add-note-menu-item.mjs} +10 -11
  103. package/build-module/components/collab-sidebar/add-note-menu-item.mjs.map +7 -0
  104. package/build-module/components/collab-sidebar/add-note.mjs +78 -0
  105. package/build-module/components/collab-sidebar/add-note.mjs.map +7 -0
  106. package/build-module/components/collab-sidebar/board-store.mjs +81 -0
  107. package/build-module/components/collab-sidebar/board-store.mjs.map +7 -0
  108. package/build-module/components/collab-sidebar/floating-container.mjs +28 -0
  109. package/build-module/components/collab-sidebar/floating-container.mjs.map +7 -0
  110. package/build-module/components/collab-sidebar/hooks.mjs +105 -144
  111. package/build-module/components/collab-sidebar/hooks.mjs.map +2 -2
  112. package/build-module/components/collab-sidebar/index.mjs +29 -95
  113. package/build-module/components/collab-sidebar/index.mjs.map +2 -2
  114. package/build-module/components/collab-sidebar/{comment-author-info.mjs → note-byline.mjs} +7 -7
  115. package/build-module/components/collab-sidebar/note-byline.mjs.map +7 -0
  116. package/build-module/components/collab-sidebar/note-card.mjs +33 -0
  117. package/build-module/components/collab-sidebar/note-card.mjs.map +7 -0
  118. package/build-module/components/collab-sidebar/note-form.mjs +84 -0
  119. package/build-module/components/collab-sidebar/note-form.mjs.map +7 -0
  120. package/build-module/components/collab-sidebar/{comment-indicator-toolbar.mjs → note-indicator-toolbar.mjs} +25 -29
  121. package/build-module/components/collab-sidebar/note-indicator-toolbar.mjs.map +7 -0
  122. package/build-module/components/collab-sidebar/note-thread.mjs +289 -0
  123. package/build-module/components/collab-sidebar/note-thread.mjs.map +7 -0
  124. package/build-module/components/collab-sidebar/note.mjs +176 -0
  125. package/build-module/components/collab-sidebar/note.mjs.map +7 -0
  126. package/build-module/components/collab-sidebar/notes.mjs +215 -0
  127. package/build-module/components/collab-sidebar/notes.mjs.map +7 -0
  128. package/build-module/components/collab-sidebar/utils.mjs +76 -10
  129. package/build-module/components/collab-sidebar/utils.mjs.map +2 -2
  130. package/build-module/components/collaborators-presence/avatar/component.mjs.map +1 -1
  131. package/build-module/components/collaborators-presence/index.mjs +3 -3
  132. package/build-module/components/collaborators-presence/index.mjs.map +2 -2
  133. package/build-module/components/collaborators-presence/list.mjs +3 -3
  134. package/build-module/components/collaborators-presence/list.mjs.map +2 -2
  135. package/build-module/components/document-bar/index.mjs +3 -3
  136. package/build-module/components/document-bar/index.mjs.map +2 -2
  137. package/build-module/components/error-boundary/index.mjs +2 -2
  138. package/build-module/components/error-boundary/index.mjs.map +2 -2
  139. package/build-module/components/list-view-sidebar/list-view-outline.mjs +5 -5
  140. package/build-module/components/list-view-sidebar/list-view-outline.mjs.map +2 -2
  141. package/build-module/components/media/media-editor-modal.mjs +62 -0
  142. package/build-module/components/media/media-editor-modal.mjs.map +7 -0
  143. package/build-module/components/media-categories/index.mjs +1 -1
  144. package/build-module/components/media-categories/index.mjs.map +1 -1
  145. package/build-module/components/more-menu/index.mjs +4 -8
  146. package/build-module/components/more-menu/index.mjs.map +2 -2
  147. package/build-module/components/post-actions/set-as-homepage.mjs +2 -2
  148. package/build-module/components/post-actions/set-as-homepage.mjs.map +2 -2
  149. package/build-module/components/post-actions/set-as-posts-page.mjs +2 -2
  150. package/build-module/components/post-actions/set-as-posts-page.mjs.map +2 -2
  151. package/build-module/components/post-card-panel/index.mjs +5 -5
  152. package/build-module/components/post-card-panel/index.mjs.map +2 -2
  153. package/build-module/components/post-content-information/index.mjs +2 -2
  154. package/build-module/components/post-content-information/index.mjs.map +2 -2
  155. package/build-module/components/post-excerpt/panel.mjs +2 -2
  156. package/build-module/components/post-excerpt/panel.mjs.map +2 -2
  157. package/build-module/components/post-last-edited-panel/index.mjs +2 -2
  158. package/build-module/components/post-last-edited-panel/index.mjs.map +2 -2
  159. package/build-module/components/post-preview-button/index.mjs +3 -2
  160. package/build-module/components/post-preview-button/index.mjs.map +2 -2
  161. package/build-module/components/post-publish-button/index.mjs +2 -2
  162. package/build-module/components/post-publish-button/index.mjs.map +2 -2
  163. package/build-module/components/post-publish-button/label.mjs +4 -2
  164. package/build-module/components/post-publish-button/label.mjs.map +2 -2
  165. package/build-module/components/post-publish-panel/maybe-upload-media.mjs +1 -1
  166. package/build-module/components/post-publish-panel/maybe-upload-media.mjs.map +1 -1
  167. package/build-module/components/post-publish-panel/postpublish.mjs +3 -3
  168. package/build-module/components/post-publish-panel/postpublish.mjs.map +2 -2
  169. package/build-module/components/post-revisions-panel/index.mjs +2 -2
  170. package/build-module/components/post-revisions-panel/index.mjs.map +2 -2
  171. package/build-module/components/post-revisions-preview/diff-markers.mjs +1 -1
  172. package/build-module/components/post-revisions-preview/diff-markers.mjs.map +2 -2
  173. package/build-module/components/post-revisions-preview/revisions-slider.mjs +1 -0
  174. package/build-module/components/post-revisions-preview/revisions-slider.mjs.map +2 -2
  175. package/build-module/components/post-saved-state/index.mjs +4 -1
  176. package/build-module/components/post-saved-state/index.mjs.map +2 -2
  177. package/build-module/components/post-text-editor/index.mjs +2 -3
  178. package/build-module/components/post-text-editor/index.mjs.map +2 -2
  179. package/build-module/components/preview-dropdown/index.mjs +2 -2
  180. package/build-module/components/preview-dropdown/index.mjs.map +2 -2
  181. package/build-module/components/provider/index.mjs +3 -1
  182. package/build-module/components/provider/index.mjs.map +2 -2
  183. package/build-module/components/provider/use-block-editor-settings.mjs +7 -1
  184. package/build-module/components/provider/use-block-editor-settings.mjs.map +2 -2
  185. package/build-module/components/provider/use-upload-save-lock.mjs +2 -12
  186. package/build-module/components/provider/use-upload-save-lock.mjs.map +2 -2
  187. package/build-module/components/resizable-editor/resize-handle.mjs +2 -5
  188. package/build-module/components/resizable-editor/resize-handle.mjs.map +2 -2
  189. package/build-module/components/revision-created-panel/index.mjs +2 -2
  190. package/build-module/components/revision-created-panel/index.mjs.map +2 -2
  191. package/build-module/components/site-discussion/index.mjs +2 -2
  192. package/build-module/components/site-discussion/index.mjs.map +2 -2
  193. package/build-module/components/style-book/constants.mjs +1 -1
  194. package/build-module/components/style-book/constants.mjs.map +1 -1
  195. package/build-module/components/style-book/index.mjs +1 -1
  196. package/build-module/components/style-book/index.mjs.map +1 -1
  197. package/build-module/components/template-actions-panel/classic-theme-content.mjs +2 -2
  198. package/build-module/components/template-actions-panel/classic-theme-content.mjs.map +2 -2
  199. package/build-module/components/template-part-menu-items/convert-to-regular.mjs +60 -14
  200. package/build-module/components/template-part-menu-items/convert-to-regular.mjs.map +2 -2
  201. package/build-module/components/visual-editor/index.mjs +5 -22
  202. package/build-module/components/visual-editor/index.mjs.map +2 -2
  203. package/build-module/store/private-actions.mjs +0 -7
  204. package/build-module/store/private-actions.mjs.map +2 -2
  205. package/build-module/store/private-selectors.mjs +0 -4
  206. package/build-module/store/private-selectors.mjs.map +2 -2
  207. package/build-module/store/reducer.mjs +0 -9
  208. package/build-module/store/reducer.mjs.map +2 -2
  209. package/build-module/utils/media-finalize/index.mjs +3 -2
  210. package/build-module/utils/media-finalize/index.mjs.map +2 -2
  211. package/build-module/utils/media-upload/index.mjs +14 -25
  212. package/build-module/utils/media-upload/index.mjs.map +2 -2
  213. package/build-style/style-rtl.css +397 -171
  214. package/build-style/style.css +397 -171
  215. package/build-types/components/collab-sidebar/add-note-menu-item.d.ts +5 -0
  216. package/build-types/components/collab-sidebar/add-note-menu-item.d.ts.map +1 -0
  217. package/build-types/components/collab-sidebar/add-note.d.ts +6 -0
  218. package/build-types/components/collab-sidebar/add-note.d.ts.map +1 -0
  219. package/build-types/components/collab-sidebar/board-store.d.ts +9 -0
  220. package/build-types/components/collab-sidebar/board-store.d.ts.map +1 -0
  221. package/build-types/components/collab-sidebar/floating-container.d.ts +8 -0
  222. package/build-types/components/collab-sidebar/floating-container.d.ts.map +1 -0
  223. package/build-types/components/collab-sidebar/hooks.d.ts +13 -22
  224. package/build-types/components/collab-sidebar/hooks.d.ts.map +1 -1
  225. package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
  226. package/build-types/components/collab-sidebar/note-byline.d.ts +7 -0
  227. package/build-types/components/collab-sidebar/note-byline.d.ts.map +1 -0
  228. package/build-types/components/collab-sidebar/note-card.d.ts +8 -0
  229. package/build-types/components/collab-sidebar/note-card.d.ts.map +1 -0
  230. package/build-types/components/collab-sidebar/note-form.d.ts +7 -0
  231. package/build-types/components/collab-sidebar/note-form.d.ts.map +1 -0
  232. package/build-types/components/collab-sidebar/note-indicator-toolbar.d.ts +5 -0
  233. package/build-types/components/collab-sidebar/note-indicator-toolbar.d.ts.map +1 -0
  234. package/build-types/components/collab-sidebar/note-thread.d.ts +11 -0
  235. package/build-types/components/collab-sidebar/note-thread.d.ts.map +1 -0
  236. package/build-types/components/collab-sidebar/note.d.ts +9 -0
  237. package/build-types/components/collab-sidebar/note.d.ts.map +1 -0
  238. package/build-types/components/collab-sidebar/notes.d.ts +7 -0
  239. package/build-types/components/collab-sidebar/notes.d.ts.map +1 -0
  240. package/build-types/components/collab-sidebar/utils.d.ts +41 -17
  241. package/build-types/components/collab-sidebar/utils.d.ts.map +1 -1
  242. package/build-types/components/media/media-editor-modal.d.ts +11 -0
  243. package/build-types/components/media/media-editor-modal.d.ts.map +1 -0
  244. package/build-types/components/more-menu/index.d.ts.map +1 -1
  245. package/build-types/components/post-preview-button/index.d.ts.map +1 -1
  246. package/build-types/components/post-publish-button/index.d.ts.map +1 -1
  247. package/build-types/components/post-publish-button/label.d.ts.map +1 -1
  248. package/build-types/components/post-revisions-preview/revisions-slider.d.ts.map +1 -1
  249. package/build-types/components/post-saved-state/index.d.ts.map +1 -1
  250. package/build-types/components/provider/index.d.ts.map +1 -1
  251. package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
  252. package/build-types/components/provider/use-upload-save-lock.d.ts +0 -2
  253. package/build-types/components/provider/use-upload-save-lock.d.ts.map +1 -1
  254. package/build-types/components/resizable-editor/resize-handle.d.ts.map +1 -1
  255. package/build-types/components/style-book/constants.d.ts +1 -1
  256. package/build-types/components/style-book/constants.d.ts.map +1 -1
  257. package/build-types/components/template-part-menu-items/convert-to-regular.d.ts.map +1 -1
  258. package/build-types/components/visual-editor/index.d.ts.map +1 -1
  259. package/build-types/store/private-actions.d.ts +0 -7
  260. package/build-types/store/private-actions.d.ts.map +1 -1
  261. package/build-types/store/private-selectors.d.ts +0 -7
  262. package/build-types/store/private-selectors.d.ts.map +1 -1
  263. package/build-types/store/reducer.d.ts +0 -10
  264. package/build-types/store/reducer.d.ts.map +1 -1
  265. package/build-types/utils/media-finalize/index.d.ts +1 -1
  266. package/build-types/utils/media-finalize/index.d.ts.map +1 -1
  267. package/build-types/utils/media-upload/index.d.ts.map +1 -1
  268. package/package.json +46 -46
  269. package/src/components/collab-sidebar/README.md +117 -0
  270. package/src/components/collab-sidebar/{comment-menu-item.js → add-note-menu-item.js} +8 -10
  271. package/src/components/collab-sidebar/{add-comment.js → add-note.js} +26 -49
  272. package/src/components/collab-sidebar/board-store.js +85 -0
  273. package/src/components/collab-sidebar/floating-container.js +30 -0
  274. package/src/components/collab-sidebar/hooks.js +130 -178
  275. package/src/components/collab-sidebar/index.js +35 -106
  276. package/src/components/collab-sidebar/{comment-author-info.js → note-byline.js} +5 -6
  277. package/src/components/collab-sidebar/note-card.js +36 -0
  278. package/src/components/collab-sidebar/{comment-form.js → note-form.js} +29 -40
  279. package/src/components/collab-sidebar/{comment-indicator-toolbar.js → note-indicator-toolbar.js} +29 -32
  280. package/src/components/collab-sidebar/note-thread.js +331 -0
  281. package/src/components/collab-sidebar/note.js +209 -0
  282. package/src/components/collab-sidebar/notes.js +276 -0
  283. package/src/components/collab-sidebar/style.scss +21 -11
  284. package/src/components/collab-sidebar/test/utils.js +155 -0
  285. package/src/components/collab-sidebar/utils.js +125 -19
  286. package/src/components/collaborators-presence/avatar/component.tsx +1 -1
  287. package/src/components/collaborators-presence/styles/collaborators-list.scss +1 -1
  288. package/src/components/collaborators-presence/styles/collaborators-presence.scss +1 -1
  289. package/src/components/document-bar/index.js +4 -4
  290. package/src/components/document-outline/style.scss +1 -1
  291. package/src/components/error-boundary/index.js +3 -3
  292. package/src/components/list-view-sidebar/list-view-outline.js +6 -6
  293. package/src/components/media/media-editor-modal.js +95 -0
  294. package/src/components/media-categories/index.js +1 -1
  295. package/src/components/more-menu/index.js +4 -8
  296. package/src/components/post-actions/set-as-homepage.js +2 -2
  297. package/src/components/post-actions/set-as-posts-page.js +2 -2
  298. package/src/components/post-card-panel/index.js +7 -7
  299. package/src/components/post-content-information/index.js +3 -3
  300. package/src/components/post-excerpt/panel.js +3 -3
  301. package/src/components/post-last-edited-panel/index.js +3 -3
  302. package/src/components/post-preview-button/index.js +3 -2
  303. package/src/components/post-publish-button/index.js +6 -5
  304. package/src/components/post-publish-button/label.js +3 -1
  305. package/src/components/post-publish-panel/maybe-upload-media.js +1 -1
  306. package/src/components/post-publish-panel/postpublish.js +2 -2
  307. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +10 -16
  308. package/src/components/post-revisions-panel/index.js +3 -3
  309. package/src/components/post-revisions-preview/diff-markers.js +1 -1
  310. package/src/components/post-revisions-preview/revisions-slider.js +1 -0
  311. package/src/components/post-revisions-preview/style.scss +1 -1
  312. package/src/components/post-saved-state/index.js +4 -1
  313. package/src/components/post-saved-state/test/__snapshots__/index.js.snap +0 -1
  314. package/src/components/post-text-editor/index.js +3 -3
  315. package/src/components/preview-dropdown/index.js +2 -2
  316. package/src/components/provider/index.js +4 -0
  317. package/src/components/provider/use-block-editor-settings.js +10 -0
  318. package/src/components/provider/use-upload-save-lock.js +2 -17
  319. package/src/components/resizable-editor/resize-handle.js +2 -5
  320. package/src/components/revision-created-panel/index.js +3 -3
  321. package/src/components/site-discussion/index.js +3 -3
  322. package/src/components/style-book/constants.ts +1 -1
  323. package/src/components/style-book/index.js +1 -1
  324. package/src/components/template-actions-panel/classic-theme-content.js +3 -3
  325. package/src/components/template-actions-panel/style.scss +1 -1
  326. package/src/components/template-part-menu-items/convert-to-regular.js +74 -12
  327. package/src/components/visual-editor/index.js +2 -29
  328. package/src/store/private-actions.js +0 -13
  329. package/src/store/private-selectors.js +0 -10
  330. package/src/store/reducer.js +0 -16
  331. package/src/utils/media-finalize/index.js +2 -1
  332. package/src/utils/media-finalize/test/index.js +25 -1
  333. package/src/utils/media-upload/index.js +26 -29
  334. package/build/components/collab-sidebar/add-comment.cjs +0 -129
  335. package/build/components/collab-sidebar/add-comment.cjs.map +0 -7
  336. package/build/components/collab-sidebar/comment-author-info.cjs.map +0 -7
  337. package/build/components/collab-sidebar/comment-form.cjs.map +0 -7
  338. package/build/components/collab-sidebar/comment-indicator-toolbar.cjs.map +0 -7
  339. package/build/components/collab-sidebar/comment-menu-item.cjs.map +0 -7
  340. package/build/components/collab-sidebar/comments.cjs +0 -816
  341. package/build/components/collab-sidebar/comments.cjs.map +0 -7
  342. package/build-module/components/collab-sidebar/add-comment.mjs +0 -100
  343. package/build-module/components/collab-sidebar/add-comment.mjs.map +0 -7
  344. package/build-module/components/collab-sidebar/comment-author-info.mjs.map +0 -7
  345. package/build-module/components/collab-sidebar/comment-form.mjs +0 -90
  346. package/build-module/components/collab-sidebar/comment-form.mjs.map +0 -7
  347. package/build-module/components/collab-sidebar/comment-indicator-toolbar.mjs.map +0 -7
  348. package/build-module/components/collab-sidebar/comment-menu-item.mjs.map +0 -7
  349. package/build-module/components/collab-sidebar/comments.mjs +0 -799
  350. package/build-module/components/collab-sidebar/comments.mjs.map +0 -7
  351. package/build-types/components/collab-sidebar/add-comment.d.ts +0 -10
  352. package/build-types/components/collab-sidebar/add-comment.d.ts.map +0 -1
  353. package/build-types/components/collab-sidebar/comment-author-info.d.ts +0 -8
  354. package/build-types/components/collab-sidebar/comment-author-info.d.ts.map +0 -1
  355. package/build-types/components/collab-sidebar/comment-form.d.ts +0 -11
  356. package/build-types/components/collab-sidebar/comment-form.d.ts.map +0 -1
  357. package/build-types/components/collab-sidebar/comment-indicator-toolbar.d.ts +0 -6
  358. package/build-types/components/collab-sidebar/comment-indicator-toolbar.d.ts.map +0 -1
  359. package/build-types/components/collab-sidebar/comment-menu-item.d.ts +0 -6
  360. package/build-types/components/collab-sidebar/comment-menu-item.d.ts.map +0 -1
  361. package/build-types/components/collab-sidebar/comments.d.ts +0 -12
  362. package/build-types/components/collab-sidebar/comments.d.ts.map +0 -1
  363. package/src/components/collab-sidebar/comments.js +0 -985
@@ -0,0 +1,209 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { RawHTML, useRef, useState } from '@wordpress/element';
10
+ import {
11
+ __experimentalConfirmDialog as ConfirmDialog,
12
+ Button,
13
+ privateApis as componentsPrivateApis,
14
+ } from '@wordpress/components';
15
+ import { __, _x, sprintf } from '@wordpress/i18n';
16
+ import { moreVertical, published } from '@wordpress/icons';
17
+
18
+ /**
19
+ * Internal dependencies
20
+ */
21
+ import { NoteCard } from './note-card';
22
+ import { NoteForm } from './note-form';
23
+ import { unlock } from '../../lock-unlock';
24
+
25
+ const { Menu } = unlock( componentsPrivateApis );
26
+
27
+ function NoteActionsMenu( { items, buttonRef } ) {
28
+ return (
29
+ <Menu placement="bottom-end">
30
+ <Menu.TriggerButton
31
+ render={
32
+ <Button
33
+ ref={ buttonRef }
34
+ size="small"
35
+ icon={ moreVertical }
36
+ label={ __( 'Actions' ) }
37
+ disabled={ ! items.length }
38
+ accessibleWhenDisabled
39
+ />
40
+ }
41
+ />
42
+ <Menu.Popover
43
+ // The menu popover is rendered in a portal, which causes focus to be
44
+ // lost and the note to be collapsed unintentionally. To prevent this,
45
+ // the popover should be rendered as an inline.
46
+ modal={ false }
47
+ >
48
+ { items.map( ( item ) => (
49
+ <Menu.Item key={ item.id } onClick={ item.onClick }>
50
+ <Menu.ItemLabel>{ item.title }</Menu.ItemLabel>
51
+ </Menu.Item>
52
+ ) ) }
53
+ </Menu.Popover>
54
+ </Menu>
55
+ );
56
+ }
57
+
58
+ export function Note( {
59
+ note,
60
+ parentNote,
61
+ isSelected,
62
+ onEditNote,
63
+ onDeleteNote,
64
+ onResolve,
65
+ } ) {
66
+ const [ actionState, setActionState ] = useState( null );
67
+ const actionButtonRef = useRef( null );
68
+
69
+ const canResolve = note.parent === 0;
70
+ const isResolutionNote =
71
+ note.type === 'note' &&
72
+ note.meta &&
73
+ ( note.meta._wp_note_status === 'resolved' ||
74
+ note.meta._wp_note_status === 'reopen' );
75
+
76
+ const menuItems = [
77
+ {
78
+ id: 'edit',
79
+ title: __( 'Edit' ),
80
+ isEligible: ( { status } ) => status !== 'approved',
81
+ onClick: () => setActionState( 'edit' ),
82
+ },
83
+ {
84
+ id: 'reopen',
85
+ title: _x( 'Reopen', 'Reopen note' ),
86
+ isEligible: ( { status } ) => status === 'approved',
87
+ onClick: () => onEditNote( { id: note.id, status: 'hold' } ),
88
+ },
89
+ {
90
+ id: 'delete',
91
+ title: __( 'Delete' ),
92
+ isEligible: () => true,
93
+ onClick: () => setActionState( 'delete' ),
94
+ },
95
+ ];
96
+ const availableItems =
97
+ parentNote?.status !== 'approved'
98
+ ? menuItems.filter( ( item ) => item.isEligible( note ) )
99
+ : [];
100
+
101
+ const deleteConfirmMessage =
102
+ note.parent === 0
103
+ ? __(
104
+ "Are you sure you want to delete this note? This will also delete all of this note's replies."
105
+ )
106
+ : __( 'Are you sure you want to delete this reply?' );
107
+
108
+ const handleCancel = () => {
109
+ setActionState( null );
110
+ actionButtonRef.current?.focus();
111
+ };
112
+
113
+ let body;
114
+ if ( actionState === 'edit' ) {
115
+ body = (
116
+ <NoteForm
117
+ onSubmit={ ( value ) => {
118
+ onEditNote( { id: note.id, content: value } );
119
+ setActionState( null );
120
+ actionButtonRef.current?.focus();
121
+ } }
122
+ onCancel={ handleCancel }
123
+ note={ note }
124
+ labels={ {
125
+ submit: _x( 'Update', 'verb' ),
126
+ input: sprintf(
127
+ // translators: %1$s: note identifier, %2$s: author name.
128
+ __( 'Edit note %1$s by %2$s' ),
129
+ note.id,
130
+ note.author_name
131
+ ),
132
+ } }
133
+ />
134
+ );
135
+ } else if ( isResolutionNote ) {
136
+ const actionText =
137
+ note.meta._wp_note_status === 'resolved'
138
+ ? __( 'Marked as resolved' )
139
+ : __( 'Reopened' );
140
+ const raw = note?.content?.raw;
141
+ const text =
142
+ raw && typeof raw === 'string' && raw.trim() !== ''
143
+ ? sprintf(
144
+ // translators: %1$s: action label ("Marked as resolved" or "Reopened"); %2$s: note text.
145
+ __( '%1$s: %2$s' ),
146
+ actionText,
147
+ raw
148
+ )
149
+ : actionText;
150
+ body = (
151
+ <RawHTML
152
+ className={ clsx(
153
+ 'editor-collab-sidebar-panel__note-content',
154
+ 'editor-collab-sidebar-panel__resolution-text'
155
+ ) }
156
+ >
157
+ { text }
158
+ </RawHTML>
159
+ );
160
+ } else {
161
+ body = (
162
+ <RawHTML className="editor-collab-sidebar-panel__note-content">
163
+ { note?.content?.rendered }
164
+ </RawHTML>
165
+ );
166
+ }
167
+
168
+ const actions = isSelected ? (
169
+ <>
170
+ { canResolve && onResolve && (
171
+ <Button
172
+ label={ _x( 'Resolve', 'Mark note as resolved' ) }
173
+ size="small"
174
+ icon={ published }
175
+ disabled={ note.status === 'approved' }
176
+ accessibleWhenDisabled={ note.status === 'approved' }
177
+ onClick={ onResolve }
178
+ />
179
+ ) }
180
+ <NoteActionsMenu
181
+ items={ availableItems }
182
+ buttonRef={ actionButtonRef }
183
+ />
184
+ </>
185
+ ) : null;
186
+
187
+ return (
188
+ <NoteCard
189
+ note={ note }
190
+ actions={ actions }
191
+ role={ note.parent !== 0 ? 'treeitem' : undefined }
192
+ >
193
+ { body }
194
+ { actionState === 'delete' && (
195
+ <ConfirmDialog
196
+ isOpen
197
+ onConfirm={ () => {
198
+ onDeleteNote( note );
199
+ setActionState( null );
200
+ } }
201
+ onCancel={ handleCancel }
202
+ confirmButtonText={ __( 'Delete' ) }
203
+ >
204
+ { deleteConfirmMessage }
205
+ </ConfirmDialog>
206
+ ) }
207
+ </NoteCard>
208
+ );
209
+ }
@@ -0,0 +1,276 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useEffect, useMemo } from '@wordpress/element';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { useSelect, useDispatch } from '@wordpress/data';
7
+ import { Stack } from '@wordpress/ui';
8
+ import {
9
+ store as blockEditorStore,
10
+ privateApis as blockEditorPrivateApis,
11
+ } from '@wordpress/block-editor';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import { unlock } from '../../lock-unlock';
17
+ import { NoteThread } from './note-thread';
18
+ import { focusNoteThread } from './utils';
19
+ import { useFloatingBoard, useNoteActions } from './hooks';
20
+ import { AddNote } from './add-note';
21
+ import { store as editorStore } from '../../store';
22
+
23
+ const { useBlockElement } = unlock( blockEditorPrivateApis );
24
+
25
+ export function Notes( { notes, sidebarRef, isFloating = false, styles } ) {
26
+ const {
27
+ onCreate: onAddReply,
28
+ onEdit: onEditNote,
29
+ onDelete,
30
+ } = useNoteActions();
31
+ const { selectNote } = unlock( useDispatch( editorStore ) );
32
+ const { selectBlock, toggleBlockSpotlight } = unlock(
33
+ useDispatch( blockEditorStore )
34
+ );
35
+
36
+ const { blockNoteId, selectedBlockClientId, orderedBlockIds } = useSelect(
37
+ ( select ) => {
38
+ const {
39
+ getBlockAttributes,
40
+ getSelectedBlockClientId,
41
+ getClientIdsWithDescendants,
42
+ } = select( blockEditorStore );
43
+ const clientId = getSelectedBlockClientId();
44
+ return {
45
+ blockNoteId: clientId
46
+ ? getBlockAttributes( clientId )?.metadata?.noteId
47
+ : null,
48
+ selectedBlockClientId: clientId,
49
+ orderedBlockIds: getClientIdsWithDescendants(),
50
+ };
51
+ },
52
+ []
53
+ );
54
+ const { selectedNote, noteFocused } = useSelect( ( select ) => {
55
+ const { getSelectedNote, isNoteFocused } = unlock(
56
+ select( editorStore )
57
+ );
58
+ return {
59
+ selectedNote: getSelectedNote(),
60
+ noteFocused: isNoteFocused(),
61
+ };
62
+ }, [] );
63
+
64
+ const relatedBlockElement = useBlockElement( selectedBlockClientId );
65
+
66
+ const threads = useMemo( () => {
67
+ // In floating mode with a pending new note, splice a placeholder
68
+ // entry at the selected block's position so the board can float it
69
+ // alongside regular threads.
70
+ if ( ! isFloating || selectedNote !== 'new' ) {
71
+ return notes;
72
+ }
73
+ const newNoteThread = {
74
+ id: 'new',
75
+ blockClientId: selectedBlockClientId,
76
+ content: { rendered: '' },
77
+ };
78
+ const out = [];
79
+ orderedBlockIds.forEach( ( blockId ) => {
80
+ if ( blockId === selectedBlockClientId ) {
81
+ out.push( newNoteThread );
82
+ } else {
83
+ const threadForBlock = notes.find(
84
+ ( t ) => t.blockClientId === blockId
85
+ );
86
+ if ( threadForBlock ) {
87
+ out.push( threadForBlock );
88
+ }
89
+ }
90
+ } );
91
+ return out;
92
+ }, [
93
+ notes,
94
+ isFloating,
95
+ selectedNote,
96
+ selectedBlockClientId,
97
+ orderedBlockIds,
98
+ ] );
99
+
100
+ const handleDelete = async ( note ) => {
101
+ const currentIndex = threads.findIndex( ( t ) => t.id === note.id );
102
+ const nextThread = threads[ currentIndex + 1 ];
103
+ const prevThread = threads[ currentIndex - 1 ];
104
+
105
+ await onDelete( note );
106
+
107
+ if ( note.parent !== 0 ) {
108
+ // Move focus to the parent thread when a reply was deleted.
109
+ selectNote( note.parent );
110
+ focusNoteThread( note.parent, sidebarRef.current );
111
+ return;
112
+ }
113
+
114
+ if ( nextThread ) {
115
+ selectNote( nextThread.id );
116
+ focusNoteThread( nextThread.id, sidebarRef.current );
117
+ } else if ( prevThread ) {
118
+ selectNote( prevThread.id );
119
+ focusNoteThread( prevThread.id, sidebarRef.current );
120
+ } else {
121
+ selectNote( undefined );
122
+ toggleBlockSpotlight( note.blockClientId, false );
123
+ // Move focus to the related block.
124
+ relatedBlockElement?.focus();
125
+ }
126
+ };
127
+
128
+ // Auto-select the related note thread when a block is selected.
129
+ useEffect( () => {
130
+ selectNote( blockNoteId ?? undefined );
131
+ }, [ blockNoteId, selectNote ] );
132
+
133
+ // Focus the selected note when requested.
134
+ useEffect( () => {
135
+ if ( noteFocused && selectedNote ) {
136
+ focusNoteThread(
137
+ selectedNote,
138
+ sidebarRef.current,
139
+ selectedNote === 'new' ? 'textarea' : undefined
140
+ );
141
+ // Clear focus flag to avoid re-triggering.
142
+ selectNote( selectedNote );
143
+ }
144
+ }, [ noteFocused, selectedNote, selectNote, sidebarRef ] );
145
+
146
+ const { notePositions, registerThread, unregisterThread } =
147
+ useFloatingBoard( {
148
+ threads,
149
+ selectedNoteId: selectedNote,
150
+ isFloating,
151
+ sidebarRef,
152
+ } );
153
+
154
+ const hasThreads = Array.isArray( threads ) && threads.length > 0;
155
+
156
+ const navigate = ( event, thread, isSelected ) => {
157
+ if ( event.defaultPrevented ) {
158
+ return;
159
+ }
160
+
161
+ const currentIndex = threads.findIndex( ( t ) => t.id === thread.id );
162
+ const isSelfTarget = event.currentTarget === event.target;
163
+
164
+ if (
165
+ ( event.key === 'Enter' || event.key === 'ArrowRight' ) &&
166
+ isSelfTarget &&
167
+ ! isSelected
168
+ ) {
169
+ // Expand thread.
170
+ selectNote( thread.id );
171
+ if ( !! thread.blockClientId ) {
172
+ // Pass `null` as the second parameter to prevent focusing the block.
173
+ selectBlock( thread.blockClientId, null );
174
+ toggleBlockSpotlight( thread.blockClientId, true );
175
+ }
176
+ } else if (
177
+ ( ( event.key === 'Enter' || event.key === 'ArrowLeft' ) &&
178
+ isSelfTarget &&
179
+ isSelected ) ||
180
+ event.key === 'Escape'
181
+ ) {
182
+ // Collapse thread.
183
+ selectNote( undefined );
184
+ if ( thread.blockClientId ) {
185
+ toggleBlockSpotlight( thread.blockClientId, false );
186
+ }
187
+ focusNoteThread( thread.id, sidebarRef.current );
188
+ } else if (
189
+ event.key === 'ArrowDown' &&
190
+ currentIndex < threads.length - 1 &&
191
+ isSelfTarget
192
+ ) {
193
+ focusNoteThread(
194
+ threads[ currentIndex + 1 ].id,
195
+ sidebarRef.current
196
+ );
197
+ } else if (
198
+ event.key === 'ArrowUp' &&
199
+ currentIndex > 0 &&
200
+ isSelfTarget
201
+ ) {
202
+ focusNoteThread(
203
+ threads[ currentIndex - 1 ].id,
204
+ sidebarRef.current
205
+ );
206
+ } else if ( event.key === 'Home' && isSelfTarget ) {
207
+ focusNoteThread( threads[ 0 ].id, sidebarRef.current );
208
+ } else if ( event.key === 'End' && isSelfTarget ) {
209
+ focusNoteThread(
210
+ threads[ threads.length - 1 ].id,
211
+ sidebarRef.current
212
+ );
213
+ }
214
+ };
215
+
216
+ return (
217
+ <Stack
218
+ className="editor-collab-sidebar-panel"
219
+ style={ styles }
220
+ role="tree"
221
+ direction="column"
222
+ gap="md"
223
+ justify="flex-start"
224
+ ref={ ( node ) => {
225
+ // Sometimes previous sidebar unmounts after the new one mounts.
226
+ // This ensures we always have the latest reference.
227
+ if ( node ) {
228
+ sidebarRef.current = node;
229
+ }
230
+ } }
231
+ aria-label={
232
+ isFloating ? __( 'Unresolved notes' ) : __( 'All notes' )
233
+ }
234
+ >
235
+ { ! hasThreads && ! isFloating ? (
236
+ <AddNote onSubmit={ onAddReply } sidebarRef={ sidebarRef } />
237
+ ) : (
238
+ <>
239
+ { ! isFloating && selectedNote === 'new' && (
240
+ <AddNote
241
+ onSubmit={ onAddReply }
242
+ sidebarRef={ sidebarRef }
243
+ />
244
+ ) }
245
+ { threads.map( ( thread ) => (
246
+ <NoteThread
247
+ key={ thread.id }
248
+ note={ thread }
249
+ onAddReply={ onAddReply }
250
+ onDeleteNote={ handleDelete }
251
+ onEditNote={ onEditNote }
252
+ isSelected={ selectedNote === thread.id }
253
+ sidebarRef={ sidebarRef }
254
+ floating={
255
+ isFloating
256
+ ? {
257
+ y: notePositions[ thread.id ],
258
+ registerThread,
259
+ unregisterThread,
260
+ }
261
+ : undefined
262
+ }
263
+ onKeyDown={ ( event ) =>
264
+ navigate(
265
+ event,
266
+ thread,
267
+ selectedNote === thread.id
268
+ )
269
+ }
270
+ />
271
+ ) ) }
272
+ </>
273
+ ) }
274
+ </Stack>
275
+ );
276
+ }
@@ -16,6 +16,7 @@
16
16
  }
17
17
 
18
18
  .editor-collab-sidebar-panel {
19
+ position: relative;
19
20
  padding: $grid-unit-20 $grid-unit-20 $grid-unit-30;
20
21
  height: 100%;
21
22
  overflow: hidden;
@@ -46,6 +47,10 @@
46
47
  right: $grid-unit-20;
47
48
  position: absolute;
48
49
  margin-top: $grid-unit-20;
50
+ // Inherits `--canvas-scroll` from the panel (set by `useFloatingBoard`)
51
+ // so each thread tracks the canvas scroll.
52
+ transform: translateY(var(--canvas-scroll, 0));
53
+ will-change: transform;
49
54
  }
50
55
  }
51
56
 
@@ -66,7 +71,7 @@
66
71
  color: $gray-700;
67
72
  }
68
73
 
69
- .editor-collab-sidebar-panel__user-comment {
74
+ .editor-collab-sidebar-panel__note-content {
70
75
  p:last-child {
71
76
  margin-bottom: 0;
72
77
  }
@@ -81,7 +86,7 @@
81
86
  background: $white;
82
87
  }
83
88
 
84
- .editor-collab-sidebar-panel__comment-status {
89
+ .editor-collab-sidebar-panel__note-actions {
85
90
  margin-left: auto;
86
91
 
87
92
  button {
@@ -95,10 +100,6 @@
95
100
  }
96
101
  }
97
102
 
98
- .editor-collab-sidebar-panel__comment-dropdown-menu {
99
- flex-shrink: 0;
100
- }
101
-
102
103
  .editor-collab-sidebar-panel__more-reply-separator {
103
104
  &::before,
104
105
  &::after {
@@ -115,11 +116,16 @@
115
116
  font-weight: $font-weight-medium;
116
117
  }
117
118
 
119
+ .editor-collab-sidebar-panel__deleted-block-notice {
120
+ font-weight: $font-weight-medium;
121
+ color: $gray-700;
122
+ }
123
+
118
124
  .editor-collab-sidebar-panel__resolution-text {
119
125
  font-style: italic;
120
126
  }
121
127
 
122
- .editor-collab-sidebar-panel__comment-form textarea {
128
+ .editor-collab-sidebar-panel__note-form textarea {
123
129
  @include input-control;
124
130
  // Vertical padding is to match the standard 40px control height when rows=1,
125
131
  // in conjunction with the 20px line-height.
@@ -130,7 +136,7 @@
130
136
  }
131
137
 
132
138
  // Visually hidden until focused (skip link pattern)
133
- .editor-collab-sidebar-panel__skip-to-comment,
139
+ .editor-collab-sidebar-panel__skip-to-note,
134
140
  .editor-collab-sidebar-panel__skip-to-block {
135
141
  position: absolute;
136
142
  top: -9999px;
@@ -147,7 +153,7 @@
147
153
  right: $grid-unit-10;
148
154
  }
149
155
  }
150
- .editor-collab-sidebar-panel__skip-to-comment:focus {
156
+ .editor-collab-sidebar-panel__skip-to-note:focus {
151
157
  top: $grid-unit-10;
152
158
  }
153
159
  .editor-collab-sidebar-panel__skip-to-block:focus {
@@ -155,7 +161,7 @@
155
161
  bottom: $grid-unit-10;
156
162
  }
157
163
 
158
- .comment-avatar {
164
+ .editor-note-indicator__avatar {
159
165
  width: $icon-size;
160
166
  border-radius: $radius-round;
161
167
  margin-left: -12px;
@@ -170,8 +176,12 @@
170
176
  }
171
177
  }
172
178
 
179
+ .editor-note-indicator__overflow {
180
+ font-weight: $font-weight-medium;
181
+ }
182
+
173
183
  .show-icon-labels {
174
- .comment-avatar-indicator {
184
+ .editor-note-indicator {
175
185
  width: auto;
176
186
  // Hide the user avatars container when labels are set to display...
177
187
  div {