@wordpress/editor 14.45.0 → 14.45.2-next.v.202605131006.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 (623) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +12 -0
  3. package/build/components/collab-sidebar/index.cjs +42 -25
  4. package/build/components/collab-sidebar/index.cjs.map +2 -2
  5. package/build/components/collab-sidebar/note-thread.cjs +19 -9
  6. package/build/components/collab-sidebar/note-thread.cjs.map +2 -2
  7. package/build/components/collab-sidebar/notes.cjs +8 -6
  8. package/build/components/collab-sidebar/notes.cjs.map +2 -2
  9. package/build/components/collab-sidebar/utils.cjs +24 -9
  10. package/build/components/collab-sidebar/utils.cjs.map +2 -2
  11. package/build/components/collaborators-presence/index.cjs +0 -10
  12. package/build/components/collaborators-presence/index.cjs.map +3 -3
  13. package/build/components/collaborators-presence/list.cjs +0 -10
  14. package/build/components/collaborators-presence/list.cjs.map +3 -3
  15. package/build/components/post-last-revision/index.cjs +5 -0
  16. package/build/components/post-last-revision/index.cjs.map +2 -2
  17. package/build/components/post-publish-panel/index.cjs +112 -124
  18. package/build/components/post-publish-panel/index.cjs.map +3 -3
  19. package/build/components/post-revisions-preview/block-diff.cjs +91 -23
  20. package/build/components/post-revisions-preview/block-diff.cjs.map +2 -2
  21. package/build/components/post-revisions-preview/diff-markers.cjs +3 -2
  22. package/build/components/post-revisions-preview/diff-markers.cjs.map +2 -2
  23. package/build/components/post-revisions-preview/revisions-slider.cjs +98 -50
  24. package/build/components/post-revisions-preview/revisions-slider.cjs.map +2 -2
  25. package/build/store/private-actions.cjs +21 -0
  26. package/build/store/private-actions.cjs.map +2 -2
  27. package/build/store/private-selectors.cjs +93 -42
  28. package/build/store/private-selectors.cjs.map +2 -2
  29. package/build/store/reducer.cjs +15 -0
  30. package/build/store/reducer.cjs.map +2 -2
  31. package/build/store/selectors.cjs.map +2 -2
  32. package/build-module/components/collab-sidebar/index.mjs +42 -25
  33. package/build-module/components/collab-sidebar/index.mjs.map +2 -2
  34. package/build-module/components/collab-sidebar/note-thread.mjs +24 -10
  35. package/build-module/components/collab-sidebar/note-thread.mjs.map +2 -2
  36. package/build-module/components/collab-sidebar/notes.mjs +8 -6
  37. package/build-module/components/collab-sidebar/notes.mjs.map +2 -2
  38. package/build-module/components/collab-sidebar/utils.mjs +22 -8
  39. package/build-module/components/collab-sidebar/utils.mjs.map +2 -2
  40. package/build-module/components/collaborators-presence/index.mjs +0 -10
  41. package/build-module/components/collaborators-presence/index.mjs.map +3 -3
  42. package/build-module/components/collaborators-presence/list.mjs +0 -10
  43. package/build-module/components/collaborators-presence/list.mjs.map +3 -3
  44. package/build-module/components/post-last-revision/index.mjs +5 -0
  45. package/build-module/components/post-last-revision/index.mjs.map +2 -2
  46. package/build-module/components/post-publish-panel/index.mjs +120 -129
  47. package/build-module/components/post-publish-panel/index.mjs.map +2 -2
  48. package/build-module/components/post-revisions-preview/block-diff.mjs +91 -23
  49. package/build-module/components/post-revisions-preview/block-diff.mjs.map +2 -2
  50. package/build-module/components/post-revisions-preview/diff-markers.mjs +3 -2
  51. package/build-module/components/post-revisions-preview/diff-markers.mjs.map +2 -2
  52. package/build-module/components/post-revisions-preview/revisions-slider.mjs +101 -53
  53. package/build-module/components/post-revisions-preview/revisions-slider.mjs.map +2 -2
  54. package/build-module/store/private-actions.mjs +20 -0
  55. package/build-module/store/private-actions.mjs.map +2 -2
  56. package/build-module/store/private-selectors.mjs +95 -43
  57. package/build-module/store/private-selectors.mjs.map +2 -2
  58. package/build-module/store/reducer.mjs +14 -0
  59. package/build-module/store/reducer.mjs.map +2 -2
  60. package/build-module/store/selectors.mjs.map +2 -2
  61. package/build-style/style-rtl.css +398 -33
  62. package/build-style/style.css +398 -33
  63. package/build-types/bindings/api.d.ts +1 -1
  64. package/build-types/bindings/api.d.ts.map +1 -1
  65. package/build-types/bindings/pattern-overrides.d.ts +8 -5
  66. package/build-types/bindings/pattern-overrides.d.ts.map +1 -1
  67. package/build-types/bindings/post-data.d.ts +8 -5
  68. package/build-types/bindings/post-data.d.ts.map +1 -1
  69. package/build-types/bindings/post-meta.d.ts +10 -7
  70. package/build-types/bindings/post-meta.d.ts.map +1 -1
  71. package/build-types/bindings/term-data.d.ts +9 -6
  72. package/build-types/bindings/term-data.d.ts.map +1 -1
  73. package/build-types/components/autocompleters/index.d.ts +2 -2
  74. package/build-types/components/autocompleters/index.d.ts.map +1 -1
  75. package/build-types/components/autocompleters/link.d.ts +6 -10
  76. package/build-types/components/autocompleters/link.d.ts.map +1 -1
  77. package/build-types/components/autocompleters/user.d.ts +7 -12
  78. package/build-types/components/autocompleters/user.d.ts.map +1 -1
  79. package/build-types/components/autosave-monitor/index.d.ts +28 -4
  80. package/build-types/components/autosave-monitor/index.d.ts.map +1 -1
  81. package/build-types/components/block-removal-warnings/index.d.ts +3 -0
  82. package/build-types/components/block-removal-warnings/index.d.ts.map +1 -1
  83. package/build-types/components/block-settings-menu/plugin-block-settings-menu-item.d.ts +7 -7
  84. package/build-types/components/block-settings-menu/plugin-block-settings-menu-item.d.ts.map +1 -1
  85. package/build-types/components/block-visibility/index.d.ts.map +1 -1
  86. package/build-types/components/blog-title/index.d.ts.map +1 -1
  87. package/build-types/components/character-count/index.d.ts.map +1 -1
  88. package/build-types/components/collab-sidebar/add-note-menu-item.d.ts +2 -2
  89. package/build-types/components/collab-sidebar/add-note-menu-item.d.ts.map +1 -1
  90. package/build-types/components/collab-sidebar/add-note.d.ts +2 -2
  91. package/build-types/components/collab-sidebar/add-note.d.ts.map +1 -1
  92. package/build-types/components/collab-sidebar/board-store.d.ts +1 -1
  93. package/build-types/components/collab-sidebar/board-store.d.ts.map +1 -1
  94. package/build-types/components/collab-sidebar/constants.d.ts +3 -3
  95. package/build-types/components/collab-sidebar/constants.d.ts.map +1 -1
  96. package/build-types/components/collab-sidebar/floating-container.d.ts +3 -3
  97. package/build-types/components/collab-sidebar/floating-container.d.ts.map +1 -1
  98. package/build-types/components/collab-sidebar/hooks.d.ts +7 -7
  99. package/build-types/components/collab-sidebar/hooks.d.ts.map +1 -1
  100. package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
  101. package/build-types/components/collab-sidebar/note-byline.d.ts +2 -2
  102. package/build-types/components/collab-sidebar/note-byline.d.ts.map +1 -1
  103. package/build-types/components/collab-sidebar/note-card.d.ts +3 -3
  104. package/build-types/components/collab-sidebar/note-card.d.ts.map +1 -1
  105. package/build-types/components/collab-sidebar/note-form.d.ts +4 -4
  106. package/build-types/components/collab-sidebar/note-form.d.ts.map +1 -1
  107. package/build-types/components/collab-sidebar/note-indicator-toolbar.d.ts +2 -2
  108. package/build-types/components/collab-sidebar/note-indicator-toolbar.d.ts.map +1 -1
  109. package/build-types/components/collab-sidebar/note-thread.d.ts +5 -5
  110. package/build-types/components/collab-sidebar/note-thread.d.ts.map +1 -1
  111. package/build-types/components/collab-sidebar/note.d.ts +4 -4
  112. package/build-types/components/collab-sidebar/note.d.ts.map +1 -1
  113. package/build-types/components/collab-sidebar/notes.d.ts +2 -2
  114. package/build-types/components/collab-sidebar/notes.d.ts.map +1 -1
  115. package/build-types/components/collab-sidebar/utils.d.ts +17 -24
  116. package/build-types/components/collab-sidebar/utils.d.ts.map +1 -1
  117. package/build-types/components/collaborators-overlay/cursor-dom-utils.d.ts.map +1 -1
  118. package/build-types/components/collaborators-overlay/cursor-registry.d.ts.map +1 -1
  119. package/build-types/components/collaborators-overlay/index.d.ts +4 -1
  120. package/build-types/components/collaborators-overlay/index.d.ts.map +1 -1
  121. package/build-types/components/collaborators-overlay/overlay.d.ts +1 -1
  122. package/build-types/components/collaborators-overlay/overlay.d.ts.map +1 -1
  123. package/build-types/components/collaborators-presence/avatar/component.d.ts.map +1 -1
  124. package/build-types/components/collaborators-presence/avatar-group/component.d.ts.map +1 -1
  125. package/build-types/components/collaborators-presence/index.d.ts +1 -2
  126. package/build-types/components/collaborators-presence/index.d.ts.map +1 -1
  127. package/build-types/components/collaborators-presence/list.d.ts +1 -2
  128. package/build-types/components/collaborators-presence/list.d.ts.map +1 -1
  129. package/build-types/components/collapsible-block-toolbar/index.d.ts.map +1 -1
  130. package/build-types/components/commands/index.d.ts.map +1 -1
  131. package/build-types/components/deprecated.d.ts +82 -53
  132. package/build-types/components/deprecated.d.ts.map +1 -1
  133. package/build-types/components/document-bar/index.d.ts +3 -3
  134. package/build-types/components/document-bar/index.d.ts.map +1 -1
  135. package/build-types/components/document-bar/useEditedSectionDetails.d.ts.map +1 -1
  136. package/build-types/components/document-outline/check.d.ts +2 -2
  137. package/build-types/components/document-outline/check.d.ts.map +1 -1
  138. package/build-types/components/document-outline/index.d.ts +2 -2
  139. package/build-types/components/document-outline/index.d.ts.map +1 -1
  140. package/build-types/components/document-outline/item.d.ts +5 -5
  141. package/build-types/components/document-outline/item.d.ts.map +1 -1
  142. package/build-types/components/document-tools/index.d.ts +1 -1
  143. package/build-types/components/document-tools/index.d.ts.map +1 -1
  144. package/build-types/components/editor/index.d.ts +7 -7
  145. package/build-types/components/editor/index.d.ts.map +1 -1
  146. package/build-types/components/editor-history/redo.d.ts +11 -2
  147. package/build-types/components/editor-history/redo.d.ts.map +1 -1
  148. package/build-types/components/editor-history/undo.d.ts +11 -2
  149. package/build-types/components/editor-history/undo.d.ts.map +1 -1
  150. package/build-types/components/editor-interface/index.d.ts +5 -5
  151. package/build-types/components/editor-interface/index.d.ts.map +1 -1
  152. package/build-types/components/editor-notices/index.d.ts +1 -1
  153. package/build-types/components/editor-notices/index.d.ts.map +1 -1
  154. package/build-types/components/editor-snackbars/index.d.ts.map +1 -1
  155. package/build-types/components/entities-saved-states/entity-record-item.d.ts +1 -1
  156. package/build-types/components/entities-saved-states/entity-record-item.d.ts.map +1 -1
  157. package/build-types/components/entities-saved-states/entity-type-list.d.ts +2 -2
  158. package/build-types/components/entities-saved-states/entity-type-list.d.ts.map +1 -1
  159. package/build-types/components/entities-saved-states/hooks/use-is-dirty.d.ts +10 -1
  160. package/build-types/components/entities-saved-states/hooks/use-is-dirty.d.ts.map +1 -1
  161. package/build-types/components/entities-saved-states/index.d.ts +4 -4
  162. package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
  163. package/build-types/components/error-boundary/index.d.ts +18 -8
  164. package/build-types/components/error-boundary/index.d.ts.map +1 -1
  165. package/build-types/components/global-keyboard-shortcuts/index.d.ts.map +1 -1
  166. package/build-types/components/global-keyboard-shortcuts/register-shortcuts.d.ts +1 -1
  167. package/build-types/components/global-keyboard-shortcuts/register-shortcuts.d.ts.map +1 -1
  168. package/build-types/components/global-styles/block-link.d.ts +1 -1
  169. package/build-types/components/global-styles/block-link.d.ts.map +1 -1
  170. package/build-types/components/global-styles/header.d.ts +2 -2
  171. package/build-types/components/global-styles/header.d.ts.map +1 -1
  172. package/build-types/components/global-styles/hooks.d.ts +3 -3
  173. package/build-types/components/global-styles/hooks.d.ts.map +1 -1
  174. package/build-types/components/global-styles/index.d.ts +3 -3
  175. package/build-types/components/global-styles/index.d.ts.map +1 -1
  176. package/build-types/components/global-styles/menu.d.ts +2 -2
  177. package/build-types/components/global-styles/menu.d.ts.map +1 -1
  178. package/build-types/components/global-styles-provider/index.d.ts +1 -1
  179. package/build-types/components/global-styles-provider/index.d.ts.map +1 -1
  180. package/build-types/components/global-styles-renderer/index.d.ts +1 -1
  181. package/build-types/components/global-styles-renderer/index.d.ts.map +1 -1
  182. package/build-types/components/global-styles-sidebar/default-sidebar.d.ts +6 -6
  183. package/build-types/components/global-styles-sidebar/default-sidebar.d.ts.map +1 -1
  184. package/build-types/components/global-styles-sidebar/index.d.ts.map +1 -1
  185. package/build-types/components/global-styles-sidebar/welcome-guide-image.d.ts +1 -1
  186. package/build-types/components/global-styles-sidebar/welcome-guide-image.d.ts.map +1 -1
  187. package/build-types/components/global-styles-sidebar/welcome-guide.d.ts.map +1 -1
  188. package/build-types/components/header/back-button.d.ts +3 -3
  189. package/build-types/components/header/back-button.d.ts.map +1 -1
  190. package/build-types/components/header/header-skeleton.d.ts +5 -5
  191. package/build-types/components/header/header-skeleton.d.ts.map +1 -1
  192. package/build-types/components/header/index.d.ts +2 -2
  193. package/build-types/components/header/index.d.ts.map +1 -1
  194. package/build-types/components/index.d.ts +94 -91
  195. package/build-types/components/index.d.ts.map +1 -1
  196. package/build-types/components/inserter-sidebar/index.d.ts.map +1 -1
  197. package/build-types/components/keyboard-shortcut-help-modal/config.d.ts +3 -3
  198. package/build-types/components/keyboard-shortcut-help-modal/config.d.ts.map +1 -1
  199. package/build-types/components/keyboard-shortcut-help-modal/dynamic-shortcut.d.ts +1 -1
  200. package/build-types/components/keyboard-shortcut-help-modal/dynamic-shortcut.d.ts.map +1 -1
  201. package/build-types/components/keyboard-shortcut-help-modal/index.d.ts +1 -1
  202. package/build-types/components/keyboard-shortcut-help-modal/index.d.ts.map +1 -1
  203. package/build-types/components/keyboard-shortcut-help-modal/shortcut.d.ts +3 -3
  204. package/build-types/components/keyboard-shortcut-help-modal/shortcut.d.ts.map +1 -1
  205. package/build-types/components/list-view-sidebar/index.d.ts.map +1 -1
  206. package/build-types/components/list-view-sidebar/list-view-outline.d.ts.map +1 -1
  207. package/build-types/components/local-autosave-monitor/index.d.ts +12 -0
  208. package/build-types/components/local-autosave-monitor/index.d.ts.map +1 -1
  209. package/build-types/components/media/index.d.ts +2 -2
  210. package/build-types/components/media/index.d.ts.map +1 -1
  211. package/build-types/components/media/media-editor-modal.d.ts.map +1 -1
  212. package/build-types/components/media/metadata-panel.d.ts.map +1 -1
  213. package/build-types/components/media/preview.d.ts.map +1 -1
  214. package/build-types/components/media-categories/index.d.ts +11 -4
  215. package/build-types/components/media-categories/index.d.ts.map +1 -1
  216. package/build-types/components/mode-switcher/index.d.ts +1 -1
  217. package/build-types/components/mode-switcher/index.d.ts.map +1 -1
  218. package/build-types/components/more-menu/copy-content-menu-item.d.ts.map +1 -1
  219. package/build-types/components/more-menu/index.d.ts.map +1 -1
  220. package/build-types/components/more-menu/tools-more-menu-group.d.ts +2 -2
  221. package/build-types/components/more-menu/tools-more-menu-group.d.ts.map +1 -1
  222. package/build-types/components/more-menu/view-more-menu-group.d.ts +2 -2
  223. package/build-types/components/more-menu/view-more-menu-group.d.ts.map +1 -1
  224. package/build-types/components/page-attributes/check.d.ts +3 -3
  225. package/build-types/components/page-attributes/check.d.ts.map +1 -1
  226. package/build-types/components/page-attributes/order.d.ts +1 -1
  227. package/build-types/components/page-attributes/order.d.ts.map +1 -1
  228. package/build-types/components/page-attributes/panel.d.ts +1 -1
  229. package/build-types/components/page-attributes/panel.d.ts.map +1 -1
  230. package/build-types/components/page-attributes/parent.d.ts +3 -3
  231. package/build-types/components/page-attributes/parent.d.ts.map +1 -1
  232. package/build-types/components/pattern-duplicate-modal/index.d.ts +1 -1
  233. package/build-types/components/pattern-duplicate-modal/index.d.ts.map +1 -1
  234. package/build-types/components/pattern-overrides-panel/index.d.ts.map +1 -1
  235. package/build-types/components/pattern-rename-modal/index.d.ts +1 -1
  236. package/build-types/components/pattern-rename-modal/index.d.ts.map +1 -1
  237. package/build-types/components/plugin-document-setting-panel/index.d.ts +8 -61
  238. package/build-types/components/plugin-document-setting-panel/index.d.ts.map +1 -1
  239. package/build-types/components/plugin-more-menu-item/index.d.ts +5 -5
  240. package/build-types/components/plugin-more-menu-item/index.d.ts.map +1 -1
  241. package/build-types/components/plugin-post-publish-panel/index.d.ts +9 -40
  242. package/build-types/components/plugin-post-publish-panel/index.d.ts.map +1 -1
  243. package/build-types/components/plugin-post-status-info/index.d.ts +6 -47
  244. package/build-types/components/plugin-post-status-info/index.d.ts.map +1 -1
  245. package/build-types/components/plugin-pre-publish-panel/index.d.ts +9 -43
  246. package/build-types/components/plugin-pre-publish-panel/index.d.ts.map +1 -1
  247. package/build-types/components/plugin-preview-menu-item/index.d.ts +5 -5
  248. package/build-types/components/plugin-preview-menu-item/index.d.ts.map +1 -1
  249. package/build-types/components/plugin-sidebar/index.d.ts +4 -4
  250. package/build-types/components/plugin-sidebar/index.d.ts.map +1 -1
  251. package/build-types/components/plugin-sidebar-more-menu-item/index.d.ts +3 -3
  252. package/build-types/components/plugin-sidebar-more-menu-item/index.d.ts.map +1 -1
  253. package/build-types/components/post-actions/actions.d.ts +3 -3
  254. package/build-types/components/post-actions/actions.d.ts.map +1 -1
  255. package/build-types/components/post-actions/index.d.ts +4 -4
  256. package/build-types/components/post-actions/index.d.ts.map +1 -1
  257. package/build-types/components/post-actions/set-as-homepage.d.ts +2 -2
  258. package/build-types/components/post-actions/set-as-homepage.d.ts.map +1 -1
  259. package/build-types/components/post-actions/set-as-posts-page.d.ts +2 -2
  260. package/build-types/components/post-actions/set-as-posts-page.d.ts.map +1 -1
  261. package/build-types/components/post-author/check.d.ts +2 -2
  262. package/build-types/components/post-author/check.d.ts.map +1 -1
  263. package/build-types/components/post-author/combobox.d.ts.map +1 -1
  264. package/build-types/components/post-author/constants.d.ts +10 -8
  265. package/build-types/components/post-author/constants.d.ts.map +1 -1
  266. package/build-types/components/post-author/hook.d.ts +1 -1
  267. package/build-types/components/post-author/hook.d.ts.map +1 -1
  268. package/build-types/components/post-author/index.d.ts +2 -2
  269. package/build-types/components/post-author/index.d.ts.map +1 -1
  270. package/build-types/components/post-author/panel.d.ts +1 -1
  271. package/build-types/components/post-author/panel.d.ts.map +1 -1
  272. package/build-types/components/post-author/select.d.ts.map +1 -1
  273. package/build-types/components/post-card-panel/index.d.ts +7 -7
  274. package/build-types/components/post-card-panel/index.d.ts.map +1 -1
  275. package/build-types/components/post-comments/index.d.ts +6 -1
  276. package/build-types/components/post-comments/index.d.ts.map +1 -1
  277. package/build-types/components/post-content-information/index.d.ts +1 -1
  278. package/build-types/components/post-content-information/index.d.ts.map +1 -1
  279. package/build-types/components/post-discussion/panel.d.ts +1 -1
  280. package/build-types/components/post-discussion/panel.d.ts.map +1 -1
  281. package/build-types/components/post-excerpt/check.d.ts +3 -3
  282. package/build-types/components/post-excerpt/check.d.ts.map +1 -1
  283. package/build-types/components/post-excerpt/index.d.ts +3 -3
  284. package/build-types/components/post-excerpt/index.d.ts.map +1 -1
  285. package/build-types/components/post-excerpt/panel.d.ts +2 -2
  286. package/build-types/components/post-excerpt/panel.d.ts.map +1 -1
  287. package/build-types/components/post-excerpt/plugin.d.ts +6 -43
  288. package/build-types/components/post-excerpt/plugin.d.ts.map +1 -1
  289. package/build-types/components/post-featured-image/check.d.ts +3 -3
  290. package/build-types/components/post-featured-image/check.d.ts.map +1 -1
  291. package/build-types/components/post-featured-image/index.d.ts +15 -0
  292. package/build-types/components/post-featured-image/index.d.ts.map +1 -1
  293. package/build-types/components/post-featured-image/panel.d.ts +1 -1
  294. package/build-types/components/post-featured-image/panel.d.ts.map +1 -1
  295. package/build-types/components/post-fields/index.d.ts +1 -1
  296. package/build-types/components/post-fields/index.d.ts.map +1 -1
  297. package/build-types/components/post-format/check.d.ts +2 -2
  298. package/build-types/components/post-format/check.d.ts.map +1 -1
  299. package/build-types/components/post-format/index.d.ts +12 -12
  300. package/build-types/components/post-format/index.d.ts.map +1 -1
  301. package/build-types/components/post-format/panel.d.ts +2 -2
  302. package/build-types/components/post-format/panel.d.ts.map +1 -1
  303. package/build-types/components/post-last-edited-panel/index.d.ts.map +1 -1
  304. package/build-types/components/post-last-revision/check.d.ts +3 -3
  305. package/build-types/components/post-last-revision/check.d.ts.map +1 -1
  306. package/build-types/components/post-last-revision/index.d.ts +3 -3
  307. package/build-types/components/post-last-revision/index.d.ts.map +1 -1
  308. package/build-types/components/post-last-revision/panel.d.ts +2 -2
  309. package/build-types/components/post-last-revision/panel.d.ts.map +1 -1
  310. package/build-types/components/post-locked-modal/index.d.ts +11 -5
  311. package/build-types/components/post-locked-modal/index.d.ts.map +1 -1
  312. package/build-types/components/post-panel-row/index.d.ts +1 -1
  313. package/build-types/components/post-panel-row/index.d.ts.map +1 -1
  314. package/build-types/components/post-panel-section/index.d.ts +2 -2
  315. package/build-types/components/post-panel-section/index.d.ts.map +1 -1
  316. package/build-types/components/post-pending-status/check.d.ts +3 -3
  317. package/build-types/components/post-pending-status/check.d.ts.map +1 -1
  318. package/build-types/components/post-pending-status/index.d.ts +1 -1
  319. package/build-types/components/post-pending-status/index.d.ts.map +1 -1
  320. package/build-types/components/post-pingbacks/index.d.ts +7 -1
  321. package/build-types/components/post-pingbacks/index.d.ts.map +1 -1
  322. package/build-types/components/post-preview-button/index.d.ts +2 -2
  323. package/build-types/components/post-preview-button/index.d.ts.map +1 -1
  324. package/build-types/components/post-publish-button/index.d.ts +5 -5
  325. package/build-types/components/post-publish-button/index.d.ts.map +1 -1
  326. package/build-types/components/post-publish-button/label.d.ts.map +1 -1
  327. package/build-types/components/post-publish-button/post-publish-button-or-toggle.d.ts +1 -1
  328. package/build-types/components/post-publish-button/post-publish-button-or-toggle.d.ts.map +1 -1
  329. package/build-types/components/post-publish-panel/index.d.ts +17 -13
  330. package/build-types/components/post-publish-panel/index.d.ts.map +1 -1
  331. package/build-types/components/post-publish-panel/maybe-category-panel.d.ts +1 -1
  332. package/build-types/components/post-publish-panel/maybe-category-panel.d.ts.map +1 -1
  333. package/build-types/components/post-publish-panel/maybe-post-format-panel.d.ts.map +1 -1
  334. package/build-types/components/post-publish-panel/maybe-tags-panel.d.ts +1 -1
  335. package/build-types/components/post-publish-panel/maybe-tags-panel.d.ts.map +1 -1
  336. package/build-types/components/post-publish-panel/maybe-upload-media.d.ts.map +1 -1
  337. package/build-types/components/post-publish-panel/media-util.d.ts +2 -2
  338. package/build-types/components/post-publish-panel/media-util.d.ts.map +1 -1
  339. package/build-types/components/post-publish-panel/postpublish.d.ts +2 -2
  340. package/build-types/components/post-publish-panel/postpublish.d.ts.map +1 -1
  341. package/build-types/components/post-publish-panel/prepublish.d.ts +1 -1
  342. package/build-types/components/post-publish-panel/prepublish.d.ts.map +1 -1
  343. package/build-types/components/post-revisions-panel/index.d.ts.map +1 -1
  344. package/build-types/components/post-revisions-preview/block-diff.d.ts +1 -1
  345. package/build-types/components/post-revisions-preview/block-diff.d.ts.map +1 -1
  346. package/build-types/components/post-revisions-preview/diff-format-types.d.ts +2 -2
  347. package/build-types/components/post-revisions-preview/diff-format-types.d.ts.map +1 -1
  348. package/build-types/components/post-revisions-preview/diff-markers.d.ts +1 -1
  349. package/build-types/components/post-revisions-preview/diff-markers.d.ts.map +1 -1
  350. package/build-types/components/post-revisions-preview/index.d.ts +2 -2
  351. package/build-types/components/post-revisions-preview/index.d.ts.map +1 -1
  352. package/build-types/components/post-revisions-preview/preserve-client-ids.d.ts +1 -1
  353. package/build-types/components/post-revisions-preview/preserve-client-ids.d.ts.map +1 -1
  354. package/build-types/components/post-revisions-preview/revisions-canvas.d.ts +1 -1
  355. package/build-types/components/post-revisions-preview/revisions-canvas.d.ts.map +1 -1
  356. package/build-types/components/post-revisions-preview/revisions-header.d.ts +2 -2
  357. package/build-types/components/post-revisions-preview/revisions-header.d.ts.map +1 -1
  358. package/build-types/components/post-revisions-preview/revisions-slider.d.ts +3 -3
  359. package/build-types/components/post-revisions-preview/revisions-slider.d.ts.map +1 -1
  360. package/build-types/components/post-saved-state/index.d.ts +1 -1
  361. package/build-types/components/post-saved-state/index.d.ts.map +1 -1
  362. package/build-types/components/post-schedule/check.d.ts +2 -2
  363. package/build-types/components/post-schedule/check.d.ts.map +1 -1
  364. package/build-types/components/post-schedule/index.d.ts +3 -3
  365. package/build-types/components/post-schedule/index.d.ts.map +1 -1
  366. package/build-types/components/post-schedule/label.d.ts +4 -4
  367. package/build-types/components/post-schedule/label.d.ts.map +1 -1
  368. package/build-types/components/post-schedule/panel.d.ts +1 -1
  369. package/build-types/components/post-schedule/panel.d.ts.map +1 -1
  370. package/build-types/components/post-status/index.d.ts +2 -2
  371. package/build-types/components/post-status/index.d.ts.map +1 -1
  372. package/build-types/components/post-sticky/check.d.ts +2 -2
  373. package/build-types/components/post-sticky/check.d.ts.map +1 -1
  374. package/build-types/components/post-sticky/index.d.ts +1 -1
  375. package/build-types/components/post-sticky/index.d.ts.map +1 -1
  376. package/build-types/components/post-sticky/panel.d.ts +1 -1
  377. package/build-types/components/post-sticky/panel.d.ts.map +1 -1
  378. package/build-types/components/post-switch-to-draft-button/index.d.ts +1 -1
  379. package/build-types/components/post-switch-to-draft-button/index.d.ts.map +1 -1
  380. package/build-types/components/post-sync-status/index.d.ts +1 -1
  381. package/build-types/components/post-sync-status/index.d.ts.map +1 -1
  382. package/build-types/components/post-taxonomies/check.d.ts +2 -2
  383. package/build-types/components/post-taxonomies/check.d.ts.map +1 -1
  384. package/build-types/components/post-taxonomies/flat-term-selector.d.ts +4 -4
  385. package/build-types/components/post-taxonomies/flat-term-selector.d.ts.map +1 -1
  386. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts +6 -6
  387. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts.map +1 -1
  388. package/build-types/components/post-taxonomies/index.d.ts +9 -1
  389. package/build-types/components/post-taxonomies/index.d.ts.map +1 -1
  390. package/build-types/components/post-taxonomies/most-used-terms.d.ts.map +1 -1
  391. package/build-types/components/post-taxonomies/panel.d.ts +1 -1
  392. package/build-types/components/post-taxonomies/panel.d.ts.map +1 -1
  393. package/build-types/components/post-template/block-theme.d.ts.map +1 -1
  394. package/build-types/components/post-template/classic-theme.d.ts +8 -1
  395. package/build-types/components/post-template/classic-theme.d.ts.map +1 -1
  396. package/build-types/components/post-template/create-new-template-modal.d.ts.map +1 -1
  397. package/build-types/components/post-template/create-new-template.d.ts.map +1 -1
  398. package/build-types/components/post-template/hooks.d.ts +5 -5
  399. package/build-types/components/post-template/hooks.d.ts.map +1 -1
  400. package/build-types/components/post-template/panel.d.ts +1 -1
  401. package/build-types/components/post-template/panel.d.ts.map +1 -1
  402. package/build-types/components/post-template/reset-default-template.d.ts.map +1 -1
  403. package/build-types/components/post-template/swap-template-button.d.ts +1 -1
  404. package/build-types/components/post-template/swap-template-button.d.ts.map +1 -1
  405. package/build-types/components/post-text-editor/index.d.ts +1 -1
  406. package/build-types/components/post-text-editor/index.d.ts.map +1 -1
  407. package/build-types/components/post-title/constants.d.ts +2 -2
  408. package/build-types/components/post-title/constants.d.ts.map +1 -1
  409. package/build-types/components/post-title/index.d.ts +9 -1
  410. package/build-types/components/post-title/index.d.ts.map +1 -1
  411. package/build-types/components/post-title/post-title-raw.d.ts +1 -1
  412. package/build-types/components/post-title/use-post-title-focus.d.ts.map +1 -1
  413. package/build-types/components/post-title/use-post-title.d.ts.map +1 -1
  414. package/build-types/components/post-transform-panel/hooks.d.ts +1 -1
  415. package/build-types/components/post-transform-panel/hooks.d.ts.map +1 -1
  416. package/build-types/components/post-transform-panel/index.d.ts.map +1 -1
  417. package/build-types/components/post-trash/check.d.ts +2 -2
  418. package/build-types/components/post-trash/check.d.ts.map +1 -1
  419. package/build-types/components/post-trash/index.d.ts +1 -1
  420. package/build-types/components/post-trash/index.d.ts.map +1 -1
  421. package/build-types/components/post-type-support-check/index.d.ts +3 -3
  422. package/build-types/components/post-type-support-check/index.d.ts.map +1 -1
  423. package/build-types/components/post-url/check.d.ts +2 -2
  424. package/build-types/components/post-url/check.d.ts.map +1 -1
  425. package/build-types/components/post-url/index.d.ts +1 -1
  426. package/build-types/components/post-url/index.d.ts.map +1 -1
  427. package/build-types/components/post-url/label.d.ts +2 -2
  428. package/build-types/components/post-url/label.d.ts.map +1 -1
  429. package/build-types/components/post-url/panel.d.ts +1 -1
  430. package/build-types/components/post-url/panel.d.ts.map +1 -1
  431. package/build-types/components/post-view-link/index.d.ts.map +1 -1
  432. package/build-types/components/post-visibility/check.d.ts +1 -1
  433. package/build-types/components/post-visibility/check.d.ts.map +1 -1
  434. package/build-types/components/post-visibility/index.d.ts +1 -1
  435. package/build-types/components/post-visibility/index.d.ts.map +1 -1
  436. package/build-types/components/post-visibility/label.d.ts +1 -1
  437. package/build-types/components/post-visibility/label.d.ts.map +1 -1
  438. package/build-types/components/post-visibility/utils.d.ts +1 -1
  439. package/build-types/components/post-visibility/utils.d.ts.map +1 -1
  440. package/build-types/components/posts-per-page/index.d.ts.map +1 -1
  441. package/build-types/components/preferences-modal/enable-panel.d.ts.map +1 -1
  442. package/build-types/components/preferences-modal/enable-plugin-document-setting-panel.d.ts +4 -5
  443. package/build-types/components/preferences-modal/enable-plugin-document-setting-panel.d.ts.map +1 -1
  444. package/build-types/components/preferences-modal/enable-publish-sidebar.d.ts.map +1 -1
  445. package/build-types/components/preferences-modal/index.d.ts +3 -0
  446. package/build-types/components/preferences-modal/index.d.ts.map +1 -1
  447. package/build-types/components/preview-dropdown/index.d.ts +1 -1
  448. package/build-types/components/preview-dropdown/index.d.ts.map +1 -1
  449. package/build-types/components/provider/disable-non-page-content-blocks.d.ts.map +1 -1
  450. package/build-types/components/provider/index.d.ts +33 -33
  451. package/build-types/components/provider/index.d.ts.map +1 -1
  452. package/build-types/components/provider/navigation-block-editing-mode.d.ts.map +1 -1
  453. package/build-types/components/provider/use-auto-switch-editor-sidebars.d.ts +1 -1
  454. package/build-types/components/provider/use-auto-switch-editor-sidebars.d.ts.map +1 -1
  455. package/build-types/components/provider/use-block-editor-settings.d.ts +1 -1
  456. package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
  457. package/build-types/components/provider/use-hide-blocks-from-inserter.d.ts +1 -1
  458. package/build-types/components/provider/use-hide-blocks-from-inserter.d.ts.map +1 -1
  459. package/build-types/components/provider/use-post-content-block-types.d.ts.map +1 -1
  460. package/build-types/components/provider/use-revision-blocks.d.ts +1 -1
  461. package/build-types/components/provider/use-revision-blocks.d.ts.map +1 -1
  462. package/build-types/components/provider/use-upload-save-lock.d.ts.map +1 -1
  463. package/build-types/components/provider/with-registry-provider.d.ts +1 -1
  464. package/build-types/components/provider/with-registry-provider.d.ts.map +1 -1
  465. package/build-types/components/resizable-editor/index.d.ts +2 -2
  466. package/build-types/components/resizable-editor/index.d.ts.map +1 -1
  467. package/build-types/components/resizable-editor/resize-handle.d.ts.map +1 -1
  468. package/build-types/components/revision-author-panel/index.d.ts.map +1 -1
  469. package/build-types/components/revision-block-diff/index.d.ts.map +1 -1
  470. package/build-types/components/revision-created-panel/index.d.ts.map +1 -1
  471. package/build-types/components/revision-diff-panel/index.d.ts.map +1 -1
  472. package/build-types/components/revision-fields-diff/index.d.ts.map +1 -1
  473. package/build-types/components/save-publish-panels/index.d.ts +7 -7
  474. package/build-types/components/save-publish-panels/index.d.ts.map +1 -1
  475. package/build-types/components/sidebar/constants.d.ts +4 -4
  476. package/build-types/components/sidebar/constants.d.ts.map +1 -1
  477. package/build-types/components/sidebar/dataform-post-summary.d.ts.map +1 -1
  478. package/build-types/components/sidebar/header.d.ts +1 -1
  479. package/build-types/components/sidebar/index.d.ts +3 -3
  480. package/build-types/components/sidebar/index.d.ts.map +1 -1
  481. package/build-types/components/sidebar/post-revision-summary.d.ts.map +1 -1
  482. package/build-types/components/sidebar/post-summary.d.ts.map +1 -1
  483. package/build-types/components/site-discussion/index.d.ts.map +1 -1
  484. package/build-types/components/start-page-options/index.d.ts +1 -1
  485. package/build-types/components/start-page-options/index.d.ts.map +1 -1
  486. package/build-types/components/start-template-options/index.d.ts.map +1 -1
  487. package/build-types/components/style-book/categories.d.ts +3 -0
  488. package/build-types/components/style-book/categories.d.ts.map +1 -1
  489. package/build-types/components/style-book/color-examples.d.ts.map +1 -1
  490. package/build-types/components/style-book/duotone-examples.d.ts.map +1 -1
  491. package/build-types/components/style-book/index.d.ts +19 -8
  492. package/build-types/components/style-book/index.d.ts.map +1 -1
  493. package/build-types/components/styles-canvas/index.d.ts +2 -2
  494. package/build-types/components/styles-canvas/index.d.ts.map +1 -1
  495. package/build-types/components/styles-canvas/revisions.d.ts +1 -1
  496. package/build-types/components/styles-canvas/style-book.d.ts +1 -1
  497. package/build-types/components/table-of-contents/index.d.ts +11 -1
  498. package/build-types/components/table-of-contents/index.d.ts.map +1 -1
  499. package/build-types/components/table-of-contents/panel.d.ts +1 -1
  500. package/build-types/components/table-of-contents/panel.d.ts.map +1 -1
  501. package/build-types/components/template-actions-panel/block-theme-content.d.ts.map +1 -1
  502. package/build-types/components/template-actions-panel/classic-theme-content.d.ts.map +1 -1
  503. package/build-types/components/template-actions-panel/index.d.ts.map +1 -1
  504. package/build-types/components/template-content-panel/index.d.ts.map +1 -1
  505. package/build-types/components/template-part-content-panel/index.d.ts.map +1 -1
  506. package/build-types/components/template-part-menu-items/convert-to-regular.d.ts.map +1 -1
  507. package/build-types/components/template-part-menu-items/convert-to-template-part.d.ts +1 -1
  508. package/build-types/components/template-part-menu-items/convert-to-template-part.d.ts.map +1 -1
  509. package/build-types/components/template-part-menu-items/index.d.ts.map +1 -1
  510. package/build-types/components/template-validation-notice/index.d.ts.map +1 -1
  511. package/build-types/components/text-editor/index.d.ts.map +1 -1
  512. package/build-types/components/theme-support-check/index.d.ts +2 -2
  513. package/build-types/components/theme-support-check/index.d.ts.map +1 -1
  514. package/build-types/components/time-to-read/index.d.ts +1 -1
  515. package/build-types/components/time-to-read/index.d.ts.map +1 -1
  516. package/build-types/components/unsaved-changes-warning/index.d.ts +1 -1
  517. package/build-types/components/unsaved-changes-warning/index.d.ts.map +1 -1
  518. package/build-types/components/visual-editor/edit-template-blocks-notification.d.ts +1 -1
  519. package/build-types/components/visual-editor/edit-template-blocks-notification.d.ts.map +1 -1
  520. package/build-types/components/visual-editor/index.d.ts +4 -4
  521. package/build-types/components/visual-editor/index.d.ts.map +1 -1
  522. package/build-types/components/visual-editor/use-edit-content-only-section-exit.d.ts +1 -1
  523. package/build-types/components/visual-editor/use-edit-content-only-section-exit.d.ts.map +1 -1
  524. package/build-types/components/visual-editor/use-padding-appender.d.ts +1 -1
  525. package/build-types/components/visual-editor/use-padding-appender.d.ts.map +1 -1
  526. package/build-types/components/visual-editor/use-select-nearest-editable-block.d.ts +1 -1
  527. package/build-types/components/visual-editor/use-select-nearest-editable-block.d.ts.map +1 -1
  528. package/build-types/components/visual-editor/use-zoom-out-mode-exit.d.ts +1 -1
  529. package/build-types/components/visual-editor/use-zoom-out-mode-exit.d.ts.map +1 -1
  530. package/build-types/components/word-count/index.d.ts +1 -1
  531. package/build-types/components/word-count/index.d.ts.map +1 -1
  532. package/build-types/components/zoom-out-toggle/index.d.ts +3 -3
  533. package/build-types/components/zoom-out-toggle/index.d.ts.map +1 -1
  534. package/build-types/dataviews/api.d.ts +6 -6
  535. package/build-types/dataviews/api.d.ts.map +1 -1
  536. package/build-types/dataviews/fields/content-preview/index.d.ts.map +1 -1
  537. package/build-types/dataviews/store/private-actions.d.ts +5 -5
  538. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  539. package/build-types/dataviews/store/reducer.d.ts +2 -2
  540. package/build-types/dataviews/store/reducer.d.ts.map +1 -1
  541. package/build-types/hooks/custom-sources-backwards-compatibility.d.ts +3 -9
  542. package/build-types/hooks/custom-sources-backwards-compatibility.d.ts.map +1 -1
  543. package/build-types/hooks/index.d.ts +10 -1
  544. package/build-types/hooks/index.d.ts.map +1 -1
  545. package/build-types/hooks/pattern-overrides.d.ts +1 -1
  546. package/build-types/hooks/pattern-overrides.d.ts.map +1 -1
  547. package/build-types/hooks/use-global-styles-output.d.ts +2 -2
  548. package/build-types/hooks/use-global-styles-output.d.ts.map +1 -1
  549. package/build-types/index.d.ts +10 -5
  550. package/build-types/index.d.ts.map +1 -1
  551. package/build-types/lock-unlock.d.ts +1 -2
  552. package/build-types/lock-unlock.d.ts.map +1 -1
  553. package/build-types/private-apis.d.ts +1 -1
  554. package/build-types/private-apis.d.ts.map +1 -1
  555. package/build-types/store/actions.d.ts +330 -116
  556. package/build-types/store/actions.d.ts.map +1 -1
  557. package/build-types/store/constants.d.ts.map +1 -1
  558. package/build-types/store/defaults.d.ts +1 -1
  559. package/build-types/store/defaults.d.ts.map +1 -1
  560. package/build-types/store/index.d.ts +77 -9
  561. package/build-types/store/index.d.ts.map +1 -1
  562. package/build-types/store/local-autosave.d.ts +3 -3
  563. package/build-types/store/local-autosave.d.ts.map +1 -1
  564. package/build-types/store/private-actions.d.ts +106 -46
  565. package/build-types/store/private-actions.d.ts.map +1 -1
  566. package/build-types/store/private-selectors.d.ts +96 -68
  567. package/build-types/store/private-selectors.d.ts.map +1 -1
  568. package/build-types/store/reducer.d.ts +47 -52
  569. package/build-types/store/reducer.d.ts.map +1 -1
  570. package/build-types/store/selectors.d.ts +422 -429
  571. package/build-types/store/selectors.d.ts.map +1 -1
  572. package/build-types/store/utils/is-template-revertable.d.ts.map +1 -1
  573. package/build-types/store/utils/notice-builder.d.ts +3 -3
  574. package/build-types/store/utils/notice-builder.d.ts.map +1 -1
  575. package/build-types/utils/get-item-title.d.ts +1 -1
  576. package/build-types/utils/get-item-title.d.ts.map +1 -1
  577. package/build-types/utils/get-template-info.d.ts +11 -4
  578. package/build-types/utils/get-template-info.d.ts.map +1 -1
  579. package/build-types/utils/get-template-part-icon.d.ts +1 -1
  580. package/build-types/utils/get-template-part-icon.d.ts.map +1 -1
  581. package/build-types/utils/index.d.ts +6 -3
  582. package/build-types/utils/index.d.ts.map +1 -1
  583. package/build-types/utils/media-finalize/index.d.ts.map +1 -1
  584. package/build-types/utils/media-sideload/index.d.ts +1 -1
  585. package/build-types/utils/media-sideload/index.d.ts.map +1 -1
  586. package/build-types/utils/media-upload/index.d.ts +1 -1
  587. package/build-types/utils/media-upload/index.d.ts.map +1 -1
  588. package/build-types/utils/media-upload/on-success.d.ts.map +1 -1
  589. package/build-types/utils/pageTypeBadge.d.ts.map +1 -1
  590. package/build-types/utils/search-templates.d.ts +1 -1
  591. package/build-types/utils/search-templates.d.ts.map +1 -1
  592. package/build-types/utils/set-nested-value.d.ts.map +1 -1
  593. package/build-types/utils/terms.d.ts +19 -4
  594. package/build-types/utils/terms.d.ts.map +1 -1
  595. package/build-types/utils/url.d.ts +1 -1
  596. package/build-types/utils/url.d.ts.map +1 -1
  597. package/package.json +48 -48
  598. package/src/components/block-visibility/style.scss +2 -2
  599. package/src/components/collab-sidebar/index.js +48 -36
  600. package/src/components/collab-sidebar/note-thread.js +28 -10
  601. package/src/components/collab-sidebar/notes.js +9 -6
  602. package/src/components/collab-sidebar/style.scss +4 -0
  603. package/src/components/collab-sidebar/utils.js +41 -14
  604. package/src/components/collaborators-presence/index.tsx +0 -2
  605. package/src/components/collaborators-presence/list.tsx +0 -2
  606. package/src/components/post-last-revision/index.js +5 -0
  607. package/src/components/post-publish-panel/index.js +149 -156
  608. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +11 -26
  609. package/src/components/post-publish-panel/test/index.js +41 -23
  610. package/src/components/post-revisions-preview/block-diff.js +165 -41
  611. package/src/components/post-revisions-preview/diff-markers.js +12 -9
  612. package/src/components/post-revisions-preview/revisions-slider.js +130 -71
  613. package/src/components/post-revisions-preview/style.scss +3 -3
  614. package/src/components/post-revisions-preview/test/block-diff.js +133 -4
  615. package/src/components/post-template/style.scss +1 -1
  616. package/src/components/start-page-options/style.scss +2 -2
  617. package/src/components/start-template-options/style.scss +2 -2
  618. package/src/store/private-actions.js +34 -0
  619. package/src/store/private-selectors.js +127 -51
  620. package/src/store/reducer.js +21 -0
  621. package/src/store/selectors.js +6 -0
  622. package/src/store/test/private-selectors.js +107 -1
  623. package/src/style.scss +2 -0
@@ -45,8 +45,19 @@ function stringifyValue( value ) {
45
45
  }
46
46
 
47
47
  /**
48
- * Calculate text similarity using word diff (semantically meaningful).
49
- * Returns ratio of unchanged words to total words.
48
+ * Calculate text similarity using word-set overlap.
49
+ *
50
+ * Uses a variant of the Jaccard index (https://en.wikipedia.org/wiki/Jaccard_index)
51
+ * called the overlap coefficient (https://en.wikipedia.org/wiki/Overlap_coefficient)
52
+ * where we divide by the larger set size rather than the union. This ensures that
53
+ * a small edit to a long paragraph scores high — the few changed words don't
54
+ * dilute the score.
55
+ *
56
+ * This replaces the previous diffWords-based similarity which was O(n*m) per pair.
57
+ * The word-set approach is O(n) where n is the number of words.
58
+ *
59
+ * Words are extracted using Intl.Segmenter for proper multilingual support
60
+ * (CJK, Thai, etc.) rather than splitting on whitespace.
50
61
  *
51
62
  * @param {string} text1 First text to compare.
52
63
  * @param {string} text2 Second text to compare.
@@ -60,17 +71,53 @@ function textSimilarity( text1, text2 ) {
60
71
  return 0;
61
72
  }
62
73
 
63
- const changes = diffWords( text1, text2 );
64
- const unchanged = changes
65
- .filter( ( c ) => ! c.added && ! c.removed )
66
- .reduce( ( sum, c ) => sum + c.value.length, 0 );
67
- const total = Math.max( text1.length, text2.length );
68
- return total > 0 ? unchanged / total : 0;
74
+ const segmenter = new Intl.Segmenter( undefined, {
75
+ granularity: 'word',
76
+ } );
77
+ // Safari's Intl.Segmenter returns isWordLike: false for numeric segments,
78
+ // so fall back to a Unicode-aware regex for letters and numbers.
79
+ const wordLikeRegex = /[\p{L}\p{N}]/u;
80
+ const getWords = ( text ) => {
81
+ const words = [];
82
+ for ( const { segment, isWordLike } of segmenter.segment( text ) ) {
83
+ if ( isWordLike || wordLikeRegex.test( segment ) ) {
84
+ words.push( segment );
85
+ }
86
+ }
87
+ return words;
88
+ };
89
+ const words1 = getWords( text1 );
90
+ const words2 = getWords( text2 );
91
+
92
+ if ( words1.length === 0 && words2.length === 0 ) {
93
+ return 1;
94
+ }
95
+
96
+ const set1 = new Set( words1 );
97
+ let intersection = 0;
98
+ for ( const word of words2 ) {
99
+ if ( set1.has( word ) ) {
100
+ intersection++;
101
+ }
102
+ }
103
+
104
+ const total = Math.max( words1.length, words2.length );
105
+ return total > 0 ? intersection / total : 0;
69
106
  }
70
107
 
71
108
  /**
72
109
  * Post-process diff result to pair similar removed/added blocks as modifications.
73
- * This catches modifications that LCS missed due to content changes.
110
+ *
111
+ * After LCS diffing, a block whose content changed appears as a separate "removed"
112
+ * and "added" entry (since the full block signature differs). This function detects
113
+ * such pairs and merges them into a single "modified" block with inline diff.
114
+ *
115
+ * Two pairing strategies are used:
116
+ * 1. When exactly one block of a given type was removed and one was added,
117
+ * they are paired directly — no ambiguity, no similarity check needed.
118
+ * 2. When multiple candidates exist, textSimilarity (overlap coefficient) is
119
+ * used to find the best match. Blocks must share at least 50% of their
120
+ * words to be paired, preventing unrelated paragraphs from being merged.
74
121
  *
75
122
  * @param {Array} blocks Raw blocks with diff status.
76
123
  * @return {Array} Blocks with similar pairs converted to modifications.
@@ -94,62 +141,139 @@ function pairSimilarBlocks( blocks ) {
94
141
  return blocks;
95
142
  }
96
143
 
97
- const pairedRemoved = new Set(); // Indices of removed blocks that were paired.
98
- const modifications = new Map(); // Map from added block index to modified block.
99
- const SIMILARITY_THRESHOLD = 0.3;
144
+ const pairedRemoved = new Set(); // Indices of removed blocks filtered out.
145
+ const pairedAdded = new Set(); // Indices of added blocks filtered out.
146
+ const modifications = new Map(); // Index → modified block.
147
+ const SIMILARITY_THRESHOLD = 0.5;
148
+
149
+ // Group candidates by block name for efficient lookup.
150
+ const addedByName = new Map();
151
+ for ( const add of added ) {
152
+ const name = add.block.blockName;
153
+ if ( ! addedByName.has( name ) ) {
154
+ addedByName.set( name, [] );
155
+ }
156
+ addedByName.get( name ).push( add );
157
+ }
158
+ const removedByName = new Map();
159
+ for ( const rem of removed ) {
160
+ const name = rem.block.blockName;
161
+ if ( ! removedByName.has( name ) ) {
162
+ removedByName.set( name, [] );
163
+ }
164
+ removedByName.get( name ).push( rem );
165
+ }
100
166
 
101
167
  // For each removed block, find best matching added block.
168
+ // Track the highest added index paired so far — new pairings must
169
+ // not go backwards, or the removed/added text order would break.
170
+ let maxPairedAddedIndex = -1;
171
+
102
172
  for ( const rem of removed ) {
103
- let bestMatch = null;
104
- let bestScore = 0;
173
+ const candidates = addedByName.get( rem.block.blockName ) || [];
174
+ const sameNameRemoved = removedByName.get( rem.block.blockName ) || [];
175
+ const unpaired = candidates.filter(
176
+ ( add ) =>
177
+ ! modifications.has( add.index ) &&
178
+ add.index > maxPairedAddedIndex
179
+ );
105
180
 
106
- for ( const add of added ) {
107
- if ( modifications.has( add.index ) ) {
108
- continue;
109
- }
110
- if ( add.block.blockName !== rem.block.blockName ) {
111
- continue;
112
- }
181
+ if ( unpaired.length === 0 ) {
182
+ continue;
183
+ }
113
184
 
114
- const score = textSimilarity(
115
- rem.block.innerHTML || '',
116
- add.block.innerHTML || ''
117
- );
118
- // If content is identical (score=1), only pair if attrs differ.
119
- // Otherwise identical blocks are just position swaps, not modifications.
185
+ let bestMatch = null;
186
+
187
+ // If there's exactly one removed and one added of this type,
188
+ // pair them directly — no ambiguity, no similarity check needed.
189
+ if ( sameNameRemoved.length === 1 && unpaired.length === 1 ) {
190
+ const add = unpaired[ 0 ];
120
191
  const attrsMatch =
121
192
  JSON.stringify( rem.block.attrs ) ===
122
193
  JSON.stringify( add.block.attrs );
123
- if (
124
- score > bestScore &&
125
- score > SIMILARITY_THRESHOLD &&
126
- ( score < 1 || ! attrsMatch )
127
- ) {
128
- bestScore = score;
194
+ // Only skip pairing if both content and attrs are identical
195
+ // (position swap, not a modification).
196
+ const contentMatch =
197
+ ( rem.block.innerHTML || '' ) === ( add.block.innerHTML || '' );
198
+ if ( ! contentMatch || ! attrsMatch ) {
129
199
  bestMatch = add;
130
200
  }
201
+ } else {
202
+ // Multiple candidates — use similarity to find best match.
203
+ let bestScore = 0;
204
+ for ( const add of unpaired ) {
205
+ const score = textSimilarity(
206
+ rem.block.innerHTML || '',
207
+ add.block.innerHTML || ''
208
+ );
209
+ // Skip identical blocks (score=1 with same attrs) — those
210
+ // are position swaps, not modifications. They should show
211
+ // as separate removed + added, not as a no-op "modified".
212
+ const attrsMatch =
213
+ JSON.stringify( rem.block.attrs ) ===
214
+ JSON.stringify( add.block.attrs );
215
+ if (
216
+ score > bestScore &&
217
+ score > SIMILARITY_THRESHOLD &&
218
+ ( score < 1 || ! attrsMatch )
219
+ ) {
220
+ bestScore = score;
221
+ bestMatch = add;
222
+ }
223
+ }
131
224
  }
132
225
 
133
226
  if ( bestMatch ) {
134
- pairedRemoved.add( rem.index );
227
+ maxPairedAddedIndex = bestMatch.index;
135
228
 
136
- // Create modified block with previous content stored.
137
- modifications.set( bestMatch.index, {
229
+ const modifiedBlock = {
138
230
  ...bestMatch.block,
139
231
  __revisionDiffStatus: { status: 'modified' },
140
232
  __previousRawBlock: rem.block,
141
- } );
233
+ };
234
+
235
+ // Decide where to place the modified block by checking
236
+ // what's between the removed and added positions.
237
+ // If there are unpaired added blocks between them,
238
+ // placing at the removed position would put the modified
239
+ // block before content that comes before it in the
240
+ // current revision — so use the added position.
241
+ // Otherwise, use the removed position to keep the
242
+ // previous revision's order intact.
243
+ const lo = Math.min( rem.index, bestMatch.index );
244
+ const hi = Math.max( rem.index, bestMatch.index );
245
+ let hasAddedBetween = false;
246
+ for ( let i = lo + 1; i < hi; i++ ) {
247
+ if (
248
+ blocks[ i ].__revisionDiffStatus?.status === 'added' &&
249
+ ! pairedAdded.has( i )
250
+ ) {
251
+ hasAddedBetween = true;
252
+ break;
253
+ }
254
+ }
255
+
256
+ if ( hasAddedBetween ) {
257
+ // Use the added position — don't jump before
258
+ // current-revision content.
259
+ modifications.set( bestMatch.index, modifiedBlock );
260
+ pairedRemoved.add( rem.index );
261
+ } else {
262
+ // Use the removed position — keep the previous
263
+ // revision's reading order.
264
+ modifications.set( rem.index, modifiedBlock );
265
+ pairedAdded.add( bestMatch.index );
266
+ }
142
267
  }
143
268
  }
144
269
 
145
- // Rebuild result: filter out paired removed, replace paired added with modified.
270
+ // Rebuild result: replace modification targets, filter out
271
+ // their paired counterparts.
146
272
  return blocks
147
273
  .map( ( block, index ) => {
148
- // Skip paired removed blocks.
149
- if ( pairedRemoved.has( index ) ) {
274
+ if ( pairedRemoved.has( index ) || pairedAdded.has( index ) ) {
150
275
  return null;
151
276
  }
152
- // Replace paired added blocks with modified version.
153
277
  if ( modifications.has( index ) ) {
154
278
  return modifications.get( index );
155
279
  }
@@ -15,6 +15,7 @@ import {
15
15
  store as blockEditorStore,
16
16
  } from '@wordpress/block-editor';
17
17
  import { __ } from '@wordpress/i18n';
18
+ import { Tooltip } from '@wordpress/components';
18
19
 
19
20
  /**
20
21
  * Internal dependencies
@@ -97,15 +98,17 @@ function DiffMarkerButton( { clientId, status, subscribe } ) {
97
98
  }
98
99
 
99
100
  return (
100
- <button
101
- className={ `revision-diff-marker is-${ status }` }
102
- style={ {
103
- top: `${ position.top }%`,
104
- height: `${ Math.max( position.height, 0.5 ) }%`,
105
- } }
106
- onClick={ () => blockRef.current?.focus() }
107
- aria-label={ STATUS_LABELS[ status ] }
108
- />
101
+ <Tooltip text={ STATUS_LABELS[ status ] }>
102
+ <button
103
+ className={ `revision-diff-marker is-${ status }` }
104
+ style={ {
105
+ top: `${ position.top }%`,
106
+ height: `${ Math.max( position.height, 0.5 ) }%`,
107
+ } }
108
+ onClick={ () => blockRef.current?.focus() }
109
+ aria-label={ STATUS_LABELS[ status ] }
110
+ />
111
+ </Tooltip>
109
112
  );
110
113
  }
111
114
 
@@ -2,10 +2,13 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useSelect, useDispatch } from '@wordpress/data';
5
- import { RangeControl, Spinner } from '@wordpress/components';
5
+ import { RangeControl, Spinner, Button } from '@wordpress/components';
6
6
  import { store as coreStore } from '@wordpress/core-data';
7
- import { __ } from '@wordpress/i18n';
7
+ import { __, sprintf } from '@wordpress/i18n';
8
8
  import { dateI18n, getSettings as getDateSettings } from '@wordpress/date';
9
+ import { useMemo } from '@wordpress/element';
10
+ import { chevronLeft, chevronRight } from '@wordpress/icons';
11
+ import { Stack } from '@wordpress/ui';
9
12
 
10
13
  /**
11
14
  * Internal dependencies
@@ -14,64 +17,61 @@ import { store as editorStore } from '../../store';
14
17
  import { unlock } from '../../lock-unlock';
15
18
 
16
19
  /**
17
- * Slider component for navigating revisions.
20
+ * Slider component for navigating revisions with pagination.
18
21
  *
19
22
  * @return {React.JSX.Element} The revisions slider component.
20
23
  */
21
24
  function RevisionsSlider() {
22
- const { revisions, isLoading, currentRevisionId, revisionKey } = useSelect(
23
- ( select ) => {
24
- const { getCurrentPostId, getCurrentPostType } =
25
- select( editorStore );
26
- const { getRevisions, isResolving, getEntityConfig } =
27
- select( coreStore );
28
-
29
- const postId = getCurrentPostId();
30
- const postType = getCurrentPostType();
31
-
32
- if ( ! postId || ! postType ) {
33
- return {};
34
- }
35
-
36
- const entityConfig = getEntityConfig( 'postType', postType );
37
- const _revisionKey = entityConfig?.revisionKey || 'id';
38
- const query = {
39
- per_page: -1,
40
- context: 'edit',
41
- orderby: 'date',
42
- order: 'asc',
43
- _fields: [
44
- ...new Set( [
45
- 'id',
46
- 'date',
47
- 'modified',
48
- 'author',
49
- 'meta',
50
- 'title.raw',
51
- 'excerpt.raw',
52
- 'content.raw',
53
- _revisionKey,
54
- ] ),
55
- ].join(),
56
- };
57
- return {
58
- revisions: getRevisions( 'postType', postType, postId, query ),
59
- isLoading: isResolving( 'getRevisions', [
60
- 'postType',
61
- postType,
62
- postId,
63
- query,
64
- ] ),
65
- currentRevisionId: unlock(
66
- select( editorStore )
67
- ).getCurrentRevisionId(),
68
- revisionKey: _revisionKey,
69
- };
70
- },
71
- []
25
+ const {
26
+ revisions: rawRevisions,
27
+ perPage,
28
+ currentRevisionId,
29
+ revisionKey,
30
+ revisionPage,
31
+ totalRevisions,
32
+ } = useSelect( ( select ) => {
33
+ const {
34
+ getCurrentRevisionId,
35
+ getRevisionPage,
36
+ getPageRevisions,
37
+ getRevisionsPerPage,
38
+ } = unlock( select( editorStore ) );
39
+
40
+ const postType = select( editorStore ).getCurrentPostType();
41
+ if ( ! postType ) {
42
+ return {};
43
+ }
44
+
45
+ const entityConfig = select( coreStore ).getEntityConfig(
46
+ 'postType',
47
+ postType
48
+ );
49
+ const _revisionKey = entityConfig?.revisionKey || 'id';
50
+ const _revisionPage = getRevisionPage();
51
+
52
+ return {
53
+ revisions: getPageRevisions( _revisionPage ),
54
+ perPage: getRevisionsPerPage(),
55
+ currentRevisionId: getCurrentRevisionId(),
56
+ revisionKey: _revisionKey,
57
+ revisionPage: _revisionPage,
58
+ totalRevisions:
59
+ select( editorStore ).getCurrentPostRevisionsCount(),
60
+ };
61
+ }, [] );
62
+
63
+ const { setCurrentRevisionId, setRevisionPage } = unlock(
64
+ useDispatch( editorStore )
72
65
  );
73
66
 
74
- const { setCurrentRevisionId } = unlock( useDispatch( editorStore ) );
67
+ const isLoading = ! rawRevisions;
68
+ const totalPages = Math.ceil( totalRevisions / perPage ) || 1;
69
+
70
+ // Reverse desc→asc so the slider reads oldest (left) → newest (right).
71
+ const revisions = useMemo(
72
+ () => rawRevisions && [ ...rawRevisions ].reverse(),
73
+ [ rawRevisions ]
74
+ );
75
75
 
76
76
  const selectedIndex = revisions?.findIndex(
77
77
  ( r ) => r[ revisionKey ] === currentRevisionId
@@ -94,11 +94,13 @@ function RevisionsSlider() {
94
94
  return dateI18n( dateSettings.formats.datetime, revision.date );
95
95
  };
96
96
 
97
- if ( isLoading ) {
97
+ const showPagination = totalPages > 1;
98
+
99
+ if ( isLoading && ! showPagination ) {
98
100
  return <Spinner />;
99
101
  }
100
102
 
101
- if ( ! revisions?.length ) {
103
+ if ( ! isLoading && ! revisions?.length ) {
102
104
  return (
103
105
  <span className="editor-revisions-header__no-revisions">
104
106
  { __( 'No revisions found.' ) }
@@ -106,7 +108,7 @@ function RevisionsSlider() {
106
108
  );
107
109
  }
108
110
 
109
- if ( revisions?.length === 1 ) {
111
+ if ( totalRevisions <= 1 ) {
110
112
  return (
111
113
  <span className="editor-revisions-header__no-revisions">
112
114
  { __( 'Only one revision found.' ) }
@@ -114,21 +116,78 @@ function RevisionsSlider() {
114
116
  );
115
117
  }
116
118
 
119
+ const getPageRangeLabel = ( page ) => {
120
+ const end = totalRevisions - ( page - 1 ) * perPage;
121
+ const start = Math.max( 1, end - perPage + 1 );
122
+ return sprintf(
123
+ /* translators: 1: first revision number, 2: last revision number */
124
+ __( 'Revisions %1$s–%2$s' ),
125
+ start,
126
+ end
127
+ );
128
+ };
129
+
130
+ const sliderOrSpinner =
131
+ isLoading || selectedIndex === -1 ? (
132
+ <Spinner />
133
+ ) : (
134
+ <RangeControl
135
+ __next40pxDefaultSize
136
+ aria-valuetext={ renderTooltipContent( selectedIndex ) }
137
+ className="editor-revisions-header__slider"
138
+ hideLabelFromVision
139
+ label={ __( 'Revision' ) }
140
+ max={ revisions?.length - 1 }
141
+ min={ 0 }
142
+ marks
143
+ onChange={ handleSliderChange }
144
+ renderTooltipContent={ renderTooltipContent }
145
+ value={ selectedIndex }
146
+ withInputField={ false }
147
+ />
148
+ );
149
+
150
+ if ( ! showPagination ) {
151
+ return sliderOrSpinner;
152
+ }
153
+
117
154
  return (
118
- <RangeControl
119
- __next40pxDefaultSize
120
- aria-valuetext={ renderTooltipContent( selectedIndex ) }
121
- className="editor-revisions-header__slider"
122
- hideLabelFromVision
123
- label={ __( 'Revision' ) }
124
- max={ revisions?.length - 1 }
125
- min={ 0 }
126
- marks
127
- onChange={ handleSliderChange }
128
- renderTooltipContent={ renderTooltipContent }
129
- value={ selectedIndex }
130
- withInputField={ false }
131
- />
155
+ <Stack direction="row" gap="sm" align="center" style={ { flex: 1 } }>
156
+ <Button
157
+ icon={ chevronLeft }
158
+ label={
159
+ revisionPage < totalPages
160
+ ? getPageRangeLabel( revisionPage + 1 )
161
+ : __( 'No older revisions' )
162
+ }
163
+ onClick={ () => setRevisionPage( revisionPage + 1 ) }
164
+ disabled={ isLoading || revisionPage >= totalPages }
165
+ size="compact"
166
+ accessibleWhenDisabled
167
+ />
168
+ <div
169
+ style={ {
170
+ flex: 1,
171
+ minWidth: 0,
172
+ display: 'flex',
173
+ justifyContent: 'center',
174
+ } }
175
+ >
176
+ { sliderOrSpinner }
177
+ </div>
178
+ <Button
179
+ icon={ chevronRight }
180
+ label={
181
+ revisionPage > 1
182
+ ? getPageRangeLabel( revisionPage - 1 )
183
+ : __( 'No newer revisions' )
184
+ }
185
+ onClick={ () => setRevisionPage( revisionPage - 1 ) }
186
+ disabled={ isLoading || revisionPage <= 1 }
187
+ size="compact"
188
+ accessibleWhenDisabled
189
+ />
190
+ </Stack>
132
191
  );
133
192
  }
134
193
 
@@ -35,7 +35,7 @@
35
35
  .revision-diff-markers {
36
36
  position: relative;
37
37
  flex-shrink: 0;
38
- width: 12px;
38
+ width: 24px;
39
39
  background: rgba(0, 0, 0, 0.05);
40
40
 
41
41
  .revision-diff-marker {
@@ -52,11 +52,11 @@
52
52
  }
53
53
 
54
54
  &.is-removed {
55
- background: #d63638;
55
+ background: repeating-linear-gradient(45deg, #d63638, #d63638 3px, rgba(#d63638, 0.45) 3px, rgba(#d63638, 0.45) 6px);
56
56
  }
57
57
 
58
58
  &.is-modified {
59
- background: #dba617;
59
+ background: repeating-linear-gradient(-45deg, #dba617, #dba617 3px, rgba(#dba617, 0.45) 3px, rgba(#dba617, 0.45) 6px);
60
60
  }
61
61
 
62
62
  &:hover {