@wordpress/editor 14.40.2-next.v.202602271551.0 → 14.40.2

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 (481) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/components/collab-sidebar/add-comment.cjs +0 -3
  3. package/build/components/collab-sidebar/add-comment.cjs.map +2 -2
  4. package/build/components/collab-sidebar/comments.cjs +0 -3
  5. package/build/components/collab-sidebar/comments.cjs.map +2 -2
  6. package/build/components/collab-sidebar/index.cjs +7 -4
  7. package/build/components/collab-sidebar/index.cjs.map +2 -2
  8. package/build/components/collab-sidebar/utils.cjs +13 -15
  9. package/build/components/collab-sidebar/utils.cjs.map +2 -2
  10. package/build/components/collaborators-overlay/avatar-iframe-styles.cjs +141 -0
  11. package/build/components/collaborators-overlay/avatar-iframe-styles.cjs.map +7 -0
  12. package/build/components/collaborators-overlay/collaborator-styles.cjs +38 -2
  13. package/build/components/collaborators-overlay/collaborator-styles.cjs.map +2 -2
  14. package/build/components/collaborators-overlay/compute-selection.cjs +185 -0
  15. package/build/components/collaborators-overlay/compute-selection.cjs.map +7 -0
  16. package/build/components/collaborators-overlay/cursor-dom-utils.cjs +243 -0
  17. package/build/components/collaborators-overlay/cursor-dom-utils.cjs.map +7 -0
  18. package/build/components/collaborators-overlay/cursor-registry.cjs +86 -0
  19. package/build/components/collaborators-overlay/cursor-registry.cjs.map +7 -0
  20. package/build/components/collaborators-overlay/index.cjs +7 -2
  21. package/build/components/collaborators-overlay/index.cjs.map +2 -2
  22. package/build/components/collaborators-overlay/overlay-iframe-styles.cjs +148 -0
  23. package/build/components/collaborators-overlay/overlay-iframe-styles.cjs.map +7 -0
  24. package/build/components/collaborators-overlay/overlay.cjs +141 -229
  25. package/build/components/collaborators-overlay/overlay.cjs.map +3 -3
  26. package/build/components/collaborators-overlay/timing-utils.cjs +46 -0
  27. package/build/components/collaborators-overlay/timing-utils.cjs.map +7 -0
  28. package/build/components/collaborators-overlay/use-block-highlighting.cjs +91 -42
  29. package/build/components/collaborators-overlay/use-block-highlighting.cjs.map +2 -2
  30. package/build/components/collaborators-overlay/use-debounced-recompute.cjs +49 -0
  31. package/build/components/collaborators-overlay/use-debounced-recompute.cjs.map +7 -0
  32. package/build/components/collaborators-overlay/use-render-cursors.cjs +82 -172
  33. package/build/components/collaborators-overlay/use-render-cursors.cjs.map +3 -3
  34. package/build/components/collaborators-presence/avatar/component.cjs +121 -0
  35. package/build/components/collaborators-presence/avatar/component.cjs.map +7 -0
  36. package/build/components/collaborators-presence/avatar/index.cjs +37 -0
  37. package/build/components/collaborators-presence/avatar/index.cjs.map +7 -0
  38. package/build/components/collaborators-presence/avatar/types.cjs +19 -0
  39. package/build/components/collaborators-presence/avatar/types.cjs.map +7 -0
  40. package/build/components/collaborators-presence/avatar/use-image-loading-status.cjs +44 -0
  41. package/build/components/collaborators-presence/avatar/use-image-loading-status.cjs.map +7 -0
  42. package/build/components/collaborators-presence/avatar-group/component.cjs +78 -0
  43. package/build/components/collaborators-presence/avatar-group/component.cjs.map +7 -0
  44. package/build/components/collaborators-presence/avatar-group/index.cjs +37 -0
  45. package/build/components/collaborators-presence/avatar-group/index.cjs.map +7 -0
  46. package/build/components/collaborators-presence/avatar-group/types.cjs +19 -0
  47. package/build/components/collaborators-presence/avatar-group/types.cjs.map +7 -0
  48. package/build/components/collaborators-presence/index.cjs +66 -19
  49. package/build/components/collaborators-presence/index.cjs.map +3 -3
  50. package/build/components/collaborators-presence/list.cjs +60 -38
  51. package/build/components/collaborators-presence/list.cjs.map +3 -3
  52. package/build/components/collaborators-presence/use-collaborator-notifications.cjs +149 -0
  53. package/build/components/collaborators-presence/use-collaborator-notifications.cjs.map +7 -0
  54. package/build/components/editor-interface/index.cjs +11 -6
  55. package/build/components/editor-interface/index.cjs.map +2 -2
  56. package/build/components/inserter-sidebar/index.cjs +2 -1
  57. package/build/components/inserter-sidebar/index.cjs.map +2 -2
  58. package/build/components/more-menu/copy-content-menu-item.cjs +19 -2
  59. package/build/components/more-menu/copy-content-menu-item.cjs.map +3 -3
  60. package/build/components/post-last-revision/index.cjs +27 -6
  61. package/build/components/post-last-revision/index.cjs.map +2 -2
  62. package/build/components/post-locked-modal/index.cjs +49 -17
  63. package/build/components/post-locked-modal/index.cjs.map +3 -3
  64. package/build/components/post-revisions-preview/block-diff.cjs +130 -34
  65. package/build/components/post-revisions-preview/block-diff.cjs.map +2 -2
  66. package/build/components/post-revisions-preview/diff-markers.cjs +6 -5
  67. package/build/components/post-revisions-preview/diff-markers.cjs.map +2 -2
  68. package/build/components/post-revisions-preview/revisions-canvas.cjs +16 -60
  69. package/build/components/post-revisions-preview/revisions-canvas.cjs.map +3 -3
  70. package/build/components/post-revisions-preview/revisions-slider.cjs +102 -39
  71. package/build/components/post-revisions-preview/revisions-slider.cjs.map +3 -3
  72. package/build/components/post-text-editor/index.cjs +20 -5
  73. package/build/components/post-text-editor/index.cjs.map +3 -3
  74. package/build/components/preferences-modal/index.cjs +36 -4
  75. package/build/components/preferences-modal/index.cjs.map +2 -2
  76. package/build/components/provider/disable-non-page-content-blocks.cjs +31 -28
  77. package/build/components/provider/disable-non-page-content-blocks.cjs.map +3 -3
  78. package/build/components/provider/index.cjs +17 -5
  79. package/build/components/provider/index.cjs.map +2 -2
  80. package/build/components/provider/use-block-editor-settings.cjs +20 -4
  81. package/build/components/provider/use-block-editor-settings.cjs.map +3 -3
  82. package/build/components/provider/{use-post-content-blocks.cjs → use-post-content-block-types.cjs} +8 -19
  83. package/build/components/provider/use-post-content-block-types.cjs.map +7 -0
  84. package/build/components/provider/use-revision-blocks.cjs +106 -0
  85. package/build/components/provider/use-revision-blocks.cjs.map +7 -0
  86. package/build/components/revision-block-diff/index.cjs +61 -0
  87. package/build/components/revision-block-diff/index.cjs.map +7 -0
  88. package/build/components/revision-diff-panel/index.cjs +68 -0
  89. package/build/components/revision-diff-panel/index.cjs.map +7 -0
  90. package/build/components/revision-fields-diff/index.cjs +96 -0
  91. package/build/components/revision-fields-diff/index.cjs.map +7 -0
  92. package/build/components/sidebar/header.cjs +1 -1
  93. package/build/components/sidebar/header.cjs.map +2 -2
  94. package/build/components/sidebar/index.cjs +7 -1
  95. package/build/components/sidebar/index.cjs.map +3 -3
  96. package/build/components/style-book/index.cjs +4 -3
  97. package/build/components/style-book/index.cjs.map +2 -2
  98. package/build/components/sync-connection-error-modal/index.cjs +187 -0
  99. package/build/components/sync-connection-error-modal/index.cjs.map +7 -0
  100. package/build/components/sync-connection-error-modal/use-retry-countdown.cjs +84 -0
  101. package/build/components/sync-connection-error-modal/use-retry-countdown.cjs.map +7 -0
  102. package/build/components/template-content-panel/index.cjs +35 -31
  103. package/build/components/template-content-panel/index.cjs.map +3 -3
  104. package/build/components/template-part-menu-items/convert-to-regular.cjs +54 -11
  105. package/build/components/template-part-menu-items/convert-to-regular.cjs.map +3 -3
  106. package/build/components/visual-editor/index.cjs +6 -15
  107. package/build/components/visual-editor/index.cjs.map +2 -2
  108. package/build/store/private-actions.cjs +46 -2
  109. package/build/store/private-actions.cjs.map +2 -2
  110. package/build/store/private-selectors.cjs +154 -29
  111. package/build/store/private-selectors.cjs.map +2 -2
  112. package/build/store/reducer.cjs +27 -0
  113. package/build/store/reducer.cjs.map +2 -2
  114. package/build/store/selectors.cjs +0 -14
  115. package/build/store/selectors.cjs.map +2 -2
  116. package/build/utils/media-finalize/index.cjs +43 -0
  117. package/build/utils/media-finalize/index.cjs.map +7 -0
  118. package/build/utils/media-upload/on-success.cjs +46 -0
  119. package/build/utils/media-upload/on-success.cjs.map +7 -0
  120. package/build/utils/sync-error-messages.cjs +32 -15
  121. package/build/utils/sync-error-messages.cjs.map +3 -3
  122. package/build-module/components/collab-sidebar/add-comment.mjs +0 -3
  123. package/build-module/components/collab-sidebar/add-comment.mjs.map +2 -2
  124. package/build-module/components/collab-sidebar/comments.mjs +0 -3
  125. package/build-module/components/collab-sidebar/comments.mjs.map +2 -2
  126. package/build-module/components/collab-sidebar/index.mjs +7 -4
  127. package/build-module/components/collab-sidebar/index.mjs.map +2 -2
  128. package/build-module/components/collab-sidebar/utils.mjs +13 -15
  129. package/build-module/components/collab-sidebar/utils.mjs.map +2 -2
  130. package/build-module/components/collaborators-overlay/avatar-iframe-styles.mjs +128 -0
  131. package/build-module/components/collaborators-overlay/avatar-iframe-styles.mjs.map +7 -0
  132. package/build-module/components/collaborators-overlay/collaborator-styles.mjs +25 -1
  133. package/build-module/components/collaborators-overlay/collaborator-styles.mjs.map +2 -2
  134. package/build-module/components/collaborators-overlay/compute-selection.mjs +166 -0
  135. package/build-module/components/collaborators-overlay/compute-selection.mjs.map +7 -0
  136. package/build-module/components/collaborators-overlay/cursor-dom-utils.mjs +213 -0
  137. package/build-module/components/collaborators-overlay/cursor-dom-utils.mjs.map +7 -0
  138. package/build-module/components/collaborators-overlay/cursor-registry.mjs +61 -0
  139. package/build-module/components/collaborators-overlay/cursor-registry.mjs.map +7 -0
  140. package/build-module/components/collaborators-overlay/index.mjs +7 -2
  141. package/build-module/components/collaborators-overlay/index.mjs.map +2 -2
  142. package/build-module/components/collaborators-overlay/overlay-iframe-styles.mjs +130 -0
  143. package/build-module/components/collaborators-overlay/overlay-iframe-styles.mjs.map +7 -0
  144. package/build-module/components/collaborators-overlay/overlay.mjs +132 -230
  145. package/build-module/components/collaborators-overlay/overlay.mjs.map +2 -2
  146. package/build-module/components/collaborators-overlay/timing-utils.mjs +21 -0
  147. package/build-module/components/collaborators-overlay/timing-utils.mjs.map +7 -0
  148. package/build-module/components/collaborators-overlay/use-block-highlighting.mjs +93 -45
  149. package/build-module/components/collaborators-overlay/use-block-highlighting.mjs.map +2 -2
  150. package/build-module/components/collaborators-overlay/use-debounced-recompute.mjs +24 -0
  151. package/build-module/components/collaborators-overlay/use-debounced-recompute.mjs.map +7 -0
  152. package/build-module/components/collaborators-overlay/use-render-cursors.mjs +83 -176
  153. package/build-module/components/collaborators-overlay/use-render-cursors.mjs.map +2 -2
  154. package/build-module/components/collaborators-presence/avatar/component.mjs +90 -0
  155. package/build-module/components/collaborators-presence/avatar/component.mjs.map +7 -0
  156. package/build-module/components/collaborators-presence/avatar/index.mjs +6 -0
  157. package/build-module/components/collaborators-presence/avatar/index.mjs.map +7 -0
  158. package/build-module/components/collaborators-presence/avatar/types.mjs +1 -0
  159. package/build-module/components/collaborators-presence/avatar/types.mjs.map +7 -0
  160. package/build-module/components/collaborators-presence/avatar/use-image-loading-status.mjs +19 -0
  161. package/build-module/components/collaborators-presence/avatar/use-image-loading-status.mjs.map +7 -0
  162. package/build-module/components/collaborators-presence/avatar-group/component.mjs +47 -0
  163. package/build-module/components/collaborators-presence/avatar-group/component.mjs.map +7 -0
  164. package/build-module/components/collaborators-presence/avatar-group/index.mjs +6 -0
  165. package/build-module/components/collaborators-presence/avatar-group/index.mjs.map +7 -0
  166. package/build-module/components/collaborators-presence/avatar-group/types.mjs +1 -0
  167. package/build-module/components/collaborators-presence/avatar-group/types.mjs.map +7 -0
  168. package/build-module/components/collaborators-presence/index.mjs +57 -23
  169. package/build-module/components/collaborators-presence/index.mjs.map +2 -2
  170. package/build-module/components/collaborators-presence/list.mjs +52 -44
  171. package/build-module/components/collaborators-presence/list.mjs.map +2 -2
  172. package/build-module/components/collaborators-presence/use-collaborator-notifications.mjs +126 -0
  173. package/build-module/components/collaborators-presence/use-collaborator-notifications.mjs.map +7 -0
  174. package/build-module/components/editor-interface/index.mjs +12 -7
  175. package/build-module/components/editor-interface/index.mjs.map +2 -2
  176. package/build-module/components/inserter-sidebar/index.mjs +2 -1
  177. package/build-module/components/inserter-sidebar/index.mjs.map +2 -2
  178. package/build-module/components/more-menu/copy-content-menu-item.mjs +19 -2
  179. package/build-module/components/more-menu/copy-content-menu-item.mjs.map +2 -2
  180. package/build-module/components/post-last-revision/index.mjs +27 -6
  181. package/build-module/components/post-last-revision/index.mjs.map +2 -2
  182. package/build-module/components/post-locked-modal/index.mjs +49 -17
  183. package/build-module/components/post-locked-modal/index.mjs.map +2 -2
  184. package/build-module/components/post-revisions-preview/block-diff.mjs +130 -34
  185. package/build-module/components/post-revisions-preview/block-diff.mjs.map +2 -2
  186. package/build-module/components/post-revisions-preview/diff-markers.mjs +6 -5
  187. package/build-module/components/post-revisions-preview/diff-markers.mjs.map +2 -2
  188. package/build-module/components/post-revisions-preview/revisions-canvas.mjs +18 -65
  189. package/build-module/components/post-revisions-preview/revisions-canvas.mjs.map +2 -2
  190. package/build-module/components/post-revisions-preview/revisions-slider.mjs +110 -42
  191. package/build-module/components/post-revisions-preview/revisions-slider.mjs.map +2 -2
  192. package/build-module/components/post-text-editor/index.mjs +20 -5
  193. package/build-module/components/post-text-editor/index.mjs.map +2 -2
  194. package/build-module/components/preferences-modal/index.mjs +36 -4
  195. package/build-module/components/preferences-modal/index.mjs.map +2 -2
  196. package/build-module/components/provider/disable-non-page-content-blocks.mjs +31 -28
  197. package/build-module/components/provider/disable-non-page-content-blocks.mjs.map +2 -2
  198. package/build-module/components/provider/index.mjs +17 -5
  199. package/build-module/components/provider/index.mjs.map +2 -2
  200. package/build-module/components/provider/use-block-editor-settings.mjs +20 -4
  201. package/build-module/components/provider/use-block-editor-settings.mjs.map +2 -2
  202. package/build-module/components/provider/use-post-content-block-types.mjs +23 -0
  203. package/build-module/components/provider/use-post-content-block-types.mjs.map +7 -0
  204. package/build-module/components/provider/use-revision-blocks.mjs +81 -0
  205. package/build-module/components/provider/use-revision-blocks.mjs.map +7 -0
  206. package/build-module/components/revision-block-diff/index.mjs +30 -0
  207. package/build-module/components/revision-block-diff/index.mjs.map +7 -0
  208. package/build-module/components/revision-diff-panel/index.mjs +37 -0
  209. package/build-module/components/revision-diff-panel/index.mjs.map +7 -0
  210. package/build-module/components/revision-fields-diff/index.mjs +65 -0
  211. package/build-module/components/revision-fields-diff/index.mjs.map +7 -0
  212. package/build-module/components/sidebar/header.mjs +1 -1
  213. package/build-module/components/sidebar/header.mjs.map +2 -2
  214. package/build-module/components/sidebar/index.mjs +7 -1
  215. package/build-module/components/sidebar/index.mjs.map +2 -2
  216. package/build-module/components/style-book/index.mjs +4 -3
  217. package/build-module/components/style-book/index.mjs.map +2 -2
  218. package/build-module/components/sync-connection-error-modal/index.mjs +170 -0
  219. package/build-module/components/sync-connection-error-modal/index.mjs.map +7 -0
  220. package/build-module/components/sync-connection-error-modal/use-retry-countdown.mjs +59 -0
  221. package/build-module/components/sync-connection-error-modal/use-retry-countdown.mjs.map +7 -0
  222. package/build-module/components/template-content-panel/index.mjs +25 -31
  223. package/build-module/components/template-content-panel/index.mjs.map +2 -2
  224. package/build-module/components/template-part-menu-items/convert-to-regular.mjs +60 -14
  225. package/build-module/components/template-part-menu-items/convert-to-regular.mjs.map +2 -2
  226. package/build-module/components/visual-editor/index.mjs +6 -15
  227. package/build-module/components/visual-editor/index.mjs.map +2 -2
  228. package/build-module/store/private-actions.mjs +44 -2
  229. package/build-module/store/private-actions.mjs.map +2 -2
  230. package/build-module/store/private-selectors.mjs +153 -29
  231. package/build-module/store/private-selectors.mjs.map +2 -2
  232. package/build-module/store/reducer.mjs +25 -0
  233. package/build-module/store/reducer.mjs.map +2 -2
  234. package/build-module/store/selectors.mjs +0 -13
  235. package/build-module/store/selectors.mjs.map +2 -2
  236. package/build-module/utils/media-finalize/index.mjs +12 -0
  237. package/build-module/utils/media-finalize/index.mjs.map +7 -0
  238. package/build-module/utils/media-upload/on-success.mjs +25 -0
  239. package/build-module/utils/media-upload/on-success.mjs.map +7 -0
  240. package/build-module/utils/sync-error-messages.mjs +27 -15
  241. package/build-module/utils/sync-error-messages.mjs.map +3 -3
  242. package/build-style/style-rtl.css +296 -121
  243. package/build-style/style.css +296 -121
  244. package/build-types/components/autocompleters/link.d.ts +8 -0
  245. package/build-types/components/autocompleters/link.d.ts.map +1 -0
  246. package/build-types/components/collab-sidebar/add-comment.d.ts.map +1 -1
  247. package/build-types/components/collab-sidebar/add-note-menu-item.d.ts +5 -0
  248. package/build-types/components/collab-sidebar/add-note-menu-item.d.ts.map +1 -0
  249. package/build-types/components/collab-sidebar/add-note.d.ts +6 -0
  250. package/build-types/components/collab-sidebar/add-note.d.ts.map +1 -0
  251. package/build-types/components/collab-sidebar/board-store.d.ts +9 -0
  252. package/build-types/components/collab-sidebar/board-store.d.ts.map +1 -0
  253. package/build-types/components/collab-sidebar/floating-container.d.ts +8 -0
  254. package/build-types/components/collab-sidebar/floating-container.d.ts.map +1 -0
  255. package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
  256. package/build-types/components/collab-sidebar/note-byline.d.ts +10 -0
  257. package/build-types/components/collab-sidebar/note-byline.d.ts.map +1 -0
  258. package/build-types/components/collab-sidebar/note-card.d.ts +8 -0
  259. package/build-types/components/collab-sidebar/note-card.d.ts.map +1 -0
  260. package/build-types/components/collab-sidebar/note-form.d.ts +7 -0
  261. package/build-types/components/collab-sidebar/note-form.d.ts.map +1 -0
  262. package/build-types/components/collab-sidebar/note-indicator-toolbar.d.ts +5 -0
  263. package/build-types/components/collab-sidebar/note-indicator-toolbar.d.ts.map +1 -0
  264. package/build-types/components/collab-sidebar/note-thread.d.ts +11 -0
  265. package/build-types/components/collab-sidebar/note-thread.d.ts.map +1 -0
  266. package/build-types/components/collab-sidebar/note.d.ts +9 -0
  267. package/build-types/components/collab-sidebar/note.d.ts.map +1 -0
  268. package/build-types/components/collab-sidebar/notes.d.ts +7 -0
  269. package/build-types/components/collab-sidebar/notes.d.ts.map +1 -0
  270. package/build-types/components/collab-sidebar/utils.d.ts.map +1 -1
  271. package/build-types/components/collaborators-overlay/avatar-iframe-styles.d.ts +11 -0
  272. package/build-types/components/collaborators-overlay/avatar-iframe-styles.d.ts.map +1 -0
  273. package/build-types/components/collaborators-overlay/collaborator-styles.d.ts +17 -2
  274. package/build-types/components/collaborators-overlay/collaborator-styles.d.ts.map +1 -1
  275. package/build-types/components/collaborators-overlay/compute-selection.d.ts +24 -0
  276. package/build-types/components/collaborators-overlay/compute-selection.d.ts.map +1 -0
  277. package/build-types/components/collaborators-overlay/cursor-dom-utils.d.ts +72 -0
  278. package/build-types/components/collaborators-overlay/cursor-dom-utils.d.ts.map +1 -0
  279. package/build-types/components/collaborators-overlay/cursor-registry.d.ts +36 -0
  280. package/build-types/components/collaborators-overlay/cursor-registry.d.ts.map +1 -0
  281. package/build-types/components/collaborators-overlay/index.d.ts +7 -4
  282. package/build-types/components/collaborators-overlay/index.d.ts.map +1 -1
  283. package/build-types/components/collaborators-overlay/overlay-iframe-styles.d.ts +6 -0
  284. package/build-types/components/collaborators-overlay/overlay-iframe-styles.d.ts.map +1 -0
  285. package/build-types/components/collaborators-overlay/overlay.d.ts +4 -1
  286. package/build-types/components/collaborators-overlay/overlay.d.ts.map +1 -1
  287. package/build-types/components/collaborators-overlay/timing-utils.d.ts +11 -0
  288. package/build-types/components/collaborators-overlay/timing-utils.d.ts.map +1 -0
  289. package/build-types/components/collaborators-overlay/use-block-highlighting.d.ts +21 -5
  290. package/build-types/components/collaborators-overlay/use-block-highlighting.d.ts.map +1 -1
  291. package/build-types/components/collaborators-overlay/use-debounced-recompute.d.ts +10 -0
  292. package/build-types/components/collaborators-overlay/use-debounced-recompute.d.ts.map +1 -0
  293. package/build-types/components/collaborators-overlay/use-render-cursors.d.ts +6 -1
  294. package/build-types/components/collaborators-overlay/use-render-cursors.d.ts.map +1 -1
  295. package/build-types/components/collaborators-presence/avatar/component.d.ts +7 -0
  296. package/build-types/components/collaborators-presence/avatar/component.d.ts.map +1 -0
  297. package/build-types/components/collaborators-presence/avatar/index.d.ts +3 -0
  298. package/build-types/components/collaborators-presence/avatar/index.d.ts.map +1 -0
  299. package/build-types/components/collaborators-presence/avatar/types.d.ts +66 -0
  300. package/build-types/components/collaborators-presence/avatar/types.d.ts.map +1 -0
  301. package/build-types/components/collaborators-presence/avatar/use-image-loading-status.d.ts +17 -0
  302. package/build-types/components/collaborators-presence/avatar/use-image-loading-status.d.ts.map +1 -0
  303. package/build-types/components/collaborators-presence/avatar-group/component.d.ts +7 -0
  304. package/build-types/components/collaborators-presence/avatar-group/component.d.ts.map +1 -0
  305. package/build-types/components/collaborators-presence/avatar-group/index.d.ts +3 -0
  306. package/build-types/components/collaborators-presence/avatar-group/index.d.ts.map +1 -0
  307. package/build-types/components/collaborators-presence/avatar-group/types.d.ts +14 -0
  308. package/build-types/components/collaborators-presence/avatar-group/types.d.ts.map +1 -0
  309. package/build-types/components/collaborators-presence/index.d.ts.map +1 -1
  310. package/build-types/components/collaborators-presence/list.d.ts +6 -2
  311. package/build-types/components/collaborators-presence/list.d.ts.map +1 -1
  312. package/build-types/components/collaborators-presence/use-collaborator-notifications.d.ts +9 -0
  313. package/build-types/components/collaborators-presence/use-collaborator-notifications.d.ts.map +1 -0
  314. package/build-types/components/editor-interface/index.d.ts.map +1 -1
  315. package/build-types/components/inserter-sidebar/index.d.ts.map +1 -1
  316. package/build-types/components/media/media-editor-modal.d.ts +15 -0
  317. package/build-types/components/media/media-editor-modal.d.ts.map +1 -0
  318. package/build-types/components/more-menu/copy-content-menu-item.d.ts.map +1 -1
  319. package/build-types/components/post-last-revision/index.d.ts.map +1 -1
  320. package/build-types/components/post-locked-modal/index.d.ts.map +1 -1
  321. package/build-types/components/post-revisions-panel/index.d.ts +2 -0
  322. package/build-types/components/post-revisions-panel/index.d.ts.map +1 -0
  323. package/build-types/components/post-revisions-preview/block-diff.d.ts.map +1 -1
  324. package/build-types/components/post-revisions-preview/diff-markers.d.ts.map +1 -1
  325. package/build-types/components/post-revisions-preview/revisions-canvas.d.ts +2 -5
  326. package/build-types/components/post-revisions-preview/revisions-canvas.d.ts.map +1 -1
  327. package/build-types/components/post-revisions-preview/revisions-slider.d.ts +1 -1
  328. package/build-types/components/post-revisions-preview/revisions-slider.d.ts.map +1 -1
  329. package/build-types/components/post-text-editor/index.d.ts.map +1 -1
  330. package/build-types/components/post-text-editor/utils.d.ts +29 -0
  331. package/build-types/components/post-text-editor/utils.d.ts.map +1 -0
  332. package/build-types/components/provider/disable-non-page-content-blocks.d.ts.map +1 -1
  333. package/build-types/components/provider/index.d.ts.map +1 -1
  334. package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
  335. package/build-types/components/provider/use-network-reconnect.d.ts +8 -0
  336. package/build-types/components/provider/use-network-reconnect.d.ts.map +1 -0
  337. package/build-types/components/provider/use-post-content-block-types.d.ts +9 -0
  338. package/build-types/components/provider/use-post-content-block-types.d.ts.map +1 -0
  339. package/build-types/components/provider/use-revision-blocks.d.ts +10 -0
  340. package/build-types/components/provider/use-revision-blocks.d.ts.map +1 -0
  341. package/build-types/components/revision-block-diff/index.d.ts +6 -0
  342. package/build-types/components/revision-block-diff/index.d.ts.map +1 -0
  343. package/build-types/components/revision-diff-panel/index.d.ts +14 -0
  344. package/build-types/components/revision-diff-panel/index.d.ts.map +1 -0
  345. package/build-types/components/revision-fields-diff/index.d.ts +6 -0
  346. package/build-types/components/revision-fields-diff/index.d.ts.map +1 -0
  347. package/build-types/components/sidebar/dataform-post-summary.d.ts +4 -0
  348. package/build-types/components/sidebar/dataform-post-summary.d.ts.map +1 -0
  349. package/build-types/components/sidebar/index.d.ts.map +1 -1
  350. package/build-types/components/sidebar/post-revision-summary.d.ts +2 -0
  351. package/build-types/components/sidebar/post-revision-summary.d.ts.map +1 -0
  352. package/build-types/components/style-book/index.d.ts +2 -1
  353. package/build-types/components/style-book/index.d.ts.map +1 -1
  354. package/build-types/components/sync-connection-error-modal/index.d.ts +8 -0
  355. package/build-types/components/sync-connection-error-modal/index.d.ts.map +1 -0
  356. package/build-types/components/sync-connection-error-modal/use-retry-countdown.d.ts +11 -0
  357. package/build-types/components/sync-connection-error-modal/use-retry-countdown.d.ts.map +1 -0
  358. package/build-types/components/template-actions-panel/block-theme-content.d.ts +2 -0
  359. package/build-types/components/template-actions-panel/block-theme-content.d.ts.map +1 -0
  360. package/build-types/components/template-actions-panel/classic-theme-content.d.ts +2 -0
  361. package/build-types/components/template-actions-panel/classic-theme-content.d.ts.map +1 -0
  362. package/build-types/components/template-actions-panel/index.d.ts +2 -0
  363. package/build-types/components/template-actions-panel/index.d.ts.map +1 -0
  364. package/build-types/components/template-content-panel/index.d.ts.map +1 -1
  365. package/build-types/components/template-part-menu-items/convert-to-regular.d.ts.map +1 -1
  366. package/build-types/components/upload-progress-snackbar/index.d.ts +19 -0
  367. package/build-types/components/upload-progress-snackbar/index.d.ts.map +1 -0
  368. package/build-types/components/upload-progress-snackbar/stories/index.story.d.ts +28 -0
  369. package/build-types/components/upload-progress-snackbar/stories/index.story.d.ts.map +1 -0
  370. package/build-types/components/upload-progress-snackbar/tracker.d.ts +41 -0
  371. package/build-types/components/upload-progress-snackbar/tracker.d.ts.map +1 -0
  372. package/build-types/components/visual-editor/index.d.ts.map +1 -1
  373. package/build-types/store/private-actions.d.ts +12 -0
  374. package/build-types/store/private-actions.d.ts.map +1 -1
  375. package/build-types/store/private-selectors.d.ts +45 -0
  376. package/build-types/store/private-selectors.d.ts.map +1 -1
  377. package/build-types/store/reducer.d.ts +21 -0
  378. package/build-types/store/reducer.d.ts.map +1 -1
  379. package/build-types/store/selectors.d.ts +0 -10
  380. package/build-types/store/selectors.d.ts.map +1 -1
  381. package/build-types/utils/media-delete/index.d.ts +2 -0
  382. package/build-types/utils/media-delete/index.d.ts.map +1 -0
  383. package/build-types/utils/media-finalize/index.d.ts +2 -0
  384. package/build-types/utils/media-finalize/index.d.ts.map +1 -0
  385. package/build-types/utils/media-upload/on-success.d.ts +9 -0
  386. package/build-types/utils/media-upload/on-success.d.ts.map +1 -0
  387. package/build-types/utils/sync-error-messages.d.ts +17 -3
  388. package/build-types/utils/sync-error-messages.d.ts.map +1 -1
  389. package/package.json +45 -44
  390. package/src/components/collab-sidebar/add-comment.js +0 -4
  391. package/src/components/collab-sidebar/comments.js +0 -5
  392. package/src/components/collab-sidebar/index.js +7 -4
  393. package/src/components/collab-sidebar/utils.js +9 -10
  394. package/src/components/collaborators-overlay/avatar-iframe-styles.ts +134 -0
  395. package/src/components/collaborators-overlay/collaborator-styles.ts +43 -2
  396. package/src/components/collaborators-overlay/compute-selection.ts +315 -0
  397. package/src/components/collaborators-overlay/cursor-dom-utils.ts +382 -0
  398. package/src/components/collaborators-overlay/cursor-registry.ts +96 -0
  399. package/src/components/collaborators-overlay/index.tsx +12 -4
  400. package/src/components/collaborators-overlay/overlay-iframe-styles.ts +131 -0
  401. package/src/components/collaborators-overlay/overlay.tsx +145 -223
  402. package/src/components/collaborators-overlay/timing-utils.ts +30 -0
  403. package/src/components/collaborators-overlay/use-block-highlighting.ts +152 -64
  404. package/src/components/collaborators-overlay/use-debounced-recompute.ts +32 -0
  405. package/src/components/collaborators-overlay/use-render-cursors.ts +120 -282
  406. package/src/components/collaborators-presence/avatar/component.tsx +123 -0
  407. package/src/components/collaborators-presence/avatar/index.ts +2 -0
  408. package/src/components/collaborators-presence/avatar/styles.scss +184 -0
  409. package/src/components/collaborators-presence/avatar/test/index.tsx +389 -0
  410. package/src/components/collaborators-presence/avatar/types.ts +66 -0
  411. package/src/components/collaborators-presence/avatar/use-image-loading-status.ts +36 -0
  412. package/src/components/collaborators-presence/avatar-group/component.tsx +55 -0
  413. package/src/components/collaborators-presence/avatar-group/index.ts +2 -0
  414. package/src/components/collaborators-presence/avatar-group/styles.scss +33 -0
  415. package/src/components/collaborators-presence/avatar-group/test/index.tsx +139 -0
  416. package/src/components/collaborators-presence/avatar-group/types.ts +13 -0
  417. package/src/components/collaborators-presence/index.tsx +43 -12
  418. package/src/components/collaborators-presence/list.tsx +68 -40
  419. package/src/components/collaborators-presence/styles/collaborators-list.scss +26 -19
  420. package/src/components/collaborators-presence/styles/collaborators-presence.scss +6 -2
  421. package/src/components/collaborators-presence/test/use-collaborator-notifications.ts +397 -0
  422. package/src/components/collaborators-presence/use-collaborator-notifications.ts +203 -0
  423. package/src/components/document-bar/style.scss +1 -1
  424. package/src/components/editor-interface/index.js +13 -6
  425. package/src/components/inserter-sidebar/index.js +4 -1
  426. package/src/components/more-menu/copy-content-menu-item.js +20 -2
  427. package/src/components/post-last-revision/index.js +35 -6
  428. package/src/components/post-last-revision/style.scss +0 -3
  429. package/src/components/post-locked-modal/index.js +69 -25
  430. package/src/components/post-panel-row/style.scss +1 -0
  431. package/src/components/post-revisions-preview/block-diff.js +224 -61
  432. package/src/components/post-revisions-preview/diff-markers.js +15 -12
  433. package/src/components/post-revisions-preview/revisions-canvas.js +23 -86
  434. package/src/components/post-revisions-preview/revisions-slider.js +136 -63
  435. package/src/components/post-revisions-preview/style.scss +3 -3
  436. package/src/components/post-revisions-preview/test/block-diff.js +202 -35
  437. package/src/components/post-text-editor/index.js +25 -6
  438. package/src/components/preferences-modal/index.js +37 -7
  439. package/src/components/provider/disable-non-page-content-blocks.js +42 -40
  440. package/src/components/provider/index.js +20 -2
  441. package/src/components/provider/use-block-editor-settings.js +21 -1
  442. package/src/components/provider/use-post-content-block-types.js +30 -0
  443. package/src/components/provider/use-revision-blocks.js +105 -0
  444. package/src/components/revision-block-diff/index.js +39 -0
  445. package/src/components/revision-diff-panel/index.js +59 -0
  446. package/src/components/revision-diff-panel/style.scss +13 -0
  447. package/src/components/revision-fields-diff/index.js +91 -0
  448. package/src/components/sidebar/header.js +1 -1
  449. package/src/components/sidebar/index.js +4 -0
  450. package/src/components/style-book/index.js +4 -2
  451. package/src/components/sync-connection-error-modal/index.tsx +253 -0
  452. package/src/components/sync-connection-error-modal/style.scss +14 -0
  453. package/src/components/sync-connection-error-modal/use-retry-countdown.ts +93 -0
  454. package/src/components/template-content-panel/index.js +30 -38
  455. package/src/components/template-part-menu-items/convert-to-regular.js +74 -12
  456. package/src/components/visual-editor/index.js +6 -23
  457. package/src/store/private-actions.js +70 -1
  458. package/src/store/private-selectors.js +215 -37
  459. package/src/store/reducer.js +41 -0
  460. package/src/store/selectors.js +0 -19
  461. package/src/style.scss +4 -1
  462. package/src/utils/media-finalize/index.js +11 -0
  463. package/src/utils/media-finalize/test/index.js +34 -0
  464. package/src/utils/media-upload/on-success.js +34 -0
  465. package/src/utils/sync-error-messages.ts +72 -0
  466. package/src/utils/test/sync-error-messages.js +34 -0
  467. package/build/components/provider/use-post-content-blocks.cjs.map +0 -7
  468. package/build/components/sync-connection-modal/index.cjs +0 -130
  469. package/build/components/sync-connection-modal/index.cjs.map +0 -7
  470. package/build-module/components/provider/use-post-content-blocks.mjs +0 -34
  471. package/build-module/components/provider/use-post-content-blocks.mjs.map +0 -7
  472. package/build-module/components/sync-connection-modal/index.mjs +0 -114
  473. package/build-module/components/sync-connection-modal/index.mjs.map +0 -7
  474. package/build-types/components/provider/use-post-content-blocks.d.ts +0 -2
  475. package/build-types/components/provider/use-post-content-blocks.d.ts.map +0 -1
  476. package/build-types/components/sync-connection-modal/index.d.ts +0 -8
  477. package/build-types/components/sync-connection-modal/index.d.ts.map +0 -1
  478. package/src/components/provider/use-post-content-blocks.js +0 -42
  479. package/src/components/sync-connection-modal/index.js +0 -140
  480. package/src/components/sync-connection-modal/style.scss +0 -11
  481. package/src/utils/sync-error-messages.js +0 -53
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/private-actions.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { addQueryArgs } from '@wordpress/url';\nimport apiFetch from '@wordpress/api-fetch';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { dateI18n, getSettings as getDateSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport isTemplateRevertable from './utils/is-template-revertable';\nexport * from '../dataviews/store/private-actions';\n\n/**\n * Returns an action object used to set which template is currently being used/edited.\n *\n * @param {string} id Template Id.\n *\n * @return {Object} Action object.\n */\nexport function setCurrentTemplateId( id ) {\n\treturn {\n\t\ttype: 'SET_CURRENT_TEMPLATE_ID',\n\t\tid,\n\t};\n}\n\n/**\n * Create a block based template.\n *\n * @param {?Object} template Template to create and assign.\n */\nexport const createTemplate =\n\t( template ) =>\n\tasync ( { select, dispatch, registry } ) => {\n\t\tconst savedTemplate = await registry\n\t\t\t.dispatch( coreStore )\n\t\t\t.saveEntityRecord( 'postType', 'wp_template', template );\n\t\tregistry\n\t\t\t.dispatch( coreStore )\n\t\t\t.editEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tselect.getCurrentPostType(),\n\t\t\t\tselect.getCurrentPostId(),\n\t\t\t\t{\n\t\t\t\t\ttemplate: savedTemplate.slug,\n\t\t\t\t}\n\t\t\t);\n\t\tregistry\n\t\t\t.dispatch( noticesStore )\n\t\t\t.createSuccessNotice(\n\t\t\t\t__( \"Custom template created. You're in template mode now.\" ),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tactions: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: __( 'Go back' ),\n\t\t\t\t\t\t\tonClick: () =>\n\t\t\t\t\t\t\t\tdispatch.setRenderingMode(\n\t\t\t\t\t\t\t\t\tselect.getEditorSettings()\n\t\t\t\t\t\t\t\t\t\t.defaultRenderingMode\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t);\n\t\treturn savedTemplate;\n\t};\n\n/**\n * Update the provided block types to be visible.\n *\n * @param {string[]} blockNames Names of block types to show.\n */\nexport const showBlockTypes =\n\t( blockNames ) =>\n\t( { registry } ) => {\n\t\tconst existingBlockNames =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core', 'hiddenBlockTypes' ) ?? [];\n\n\t\tconst newBlockNames = existingBlockNames.filter(\n\t\t\t( type ) =>\n\t\t\t\t! (\n\t\t\t\t\tArray.isArray( blockNames ) ? blockNames : [ blockNames ]\n\t\t\t\t).includes( type )\n\t\t);\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core', 'hiddenBlockTypes', newBlockNames );\n\t};\n\n/**\n * Update the provided block types to be hidden.\n *\n * @param {string[]} blockNames Names of block types to hide.\n */\nexport const hideBlockTypes =\n\t( blockNames ) =>\n\t( { registry } ) => {\n\t\tconst existingBlockNames =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core', 'hiddenBlockTypes' ) ?? [];\n\n\t\tconst mergedBlockNames = new Set( [\n\t\t\t...existingBlockNames,\n\t\t\t...( Array.isArray( blockNames ) ? blockNames : [ blockNames ] ),\n\t\t] );\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core', 'hiddenBlockTypes', [ ...mergedBlockNames ] );\n\t};\n\n/**\n * Save entity records marked as dirty.\n *\n * @param {Object} options Options for the action.\n * @param {Function} [options.onSave] Callback when saving happens.\n * @param {object[]} [options.dirtyEntityRecords] Array of dirty entities.\n * @param {object[]} [options.entitiesToSkip] Array of entities to skip saving.\n * @param {Function} [options.close] Callback when the actions is called. It should be consolidated with `onSave`.\n * @param {string} [options.successNoticeContent] Optional custom success notice content. Defaults to 'Site updated.'.\n */\nexport const saveDirtyEntities =\n\t( {\n\t\tonSave,\n\t\tdirtyEntityRecords = [],\n\t\tentitiesToSkip = [],\n\t\tclose,\n\t\tsuccessNoticeContent,\n\t} = {} ) =>\n\t( { registry } ) => {\n\t\tconst PUBLISH_ON_SAVE_ENTITIES = [\n\t\t\t{ kind: 'postType', name: 'wp_navigation' },\n\t\t];\n\t\tconst saveNoticeId = 'site-editor-save-success';\n\t\tconst homeUrl = registry\n\t\t\t.select( coreStore )\n\t\t\t.getEntityRecord( 'root', '__unstableBase' )?.home;\n\t\tregistry.dispatch( noticesStore ).removeNotice( saveNoticeId );\n\t\tconst entitiesToSave = dirtyEntityRecords.filter(\n\t\t\t( { kind, name, key, property } ) => {\n\t\t\t\treturn ! entitiesToSkip.some(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === kind &&\n\t\t\t\t\t\telt.name === name &&\n\t\t\t\t\t\telt.key === key &&\n\t\t\t\t\t\telt.property === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\tclose?.( entitiesToSave );\n\t\tconst siteItemsToSave = [];\n\t\tconst pendingSavedRecords = [];\n\t\tentitiesToSave.forEach( ( { kind, name, key, property } ) => {\n\t\t\tif ( 'root' === kind && 'site' === name ) {\n\t\t\t\tsiteItemsToSave.push( property );\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tPUBLISH_ON_SAVE_ENTITIES.some(\n\t\t\t\t\t\t( typeToPublish ) =>\n\t\t\t\t\t\t\ttypeToPublish.kind === kind &&\n\t\t\t\t\t\t\ttypeToPublish.name === name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( coreStore )\n\t\t\t\t\t\t.editEntityRecord( kind, name, key, {\n\t\t\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tpendingSavedRecords.push(\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( coreStore )\n\t\t\t\t\t\t.saveEditedEntityRecord( kind, name, key )\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t\tif ( siteItemsToSave.length ) {\n\t\t\tpendingSavedRecords.push(\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( coreStore )\n\t\t\t\t\t.__experimentalSaveSpecifiedEntityEdits(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'site',\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tsiteItemsToSave\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.__unstableMarkLastChangeAsPersistent();\n\t\tPromise.all( pendingSavedRecords )\n\t\t\t.then( ( values ) => {\n\t\t\t\treturn onSave ? onSave( values ) : values;\n\t\t\t} )\n\t\t\t.then( ( values ) => {\n\t\t\t\tif (\n\t\t\t\t\tvalues.some( ( value ) => typeof value === 'undefined' )\n\t\t\t\t) {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t\t.createErrorNotice( __( 'Saving failed.' ) );\n\t\t\t\t} else {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t\t.createSuccessNotice(\n\t\t\t\t\t\t\tsuccessNoticeContent || __( 'Site updated.' ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: saveNoticeId,\n\t\t\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: __( 'View site' ),\n\t\t\t\t\t\t\t\t\t\turl: homeUrl,\n\t\t\t\t\t\t\t\t\t\topenInNewTab: true,\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}\n\t\t\t} )\n\t\t\t.catch( ( error ) =>\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.createErrorNotice(\n\t\t\t\t\t\t`${ __( 'Saving failed.' ) } ${ error }`\n\t\t\t\t\t)\n\t\t\t);\n\t};\n\n/**\n * Reverts a template to its original theme-provided file.\n *\n * @param {Object} template The template to revert.\n * @param {Object} [options]\n * @param {boolean} [options.allowUndo] Whether to allow the user to undo\n * reverting the template. Default true.\n */\nexport const revertTemplate =\n\t( template, { allowUndo = true } = {} ) =>\n\tasync ( { registry } ) => {\n\t\tconst noticeId = 'edit-site-template-reverted';\n\t\tregistry.dispatch( noticesStore ).removeNotice( noticeId );\n\t\tif ( ! isTemplateRevertable( template ) ) {\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.createErrorNotice( __( 'This template is not revertable.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst templateEntityConfig = registry\n\t\t\t\t.select( coreStore )\n\t\t\t\t.getEntityConfig( 'postType', template.type );\n\n\t\t\tif ( ! templateEntityConfig ) {\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.createErrorNotice(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'The editor has encountered an unexpected error. Please reload.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fileTemplatePath = addQueryArgs(\n\t\t\t\t`${ templateEntityConfig.baseURL }/${ template.id }`,\n\t\t\t\t{ context: 'edit', source: template.origin }\n\t\t\t);\n\n\t\t\tconst fileTemplate = await apiFetch( { path: fileTemplatePath } );\n\t\t\tif ( ! fileTemplate ) {\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.createErrorNotice(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'The editor has encountered an unexpected error. Please reload.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst serializeBlocks = ( {\n\t\t\t\tblocks: blocksForSerialization = [],\n\t\t\t} ) => __unstableSerializeAndClean( blocksForSerialization );\n\n\t\t\tconst edited = registry\n\t\t\t\t.select( coreStore )\n\t\t\t\t.getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\ttemplate.type,\n\t\t\t\t\ttemplate.id\n\t\t\t\t);\n\n\t\t\t// We are fixing up the undo level here to make sure we can undo\n\t\t\t// the revert in the header toolbar correctly.\n\t\t\tregistry.dispatch( coreStore ).editEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\ttemplate.type,\n\t\t\t\ttemplate.id,\n\t\t\t\t{\n\t\t\t\t\tcontent: serializeBlocks, // Required to make the `undo` behave correctly.\n\t\t\t\t\tblocks: edited.blocks, // Required to revert the blocks in the editor.\n\t\t\t\t\tsource: 'custom', // required to avoid turning the editor into a dirty state\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tundoIgnore: true, // Required to merge this edit with the last undo level.\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tconst blocks = parse( fileTemplate?.content?.raw );\n\t\t\tregistry\n\t\t\t\t.dispatch( coreStore )\n\t\t\t\t.editEntityRecord( 'postType', template.type, fileTemplate.id, {\n\t\t\t\t\tcontent: serializeBlocks,\n\t\t\t\t\tblocks,\n\t\t\t\t\tsource: 'theme',\n\t\t\t\t} );\n\n\t\t\tif ( allowUndo ) {\n\t\t\t\tconst undoRevert = () => {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( coreStore )\n\t\t\t\t\t\t.editEntityRecord(\n\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\ttemplate.type,\n\t\t\t\t\t\t\tedited.id,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontent: serializeBlocks,\n\t\t\t\t\t\t\t\tblocks: edited.blocks,\n\t\t\t\t\t\t\t\tsource: 'custom',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t};\n\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.createSuccessNotice( __( 'Template reset.' ), {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\tid: noticeId,\n\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Undo' ),\n\t\t\t\t\t\t\t\tonClick: undoRevert,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t} );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'Template revert failed. Please reload.' );\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.createErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t}\n\t};\n\n/**\n * Action that removes an array of templates, template parts or patterns.\n *\n * @param {Array} items An array of template,template part or pattern objects to remove.\n */\nexport const removeTemplates =\n\t( items ) =>\n\tasync ( { registry } ) => {\n\t\tconst isResetting = items.every( ( item ) => item?.has_theme_file );\n\n\t\tconst promiseResult = await Promise.allSettled(\n\t\t\titems.map( ( item ) => {\n\t\t\t\treturn registry\n\t\t\t\t\t.dispatch( coreStore )\n\t\t\t\t\t.deleteEntityRecord(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\titem.type,\n\t\t\t\t\t\titem.id,\n\t\t\t\t\t\t{ force: true },\n\t\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t\t);\n\t\t\t} )\n\t\t);\n\n\t\t// If all the promises were fulfilled with success.\n\t\tif ( promiseResult.every( ( { status } ) => status === 'fulfilled' ) ) {\n\t\t\tlet successMessage;\n\n\t\t\tif ( items.length === 1 ) {\n\t\t\t\t// Depending on how the entity was retrieved its title might be\n\t\t\t\t// an object or simple string.\n\t\t\t\tlet title;\n\t\t\t\tif ( typeof items[ 0 ].title === 'string' ) {\n\t\t\t\t\ttitle = items[ 0 ].title;\n\t\t\t\t} else if ( typeof items[ 0 ].title?.rendered === 'string' ) {\n\t\t\t\t\ttitle = items[ 0 ].title?.rendered;\n\t\t\t\t} else if ( typeof items[ 0 ].title?.raw === 'string' ) {\n\t\t\t\t\ttitle = items[ 0 ].title?.raw;\n\t\t\t\t}\n\t\t\t\tsuccessMessage = isResetting\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: The template/part's name. */\n\t\t\t\t\t\t\t__( '\"%s\" reset.' ),\n\t\t\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: The template/part's name. */\n\t\t\t\t\t\t\t_x( '\"%s\" deleted.', 'template part' ),\n\t\t\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t\t );\n\t\t\t} else {\n\t\t\t\tsuccessMessage = isResetting\n\t\t\t\t\t? __( 'Items reset.' )\n\t\t\t\t\t: __( 'Items deleted.' );\n\t\t\t}\n\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.createSuccessNotice( successMessage, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'editor-template-deleted-success',\n\t\t\t\t} );\n\t\t} else {\n\t\t\t// If there was at lease one failure.\n\t\t\tlet errorMessage;\n\t\t\t// If we were trying to delete a single template.\n\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\tif ( promiseResult[ 0 ].reason?.message ) {\n\t\t\t\t\terrorMessage = promiseResult[ 0 ].reason.message;\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = isResetting\n\t\t\t\t\t\t? __( 'An error occurred while reverting the item.' )\n\t\t\t\t\t\t: __( 'An error occurred while deleting the item.' );\n\t\t\t\t}\n\t\t\t\t// If we were trying to delete a multiple templates\n\t\t\t} else {\n\t\t\t\tconst errorMessages = new Set();\n\t\t\t\tconst failedPromises = promiseResult.filter(\n\t\t\t\t\t( { status } ) => status === 'rejected'\n\t\t\t\t);\n\t\t\t\tfor ( const failedPromise of failedPromises ) {\n\t\t\t\t\tif ( failedPromise.reason?.message ) {\n\t\t\t\t\t\terrorMessages.add( failedPromise.reason.message );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( errorMessages.size === 0 ) {\n\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t'An error occurred while deleting the items.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( errorMessages.size === 1 ) {\n\t\t\t\t\terrorMessage = isResetting\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'An error occurred while reverting the items: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'An error occurred while deleting the items: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t );\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = isResetting\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Some errors occurred while reverting the items: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Some errors occurred while deleting the items: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t );\n\t\t\t\t}\n\t\t\t}\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.createErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t}\n\t};\n\n/**\n * Set the default rendering mode preference for the current post type.\n *\n * @param {string} mode The rendering mode to set as default.\n */\nexport const setDefaultRenderingMode =\n\t( mode ) =>\n\t( { select, registry } ) => {\n\t\tconst postType = select.getCurrentPostType();\n\t\tconst theme = registry\n\t\t\t.select( coreStore )\n\t\t\t.getCurrentTheme()?.stylesheet;\n\t\tconst renderingModes =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core', 'renderingModes' )?.[ theme ] ?? {};\n\n\t\tif ( renderingModes[ postType ] === mode ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newModes = {\n\t\t\t[ theme ]: {\n\t\t\t\t...renderingModes,\n\t\t\t\t[ postType ]: mode,\n\t\t\t},\n\t\t};\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core', 'renderingModes', newModes );\n\t};\n\n/**\n * Set the current global styles navigation path.\n *\n * @param {string} path The navigation path.\n * @return {Object} Action object.\n */\nexport function setStylesPath( path ) {\n\treturn {\n\t\ttype: 'SET_STYLES_PATH',\n\t\tpath,\n\t};\n}\n\n/**\n * Set whether the stylebook is visible.\n *\n * @param {boolean} show Whether to show the stylebook.\n * @return {Object} Action object.\n */\nexport function setShowStylebook( show ) {\n\treturn {\n\t\ttype: 'SET_SHOW_STYLEBOOK',\n\t\tshow,\n\t};\n}\n\n/**\n * Reset the global styles navigation to initial state.\n *\n * @return {Object} Action object.\n */\nexport function resetStylesNavigation() {\n\treturn {\n\t\ttype: 'RESET_STYLES_NAVIGATION',\n\t};\n}\n\n/**\n * Set the minimum height of the canvas.\n *\n * @param {number} minHeight\n * @return {Object} Action object.\n */\nexport function setCanvasMinHeight( minHeight ) {\n\treturn {\n\t\ttype: 'SET_CANVAS_MIN_HEIGHT',\n\t\tminHeight,\n\t};\n}\n\n/**\n * Set the current revision ID for revisions preview mode.\n * Pass a revision ID to enter revisions mode, or null to exit.\n *\n * @param {number|null} revisionId The revision ID, or null to exit revisions mode.\n * @return {Object} Action object.\n */\nexport function setCurrentRevisionId( revisionId ) {\n\treturn {\n\t\ttype: 'SET_CURRENT_REVISION_ID',\n\t\trevisionId,\n\t};\n}\n\n/**\n * Restore a revision by replacing the current content with the revision's content\n * and auto-saving.\n *\n * @param {number} revisionId The revision ID to restore.\n */\nexport const restoreRevision =\n\t( revisionId ) =>\n\tasync ( { select, dispatch, registry } ) => {\n\t\tconst postType = select.getCurrentPostType();\n\t\tconst postId = select.getCurrentPostId();\n\n\t\tconst revision = registry\n\t\t\t.select( coreStore )\n\t\t\t.getRevision( 'postType', postType, postId, revisionId, {\n\t\t\t\tcontext: 'edit',\n\t\t\t} );\n\n\t\tif ( ! revision ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Build the edits object with all restorable fields from the revision.\n\t\tconst edits = {\n\t\t\tblocks: undefined,\n\t\t\tcontent: revision.content.raw,\n\t\t};\n\t\tif ( revision.title?.raw !== undefined ) {\n\t\t\tedits.title = revision.title.raw;\n\t\t}\n\t\tif ( revision.excerpt?.raw !== undefined ) {\n\t\t\tedits.excerpt = revision.excerpt.raw;\n\t\t}\n\t\tif ( revision.meta !== undefined ) {\n\t\t\tedits.meta = revision.meta;\n\t\t}\n\n\t\t// Apply edits and save.\n\t\tdispatch.editPost( edits );\n\n\t\t// Exit revisions mode.\n\t\tdispatch.setCurrentRevisionId( null );\n\n\t\t// Save the post to persist the restored revision.\n\t\tawait dispatch.savePost();\n\n\t\t// Show success notice.\n\t\tregistry.dispatch( noticesStore ).createSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: Date and time of the revision. */\n\t\t\t\t__( 'Restored to revision from %s.' ),\n\t\t\t\tdateI18n( getDateSettings().formats.datetime, revision.date )\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'editor-revision-restored',\n\t\t\t}\n\t\t);\n\t};\n\n/**\n * Select a note by its ID, or clear the selection.\n *\n * @param {undefined|number|'new'} noteId The note ID to select, 'new' to open the new note form, or undefined to clear.\n * @param {Object} [options] Optional options for the selection.\n * @param {boolean} [options.focus] Whether to focus the selected note. Default false.\n * @return {Object} Action object.\n */\nexport function selectNote( noteId, options = { focus: false } ) {\n\treturn {\n\t\ttype: 'SELECT_NOTE',\n\t\tnoteId,\n\t\toptions,\n\t};\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { addQueryArgs } from '@wordpress/url';\nimport apiFetch from '@wordpress/api-fetch';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { dateI18n, getSettings as getDateSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport isTemplateRevertable from './utils/is-template-revertable';\nimport { buildRevisionsPageQuery } from './private-selectors';\nexport * from '../dataviews/store/private-actions';\n\n/**\n * Returns an action object used to set which template is currently being used/edited.\n *\n * @param {string} id Template Id.\n *\n * @return {Object} Action object.\n */\nexport function setCurrentTemplateId( id ) {\n\treturn {\n\t\ttype: 'SET_CURRENT_TEMPLATE_ID',\n\t\tid,\n\t};\n}\n\n/**\n * Create a block based template.\n *\n * @param {?Object} template Template to create and assign.\n */\nexport const createTemplate =\n\t( template ) =>\n\tasync ( { select, dispatch, registry } ) => {\n\t\tconst savedTemplate = await registry\n\t\t\t.dispatch( coreStore )\n\t\t\t.saveEntityRecord( 'postType', 'wp_template', template );\n\t\tregistry\n\t\t\t.dispatch( coreStore )\n\t\t\t.editEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tselect.getCurrentPostType(),\n\t\t\t\tselect.getCurrentPostId(),\n\t\t\t\t{\n\t\t\t\t\ttemplate: savedTemplate.slug,\n\t\t\t\t}\n\t\t\t);\n\t\tregistry\n\t\t\t.dispatch( noticesStore )\n\t\t\t.createSuccessNotice(\n\t\t\t\t__( \"Custom template created. You're in template mode now.\" ),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tactions: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: __( 'Go back' ),\n\t\t\t\t\t\t\tonClick: () =>\n\t\t\t\t\t\t\t\tdispatch.setRenderingMode(\n\t\t\t\t\t\t\t\t\tselect.getEditorSettings()\n\t\t\t\t\t\t\t\t\t\t.defaultRenderingMode\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t);\n\t\treturn savedTemplate;\n\t};\n\n/**\n * Update the provided block types to be visible.\n *\n * @param {string[]} blockNames Names of block types to show.\n */\nexport const showBlockTypes =\n\t( blockNames ) =>\n\t( { registry } ) => {\n\t\tconst existingBlockNames =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core', 'hiddenBlockTypes' ) ?? [];\n\n\t\tconst newBlockNames = existingBlockNames.filter(\n\t\t\t( type ) =>\n\t\t\t\t! (\n\t\t\t\t\tArray.isArray( blockNames ) ? blockNames : [ blockNames ]\n\t\t\t\t).includes( type )\n\t\t);\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core', 'hiddenBlockTypes', newBlockNames );\n\t};\n\n/**\n * Update the provided block types to be hidden.\n *\n * @param {string[]} blockNames Names of block types to hide.\n */\nexport const hideBlockTypes =\n\t( blockNames ) =>\n\t( { registry } ) => {\n\t\tconst existingBlockNames =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core', 'hiddenBlockTypes' ) ?? [];\n\n\t\tconst mergedBlockNames = new Set( [\n\t\t\t...existingBlockNames,\n\t\t\t...( Array.isArray( blockNames ) ? blockNames : [ blockNames ] ),\n\t\t] );\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core', 'hiddenBlockTypes', [ ...mergedBlockNames ] );\n\t};\n\n/**\n * Save entity records marked as dirty.\n *\n * @param {Object} options Options for the action.\n * @param {Function} [options.onSave] Callback when saving happens.\n * @param {object[]} [options.dirtyEntityRecords] Array of dirty entities.\n * @param {object[]} [options.entitiesToSkip] Array of entities to skip saving.\n * @param {Function} [options.close] Callback when the actions is called. It should be consolidated with `onSave`.\n * @param {string} [options.successNoticeContent] Optional custom success notice content. Defaults to 'Site updated.'.\n */\nexport const saveDirtyEntities =\n\t( {\n\t\tonSave,\n\t\tdirtyEntityRecords = [],\n\t\tentitiesToSkip = [],\n\t\tclose,\n\t\tsuccessNoticeContent,\n\t} = {} ) =>\n\t( { registry } ) => {\n\t\tconst PUBLISH_ON_SAVE_ENTITIES = [\n\t\t\t{ kind: 'postType', name: 'wp_navigation' },\n\t\t];\n\t\tconst saveNoticeId = 'site-editor-save-success';\n\t\tconst homeUrl = registry\n\t\t\t.select( coreStore )\n\t\t\t.getEntityRecord( 'root', '__unstableBase' )?.home;\n\t\tregistry.dispatch( noticesStore ).removeNotice( saveNoticeId );\n\t\tconst entitiesToSave = dirtyEntityRecords.filter(\n\t\t\t( { kind, name, key, property } ) => {\n\t\t\t\treturn ! entitiesToSkip.some(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === kind &&\n\t\t\t\t\t\telt.name === name &&\n\t\t\t\t\t\telt.key === key &&\n\t\t\t\t\t\telt.property === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\tclose?.( entitiesToSave );\n\t\tconst siteItemsToSave = [];\n\t\tconst pendingSavedRecords = [];\n\t\tentitiesToSave.forEach( ( { kind, name, key, property } ) => {\n\t\t\tif ( 'root' === kind && 'site' === name ) {\n\t\t\t\tsiteItemsToSave.push( property );\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tPUBLISH_ON_SAVE_ENTITIES.some(\n\t\t\t\t\t\t( typeToPublish ) =>\n\t\t\t\t\t\t\ttypeToPublish.kind === kind &&\n\t\t\t\t\t\t\ttypeToPublish.name === name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( coreStore )\n\t\t\t\t\t\t.editEntityRecord( kind, name, key, {\n\t\t\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tpendingSavedRecords.push(\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( coreStore )\n\t\t\t\t\t\t.saveEditedEntityRecord( kind, name, key )\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t\tif ( siteItemsToSave.length ) {\n\t\t\tpendingSavedRecords.push(\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( coreStore )\n\t\t\t\t\t.__experimentalSaveSpecifiedEntityEdits(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'site',\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tsiteItemsToSave\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.__unstableMarkLastChangeAsPersistent();\n\t\tPromise.all( pendingSavedRecords )\n\t\t\t.then( ( values ) => {\n\t\t\t\treturn onSave ? onSave( values ) : values;\n\t\t\t} )\n\t\t\t.then( ( values ) => {\n\t\t\t\tif (\n\t\t\t\t\tvalues.some( ( value ) => typeof value === 'undefined' )\n\t\t\t\t) {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t\t.createErrorNotice( __( 'Saving failed.' ) );\n\t\t\t\t} else {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t\t.createSuccessNotice(\n\t\t\t\t\t\t\tsuccessNoticeContent || __( 'Site updated.' ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: saveNoticeId,\n\t\t\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: __( 'View site' ),\n\t\t\t\t\t\t\t\t\t\turl: homeUrl,\n\t\t\t\t\t\t\t\t\t\topenInNewTab: true,\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}\n\t\t\t} )\n\t\t\t.catch( ( error ) =>\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.createErrorNotice(\n\t\t\t\t\t\t`${ __( 'Saving failed.' ) } ${ error }`\n\t\t\t\t\t)\n\t\t\t);\n\t};\n\n/**\n * Reverts a template to its original theme-provided file.\n *\n * @param {Object} template The template to revert.\n * @param {Object} [options]\n * @param {boolean} [options.allowUndo] Whether to allow the user to undo\n * reverting the template. Default true.\n */\nexport const revertTemplate =\n\t( template, { allowUndo = true } = {} ) =>\n\tasync ( { registry } ) => {\n\t\tconst noticeId = 'edit-site-template-reverted';\n\t\tregistry.dispatch( noticesStore ).removeNotice( noticeId );\n\t\tif ( ! isTemplateRevertable( template ) ) {\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.createErrorNotice( __( 'This template is not revertable.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst templateEntityConfig = registry\n\t\t\t\t.select( coreStore )\n\t\t\t\t.getEntityConfig( 'postType', template.type );\n\n\t\t\tif ( ! templateEntityConfig ) {\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.createErrorNotice(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'The editor has encountered an unexpected error. Please reload.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fileTemplatePath = addQueryArgs(\n\t\t\t\t`${ templateEntityConfig.baseURL }/${ template.id }`,\n\t\t\t\t{ context: 'edit', source: template.origin }\n\t\t\t);\n\n\t\t\tconst fileTemplate = await apiFetch( { path: fileTemplatePath } );\n\t\t\tif ( ! fileTemplate ) {\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.createErrorNotice(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'The editor has encountered an unexpected error. Please reload.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst serializeBlocks = ( {\n\t\t\t\tblocks: blocksForSerialization = [],\n\t\t\t} ) => __unstableSerializeAndClean( blocksForSerialization );\n\n\t\t\tconst edited = registry\n\t\t\t\t.select( coreStore )\n\t\t\t\t.getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\ttemplate.type,\n\t\t\t\t\ttemplate.id\n\t\t\t\t);\n\n\t\t\t// We are fixing up the undo level here to make sure we can undo\n\t\t\t// the revert in the header toolbar correctly.\n\t\t\tregistry.dispatch( coreStore ).editEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\ttemplate.type,\n\t\t\t\ttemplate.id,\n\t\t\t\t{\n\t\t\t\t\tcontent: serializeBlocks, // Required to make the `undo` behave correctly.\n\t\t\t\t\tblocks: edited.blocks, // Required to revert the blocks in the editor.\n\t\t\t\t\tsource: 'custom', // required to avoid turning the editor into a dirty state\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tundoIgnore: true, // Required to merge this edit with the last undo level.\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tconst blocks = parse( fileTemplate?.content?.raw );\n\t\t\tregistry\n\t\t\t\t.dispatch( coreStore )\n\t\t\t\t.editEntityRecord( 'postType', template.type, fileTemplate.id, {\n\t\t\t\t\tcontent: serializeBlocks,\n\t\t\t\t\tblocks,\n\t\t\t\t\tsource: 'theme',\n\t\t\t\t} );\n\n\t\t\tif ( allowUndo ) {\n\t\t\t\tconst undoRevert = () => {\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( coreStore )\n\t\t\t\t\t\t.editEntityRecord(\n\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\ttemplate.type,\n\t\t\t\t\t\t\tedited.id,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontent: serializeBlocks,\n\t\t\t\t\t\t\t\tblocks: edited.blocks,\n\t\t\t\t\t\t\t\tsource: 'custom',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t};\n\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.createSuccessNotice( __( 'Template reset.' ), {\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\tid: noticeId,\n\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Undo' ),\n\t\t\t\t\t\t\t\tonClick: undoRevert,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t} );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'Template revert failed. Please reload.' );\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.createErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t}\n\t};\n\n/**\n * Action that removes an array of templates, template parts or patterns.\n *\n * @param {Array} items An array of template,template part or pattern objects to remove.\n */\nexport const removeTemplates =\n\t( items ) =>\n\tasync ( { registry } ) => {\n\t\tconst isResetting = items.every( ( item ) => item?.has_theme_file );\n\n\t\tconst promiseResult = await Promise.allSettled(\n\t\t\titems.map( ( item ) => {\n\t\t\t\treturn registry\n\t\t\t\t\t.dispatch( coreStore )\n\t\t\t\t\t.deleteEntityRecord(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\titem.type,\n\t\t\t\t\t\titem.id,\n\t\t\t\t\t\t{ force: true },\n\t\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t\t);\n\t\t\t} )\n\t\t);\n\n\t\t// If all the promises were fulfilled with success.\n\t\tif ( promiseResult.every( ( { status } ) => status === 'fulfilled' ) ) {\n\t\t\tlet successMessage;\n\n\t\t\tif ( items.length === 1 ) {\n\t\t\t\t// Depending on how the entity was retrieved its title might be\n\t\t\t\t// an object or simple string.\n\t\t\t\tlet title;\n\t\t\t\tif ( typeof items[ 0 ].title === 'string' ) {\n\t\t\t\t\ttitle = items[ 0 ].title;\n\t\t\t\t} else if ( typeof items[ 0 ].title?.rendered === 'string' ) {\n\t\t\t\t\ttitle = items[ 0 ].title?.rendered;\n\t\t\t\t} else if ( typeof items[ 0 ].title?.raw === 'string' ) {\n\t\t\t\t\ttitle = items[ 0 ].title?.raw;\n\t\t\t\t}\n\t\t\t\tsuccessMessage = isResetting\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: The template/part's name. */\n\t\t\t\t\t\t\t__( '\"%s\" reset.' ),\n\t\t\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: The template/part's name. */\n\t\t\t\t\t\t\t_x( '\"%s\" deleted.', 'template part' ),\n\t\t\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t\t );\n\t\t\t} else {\n\t\t\t\tsuccessMessage = isResetting\n\t\t\t\t\t? __( 'Items reset.' )\n\t\t\t\t\t: __( 'Items deleted.' );\n\t\t\t}\n\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.createSuccessNotice( successMessage, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'editor-template-deleted-success',\n\t\t\t\t} );\n\t\t} else {\n\t\t\t// If there was at lease one failure.\n\t\t\tlet errorMessage;\n\t\t\t// If we were trying to delete a single template.\n\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\tif ( promiseResult[ 0 ].reason?.message ) {\n\t\t\t\t\terrorMessage = promiseResult[ 0 ].reason.message;\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = isResetting\n\t\t\t\t\t\t? __( 'An error occurred while reverting the item.' )\n\t\t\t\t\t\t: __( 'An error occurred while deleting the item.' );\n\t\t\t\t}\n\t\t\t\t// If we were trying to delete a multiple templates\n\t\t\t} else {\n\t\t\t\tconst errorMessages = new Set();\n\t\t\t\tconst failedPromises = promiseResult.filter(\n\t\t\t\t\t( { status } ) => status === 'rejected'\n\t\t\t\t);\n\t\t\t\tfor ( const failedPromise of failedPromises ) {\n\t\t\t\t\tif ( failedPromise.reason?.message ) {\n\t\t\t\t\t\terrorMessages.add( failedPromise.reason.message );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( errorMessages.size === 0 ) {\n\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t'An error occurred while deleting the items.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( errorMessages.size === 1 ) {\n\t\t\t\t\terrorMessage = isResetting\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'An error occurred while reverting the items: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'An error occurred while deleting the items: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t );\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = isResetting\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Some errors occurred while reverting the items: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Some errors occurred while deleting the items: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t );\n\t\t\t\t}\n\t\t\t}\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.createErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t}\n\t};\n\n/**\n * Set the default rendering mode preference for the current post type.\n *\n * @param {string} mode The rendering mode to set as default.\n */\nexport const setDefaultRenderingMode =\n\t( mode ) =>\n\t( { select, registry } ) => {\n\t\tconst postType = select.getCurrentPostType();\n\t\tconst theme = registry\n\t\t\t.select( coreStore )\n\t\t\t.getCurrentTheme()?.stylesheet;\n\t\tconst renderingModes =\n\t\t\tregistry\n\t\t\t\t.select( preferencesStore )\n\t\t\t\t.get( 'core', 'renderingModes' )?.[ theme ] ?? {};\n\n\t\tif ( renderingModes[ postType ] === mode ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newModes = {\n\t\t\t[ theme ]: {\n\t\t\t\t...renderingModes,\n\t\t\t\t[ postType ]: mode,\n\t\t\t},\n\t\t};\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.set( 'core', 'renderingModes', newModes );\n\t};\n\n/**\n * Set the current global styles navigation path.\n *\n * @param {string} path The navigation path.\n * @return {Object} Action object.\n */\nexport function setStylesPath( path ) {\n\treturn {\n\t\ttype: 'SET_STYLES_PATH',\n\t\tpath,\n\t};\n}\n\n/**\n * Set whether the stylebook is visible.\n *\n * @param {boolean} show Whether to show the stylebook.\n * @return {Object} Action object.\n */\nexport function setShowStylebook( show ) {\n\treturn {\n\t\ttype: 'SET_SHOW_STYLEBOOK',\n\t\tshow,\n\t};\n}\n\n/**\n * Reset the global styles navigation to initial state.\n *\n * @return {Object} Action object.\n */\nexport function resetStylesNavigation() {\n\treturn {\n\t\ttype: 'RESET_STYLES_NAVIGATION',\n\t};\n}\n\n/**\n * Set the minimum height of the canvas.\n *\n * @param {number} minHeight\n * @return {Object} Action object.\n */\nexport function setCanvasMinHeight( minHeight ) {\n\treturn {\n\t\ttype: 'SET_CANVAS_MIN_HEIGHT',\n\t\tminHeight,\n\t};\n}\n\n/**\n * Set the current revision ID for revisions preview mode.\n * Pass a revision ID to enter revisions mode, or null to exit.\n *\n * @param {number|null} revisionId The revision ID, or null to exit revisions mode.\n * @return {Object} Action object.\n */\nexport function setCurrentRevisionId( revisionId ) {\n\treturn {\n\t\ttype: 'SET_CURRENT_REVISION_ID',\n\t\trevisionId,\n\t};\n}\n\n/**\n * Set the current revisions page number and select the newest\n * revision on that page once it loads.\n *\n * @param {number} page The page number.\n */\nexport const setRevisionPage =\n\t( page ) =>\n\tasync ( { dispatch, select, registry } ) => {\n\t\tconst postType = select.getCurrentPostType();\n\t\tconst postId = select.getCurrentPostId();\n\t\tconst entityConfig = registry\n\t\t\t.select( coreStore )\n\t\t\t.getEntityConfig( 'postType', postType );\n\t\tconst revisionKey = entityConfig?.revisionKey || 'id';\n\n\t\tconst revisions = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getRevisions(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId,\n\t\t\t\tbuildRevisionsPageQuery( revisionKey, page )\n\t\t\t);\n\n\t\tregistry.batch( () => {\n\t\t\tdispatch( { type: 'SET_REVISION_PAGE', page } );\n\t\t\tif ( revisions?.length ) {\n\t\t\t\tdispatch.setCurrentRevisionId( revisions[ 0 ][ revisionKey ] );\n\t\t\t}\n\t\t} );\n\t};\n\n/**\n * Set whether the revision diff highlighting is shown.\n *\n * @param {boolean} showDiff Whether to show diff highlighting.\n * @return {Object} Action object.\n */\nexport function setShowRevisionDiff( showDiff ) {\n\treturn {\n\t\ttype: 'SET_SHOW_REVISION_DIFF',\n\t\tshowDiff,\n\t};\n}\n\n/**\n * Restore a revision by replacing the current content with the revision's content\n * and auto-saving.\n *\n * @param {number} revisionId The revision ID to restore.\n */\nexport const restoreRevision =\n\t( revisionId ) =>\n\tasync ( { select, dispatch, registry } ) => {\n\t\tconst postType = select.getCurrentPostType();\n\t\tconst postId = select.getCurrentPostId();\n\n\t\tconst entityConfig = registry\n\t\t\t.select( coreStore )\n\t\t\t.getEntityConfig( 'postType', postType );\n\t\tconst revisionKey = entityConfig?.revisionKey || 'id';\n\n\t\t// Use resolveSelect to ensure the revision is fetched if not yet\n\t\t// in the store. The _fields parameter matches the query used by\n\t\t// getRevisions so the result is served from cache without an\n\t\t// extra API call.\n\t\tconst revision = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getRevision( 'postType', postType, postId, revisionId, {\n\t\t\t\tcontext: 'edit',\n\t\t\t\t_fields: [\n\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t'id',\n\t\t\t\t\t\t'date',\n\t\t\t\t\t\t'modified',\n\t\t\t\t\t\t'author',\n\t\t\t\t\t\t'meta',\n\t\t\t\t\t\t'title.raw',\n\t\t\t\t\t\t'excerpt.raw',\n\t\t\t\t\t\t'content.raw',\n\t\t\t\t\t\trevisionKey,\n\t\t\t\t\t] ),\n\t\t\t\t].join(),\n\t\t\t} );\n\n\t\tif ( ! revision ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Build the edits object with all restorable fields from the revision.\n\t\tconst edits = {\n\t\t\tblocks: undefined,\n\t\t\tcontent: revision.content.raw,\n\t\t};\n\t\tif ( revision.title?.raw !== undefined ) {\n\t\t\tedits.title = revision.title.raw;\n\t\t}\n\t\tif ( revision.excerpt?.raw !== undefined ) {\n\t\t\tedits.excerpt = revision.excerpt.raw;\n\t\t}\n\t\tif ( revision.meta !== undefined ) {\n\t\t\tedits.meta = revision.meta;\n\t\t}\n\n\t\t// Apply edits and save.\n\t\tdispatch.editPost( edits );\n\n\t\t// Exit revisions mode.\n\t\tdispatch.setCurrentRevisionId( null );\n\n\t\t// Save the post to persist the restored revision.\n\t\tawait dispatch.savePost();\n\n\t\t// Show success notice.\n\t\tregistry.dispatch( noticesStore ).createSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: Date and time of the revision. */\n\t\t\t\t__( 'Restored to revision from %s.' ),\n\t\t\t\tdateI18n( getDateSettings().formats.datetime, revision.date )\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'editor-revision-restored',\n\t\t\t}\n\t\t);\n\t};\n\n/**\n * Select a note by its ID, or clear the selection.\n *\n * @param {undefined|number|'new'} noteId The note ID to select, 'new' to open the new note form, or undefined to clear.\n * @param {Object} [options] Optional options for the selection.\n * @param {boolean} [options.focus] Whether to focus the selected note. Default false.\n * @return {Object} Action object.\n */\nexport function selectNote( noteId, options = { focus: false } ) {\n\treturn {\n\t\ttype: 'SELECT_NOTE',\n\t\tnoteId,\n\t\toptions,\n\t};\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["coreStore", "noticesStore", "preferencesStore", "blockEditorStore", "isTemplateRevertable", "apiFetch", "getDateSettings"]
7
7
  }
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // packages/editor/src/store/private-selectors.js
31
31
  var private_selectors_exports = {};
32
32
  __export(private_selectors_exports, {
33
+ buildRevisionsPageQuery: () => buildRevisionsPageQuery,
33
34
  getCanvasMinHeight: () => getCanvasMinHeight,
34
35
  getCurrentRevision: () => getCurrentRevision,
35
36
  getCurrentRevisionId: () => getCurrentRevisionId,
@@ -39,16 +40,21 @@ __export(private_selectors_exports, {
39
40
  getInserter: () => getInserter,
40
41
  getInserterSidebarToggleRef: () => getInserterSidebarToggleRef,
41
42
  getListViewToggleRef: () => getListViewToggleRef,
43
+ getPageRevisions: () => getPageRevisions,
42
44
  getPostBlocksByName: () => getPostBlocksByName,
43
45
  getPostIcon: () => getPostIcon,
44
46
  getPreviousRevision: () => getPreviousRevision,
47
+ getRevisionPage: () => getRevisionPage,
48
+ getRevisionsPerPage: () => getRevisionsPerPage,
45
49
  getSelectedNote: () => getSelectedNote,
46
50
  getShowStylebook: () => getShowStylebook,
47
51
  getStylesPath: () => getStylesPath,
48
52
  hasPostMetaChanges: () => hasPostMetaChanges,
53
+ isCollaborationEnabledForCurrentPost: () => isCollaborationEnabledForCurrentPost,
49
54
  isEntityReady: () => isEntityReady,
50
55
  isNoteFocused: () => isNoteFocused,
51
- isRevisionsMode: () => isRevisionsMode
56
+ isRevisionsMode: () => isRevisionsMode,
57
+ isShowingRevisionDiff: () => isShowingRevisionDiff
52
58
  });
53
59
  module.exports = __toCommonJS(private_selectors_exports);
54
60
  var import_fast_deep_equal = __toESM(require("fast-deep-equal"));
@@ -60,6 +66,7 @@ var import_preferences = require("@wordpress/preferences");
60
66
  var import_selectors = require("./selectors.cjs");
61
67
  var import_private_selectors = require("../dataviews/store/private-selectors.cjs");
62
68
  var import_utils = require("../utils/index.cjs");
69
+ var import_lock_unlock = require("../lock-unlock.cjs");
63
70
  var EMPTY_INSERTION_POINT = {
64
71
  rootClientId: void 0,
65
72
  insertionIndex: void 0,
@@ -73,13 +80,23 @@ var getInserter = (0, import_data.createRegistrySelector)(
73
80
  return state.blockInserterPanel;
74
81
  }
75
82
  if ((0, import_selectors.getRenderingMode)(state) === "template-locked") {
76
- const [postContentClientId] = select(import_block_editor.store).getBlocksByName(
77
- "core/post-content"
78
- );
83
+ const {
84
+ getBlocksByName,
85
+ getSelectedBlockClientId,
86
+ getBlockParents,
87
+ getBlockOrder
88
+ } = select(import_block_editor.store);
89
+ const [postContentClientId] = getBlocksByName("core/post-content");
79
90
  if (postContentClientId) {
91
+ const selectedBlockClientId = getSelectedBlockClientId();
92
+ if (selectedBlockClientId && selectedBlockClientId !== postContentClientId && getBlockParents(selectedBlockClientId).includes(
93
+ postContentClientId
94
+ )) {
95
+ return EMPTY_INSERTION_POINT;
96
+ }
80
97
  return {
81
98
  rootClientId: postContentClientId,
82
- insertionIndex: void 0,
99
+ insertionIndex: getBlockOrder(postContentClientId).length,
83
100
  filterValue: void 0
84
101
  };
85
102
  }
@@ -87,13 +104,21 @@ var getInserter = (0, import_data.createRegistrySelector)(
87
104
  return EMPTY_INSERTION_POINT;
88
105
  },
89
106
  (state) => {
90
- const [postContentClientId] = select(import_block_editor.store).getBlocksByName(
91
- "core/post-content"
92
- );
107
+ const {
108
+ getBlocksByName,
109
+ getSelectedBlockClientId,
110
+ getBlockParents,
111
+ getBlockOrder
112
+ } = select(import_block_editor.store);
113
+ const [postContentClientId] = getBlocksByName("core/post-content");
114
+ const selectedBlockClientId = getSelectedBlockClientId();
93
115
  return [
94
116
  state.blockInserterPanel,
95
117
  (0, import_selectors.getRenderingMode)(state),
96
- postContentClientId
118
+ postContentClientId,
119
+ selectedBlockClientId,
120
+ selectedBlockClientId ? getBlockParents(selectedBlockClientId) : void 0,
121
+ postContentClientId ? getBlockOrder(postContentClientId).length : void 0
97
122
  ];
98
123
  }
99
124
  )
@@ -181,7 +206,15 @@ var getPostBlocksByName = (0, import_data.createRegistrySelector)(
181
206
  })
182
207
  );
183
208
  },
184
- () => [select(import_block_editor.store).getBlocks()]
209
+ (state, blockNames) => {
210
+ blockNames = Array.isArray(blockNames) ? blockNames : [blockNames];
211
+ const { getBlocksByName, getBlockParents } = select(import_block_editor.store);
212
+ const clientIds = getBlocksByName(blockNames);
213
+ const parentsOfClientIds = clientIds.map(
214
+ (id) => getBlockParents(id)
215
+ );
216
+ return [clientIds, ...parentsOfClientIds];
217
+ }
185
218
  )
186
219
  );
187
220
  var getDefaultRenderingMode = (0, import_data.createRegistrySelector)(
@@ -218,9 +251,63 @@ function getShowStylebook(state) {
218
251
  function getCanvasMinHeight(state) {
219
252
  return state.canvasMinHeight;
220
253
  }
254
+ function getRevisionPage(state) {
255
+ return state.revisionPage;
256
+ }
257
+ function buildRevisionsPageQuery(revisionKey, page) {
258
+ return {
259
+ per_page: REVISIONS_PER_PAGE,
260
+ page,
261
+ context: "edit",
262
+ orderby: "date",
263
+ order: "desc",
264
+ _fields: [
265
+ .../* @__PURE__ */ new Set([
266
+ "id",
267
+ "date",
268
+ "modified",
269
+ "author",
270
+ "meta",
271
+ "title.raw",
272
+ "excerpt.raw",
273
+ "content.raw",
274
+ revisionKey
275
+ ])
276
+ ].join()
277
+ };
278
+ }
279
+ var REVISIONS_PER_PAGE = 100;
280
+ function getRevisionsPerPage() {
281
+ return REVISIONS_PER_PAGE;
282
+ }
283
+ var getPageRevisions = (0, import_data.createRegistrySelector)(
284
+ (select) => (state, page) => {
285
+ if (!page) {
286
+ return null;
287
+ }
288
+ const { type: postType, id: postId } = (0, import_selectors.getCurrentPost)(state);
289
+ if (!postType || !postId) {
290
+ return null;
291
+ }
292
+ const entityConfig = select(import_core_data.store).getEntityConfig(
293
+ "postType",
294
+ postType
295
+ );
296
+ const revisionKey = entityConfig?.revisionKey || "id";
297
+ return select(import_core_data.store).getRevisions(
298
+ "postType",
299
+ postType,
300
+ postId,
301
+ buildRevisionsPageQuery(revisionKey, page)
302
+ );
303
+ }
304
+ );
221
305
  function isRevisionsMode(state) {
222
306
  return state.revisionId !== null;
223
307
  }
308
+ function isShowingRevisionDiff(state) {
309
+ return state.showRevisionDiff;
310
+ }
224
311
  function getCurrentRevisionId(state) {
225
312
  return state.revisionId;
226
313
  }
@@ -230,22 +317,26 @@ var getCurrentRevision = (0, import_data.createRegistrySelector)(
230
317
  if (!revisionId) {
231
318
  return void 0;
232
319
  }
320
+ const page = getRevisionPage(state);
321
+ if (!page) {
322
+ return null;
323
+ }
233
324
  const { type: postType, id: postId } = (0, import_selectors.getCurrentPost)(state);
325
+ const entityConfig = select(import_core_data.store).getEntityConfig(
326
+ "postType",
327
+ postType
328
+ );
329
+ const revisionKey = entityConfig?.revisionKey || "id";
234
330
  const revisions = select(import_core_data.store).getRevisions(
235
331
  "postType",
236
332
  postType,
237
333
  postId,
238
- { per_page: -1, context: "edit" }
334
+ buildRevisionsPageQuery(revisionKey, page)
239
335
  );
240
336
  if (!revisions) {
241
337
  return null;
242
338
  }
243
- const entityConfig = select(import_core_data.store).getEntityConfig(
244
- "postType",
245
- postType
246
- );
247
- const revKey = entityConfig?.revisionKey || "id";
248
- return revisions.find((r) => r[revKey] === revisionId) ?? null;
339
+ return revisions.find((r) => r[revisionKey] === revisionId) ?? null;
249
340
  }
250
341
  );
251
342
  function getSelectedNote(state) {
@@ -260,35 +351,64 @@ var getPreviousRevision = (0, import_data.createRegistrySelector)(
260
351
  if (!currentRevisionId) {
261
352
  return void 0;
262
353
  }
354
+ const page = getRevisionPage(state);
355
+ if (!page) {
356
+ return null;
357
+ }
263
358
  const { type: postType, id: postId } = (0, import_selectors.getCurrentPost)(state);
359
+ const entityConfig = select(import_core_data.store).getEntityConfig(
360
+ "postType",
361
+ postType
362
+ );
363
+ const revisionKey = entityConfig?.revisionKey || "id";
364
+ const query = buildRevisionsPageQuery(revisionKey, page);
264
365
  const revisions = select(import_core_data.store).getRevisions(
265
366
  "postType",
266
367
  postType,
267
368
  postId,
268
- { per_page: -1, context: "edit" }
369
+ query
269
370
  );
270
371
  if (!revisions) {
271
372
  return null;
272
373
  }
273
- const sortedRevisions = [...revisions].sort(
274
- (a, b) => new Date(a.date) - new Date(b.date)
374
+ const currentIndex = revisions.findIndex(
375
+ (r) => r[revisionKey] === currentRevisionId
275
376
  );
377
+ if (currentIndex >= 0 && currentIndex < revisions.length - 1) {
378
+ return revisions[currentIndex + 1];
379
+ }
380
+ const totalRevisions = (0, import_selectors.getCurrentPostRevisionsCount)(state);
381
+ const totalPages = Math.ceil(totalRevisions / query.per_page) || 1;
382
+ if (currentIndex === revisions.length - 1 && page < totalPages) {
383
+ const nextPageRevisions = select(import_core_data.store).getRevisions(
384
+ "postType",
385
+ postType,
386
+ postId,
387
+ buildRevisionsPageQuery(revisionKey, page + 1)
388
+ );
389
+ return nextPageRevisions?.[0] ?? null;
390
+ }
391
+ return null;
392
+ }
393
+ );
394
+ var isCollaborationEnabledForCurrentPost = (0, import_data.createRegistrySelector)(
395
+ (select) => (state) => {
396
+ if (!(0, import_lock_unlock.unlock)(select(import_core_data.store)).isCollaborationSupported()) {
397
+ return false;
398
+ }
399
+ const currentPostType = (0, import_selectors.getCurrentPostType)(state);
276
400
  const entityConfig = select(import_core_data.store).getEntityConfig(
277
401
  "postType",
278
- postType
402
+ currentPostType
279
403
  );
280
- const revKey = entityConfig?.revisionKey || "id";
281
- const currentIndex = sortedRevisions.findIndex(
282
- (r) => r[revKey] === currentRevisionId
404
+ return Boolean(
405
+ entityConfig?.syncConfig && window._wpCollaborationEnabled
283
406
  );
284
- if (currentIndex > 0) {
285
- return sortedRevisions[currentIndex - 1];
286
- }
287
- return null;
288
407
  }
289
408
  );
290
409
  // Annotate the CommonJS export names for ESM import in node:
291
410
  0 && (module.exports = {
411
+ buildRevisionsPageQuery,
292
412
  getCanvasMinHeight,
293
413
  getCurrentRevision,
294
414
  getCurrentRevisionId,
@@ -298,15 +418,20 @@ var getPreviousRevision = (0, import_data.createRegistrySelector)(
298
418
  getInserter,
299
419
  getInserterSidebarToggleRef,
300
420
  getListViewToggleRef,
421
+ getPageRevisions,
301
422
  getPostBlocksByName,
302
423
  getPostIcon,
303
424
  getPreviousRevision,
425
+ getRevisionPage,
426
+ getRevisionsPerPage,
304
427
  getSelectedNote,
305
428
  getShowStylebook,
306
429
  getStylesPath,
307
430
  hasPostMetaChanges,
431
+ isCollaborationEnabledForCurrentPost,
308
432
  isEntityReady,
309
433
  isNoteFocused,
310
- isRevisionsMode
434
+ isRevisionsMode,
435
+ isShowingRevisionDiff
311
436
  });
312
437
  //# sourceMappingURL=private-selectors.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/private-selectors.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal';\n\n/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { createSelector, createRegistrySelector } from '@wordpress/data';\nimport {\n\tlayout,\n\tsymbol,\n\tnavigation,\n\tpage as pageIcon,\n\tverse,\n} from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { getRenderingMode, getCurrentPost } from './selectors';\nimport {\n\tgetEntityActions as _getEntityActions,\n\tgetEntityFields as _getEntityFields,\n\tisEntityReady as _isEntityReady,\n} from '../dataviews/store/private-selectors';\nimport { getTemplatePartIcon } from '../utils';\n\nconst EMPTY_INSERTION_POINT = {\n\trootClientId: undefined,\n\tinsertionIndex: undefined,\n\tfilterValue: undefined,\n};\n\n/**\n * These are rendering modes that the editor supports.\n */\nconst RENDERING_MODES = [ 'post-only', 'template-locked' ];\n\n/**\n * Get the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID, index to insert at and starting filter value.\n */\nexport const getInserter = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state ) => {\n\t\t\tif ( typeof state.blockInserterPanel === 'object' ) {\n\t\t\t\treturn state.blockInserterPanel;\n\t\t\t}\n\n\t\t\tif ( getRenderingMode( state ) === 'template-locked' ) {\n\t\t\t\tconst [ postContentClientId ] =\n\t\t\t\t\tselect( blockEditorStore ).getBlocksByName(\n\t\t\t\t\t\t'core/post-content'\n\t\t\t\t\t);\n\t\t\t\tif ( postContentClientId ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\trootClientId: postContentClientId,\n\t\t\t\t\t\tinsertionIndex: undefined,\n\t\t\t\t\t\tfilterValue: undefined,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn EMPTY_INSERTION_POINT;\n\t\t},\n\t\t( state ) => {\n\t\t\tconst [ postContentClientId ] =\n\t\t\t\tselect( blockEditorStore ).getBlocksByName(\n\t\t\t\t\t'core/post-content'\n\t\t\t\t);\n\t\t\treturn [\n\t\t\t\tstate.blockInserterPanel,\n\t\t\t\tgetRenderingMode( state ),\n\t\t\t\tpostContentClientId,\n\t\t\t];\n\t\t}\n\t)\n);\n\nexport function getListViewToggleRef( state ) {\n\treturn state.listViewToggleRef;\n}\nexport function getInserterSidebarToggleRef( state ) {\n\treturn state.inserterSidebarToggleRef;\n}\nconst CARD_ICONS = {\n\twp_block: symbol,\n\twp_navigation: navigation,\n\tpage: pageIcon,\n\tpost: verse,\n};\n\nexport const getPostIcon = createRegistrySelector(\n\t( select ) => ( state, postType, options ) => {\n\t\t{\n\t\t\tif (\n\t\t\t\tpostType === 'wp_template_part' ||\n\t\t\t\tpostType === 'wp_template'\n\t\t\t) {\n\t\t\t\tconst templateAreas =\n\t\t\t\t\tselect( coreStore ).getCurrentTheme()\n\t\t\t\t\t\t?.default_template_part_areas || [];\n\n\t\t\t\tconst areaData = templateAreas.find(\n\t\t\t\t\t( item ) => options.area === item.area\n\t\t\t\t);\n\n\t\t\t\tif ( areaData?.icon ) {\n\t\t\t\t\treturn getTemplatePartIcon( areaData.icon );\n\t\t\t\t}\n\n\t\t\t\treturn layout;\n\t\t\t}\n\t\t\tif ( CARD_ICONS[ postType ] ) {\n\t\t\t\treturn CARD_ICONS[ postType ];\n\t\t\t}\n\t\t\tconst postTypeEntity = select( coreStore ).getPostType( postType );\n\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t// also supports urls and svg as values.\n\t\t\tif (\n\t\t\t\ttypeof postTypeEntity?.icon === 'string' &&\n\t\t\t\tpostTypeEntity.icon.startsWith( 'dashicons-' )\n\t\t\t) {\n\t\t\t\treturn postTypeEntity.icon.slice( 10 );\n\t\t\t}\n\t\t\treturn pageIcon;\n\t\t}\n\t}\n);\n\n/**\n * Returns true if there are unsaved changes to the\n * post's meta fields, and false otherwise.\n *\n * @param {Object} state Global application state.\n * @param {string} postType The post type of the post.\n * @param {number} postId The ID of the post.\n *\n * @return {boolean} Whether there are edits or not in the meta fields of the relevant post.\n */\nexport const hasPostMetaChanges = createRegistrySelector(\n\t( select ) => ( state, postType, postId ) => {\n\t\tconst { type: currentPostType, id: currentPostId } =\n\t\t\tgetCurrentPost( state );\n\t\t// If no postType or postId is passed, use the current post.\n\t\tconst edits = select( coreStore ).getEntityRecordNonTransientEdits(\n\t\t\t'postType',\n\t\t\tpostType || currentPostType,\n\t\t\tpostId || currentPostId\n\t\t);\n\n\t\tif ( ! edits?.meta ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Compare if anything apart from `footnotes` has changed.\n\t\tconst originalPostMeta = select( coreStore ).getEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType || currentPostType,\n\t\t\tpostId || currentPostId\n\t\t)?.meta;\n\n\t\treturn ! fastDeepEqual(\n\t\t\t{ ...originalPostMeta, footnotes: undefined },\n\t\t\t{ ...edits.meta, footnotes: undefined }\n\t\t);\n\t}\n);\n\nexport function getEntityActions( state, ...args ) {\n\treturn _getEntityActions( state.dataviews, ...args );\n}\n\nexport function isEntityReady( state, ...args ) {\n\treturn _isEntityReady( state.dataviews, ...args );\n}\n\nexport function getEntityFields( state, ...args ) {\n\treturn _getEntityFields( state.dataviews, ...args );\n}\n\n/**\n * Similar to getBlocksByName in @wordpress/block-editor, but only returns the top-most\n * blocks that aren't descendants of the query block.\n *\n * @param {Object} state Global application state.\n * @param {Array|string} blockNames Block names of the blocks to retrieve.\n *\n * @return {Array} Block client IDs.\n */\nexport const getPostBlocksByName = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, blockNames ) => {\n\t\t\tblockNames = Array.isArray( blockNames )\n\t\t\t\t? blockNames\n\t\t\t\t: [ blockNames ];\n\t\t\tconst { getBlocksByName, getBlockParents, getBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn getBlocksByName( blockNames ).filter( ( clientId ) =>\n\t\t\t\tgetBlockParents( clientId ).every( ( parentClientId ) => {\n\t\t\t\t\tconst parentBlockName = getBlockName( parentClientId );\n\t\t\t\t\treturn (\n\t\t\t\t\t\t// Ignore descendents of the query block.\n\t\t\t\t\t\tparentBlockName !== 'core/query' &&\n\t\t\t\t\t\t// Enable only the top-most block.\n\t\t\t\t\t\t! blockNames.includes( parentBlockName )\n\t\t\t\t\t);\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t() => [ select( blockEditorStore ).getBlocks() ]\n\t)\n);\n\n/**\n * Returns the default rendering mode for a post type by user preference or post type configuration.\n *\n * @param {Object} state Global application state.\n * @param {string} postType The post type.\n *\n * @return {string} The default rendering mode. Returns `undefined` while resolving value.\n */\nexport const getDefaultRenderingMode = createRegistrySelector(\n\t( select ) => ( state, postType ) => {\n\t\tconst { getPostType, getCurrentTheme, hasFinishedResolution } =\n\t\t\tselect( coreStore );\n\n\t\t// This needs to be called before `hasFinishedResolution`.\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst currentTheme = getCurrentTheme();\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst postTypeEntity = getPostType( postType );\n\n\t\t// Wait for the post type and theme resolution.\n\t\tif (\n\t\t\t! hasFinishedResolution( 'getPostType', [ postType ] ) ||\n\t\t\t! hasFinishedResolution( 'getCurrentTheme' )\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst theme = currentTheme?.stylesheet;\n\t\tconst defaultModePreference = select( preferencesStore ).get(\n\t\t\t'core',\n\t\t\t'renderingModes'\n\t\t)?.[ theme ]?.[ postType ];\n\t\tconst postTypeDefaultMode = Array.isArray(\n\t\t\tpostTypeEntity?.supports?.editor\n\t\t)\n\t\t\t? postTypeEntity.supports.editor.find(\n\t\t\t\t\t( features ) => 'default-mode' in features\n\t\t\t )?.[ 'default-mode' ]\n\t\t\t: undefined;\n\n\t\tconst defaultMode = defaultModePreference || postTypeDefaultMode;\n\n\t\t// Fallback gracefully to 'post-only' when rendering mode is not supported.\n\t\tif ( ! RENDERING_MODES.includes( defaultMode ) ) {\n\t\t\treturn 'post-only';\n\t\t}\n\n\t\treturn defaultMode;\n\t}\n);\n\n/**\n * Get the current global styles navigation path.\n *\n * @param {Object} state Global application state.\n * @return {string} The current styles path.\n */\nexport function getStylesPath( state ) {\n\treturn state.stylesPath ?? '/';\n}\n\n/**\n * Get whether the stylebook is currently visible.\n *\n * @param {Object} state Global application state.\n * @return {boolean} Whether the stylebook is visible.\n */\nexport function getShowStylebook( state ) {\n\treturn state.showStylebook ?? false;\n}\n\n/**\n * Get the canvas minimum height.\n *\n * @param {Object} state Global application state.\n * @return {number} The canvas minimum height.\n */\nexport function getCanvasMinHeight( state ) {\n\treturn state.canvasMinHeight;\n}\n\n/**\n * Returns whether the editor is in revisions preview mode.\n *\n * @param {Object} state Global application state.\n * @return {boolean} Whether revisions mode is active.\n */\nexport function isRevisionsMode( state ) {\n\treturn state.revisionId !== null;\n}\n\n/**\n * Returns the current revision ID in revisions mode.\n *\n * @param {Object} state Global application state.\n * @return {number|null} The revision ID, or null if not in revisions mode.\n */\nexport function getCurrentRevisionId( state ) {\n\treturn state.revisionId;\n}\n\n/**\n * Returns the current revision object in revisions mode.\n *\n * @param {Object} state Global application state.\n * @return {Object|null|undefined} The revision object, null if loading, or undefined if not in revisions mode.\n */\nexport const getCurrentRevision = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\tconst revisionId = getCurrentRevisionId( state );\n\t\tif ( ! revisionId ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst { type: postType, id: postId } = getCurrentPost( state );\n\t\t// - Use getRevisions (plural) instead of getRevision (singular) to\n\t\t// avoid a race condition where both API calls complete around the\n\t\t// same time and the single revision fetch overwrites the list in the\n\t\t// store.\n\t\t// - getRevision also needs to be updated to check if there's any\n\t\t// received revisions from the collection API call to avoid unnecessary\n\t\t// API calls.\n\t\tconst revisions = select( coreStore ).getRevisions(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId,\n\t\t\t{ per_page: -1, context: 'edit' }\n\t\t);\n\t\tif ( ! revisions ) {\n\t\t\treturn null;\n\t\t}\n\t\tconst entityConfig = select( coreStore ).getEntityConfig(\n\t\t\t'postType',\n\t\t\tpostType\n\t\t);\n\t\tconst revKey = entityConfig?.revisionKey || 'id';\n\t\treturn revisions.find( ( r ) => r[ revKey ] === revisionId ) ?? null;\n\t}\n);\n\n/**\n * Returns the currently selected note ID.\n *\n * @param {Object} state Global application state.\n *\n * @return {undefined|number|'new'} The selected note ID, 'new' for the new note form, or undefined if none.\n */\nexport function getSelectedNote( state ) {\n\treturn state.selectedNote?.noteId;\n}\n\n/**\n * Returns whether the selected note should be focused.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the selected note should be focused.\n */\nexport function isNoteFocused( state ) {\n\treturn !! state.selectedNote?.options?.focus;\n}\n\n/**\n * Returns the previous revision (the one before the current revision).\n * Used for diffing between revisions.\n *\n * @param {Object} state Global application state.\n * @return {Object|null|undefined} The previous revision object, null if loading or no previous revision, or undefined if not in revisions mode.\n */\nexport const getPreviousRevision = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\tconst currentRevisionId = getCurrentRevisionId( state );\n\t\tif ( ! currentRevisionId ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst { type: postType, id: postId } = getCurrentPost( state );\n\t\tconst revisions = select( coreStore ).getRevisions(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId,\n\t\t\t{ per_page: -1, context: 'edit' }\n\t\t);\n\t\tif ( ! revisions ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Sort by date ascending (oldest first).\n\t\tconst sortedRevisions = [ ...revisions ].sort(\n\t\t\t( a, b ) => new Date( a.date ) - new Date( b.date )\n\t\t);\n\n\t\t// Find current revision index.\n\t\tconst entityConfig = select( coreStore ).getEntityConfig(\n\t\t\t'postType',\n\t\t\tpostType\n\t\t);\n\t\tconst revKey = entityConfig?.revisionKey || 'id';\n\t\tconst currentIndex = sortedRevisions.findIndex(\n\t\t\t( r ) => r[ revKey ] === currentRevisionId\n\t\t);\n\n\t\t// Return the previous revision (older one) if it exists.\n\t\tif ( currentIndex > 0 ) {\n\t\t\treturn sortedRevisions[ currentIndex - 1 ];\n\t\t}\n\n\t\treturn null;\n\t}\n);\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal';\n\n/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { createSelector, createRegistrySelector } from '@wordpress/data';\nimport {\n\tlayout,\n\tsymbol,\n\tnavigation,\n\tpage as pageIcon,\n\tverse,\n} from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetRenderingMode,\n\tgetCurrentPost,\n\tgetCurrentPostType,\n\tgetCurrentPostRevisionsCount,\n} from './selectors';\nimport {\n\tgetEntityActions as _getEntityActions,\n\tgetEntityFields as _getEntityFields,\n\tisEntityReady as _isEntityReady,\n} from '../dataviews/store/private-selectors';\nimport { getTemplatePartIcon } from '../utils';\nimport { unlock } from '../lock-unlock';\n\nconst EMPTY_INSERTION_POINT = {\n\trootClientId: undefined,\n\tinsertionIndex: undefined,\n\tfilterValue: undefined,\n};\n\n/**\n * These are rendering modes that the editor supports.\n */\nconst RENDERING_MODES = [ 'post-only', 'template-locked' ];\n\n/**\n * Get the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID, index to insert at and starting filter value.\n */\nexport const getInserter = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state ) => {\n\t\t\tif ( typeof state.blockInserterPanel === 'object' ) {\n\t\t\t\treturn state.blockInserterPanel;\n\t\t\t}\n\n\t\t\tif ( getRenderingMode( state ) === 'template-locked' ) {\n\t\t\t\tconst {\n\t\t\t\t\tgetBlocksByName,\n\t\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\t\tgetBlockParents,\n\t\t\t\t\tgetBlockOrder,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst [ postContentClientId ] =\n\t\t\t\t\tgetBlocksByName( 'core/post-content' );\n\t\t\t\tif ( postContentClientId ) {\n\t\t\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\t\t\t// If a block inside Post Content is selected,\n\t\t\t\t\t// let the inserter use its default logic for determining the\n\t\t\t\t\t// insertion position by returning an empty insertion point.\n\t\t\t\t\tif (\n\t\t\t\t\t\tselectedBlockClientId &&\n\t\t\t\t\t\tselectedBlockClientId !== postContentClientId &&\n\t\t\t\t\t\tgetBlockParents( selectedBlockClientId ).includes(\n\t\t\t\t\t\t\tpostContentClientId\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn EMPTY_INSERTION_POINT;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Otherwise (no selection, or Post Content itself\n\t\t\t\t\t// is selected), insert at the end of Post Content.\n\t\t\t\t\treturn {\n\t\t\t\t\t\trootClientId: postContentClientId,\n\t\t\t\t\t\tinsertionIndex:\n\t\t\t\t\t\t\tgetBlockOrder( postContentClientId ).length,\n\t\t\t\t\t\tfilterValue: undefined,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn EMPTY_INSERTION_POINT;\n\t\t},\n\t\t( state ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocksByName,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockParents,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst [ postContentClientId ] =\n\t\t\t\tgetBlocksByName( 'core/post-content' );\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\t\treturn [\n\t\t\t\tstate.blockInserterPanel,\n\t\t\t\tgetRenderingMode( state ),\n\t\t\t\tpostContentClientId,\n\t\t\t\tselectedBlockClientId,\n\t\t\t\tselectedBlockClientId\n\t\t\t\t\t? getBlockParents( selectedBlockClientId )\n\t\t\t\t\t: undefined,\n\t\t\t\tpostContentClientId\n\t\t\t\t\t? getBlockOrder( postContentClientId ).length\n\t\t\t\t\t: undefined,\n\t\t\t];\n\t\t}\n\t)\n);\n\nexport function getListViewToggleRef( state ) {\n\treturn state.listViewToggleRef;\n}\nexport function getInserterSidebarToggleRef( state ) {\n\treturn state.inserterSidebarToggleRef;\n}\nconst CARD_ICONS = {\n\twp_block: symbol,\n\twp_navigation: navigation,\n\tpage: pageIcon,\n\tpost: verse,\n};\n\nexport const getPostIcon = createRegistrySelector(\n\t( select ) => ( state, postType, options ) => {\n\t\t{\n\t\t\tif (\n\t\t\t\tpostType === 'wp_template_part' ||\n\t\t\t\tpostType === 'wp_template'\n\t\t\t) {\n\t\t\t\tconst templateAreas =\n\t\t\t\t\tselect( coreStore ).getCurrentTheme()\n\t\t\t\t\t\t?.default_template_part_areas || [];\n\n\t\t\t\tconst areaData = templateAreas.find(\n\t\t\t\t\t( item ) => options.area === item.area\n\t\t\t\t);\n\n\t\t\t\tif ( areaData?.icon ) {\n\t\t\t\t\treturn getTemplatePartIcon( areaData.icon );\n\t\t\t\t}\n\n\t\t\t\treturn layout;\n\t\t\t}\n\t\t\tif ( CARD_ICONS[ postType ] ) {\n\t\t\t\treturn CARD_ICONS[ postType ];\n\t\t\t}\n\t\t\tconst postTypeEntity = select( coreStore ).getPostType( postType );\n\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t// also supports urls and svg as values.\n\t\t\tif (\n\t\t\t\ttypeof postTypeEntity?.icon === 'string' &&\n\t\t\t\tpostTypeEntity.icon.startsWith( 'dashicons-' )\n\t\t\t) {\n\t\t\t\treturn postTypeEntity.icon.slice( 10 );\n\t\t\t}\n\t\t\treturn pageIcon;\n\t\t}\n\t}\n);\n\n/**\n * Returns true if there are unsaved changes to the\n * post's meta fields, and false otherwise.\n *\n * @param {Object} state Global application state.\n * @param {string} postType The post type of the post.\n * @param {number} postId The ID of the post.\n *\n * @return {boolean} Whether there are edits or not in the meta fields of the relevant post.\n */\nexport const hasPostMetaChanges = createRegistrySelector(\n\t( select ) => ( state, postType, postId ) => {\n\t\tconst { type: currentPostType, id: currentPostId } =\n\t\t\tgetCurrentPost( state );\n\t\t// If no postType or postId is passed, use the current post.\n\t\tconst edits = select( coreStore ).getEntityRecordNonTransientEdits(\n\t\t\t'postType',\n\t\t\tpostType || currentPostType,\n\t\t\tpostId || currentPostId\n\t\t);\n\n\t\tif ( ! edits?.meta ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Compare if anything apart from `footnotes` has changed.\n\t\tconst originalPostMeta = select( coreStore ).getEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType || currentPostType,\n\t\t\tpostId || currentPostId\n\t\t)?.meta;\n\n\t\treturn ! fastDeepEqual(\n\t\t\t{ ...originalPostMeta, footnotes: undefined },\n\t\t\t{ ...edits.meta, footnotes: undefined }\n\t\t);\n\t}\n);\n\nexport function getEntityActions( state, ...args ) {\n\treturn _getEntityActions( state.dataviews, ...args );\n}\n\nexport function isEntityReady( state, ...args ) {\n\treturn _isEntityReady( state.dataviews, ...args );\n}\n\nexport function getEntityFields( state, ...args ) {\n\treturn _getEntityFields( state.dataviews, ...args );\n}\n\n/**\n * Similar to getBlocksByName in @wordpress/block-editor, but only returns the top-most\n * blocks that aren't descendants of the query block.\n *\n * @param {Object} state Global application state.\n * @param {Array|string} blockNames Block names of the blocks to retrieve.\n *\n * @return {Array} Block client IDs.\n */\nexport const getPostBlocksByName = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, blockNames ) => {\n\t\t\tblockNames = Array.isArray( blockNames )\n\t\t\t\t? blockNames\n\t\t\t\t: [ blockNames ];\n\t\t\tconst { getBlocksByName, getBlockParents, getBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn getBlocksByName( blockNames ).filter( ( clientId ) =>\n\t\t\t\tgetBlockParents( clientId ).every( ( parentClientId ) => {\n\t\t\t\t\tconst parentBlockName = getBlockName( parentClientId );\n\t\t\t\t\treturn (\n\t\t\t\t\t\t// Ignore descendents of the query block.\n\t\t\t\t\t\tparentBlockName !== 'core/query' &&\n\t\t\t\t\t\t// Enable only the top-most block.\n\t\t\t\t\t\t! blockNames.includes( parentBlockName )\n\t\t\t\t\t);\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t( state, blockNames ) => {\n\t\t\tblockNames = Array.isArray( blockNames )\n\t\t\t\t? blockNames\n\t\t\t\t: [ blockNames ];\n\t\t\tconst { getBlocksByName, getBlockParents } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst clientIds = getBlocksByName( blockNames );\n\t\t\tconst parentsOfClientIds = clientIds.map( ( id ) =>\n\t\t\t\tgetBlockParents( id )\n\t\t\t);\n\t\t\treturn [ clientIds, ...parentsOfClientIds ];\n\t\t}\n\t)\n);\n\n/**\n * Returns the default rendering mode for a post type by user preference or post type configuration.\n *\n * @param {Object} state Global application state.\n * @param {string} postType The post type.\n *\n * @return {string} The default rendering mode. Returns `undefined` while resolving value.\n */\nexport const getDefaultRenderingMode = createRegistrySelector(\n\t( select ) => ( state, postType ) => {\n\t\tconst { getPostType, getCurrentTheme, hasFinishedResolution } =\n\t\t\tselect( coreStore );\n\n\t\t// This needs to be called before `hasFinishedResolution`.\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst currentTheme = getCurrentTheme();\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst postTypeEntity = getPostType( postType );\n\n\t\t// Wait for the post type and theme resolution.\n\t\tif (\n\t\t\t! hasFinishedResolution( 'getPostType', [ postType ] ) ||\n\t\t\t! hasFinishedResolution( 'getCurrentTheme' )\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst theme = currentTheme?.stylesheet;\n\t\tconst defaultModePreference = select( preferencesStore ).get(\n\t\t\t'core',\n\t\t\t'renderingModes'\n\t\t)?.[ theme ]?.[ postType ];\n\t\tconst postTypeDefaultMode = Array.isArray(\n\t\t\tpostTypeEntity?.supports?.editor\n\t\t)\n\t\t\t? postTypeEntity.supports.editor.find(\n\t\t\t\t\t( features ) => 'default-mode' in features\n\t\t\t )?.[ 'default-mode' ]\n\t\t\t: undefined;\n\n\t\tconst defaultMode = defaultModePreference || postTypeDefaultMode;\n\n\t\t// Fallback gracefully to 'post-only' when rendering mode is not supported.\n\t\tif ( ! RENDERING_MODES.includes( defaultMode ) ) {\n\t\t\treturn 'post-only';\n\t\t}\n\n\t\treturn defaultMode;\n\t}\n);\n\n/**\n * Get the current global styles navigation path.\n *\n * @param {Object} state Global application state.\n * @return {string} The current styles path.\n */\nexport function getStylesPath( state ) {\n\treturn state.stylesPath ?? '/';\n}\n\n/**\n * Get whether the stylebook is currently visible.\n *\n * @param {Object} state Global application state.\n * @return {boolean} Whether the stylebook is visible.\n */\nexport function getShowStylebook( state ) {\n\treturn state.showStylebook ?? false;\n}\n\n/**\n * Get the canvas minimum height.\n *\n * @param {Object} state Global application state.\n * @return {number} The canvas minimum height.\n */\nexport function getCanvasMinHeight( state ) {\n\treturn state.canvasMinHeight;\n}\n\n/**\n * Returns the current revisions page number.\n *\n * @param {Object} state Global application state.\n * @return {number} The page number.\n */\nexport function getRevisionPage( state ) {\n\treturn state.revisionPage;\n}\n\n/**\n * Builds the query object for fetching a page of revisions.\n *\n * @param {string} revisionKey The entity's revision key.\n * @param {number} page The 1-based page number (page 1 = newest).\n * @return {Object} Query object for getRevisions.\n */\nexport function buildRevisionsPageQuery( revisionKey, page ) {\n\treturn {\n\t\tper_page: REVISIONS_PER_PAGE,\n\t\tpage,\n\t\tcontext: 'edit',\n\t\torderby: 'date',\n\t\torder: 'desc',\n\t\t_fields: [\n\t\t\t...new Set( [\n\t\t\t\t'id',\n\t\t\t\t'date',\n\t\t\t\t'modified',\n\t\t\t\t'author',\n\t\t\t\t'meta',\n\t\t\t\t'title.raw',\n\t\t\t\t'excerpt.raw',\n\t\t\t\t'content.raw',\n\t\t\t\trevisionKey,\n\t\t\t] ),\n\t\t].join(),\n\t};\n}\n\nconst REVISIONS_PER_PAGE = 100;\n\nexport function getRevisionsPerPage() {\n\treturn REVISIONS_PER_PAGE;\n}\n\n/**\n * Returns revisions for the given page number.\n *\n * @param {Object} state Global application state.\n * @param {number} page The 1-based page number (page 1 = newest).\n * @return {Array|null} The revisions array, or null if not yet loaded.\n */\nexport const getPageRevisions = createRegistrySelector(\n\t( select ) => ( state, page ) => {\n\t\tif ( ! page ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { type: postType, id: postId } = getCurrentPost( state );\n\t\tif ( ! postType || ! postId ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst entityConfig = select( coreStore ).getEntityConfig(\n\t\t\t'postType',\n\t\t\tpostType\n\t\t);\n\t\tconst revisionKey = entityConfig?.revisionKey || 'id';\n\n\t\treturn select( coreStore ).getRevisions(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId,\n\t\t\tbuildRevisionsPageQuery( revisionKey, page )\n\t\t);\n\t}\n);\n\n/**\n * Returns whether the editor is in revisions preview mode.\n *\n * @param {Object} state Global application state.\n * @return {boolean} Whether revisions mode is active.\n */\nexport function isRevisionsMode( state ) {\n\treturn state.revisionId !== null;\n}\n\n/**\n * Returns whether the revision diff highlighting is shown.\n *\n * @param {Object} state Global application state.\n * @return {boolean} Whether revision diff is being shown.\n */\nexport function isShowingRevisionDiff( state ) {\n\treturn state.showRevisionDiff;\n}\n\n/**\n * Returns the current revision ID in revisions mode.\n *\n * @param {Object} state Global application state.\n * @return {number|null} The revision ID, or null if not in revisions mode.\n */\nexport function getCurrentRevisionId( state ) {\n\treturn state.revisionId;\n}\n\n/**\n * Returns the current revision object in revisions mode.\n *\n * @param {Object} state Global application state.\n * @return {Object|null|undefined} The revision object, null if loading, or undefined if not in revisions mode.\n */\nexport const getCurrentRevision = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\tconst revisionId = getCurrentRevisionId( state );\n\t\tif ( ! revisionId ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst page = getRevisionPage( state );\n\t\tif ( ! page ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { type: postType, id: postId } = getCurrentPost( state );\n\t\tconst entityConfig = select( coreStore ).getEntityConfig(\n\t\t\t'postType',\n\t\t\tpostType\n\t\t);\n\t\tconst revisionKey = entityConfig?.revisionKey || 'id';\n\t\tconst revisions = select( coreStore ).getRevisions(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId,\n\t\t\tbuildRevisionsPageQuery( revisionKey, page )\n\t\t);\n\t\tif ( ! revisions ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\trevisions.find( ( r ) => r[ revisionKey ] === revisionId ) ?? null\n\t\t);\n\t}\n);\n\n/**\n * Returns the currently selected note ID.\n *\n * @param {Object} state Global application state.\n *\n * @return {undefined|number|'new'} The selected note ID, 'new' for the new note form, or undefined if none.\n */\nexport function getSelectedNote( state ) {\n\treturn state.selectedNote?.noteId;\n}\n\n/**\n * Returns whether the selected note should be focused.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the selected note should be focused.\n */\nexport function isNoteFocused( state ) {\n\treturn !! state.selectedNote?.options?.focus;\n}\n\n/**\n * Returns the previous revision (the one before the current revision).\n * Used for diffing between revisions.\n *\n * @param {Object} state Global application state.\n * @return {Object|null|undefined} The previous revision object, null if loading or no previous revision, or undefined if not in revisions mode.\n */\nexport const getPreviousRevision = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\tconst currentRevisionId = getCurrentRevisionId( state );\n\t\tif ( ! currentRevisionId ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst page = getRevisionPage( state );\n\t\tif ( ! page ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { type: postType, id: postId } = getCurrentPost( state );\n\t\tconst entityConfig = select( coreStore ).getEntityConfig(\n\t\t\t'postType',\n\t\t\tpostType\n\t\t);\n\t\tconst revisionKey = entityConfig?.revisionKey || 'id';\n\t\tconst query = buildRevisionsPageQuery( revisionKey, page );\n\t\tconst revisions = select( coreStore ).getRevisions(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId,\n\t\t\tquery\n\t\t);\n\t\tif ( ! revisions ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Find current revision index.\n\t\tconst currentIndex = revisions.findIndex(\n\t\t\t( r ) => r[ revisionKey ] === currentRevisionId\n\t\t);\n\n\t\t// Return the previous revision (older one) if it exists.\n\t\tif ( currentIndex >= 0 && currentIndex < revisions.length - 1 ) {\n\t\t\treturn revisions[ currentIndex + 1 ];\n\t\t}\n\n\t\t// At page boundary: fetch the first revision from the next page.\n\t\tconst totalRevisions = getCurrentPostRevisionsCount( state );\n\t\tconst totalPages = Math.ceil( totalRevisions / query.per_page ) || 1;\n\t\tif ( currentIndex === revisions.length - 1 && page < totalPages ) {\n\t\t\tconst nextPageRevisions = select( coreStore ).getRevisions(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId,\n\t\t\t\tbuildRevisionsPageQuery( revisionKey, page + 1 )\n\t\t\t);\n\t\t\treturn nextPageRevisions?.[ 0 ] ?? null;\n\t\t}\n\n\t\treturn null;\n\t}\n);\n\n/**\n * Returns whether the collaboration is enabled for the current post.\n *\n * @return {boolean} Whether collaboration is enabled.\n */\nexport const isCollaborationEnabledForCurrentPost = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\t// Return early, if collaboration is not supported.\n\t\tif ( ! unlock( select( coreStore ) ).isCollaborationSupported() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst currentPostType = getCurrentPostType( state );\n\t\tconst entityConfig = select( coreStore ).getEntityConfig(\n\t\t\t'postType',\n\t\t\tcurrentPostType\n\t\t);\n\n\t\treturn Boolean(\n\t\t\tentityConfig?.syncConfig && window._wpCollaborationEnabled\n\t\t);\n\t}\n);\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorStore", "pageIcon", "coreStore", "fastDeepEqual", "_getEntityActions", "_isEntityReady", "_getEntityFields", "preferencesStore"]
7
7
  }
@@ -51,9 +51,11 @@ __export(reducer_exports, {
51
51
  removedPanels: () => removedPanels,
52
52
  renderingMode: () => renderingMode,
53
53
  revisionId: () => revisionId,
54
+ revisionPage: () => revisionPage,
54
55
  saving: () => saving,
55
56
  selectedNote: () => selectedNote,
56
57
  shouldOverwriteState: () => shouldOverwriteState,
58
+ showRevisionDiff: () => showRevisionDiff,
57
59
  showStylebook: () => showStylebook,
58
60
  stylesPath: () => stylesPath,
59
61
  template: () => template,
@@ -267,6 +269,27 @@ function revisionId(state = null, action) {
267
269
  }
268
270
  return state;
269
271
  }
272
+ function revisionPage(state = 1, action) {
273
+ switch (action.type) {
274
+ case "SET_REVISION_PAGE":
275
+ return action.page;
276
+ case "SET_CURRENT_REVISION_ID":
277
+ if (!action.revisionId) {
278
+ return 1;
279
+ }
280
+ return state;
281
+ }
282
+ return state;
283
+ }
284
+ function showRevisionDiff(state = true, action) {
285
+ switch (action.type) {
286
+ case "SET_SHOW_REVISION_DIFF":
287
+ return action.showDiff;
288
+ case "SET_CURRENT_REVISION_ID":
289
+ return !action.revisionId ? true : state;
290
+ }
291
+ return state;
292
+ }
270
293
  function selectedNote(state = {}, action) {
271
294
  switch (action.type) {
272
295
  case "SELECT_NOTE":
@@ -297,6 +320,8 @@ var reducer_default = (0, import_data.combineReducers)({
297
320
  showStylebook,
298
321
  canvasMinHeight,
299
322
  revisionId,
323
+ revisionPage,
324
+ showRevisionDiff,
300
325
  selectedNote,
301
326
  dataviews: import_reducer.default
302
327
  });
@@ -322,9 +347,11 @@ var reducer_default = (0, import_data.combineReducers)({
322
347
  removedPanels,
323
348
  renderingMode,
324
349
  revisionId,
350
+ revisionPage,
325
351
  saving,
326
352
  selectedNote,
327
353
  shouldOverwriteState,
354
+ showRevisionDiff,
328
355
  showStylebook,
329
356
  stylesPath,
330
357
  template,