@wordpress/editor 14.48.1 → 14.49.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 (460) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +5 -13
  3. package/build/bindings/pattern-overrides.cjs +1 -1
  4. package/build/bindings/pattern-overrides.cjs.map +2 -2
  5. package/build/components/autosave-monitor/index.cjs +40 -83
  6. package/build/components/autosave-monitor/index.cjs.map +3 -3
  7. package/build/components/collab-sidebar/note-byline.cjs +1 -1
  8. package/build/components/collab-sidebar/note-byline.cjs.map +2 -2
  9. package/build/components/collab-sidebar/note.cjs +49 -17
  10. package/build/components/collab-sidebar/note.cjs.map +3 -3
  11. package/build/components/collab-sidebar/notes.cjs.map +1 -1
  12. package/build/components/collab-sidebar/utils.cjs +1 -1
  13. package/build/components/collab-sidebar/utils.cjs.map +2 -2
  14. package/build/components/collaborators-overlay/avatar-iframe-styles.cjs.map +1 -1
  15. package/build/components/collaborators-overlay/collaborator-styles.cjs.map +1 -1
  16. package/build/components/collaborators-overlay/compute-selection.cjs.map +1 -1
  17. package/build/components/collaborators-overlay/overlay-iframe-styles.cjs +1 -1
  18. package/build/components/collaborators-overlay/overlay-iframe-styles.cjs.map +1 -1
  19. package/build/components/collaborators-overlay/use-block-highlighting.cjs.map +1 -1
  20. package/build/components/collaborators-presence/avatar/component.cjs.map +2 -2
  21. package/build/components/collaborators-presence/avatar/use-image-loading-status.cjs.map +1 -1
  22. package/build/components/document-bar/index.cjs +7 -5
  23. package/build/components/document-bar/index.cjs.map +2 -2
  24. package/build/components/global-keyboard-shortcuts/index.cjs +3 -2
  25. package/build/components/global-keyboard-shortcuts/index.cjs.map +2 -2
  26. package/build/components/global-styles-sidebar/welcome-guide.cjs +3 -3
  27. package/build/components/global-styles-sidebar/welcome-guide.cjs.map +1 -1
  28. package/build/components/local-autosave-monitor/index.cjs +14 -15
  29. package/build/components/local-autosave-monitor/index.cjs.map +2 -2
  30. package/build/components/page-attributes/parent.cjs +1 -1
  31. package/build/components/page-attributes/parent.cjs.map +2 -2
  32. package/build/components/post-card-panel/index.cjs +1 -1
  33. package/build/components/post-card-panel/index.cjs.map +2 -2
  34. package/build/components/post-excerpt/panel.cjs +1 -1
  35. package/build/components/post-excerpt/panel.cjs.map +2 -2
  36. package/build/components/post-locked-modal/index.cjs +3 -3
  37. package/build/components/post-locked-modal/index.cjs.map +1 -1
  38. package/build/components/post-preview-button/index.cjs +2 -2
  39. package/build/components/post-preview-button/index.cjs.map +2 -2
  40. package/build/components/post-publish-button/index.cjs +4 -3
  41. package/build/components/post-publish-button/index.cjs.map +2 -2
  42. package/build/components/post-publish-button/label.cjs +2 -2
  43. package/build/components/post-publish-button/label.cjs.map +2 -2
  44. package/build/components/post-publish-panel/index.cjs.map +1 -1
  45. package/build/components/post-publish-panel/postpublish.cjs +1 -2
  46. package/build/components/post-publish-panel/postpublish.cjs.map +2 -2
  47. package/build/components/post-revisions-preview/block-diff.cjs.map +1 -1
  48. package/build/components/post-revisions-preview/diff-markers.cjs.map +2 -2
  49. package/build/components/post-revisions-preview/revisions-slider.cjs +1 -1
  50. package/build/components/post-revisions-preview/revisions-slider.cjs.map +2 -2
  51. package/build/components/post-revisions-timeline/index.cjs +173 -0
  52. package/build/components/post-revisions-timeline/index.cjs.map +7 -0
  53. package/build/components/post-saved-state/index.cjs +17 -26
  54. package/build/components/post-saved-state/index.cjs.map +2 -2
  55. package/build/components/post-schedule/label.cjs +5 -5
  56. package/build/components/post-schedule/label.cjs.map +1 -1
  57. package/build/components/post-status/index.cjs +0 -1
  58. package/build/components/post-status/index.cjs.map +2 -2
  59. package/build/components/post-taxonomies/flat-term-selector.cjs +2 -1
  60. package/build/components/post-taxonomies/flat-term-selector.cjs.map +3 -3
  61. package/build/components/post-taxonomies/hierarchical-term-selector.cjs +1 -2
  62. package/build/components/post-taxonomies/hierarchical-term-selector.cjs.map +2 -2
  63. package/build/components/post-template/create-new-template-modal.cjs +0 -1
  64. package/build/components/post-template/create-new-template-modal.cjs.map +2 -2
  65. package/build/components/post-text-editor/index.cjs +51 -0
  66. package/build/components/post-text-editor/index.cjs.map +2 -2
  67. package/build/components/post-text-editor/utils.cjs +150 -0
  68. package/build/components/post-text-editor/utils.cjs.map +7 -0
  69. package/build/components/post-url/index.cjs +1 -1
  70. package/build/components/post-url/index.cjs.map +2 -2
  71. package/build/components/post-view-link/index.cjs +1 -1
  72. package/build/components/post-view-link/index.cjs.map +2 -2
  73. package/build/components/post-visibility/index.cjs +0 -1
  74. package/build/components/post-visibility/index.cjs.map +2 -2
  75. package/build/components/provider/disable-non-page-content-blocks.cjs +23 -3
  76. package/build/components/provider/disable-non-page-content-blocks.cjs.map +2 -2
  77. package/build/components/provider/index.cjs +1 -1
  78. package/build/components/provider/index.cjs.map +2 -2
  79. package/build/components/provider/navigation-block-editing-mode.cjs +9 -2
  80. package/build/components/provider/navigation-block-editing-mode.cjs.map +2 -2
  81. package/build/components/provider/use-block-editor-settings.cjs +2 -1
  82. package/build/components/provider/use-block-editor-settings.cjs.map +2 -2
  83. package/build/components/resizable-editor/resize-handle.cjs.map +2 -2
  84. package/build/components/revision-diff-panel/index.cjs +7 -2
  85. package/build/components/revision-diff-panel/index.cjs.map +2 -2
  86. package/build/components/revision-fields-diff/index.cjs +6 -2
  87. package/build/components/revision-fields-diff/index.cjs.map +2 -2
  88. package/build/components/sidebar/dataform-post-summary.cjs +189 -29
  89. package/build/components/sidebar/dataform-post-summary.cjs.map +3 -3
  90. package/build/components/sidebar/index.cjs +1 -11
  91. package/build/components/sidebar/index.cjs.map +3 -3
  92. package/build/components/sidebar/post-revision-summary.cjs +11 -17
  93. package/build/components/sidebar/post-revision-summary.cjs.map +3 -3
  94. package/build/components/sidebar/post-summary.cjs +8 -6
  95. package/build/components/sidebar/post-summary.cjs.map +3 -3
  96. package/build/components/style-book/examples.cjs +1 -1
  97. package/build/components/style-book/examples.cjs.map +1 -1
  98. package/build/components/style-book/index.cjs +1 -1
  99. package/build/components/style-book/index.cjs.map +2 -2
  100. package/build/components/sync-connection-error-modal/index.cjs +3 -3
  101. package/build/components/sync-connection-error-modal/index.cjs.map +1 -1
  102. package/build/components/template-actions-panel/block-theme-content.cjs.map +2 -2
  103. package/build/components/template-actions-panel/index.cjs +0 -9
  104. package/build/components/template-actions-panel/index.cjs.map +3 -3
  105. package/build/components/template-validation-notice/index.cjs +1 -1
  106. package/build/components/template-validation-notice/index.cjs.map +1 -1
  107. package/build/components/upload-progress-snackbar/index.cjs +3 -3
  108. package/build/components/upload-progress-snackbar/index.cjs.map +2 -2
  109. package/build/components/upload-progress-snackbar/tracker.cjs.map +1 -1
  110. package/build/components/visual-editor/edit-template-blocks-notification.cjs +1 -1
  111. package/build/components/visual-editor/edit-template-blocks-notification.cjs.map +1 -1
  112. package/build/{components/revision-author-panel → dataviews/fields/revisions}/index.cjs +18 -26
  113. package/build/dataviews/fields/revisions/index.cjs.map +7 -0
  114. package/build/dataviews/fields/revisions/revisions-view.cjs +74 -0
  115. package/build/dataviews/fields/revisions/revisions-view.cjs.map +7 -0
  116. package/build/dataviews/store/private-actions.cjs +17 -5
  117. package/build/dataviews/store/private-actions.cjs.map +3 -3
  118. package/build/hooks/push-changes-to-global-styles/index.cjs +1 -1
  119. package/build/hooks/push-changes-to-global-styles/index.cjs.map +1 -1
  120. package/build/store/actions.cjs +1 -1
  121. package/build/store/actions.cjs.map +2 -2
  122. package/build/store/private-actions.cjs +2 -2
  123. package/build/store/private-actions.cjs.map +2 -2
  124. package/build/store/private-selectors.cjs +6 -1
  125. package/build/store/private-selectors.cjs.map +2 -2
  126. package/build/utils/media-upload/index.cjs.map +1 -1
  127. package/build/utils/set-nested-value.cjs.map +1 -1
  128. package/build-module/bindings/pattern-overrides.mjs +1 -1
  129. package/build-module/bindings/pattern-overrides.mjs.map +2 -2
  130. package/build-module/components/autosave-monitor/index.mjs +42 -81
  131. package/build-module/components/autosave-monitor/index.mjs.map +2 -2
  132. package/build-module/components/collab-sidebar/note-byline.mjs +1 -1
  133. package/build-module/components/collab-sidebar/note-byline.mjs.map +2 -2
  134. package/build-module/components/collab-sidebar/note.mjs +50 -18
  135. package/build-module/components/collab-sidebar/note.mjs.map +2 -2
  136. package/build-module/components/collab-sidebar/notes.mjs.map +1 -1
  137. package/build-module/components/collab-sidebar/utils.mjs +1 -1
  138. package/build-module/components/collab-sidebar/utils.mjs.map +2 -2
  139. package/build-module/components/collaborators-overlay/avatar-iframe-styles.mjs.map +1 -1
  140. package/build-module/components/collaborators-overlay/collaborator-styles.mjs.map +1 -1
  141. package/build-module/components/collaborators-overlay/compute-selection.mjs.map +1 -1
  142. package/build-module/components/collaborators-overlay/overlay-iframe-styles.mjs +1 -1
  143. package/build-module/components/collaborators-overlay/overlay-iframe-styles.mjs.map +1 -1
  144. package/build-module/components/collaborators-overlay/use-block-highlighting.mjs.map +1 -1
  145. package/build-module/components/collaborators-presence/avatar/component.mjs.map +2 -2
  146. package/build-module/components/collaborators-presence/avatar/use-image-loading-status.mjs.map +1 -1
  147. package/build-module/components/document-bar/index.mjs +7 -5
  148. package/build-module/components/document-bar/index.mjs.map +2 -2
  149. package/build-module/components/global-keyboard-shortcuts/index.mjs +3 -2
  150. package/build-module/components/global-keyboard-shortcuts/index.mjs.map +2 -2
  151. package/build-module/components/global-styles-sidebar/welcome-guide.mjs +3 -3
  152. package/build-module/components/global-styles-sidebar/welcome-guide.mjs.map +1 -1
  153. package/build-module/components/local-autosave-monitor/index.mjs +15 -16
  154. package/build-module/components/local-autosave-monitor/index.mjs.map +2 -2
  155. package/build-module/components/page-attributes/parent.mjs +1 -1
  156. package/build-module/components/page-attributes/parent.mjs.map +2 -2
  157. package/build-module/components/post-card-panel/index.mjs +1 -1
  158. package/build-module/components/post-card-panel/index.mjs.map +2 -2
  159. package/build-module/components/post-excerpt/panel.mjs +1 -1
  160. package/build-module/components/post-excerpt/panel.mjs.map +2 -2
  161. package/build-module/components/post-locked-modal/index.mjs +3 -3
  162. package/build-module/components/post-locked-modal/index.mjs.map +1 -1
  163. package/build-module/components/post-preview-button/index.mjs +2 -2
  164. package/build-module/components/post-preview-button/index.mjs.map +2 -2
  165. package/build-module/components/post-publish-button/index.mjs +4 -3
  166. package/build-module/components/post-publish-button/index.mjs.map +2 -2
  167. package/build-module/components/post-publish-button/label.mjs +2 -2
  168. package/build-module/components/post-publish-button/label.mjs.map +2 -2
  169. package/build-module/components/post-publish-panel/index.mjs.map +1 -1
  170. package/build-module/components/post-publish-panel/postpublish.mjs +1 -2
  171. package/build-module/components/post-publish-panel/postpublish.mjs.map +2 -2
  172. package/build-module/components/post-revisions-preview/block-diff.mjs.map +1 -1
  173. package/build-module/components/post-revisions-preview/diff-markers.mjs.map +2 -2
  174. package/build-module/components/post-revisions-preview/revisions-slider.mjs +1 -1
  175. package/build-module/components/post-revisions-preview/revisions-slider.mjs.map +2 -2
  176. package/build-module/components/post-revisions-timeline/index.mjs +152 -0
  177. package/build-module/components/post-revisions-timeline/index.mjs.map +7 -0
  178. package/build-module/components/post-saved-state/index.mjs +17 -26
  179. package/build-module/components/post-saved-state/index.mjs.map +2 -2
  180. package/build-module/components/post-schedule/label.mjs +5 -5
  181. package/build-module/components/post-schedule/label.mjs.map +1 -1
  182. package/build-module/components/post-status/index.mjs +0 -1
  183. package/build-module/components/post-status/index.mjs.map +2 -2
  184. package/build-module/components/post-taxonomies/flat-term-selector.mjs +3 -6
  185. package/build-module/components/post-taxonomies/flat-term-selector.mjs.map +2 -2
  186. package/build-module/components/post-taxonomies/hierarchical-term-selector.mjs +1 -2
  187. package/build-module/components/post-taxonomies/hierarchical-term-selector.mjs.map +2 -2
  188. package/build-module/components/post-template/create-new-template-modal.mjs +0 -1
  189. package/build-module/components/post-template/create-new-template-modal.mjs.map +2 -2
  190. package/build-module/components/post-text-editor/index.mjs +51 -0
  191. package/build-module/components/post-text-editor/index.mjs.map +2 -2
  192. package/build-module/components/post-text-editor/utils.mjs +123 -0
  193. package/build-module/components/post-text-editor/utils.mjs.map +7 -0
  194. package/build-module/components/post-url/index.mjs +1 -1
  195. package/build-module/components/post-url/index.mjs.map +2 -2
  196. package/build-module/components/post-view-link/index.mjs +1 -1
  197. package/build-module/components/post-view-link/index.mjs.map +2 -2
  198. package/build-module/components/post-visibility/index.mjs +0 -1
  199. package/build-module/components/post-visibility/index.mjs.map +2 -2
  200. package/build-module/components/provider/disable-non-page-content-blocks.mjs +23 -3
  201. package/build-module/components/provider/disable-non-page-content-blocks.mjs.map +2 -2
  202. package/build-module/components/provider/index.mjs +1 -1
  203. package/build-module/components/provider/index.mjs.map +2 -2
  204. package/build-module/components/provider/navigation-block-editing-mode.mjs +10 -3
  205. package/build-module/components/provider/navigation-block-editing-mode.mjs.map +2 -2
  206. package/build-module/components/provider/use-block-editor-settings.mjs +2 -1
  207. package/build-module/components/provider/use-block-editor-settings.mjs.map +2 -2
  208. package/build-module/components/resizable-editor/resize-handle.mjs.map +2 -2
  209. package/build-module/components/revision-diff-panel/index.mjs +7 -2
  210. package/build-module/components/revision-diff-panel/index.mjs.map +2 -2
  211. package/build-module/components/revision-fields-diff/index.mjs +6 -2
  212. package/build-module/components/revision-fields-diff/index.mjs.map +2 -2
  213. package/build-module/components/sidebar/dataform-post-summary.mjs +190 -30
  214. package/build-module/components/sidebar/dataform-post-summary.mjs.map +2 -2
  215. package/build-module/components/sidebar/index.mjs +1 -11
  216. package/build-module/components/sidebar/index.mjs.map +2 -2
  217. package/build-module/components/sidebar/post-revision-summary.mjs +11 -17
  218. package/build-module/components/sidebar/post-revision-summary.mjs.map +2 -2
  219. package/build-module/components/sidebar/post-summary.mjs +8 -6
  220. package/build-module/components/sidebar/post-summary.mjs.map +2 -2
  221. package/build-module/components/style-book/examples.mjs +1 -1
  222. package/build-module/components/style-book/examples.mjs.map +1 -1
  223. package/build-module/components/style-book/index.mjs +1 -1
  224. package/build-module/components/style-book/index.mjs.map +2 -2
  225. package/build-module/components/sync-connection-error-modal/index.mjs +3 -3
  226. package/build-module/components/sync-connection-error-modal/index.mjs.map +1 -1
  227. package/build-module/components/template-actions-panel/block-theme-content.mjs.map +2 -2
  228. package/build-module/components/template-actions-panel/index.mjs +0 -9
  229. package/build-module/components/template-actions-panel/index.mjs.map +2 -2
  230. package/build-module/components/template-validation-notice/index.mjs +1 -1
  231. package/build-module/components/template-validation-notice/index.mjs.map +1 -1
  232. package/build-module/components/upload-progress-snackbar/index.mjs +3 -3
  233. package/build-module/components/upload-progress-snackbar/index.mjs.map +2 -2
  234. package/build-module/components/upload-progress-snackbar/tracker.mjs.map +1 -1
  235. package/build-module/components/visual-editor/edit-template-blocks-notification.mjs +1 -1
  236. package/build-module/components/visual-editor/edit-template-blocks-notification.mjs.map +1 -1
  237. package/build-module/dataviews/fields/revisions/index.mjs +20 -0
  238. package/build-module/dataviews/fields/revisions/index.mjs.map +7 -0
  239. package/build-module/dataviews/fields/revisions/revisions-view.mjs +53 -0
  240. package/build-module/dataviews/fields/revisions/revisions-view.mjs.map +7 -0
  241. package/build-module/dataviews/store/private-actions.mjs +28 -8
  242. package/build-module/dataviews/store/private-actions.mjs.map +2 -2
  243. package/build-module/hooks/push-changes-to-global-styles/index.mjs +1 -1
  244. package/build-module/hooks/push-changes-to-global-styles/index.mjs.map +1 -1
  245. package/build-module/store/actions.mjs +1 -1
  246. package/build-module/store/actions.mjs.map +2 -2
  247. package/build-module/store/private-actions.mjs +2 -2
  248. package/build-module/store/private-actions.mjs.map +2 -2
  249. package/build-module/store/private-selectors.mjs +7 -1
  250. package/build-module/store/private-selectors.mjs.map +2 -2
  251. package/build-module/utils/media-upload/index.mjs.map +1 -1
  252. package/build-module/utils/set-nested-value.mjs.map +1 -1
  253. package/build-style/style-rtl.css +298 -238
  254. package/build-style/style.css +298 -238
  255. package/build-types/components/autosave-monitor/index.d.ts +11 -29
  256. package/build-types/components/autosave-monitor/index.d.ts.map +1 -1
  257. package/build-types/components/collab-sidebar/note-byline.d.ts +0 -3
  258. package/build-types/components/collab-sidebar/note-byline.d.ts.map +1 -1
  259. package/build-types/components/collab-sidebar/note.d.ts.map +1 -1
  260. package/build-types/components/collaborators-presence/avatar/component.d.ts.map +1 -1
  261. package/build-types/components/document-bar/index.d.ts +2 -2
  262. package/build-types/components/document-bar/index.d.ts.map +1 -1
  263. package/build-types/components/global-keyboard-shortcuts/index.d.ts.map +1 -1
  264. package/build-types/components/local-autosave-monitor/index.d.ts.map +1 -1
  265. package/build-types/components/post-publish-button/index.d.ts.map +1 -1
  266. package/build-types/components/post-publish-panel/postpublish.d.ts.map +1 -1
  267. package/build-types/components/post-revisions-preview/diff-markers.d.ts.map +1 -1
  268. package/build-types/components/post-revisions-timeline/index.d.ts +2 -0
  269. package/build-types/components/post-revisions-timeline/index.d.ts.map +1 -0
  270. package/build-types/components/post-saved-state/index.d.ts.map +1 -1
  271. package/build-types/components/post-status/index.d.ts.map +1 -1
  272. package/build-types/components/post-taxonomies/flat-term-selector.d.ts.map +1 -1
  273. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts.map +1 -1
  274. package/build-types/components/post-template/create-new-template-modal.d.ts.map +1 -1
  275. package/build-types/components/post-text-editor/index.d.ts +1 -1
  276. package/build-types/components/post-text-editor/index.d.ts.map +1 -1
  277. package/build-types/components/post-visibility/index.d.ts.map +1 -1
  278. package/build-types/components/provider/disable-non-page-content-blocks.d.ts.map +1 -1
  279. package/build-types/components/provider/index.d.ts.map +1 -1
  280. package/build-types/components/provider/navigation-block-editing-mode.d.ts.map +1 -1
  281. package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
  282. package/build-types/components/resizable-editor/resize-handle.d.ts.map +1 -1
  283. package/build-types/components/revision-diff-panel/index.d.ts +3 -1
  284. package/build-types/components/revision-diff-panel/index.d.ts.map +1 -1
  285. package/build-types/components/revision-fields-diff/index.d.ts.map +1 -1
  286. package/build-types/components/sidebar/dataform-post-summary.d.ts.map +1 -1
  287. package/build-types/components/sidebar/index.d.ts.map +1 -1
  288. package/build-types/components/sidebar/post-revision-summary.d.ts.map +1 -1
  289. package/build-types/components/sidebar/post-summary.d.ts.map +1 -1
  290. package/build-types/components/template-actions-panel/block-theme-content.d.ts.map +1 -1
  291. package/build-types/components/template-actions-panel/index.d.ts.map +1 -1
  292. package/build-types/dataviews/fields/revisions/index.d.ts +8 -0
  293. package/build-types/dataviews/fields/revisions/index.d.ts.map +1 -0
  294. package/build-types/dataviews/fields/revisions/revisions-view.d.ts +2 -0
  295. package/build-types/dataviews/fields/revisions/revisions-view.d.ts.map +1 -0
  296. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  297. package/build-types/store/private-selectors.d.ts +1 -1
  298. package/build-types/store/private-selectors.d.ts.map +1 -1
  299. package/build-types/store/selectors.d.ts +1 -1
  300. package/build-types/store/selectors.d.ts.map +1 -1
  301. package/build-types/utils/get-template-part-icon.d.ts.map +1 -1
  302. package/package.json +53 -47
  303. package/src/bindings/pattern-overrides.js +1 -1
  304. package/src/bindings/test/pattern-overrides.js +65 -0
  305. package/src/components/autosave-monitor/index.js +69 -104
  306. package/src/components/autosave-monitor/test/index.js +137 -122
  307. package/src/components/collab-sidebar/note-byline.js +0 -1
  308. package/src/components/collab-sidebar/note.js +64 -29
  309. package/src/components/collab-sidebar/style.scss +20 -0
  310. package/src/components/collaborators-presence/avatar/component.tsx +0 -1
  311. package/src/components/collaborators-presence/avatar/test/index.tsx +0 -1
  312. package/src/components/document-bar/index.js +8 -3
  313. package/src/components/document-bar/style.scss +4 -2
  314. package/src/components/global-keyboard-shortcuts/index.js +2 -1
  315. package/src/components/local-autosave-monitor/index.js +23 -21
  316. package/src/components/plugin-post-publish-panel/test/__snapshots__/index.js.snap +1 -0
  317. package/src/components/post-card-panel/index.js +1 -1
  318. package/src/components/post-publish-button/index.js +6 -3
  319. package/src/components/post-publish-button/test/index.js +13 -0
  320. package/src/components/post-publish-panel/postpublish.js +0 -1
  321. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +7 -2
  322. package/src/components/post-revisions-preview/diff-markers.js +0 -1
  323. package/src/components/post-revisions-timeline/index.js +186 -0
  324. package/src/components/post-revisions-timeline/style.scss +43 -0
  325. package/src/components/post-saved-state/index.js +23 -26
  326. package/src/components/post-saved-state/test/__snapshots__/index.js.snap +1 -0
  327. package/src/components/post-saved-state/test/index.js +18 -0
  328. package/src/components/post-status/index.js +0 -1
  329. package/src/components/post-taxonomies/flat-term-selector.js +4 -7
  330. package/src/components/post-taxonomies/hierarchical-term-selector.js +0 -1
  331. package/src/components/post-template/create-new-template-modal.js +0 -1
  332. package/src/components/post-text-editor/index.js +65 -0
  333. package/src/components/post-text-editor/test/utils.js +210 -0
  334. package/src/components/post-text-editor/utils.js +204 -0
  335. package/src/components/post-type-support-check/test/index.js +11 -0
  336. package/src/components/post-url/index.js +1 -1
  337. package/src/components/post-view-link/index.js +1 -1
  338. package/src/components/post-view-link/test/index.js +71 -0
  339. package/src/components/post-visibility/index.js +0 -1
  340. package/src/components/provider/disable-non-page-content-blocks.js +23 -6
  341. package/src/components/provider/index.js +2 -1
  342. package/src/components/provider/navigation-block-editing-mode.js +10 -4
  343. package/src/components/provider/use-block-editor-settings.js +3 -1
  344. package/src/components/resizable-editor/resize-handle.js +0 -1
  345. package/src/components/revision-diff-panel/index.js +8 -2
  346. package/src/components/revision-fields-diff/index.js +12 -1
  347. package/src/components/sidebar/dataform-post-summary.js +291 -36
  348. package/src/components/sidebar/index.js +2 -12
  349. package/src/components/sidebar/post-revision-summary.js +8 -15
  350. package/src/components/sidebar/post-summary.js +12 -10
  351. package/src/components/style-book/index.js +1 -1
  352. package/src/components/template-actions-panel/block-theme-content.js +0 -1
  353. package/src/components/template-actions-panel/index.js +0 -15
  354. package/src/dataviews/fields/revisions/index.tsx +28 -0
  355. package/src/dataviews/fields/revisions/revisions-view.tsx +59 -0
  356. package/src/dataviews/store/private-actions.ts +35 -7
  357. package/src/store/private-actions.js +2 -2
  358. package/src/store/private-selectors.js +11 -1
  359. package/src/store/test/actions.js +2 -2
  360. package/src/store/test/private-selectors.js +69 -0
  361. package/src/style.scss +1 -1
  362. package/build/components/post-revisions-panel/index.cjs +0 -173
  363. package/build/components/post-revisions-panel/index.cjs.map +0 -7
  364. package/build/components/revision-author-panel/index.cjs.map +0 -7
  365. package/build/components/revision-created-panel/index.cjs +0 -47
  366. package/build/components/revision-created-panel/index.cjs.map +0 -7
  367. package/build-module/components/post-revisions-panel/index.mjs +0 -148
  368. package/build-module/components/post-revisions-panel/index.mjs.map +0 -7
  369. package/build-module/components/revision-author-panel/index.mjs +0 -28
  370. package/build-module/components/revision-author-panel/index.mjs.map +0 -7
  371. package/build-module/components/revision-created-panel/index.mjs +0 -26
  372. package/build-module/components/revision-created-panel/index.mjs.map +0 -7
  373. package/build-types/components/collab-sidebar/add-comment.d.ts +0 -6
  374. package/build-types/components/collab-sidebar/add-comment.d.ts.map +0 -1
  375. package/build-types/components/collab-sidebar/comment-author-info.d.ts +0 -8
  376. package/build-types/components/collab-sidebar/comment-author-info.d.ts.map +0 -1
  377. package/build-types/components/collab-sidebar/comment-form.d.ts +0 -9
  378. package/build-types/components/collab-sidebar/comment-form.d.ts.map +0 -1
  379. package/build-types/components/collab-sidebar/comment-indicator-toolbar.d.ts +0 -6
  380. package/build-types/components/collab-sidebar/comment-indicator-toolbar.d.ts.map +0 -1
  381. package/build-types/components/collab-sidebar/comment-menu-item.d.ts +0 -6
  382. package/build-types/components/collab-sidebar/comment-menu-item.d.ts.map +0 -1
  383. package/build-types/components/collab-sidebar/comments.d.ts +0 -10
  384. package/build-types/components/collab-sidebar/comments.d.ts.map +0 -1
  385. package/build-types/components/global-styles-provider/index.d.ts +0 -16
  386. package/build-types/components/global-styles-provider/index.d.ts.map +0 -1
  387. package/build-types/components/media/index.d.ts +0 -3
  388. package/build-types/components/media/index.d.ts.map +0 -1
  389. package/build-types/components/media/metadata-panel.d.ts +0 -12
  390. package/build-types/components/media/metadata-panel.d.ts.map +0 -1
  391. package/build-types/components/media/preview.d.ts +0 -9
  392. package/build-types/components/media/preview.d.ts.map +0 -1
  393. package/build-types/components/post-revisions-panel/index.d.ts +0 -2
  394. package/build-types/components/post-revisions-panel/index.d.ts.map +0 -1
  395. package/build-types/components/revision-author-panel/index.d.ts +0 -2
  396. package/build-types/components/revision-author-panel/index.d.ts.map +0 -1
  397. package/build-types/components/revision-created-panel/index.d.ts +0 -2
  398. package/build-types/components/revision-created-panel/index.d.ts.map +0 -1
  399. package/src/components/editor-help/images/add-dark.png +0 -0
  400. package/src/components/editor-help/images/add-dark@2x.png +0 -0
  401. package/src/components/editor-help/images/add-dark@3x.png +0 -0
  402. package/src/components/editor-help/images/add-light.png +0 -0
  403. package/src/components/editor-help/images/add-light@2x.png +0 -0
  404. package/src/components/editor-help/images/add-light@3x.png +0 -0
  405. package/src/components/editor-help/images/block-layout-collage.png +0 -0
  406. package/src/components/editor-help/images/block-layout-collage@2x.png +0 -0
  407. package/src/components/editor-help/images/block-layout-collage@3x.png +0 -0
  408. package/src/components/editor-help/images/build-layouts-dark.png +0 -0
  409. package/src/components/editor-help/images/build-layouts-dark@2x.png +0 -0
  410. package/src/components/editor-help/images/build-layouts-dark@3x.png +0 -0
  411. package/src/components/editor-help/images/build-layouts-light.png +0 -0
  412. package/src/components/editor-help/images/build-layouts-light@2x.png +0 -0
  413. package/src/components/editor-help/images/build-layouts-light@3x.png +0 -0
  414. package/src/components/editor-help/images/drag-and-drop-dark.png +0 -0
  415. package/src/components/editor-help/images/drag-and-drop-dark@2x.png +0 -0
  416. package/src/components/editor-help/images/drag-and-drop-dark@3x.png +0 -0
  417. package/src/components/editor-help/images/drag-and-drop-light.png +0 -0
  418. package/src/components/editor-help/images/drag-and-drop-light@2x.png +0 -0
  419. package/src/components/editor-help/images/drag-and-drop-light@3x.png +0 -0
  420. package/src/components/editor-help/images/edit-media-dark.png +0 -0
  421. package/src/components/editor-help/images/edit-media-dark@2x.png +0 -0
  422. package/src/components/editor-help/images/edit-media-dark@3x.png +0 -0
  423. package/src/components/editor-help/images/edit-media-light.png +0 -0
  424. package/src/components/editor-help/images/edit-media-light@2x.png +0 -0
  425. package/src/components/editor-help/images/edit-media-light@3x.png +0 -0
  426. package/src/components/editor-help/images/embed-media-dark.png +0 -0
  427. package/src/components/editor-help/images/embed-media-dark@2x.png +0 -0
  428. package/src/components/editor-help/images/embed-media-dark@3x.png +0 -0
  429. package/src/components/editor-help/images/embed-media-light.png +0 -0
  430. package/src/components/editor-help/images/embed-media-light@2x.png +0 -0
  431. package/src/components/editor-help/images/embed-media-light@3x.png +0 -0
  432. package/src/components/editor-help/images/move-dark.png +0 -0
  433. package/src/components/editor-help/images/move-dark@2x.png +0 -0
  434. package/src/components/editor-help/images/move-dark@3x.png +0 -0
  435. package/src/components/editor-help/images/move-light.png +0 -0
  436. package/src/components/editor-help/images/move-light@2x.png +0 -0
  437. package/src/components/editor-help/images/move-light@3x.png +0 -0
  438. package/src/components/editor-help/images/options-dark.png +0 -0
  439. package/src/components/editor-help/images/options-dark@2x.png +0 -0
  440. package/src/components/editor-help/images/options-dark@3x.png +0 -0
  441. package/src/components/editor-help/images/options-light.png +0 -0
  442. package/src/components/editor-help/images/options-light@2x.png +0 -0
  443. package/src/components/editor-help/images/options-light@3x.png +0 -0
  444. package/src/components/editor-help/images/rich-text-dark.png +0 -0
  445. package/src/components/editor-help/images/rich-text-dark@2x.png +0 -0
  446. package/src/components/editor-help/images/rich-text-dark@3x.png +0 -0
  447. package/src/components/editor-help/images/rich-text-light.png +0 -0
  448. package/src/components/editor-help/images/rich-text-light@2x.png +0 -0
  449. package/src/components/editor-help/images/rich-text-light@3x.png +0 -0
  450. package/src/components/editor-help/images/settings-dark.png +0 -0
  451. package/src/components/editor-help/images/settings-dark@2x.png +0 -0
  452. package/src/components/editor-help/images/settings-dark@3x.png +0 -0
  453. package/src/components/editor-help/images/settings-light.png +0 -0
  454. package/src/components/editor-help/images/settings-light@2x.png +0 -0
  455. package/src/components/editor-help/images/settings-light@3x.png +0 -0
  456. package/src/components/editor-help/style.scss +0 -123
  457. package/src/components/post-revisions-panel/index.js +0 -161
  458. package/src/components/post-revisions-panel/style.scss +0 -16
  459. package/src/components/revision-author-panel/index.js +0 -36
  460. package/src/components/revision-created-panel/index.js +0 -36
@@ -1,14 +1,19 @@
1
1
  // packages/editor/src/components/post-text-editor/index.js
2
2
  import Textarea from "react-autosize-textarea";
3
+ import { useLayoutEffect, useRef } from "@wordpress/element";
3
4
  import { __ } from "@wordpress/i18n";
4
5
  import { store as coreStore } from "@wordpress/core-data";
5
6
  import { useDispatch, useSelect } from "@wordpress/data";
6
7
  import { useInstanceId } from "@wordpress/compose";
7
8
  import { VisuallyHidden } from "@wordpress/ui";
8
9
  import { store as editorStore } from "../../store/index.mjs";
10
+ import { adjustPosition, getDiff } from "./utils.mjs";
9
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
12
  function PostTextEditor() {
11
13
  const instanceId = useInstanceId(PostTextEditor);
14
+ const textareaRef = useRef();
15
+ const previousValueRef = useRef();
16
+ const selectionRef = useRef();
12
17
  const { value, type, id } = useSelect((select) => {
13
18
  const { getCurrentPostType, getCurrentPostId, getEditedPostContent } = select(editorStore);
14
19
  return {
@@ -18,6 +23,46 @@ function PostTextEditor() {
18
23
  };
19
24
  }, []);
20
25
  const { editEntityRecord } = useDispatch(coreStore);
26
+ useLayoutEffect(() => {
27
+ const textarea = textareaRef.current;
28
+ const previousValue = previousValueRef.current;
29
+ previousValueRef.current = value;
30
+ if (!textarea || previousValue === void 0 || previousValue === value || !selectionRef.current) {
31
+ return;
32
+ }
33
+ const { selectionStart, selectionEnd, selectionDirection } = selectionRef.current;
34
+ const changes = getDiff(previousValue, value);
35
+ const adjustedSelectionStart = adjustPosition(
36
+ selectionStart,
37
+ changes,
38
+ previousValue,
39
+ value
40
+ );
41
+ const adjustedSelectionEnd = adjustPosition(
42
+ selectionEnd,
43
+ changes,
44
+ previousValue,
45
+ value
46
+ );
47
+ textarea.setSelectionRange(
48
+ adjustedSelectionStart,
49
+ adjustedSelectionEnd,
50
+ selectionDirection
51
+ );
52
+ selectionRef.current = {
53
+ selectionStart: adjustedSelectionStart,
54
+ selectionEnd: adjustedSelectionEnd,
55
+ selectionDirection
56
+ };
57
+ }, [value]);
58
+ const updateSelection = (event) => {
59
+ const { selectionStart, selectionEnd, selectionDirection } = event.target;
60
+ selectionRef.current = {
61
+ selectionStart,
62
+ selectionEnd,
63
+ selectionDirection
64
+ };
65
+ };
21
66
  return /* @__PURE__ */ jsxs(Fragment, { children: [
22
67
  /* @__PURE__ */ jsx(
23
68
  VisuallyHidden,
@@ -31,14 +76,20 @@ function PostTextEditor() {
31
76
  {
32
77
  autoComplete: "off",
33
78
  dir: "auto",
79
+ ref: textareaRef,
34
80
  value,
35
81
  onChange: (event) => {
82
+ updateSelection(event);
83
+ previousValueRef.current = event.target.value;
36
84
  editEntityRecord("postType", type, id, {
37
85
  content: event.target.value,
38
86
  blocks: void 0,
39
87
  selection: void 0
40
88
  });
41
89
  },
90
+ onFocus: updateSelection,
91
+ onMouseUp: updateSelection,
92
+ onKeyUp: updateSelection,
42
93
  className: "editor-post-text-editor",
43
94
  id: `post-content-${instanceId}`,
44
95
  placeholder: __("Start writing with text or HTML")
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-text-editor/index.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport Textarea from 'react-autosize-textarea';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { VisuallyHidden } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\n/**\n * Displays the Post Text Editor along with content in Visual and Text mode.\n *\n * @return {React.ReactNode} The rendered PostTextEditor component.\n */\nexport default function PostTextEditor() {\n\tconst instanceId = useInstanceId( PostTextEditor );\n\tconst { value, type, id } = useSelect( ( select ) => {\n\t\tconst { getCurrentPostType, getCurrentPostId, getEditedPostContent } =\n\t\t\tselect( editorStore );\n\t\treturn {\n\t\t\tvalue: getEditedPostContent(),\n\t\t\ttype: getCurrentPostType(),\n\t\t\tid: getCurrentPostId(),\n\t\t};\n\t}, [] );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\treturn (\n\t\t<>\n\t\t\t<VisuallyHidden\n\t\t\t\t// eslint-disable-next-line jsx-a11y/label-has-associated-control\n\t\t\t\trender={ <label htmlFor={ `post-content-${ instanceId }` } /> }\n\t\t\t>\n\t\t\t\t{ __( 'Type text or HTML' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t<Textarea\n\t\t\t\tautoComplete=\"off\"\n\t\t\t\tdir=\"auto\"\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\teditEntityRecord( 'postType', type, id, {\n\t\t\t\t\t\tcontent: event.target.value,\n\t\t\t\t\t\tblocks: undefined,\n\t\t\t\t\t\tselection: undefined,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tclassName=\"editor-post-text-editor\"\n\t\t\t\tid={ `post-content-${ instanceId }` }\n\t\t\t\tplaceholder={ __( 'Start writing with text or HTML' ) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],
5
- "mappings": ";AAGA,OAAO,cAAc;AAKrB,SAAS,UAAU;AACnB,SAAS,SAAS,iBAAiB;AACnC,SAAS,aAAa,iBAAiB;AACvC,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAK/B,SAAS,SAAS,mBAAmB;AAqBnC,mBAGW,KAHX;AAda,SAAR,iBAAkC;AACxC,QAAM,aAAa,cAAe,cAAe;AACjD,QAAM,EAAE,OAAO,MAAM,GAAG,IAAI,UAAW,CAAE,WAAY;AACpD,UAAM,EAAE,oBAAoB,kBAAkB,qBAAqB,IAClE,OAAQ,WAAY;AACrB,WAAO;AAAA,MACN,OAAO,qBAAqB;AAAA,MAC5B,MAAM,mBAAmB;AAAA,MACzB,IAAI,iBAAiB;AAAA,IACtB;AAAA,EACD,GAAG,CAAC,CAAE;AACN,QAAM,EAAE,iBAAiB,IAAI,YAAa,SAAU;AAEpD,SACC,iCACC;AAAA;AAAA,MAAC;AAAA;AAAA,QAEA,QAAS,oBAAC,WAAM,SAAU,gBAAiB,UAAW,IAAK;AAAA,QAEzD,aAAI,mBAAoB;AAAA;AAAA,IAC3B;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACA,cAAa;AAAA,QACb,KAAI;AAAA,QACJ;AAAA,QACA,UAAW,CAAE,UAAW;AACvB,2BAAkB,YAAY,MAAM,IAAI;AAAA,YACvC,SAAS,MAAM,OAAO;AAAA,YACtB,QAAQ;AAAA,YACR,WAAW;AAAA,UACZ,CAAE;AAAA,QACH;AAAA,QACA,WAAU;AAAA,QACV,IAAK,gBAAiB,UAAW;AAAA,QACjC,aAAc,GAAI,iCAAkC;AAAA;AAAA,IACrD;AAAA,KACD;AAEF;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport Textarea from 'react-autosize-textarea';\n\n/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { VisuallyHidden } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { adjustPosition, getDiff } from './utils';\n\n/**\n * Displays the Post Text Editor along with content in Visual and Text mode.\n *\n * @return {React.ReactNode} The rendered PostTextEditor component.\n */\nexport default function PostTextEditor() {\n\tconst instanceId = useInstanceId( PostTextEditor );\n\tconst textareaRef = useRef();\n\tconst previousValueRef = useRef();\n\tconst selectionRef = useRef();\n\tconst { value, type, id } = useSelect( ( select ) => {\n\t\tconst { getCurrentPostType, getCurrentPostId, getEditedPostContent } =\n\t\t\tselect( editorStore );\n\t\treturn {\n\t\t\tvalue: getEditedPostContent(),\n\t\t\ttype: getCurrentPostType(),\n\t\t\tid: getCurrentPostId(),\n\t\t};\n\t}, [] );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tuseLayoutEffect( () => {\n\t\tconst textarea = textareaRef.current;\n\t\tconst previousValue = previousValueRef.current;\n\t\tpreviousValueRef.current = value;\n\n\t\tif (\n\t\t\t! textarea ||\n\t\t\tpreviousValue === undefined ||\n\t\t\tpreviousValue === value ||\n\t\t\t! selectionRef.current\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { selectionStart, selectionEnd, selectionDirection } =\n\t\t\tselectionRef.current;\n\t\tconst changes = getDiff( previousValue, value );\n\t\tconst adjustedSelectionStart = adjustPosition(\n\t\t\tselectionStart,\n\t\t\tchanges,\n\t\t\tpreviousValue,\n\t\t\tvalue\n\t\t);\n\t\tconst adjustedSelectionEnd = adjustPosition(\n\t\t\tselectionEnd,\n\t\t\tchanges,\n\t\t\tpreviousValue,\n\t\t\tvalue\n\t\t);\n\n\t\ttextarea.setSelectionRange(\n\t\t\tadjustedSelectionStart,\n\t\t\tadjustedSelectionEnd,\n\t\t\tselectionDirection\n\t\t);\n\t\tselectionRef.current = {\n\t\t\tselectionStart: adjustedSelectionStart,\n\t\t\tselectionEnd: adjustedSelectionEnd,\n\t\t\tselectionDirection,\n\t\t};\n\t}, [ value ] );\n\n\tconst updateSelection = ( event ) => {\n\t\tconst { selectionStart, selectionEnd, selectionDirection } =\n\t\t\tevent.target;\n\t\tselectionRef.current = {\n\t\t\tselectionStart,\n\t\t\tselectionEnd,\n\t\t\tselectionDirection,\n\t\t};\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<VisuallyHidden\n\t\t\t\t// eslint-disable-next-line jsx-a11y/label-has-associated-control\n\t\t\t\trender={ <label htmlFor={ `post-content-${ instanceId }` } /> }\n\t\t\t>\n\t\t\t\t{ __( 'Type text or HTML' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t<Textarea\n\t\t\t\tautoComplete=\"off\"\n\t\t\t\tdir=\"auto\"\n\t\t\t\tref={ textareaRef }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\tupdateSelection( event );\n\t\t\t\t\tpreviousValueRef.current = event.target.value;\n\t\t\t\t\teditEntityRecord( 'postType', type, id, {\n\t\t\t\t\t\tcontent: event.target.value,\n\t\t\t\t\t\tblocks: undefined,\n\t\t\t\t\t\tselection: undefined,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tonFocus={ updateSelection }\n\t\t\t\t// A click or arrow-key caret move does not fire `select` (only\n\t\t\t\t// range selections do), so track those moves via mouseup/keyup.\n\t\t\t\tonMouseUp={ updateSelection }\n\t\t\t\tonKeyUp={ updateSelection }\n\t\t\t\tclassName=\"editor-post-text-editor\"\n\t\t\t\tid={ `post-content-${ instanceId }` }\n\t\t\t\tplaceholder={ __( 'Start writing with text or HTML' ) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,OAAO,cAAc;AAKrB,SAAS,iBAAiB,cAAc;AACxC,SAAS,UAAU;AACnB,SAAS,SAAS,iBAAiB;AACnC,SAAS,aAAa,iBAAiB;AACvC,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAK/B,SAAS,SAAS,mBAAmB;AACrC,SAAS,gBAAgB,eAAe;AA4EtC,mBAGW,KAHX;AArEa,SAAR,iBAAkC;AACxC,QAAM,aAAa,cAAe,cAAe;AACjD,QAAM,cAAc,OAAO;AAC3B,QAAM,mBAAmB,OAAO;AAChC,QAAM,eAAe,OAAO;AAC5B,QAAM,EAAE,OAAO,MAAM,GAAG,IAAI,UAAW,CAAE,WAAY;AACpD,UAAM,EAAE,oBAAoB,kBAAkB,qBAAqB,IAClE,OAAQ,WAAY;AACrB,WAAO;AAAA,MACN,OAAO,qBAAqB;AAAA,MAC5B,MAAM,mBAAmB;AAAA,MACzB,IAAI,iBAAiB;AAAA,IACtB;AAAA,EACD,GAAG,CAAC,CAAE;AACN,QAAM,EAAE,iBAAiB,IAAI,YAAa,SAAU;AAEpD,kBAAiB,MAAM;AACtB,UAAM,WAAW,YAAY;AAC7B,UAAM,gBAAgB,iBAAiB;AACvC,qBAAiB,UAAU;AAE3B,QACC,CAAE,YACF,kBAAkB,UAClB,kBAAkB,SAClB,CAAE,aAAa,SACd;AACD;AAAA,IACD;AAEA,UAAM,EAAE,gBAAgB,cAAc,mBAAmB,IACxD,aAAa;AACd,UAAM,UAAU,QAAS,eAAe,KAAM;AAC9C,UAAM,yBAAyB;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACA,UAAM,uBAAuB;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,aAAS;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACA,iBAAa,UAAU;AAAA,MACtB,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd;AAAA,IACD;AAAA,EACD,GAAG,CAAE,KAAM,CAAE;AAEb,QAAM,kBAAkB,CAAE,UAAW;AACpC,UAAM,EAAE,gBAAgB,cAAc,mBAAmB,IACxD,MAAM;AACP,iBAAa,UAAU;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SACC,iCACC;AAAA;AAAA,MAAC;AAAA;AAAA,QAEA,QAAS,oBAAC,WAAM,SAAU,gBAAiB,UAAW,IAAK;AAAA,QAEzD,aAAI,mBAAoB;AAAA;AAAA,IAC3B;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACA,cAAa;AAAA,QACb,KAAI;AAAA,QACJ,KAAM;AAAA,QACN;AAAA,QACA,UAAW,CAAE,UAAW;AACvB,0BAAiB,KAAM;AACvB,2BAAiB,UAAU,MAAM,OAAO;AACxC,2BAAkB,YAAY,MAAM,IAAI;AAAA,YACvC,SAAS,MAAM,OAAO;AAAA,YACtB,QAAQ;AAAA,YACR,WAAW;AAAA,UACZ,CAAE;AAAA,QACH;AAAA,QACA,SAAU;AAAA,QAGV,WAAY;AAAA,QACZ,SAAU;AAAA,QACV,WAAU;AAAA,QACV,IAAK,gBAAiB,UAAW;AAAA,QACjC,aAAc,GAAI,iCAAkC;AAAA;AAAA,IACrD;AAAA,KACD;AAEF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,123 @@
1
+ // packages/editor/src/components/post-text-editor/utils.js
2
+ import { diffChars } from "diff/lib/diff/character.js";
3
+ import { diffLines } from "diff/lib/diff/line.js";
4
+ var STRING_TOO_LARGE_THRESHOLD = 1e3;
5
+ function getDiff(oldValue, newValue) {
6
+ const maxStringLength = Math.max(oldValue.length, newValue.length);
7
+ if (maxStringLength <= STRING_TOO_LARGE_THRESHOLD) {
8
+ return diffChars(oldValue, newValue);
9
+ }
10
+ let start = 0;
11
+ const minStringLength = Math.min(oldValue.length, newValue.length);
12
+ while (start < minStringLength && oldValue[start] === newValue[start]) {
13
+ start++;
14
+ }
15
+ let oldEnd = oldValue.length;
16
+ let newEnd = newValue.length;
17
+ while (oldEnd > start && newEnd > start && oldValue[oldEnd - 1] === newValue[newEnd - 1]) {
18
+ oldEnd--;
19
+ newEnd--;
20
+ }
21
+ const oldChangedValue = oldValue.slice(start, oldEnd);
22
+ const newChangedValue = newValue.slice(start, newEnd);
23
+ const maxChangedStringLength = Math.max(
24
+ oldChangedValue.length,
25
+ newChangedValue.length
26
+ );
27
+ let changes;
28
+ if (maxChangedStringLength <= STRING_TOO_LARGE_THRESHOLD) {
29
+ changes = diffChars(oldChangedValue, newChangedValue);
30
+ } else {
31
+ changes = diffLines(oldChangedValue, newChangedValue);
32
+ }
33
+ if (start > 0) {
34
+ changes.unshift({ value: oldValue.slice(0, start) });
35
+ }
36
+ if (oldEnd < oldValue.length) {
37
+ changes.push({ value: oldValue.slice(oldEnd) });
38
+ }
39
+ return changes;
40
+ }
41
+ function clampCursorPosition(position, value) {
42
+ return Math.max(0, Math.min(value.length, position));
43
+ }
44
+ function getCursorOffsetFromCommonTextBeforeCursor(oldValue, newValue, position) {
45
+ const oldValueBeforeCursor = oldValue.slice(0, position);
46
+ let low = 1;
47
+ let high = oldValueBeforeCursor.length;
48
+ let cursorOffset;
49
+ while (low <= high) {
50
+ const length = Math.floor((low + high) / 2);
51
+ const index = newValue.indexOf(
52
+ oldValueBeforeCursor.slice(oldValueBeforeCursor.length - length)
53
+ );
54
+ if (index === -1) {
55
+ high = length - 1;
56
+ } else {
57
+ cursorOffset = index + length;
58
+ low = length + 1;
59
+ }
60
+ }
61
+ return cursorOffset;
62
+ }
63
+ function adjustPosition(position, changes, oldValue, newValue) {
64
+ let oldIndex = 0;
65
+ let newIndex = 0;
66
+ let adjustedPosition = position;
67
+ for (let i = 0; i < changes.length; i++) {
68
+ const change = changes[i];
69
+ if (!change.added && !change.removed) {
70
+ oldIndex += change.value.length;
71
+ newIndex += change.value.length;
72
+ continue;
73
+ }
74
+ const oldStart = oldIndex;
75
+ const newStart = newIndex;
76
+ let oldLength = 0;
77
+ let newLength = 0;
78
+ while (i < changes.length && (changes[i].added || changes[i].removed)) {
79
+ if (changes[i].removed) {
80
+ oldLength += changes[i].value.length;
81
+ } else {
82
+ newLength += changes[i].value.length;
83
+ }
84
+ i++;
85
+ }
86
+ i--;
87
+ const oldEnd = oldStart + oldLength;
88
+ const newEnd = newStart + newLength;
89
+ if (position < oldStart) {
90
+ break;
91
+ }
92
+ if (oldLength === 0) {
93
+ adjustedPosition += newLength;
94
+ } else if (position <= oldEnd) {
95
+ const cursorOffset = getCursorOffsetFromCommonTextBeforeCursor(
96
+ oldValue.slice(oldStart, oldEnd),
97
+ newValue.slice(newStart, newEnd),
98
+ position - oldStart
99
+ );
100
+ adjustedPosition = cursorOffset === void 0 ? newEnd : newStart + cursorOffset;
101
+ break;
102
+ } else {
103
+ adjustedPosition += newLength - oldLength;
104
+ }
105
+ oldIndex += oldLength;
106
+ newIndex += newLength;
107
+ }
108
+ return clampCursorPosition(adjustedPosition, newValue);
109
+ }
110
+ function getAdjustedCursorPosition(position, oldValue, newValue) {
111
+ return adjustPosition(
112
+ position,
113
+ getDiff(oldValue, newValue),
114
+ oldValue,
115
+ newValue
116
+ );
117
+ }
118
+ export {
119
+ adjustPosition,
120
+ getAdjustedCursorPosition,
121
+ getDiff
122
+ };
123
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/post-text-editor/utils.js"],
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport { diffChars } from 'diff/lib/diff/character.js';\nimport { diffLines } from 'diff/lib/diff/line.js';\n\n// Character diffing (Myers) is cheap when the edit distance is small but\n// degrades toward O(n^2) as the two strings diverge: a full replacement of\n// ~10k differing chars blocks the main thread for seconds. Cap the input handed\n// to diffChars so the worst case stays small (~100ms); larger windows fall back\n// to a line diff, with the cursor remapped by getCursorOffsetFromCommonText...\nconst STRING_TOO_LARGE_THRESHOLD = 1000;\n\n/**\n * Diffs two strings into a list of `{ value, added?, removed? }` change parts.\n *\n * @param {string} oldValue The previous string.\n * @param {string} newValue The next string.\n * @return {Array<Object>} The diff change parts.\n */\nexport function getDiff( oldValue, newValue ) {\n\tconst maxStringLength = Math.max( oldValue.length, newValue.length );\n\n\tif ( maxStringLength <= STRING_TOO_LARGE_THRESHOLD ) {\n\t\treturn diffChars( oldValue, newValue );\n\t}\n\n\tlet start = 0;\n\tconst minStringLength = Math.min( oldValue.length, newValue.length );\n\n\twhile (\n\t\tstart < minStringLength &&\n\t\toldValue[ start ] === newValue[ start ]\n\t) {\n\t\tstart++;\n\t}\n\n\tlet oldEnd = oldValue.length;\n\tlet newEnd = newValue.length;\n\n\twhile (\n\t\toldEnd > start &&\n\t\tnewEnd > start &&\n\t\toldValue[ oldEnd - 1 ] === newValue[ newEnd - 1 ]\n\t) {\n\t\toldEnd--;\n\t\tnewEnd--;\n\t}\n\n\tconst oldChangedValue = oldValue.slice( start, oldEnd );\n\tconst newChangedValue = newValue.slice( start, newEnd );\n\tconst maxChangedStringLength = Math.max(\n\t\toldChangedValue.length,\n\t\tnewChangedValue.length\n\t);\n\tlet changes;\n\n\tif ( maxChangedStringLength <= STRING_TOO_LARGE_THRESHOLD ) {\n\t\tchanges = diffChars( oldChangedValue, newChangedValue );\n\t} else {\n\t\tchanges = diffLines( oldChangedValue, newChangedValue );\n\t}\n\n\tif ( start > 0 ) {\n\t\tchanges.unshift( { value: oldValue.slice( 0, start ) } );\n\t}\n\n\tif ( oldEnd < oldValue.length ) {\n\t\tchanges.push( { value: oldValue.slice( oldEnd ) } );\n\t}\n\n\treturn changes;\n}\n\nfunction clampCursorPosition( position, value ) {\n\treturn Math.max( 0, Math.min( value.length, position ) );\n}\n\n// A coarse (line-level) diff reports a whole changed region as one replacement,\n// which would otherwise snap the cursor to the region's end. Recover a precise\n// position by finding the longest run of text ending at the cursor that is\n// preserved in the replacement, then placing the cursor just past where that\n// run starts in the new text. This uses indexOf (near-linear in V8) rather than\n// a character diff, so it stays cheap even across a large single-line region.\nfunction getCursorOffsetFromCommonTextBeforeCursor(\n\toldValue,\n\tnewValue,\n\tposition\n) {\n\tconst oldValueBeforeCursor = oldValue.slice( 0, position );\n\tlet low = 1;\n\tlet high = oldValueBeforeCursor.length;\n\tlet cursorOffset;\n\n\twhile ( low <= high ) {\n\t\tconst length = Math.floor( ( low + high ) / 2 );\n\t\tconst index = newValue.indexOf(\n\t\t\toldValueBeforeCursor.slice( oldValueBeforeCursor.length - length )\n\t\t);\n\n\t\tif ( index === -1 ) {\n\t\t\thigh = length - 1;\n\t\t} else {\n\t\t\tcursorOffset = index + length;\n\t\t\tlow = length + 1;\n\t\t}\n\t}\n\n\treturn cursorOffset;\n}\n\n/**\n * Maps a cursor position from the old string to the new string given a diff.\n *\n * @param {number} position The cursor position in the old string.\n * @param {Array<Object>} changes The diff returned by `getDiff`.\n * @param {string} oldValue The previous string.\n * @param {string} newValue The next string.\n * @return {number} The adjusted cursor position in the new string.\n */\nexport function adjustPosition( position, changes, oldValue, newValue ) {\n\tlet oldIndex = 0;\n\tlet newIndex = 0;\n\tlet adjustedPosition = position;\n\n\tfor ( let i = 0; i < changes.length; i++ ) {\n\t\tconst change = changes[ i ];\n\t\tif ( ! change.added && ! change.removed ) {\n\t\t\toldIndex += change.value.length;\n\t\t\tnewIndex += change.value.length;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst oldStart = oldIndex;\n\t\tconst newStart = newIndex;\n\t\tlet oldLength = 0;\n\t\tlet newLength = 0;\n\n\t\twhile (\n\t\t\ti < changes.length &&\n\t\t\t( changes[ i ].added || changes[ i ].removed )\n\t\t) {\n\t\t\tif ( changes[ i ].removed ) {\n\t\t\t\toldLength += changes[ i ].value.length;\n\t\t\t} else {\n\t\t\t\tnewLength += changes[ i ].value.length;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\ti--;\n\n\t\tconst oldEnd = oldStart + oldLength;\n\t\tconst newEnd = newStart + newLength;\n\n\t\tif ( position < oldStart ) {\n\t\t\t// The cursor is before this change, so nothing here can move it.\n\t\t\tbreak;\n\t\t}\n\n\t\tif ( oldLength === 0 ) {\n\t\t\t// Pure insertion at or before the cursor: shift it right by the\n\t\t\t// inserted length.\n\t\t\tadjustedPosition += newLength;\n\t\t} else if ( position <= oldEnd ) {\n\t\t\t// The cursor falls inside a replaced region; recover its precise\n\t\t\t// spot from the text preserved around it.\n\t\t\tconst cursorOffset = getCursorOffsetFromCommonTextBeforeCursor(\n\t\t\t\toldValue.slice( oldStart, oldEnd ),\n\t\t\t\tnewValue.slice( newStart, newEnd ),\n\t\t\t\tposition - oldStart\n\t\t\t);\n\n\t\t\tadjustedPosition =\n\t\t\t\tcursorOffset === undefined ? newEnd : newStart + cursorOffset;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// The cursor is after this change: shift it by the net length delta.\n\t\t\tadjustedPosition += newLength - oldLength;\n\t\t}\n\n\t\toldIndex += oldLength;\n\t\tnewIndex += newLength;\n\t}\n\n\treturn clampCursorPosition( adjustedPosition, newValue );\n}\n\n/**\n * Diffs `oldValue` against `newValue` and maps a cursor `position` from the old\n * string to the new one.\n *\n * @param {number} position The cursor position in the old string.\n * @param {string} oldValue The previous string.\n * @param {string} newValue The next string.\n * @return {number} The adjusted cursor position in the new string.\n */\nexport function getAdjustedCursorPosition( position, oldValue, newValue ) {\n\treturn adjustPosition(\n\t\tposition,\n\t\tgetDiff( oldValue, newValue ),\n\t\toldValue,\n\t\tnewValue\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -37,7 +37,7 @@ function PostURL({ onClose }) {
37
37
  postSlug: safeDecodeURIComponent(
38
38
  select(editorStore).getEditedPostSlug()
39
39
  ),
40
- viewPostLabel: postType?.labels.view_item,
40
+ viewPostLabel: postType?.labels?.view_item,
41
41
  postLink: post.link,
42
42
  permalinkPrefix: permalinkParts?.prefix,
43
43
  permalinkSuffix: permalinkParts?.suffix,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-url/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { safeDecodeURIComponent, cleanForSlug } from '@wordpress/url';\nimport { useState, createInterpolateElement } from '@wordpress/element';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tExternalLink,\n\tButton,\n\t__experimentalInputControl as InputControl,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n\t__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { copySmall } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useCopyToClipboard, useInstanceId } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\n/**\n * Renders the `PostURL` component.\n *\n * @example\n * ```jsx\n * <PostURL />\n * ```\n *\n * @param {{ onClose: () => void }} props The props for the component.\n * @param {() => void} props.onClose Callback function to be executed when the popover is closed.\n *\n * @return {React.ReactNode} The rendered PostURL component.\n */\nexport default function PostURL( { onClose } ) {\n\tconst {\n\t\tisEditable,\n\t\tpostSlug,\n\t\tpostLink,\n\t\tpermalinkPrefix,\n\t\tpermalinkSuffix,\n\t\tpermalink,\n\t} = useSelect( ( select ) => {\n\t\tconst post = select( editorStore ).getCurrentPost();\n\t\tconst postTypeSlug = select( editorStore ).getCurrentPostType();\n\t\tconst postType = select( coreStore ).getPostType( postTypeSlug );\n\t\tconst permalinkParts = select( editorStore ).getPermalinkParts();\n\t\tconst hasPublishAction = post?._links?.[ 'wp:action-publish' ] ?? false;\n\n\t\treturn {\n\t\t\tisEditable:\n\t\t\t\tselect( editorStore ).isPermalinkEditable() && hasPublishAction,\n\t\t\tpostSlug: safeDecodeURIComponent(\n\t\t\t\tselect( editorStore ).getEditedPostSlug()\n\t\t\t),\n\t\t\tviewPostLabel: postType?.labels.view_item,\n\t\t\tpostLink: post.link,\n\t\t\tpermalinkPrefix: permalinkParts?.prefix,\n\t\t\tpermalinkSuffix: permalinkParts?.suffix,\n\t\t\tpermalink: safeDecodeURIComponent(\n\t\t\t\tselect( editorStore ).getPermalink()\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst [ forceEmptyField, setForceEmptyField ] = useState( false );\n\tconst copyButtonRef = useCopyToClipboard( permalink, () => {\n\t\tcreateNotice( 'info', __( 'Copied Permalink to clipboard.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t} );\n\tconst postUrlSlugDescriptionId =\n\t\t'editor-post-url__slug-description-' + useInstanceId( PostURL );\n\n\treturn (\n\t\t<div className=\"editor-post-url\">\n\t\t\t<InspectorPopoverHeader\n\t\t\t\ttitle={ __( 'Slug' ) }\n\t\t\t\tonClose={ onClose }\n\t\t\t/>\n\t\t\t<VStack spacing={ 3 }>\n\t\t\t\t{ isEditable && (\n\t\t\t\t\t<p className=\"editor-post-url__intro\">\n\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t'<span>Customize the last part of the Permalink.</span> <a>Learn more.</a>'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tspan: <span id={ postUrlSlugDescriptionId } />,\n\t\t\t\t\t\t\t\ta: (\n\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/documentation/article/page-post-settings-sidebar/#permalink'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t\t<div>\n\t\t\t\t\t{ isEditable && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t<InputControlPrefixWrapper>\n\t\t\t\t\t\t\t\t\t\t/\n\t\t\t\t\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t<InputControlSuffixWrapper variant=\"control\">\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\ticon={ copySmall }\n\t\t\t\t\t\t\t\t\t\t\tref={ copyButtonRef }\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\tlabel=\"Copy\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</InputControlSuffixWrapper>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabel={ __( 'Slug' ) }\n\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\tvalue={ forceEmptyField ? '' : postSlug }\n\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclassName=\"editor-post-url__input\"\n\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\teditPost( { slug: newValue } );\n\t\t\t\t\t\t\t\t\t// When we delete the field the permalink gets\n\t\t\t\t\t\t\t\t\t// reverted to the original value.\n\t\t\t\t\t\t\t\t\t// The forceEmptyField logic allows the user to have\n\t\t\t\t\t\t\t\t\t// the field temporarily empty while typing.\n\t\t\t\t\t\t\t\t\tif ( ! newValue ) {\n\t\t\t\t\t\t\t\t\t\tif ( ! forceEmptyField ) {\n\t\t\t\t\t\t\t\t\t\t\tsetForceEmptyField( true );\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( forceEmptyField ) {\n\t\t\t\t\t\t\t\t\t\tsetForceEmptyField( false );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tonBlur={ ( event ) => {\n\t\t\t\t\t\t\t\t\teditPost( {\n\t\t\t\t\t\t\t\t\t\tslug: cleanForSlug(\n\t\t\t\t\t\t\t\t\t\t\tevent.target.value\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\tif ( forceEmptyField ) {\n\t\t\t\t\t\t\t\t\t\tsetForceEmptyField( false );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taria-describedby={ postUrlSlugDescriptionId }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p className=\"editor-post-url__permalink\">\n\t\t\t\t\t\t\t\t<span className=\"editor-post-url__permalink-visual-label\">\n\t\t\t\t\t\t\t\t\t{ __( 'Permalink:' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\tclassName=\"editor-post-url__link\"\n\t\t\t\t\t\t\t\t\thref={ postLink }\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span className=\"editor-post-url__link-prefix\">\n\t\t\t\t\t\t\t\t\t\t{ permalinkPrefix }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span className=\"editor-post-url__link-slug\">\n\t\t\t\t\t\t\t\t\t\t{ postSlug }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span className=\"editor-post-url__link-suffix\">\n\t\t\t\t\t\t\t\t\t\t{ permalinkSuffix }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! isEditable && (\n\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\tclassName=\"editor-post-url__link\"\n\t\t\t\t\t\t\thref={ postLink }\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ postLink }\n\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,WAAW,mBAAmB;AACvC,SAAS,wBAAwB,oBAAoB;AACrD,SAAS,UAAU,gCAAgC;AACnD,SAAS,wCAAwC,8BAA8B;AAC/E,SAAS,UAAU;AACnB;AAAA,EACC;AAAA,EACA;AAAA,EACA,8BAA8B;AAAA,EAC9B,2CAA2C;AAAA,EAC3C,2CAA2C;AAAA,EAC3C,wBAAwB;AAAA,OAClB;AACP,SAAS,SAAS,oBAAoB;AACtC,SAAS,iBAAiB;AAC1B,SAAS,SAAS,iBAAiB;AACnC,SAAS,oBAAoB,qBAAqB;AAKlD,SAAS,SAAS,mBAAmB;AA2DlC,SA0BG,UA1BH,KAmFK,YAnFL;AA5CY,SAAR,QAA0B,EAAE,QAAQ,GAAI;AAC9C,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI,UAAW,CAAE,WAAY;AAC5B,UAAM,OAAO,OAAQ,WAAY,EAAE,eAAe;AAClD,UAAM,eAAe,OAAQ,WAAY,EAAE,mBAAmB;AAC9D,UAAM,WAAW,OAAQ,SAAU,EAAE,YAAa,YAAa;AAC/D,UAAM,iBAAiB,OAAQ,WAAY,EAAE,kBAAkB;AAC/D,UAAM,mBAAmB,MAAM,SAAU,mBAAoB,KAAK;AAElE,WAAO;AAAA,MACN,YACC,OAAQ,WAAY,EAAE,oBAAoB,KAAK;AAAA,MAChD,UAAU;AAAA,QACT,OAAQ,WAAY,EAAE,kBAAkB;AAAA,MACzC;AAAA,MACA,eAAe,UAAU,OAAO;AAAA,MAChC,UAAU,KAAK;AAAA,MACf,iBAAiB,gBAAgB;AAAA,MACjC,iBAAiB,gBAAgB;AAAA,MACjC,WAAW;AAAA,QACV,OAAQ,WAAY,EAAE,aAAa;AAAA,MACpC;AAAA,IACD;AAAA,EACD,GAAG,CAAC,CAAE;AACN,QAAM,EAAE,SAAS,IAAI,YAAa,WAAY;AAC9C,QAAM,EAAE,aAAa,IAAI,YAAa,YAAa;AACnD,QAAM,CAAE,iBAAiB,kBAAmB,IAAI,SAAU,KAAM;AAChE,QAAM,gBAAgB,mBAAoB,WAAW,MAAM;AAC1D,iBAAc,QAAQ,GAAI,gCAAiC,GAAG;AAAA,MAC7D,eAAe;AAAA,MACf,MAAM;AAAA,IACP,CAAE;AAAA,EACH,CAAE;AACF,QAAM,2BACL,uCAAuC,cAAe,OAAQ;AAE/D,SACC,qBAAC,SAAI,WAAU,mBACd;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,OAAQ,GAAI,MAAO;AAAA,QACnB;AAAA;AAAA,IACD;AAAA,IACA,qBAAC,UAAO,SAAU,GACf;AAAA,oBACD,oBAAC,OAAE,WAAU,0BACV;AAAA,QACD;AAAA,UACC;AAAA,QACD;AAAA,QACA;AAAA,UACC,MAAM,oBAAC,UAAK,IAAK,0BAA2B;AAAA,UAC5C,GACC;AAAA,YAAC;AAAA;AAAA,cACA,MAAO;AAAA,gBACN;AAAA,cACD;AAAA;AAAA,UACD;AAAA,QAEF;AAAA,MACD,GACD;AAAA,MAED,qBAAC,SACE;AAAA,sBACD,iCACC;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,uBAAqB;AAAA,cACrB,QACC,oBAAC,6BAA0B,eAE3B;AAAA,cAED,QACC,oBAAC,6BAA0B,SAAQ,WAClC;AAAA,gBAAC;AAAA;AAAA,kBACA,MAAO;AAAA,kBACP,KAAM;AAAA,kBACN,MAAK;AAAA,kBACL,OAAM;AAAA;AAAA,cACP,GACD;AAAA,cAED,OAAQ,GAAI,MAAO;AAAA,cACnB,qBAAmB;AAAA,cACnB,OAAQ,kBAAkB,KAAK;AAAA,cAC/B,cAAa;AAAA,cACb,YAAW;AAAA,cACX,MAAK;AAAA,cACL,WAAU;AAAA,cACV,UAAW,CAAE,aAAc;AAC1B,yBAAU,EAAE,MAAM,SAAS,CAAE;AAK7B,oBAAK,CAAE,UAAW;AACjB,sBAAK,CAAE,iBAAkB;AACxB,uCAAoB,IAAK;AAAA,kBAC1B;AACA;AAAA,gBACD;AACA,oBAAK,iBAAkB;AACtB,qCAAoB,KAAM;AAAA,gBAC3B;AAAA,cACD;AAAA,cACA,QAAS,CAAE,UAAW;AACrB,yBAAU;AAAA,kBACT,MAAM;AAAA,oBACL,MAAM,OAAO;AAAA,kBACd;AAAA,gBACD,CAAE;AACF,oBAAK,iBAAkB;AACtB,qCAAoB,KAAM;AAAA,gBAC3B;AAAA,cACD;AAAA,cACA,oBAAmB;AAAA;AAAA,UACpB;AAAA,UACA,qBAAC,OAAE,WAAU,8BACZ;AAAA,gCAAC,UAAK,WAAU,2CACb,aAAI,YAAa,GACpB;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACA,WAAU;AAAA,gBACV,MAAO;AAAA,gBACP,QAAO;AAAA,gBAEP;AAAA,sCAAC,UAAK,WAAU,gCACb,2BACH;AAAA,kBACA,oBAAC,UAAK,WAAU,8BACb,oBACH;AAAA,kBACA,oBAAC,UAAK,WAAU,gCACb,2BACH;AAAA;AAAA;AAAA,YACD;AAAA,aACD;AAAA,WACD;AAAA,QAEC,CAAE,cACH;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,MAAO;AAAA,YACP,QAAO;AAAA,YAEL;AAAA;AAAA,QACH;AAAA,SAEF;AAAA,OACD;AAAA,KACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { safeDecodeURIComponent, cleanForSlug } from '@wordpress/url';\nimport { useState, createInterpolateElement } from '@wordpress/element';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tExternalLink,\n\tButton,\n\t__experimentalInputControl as InputControl,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n\t__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { copySmall } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useCopyToClipboard, useInstanceId } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\n/**\n * Renders the `PostURL` component.\n *\n * @example\n * ```jsx\n * <PostURL />\n * ```\n *\n * @param {{ onClose: () => void }} props The props for the component.\n * @param {() => void} props.onClose Callback function to be executed when the popover is closed.\n *\n * @return {React.ReactNode} The rendered PostURL component.\n */\nexport default function PostURL( { onClose } ) {\n\tconst {\n\t\tisEditable,\n\t\tpostSlug,\n\t\tpostLink,\n\t\tpermalinkPrefix,\n\t\tpermalinkSuffix,\n\t\tpermalink,\n\t} = useSelect( ( select ) => {\n\t\tconst post = select( editorStore ).getCurrentPost();\n\t\tconst postTypeSlug = select( editorStore ).getCurrentPostType();\n\t\tconst postType = select( coreStore ).getPostType( postTypeSlug );\n\t\tconst permalinkParts = select( editorStore ).getPermalinkParts();\n\t\tconst hasPublishAction = post?._links?.[ 'wp:action-publish' ] ?? false;\n\n\t\treturn {\n\t\t\tisEditable:\n\t\t\t\tselect( editorStore ).isPermalinkEditable() && hasPublishAction,\n\t\t\tpostSlug: safeDecodeURIComponent(\n\t\t\t\tselect( editorStore ).getEditedPostSlug()\n\t\t\t),\n\t\t\tviewPostLabel: postType?.labels?.view_item,\n\t\t\tpostLink: post.link,\n\t\t\tpermalinkPrefix: permalinkParts?.prefix,\n\t\t\tpermalinkSuffix: permalinkParts?.suffix,\n\t\t\tpermalink: safeDecodeURIComponent(\n\t\t\t\tselect( editorStore ).getPermalink()\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst [ forceEmptyField, setForceEmptyField ] = useState( false );\n\tconst copyButtonRef = useCopyToClipboard( permalink, () => {\n\t\tcreateNotice( 'info', __( 'Copied Permalink to clipboard.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t} );\n\tconst postUrlSlugDescriptionId =\n\t\t'editor-post-url__slug-description-' + useInstanceId( PostURL );\n\n\treturn (\n\t\t<div className=\"editor-post-url\">\n\t\t\t<InspectorPopoverHeader\n\t\t\t\ttitle={ __( 'Slug' ) }\n\t\t\t\tonClose={ onClose }\n\t\t\t/>\n\t\t\t<VStack spacing={ 3 }>\n\t\t\t\t{ isEditable && (\n\t\t\t\t\t<p className=\"editor-post-url__intro\">\n\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t'<span>Customize the last part of the Permalink.</span> <a>Learn more.</a>'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tspan: <span id={ postUrlSlugDescriptionId } />,\n\t\t\t\t\t\t\t\ta: (\n\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/documentation/article/page-post-settings-sidebar/#permalink'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t\t<div>\n\t\t\t\t\t{ isEditable && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t<InputControlPrefixWrapper>\n\t\t\t\t\t\t\t\t\t\t/\n\t\t\t\t\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t<InputControlSuffixWrapper variant=\"control\">\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\ticon={ copySmall }\n\t\t\t\t\t\t\t\t\t\t\tref={ copyButtonRef }\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\tlabel=\"Copy\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</InputControlSuffixWrapper>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabel={ __( 'Slug' ) }\n\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\tvalue={ forceEmptyField ? '' : postSlug }\n\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclassName=\"editor-post-url__input\"\n\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\teditPost( { slug: newValue } );\n\t\t\t\t\t\t\t\t\t// When we delete the field the permalink gets\n\t\t\t\t\t\t\t\t\t// reverted to the original value.\n\t\t\t\t\t\t\t\t\t// The forceEmptyField logic allows the user to have\n\t\t\t\t\t\t\t\t\t// the field temporarily empty while typing.\n\t\t\t\t\t\t\t\t\tif ( ! newValue ) {\n\t\t\t\t\t\t\t\t\t\tif ( ! forceEmptyField ) {\n\t\t\t\t\t\t\t\t\t\t\tsetForceEmptyField( true );\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( forceEmptyField ) {\n\t\t\t\t\t\t\t\t\t\tsetForceEmptyField( false );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tonBlur={ ( event ) => {\n\t\t\t\t\t\t\t\t\teditPost( {\n\t\t\t\t\t\t\t\t\t\tslug: cleanForSlug(\n\t\t\t\t\t\t\t\t\t\t\tevent.target.value\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\tif ( forceEmptyField ) {\n\t\t\t\t\t\t\t\t\t\tsetForceEmptyField( false );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taria-describedby={ postUrlSlugDescriptionId }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p className=\"editor-post-url__permalink\">\n\t\t\t\t\t\t\t\t<span className=\"editor-post-url__permalink-visual-label\">\n\t\t\t\t\t\t\t\t\t{ __( 'Permalink:' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\tclassName=\"editor-post-url__link\"\n\t\t\t\t\t\t\t\t\thref={ postLink }\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span className=\"editor-post-url__link-prefix\">\n\t\t\t\t\t\t\t\t\t\t{ permalinkPrefix }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span className=\"editor-post-url__link-slug\">\n\t\t\t\t\t\t\t\t\t\t{ postSlug }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span className=\"editor-post-url__link-suffix\">\n\t\t\t\t\t\t\t\t\t\t{ permalinkSuffix }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! isEditable && (\n\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\tclassName=\"editor-post-url__link\"\n\t\t\t\t\t\t\thref={ postLink }\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ postLink }\n\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -15,7 +15,7 @@ function PostViewLink() {
15
15
  return {
16
16
  permalink: select(editorStore).getPermalink(),
17
17
  isPublished: select(editorStore).isCurrentPostPublished(),
18
- label: postType?.labels.view_item,
18
+ label: postType?.labels?.view_item,
19
19
  hasLoaded: !!postType,
20
20
  showIconLabels: get("core", "showIconLabels")
21
21
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-view-link/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { external } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function PostViewLink() {\n\tconst { hasLoaded, permalink, isPublished, label, showIconLabels } =\n\t\tuseSelect( ( select ) => {\n\t\t\t// Grab post type to retrieve the view_item label.\n\t\t\tconst postTypeSlug = select( editorStore ).getCurrentPostType();\n\t\t\tconst postType = select( coreStore ).getPostType( postTypeSlug );\n\t\t\tconst { get } = select( preferencesStore );\n\n\t\t\treturn {\n\t\t\t\tpermalink: select( editorStore ).getPermalink(),\n\t\t\t\tisPublished: select( editorStore ).isCurrentPostPublished(),\n\t\t\t\tlabel: postType?.labels.view_item,\n\t\t\t\thasLoaded: !! postType,\n\t\t\t\tshowIconLabels: get( 'core', 'showIconLabels' ),\n\t\t\t};\n\t\t}, [] );\n\n\t// Only render the view button if the post is published and has a permalink.\n\tif ( ! isPublished || ! permalink || ! hasLoaded ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\ticon={ external }\n\t\t\tlabel={ label || __( 'View post' ) }\n\t\t\thref={ permalink }\n\t\t\ttarget=\"_blank\"\n\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\tsize=\"compact\"\n\t\t/>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB,SAAS,gBAAgB;AACzB,SAAS,SAAS,iBAAiB;AACnC,SAAS,iBAAiB;AAC1B,SAAS,SAAS,wBAAwB;AAK1C,SAAS,SAAS,mBAAmB;AAyBnC;AAvBa,SAAR,eAAgC;AACtC,QAAM,EAAE,WAAW,WAAW,aAAa,OAAO,eAAe,IAChE,UAAW,CAAE,WAAY;AAExB,UAAM,eAAe,OAAQ,WAAY,EAAE,mBAAmB;AAC9D,UAAM,WAAW,OAAQ,SAAU,EAAE,YAAa,YAAa;AAC/D,UAAM,EAAE,IAAI,IAAI,OAAQ,gBAAiB;AAEzC,WAAO;AAAA,MACN,WAAW,OAAQ,WAAY,EAAE,aAAa;AAAA,MAC9C,aAAa,OAAQ,WAAY,EAAE,uBAAuB;AAAA,MAC1D,OAAO,UAAU,OAAO;AAAA,MACxB,WAAW,CAAC,CAAE;AAAA,MACd,gBAAgB,IAAK,QAAQ,gBAAiB;AAAA,IAC/C;AAAA,EACD,GAAG,CAAC,CAAE;AAGP,MAAK,CAAE,eAAe,CAAE,aAAa,CAAE,WAAY;AAClD,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,MAAO;AAAA,MACP,OAAQ,SAAS,GAAI,WAAY;AAAA,MACjC,MAAO;AAAA,MACP,QAAO;AAAA,MACP,aAAc,CAAE;AAAA,MAChB,MAAK;AAAA;AAAA,EACN;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { external } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function PostViewLink() {\n\tconst { hasLoaded, permalink, isPublished, label, showIconLabels } =\n\t\tuseSelect( ( select ) => {\n\t\t\t// Grab post type to retrieve the view_item label.\n\t\t\tconst postTypeSlug = select( editorStore ).getCurrentPostType();\n\t\t\tconst postType = select( coreStore ).getPostType( postTypeSlug );\n\t\t\tconst { get } = select( preferencesStore );\n\n\t\t\treturn {\n\t\t\t\tpermalink: select( editorStore ).getPermalink(),\n\t\t\t\tisPublished: select( editorStore ).isCurrentPostPublished(),\n\t\t\t\tlabel: postType?.labels?.view_item,\n\t\t\t\thasLoaded: !! postType,\n\t\t\t\tshowIconLabels: get( 'core', 'showIconLabels' ),\n\t\t\t};\n\t\t}, [] );\n\n\t// Only render the view button if the post is published and has a permalink.\n\tif ( ! isPublished || ! permalink || ! hasLoaded ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\ticon={ external }\n\t\t\tlabel={ label || __( 'View post' ) }\n\t\t\thref={ permalink }\n\t\t\ttarget=\"_blank\"\n\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\tsize=\"compact\"\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB,SAAS,gBAAgB;AACzB,SAAS,SAAS,iBAAiB;AACnC,SAAS,iBAAiB;AAC1B,SAAS,SAAS,wBAAwB;AAK1C,SAAS,SAAS,mBAAmB;AAyBnC;AAvBa,SAAR,eAAgC;AACtC,QAAM,EAAE,WAAW,WAAW,aAAa,OAAO,eAAe,IAChE,UAAW,CAAE,WAAY;AAExB,UAAM,eAAe,OAAQ,WAAY,EAAE,mBAAmB;AAC9D,UAAM,WAAW,OAAQ,SAAU,EAAE,YAAa,YAAa;AAC/D,UAAM,EAAE,IAAI,IAAI,OAAQ,gBAAiB;AAEzC,WAAO;AAAA,MACN,WAAW,OAAQ,WAAY,EAAE,aAAa;AAAA,MAC9C,aAAa,OAAQ,WAAY,EAAE,uBAAuB;AAAA,MAC1D,OAAO,UAAU,QAAQ;AAAA,MACzB,WAAW,CAAC,CAAE;AAAA,MACd,gBAAgB,IAAK,QAAQ,gBAAiB;AAAA,IAC/C;AAAA,EACD,GAAG,CAAC,CAAE;AAGP,MAAK,CAAE,eAAe,CAAE,aAAa,CAAE,WAAY;AAClD,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,MAAO;AAAA,MACP,OAAQ,SAAS,GAAI,WAAY;AAAA,MACjC,MAAO;AAAA,MACP,QAAO;AAAA,MACP,aAAc,CAAE;AAAA,MAChB,MAAK;AAAA;AAAA,EACN;AAEF;",
6
6
  "names": []
7
7
  }
@@ -68,7 +68,6 @@ function PostVisibility({ onClose }) {
68
68
  placeholder: __("Use a secure password"),
69
69
  type: "text",
70
70
  id: `editor-post-visibility__password-input-${instanceId}`,
71
- __next40pxDefaultSize: true,
72
71
  maxLength: 255
73
72
  }
74
73
  )
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-visibility/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport {\n\tTextControl,\n\tRadioControl,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { VISIBILITY_OPTIONS } from './utils';\nimport { store as editorStore } from '../../store';\n\n/**\n * Allows users to set the visibility of a post.\n *\n * @param {Object} props The component props.\n * @param {Function} props.onClose Function to call when the popover is closed.\n * @return {React.ReactNode} The rendered component.\n */\nexport default function PostVisibility( { onClose } ) {\n\tconst instanceId = useInstanceId( PostVisibility );\n\n\tconst { status, visibility, password } = useSelect( ( select ) => ( {\n\t\tstatus: select( editorStore ).getEditedPostAttribute( 'status' ),\n\t\tvisibility: select( editorStore ).getEditedPostVisibility(),\n\t\tpassword: select( editorStore ).getEditedPostAttribute( 'password' ),\n\t} ) );\n\n\tconst { editPost } = useDispatch( editorStore );\n\n\tconst [ hasPassword, setHasPassword ] = useState( !! password );\n\n\tfunction updateVisibility( value ) {\n\t\tconst nextValues = {\n\t\t\tpublic: {\n\t\t\t\tstatus: visibility === 'private' ? 'draft' : status,\n\t\t\t\tpassword: '',\n\t\t\t},\n\t\t\tprivate: { status: 'private', password: '' },\n\t\t\tpassword: {\n\t\t\t\tstatus: visibility === 'private' ? 'draft' : status,\n\t\t\t\tpassword: password || '',\n\t\t\t},\n\t\t};\n\n\t\teditPost( nextValues[ value ] );\n\t\tsetHasPassword( value === 'password' );\n\t}\n\n\tconst updatePassword = ( value ) => {\n\t\teditPost( { password: value } );\n\t};\n\n\treturn (\n\t\t<div className=\"editor-post-visibility\">\n\t\t\t<InspectorPopoverHeader\n\t\t\t\ttitle={ __( 'Visibility' ) }\n\t\t\t\thelp={ __( 'Control how this post is viewed.' ) }\n\t\t\t\tonClose={ onClose }\n\t\t\t/>\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<RadioControl\n\t\t\t\t\tlabel={ __( 'Visibility' ) }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\toptions={ VISIBILITY_OPTIONS }\n\t\t\t\t\tselected={ hasPassword ? 'password' : visibility }\n\t\t\t\t\tonChange={ updateVisibility }\n\t\t\t\t/>\n\t\t\t\t{ hasPassword && (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Password' ) }\n\t\t\t\t\t\tonChange={ updatePassword }\n\t\t\t\t\t\tvalue={ password }\n\t\t\t\t\t\tplaceholder={ __( 'Use a secure password' ) }\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tid={ `editor-post-visibility__password-input-${ instanceId }` }\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tmaxLength={ 255 }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,gBAAgB;AACzB;AAAA,EACC;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,OAClB;AACP,SAAS,qBAAqB;AAC9B,SAAS,WAAW,mBAAmB;AACvC,SAAS,wCAAwC,8BAA8B;AAK/E,SAAS,0BAA0B;AACnC,SAAS,SAAS,mBAAmB;AA6ClC,cAKA,YALA;AApCY,SAAR,eAAiC,EAAE,QAAQ,GAAI;AACrD,QAAM,aAAa,cAAe,cAAe;AAEjD,QAAM,EAAE,QAAQ,YAAY,SAAS,IAAI,UAAW,CAAE,YAAc;AAAA,IACnE,QAAQ,OAAQ,WAAY,EAAE,uBAAwB,QAAS;AAAA,IAC/D,YAAY,OAAQ,WAAY,EAAE,wBAAwB;AAAA,IAC1D,UAAU,OAAQ,WAAY,EAAE,uBAAwB,UAAW;AAAA,EACpE,EAAI;AAEJ,QAAM,EAAE,SAAS,IAAI,YAAa,WAAY;AAE9C,QAAM,CAAE,aAAa,cAAe,IAAI,SAAU,CAAC,CAAE,QAAS;AAE9D,WAAS,iBAAkB,OAAQ;AAClC,UAAM,aAAa;AAAA,MAClB,QAAQ;AAAA,QACP,QAAQ,eAAe,YAAY,UAAU;AAAA,QAC7C,UAAU;AAAA,MACX;AAAA,MACA,SAAS,EAAE,QAAQ,WAAW,UAAU,GAAG;AAAA,MAC3C,UAAU;AAAA,QACT,QAAQ,eAAe,YAAY,UAAU;AAAA,QAC7C,UAAU,YAAY;AAAA,MACvB;AAAA,IACD;AAEA,aAAU,WAAY,KAAM,CAAE;AAC9B,mBAAgB,UAAU,UAAW;AAAA,EACtC;AAEA,QAAM,iBAAiB,CAAE,UAAW;AACnC,aAAU,EAAE,UAAU,MAAM,CAAE;AAAA,EAC/B;AAEA,SACC,qBAAC,SAAI,WAAU,0BACd;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,OAAQ,GAAI,YAAa;AAAA,QACzB,MAAO,GAAI,kCAAmC;AAAA,QAC9C;AAAA;AAAA,IACD;AAAA,IACA,qBAAC,UAAO,SAAU,GACjB;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,YAAa;AAAA,UACzB,qBAAmB;AAAA,UACnB,SAAU;AAAA,UACV,UAAW,cAAc,aAAa;AAAA,UACtC,UAAW;AAAA;AAAA,MACZ;AAAA,MACE,eACD;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,UAAW;AAAA,UACvB,UAAW;AAAA,UACX,OAAQ;AAAA,UACR,aAAc,GAAI,uBAAwB;AAAA,UAC1C,MAAK;AAAA,UACL,IAAK,0CAA2C,UAAW;AAAA,UAC3D,uBAAqB;AAAA,UACrB,WAAY;AAAA;AAAA,MACb;AAAA,OAEF;AAAA,KACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport {\n\tTextControl,\n\tRadioControl,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { VISIBILITY_OPTIONS } from './utils';\nimport { store as editorStore } from '../../store';\n\n/**\n * Allows users to set the visibility of a post.\n *\n * @param {Object} props The component props.\n * @param {Function} props.onClose Function to call when the popover is closed.\n * @return {React.ReactNode} The rendered component.\n */\nexport default function PostVisibility( { onClose } ) {\n\tconst instanceId = useInstanceId( PostVisibility );\n\n\tconst { status, visibility, password } = useSelect( ( select ) => ( {\n\t\tstatus: select( editorStore ).getEditedPostAttribute( 'status' ),\n\t\tvisibility: select( editorStore ).getEditedPostVisibility(),\n\t\tpassword: select( editorStore ).getEditedPostAttribute( 'password' ),\n\t} ) );\n\n\tconst { editPost } = useDispatch( editorStore );\n\n\tconst [ hasPassword, setHasPassword ] = useState( !! password );\n\n\tfunction updateVisibility( value ) {\n\t\tconst nextValues = {\n\t\t\tpublic: {\n\t\t\t\tstatus: visibility === 'private' ? 'draft' : status,\n\t\t\t\tpassword: '',\n\t\t\t},\n\t\t\tprivate: { status: 'private', password: '' },\n\t\t\tpassword: {\n\t\t\t\tstatus: visibility === 'private' ? 'draft' : status,\n\t\t\t\tpassword: password || '',\n\t\t\t},\n\t\t};\n\n\t\teditPost( nextValues[ value ] );\n\t\tsetHasPassword( value === 'password' );\n\t}\n\n\tconst updatePassword = ( value ) => {\n\t\teditPost( { password: value } );\n\t};\n\n\treturn (\n\t\t<div className=\"editor-post-visibility\">\n\t\t\t<InspectorPopoverHeader\n\t\t\t\ttitle={ __( 'Visibility' ) }\n\t\t\t\thelp={ __( 'Control how this post is viewed.' ) }\n\t\t\t\tonClose={ onClose }\n\t\t\t/>\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<RadioControl\n\t\t\t\t\tlabel={ __( 'Visibility' ) }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\toptions={ VISIBILITY_OPTIONS }\n\t\t\t\t\tselected={ hasPassword ? 'password' : visibility }\n\t\t\t\t\tonChange={ updateVisibility }\n\t\t\t\t/>\n\t\t\t\t{ hasPassword && (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Password' ) }\n\t\t\t\t\t\tonChange={ updatePassword }\n\t\t\t\t\t\tvalue={ password }\n\t\t\t\t\t\tplaceholder={ __( 'Use a secure password' ) }\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tid={ `editor-post-visibility__password-input-${ instanceId }` }\n\t\t\t\t\t\tmaxLength={ 255 }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,gBAAgB;AACzB;AAAA,EACC;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,OAClB;AACP,SAAS,qBAAqB;AAC9B,SAAS,WAAW,mBAAmB;AACvC,SAAS,wCAAwC,8BAA8B;AAK/E,SAAS,0BAA0B;AACnC,SAAS,SAAS,mBAAmB;AA6ClC,cAKA,YALA;AApCY,SAAR,eAAiC,EAAE,QAAQ,GAAI;AACrD,QAAM,aAAa,cAAe,cAAe;AAEjD,QAAM,EAAE,QAAQ,YAAY,SAAS,IAAI,UAAW,CAAE,YAAc;AAAA,IACnE,QAAQ,OAAQ,WAAY,EAAE,uBAAwB,QAAS;AAAA,IAC/D,YAAY,OAAQ,WAAY,EAAE,wBAAwB;AAAA,IAC1D,UAAU,OAAQ,WAAY,EAAE,uBAAwB,UAAW;AAAA,EACpE,EAAI;AAEJ,QAAM,EAAE,SAAS,IAAI,YAAa,WAAY;AAE9C,QAAM,CAAE,aAAa,cAAe,IAAI,SAAU,CAAC,CAAE,QAAS;AAE9D,WAAS,iBAAkB,OAAQ;AAClC,UAAM,aAAa;AAAA,MAClB,QAAQ;AAAA,QACP,QAAQ,eAAe,YAAY,UAAU;AAAA,QAC7C,UAAU;AAAA,MACX;AAAA,MACA,SAAS,EAAE,QAAQ,WAAW,UAAU,GAAG;AAAA,MAC3C,UAAU;AAAA,QACT,QAAQ,eAAe,YAAY,UAAU;AAAA,QAC7C,UAAU,YAAY;AAAA,MACvB;AAAA,IACD;AAEA,aAAU,WAAY,KAAM,CAAE;AAC9B,mBAAgB,UAAU,UAAW;AAAA,EACtC;AAEA,QAAM,iBAAiB,CAAE,UAAW;AACnC,aAAU,EAAE,UAAU,MAAM,CAAE;AAAA,EAC/B;AAEA,SACC,qBAAC,SAAI,WAAU,0BACd;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,OAAQ,GAAI,YAAa;AAAA,QACzB,MAAO,GAAI,kCAAmC;AAAA,QAC9C;AAAA;AAAA,IACD;AAAA,IACA,qBAAC,UAAO,SAAU,GACjB;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,YAAa;AAAA,UACzB,qBAAmB;AAAA,UACnB,SAAU;AAAA,UACV,UAAW,cAAc,aAAa;AAAA,UACtC,UAAW;AAAA;AAAA,MACZ;AAAA,MACE,eACD;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,UAAW;AAAA,UACvB,UAAW;AAAA,UACX,OAAQ;AAAA,UACR,aAAc,GAAI,uBAAwB;AAAA,UAC1C,MAAK;AAAA,UACL,IAAK,0CAA2C,UAAW;AAAA,UAC3D,WAAY;AAAA;AAAA,MACb;AAAA,OAEF;AAAA,KACD;AAEF;",
6
6
  "names": []
7
7
  }
@@ -29,36 +29,54 @@ function DisableNonPageContentBlocks() {
29
29
  );
30
30
  const registry = useRegistry();
31
31
  useEffect(() => {
32
- const { setBlockEditingMode, unsetBlockEditingMode } = registry.dispatch(blockEditorStore);
32
+ const {
33
+ setBlockEditingMode,
34
+ unsetBlockEditingMode,
35
+ __unstableMarkNextChangeAsNotPersistent
36
+ } = registry.dispatch(blockEditorStore);
37
+ __unstableMarkNextChangeAsNotPersistent();
33
38
  setBlockEditingMode("", "disabled");
34
39
  return () => {
40
+ __unstableMarkNextChangeAsNotPersistent();
35
41
  unsetBlockEditingMode("");
36
42
  };
37
43
  }, [registry]);
38
44
  useEffect(() => {
39
- const { setBlockEditingMode, unsetBlockEditingMode } = registry.dispatch(blockEditorStore);
45
+ const {
46
+ setBlockEditingMode,
47
+ unsetBlockEditingMode,
48
+ __unstableMarkNextChangeAsNotPersistent
49
+ } = registry.dispatch(blockEditorStore);
40
50
  registry.batch(() => {
41
51
  for (const clientId of templateParts) {
52
+ __unstableMarkNextChangeAsNotPersistent();
42
53
  setBlockEditingMode(clientId, "contentOnly");
43
54
  }
44
55
  });
45
56
  return () => {
46
57
  registry.batch(() => {
47
58
  for (const clientId of templateParts) {
59
+ __unstableMarkNextChangeAsNotPersistent();
48
60
  unsetBlockEditingMode(clientId);
49
61
  }
50
62
  });
51
63
  };
52
64
  }, [templateParts, registry]);
53
65
  useEffect(() => {
54
- const { setBlockEditingMode, unsetBlockEditingMode } = registry.dispatch(blockEditorStore);
66
+ const {
67
+ setBlockEditingMode,
68
+ unsetBlockEditingMode,
69
+ __unstableMarkNextChangeAsNotPersistent
70
+ } = registry.dispatch(blockEditorStore);
55
71
  const contentOnlySet = new Set(contentOnlyIds);
56
72
  registry.batch(() => {
57
73
  for (const clientId of contentOnlyIds) {
74
+ __unstableMarkNextChangeAsNotPersistent();
58
75
  setBlockEditingMode(clientId, "contentOnly");
59
76
  }
60
77
  for (const clientId of templatePartChildren) {
61
78
  if (!contentOnlySet.has(clientId)) {
79
+ __unstableMarkNextChangeAsNotPersistent();
62
80
  setBlockEditingMode(clientId, "disabled");
63
81
  }
64
82
  }
@@ -66,10 +84,12 @@ function DisableNonPageContentBlocks() {
66
84
  return () => {
67
85
  registry.batch(() => {
68
86
  for (const clientId of contentOnlyIds) {
87
+ __unstableMarkNextChangeAsNotPersistent();
69
88
  unsetBlockEditingMode(clientId);
70
89
  }
71
90
  for (const clientId of templatePartChildren) {
72
91
  if (!contentOnlySet.has(clientId)) {
92
+ __unstableMarkNextChangeAsNotPersistent();
73
93
  unsetBlockEditingMode(clientId);
74
94
  }
75
95
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/provider/disable-non-page-content-blocks.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport usePostContentBlockTypes from './use-post-content-block-types';\n\n/**\n * Component that when rendered, makes it so that the site editor allows only\n * page content to be edited.\n */\nexport default function DisableNonPageContentBlocks() {\n\tconst postContentBlockTypes = usePostContentBlockTypes();\n\tconst { contentOnlyIds, templateParts } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getPostBlocksByName } = unlock( select( editorStore ) );\n\t\t\tconst { getBlocksByName } = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tcontentOnlyIds: getPostBlocksByName( postContentBlockTypes ),\n\t\t\t\ttemplateParts: getBlocksByName( 'core/template-part' ),\n\t\t\t};\n\t\t},\n\t\t[ postContentBlockTypes ]\n\t);\n\t// This is a separate `useSelect` because `templatePartChildren` is\n\t// derived via flatMap, which always produces a new array. Combining it\n\t// with the above subscription causes an infinite render loop: the new\n\t// array fails useSelect's shallow equality check \u2192 re-render \u2192 effect\n\t// fires setBlockEditingMode \u2192 store changes \u2192 useSelect re-runs \u2192 \u2026\n\tconst templatePartChildren = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockOrder } = select( blockEditorStore );\n\t\t\treturn templateParts.flatMap( ( clientId ) =>\n\t\t\t\tgetBlockOrder( clientId )\n\t\t\t);\n\t\t},\n\t\t[ templateParts ]\n\t);\n\n\tconst registry = useRegistry();\n\n\t// The effects below are split so that changes to one group of blocks\n\t// don't cause unnecessary set/unset cycles for the others. For example,\n\t// the root block ('') editing mode only needs to be set once.\n\t// Child blocks of templates and templateParts are also loaded separately,\n\t// so these are kept in separate effects.\n\tuseEffect( () => {\n\t\tconst { setBlockEditingMode, unsetBlockEditingMode } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\n\t\tsetBlockEditingMode( '', 'disabled' );\n\n\t\treturn () => {\n\t\t\tunsetBlockEditingMode( '' );\n\t\t};\n\t}, [ registry ] );\n\n\tuseEffect( () => {\n\t\tconst { setBlockEditingMode, unsetBlockEditingMode } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\n\t\tregistry.batch( () => {\n\t\t\tfor ( const clientId of templateParts ) {\n\t\t\t\tsetBlockEditingMode( clientId, 'contentOnly' );\n\t\t\t}\n\t\t} );\n\n\t\treturn () => {\n\t\t\tregistry.batch( () => {\n\t\t\t\tfor ( const clientId of templateParts ) {\n\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t}, [ templateParts, registry ] );\n\n\tuseEffect( () => {\n\t\tconst { setBlockEditingMode, unsetBlockEditingMode } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\n\t\tconst contentOnlySet = new Set( contentOnlyIds );\n\n\t\tregistry.batch( () => {\n\t\t\tfor ( const clientId of contentOnlyIds ) {\n\t\t\t\tsetBlockEditingMode( clientId, 'contentOnly' );\n\t\t\t}\n\t\t\tfor ( const clientId of templatePartChildren ) {\n\t\t\t\tif ( ! contentOnlySet.has( clientId ) ) {\n\t\t\t\t\tsetBlockEditingMode( clientId, 'disabled' );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\treturn () => {\n\t\t\tregistry.batch( () => {\n\t\t\t\tfor ( const clientId of contentOnlyIds ) {\n\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t}\n\t\t\t\tfor ( const clientId of templatePartChildren ) {\n\t\t\t\t\tif ( ! contentOnlySet.has( clientId ) ) {\n\t\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t}, [ contentOnlyIds, templatePartChildren, registry ] );\n\n\treturn null;\n}\n"],
5
- "mappings": ";AAGA,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,iBAAiB;AAK1B,SAAS,SAAS,mBAAmB;AACrC,SAAS,cAAc;AACvB,OAAO,8BAA8B;AAMtB,SAAR,8BAA+C;AACrD,QAAM,wBAAwB,yBAAyB;AACvD,QAAM,EAAE,gBAAgB,cAAc,IAAI;AAAA,IACzC,CAAE,WAAY;AACb,YAAM,EAAE,oBAAoB,IAAI,OAAQ,OAAQ,WAAY,CAAE;AAC9D,YAAM,EAAE,gBAAgB,IAAI,OAAQ,gBAAiB;AACrD,aAAO;AAAA,QACN,gBAAgB,oBAAqB,qBAAsB;AAAA,QAC3D,eAAe,gBAAiB,oBAAqB;AAAA,MACtD;AAAA,IACD;AAAA,IACA,CAAE,qBAAsB;AAAA,EACzB;AAMA,QAAM,uBAAuB;AAAA,IAC5B,CAAE,WAAY;AACb,YAAM,EAAE,cAAc,IAAI,OAAQ,gBAAiB;AACnD,aAAO,cAAc;AAAA,QAAS,CAAE,aAC/B,cAAe,QAAS;AAAA,MACzB;AAAA,IACD;AAAA,IACA,CAAE,aAAc;AAAA,EACjB;AAEA,QAAM,WAAW,YAAY;AAO7B,YAAW,MAAM;AAChB,UAAM,EAAE,qBAAqB,sBAAsB,IAClD,SAAS,SAAU,gBAAiB;AAErC,wBAAqB,IAAI,UAAW;AAEpC,WAAO,MAAM;AACZ,4BAAuB,EAAG;AAAA,IAC3B;AAAA,EACD,GAAG,CAAE,QAAS,CAAE;AAEhB,YAAW,MAAM;AAChB,UAAM,EAAE,qBAAqB,sBAAsB,IAClD,SAAS,SAAU,gBAAiB;AAErC,aAAS,MAAO,MAAM;AACrB,iBAAY,YAAY,eAAgB;AACvC,4BAAqB,UAAU,aAAc;AAAA,MAC9C;AAAA,IACD,CAAE;AAEF,WAAO,MAAM;AACZ,eAAS,MAAO,MAAM;AACrB,mBAAY,YAAY,eAAgB;AACvC,gCAAuB,QAAS;AAAA,QACjC;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD,GAAG,CAAE,eAAe,QAAS,CAAE;AAE/B,YAAW,MAAM;AAChB,UAAM,EAAE,qBAAqB,sBAAsB,IAClD,SAAS,SAAU,gBAAiB;AAErC,UAAM,iBAAiB,IAAI,IAAK,cAAe;AAE/C,aAAS,MAAO,MAAM;AACrB,iBAAY,YAAY,gBAAiB;AACxC,4BAAqB,UAAU,aAAc;AAAA,MAC9C;AACA,iBAAY,YAAY,sBAAuB;AAC9C,YAAK,CAAE,eAAe,IAAK,QAAS,GAAI;AACvC,8BAAqB,UAAU,UAAW;AAAA,QAC3C;AAAA,MACD;AAAA,IACD,CAAE;AAEF,WAAO,MAAM;AACZ,eAAS,MAAO,MAAM;AACrB,mBAAY,YAAY,gBAAiB;AACxC,gCAAuB,QAAS;AAAA,QACjC;AACA,mBAAY,YAAY,sBAAuB;AAC9C,cAAK,CAAE,eAAe,IAAK,QAAS,GAAI;AACvC,kCAAuB,QAAS;AAAA,UACjC;AAAA,QACD;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD,GAAG,CAAE,gBAAgB,sBAAsB,QAAS,CAAE;AAEtD,SAAO;AACR;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport usePostContentBlockTypes from './use-post-content-block-types';\n\n/**\n * Component that when rendered, makes it so that the site editor allows only\n * page content to be edited.\n */\nexport default function DisableNonPageContentBlocks() {\n\tconst postContentBlockTypes = usePostContentBlockTypes();\n\tconst { contentOnlyIds, templateParts } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getPostBlocksByName } = unlock( select( editorStore ) );\n\t\t\tconst { getBlocksByName } = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tcontentOnlyIds: getPostBlocksByName( postContentBlockTypes ),\n\t\t\t\ttemplateParts: getBlocksByName( 'core/template-part' ),\n\t\t\t};\n\t\t},\n\t\t[ postContentBlockTypes ]\n\t);\n\t// This is a separate `useSelect` because `templatePartChildren` is\n\t// derived via flatMap, which always produces a new array. Combining it\n\t// with the above subscription causes an infinite render loop: the new\n\t// array fails useSelect's shallow equality check re-render effect\n\t// fires setBlockEditingMode store changes useSelect re-runs …\n\tconst templatePartChildren = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockOrder } = select( blockEditorStore );\n\t\t\treturn templateParts.flatMap( ( clientId ) =>\n\t\t\t\tgetBlockOrder( clientId )\n\t\t\t);\n\t\t},\n\t\t[ templateParts ]\n\t);\n\n\tconst registry = useRegistry();\n\n\t// The effects below are split so that changes to one group of blocks\n\t// don't cause unnecessary set/unset cycles for the others. For example,\n\t// the root block ('') editing mode only needs to be set once.\n\t// Child blocks of templates and templateParts are also loaded separately,\n\t// so these are kept in separate effects.\n\tuseEffect( () => {\n\t\tconst {\n\t\t\tsetBlockEditingMode,\n\t\t\tunsetBlockEditingMode,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t} = registry.dispatch( blockEditorStore );\n\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetBlockEditingMode( '', 'disabled' );\n\n\t\treturn () => {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tunsetBlockEditingMode( '' );\n\t\t};\n\t}, [ registry ] );\n\n\tuseEffect( () => {\n\t\tconst {\n\t\t\tsetBlockEditingMode,\n\t\t\tunsetBlockEditingMode,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t} = registry.dispatch( blockEditorStore );\n\n\t\tregistry.batch( () => {\n\t\t\tfor ( const clientId of templateParts ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetBlockEditingMode( clientId, 'contentOnly' );\n\t\t\t}\n\t\t} );\n\n\t\treturn () => {\n\t\t\tregistry.batch( () => {\n\t\t\t\tfor ( const clientId of templateParts ) {\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t}, [ templateParts, registry ] );\n\n\tuseEffect( () => {\n\t\tconst {\n\t\t\tsetBlockEditingMode,\n\t\t\tunsetBlockEditingMode,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t} = registry.dispatch( blockEditorStore );\n\n\t\tconst contentOnlySet = new Set( contentOnlyIds );\n\n\t\tregistry.batch( () => {\n\t\t\tfor ( const clientId of contentOnlyIds ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetBlockEditingMode( clientId, 'contentOnly' );\n\t\t\t}\n\t\t\tfor ( const clientId of templatePartChildren ) {\n\t\t\t\tif ( ! contentOnlySet.has( clientId ) ) {\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tsetBlockEditingMode( clientId, 'disabled' );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\treturn () => {\n\t\t\tregistry.batch( () => {\n\t\t\t\tfor ( const clientId of contentOnlyIds ) {\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t}\n\t\t\t\tfor ( const clientId of templatePartChildren ) {\n\t\t\t\t\tif ( ! contentOnlySet.has( clientId ) ) {\n\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t}, [ contentOnlyIds, templatePartChildren, registry ] );\n\n\treturn null;\n}\n"],
5
+ "mappings": ";AAGA,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,iBAAiB;AAK1B,SAAS,SAAS,mBAAmB;AACrC,SAAS,cAAc;AACvB,OAAO,8BAA8B;AAMtB,SAAR,8BAA+C;AACrD,QAAM,wBAAwB,yBAAyB;AACvD,QAAM,EAAE,gBAAgB,cAAc,IAAI;AAAA,IACzC,CAAE,WAAY;AACb,YAAM,EAAE,oBAAoB,IAAI,OAAQ,OAAQ,WAAY,CAAE;AAC9D,YAAM,EAAE,gBAAgB,IAAI,OAAQ,gBAAiB;AACrD,aAAO;AAAA,QACN,gBAAgB,oBAAqB,qBAAsB;AAAA,QAC3D,eAAe,gBAAiB,oBAAqB;AAAA,MACtD;AAAA,IACD;AAAA,IACA,CAAE,qBAAsB;AAAA,EACzB;AAMA,QAAM,uBAAuB;AAAA,IAC5B,CAAE,WAAY;AACb,YAAM,EAAE,cAAc,IAAI,OAAQ,gBAAiB;AACnD,aAAO,cAAc;AAAA,QAAS,CAAE,aAC/B,cAAe,QAAS;AAAA,MACzB;AAAA,IACD;AAAA,IACA,CAAE,aAAc;AAAA,EACjB;AAEA,QAAM,WAAW,YAAY;AAO7B,YAAW,MAAM;AAChB,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI,SAAS,SAAU,gBAAiB;AAExC,4CAAwC;AACxC,wBAAqB,IAAI,UAAW;AAEpC,WAAO,MAAM;AACZ,8CAAwC;AACxC,4BAAuB,EAAG;AAAA,IAC3B;AAAA,EACD,GAAG,CAAE,QAAS,CAAE;AAEhB,YAAW,MAAM;AAChB,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI,SAAS,SAAU,gBAAiB;AAExC,aAAS,MAAO,MAAM;AACrB,iBAAY,YAAY,eAAgB;AACvC,gDAAwC;AACxC,4BAAqB,UAAU,aAAc;AAAA,MAC9C;AAAA,IACD,CAAE;AAEF,WAAO,MAAM;AACZ,eAAS,MAAO,MAAM;AACrB,mBAAY,YAAY,eAAgB;AACvC,kDAAwC;AACxC,gCAAuB,QAAS;AAAA,QACjC;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD,GAAG,CAAE,eAAe,QAAS,CAAE;AAE/B,YAAW,MAAM;AAChB,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI,SAAS,SAAU,gBAAiB;AAExC,UAAM,iBAAiB,IAAI,IAAK,cAAe;AAE/C,aAAS,MAAO,MAAM;AACrB,iBAAY,YAAY,gBAAiB;AACxC,gDAAwC;AACxC,4BAAqB,UAAU,aAAc;AAAA,MAC9C;AACA,iBAAY,YAAY,sBAAuB;AAC9C,YAAK,CAAE,eAAe,IAAK,QAAS,GAAI;AACvC,kDAAwC;AACxC,8BAAqB,UAAU,UAAW;AAAA,QAC3C;AAAA,MACD;AAAA,IACD,CAAE;AAEF,WAAO,MAAM;AACZ,eAAS,MAAO,MAAM;AACrB,mBAAY,YAAY,gBAAiB;AACxC,kDAAwC;AACxC,gCAAuB,QAAS;AAAA,QACjC;AACA,mBAAY,YAAY,sBAAuB;AAC9C,cAAK,CAAE,eAAe,IAAK,QAAS,GAAI;AACvC,oDAAwC;AACxC,kCAAuB,QAAS;AAAA,UACjC;AAAA,QACD;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD,GAAG,CAAE,gBAAgB,sBAAsB,QAAS,CAAE;AAEtD,SAAO;AACR;",
6
6
  "names": []
7
7
  }
@@ -251,7 +251,7 @@ var ExperimentalEditorProvider = withRegistryProvider(
251
251
  }
252
252
  return () => setEditedPost(null, null);
253
253
  }, [post.type, post.id, setEditedPost, removeNotice]);
254
- useEffect(() => {
254
+ useLayoutEffect(() => {
255
255
  updateEditorSettings(settings);
256
256
  }, [settings, updateEditorSettings]);
257
257
  useEffect(() => {