@wordpress/editor 14.42.0 → 14.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/collaborators-overlay/cursor-registry.cjs +86 -0
  3. package/build/components/collaborators-overlay/cursor-registry.cjs.map +7 -0
  4. package/build/components/collaborators-overlay/index.cjs +7 -2
  5. package/build/components/collaborators-overlay/index.cjs.map +2 -2
  6. package/build/components/collaborators-overlay/overlay-iframe-styles.cjs +1 -1
  7. package/build/components/collaborators-overlay/overlay-iframe-styles.cjs.map +2 -2
  8. package/build/components/collaborators-overlay/overlay.cjs +31 -1
  9. package/build/components/collaborators-overlay/overlay.cjs.map +2 -2
  10. package/build/components/collaborators-presence/index.cjs +14 -4
  11. package/build/components/collaborators-presence/index.cjs.map +2 -2
  12. package/build/components/collaborators-presence/list.cjs +20 -4
  13. package/build/components/collaborators-presence/list.cjs.map +2 -2
  14. package/build/components/post-card-panel/index.cjs +4 -15
  15. package/build/components/post-card-panel/index.cjs.map +2 -2
  16. package/build/components/post-content-information/index.cjs +10 -13
  17. package/build/components/post-content-information/index.cjs.map +2 -2
  18. package/build/components/post-revisions-panel/index.cjs +164 -0
  19. package/build/components/post-revisions-panel/index.cjs.map +7 -0
  20. package/build/components/post-revisions-preview/revisions-slider.cjs +24 -5
  21. package/build/components/post-revisions-preview/revisions-slider.cjs.map +2 -2
  22. package/build/components/post-template/create-new-template-modal.cjs +39 -46
  23. package/build/components/post-template/create-new-template-modal.cjs.map +2 -2
  24. package/build/components/post-template/hooks.cjs +52 -6
  25. package/build/components/post-template/hooks.cjs.map +2 -2
  26. package/build/components/post-template/swap-template-button.cjs +31 -20
  27. package/build/components/post-template/swap-template-button.cjs.map +2 -2
  28. package/build/components/preferences-modal/index.cjs +35 -27
  29. package/build/components/preferences-modal/index.cjs.map +2 -2
  30. package/build/components/revision-block-diff/index.cjs +9 -32
  31. package/build/components/revision-block-diff/index.cjs.map +3 -3
  32. package/build/components/revision-diff-panel/index.cjs +68 -0
  33. package/build/components/revision-diff-panel/index.cjs.map +7 -0
  34. package/build/components/revision-fields-diff/index.cjs +96 -0
  35. package/build/components/revision-fields-diff/index.cjs.map +7 -0
  36. package/build/components/sidebar/dataform-post-summary.cjs +8 -53
  37. package/build/components/sidebar/dataform-post-summary.cjs.map +2 -2
  38. package/build/components/sidebar/index.cjs +25 -22
  39. package/build/components/sidebar/index.cjs.map +3 -3
  40. package/build/components/sidebar/post-revision-summary.cjs +74 -0
  41. package/build/components/sidebar/post-revision-summary.cjs.map +7 -0
  42. package/build/components/sidebar/post-summary.cjs +35 -42
  43. package/build/components/sidebar/post-summary.cjs.map +3 -3
  44. package/build/components/style-book/index.cjs +4 -3
  45. package/build/components/style-book/index.cjs.map +2 -2
  46. package/build/components/sync-connection-error-modal/index.cjs +2 -2
  47. package/build/components/sync-connection-error-modal/index.cjs.map +1 -1
  48. package/build/components/template-actions-panel/block-theme-content.cjs +188 -0
  49. package/build/components/template-actions-panel/block-theme-content.cjs.map +7 -0
  50. package/build/components/template-actions-panel/classic-theme-content.cjs +159 -0
  51. package/build/components/template-actions-panel/classic-theme-content.cjs.map +7 -0
  52. package/build/components/template-actions-panel/index.cjs +59 -0
  53. package/build/components/template-actions-panel/index.cjs.map +7 -0
  54. package/build/dataviews/store/private-actions.cjs +2 -0
  55. package/build/dataviews/store/private-actions.cjs.map +2 -2
  56. package/build/store/private-actions.cjs +21 -2
  57. package/build/store/private-actions.cjs.map +2 -2
  58. package/build/store/private-selectors.cjs +40 -15
  59. package/build/store/private-selectors.cjs.map +2 -2
  60. package/build-module/components/collaborators-overlay/cursor-registry.mjs +61 -0
  61. package/build-module/components/collaborators-overlay/cursor-registry.mjs.map +7 -0
  62. package/build-module/components/collaborators-overlay/index.mjs +7 -2
  63. package/build-module/components/collaborators-overlay/index.mjs.map +2 -2
  64. package/build-module/components/collaborators-overlay/overlay-iframe-styles.mjs +1 -1
  65. package/build-module/components/collaborators-overlay/overlay-iframe-styles.mjs.map +2 -2
  66. package/build-module/components/collaborators-overlay/overlay.mjs +32 -2
  67. package/build-module/components/collaborators-overlay/overlay.mjs.map +2 -2
  68. package/build-module/components/collaborators-presence/index.mjs +14 -4
  69. package/build-module/components/collaborators-presence/index.mjs.map +2 -2
  70. package/build-module/components/collaborators-presence/list.mjs +20 -4
  71. package/build-module/components/collaborators-presence/list.mjs.map +2 -2
  72. package/build-module/components/post-card-panel/index.mjs +6 -17
  73. package/build-module/components/post-card-panel/index.mjs.map +2 -2
  74. package/build-module/components/post-content-information/index.mjs +6 -13
  75. package/build-module/components/post-content-information/index.mjs.map +2 -2
  76. package/build-module/components/post-revisions-panel/index.mjs +139 -0
  77. package/build-module/components/post-revisions-panel/index.mjs.map +7 -0
  78. package/build-module/components/post-revisions-preview/revisions-slider.mjs +24 -5
  79. package/build-module/components/post-revisions-preview/revisions-slider.mjs.map +2 -2
  80. package/build-module/components/post-template/create-new-template-modal.mjs +39 -46
  81. package/build-module/components/post-template/create-new-template-modal.mjs.map +2 -2
  82. package/build-module/components/post-template/hooks.mjs +53 -7
  83. package/build-module/components/post-template/hooks.mjs.map +2 -2
  84. package/build-module/components/post-template/swap-template-button.mjs +27 -20
  85. package/build-module/components/post-template/swap-template-button.mjs.map +2 -2
  86. package/build-module/components/preferences-modal/index.mjs +35 -27
  87. package/build-module/components/preferences-modal/index.mjs.map +2 -2
  88. package/build-module/components/revision-block-diff/index.mjs +9 -32
  89. package/build-module/components/revision-block-diff/index.mjs.map +2 -2
  90. package/build-module/components/revision-diff-panel/index.mjs +37 -0
  91. package/build-module/components/revision-diff-panel/index.mjs.map +7 -0
  92. package/build-module/components/revision-fields-diff/index.mjs +65 -0
  93. package/build-module/components/revision-fields-diff/index.mjs.map +7 -0
  94. package/build-module/components/sidebar/dataform-post-summary.mjs +8 -53
  95. package/build-module/components/sidebar/dataform-post-summary.mjs.map +2 -2
  96. package/build-module/components/sidebar/index.mjs +25 -22
  97. package/build-module/components/sidebar/index.mjs.map +2 -2
  98. package/build-module/components/sidebar/post-revision-summary.mjs +43 -0
  99. package/build-module/components/sidebar/post-revision-summary.mjs.map +7 -0
  100. package/build-module/components/sidebar/post-summary.mjs +31 -42
  101. package/build-module/components/sidebar/post-summary.mjs.map +2 -2
  102. package/build-module/components/style-book/index.mjs +4 -3
  103. package/build-module/components/style-book/index.mjs.map +2 -2
  104. package/build-module/components/sync-connection-error-modal/index.mjs +2 -2
  105. package/build-module/components/sync-connection-error-modal/index.mjs.map +1 -1
  106. package/build-module/components/template-actions-panel/block-theme-content.mjs +167 -0
  107. package/build-module/components/template-actions-panel/block-theme-content.mjs.map +7 -0
  108. package/build-module/components/template-actions-panel/classic-theme-content.mjs +138 -0
  109. package/build-module/components/template-actions-panel/classic-theme-content.mjs.map +7 -0
  110. package/build-module/components/template-actions-panel/index.mjs +28 -0
  111. package/build-module/components/template-actions-panel/index.mjs.map +7 -0
  112. package/build-module/dataviews/store/private-actions.mjs +5 -1
  113. package/build-module/dataviews/store/private-actions.mjs.map +2 -2
  114. package/build-module/store/private-actions.mjs +21 -2
  115. package/build-module/store/private-actions.mjs.map +2 -2
  116. package/build-module/store/private-selectors.mjs +40 -15
  117. package/build-module/store/private-selectors.mjs.map +2 -2
  118. package/build-style/style-rtl.css +111 -42
  119. package/build-style/style.css +111 -42
  120. package/build-types/components/collaborators-overlay/cursor-registry.d.ts +36 -0
  121. package/build-types/components/collaborators-overlay/cursor-registry.d.ts.map +1 -0
  122. package/build-types/components/collaborators-overlay/index.d.ts +7 -4
  123. package/build-types/components/collaborators-overlay/index.d.ts.map +1 -1
  124. package/build-types/components/collaborators-overlay/overlay-iframe-styles.d.ts +1 -1
  125. package/build-types/components/collaborators-overlay/overlay-iframe-styles.d.ts.map +1 -1
  126. package/build-types/components/collaborators-overlay/overlay.d.ts +4 -1
  127. package/build-types/components/collaborators-overlay/overlay.d.ts.map +1 -1
  128. package/build-types/components/collaborators-presence/index.d.ts.map +1 -1
  129. package/build-types/components/collaborators-presence/list.d.ts +4 -1
  130. package/build-types/components/collaborators-presence/list.d.ts.map +1 -1
  131. package/build-types/components/post-card-panel/index.d.ts.map +1 -1
  132. package/build-types/components/post-content-information/index.d.ts +4 -1
  133. package/build-types/components/post-content-information/index.d.ts.map +1 -1
  134. package/build-types/components/post-revisions-panel/index.d.ts +2 -0
  135. package/build-types/components/post-revisions-panel/index.d.ts.map +1 -0
  136. package/build-types/components/post-revisions-preview/revisions-slider.d.ts.map +1 -1
  137. package/build-types/components/post-template/create-new-template-modal.d.ts.map +1 -1
  138. package/build-types/components/post-template/hooks.d.ts +1 -1
  139. package/build-types/components/post-template/hooks.d.ts.map +1 -1
  140. package/build-types/components/post-template/swap-template-button.d.ts +4 -0
  141. package/build-types/components/post-template/swap-template-button.d.ts.map +1 -1
  142. package/build-types/components/revision-block-diff/index.d.ts.map +1 -1
  143. package/build-types/components/revision-diff-panel/index.d.ts +14 -0
  144. package/build-types/components/revision-diff-panel/index.d.ts.map +1 -0
  145. package/build-types/components/revision-fields-diff/index.d.ts +6 -0
  146. package/build-types/components/revision-fields-diff/index.d.ts.map +1 -0
  147. package/build-types/components/sidebar/dataform-post-summary.d.ts.map +1 -1
  148. package/build-types/components/sidebar/index.d.ts.map +1 -1
  149. package/build-types/components/sidebar/post-revision-summary.d.ts +2 -0
  150. package/build-types/components/sidebar/post-revision-summary.d.ts.map +1 -0
  151. package/build-types/components/sidebar/post-summary.d.ts +3 -0
  152. package/build-types/components/sidebar/post-summary.d.ts.map +1 -1
  153. package/build-types/components/style-book/index.d.ts +2 -1
  154. package/build-types/components/style-book/index.d.ts.map +1 -1
  155. package/build-types/components/template-actions-panel/block-theme-content.d.ts +2 -0
  156. package/build-types/components/template-actions-panel/block-theme-content.d.ts.map +1 -0
  157. package/build-types/components/template-actions-panel/classic-theme-content.d.ts +2 -0
  158. package/build-types/components/template-actions-panel/classic-theme-content.d.ts.map +1 -0
  159. package/build-types/components/template-actions-panel/index.d.ts +2 -0
  160. package/build-types/components/template-actions-panel/index.d.ts.map +1 -0
  161. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  162. package/build-types/store/private-actions.d.ts.map +1 -1
  163. package/build-types/store/private-selectors.d.ts.map +1 -1
  164. package/package.json +45 -44
  165. package/src/components/collaborators-overlay/cursor-registry.ts +96 -0
  166. package/src/components/collaborators-overlay/index.tsx +12 -4
  167. package/src/components/collaborators-overlay/overlay-iframe-styles.ts +1 -1
  168. package/src/components/collaborators-overlay/overlay.tsx +45 -1
  169. package/src/components/collaborators-presence/index.tsx +9 -1
  170. package/src/components/collaborators-presence/list.tsx +25 -1
  171. package/src/components/post-card-panel/index.js +7 -21
  172. package/src/components/post-content-information/index.js +5 -16
  173. package/src/components/post-revisions-panel/index.js +151 -0
  174. package/src/components/post-revisions-panel/style.scss +16 -0
  175. package/src/components/post-revisions-preview/revisions-slider.js +29 -7
  176. package/src/components/post-template/create-new-template-modal.js +1 -4
  177. package/src/components/post-template/hooks.js +65 -9
  178. package/src/components/post-template/style.scss +0 -6
  179. package/src/components/post-template/swap-template-button.js +30 -21
  180. package/src/components/preferences-modal/index.js +37 -25
  181. package/src/components/revision-block-diff/index.js +8 -43
  182. package/src/components/revision-diff-panel/index.js +59 -0
  183. package/src/components/revision-fields-diff/index.js +91 -0
  184. package/src/components/sidebar/dataform-post-summary.js +8 -55
  185. package/src/components/sidebar/index.js +33 -22
  186. package/src/components/sidebar/post-revision-summary.js +50 -0
  187. package/src/components/sidebar/post-summary.js +22 -40
  188. package/src/components/sidebar/style.scss +7 -0
  189. package/src/components/style-book/index.js +4 -2
  190. package/src/components/sync-connection-error-modal/index.tsx +2 -2
  191. package/src/components/template-actions-panel/block-theme-content.js +196 -0
  192. package/src/components/template-actions-panel/classic-theme-content.js +170 -0
  193. package/src/components/template-actions-panel/index.js +32 -0
  194. package/src/components/template-actions-panel/style.scss +39 -0
  195. package/src/dataviews/store/private-actions.ts +6 -0
  196. package/src/store/private-actions.js +24 -3
  197. package/src/store/private-selectors.js +46 -16
  198. package/src/style.scss +3 -1
  199. /package/src/components/{revision-block-diff → revision-diff-panel}/style.scss +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/template-actions-panel/classic-theme-content.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseEntityRecord,\n\tuseEntityBlockEditor,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { BlockPreview } from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tButton,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport CreateNewTemplateModal from '../post-template/create-new-template-modal';\n\nexport default function ClassicThemeContent() {\n\tconst templateId = useSelect(\n\t\t( select ) => select( editorStore ).getCurrentTemplateId(),\n\t\t[]\n\t);\n\tconst [ isCreateModalOpen, setIsCreateModalOpen ] = useState( false );\n\tconst {\n\t\tonNavigateToEntityRecord,\n\t\tcanCreateTemplate,\n\t\thasGoBack,\n\t\tgetEditorSettings,\n\t} = useSelect( ( select ) => {\n\t\tconst { getEditorSettings: _getEditorSettings } = select( editorStore );\n\t\tconst editorSettings = _getEditorSettings();\n\t\treturn {\n\t\t\tonNavigateToEntityRecord: editorSettings.onNavigateToEntityRecord,\n\t\t\tcanCreateTemplate:\n\t\t\t\t!! select( coreStore ).canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template',\n\t\t\t\t} ) && editorSettings.supportsTemplateMode,\n\t\t\thasGoBack: editorSettings.hasOwnProperty(\n\t\t\t\t'onNavigateToPreviousEntityRecord'\n\t\t\t),\n\t\t\tgetEditorSettings: _getEditorSettings,\n\t\t};\n\t}, [] );\n\tconst { get: getPreference } = useSelect( preferencesStore );\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { editedRecord: template } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_template',\n\t\ttemplateId\n\t);\n\tconst [ blocks ] = useEntityBlockEditor( 'postType', 'wp_template', {\n\t\tid: templateId,\n\t} );\n\n\t// Path A: No block template and cannot create templates.\n\tif ( ! templateId && ! canCreateTemplate ) {\n\t\treturn null;\n\t}\n\n\tconst notificationAction = hasGoBack\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tlabel: __( 'Go back' ),\n\t\t\t\t\tonClick: () =>\n\t\t\t\t\t\tgetEditorSettings().onNavigateToPreviousEntityRecord(),\n\t\t\t\t},\n\t\t ]\n\t\t: undefined;\n\n\tconst mayShowTemplateEditNotice = () => {\n\t\tif ( ! getPreference( 'core/edit-site', 'welcomeGuideTemplate' ) ) {\n\t\t\tcreateSuccessNotice(\n\t\t\t\t__(\n\t\t\t\t\t'Editing template. Changes made here affect all posts and pages that use the template.'\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', actions: notificationAction }\n\t\t\t);\n\t\t}\n\t};\n\n\tconst templateName = template\n\t\t? decodeEntities( template.title )\n\t\t: undefined;\n\n\tconst previewContent = !! blocks?.length && (\n\t\t<BlockPreview.Async>\n\t\t\t<BlockPreview blocks={ blocks } />\n\t\t</BlockPreview.Async>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<PanelBody\n\t\t\t\ttitle={\n\t\t\t\t\ttemplate\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: template name */\n\t\t\t\t\t\t\t\t__( 'Template: %s' ),\n\t\t\t\t\t\t\t\ttemplateName\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Template' )\n\t\t\t\t}\n\t\t\t\tinitialOpen={ false }\n\t\t\t>\n\t\t\t\t<VStack>\n\t\t\t\t\t{ ! templateId && (\n\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'This page uses a classic template. To edit this template with blocks, create a block template.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) }\n\t\t\t\t\t{ template && previewContent && (\n\t\t\t\t\t\t<div className=\"editor-template-actions-panel__preview\">\n\t\t\t\t\t\t\t{ previewContent }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t<HStack>\n\t\t\t\t\t\t{ template && onNavigateToEntityRecord && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"editor-template-actions-panel__action\"\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonNavigateToEntityRecord( {\n\t\t\t\t\t\t\t\t\t\tpostId: template.id,\n\t\t\t\t\t\t\t\t\t\tpostType: 'wp_template',\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\tmayShowTemplateEditNotice();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ canCreateTemplate && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"editor-template-actions-panel__action\"\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tonClick={ () => setIsCreateModalOpen( true ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ ! templateId\n\t\t\t\t\t\t\t\t\t? __( 'Create block template' )\n\t\t\t\t\t\t\t\t\t: __( 'Create new' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</PanelBody>\n\t\t\t{ isCreateModalOpen && (\n\t\t\t\t<CreateNewTemplateModal\n\t\t\t\t\tonClose={ () => setIsCreateModalOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["editorStore", "coreStore", "preferencesStore", "noticesStore", "VStack", "Text", "HStack", "CreateNewTemplateModal"]
7
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // packages/editor/src/components/template-actions-panel/index.js
31
+ var template_actions_panel_exports = {};
32
+ __export(template_actions_panel_exports, {
33
+ default: () => TemplateActionsPanel
34
+ });
35
+ module.exports = __toCommonJS(template_actions_panel_exports);
36
+ var import_data = require("@wordpress/data");
37
+ var import_store = require("../../store/index.cjs");
38
+ var import_hooks = require("../post-template/hooks.cjs");
39
+ var import_block_theme_content = __toESM(require("./block-theme-content.cjs"));
40
+ var import_classic_theme_content = __toESM(require("./classic-theme-content.cjs"));
41
+ var import_jsx_runtime = require("react/jsx-runtime");
42
+ function TemplateActionsPanel() {
43
+ const postType = (0, import_data.useSelect)(
44
+ (select) => select(import_store.store).getCurrentPostType(),
45
+ []
46
+ );
47
+ const mode = (0, import_hooks.usePostTemplatePanelMode)();
48
+ if (!["page", "post"].includes(postType)) {
49
+ return null;
50
+ }
51
+ if (mode === "classic") {
52
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_classic_theme_content.default, {});
53
+ }
54
+ if (mode === "block-theme") {
55
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_theme_content.default, {});
56
+ }
57
+ return null;
58
+ }
59
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/template-actions-panel/index.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { usePostTemplatePanelMode } from '../post-template/hooks';\nimport BlockThemeContent from './block-theme-content';\nimport ClassicThemeContent from './classic-theme-content';\n\nexport default function TemplateActionsPanel() {\n\tconst postType = useSelect(\n\t\t( select ) => select( editorStore ).getCurrentPostType(),\n\t\t[]\n\t);\n\tconst mode = usePostTemplatePanelMode();\n\t// This check is because the experiment is gated for these post\n\t// types for now. Later we should use `postType.viewable`.\n\tif ( ! [ 'page', 'post' ].includes( postType ) ) {\n\t\treturn null;\n\t}\n\tif ( mode === 'classic' ) {\n\t\treturn <ClassicThemeContent />;\n\t}\n\tif ( mode === 'block-theme' ) {\n\t\treturn <BlockThemeContent />;\n\t}\n\treturn null;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAK1B,mBAAqC;AACrC,mBAAyC;AACzC,iCAA8B;AAC9B,mCAAgC;AAcvB;AAZM,SAAR,uBAAwC;AAC9C,QAAM,eAAW;AAAA,IAChB,CAAE,WAAY,OAAQ,aAAAA,KAAY,EAAE,mBAAmB;AAAA,IACvD,CAAC;AAAA,EACF;AACA,QAAM,WAAO,uCAAyB;AAGtC,MAAK,CAAE,CAAE,QAAQ,MAAO,EAAE,SAAU,QAAS,GAAI;AAChD,WAAO;AAAA,EACR;AACA,MAAK,SAAS,WAAY;AACzB,WAAO,4CAAC,6BAAAC,SAAA,EAAoB;AAAA,EAC7B;AACA,MAAK,SAAS,eAAgB;AAC7B,WAAO,4CAAC,2BAAAC,SAAA,EAAkB;AAAA,EAC3B;AACA,SAAO;AACR;",
6
+ "names": ["editorStore", "ClassicThemeContent", "BlockThemeContent"]
7
+ }
@@ -164,6 +164,7 @@ var registerPostTypeSchema = (postType) => async ({ registry }) => {
164
164
  !import_constants.DESIGN_POST_TYPES.includes(postTypeConfig.slug) && import_fields.dateField,
165
165
  !import_constants.DESIGN_POST_TYPES.includes(postTypeConfig.slug) && import_fields.scheduledDateField,
166
166
  import_fields.slugField,
167
+ !import_constants.DESIGN_POST_TYPES.includes(postTypeConfig.slug) && postTypeConfig.supports?.excerpt && import_fields.excerptField,
167
168
  postTypeConfig.supports?.["page-attributes"] && import_fields.parentField,
168
169
  postTypeConfig.supports?.comments && import_fields.commentStatusField,
169
170
  postTypeConfig.supports?.trackbacks && import_fields.pingStatusField,
@@ -172,6 +173,7 @@ var registerPostTypeSchema = (postType) => async ({ registry }) => {
172
173
  postTypeConfig.supports?.["post-formats"] && !disablePostFormats && import_fields.formatField,
173
174
  !import_constants.DESIGN_POST_TYPES.includes(postTypeConfig.slug) && postTypeConfig.supports?.editor && import_fields.postContentInfoField,
174
175
  import_fields.passwordField,
176
+ postTypeConfig.slug === "post" && import_fields.stickyField,
175
177
  postTypeConfig.supports?.editor && postTypeConfig.viewable && import_content_preview.default,
176
178
  hasEditorNotesSupport(postTypeConfig.supports) && import_fields.notesField
177
179
  ].filter(Boolean);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dataviews/store/private-actions.ts"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport type { Action, Field } from '@wordpress/dataviews';\nimport { doAction } from '@wordpress/hooks';\nimport type { PostType } from '@wordpress/fields';\nimport {\n\tviewPost,\n\tviewPostRevisions,\n\tduplicatePost,\n\tduplicatePattern,\n\treorderPage,\n\texportPattern,\n\tpermanentlyDeletePost,\n\trestorePost,\n\ttrashPost,\n\trenamePost,\n\tresetPost,\n\tdeletePost,\n\tduplicateTemplatePart,\n\tfeaturedImageField,\n\tdateField,\n\tparentField,\n\tpasswordField,\n\tcommentStatusField,\n\tpingStatusField,\n\tdiscussionField,\n\tslugField,\n\tstatusField,\n\tauthorField,\n\ttitleField,\n\ttemplateField,\n\ttemplateTitleField,\n\tpageTitleField,\n\tpatternTitleField,\n\tnotesField,\n\tscheduledDateField,\n\tformatField,\n\tpostContentInfoField,\n} from '@wordpress/fields';\nimport {\n\taltTextField,\n\tattachedToField,\n\tauthorField as mediaAuthorField,\n\tcaptionField,\n\tdateAddedField,\n\tdescriptionField,\n\tfilenameField,\n\tfilesizeField,\n\tmediaDimensionsField,\n\tmimeTypeField,\n} from '@wordpress/media-fields';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { ATTACHMENT_POST_TYPE, DESIGN_POST_TYPES } from '../../store/constants';\nimport postPreviewField from '../fields/content-preview';\nimport { unlock } from '../../lock-unlock';\n\ndeclare global {\n\tinterface Window {\n\t\t__experimentalTemplateActivate?: boolean;\n\t\t__experimentalMediaEditor?: boolean;\n\t}\n}\n\n/**\n * Check if a post type supports editor notes.\n *\n * @param supports The post type supports object.\n * @return Whether editor notes are supported.\n */\nfunction hasEditorNotesSupport( supports?: PostType[ 'supports' ] ): boolean {\n\tconst editor = supports?.editor;\n\tif ( Array.isArray( editor ) ) {\n\t\treturn !! editor[ 0 ]?.notes;\n\t}\n\treturn false;\n}\n\nexport function registerEntityAction< Item >(\n\tkind: string,\n\tname: string,\n\tconfig: Action< Item >\n) {\n\treturn {\n\t\ttype: 'REGISTER_ENTITY_ACTION' as const,\n\t\tkind,\n\t\tname,\n\t\tconfig,\n\t};\n}\n\nexport function unregisterEntityAction(\n\tkind: string,\n\tname: string,\n\tactionId: string\n) {\n\treturn {\n\t\ttype: 'UNREGISTER_ENTITY_ACTION' as const,\n\t\tkind,\n\t\tname,\n\t\tactionId,\n\t};\n}\n\nexport function registerEntityField< Item >(\n\tkind: string,\n\tname: string,\n\tconfig: Field< Item >\n) {\n\treturn {\n\t\ttype: 'REGISTER_ENTITY_FIELD' as const,\n\t\tkind,\n\t\tname,\n\t\tconfig,\n\t};\n}\n\nexport function unregisterEntityField(\n\tkind: string,\n\tname: string,\n\tfieldId: string\n) {\n\treturn {\n\t\ttype: 'UNREGISTER_ENTITY_FIELD' as const,\n\t\tkind,\n\t\tname,\n\t\tfieldId,\n\t};\n}\n\nexport function setIsReady( kind: string, name: string ) {\n\treturn {\n\t\ttype: 'SET_IS_READY' as const,\n\t\tkind,\n\t\tname,\n\t};\n}\n\n/*\n * Media fields for the attachment post type.\n *\n * Field order follows a logical grouping:\n * 1. Metadata fields in panels (date, author, file info)\n * 2. Core editable fields (title, alt text, caption, description)\n *\n * Note: media_thumbnail is not included as it's shown in the canvas preview\n */\nconst ORDERED_MEDIA_FIELDS = [\n\t// Metadata in panels (collapsed by default).\n\tdateAddedField,\n\tmediaAuthorField,\n\tfilenameField,\n\tmimeTypeField,\n\tfilesizeField,\n\tmediaDimensionsField,\n\tattachedToField,\n\t// Regular layout fields (always visible).\n\ttitleField,\n\taltTextField,\n\tcaptionField,\n\tdescriptionField,\n];\n\nexport const registerPostTypeSchema =\n\t( postType: string ) =>\n\tasync ( { registry }: { registry: any } ) => {\n\t\tconst isReady = unlock( registry.select( editorStore ) ).isEntityReady(\n\t\t\t'postType',\n\t\t\tpostType\n\t\t);\n\t\tif ( isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\tunlock( registry.dispatch( editorStore ) ).setIsReady(\n\t\t\t'postType',\n\t\t\tpostType\n\t\t);\n\n\t\tconst postTypeConfig = ( await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getPostType( postType ) ) as PostType;\n\n\t\tconst canCreate = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.canUser( 'create', {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: postType,\n\t\t\t} );\n\t\tconst currentTheme = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getCurrentTheme();\n\t\tconst { disablePostFormats } = registry\n\t\t\t.select( editorStore )\n\t\t\t.getEditorSettings();\n\n\t\tlet canDuplicate =\n\t\t\t! [ 'wp_block', 'wp_template_part' ].includes(\n\t\t\t\tpostTypeConfig.slug\n\t\t\t) &&\n\t\t\tcanCreate &&\n\t\t\tduplicatePost;\n\n\t\t// @ts-ignore\n\t\tif ( ! globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t\t// Outside Gutenberg, disable duplication except for wp_template.\n\t\t\tif ( 'wp_template' !== postTypeConfig.slug ) {\n\t\t\t\tcanDuplicate = undefined;\n\t\t\t}\n\t\t}\n\n\t\t// When template activation experiment is disabled, templates cannot be duplicated.\n\t\t// @ts-ignore\n\t\tif (\n\t\t\tpostTypeConfig.slug === 'wp_template' &&\n\t\t\t! window?.__experimentalTemplateActivate\n\t\t) {\n\t\t\tcanDuplicate = undefined;\n\t\t}\n\n\t\tconst actions = [\n\t\t\tpostTypeConfig.viewable ? viewPost : undefined,\n\t\t\t!! postTypeConfig.supports?.revisions\n\t\t\t\t? viewPostRevisions\n\t\t\t\t: undefined,\n\t\t\t// @ts-ignore\n\t\t\tcanDuplicate,\n\t\t\tpostTypeConfig.slug === 'wp_template_part' &&\n\t\t\tcanCreate &&\n\t\t\tcurrentTheme?.is_block_theme\n\t\t\t\t? duplicateTemplatePart\n\t\t\t\t: undefined,\n\t\t\tcanCreate && postTypeConfig.slug === 'wp_block'\n\t\t\t\t? duplicatePattern\n\t\t\t\t: undefined,\n\t\t\tpostTypeConfig.supports?.title ? renamePost : undefined,\n\t\t\tpostTypeConfig.supports?.[ 'page-attributes' ]\n\t\t\t\t? reorderPage\n\t\t\t\t: undefined,\n\t\t\tpostTypeConfig.slug === 'wp_block' ? exportPattern : undefined,\n\t\t\trestorePost,\n\t\t\tresetPost,\n\t\t\tdeletePost,\n\t\t\ttrashPost,\n\t\t\tpermanentlyDeletePost,\n\t\t].filter( Boolean );\n\n\t\t// Handle attachment post type separately with media-specific fields\n\t\tlet fields;\n\n\t\tif ( postType === ATTACHMENT_POST_TYPE ) {\n\t\t\tfields = ORDERED_MEDIA_FIELDS;\n\t\t} else {\n\t\t\tfields = [\n\t\t\t\tpostTypeConfig.supports?.thumbnail &&\n\t\t\t\t\tcurrentTheme?.theme_supports?.[ 'post-thumbnails' ] &&\n\t\t\t\t\tfeaturedImageField,\n\t\t\t\tpostTypeConfig.supports?.author && authorField,\n\t\t\t\tstatusField,\n\t\t\t\t! DESIGN_POST_TYPES.includes( postTypeConfig.slug ) &&\n\t\t\t\t\tdateField,\n\t\t\t\t! DESIGN_POST_TYPES.includes( postTypeConfig.slug ) &&\n\t\t\t\t\tscheduledDateField,\n\t\t\t\tslugField,\n\t\t\t\tpostTypeConfig.supports?.[ 'page-attributes' ] && parentField,\n\t\t\t\tpostTypeConfig.supports?.comments && commentStatusField,\n\t\t\t\tpostTypeConfig.supports?.trackbacks && pingStatusField,\n\t\t\t\t( postTypeConfig.supports?.comments ||\n\t\t\t\t\tpostTypeConfig.supports?.trackbacks ) &&\n\t\t\t\t\tdiscussionField,\n\t\t\t\ttemplateField,\n\t\t\t\tpostTypeConfig.supports?.[ 'post-formats' ] &&\n\t\t\t\t\t! disablePostFormats &&\n\t\t\t\t\tformatField,\n\t\t\t\t! DESIGN_POST_TYPES.includes( postTypeConfig.slug ) &&\n\t\t\t\t\tpostTypeConfig.supports?.editor &&\n\t\t\t\t\tpostContentInfoField,\n\t\t\t\tpasswordField,\n\t\t\t\tpostTypeConfig.supports?.editor &&\n\t\t\t\t\tpostTypeConfig.viewable &&\n\t\t\t\t\tpostPreviewField,\n\t\t\t\thasEditorNotesSupport( postTypeConfig.supports ) && notesField,\n\t\t\t].filter( Boolean );\n\t\t\tif ( postTypeConfig.supports?.title ) {\n\t\t\t\tlet _titleField;\n\t\t\t\tif ( postType === 'page' ) {\n\t\t\t\t\t_titleField = pageTitleField;\n\t\t\t\t} else if ( postType === 'wp_template' ) {\n\t\t\t\t\t_titleField = templateTitleField;\n\t\t\t\t} else if ( postType === 'wp_block' ) {\n\t\t\t\t\t_titleField = patternTitleField;\n\t\t\t\t} else {\n\t\t\t\t\t_titleField = titleField;\n\t\t\t\t}\n\t\t\t\tfields.push( _titleField );\n\t\t\t}\n\t\t}\n\n\t\tregistry.batch( () => {\n\t\t\tactions.forEach( ( action ) => {\n\t\t\t\tunlock( registry.dispatch( editorStore ) ).registerEntityAction(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\taction\n\t\t\t\t);\n\t\t\t} );\n\t\t\tfields.forEach( ( field ) => {\n\t\t\t\tunlock( registry.dispatch( editorStore ) ).registerEntityField(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\tfield\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\n\t\tdoAction( 'core.registerPostTypeSchema', postType );\n\t};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport type { Action, Field } from '@wordpress/dataviews';\nimport { doAction } from '@wordpress/hooks';\nimport type { PostType } from '@wordpress/fields';\nimport {\n\tviewPost,\n\tviewPostRevisions,\n\tduplicatePost,\n\tduplicatePattern,\n\treorderPage,\n\texportPattern,\n\tpermanentlyDeletePost,\n\trestorePost,\n\ttrashPost,\n\trenamePost,\n\tresetPost,\n\tdeletePost,\n\tduplicateTemplatePart,\n\texcerptField,\n\tfeaturedImageField,\n\tdateField,\n\tparentField,\n\tpasswordField,\n\tcommentStatusField,\n\tpingStatusField,\n\tdiscussionField,\n\tslugField,\n\tstatusField,\n\tauthorField,\n\ttitleField,\n\ttemplateField,\n\ttemplateTitleField,\n\tpageTitleField,\n\tpatternTitleField,\n\tnotesField,\n\tscheduledDateField,\n\tformatField,\n\tpostContentInfoField,\n\tstickyField,\n} from '@wordpress/fields';\nimport {\n\taltTextField,\n\tattachedToField,\n\tauthorField as mediaAuthorField,\n\tcaptionField,\n\tdateAddedField,\n\tdescriptionField,\n\tfilenameField,\n\tfilesizeField,\n\tmediaDimensionsField,\n\tmimeTypeField,\n} from '@wordpress/media-fields';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { ATTACHMENT_POST_TYPE, DESIGN_POST_TYPES } from '../../store/constants';\nimport postPreviewField from '../fields/content-preview';\nimport { unlock } from '../../lock-unlock';\n\ndeclare global {\n\tinterface Window {\n\t\t__experimentalTemplateActivate?: boolean;\n\t\t__experimentalMediaEditor?: boolean;\n\t}\n}\n\n/**\n * Check if a post type supports editor notes.\n *\n * @param supports The post type supports object.\n * @return Whether editor notes are supported.\n */\nfunction hasEditorNotesSupport( supports?: PostType[ 'supports' ] ): boolean {\n\tconst editor = supports?.editor;\n\tif ( Array.isArray( editor ) ) {\n\t\treturn !! editor[ 0 ]?.notes;\n\t}\n\treturn false;\n}\n\nexport function registerEntityAction< Item >(\n\tkind: string,\n\tname: string,\n\tconfig: Action< Item >\n) {\n\treturn {\n\t\ttype: 'REGISTER_ENTITY_ACTION' as const,\n\t\tkind,\n\t\tname,\n\t\tconfig,\n\t};\n}\n\nexport function unregisterEntityAction(\n\tkind: string,\n\tname: string,\n\tactionId: string\n) {\n\treturn {\n\t\ttype: 'UNREGISTER_ENTITY_ACTION' as const,\n\t\tkind,\n\t\tname,\n\t\tactionId,\n\t};\n}\n\nexport function registerEntityField< Item >(\n\tkind: string,\n\tname: string,\n\tconfig: Field< Item >\n) {\n\treturn {\n\t\ttype: 'REGISTER_ENTITY_FIELD' as const,\n\t\tkind,\n\t\tname,\n\t\tconfig,\n\t};\n}\n\nexport function unregisterEntityField(\n\tkind: string,\n\tname: string,\n\tfieldId: string\n) {\n\treturn {\n\t\ttype: 'UNREGISTER_ENTITY_FIELD' as const,\n\t\tkind,\n\t\tname,\n\t\tfieldId,\n\t};\n}\n\nexport function setIsReady( kind: string, name: string ) {\n\treturn {\n\t\ttype: 'SET_IS_READY' as const,\n\t\tkind,\n\t\tname,\n\t};\n}\n\n/*\n * Media fields for the attachment post type.\n *\n * Field order follows a logical grouping:\n * 1. Metadata fields in panels (date, author, file info)\n * 2. Core editable fields (title, alt text, caption, description)\n *\n * Note: media_thumbnail is not included as it's shown in the canvas preview\n */\nconst ORDERED_MEDIA_FIELDS = [\n\t// Metadata in panels (collapsed by default).\n\tdateAddedField,\n\tmediaAuthorField,\n\tfilenameField,\n\tmimeTypeField,\n\tfilesizeField,\n\tmediaDimensionsField,\n\tattachedToField,\n\t// Regular layout fields (always visible).\n\ttitleField,\n\taltTextField,\n\tcaptionField,\n\tdescriptionField,\n];\n\nexport const registerPostTypeSchema =\n\t( postType: string ) =>\n\tasync ( { registry }: { registry: any } ) => {\n\t\tconst isReady = unlock( registry.select( editorStore ) ).isEntityReady(\n\t\t\t'postType',\n\t\t\tpostType\n\t\t);\n\t\tif ( isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\tunlock( registry.dispatch( editorStore ) ).setIsReady(\n\t\t\t'postType',\n\t\t\tpostType\n\t\t);\n\n\t\tconst postTypeConfig = ( await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getPostType( postType ) ) as PostType;\n\n\t\tconst canCreate = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.canUser( 'create', {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: postType,\n\t\t\t} );\n\t\tconst currentTheme = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getCurrentTheme();\n\t\tconst { disablePostFormats } = registry\n\t\t\t.select( editorStore )\n\t\t\t.getEditorSettings();\n\n\t\tlet canDuplicate =\n\t\t\t! [ 'wp_block', 'wp_template_part' ].includes(\n\t\t\t\tpostTypeConfig.slug\n\t\t\t) &&\n\t\t\tcanCreate &&\n\t\t\tduplicatePost;\n\n\t\t// @ts-ignore\n\t\tif ( ! globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t\t// Outside Gutenberg, disable duplication except for wp_template.\n\t\t\tif ( 'wp_template' !== postTypeConfig.slug ) {\n\t\t\t\tcanDuplicate = undefined;\n\t\t\t}\n\t\t}\n\n\t\t// When template activation experiment is disabled, templates cannot be duplicated.\n\t\t// @ts-ignore\n\t\tif (\n\t\t\tpostTypeConfig.slug === 'wp_template' &&\n\t\t\t! window?.__experimentalTemplateActivate\n\t\t) {\n\t\t\tcanDuplicate = undefined;\n\t\t}\n\n\t\tconst actions = [\n\t\t\tpostTypeConfig.viewable ? viewPost : undefined,\n\t\t\t!! postTypeConfig.supports?.revisions\n\t\t\t\t? viewPostRevisions\n\t\t\t\t: undefined,\n\t\t\t// @ts-ignore\n\t\t\tcanDuplicate,\n\t\t\tpostTypeConfig.slug === 'wp_template_part' &&\n\t\t\tcanCreate &&\n\t\t\tcurrentTheme?.is_block_theme\n\t\t\t\t? duplicateTemplatePart\n\t\t\t\t: undefined,\n\t\t\tcanCreate && postTypeConfig.slug === 'wp_block'\n\t\t\t\t? duplicatePattern\n\t\t\t\t: undefined,\n\t\t\tpostTypeConfig.supports?.title ? renamePost : undefined,\n\t\t\tpostTypeConfig.supports?.[ 'page-attributes' ]\n\t\t\t\t? reorderPage\n\t\t\t\t: undefined,\n\t\t\tpostTypeConfig.slug === 'wp_block' ? exportPattern : undefined,\n\t\t\trestorePost,\n\t\t\tresetPost,\n\t\t\tdeletePost,\n\t\t\ttrashPost,\n\t\t\tpermanentlyDeletePost,\n\t\t].filter( Boolean );\n\n\t\t// Handle attachment post type separately with media-specific fields\n\t\tlet fields;\n\n\t\tif ( postType === ATTACHMENT_POST_TYPE ) {\n\t\t\tfields = ORDERED_MEDIA_FIELDS;\n\t\t} else {\n\t\t\tfields = [\n\t\t\t\tpostTypeConfig.supports?.thumbnail &&\n\t\t\t\t\tcurrentTheme?.theme_supports?.[ 'post-thumbnails' ] &&\n\t\t\t\t\tfeaturedImageField,\n\t\t\t\tpostTypeConfig.supports?.author && authorField,\n\t\t\t\tstatusField,\n\t\t\t\t! DESIGN_POST_TYPES.includes( postTypeConfig.slug ) &&\n\t\t\t\t\tdateField,\n\t\t\t\t! DESIGN_POST_TYPES.includes( postTypeConfig.slug ) &&\n\t\t\t\t\tscheduledDateField,\n\t\t\t\tslugField,\n\t\t\t\t! DESIGN_POST_TYPES.includes( postTypeConfig.slug ) &&\n\t\t\t\t\tpostTypeConfig.supports?.excerpt &&\n\t\t\t\t\texcerptField,\n\t\t\t\tpostTypeConfig.supports?.[ 'page-attributes' ] && parentField,\n\t\t\t\tpostTypeConfig.supports?.comments && commentStatusField,\n\t\t\t\tpostTypeConfig.supports?.trackbacks && pingStatusField,\n\t\t\t\t( postTypeConfig.supports?.comments ||\n\t\t\t\t\tpostTypeConfig.supports?.trackbacks ) &&\n\t\t\t\t\tdiscussionField,\n\t\t\t\ttemplateField,\n\t\t\t\tpostTypeConfig.supports?.[ 'post-formats' ] &&\n\t\t\t\t\t! disablePostFormats &&\n\t\t\t\t\tformatField,\n\t\t\t\t! DESIGN_POST_TYPES.includes( postTypeConfig.slug ) &&\n\t\t\t\t\tpostTypeConfig.supports?.editor &&\n\t\t\t\t\tpostContentInfoField,\n\t\t\t\tpasswordField,\n\t\t\t\tpostTypeConfig.slug === 'post' && stickyField,\n\t\t\t\tpostTypeConfig.supports?.editor &&\n\t\t\t\t\tpostTypeConfig.viewable &&\n\t\t\t\t\tpostPreviewField,\n\t\t\t\thasEditorNotesSupport( postTypeConfig.supports ) && notesField,\n\t\t\t].filter( Boolean );\n\t\t\tif ( postTypeConfig.supports?.title ) {\n\t\t\t\tlet _titleField;\n\t\t\t\tif ( postType === 'page' ) {\n\t\t\t\t\t_titleField = pageTitleField;\n\t\t\t\t} else if ( postType === 'wp_template' ) {\n\t\t\t\t\t_titleField = templateTitleField;\n\t\t\t\t} else if ( postType === 'wp_block' ) {\n\t\t\t\t\t_titleField = patternTitleField;\n\t\t\t\t} else {\n\t\t\t\t\t_titleField = titleField;\n\t\t\t\t}\n\t\t\t\tfields.push( _titleField );\n\t\t\t}\n\t\t}\n\n\t\tregistry.batch( () => {\n\t\t\tactions.forEach( ( action ) => {\n\t\t\t\tunlock( registry.dispatch( editorStore ) ).registerEntityAction(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\taction\n\t\t\t\t);\n\t\t\t} );\n\t\t\tfields.forEach( ( field ) => {\n\t\t\t\tunlock( registry.dispatch( editorStore ) ).registerEntityField(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\tfield\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\n\t\tdoAction( 'core.registerPostTypeSchema', postType );\n\t};\n"],
5
+ "mappings": "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",
6
6
  "names": ["mediaAuthorField", "editorStore", "coreStore", "postPreviewField"]
7
7
  }
@@ -427,9 +427,23 @@ function setShowRevisionDiff(showDiff) {
427
427
  var restoreRevision = (revisionId) => async ({ select, dispatch, registry }) => {
428
428
  const postType = select.getCurrentPostType();
429
429
  const postId = select.getCurrentPostId();
430
+ const entityConfig = registry.select(import_core_data.store).getEntityConfig("postType", postType);
431
+ const revisionKey = entityConfig?.revisionKey || "id";
430
432
  const revision = await registry.resolveSelect(import_core_data.store).getRevision("postType", postType, postId, revisionId, {
431
433
  context: "edit",
432
- _fields: "id,date,author,meta,title.raw,excerpt.raw,content.raw"
434
+ _fields: [
435
+ .../* @__PURE__ */ new Set([
436
+ "id",
437
+ "date",
438
+ "modified",
439
+ "author",
440
+ "meta",
441
+ "title.raw",
442
+ "excerpt.raw",
443
+ "content.raw",
444
+ revisionKey
445
+ ])
446
+ ].join()
433
447
  });
434
448
  if (!revision) {
435
449
  return;
@@ -454,7 +468,12 @@ var restoreRevision = (revisionId) => async ({ select, dispatch, registry }) =>
454
468
  (0, import_i18n.sprintf)(
455
469
  /* translators: %s: Date and time of the revision. */
456
470
  (0, import_i18n.__)("Restored to revision from %s."),
457
- (0, import_date.dateI18n)((0, import_date.getSettings)().formats.datetime, revision.date)
471
+ (0, import_date.dateI18n)(
472
+ (0, import_date.getSettings)().formats.datetime,
473
+ // Template revisions use the template REST API format, which
474
+ // exposes 'modified' instead of 'date'.
475
+ revisionKey === "wp_id" ? revision.modified : revision.date
476
+ )
458
477
  ),
459
478
  {
460
479
  type: "snackbar",
@@ -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 * 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\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'id,date,author,meta,title.raw,excerpt.raw,content.raw',\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';\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 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(\n\t\t\t\t\tgetDateSettings().formats.datetime,\n\t\t\t\t\t// Template revisions use the template REST API format, which\n\t\t\t\t\t// exposes 'modified' instead of 'date'.\n\t\t\t\t\trevisionKey === 'wp_id' ? revision.modified : revision.date\n\t\t\t\t)\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
  }
@@ -261,6 +261,11 @@ var getCurrentRevision = (0, import_data.createRegistrySelector)(
261
261
  return void 0;
262
262
  }
263
263
  const { type: postType, id: postId } = (0, import_selectors.getCurrentPost)(state);
264
+ const entityConfig = select(import_core_data.store).getEntityConfig(
265
+ "postType",
266
+ postType
267
+ );
268
+ const revisionKey = entityConfig?.revisionKey || "id";
264
269
  const revisions = select(import_core_data.store).getRevisions(
265
270
  "postType",
266
271
  postType,
@@ -268,18 +273,25 @@ var getCurrentRevision = (0, import_data.createRegistrySelector)(
268
273
  {
269
274
  per_page: -1,
270
275
  context: "edit",
271
- _fields: "id,date,author,meta,title.raw,excerpt.raw,content.raw"
276
+ _fields: [
277
+ .../* @__PURE__ */ new Set([
278
+ "id",
279
+ "date",
280
+ "modified",
281
+ "author",
282
+ "meta",
283
+ "title.raw",
284
+ "excerpt.raw",
285
+ "content.raw",
286
+ revisionKey
287
+ ])
288
+ ].join()
272
289
  }
273
290
  );
274
291
  if (!revisions) {
275
292
  return null;
276
293
  }
277
- const entityConfig = select(import_core_data.store).getEntityConfig(
278
- "postType",
279
- postType
280
- );
281
- const revKey = entityConfig?.revisionKey || "id";
282
- return revisions.find((r) => r[revKey] === revisionId) ?? null;
294
+ return revisions.find((r) => r[revisionKey] === revisionId) ?? null;
283
295
  }
284
296
  );
285
297
  function getSelectedNote(state) {
@@ -295,6 +307,11 @@ var getPreviousRevision = (0, import_data.createRegistrySelector)(
295
307
  return void 0;
296
308
  }
297
309
  const { type: postType, id: postId } = (0, import_selectors.getCurrentPost)(state);
310
+ const entityConfig = select(import_core_data.store).getEntityConfig(
311
+ "postType",
312
+ postType
313
+ );
314
+ const revisionKey = entityConfig?.revisionKey || "id";
298
315
  const revisions = select(import_core_data.store).getRevisions(
299
316
  "postType",
300
317
  postType,
@@ -302,22 +319,30 @@ var getPreviousRevision = (0, import_data.createRegistrySelector)(
302
319
  {
303
320
  per_page: -1,
304
321
  context: "edit",
305
- _fields: "id,date,author,meta,title.raw,excerpt.raw,content.raw"
322
+ _fields: [
323
+ .../* @__PURE__ */ new Set([
324
+ "id",
325
+ "date",
326
+ "modified",
327
+ "author",
328
+ "meta",
329
+ "title.raw",
330
+ "excerpt.raw",
331
+ "content.raw",
332
+ revisionKey
333
+ ])
334
+ ].join()
306
335
  }
307
336
  );
308
337
  if (!revisions) {
309
338
  return null;
310
339
  }
340
+ const revisionDateField = revisionKey === "wp_id" ? "modified" : "date";
311
341
  const sortedRevisions = [...revisions].sort(
312
- (a, b) => new Date(a.date) - new Date(b.date)
313
- );
314
- const entityConfig = select(import_core_data.store).getEntityConfig(
315
- "postType",
316
- postType
342
+ (a, b) => new Date(a[revisionDateField]) - new Date(b[revisionDateField])
317
343
  );
318
- const revKey = entityConfig?.revisionKey || "id";
319
344
  const currentIndex = sortedRevisions.findIndex(
320
- (r) => r[revKey] === currentRevisionId
345
+ (r) => r[revisionKey] === currentRevisionId
321
346
  );
322
347
  if (currentIndex > 0) {
323
348
  return sortedRevisions[currentIndex - 1];
@@ -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 {\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 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 { 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{\n\t\t\t\tper_page: -1,\n\t\t\t\tcontext: 'edit',\n\t\t\t\t_fields:\n\t\t\t\t\t'id,date,author,meta,title.raw,excerpt.raw,content.raw',\n\t\t\t}\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{\n\t\t\t\tper_page: -1,\n\t\t\t\tcontext: 'edit',\n\t\t\t\t_fields:\n\t\t\t\t\t'id,date,author,meta,title.raw,excerpt.raw,content.raw',\n\t\t\t}\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 { 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 {\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 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 { 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\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{\n\t\t\t\tper_page: -1,\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\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 { 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\t{\n\t\t\t\tper_page: -1,\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\t\t);\n\t\tif ( ! revisions ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Template revisions use the template REST API format, which exposes\n\t\t// 'modified' instead of 'date'. Regular post revisions use 'date'.\n\t\tconst revisionDateField = revisionKey === 'wp_id' ? 'modified' : 'date';\n\n\t\t// Sort by date ascending (oldest first).\n\t\tconst sortedRevisions = [ ...revisions ].sort(\n\t\t\t( a, b ) =>\n\t\t\t\tnew Date( a[ revisionDateField ] ) -\n\t\t\t\tnew Date( b[ revisionDateField ] )\n\t\t);\n\n\t\t// Find current revision index.\n\t\tconst currentIndex = sortedRevisions.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 ) {\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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",
6
6
  "names": ["blockEditorStore", "pageIcon", "coreStore", "fastDeepEqual", "_getEntityActions", "_isEntityReady", "_getEntityFields", "preferencesStore"]
7
7
  }