@wordpress/editor 14.50.0 → 14.51.1-next.v.202607070741.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 (197) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/components/collab-sidebar/format.cjs +83 -0
  3. package/build/components/collab-sidebar/format.cjs.map +7 -0
  4. package/build/components/collab-sidebar/hooks.cjs +117 -16
  5. package/build/components/collab-sidebar/hooks.cjs.map +2 -2
  6. package/build/components/collab-sidebar/index.cjs +18 -2
  7. package/build/components/collab-sidebar/index.cjs.map +2 -2
  8. package/build/components/collab-sidebar/note-highlight-styles.cjs +67 -0
  9. package/build/components/collab-sidebar/note-highlight-styles.cjs.map +7 -0
  10. package/build/components/collab-sidebar/utils.cjs +139 -0
  11. package/build/components/collab-sidebar/utils.cjs.map +2 -2
  12. package/build/components/collaborators-presence/use-collaborator-notifications.cjs +55 -30
  13. package/build/components/collaborators-presence/use-collaborator-notifications.cjs.map +2 -2
  14. package/build/components/commands/index.cjs +99 -3
  15. package/build/components/commands/index.cjs.map +2 -2
  16. package/build/components/document-bar/index.cjs +28 -34
  17. package/build/components/document-bar/index.cjs.map +2 -2
  18. package/build/components/entities-saved-states/index.cjs +1 -4
  19. package/build/components/entities-saved-states/index.cjs.map +2 -2
  20. package/build/components/media-categories/index.cjs +92 -6
  21. package/build/components/media-categories/index.cjs.map +2 -2
  22. package/build/components/page-attributes/parent.cjs +0 -1
  23. package/build/components/page-attributes/parent.cjs.map +2 -2
  24. package/build/components/post-author/combobox.cjs +0 -1
  25. package/build/components/post-author/combobox.cjs.map +2 -2
  26. package/build/components/post-author/select.cjs +0 -1
  27. package/build/components/post-author/select.cjs.map +2 -2
  28. package/build/components/post-preview-button/index.cjs +29 -2
  29. package/build/components/post-preview-button/index.cjs.map +2 -2
  30. package/build/components/post-publish-panel/maybe-upload-media.cjs +15 -26
  31. package/build/components/post-publish-panel/maybe-upload-media.cjs.map +3 -3
  32. package/build/components/post-revisions-preview/revisions-slider.cjs +3 -1
  33. package/build/components/post-revisions-preview/revisions-slider.cjs.map +2 -2
  34. package/build/components/post-taxonomies/flat-term-selector.cjs +0 -1
  35. package/build/components/post-taxonomies/flat-term-selector.cjs.map +2 -2
  36. package/build/components/post-taxonomies/hierarchical-term-selector.cjs +0 -2
  37. package/build/components/post-taxonomies/hierarchical-term-selector.cjs.map +2 -2
  38. package/build/components/post-template/classic-theme.cjs +0 -1
  39. package/build/components/post-template/classic-theme.cjs.map +2 -2
  40. package/build/components/preferences-modal/index.cjs +54 -28
  41. package/build/components/preferences-modal/index.cjs.map +2 -2
  42. package/build/components/preview-dropdown/index.cjs +3 -3
  43. package/build/components/preview-dropdown/index.cjs.map +2 -2
  44. package/build/components/provider/use-block-editor-settings.cjs +23 -3
  45. package/build/components/provider/use-block-editor-settings.cjs.map +3 -3
  46. package/build/components/sidebar/dataform-post-summary.cjs +5 -1
  47. package/build/components/sidebar/dataform-post-summary.cjs.map +3 -3
  48. package/build/components/sidebar/index.cjs +29 -38
  49. package/build/components/sidebar/index.cjs.map +3 -3
  50. package/build/components/sidebar/post-summary.cjs +0 -13
  51. package/build/components/sidebar/post-summary.cjs.map +3 -3
  52. package/build/dataviews/store/private-actions.cjs +24 -19
  53. package/build/dataviews/store/private-actions.cjs.map +2 -2
  54. package/build/store/private-actions.cjs +5 -2
  55. package/build/store/private-actions.cjs.map +2 -2
  56. package/build/utils/media-sideload-from-url/index.cjs +63 -0
  57. package/build/utils/media-sideload-from-url/index.cjs.map +7 -0
  58. package/build-module/components/collab-sidebar/format.mjs +57 -0
  59. package/build-module/components/collab-sidebar/format.mjs.map +7 -0
  60. package/build-module/components/collab-sidebar/hooks.mjs +121 -16
  61. package/build-module/components/collab-sidebar/hooks.mjs.map +2 -2
  62. package/build-module/components/collab-sidebar/index.mjs +21 -5
  63. package/build-module/components/collab-sidebar/index.mjs.map +2 -2
  64. package/build-module/components/collab-sidebar/note-highlight-styles.mjs +41 -0
  65. package/build-module/components/collab-sidebar/note-highlight-styles.mjs.map +7 -0
  66. package/build-module/components/collab-sidebar/utils.mjs +133 -0
  67. package/build-module/components/collab-sidebar/utils.mjs.map +2 -2
  68. package/build-module/components/collaborators-presence/use-collaborator-notifications.mjs +55 -30
  69. package/build-module/components/collaborators-presence/use-collaborator-notifications.mjs.map +2 -2
  70. package/build-module/components/commands/index.mjs +99 -3
  71. package/build-module/components/commands/index.mjs.map +2 -2
  72. package/build-module/components/document-bar/index.mjs +28 -34
  73. package/build-module/components/document-bar/index.mjs.map +2 -2
  74. package/build-module/components/entities-saved-states/index.mjs +1 -4
  75. package/build-module/components/entities-saved-states/index.mjs.map +2 -2
  76. package/build-module/components/media-categories/index.mjs +93 -7
  77. package/build-module/components/media-categories/index.mjs.map +2 -2
  78. package/build-module/components/page-attributes/parent.mjs +0 -1
  79. package/build-module/components/page-attributes/parent.mjs.map +2 -2
  80. package/build-module/components/post-author/combobox.mjs +0 -1
  81. package/build-module/components/post-author/combobox.mjs.map +2 -2
  82. package/build-module/components/post-author/select.mjs +0 -1
  83. package/build-module/components/post-author/select.mjs.map +2 -2
  84. package/build-module/components/post-preview-button/index.mjs +29 -2
  85. package/build-module/components/post-preview-button/index.mjs.map +2 -2
  86. package/build-module/components/post-publish-panel/maybe-upload-media.mjs +19 -27
  87. package/build-module/components/post-publish-panel/maybe-upload-media.mjs.map +2 -2
  88. package/build-module/components/post-revisions-preview/revisions-slider.mjs +3 -1
  89. package/build-module/components/post-revisions-preview/revisions-slider.mjs.map +2 -2
  90. package/build-module/components/post-taxonomies/flat-term-selector.mjs +0 -1
  91. package/build-module/components/post-taxonomies/flat-term-selector.mjs.map +2 -2
  92. package/build-module/components/post-taxonomies/hierarchical-term-selector.mjs +0 -2
  93. package/build-module/components/post-taxonomies/hierarchical-term-selector.mjs.map +2 -2
  94. package/build-module/components/post-template/classic-theme.mjs +0 -1
  95. package/build-module/components/post-template/classic-theme.mjs.map +2 -2
  96. package/build-module/components/preferences-modal/index.mjs +54 -28
  97. package/build-module/components/preferences-modal/index.mjs.map +2 -2
  98. package/build-module/components/preview-dropdown/index.mjs +3 -3
  99. package/build-module/components/preview-dropdown/index.mjs.map +2 -2
  100. package/build-module/components/provider/use-block-editor-settings.mjs +23 -3
  101. package/build-module/components/provider/use-block-editor-settings.mjs.map +2 -2
  102. package/build-module/components/sidebar/dataform-post-summary.mjs +6 -2
  103. package/build-module/components/sidebar/dataform-post-summary.mjs.map +2 -2
  104. package/build-module/components/sidebar/index.mjs +29 -42
  105. package/build-module/components/sidebar/index.mjs.map +2 -2
  106. package/build-module/components/sidebar/post-summary.mjs +0 -13
  107. package/build-module/components/sidebar/post-summary.mjs.map +2 -2
  108. package/build-module/dataviews/store/private-actions.mjs +26 -19
  109. package/build-module/dataviews/store/private-actions.mjs.map +2 -2
  110. package/build-module/store/private-actions.mjs +5 -2
  111. package/build-module/store/private-actions.mjs.map +2 -2
  112. package/build-module/utils/media-sideload-from-url/index.mjs +32 -0
  113. package/build-module/utils/media-sideload-from-url/index.mjs.map +7 -0
  114. package/build-style/style-rtl.css +65 -33
  115. package/build-style/style.css +65 -33
  116. package/build-types/components/collab-sidebar/format.d.ts +17 -0
  117. package/build-types/components/collab-sidebar/format.d.ts.map +1 -0
  118. package/build-types/components/collab-sidebar/hooks.d.ts.map +1 -1
  119. package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
  120. package/build-types/components/collab-sidebar/note-highlight-styles.d.ts +31 -0
  121. package/build-types/components/collab-sidebar/note-highlight-styles.d.ts.map +1 -0
  122. package/build-types/components/collab-sidebar/utils.d.ts +82 -2
  123. package/build-types/components/collab-sidebar/utils.d.ts.map +1 -1
  124. package/build-types/components/collaborators-presence/use-collaborator-notifications.d.ts.map +1 -1
  125. package/build-types/components/commands/index.d.ts.map +1 -1
  126. package/build-types/components/document-bar/index.d.ts.map +1 -1
  127. package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
  128. package/build-types/components/media-categories/index.d.ts +12 -3
  129. package/build-types/components/media-categories/index.d.ts.map +1 -1
  130. package/build-types/components/page-attributes/parent.d.ts.map +1 -1
  131. package/build-types/components/post-author/combobox.d.ts.map +1 -1
  132. package/build-types/components/post-author/select.d.ts.map +1 -1
  133. package/build-types/components/post-preview-button/index.d.ts.map +1 -1
  134. package/build-types/components/post-publish-panel/maybe-upload-media.d.ts.map +1 -1
  135. package/build-types/components/post-revisions-preview/revisions-slider.d.ts.map +1 -1
  136. package/build-types/components/post-taxonomies/flat-term-selector.d.ts.map +1 -1
  137. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts.map +1 -1
  138. package/build-types/components/post-template/classic-theme.d.ts.map +1 -1
  139. package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
  140. package/build-types/components/sidebar/dataform-post-summary.d.ts.map +1 -1
  141. package/build-types/components/sidebar/index.d.ts.map +1 -1
  142. package/build-types/components/sidebar/post-summary.d.ts.map +1 -1
  143. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  144. package/build-types/store/private-actions.d.ts.map +1 -1
  145. package/build-types/store/selectors.d.ts.map +1 -1
  146. package/build-types/utils/get-template-part-icon.d.ts.map +1 -1
  147. package/build-types/utils/media-sideload-from-url/index.d.ts +18 -0
  148. package/build-types/utils/media-sideload-from-url/index.d.ts.map +1 -0
  149. package/package.json +48 -46
  150. package/src/components/collab-sidebar/format.js +72 -0
  151. package/src/components/collab-sidebar/hooks.js +203 -22
  152. package/src/components/collab-sidebar/index.js +19 -5
  153. package/src/components/collab-sidebar/note-highlight-styles.js +83 -0
  154. package/src/components/collab-sidebar/style.scss +9 -0
  155. package/src/components/collab-sidebar/test/note-highlight-styles.js +106 -0
  156. package/src/components/collab-sidebar/test/utils.js +471 -0
  157. package/src/components/collab-sidebar/utils.js +225 -2
  158. package/src/components/collaborators-presence/test/use-collaborator-notifications.ts +265 -262
  159. package/src/components/collaborators-presence/use-collaborator-notifications.ts +70 -34
  160. package/src/components/commands/index.js +142 -0
  161. package/src/components/document-bar/index.js +0 -9
  162. package/src/components/document-bar/style.scss +0 -17
  163. package/src/components/entities-saved-states/index.js +1 -5
  164. package/src/components/header/style.scss +7 -3
  165. package/src/components/media-categories/index.js +160 -6
  166. package/src/components/media-categories/test/index.js +202 -0
  167. package/src/components/page-attributes/parent.js +0 -1
  168. package/src/components/post-author/combobox.js +0 -1
  169. package/src/components/post-author/select.js +0 -1
  170. package/src/components/post-preview-button/index.js +68 -2
  171. package/src/components/post-publish-panel/maybe-upload-media.js +25 -30
  172. package/src/components/post-publish-panel/style.scss +1 -1
  173. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +11 -127
  174. package/src/components/post-revisions-preview/revisions-slider.js +4 -1
  175. package/src/components/post-revisions-preview/test/block-diff.js +2 -2
  176. package/src/components/post-taxonomies/flat-term-selector.js +0 -1
  177. package/src/components/post-taxonomies/hierarchical-term-selector.js +0 -2
  178. package/src/components/post-template/classic-theme.js +0 -1
  179. package/src/components/preferences-modal/index.js +40 -22
  180. package/src/components/preferences-modal/test/index.js +83 -0
  181. package/src/components/preview-dropdown/index.js +3 -3
  182. package/src/components/provider/use-block-editor-settings.js +42 -1
  183. package/src/components/sidebar/dataform-post-summary.js +13 -1
  184. package/src/components/sidebar/index.js +32 -47
  185. package/src/components/sidebar/post-summary.js +0 -17
  186. package/src/dataviews/store/private-actions.ts +30 -26
  187. package/src/store/private-actions.js +6 -2
  188. package/src/utils/media-sideload-from-url/index.js +54 -0
  189. package/src/utils/media-sideload-from-url/test/index.js +162 -0
  190. package/build/components/post-publish-panel/media-util.cjs +0 -72
  191. package/build/components/post-publish-panel/media-util.cjs.map +0 -7
  192. package/build-module/components/post-publish-panel/media-util.mjs +0 -46
  193. package/build-module/components/post-publish-panel/media-util.mjs.map +0 -7
  194. package/build-types/components/post-publish-panel/media-util.d.ts +0 -20
  195. package/build-types/components/post-publish-panel/media-util.d.ts.map +0 -1
  196. package/src/components/post-publish-panel/media-util.js +0 -87
  197. package/src/components/post-publish-panel/test/media-util.js +0 -118
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/commands/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, isRTL, sprintf } from '@wordpress/i18n';\nimport {\n\tblockDefault,\n\tcode,\n\tdrawerLeft,\n\tdrawerRight,\n\tpencil,\n\tformatListBullets,\n\tlistView,\n\texternal,\n\tkeyboard,\n\tsymbol,\n\tpage,\n\tlayout,\n\trotateRight,\n\trotateLeft,\n} from '@wordpress/icons';\nimport { useCommandLoader } from '@wordpress/commands';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore, useEntityRecord } from '@wordpress/core-data';\nimport { store as interfaceStore } from '@wordpress/interface';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\nimport {\n\tPATTERN_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tTEMPLATE_POST_TYPE,\n} from '../../store/constants';\nimport { modalName as patternRenameModalName } from '../pattern-rename-modal';\nimport { modalName as patternDuplicateModalName } from '../pattern-duplicate-modal';\nimport isTemplateRevertable from '../../store/utils/is-template-revertable';\n\nconst getEditorCommandLoader = () =>\n\tfunction useEditorCommandLoader() {\n\t\tconst {\n\t\t\teditorMode,\n\t\t\tisListViewOpen,\n\t\t\tshowBlockBreadcrumbs,\n\t\t\tisDistractionFree,\n\t\t\tisFocusMode,\n\t\t\tisPreviewMode,\n\t\t\tisViewable,\n\t\t\tisCodeEditingEnabled,\n\t\t\tisRichEditingEnabled,\n\t\t\tisPublishSidebarEnabled,\n\t\t} = useSelect( ( select ) => {\n\t\t\tconst { get } = select( preferencesStore );\n\t\t\tconst { isListViewOpened, getCurrentPostType, getEditorSettings } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\tconst { getPostType } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\teditorMode: get( 'core', 'editorMode' ) ?? 'visual',\n\t\t\t\tisListViewOpen: isListViewOpened(),\n\t\t\t\tshowBlockBreadcrumbs: get( 'core', 'showBlockBreadcrumbs' ),\n\t\t\t\tisDistractionFree: get( 'core', 'distractionFree' ),\n\t\t\t\tisFocusMode: get( 'core', 'focusMode' ),\n\t\t\t\tisPreviewMode: getSettings().isPreviewMode,\n\t\t\t\tisViewable:\n\t\t\t\t\tgetPostType( getCurrentPostType() )?.viewable ?? false,\n\t\t\t\tisCodeEditingEnabled: getEditorSettings().codeEditingEnabled,\n\t\t\t\tisRichEditingEnabled: getEditorSettings().richEditingEnabled,\n\t\t\t\tisPublishSidebarEnabled:\n\t\t\t\t\tselect( editorStore ).isPublishSidebarEnabled(),\n\t\t\t};\n\t\t}, [] );\n\t\tconst { getActiveComplementaryArea } = useSelect( interfaceStore );\n\t\tconst { toggle } = useDispatch( preferencesStore );\n\t\tconst { createInfoNotice } = useDispatch( noticesStore );\n\t\tconst {\n\t\t\t__unstableSaveForPreview,\n\t\t\tsetIsListViewOpened,\n\t\t\tswitchEditorMode,\n\t\t\ttoggleDistractionFree,\n\t\t\ttoggleSpotlightMode,\n\t\t\ttoggleTopToolbar,\n\t\t} = useDispatch( editorStore );\n\t\tconst { openModal, enableComplementaryArea, disableComplementaryArea } =\n\t\t\tuseDispatch( interfaceStore );\n\t\tconst { getCurrentPostId } = useSelect( editorStore );\n\t\tconst allowSwitchEditorMode =\n\t\t\tisCodeEditingEnabled && isRichEditingEnabled;\n\n\t\tif ( isPreviewMode ) {\n\t\t\treturn { commands: [], isLoading: false };\n\t\t}\n\n\t\tconst commands = [];\n\n\t\tcommands.push( {\n\t\t\tname: 'core/open-shortcut-help',\n\t\t\tlabel: __( 'Keyboard shortcuts' ),\n\t\t\ticon: keyboard,\n\t\t\tcategory: 'view',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tclose();\n\t\t\t\topenModal( 'editor/keyboard-shortcut-help' );\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-distraction-free',\n\t\t\tlabel: isDistractionFree\n\t\t\t\t? __( 'Exit Distraction free' )\n\t\t\t\t: __( 'Enter Distraction free' ),\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\ttoggleDistractionFree();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/open-preferences',\n\t\t\tlabel: __( 'Editor preferences' ),\n\t\t\tcategory: 'view',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tclose();\n\t\t\t\topenModal( 'editor/preferences' );\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-spotlight-mode',\n\t\t\tlabel: isFocusMode\n\t\t\t\t? __( 'Exit Spotlight mode' )\n\t\t\t\t: __( 'Enter Spotlight mode' ),\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\ttoggleSpotlightMode();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-list-view',\n\t\t\tlabel: isListViewOpen\n\t\t\t\t? __( 'Close List View' )\n\t\t\t\t: __( 'Open List View' ),\n\t\t\ticon: listView,\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tsetIsListViewOpened( ! isListViewOpen );\n\t\t\t\tclose();\n\t\t\t\tcreateInfoNotice(\n\t\t\t\t\tisListViewOpen\n\t\t\t\t\t\t? __( 'List View off.' )\n\t\t\t\t\t\t: __( 'List View on.' ),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'core/editor/toggle-list-view/notice',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-top-toolbar',\n\t\t\tlabel: __( 'Top toolbar' ),\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\ttoggleTopToolbar();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} );\n\n\t\tif ( allowSwitchEditorMode ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/toggle-code-editor',\n\t\t\t\tlabel:\n\t\t\t\t\teditorMode === 'visual'\n\t\t\t\t\t\t? __( 'Open code editor' )\n\t\t\t\t\t\t: __( 'Exit code editor' ),\n\t\t\t\ticon: code,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\tswitchEditorMode(\n\t\t\t\t\t\teditorMode === 'visual' ? 'text' : 'visual'\n\t\t\t\t\t);\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-breadcrumbs',\n\t\t\tlabel: showBlockBreadcrumbs\n\t\t\t\t? __( 'Hide block breadcrumbs' )\n\t\t\t\t: __( 'Show block breadcrumbs' ),\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\ttoggle( 'core', 'showBlockBreadcrumbs' );\n\t\t\t\tclose();\n\t\t\t\tcreateInfoNotice(\n\t\t\t\t\tshowBlockBreadcrumbs\n\t\t\t\t\t\t? __( 'Breadcrumbs hidden.' )\n\t\t\t\t\t\t: __( 'Breadcrumbs visible.' ),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'core/editor/toggle-breadcrumbs/notice',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/open-settings-sidebar',\n\t\t\tlabel: __( 'Show or hide the Settings panel' ),\n\t\t\ticon: isRTL() ? drawerLeft : drawerRight,\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tconst activeSidebar = getActiveComplementaryArea( 'core' );\n\t\t\t\tclose();\n\t\t\t\tif ( activeSidebar === 'edit-post/document' ) {\n\t\t\t\t\tdisableComplementaryArea( 'core' );\n\t\t\t\t} else {\n\t\t\t\t\tenableComplementaryArea( 'core', 'edit-post/document' );\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/open-block-inspector',\n\t\t\tlabel: __( 'Show or hide the Block settings panel' ),\n\t\t\ticon: blockDefault,\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tconst activeSidebar = getActiveComplementaryArea( 'core' );\n\t\t\t\tclose();\n\t\t\t\tif ( activeSidebar === 'edit-post/block' ) {\n\t\t\t\t\tdisableComplementaryArea( 'core' );\n\t\t\t\t} else {\n\t\t\t\t\tenableComplementaryArea( 'core', 'edit-post/block' );\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-publish-sidebar',\n\t\t\tlabel: isPublishSidebarEnabled\n\t\t\t\t? __( 'Disable pre-publish checks' )\n\t\t\t\t: __( 'Enable pre-publish checks' ),\n\t\t\ticon: formatListBullets,\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tclose();\n\t\t\t\ttoggle( 'core', 'isPublishSidebarEnabled' );\n\t\t\t\tcreateInfoNotice(\n\t\t\t\t\tisPublishSidebarEnabled\n\t\t\t\t\t\t? __( 'Pre-publish checks disabled.' )\n\t\t\t\t\t\t: __( 'Pre-publish checks enabled.' ),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'core/editor/publish-sidebar/notice',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t},\n\t\t} );\n\n\t\tif ( isViewable ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/preview-link',\n\t\t\t\tlabel: __( 'Preview in a new tab' ),\n\t\t\t\ticon: external,\n\t\t\t\tcategory: 'view',\n\t\t\t\tcallback: async ( { close } ) => {\n\t\t\t\t\tclose();\n\t\t\t\t\tconst postId = getCurrentPostId();\n\t\t\t\t\tconst link = await __unstableSaveForPreview();\n\t\t\t\t\twindow.open( link, `wp-preview-${ postId }` );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\treturn {\n\t\t\tcommands,\n\t\t\tisLoading: false,\n\t\t};\n\t};\n\nconst getEditedEntityContextualCommands = () =>\n\tfunction useEditedEntityContextualCommands() {\n\t\tconst { postType } = useSelect( ( select ) => {\n\t\t\tconst { getCurrentPostType } = select( editorStore );\n\t\t\treturn {\n\t\t\t\tpostType: getCurrentPostType(),\n\t\t\t};\n\t\t}, [] );\n\t\tconst { openModal } = useDispatch( interfaceStore );\n\t\tconst commands = [];\n\n\t\tif ( postType === PATTERN_POST_TYPE ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/rename-pattern',\n\t\t\t\tlabel: __( 'Rename pattern' ),\n\t\t\t\ticon: pencil,\n\t\t\t\tcategory: 'edit',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\topenModal( patternRenameModalName );\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/duplicate-pattern',\n\t\t\t\tlabel: __( 'Duplicate pattern' ),\n\t\t\t\ticon: symbol,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\topenModal( patternDuplicateModalName );\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\treturn { isLoading: false, commands };\n\t};\n\nconst getPageContentFocusCommands = () =>\n\tfunction usePageContentFocusCommands() {\n\t\tconst {\n\t\t\tonNavigateToEntityRecord,\n\t\t\tgoBack,\n\t\t\ttemplateId,\n\t\t\tisPreviewMode,\n\t\t\tcanEditTemplate,\n\t\t} = useSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetRenderingMode,\n\t\t\t\tgetEditorSettings: _getEditorSettings,\n\t\t\t\tgetCurrentTemplateId,\n\t\t\t} = unlock( select( editorStore ) );\n\t\t\tconst editorSettings = _getEditorSettings();\n\t\t\tconst _templateId = getCurrentTemplateId();\n\t\t\treturn {\n\t\t\t\tisTemplateHidden: getRenderingMode() === 'post-only',\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\teditorSettings.onNavigateToEntityRecord,\n\t\t\t\tgetEditorSettings: _getEditorSettings,\n\t\t\t\tgoBack: editorSettings.onNavigateToPreviousEntityRecord,\n\t\t\t\ttemplateId: _templateId,\n\t\t\t\tisPreviewMode: editorSettings.isPreviewMode,\n\t\t\t\tcanEditTemplate:\n\t\t\t\t\t!! _templateId &&\n\t\t\t\t\tselect( coreStore ).canUser( 'update', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_template',\n\t\t\t\t\t\tid: _templateId,\n\t\t\t\t\t} ),\n\t\t\t};\n\t\t}, [] );\n\t\tconst { editedRecord: template, hasResolved } = useEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplateId\n\t\t);\n\n\t\tif ( isPreviewMode ) {\n\t\t\treturn { isLoading: false, commands: [] };\n\t\t}\n\n\t\tconst commands = [];\n\n\t\tif ( templateId && hasResolved && canEditTemplate ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/switch-to-template-focus',\n\t\t\t\tlabel: sprintf(\n\t\t\t\t\t/* translators: %s: template title */\n\t\t\t\t\t__( 'Edit template: %s' ),\n\t\t\t\t\tdecodeEntities( template.title )\n\t\t\t\t),\n\t\t\t\ticon: layout,\n\t\t\t\tcategory: 'edit',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\tonNavigateToEntityRecord( {\n\t\t\t\t\t\tpostId: templateId,\n\t\t\t\t\t\tpostType: 'wp_template',\n\t\t\t\t\t} );\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\tif ( !! goBack ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/switch-to-previous-entity',\n\t\t\t\tlabel: __( 'Go back' ),\n\t\t\t\ticon: page,\n\t\t\t\tcategory: 'view',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\tgoBack();\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\treturn { isLoading: false, commands };\n\t};\n\nconst getManipulateDocumentCommands = () =>\n\tfunction useManipulateDocumentCommands() {\n\t\tconst { postType, postId } = useSelect( ( select ) => {\n\t\t\tconst { getCurrentPostId, getCurrentPostType } =\n\t\t\t\tselect( editorStore );\n\t\t\treturn {\n\t\t\t\tpostType: getCurrentPostType(),\n\t\t\t\tpostId: getCurrentPostId(),\n\t\t\t};\n\t\t}, [] );\n\t\tconst { editedRecord: template, hasResolved } = useEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId\n\t\t);\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst { revertTemplate } = unlock( useDispatch( editorStore ) );\n\n\t\tif (\n\t\t\t! hasResolved ||\n\t\t\t! [ TEMPLATE_PART_POST_TYPE, TEMPLATE_POST_TYPE ].includes(\n\t\t\t\tpostType\n\t\t\t)\n\t\t) {\n\t\t\treturn { isLoading: true, commands: [] };\n\t\t}\n\n\t\tconst commands = [];\n\n\t\tif ( isTemplateRevertable( template ) ) {\n\t\t\tconst label =\n\t\t\t\ttemplate.type === TEMPLATE_POST_TYPE\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: template title */\n\t\t\t\t\t\t\t__( 'Reset template: %s' ),\n\t\t\t\t\t\t\tdecodeEntities( template.title )\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: template part title */\n\t\t\t\t\t\t\t__( 'Reset template part: %s' ),\n\t\t\t\t\t\t\tdecodeEntities( template.title )\n\t\t\t\t\t );\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/reset-template',\n\t\t\t\tlabel,\n\t\t\t\ticon: isRTL() ? rotateRight : rotateLeft,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\trevertTemplate( template );\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\treturn {\n\t\t\tisLoading: ! hasResolved,\n\t\t\tcommands,\n\t\t};\n\t};\n\nexport default function useCommands() {\n\tuseCommandLoader( {\n\t\tname: 'core/editor/edit-ui',\n\t\thook: getEditorCommandLoader(),\n\t} );\n\n\tuseCommandLoader( {\n\t\tname: 'core/editor/contextual-commands',\n\t\thook: getEditedEntityContextualCommands(),\n\t\tcontext: 'entity-edit',\n\t} );\n\n\tuseCommandLoader( {\n\t\tname: 'core/editor/page-content-focus',\n\t\thook: getPageContentFocusCommands(),\n\t\tcontext: 'entity-edit',\n\t} );\n\n\tuseCommandLoader( {\n\t\tname: 'core/edit-site/manipulate-document',\n\t\thook: getManipulateDocumentCommands(),\n\t} );\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, isRTL, sprintf } from '@wordpress/i18n';\nimport {\n\tblockDefault,\n\tcode,\n\tdrawerLeft,\n\tdrawerRight,\n\tpencil,\n\tformatListBullets,\n\tlistView,\n\texternal,\n\tkeyboard,\n\tsymbol,\n\tpage,\n\tlayout,\n\trotateRight,\n\trotateLeft,\n} from '@wordpress/icons';\nimport { useCommandLoader } from '@wordpress/commands';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore, useEntityRecord } from '@wordpress/core-data';\nimport { store as interfaceStore } from '@wordpress/interface';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\nimport {\n\tPATTERN_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tTEMPLATE_POST_TYPE,\n} from '../../store/constants';\nimport { modalName as patternRenameModalName } from '../pattern-rename-modal';\nimport { modalName as patternDuplicateModalName } from '../pattern-duplicate-modal';\nimport isTemplateRevertable from '../../store/utils/is-template-revertable';\n\n/**\n * Returns the command that toggles content-only editing for patterns and template parts.\n * The command is registered both globally for search and contextually for block\n * selection, so keeping it in one place ensures the label and callback stay aligned.\n *\n * @param {Object} options Command options.\n * @param {boolean} options.disableContentOnlyForPatternsAndTemplateParts Whether content-only editing is disabled for patterns and template parts.\n * @param {Function} options.stopEditingContentOnlySection Stops editing the current content-only section before changing the setting.\n * @param {Function} options.updateEditorSettings Updates the editor settings.\n * @return {Object} The command configuration.\n */\nfunction getTogglePatternEditingCommand( {\n\tdisableContentOnlyForPatternsAndTemplateParts,\n\tstopEditingContentOnlySection,\n\tupdateEditorSettings,\n} ) {\n\treturn {\n\t\tname: 'core/toggle-pattern-editing',\n\t\tlabel: disableContentOnlyForPatternsAndTemplateParts\n\t\t\t? __( 'Disable editing all patterns' )\n\t\t\t: __( 'Enable editing all patterns' ),\n\t\ticon: symbol,\n\t\tcategory: 'command',\n\t\tcallback: ( { close } ) => {\n\t\t\tconst disableContentOnly =\n\t\t\t\t! disableContentOnlyForPatternsAndTemplateParts;\n\t\t\tstopEditingContentOnlySection();\n\t\t\tupdateEditorSettings( {\n\t\t\t\tdisableContentOnlyForUnsyncedPatterns: disableContentOnly,\n\t\t\t\tdisableContentOnlyForTemplateParts: disableContentOnly,\n\t\t\t} );\n\t\t\tclose();\n\t\t},\n\t};\n}\n\nfunction isPatternOrTemplatePartBlock( blockName, attributes ) {\n\treturn (\n\t\t!! attributes?.metadata?.patternName ||\n\t\tblockName === 'core/template-part'\n\t);\n}\n\nconst getEditorCommandLoader = () =>\n\tfunction useEditorCommandLoader() {\n\t\tconst {\n\t\t\teditorMode,\n\t\t\tisListViewOpen,\n\t\t\tshowBlockBreadcrumbs,\n\t\t\tisDistractionFree,\n\t\t\tisFocusMode,\n\t\t\tisPreviewMode,\n\t\t\tisViewable,\n\t\t\tisCodeEditingEnabled,\n\t\t\tisRichEditingEnabled,\n\t\t\tisPublishSidebarEnabled,\n\t\t\tdisableContentOnlyForUnsyncedPatterns,\n\t\t\tdisableContentOnlyForTemplateParts,\n\t\t} = useSelect( ( select ) => {\n\t\t\tconst { get } = select( preferencesStore );\n\t\t\tconst { isListViewOpened, getCurrentPostType, getEditorSettings } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\tconst { getPostType } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\teditorMode: get( 'core', 'editorMode' ) ?? 'visual',\n\t\t\t\tisListViewOpen: isListViewOpened(),\n\t\t\t\tshowBlockBreadcrumbs: get( 'core', 'showBlockBreadcrumbs' ),\n\t\t\t\tisDistractionFree: get( 'core', 'distractionFree' ),\n\t\t\t\tisFocusMode: get( 'core', 'focusMode' ),\n\t\t\t\tisPreviewMode: getSettings().isPreviewMode,\n\t\t\t\tisViewable:\n\t\t\t\t\tgetPostType( getCurrentPostType() )?.viewable ?? false,\n\t\t\t\tisCodeEditingEnabled: getEditorSettings().codeEditingEnabled,\n\t\t\t\tisRichEditingEnabled: getEditorSettings().richEditingEnabled,\n\t\t\t\tisPublishSidebarEnabled:\n\t\t\t\t\tselect( editorStore ).isPublishSidebarEnabled(),\n\t\t\t\tdisableContentOnlyForUnsyncedPatterns:\n\t\t\t\t\t!! getEditorSettings()\n\t\t\t\t\t\t.disableContentOnlyForUnsyncedPatterns,\n\t\t\t\tdisableContentOnlyForTemplateParts:\n\t\t\t\t\t!! getEditorSettings().disableContentOnlyForTemplateParts,\n\t\t\t};\n\t\t}, [] );\n\t\tconst { getActiveComplementaryArea } = useSelect( interfaceStore );\n\t\tconst { toggle } = useDispatch( preferencesStore );\n\t\tconst { createInfoNotice } = useDispatch( noticesStore );\n\t\tconst {\n\t\t\t__unstableSaveForPreview,\n\t\t\tsetIsListViewOpened,\n\t\t\tswitchEditorMode,\n\t\t\ttoggleDistractionFree,\n\t\t\ttoggleSpotlightMode,\n\t\t\ttoggleTopToolbar,\n\t\t\tupdateEditorSettings,\n\t\t} = useDispatch( editorStore );\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst { stopEditingContentOnlySection } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\t\tconst { openModal, enableComplementaryArea, disableComplementaryArea } =\n\t\t\tuseDispatch( interfaceStore );\n\t\tconst { getCurrentPostId } = useSelect( editorStore );\n\t\tconst allowSwitchEditorMode =\n\t\t\tisCodeEditingEnabled && isRichEditingEnabled;\n\n\t\tif ( isPreviewMode ) {\n\t\t\treturn { commands: [], isLoading: false };\n\t\t}\n\n\t\tconst commands = [];\n\t\tconst disableContentOnlyForPatternsAndTemplateParts =\n\t\t\tdisableContentOnlyForUnsyncedPatterns &&\n\t\t\tdisableContentOnlyForTemplateParts;\n\n\t\tcommands.push( {\n\t\t\tname: 'core/open-shortcut-help',\n\t\t\tlabel: __( 'Keyboard shortcuts' ),\n\t\t\ticon: keyboard,\n\t\t\tcategory: 'view',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tclose();\n\t\t\t\topenModal( 'editor/keyboard-shortcut-help' );\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-distraction-free',\n\t\t\tlabel: isDistractionFree\n\t\t\t\t? __( 'Exit Distraction free' )\n\t\t\t\t: __( 'Enter Distraction free' ),\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\ttoggleDistractionFree();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/open-preferences',\n\t\t\tlabel: __( 'Editor preferences' ),\n\t\t\tcategory: 'view',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tclose();\n\t\t\t\topenModal( 'editor/preferences' );\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-spotlight-mode',\n\t\t\tlabel: isFocusMode\n\t\t\t\t? __( 'Exit Spotlight mode' )\n\t\t\t\t: __( 'Enter Spotlight mode' ),\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\ttoggleSpotlightMode();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-list-view',\n\t\t\tlabel: isListViewOpen\n\t\t\t\t? __( 'Close List View' )\n\t\t\t\t: __( 'Open List View' ),\n\t\t\ticon: listView,\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tsetIsListViewOpened( ! isListViewOpen );\n\t\t\t\tclose();\n\t\t\t\tcreateInfoNotice(\n\t\t\t\t\tisListViewOpen\n\t\t\t\t\t\t? __( 'List View off.' )\n\t\t\t\t\t\t: __( 'List View on.' ),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'core/editor/toggle-list-view/notice',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-top-toolbar',\n\t\t\tlabel: __( 'Top toolbar' ),\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\ttoggleTopToolbar();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push(\n\t\t\tgetTogglePatternEditingCommand( {\n\t\t\t\tdisableContentOnlyForPatternsAndTemplateParts,\n\t\t\t\tstopEditingContentOnlySection,\n\t\t\t\tupdateEditorSettings,\n\t\t\t} )\n\t\t);\n\n\t\tif ( allowSwitchEditorMode ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/toggle-code-editor',\n\t\t\t\tlabel:\n\t\t\t\t\teditorMode === 'visual'\n\t\t\t\t\t\t? __( 'Open code editor' )\n\t\t\t\t\t\t: __( 'Exit code editor' ),\n\t\t\t\ticon: code,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\tswitchEditorMode(\n\t\t\t\t\t\teditorMode === 'visual' ? 'text' : 'visual'\n\t\t\t\t\t);\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-breadcrumbs',\n\t\t\tlabel: showBlockBreadcrumbs\n\t\t\t\t? __( 'Hide block breadcrumbs' )\n\t\t\t\t: __( 'Show block breadcrumbs' ),\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\ttoggle( 'core', 'showBlockBreadcrumbs' );\n\t\t\t\tclose();\n\t\t\t\tcreateInfoNotice(\n\t\t\t\t\tshowBlockBreadcrumbs\n\t\t\t\t\t\t? __( 'Breadcrumbs hidden.' )\n\t\t\t\t\t\t: __( 'Breadcrumbs visible.' ),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'core/editor/toggle-breadcrumbs/notice',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/open-settings-sidebar',\n\t\t\tlabel: __( 'Show or hide the Settings panel' ),\n\t\t\ticon: isRTL() ? drawerLeft : drawerRight,\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tconst activeSidebar = getActiveComplementaryArea( 'core' );\n\t\t\t\tclose();\n\t\t\t\tif ( activeSidebar === 'edit-post/document' ) {\n\t\t\t\t\tdisableComplementaryArea( 'core' );\n\t\t\t\t} else {\n\t\t\t\t\tenableComplementaryArea( 'core', 'edit-post/document' );\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/open-block-inspector',\n\t\t\tlabel: __( 'Show or hide the Block settings panel' ),\n\t\t\ticon: blockDefault,\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tconst activeSidebar = getActiveComplementaryArea( 'core' );\n\t\t\t\tclose();\n\t\t\t\tif ( activeSidebar === 'edit-post/block' ) {\n\t\t\t\t\tdisableComplementaryArea( 'core' );\n\t\t\t\t} else {\n\t\t\t\t\tenableComplementaryArea( 'core', 'edit-post/block' );\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\n\t\tcommands.push( {\n\t\t\tname: 'core/toggle-publish-sidebar',\n\t\t\tlabel: isPublishSidebarEnabled\n\t\t\t\t? __( 'Disable pre-publish checks' )\n\t\t\t\t: __( 'Enable pre-publish checks' ),\n\t\t\ticon: formatListBullets,\n\t\t\tcategory: 'command',\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tclose();\n\t\t\t\ttoggle( 'core', 'isPublishSidebarEnabled' );\n\t\t\t\tcreateInfoNotice(\n\t\t\t\t\tisPublishSidebarEnabled\n\t\t\t\t\t\t? __( 'Pre-publish checks disabled.' )\n\t\t\t\t\t\t: __( 'Pre-publish checks enabled.' ),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'core/editor/publish-sidebar/notice',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t},\n\t\t} );\n\n\t\tif ( isViewable ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/preview-link',\n\t\t\t\tlabel: __( 'Preview in a new tab' ),\n\t\t\t\ticon: external,\n\t\t\t\tcategory: 'view',\n\t\t\t\tcallback: async ( { close } ) => {\n\t\t\t\t\tclose();\n\t\t\t\t\tconst postId = getCurrentPostId();\n\t\t\t\t\tconst link = await __unstableSaveForPreview();\n\t\t\t\t\twindow.open( link, `wp-preview-${ postId }` );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\treturn {\n\t\t\tcommands,\n\t\t\tisLoading: false,\n\t\t};\n\t};\n\nconst getPatternEditingContextualCommands = () =>\n\tfunction usePatternEditingContextualCommands( { search } ) {\n\t\tconst {\n\t\t\tdisableContentOnlyForPatternsAndTemplateParts,\n\t\t\thasPatternOrTemplatePartSelection,\n\t\t\tisPreviewMode,\n\t\t} = useSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockParents,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetSettings,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getEditorSettings } = select( editorStore );\n\t\t\tconst editorSettings = getEditorSettings();\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst clientIdsToCheck =\n\t\t\t\tselectedBlockClientId && selectedBlockClientIds.length === 1\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tselectedBlockClientId,\n\t\t\t\t\t\t\t...getBlockParents( selectedBlockClientId, true ),\n\t\t\t\t\t ]\n\t\t\t\t\t: [];\n\n\t\t\treturn {\n\t\t\t\tdisableContentOnlyForPatternsAndTemplateParts:\n\t\t\t\t\t!! editorSettings.disableContentOnlyForUnsyncedPatterns &&\n\t\t\t\t\t!! editorSettings.disableContentOnlyForTemplateParts,\n\t\t\t\thasPatternOrTemplatePartSelection: clientIdsToCheck.some(\n\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\tisPatternOrTemplatePartBlock(\n\t\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t\tgetBlockAttributes( clientId )\n\t\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tisPreviewMode: getSettings().isPreviewMode,\n\t\t\t};\n\t\t}, [] );\n\t\tconst { updateEditorSettings } = useDispatch( editorStore );\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst { stopEditingContentOnlySection } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\n\t\t// Keep the disable command available after full pattern editing is enabled,\n\t\t// even when the current selection is no longer inside a pattern or template part.\n\t\tif (\n\t\t\tsearch ||\n\t\t\t( ! hasPatternOrTemplatePartSelection &&\n\t\t\t\t! disableContentOnlyForPatternsAndTemplateParts ) ||\n\t\t\tisPreviewMode\n\t\t) {\n\t\t\treturn { isLoading: false, commands: [] };\n\t\t}\n\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tcommands: [\n\t\t\t\tgetTogglePatternEditingCommand( {\n\t\t\t\t\tdisableContentOnlyForPatternsAndTemplateParts,\n\t\t\t\t\tstopEditingContentOnlySection,\n\t\t\t\t\tupdateEditorSettings,\n\t\t\t\t} ),\n\t\t\t],\n\t\t};\n\t};\n\nconst getEditedEntityContextualCommands = () =>\n\tfunction useEditedEntityContextualCommands() {\n\t\tconst { postType } = useSelect( ( select ) => {\n\t\t\tconst { getCurrentPostType } = select( editorStore );\n\t\t\treturn {\n\t\t\t\tpostType: getCurrentPostType(),\n\t\t\t};\n\t\t}, [] );\n\t\tconst { openModal } = useDispatch( interfaceStore );\n\t\tconst commands = [];\n\n\t\tif ( postType === PATTERN_POST_TYPE ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/rename-pattern',\n\t\t\t\tlabel: __( 'Rename pattern' ),\n\t\t\t\ticon: pencil,\n\t\t\t\tcategory: 'edit',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\topenModal( patternRenameModalName );\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/duplicate-pattern',\n\t\t\t\tlabel: __( 'Duplicate pattern' ),\n\t\t\t\ticon: symbol,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\topenModal( patternDuplicateModalName );\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\treturn { isLoading: false, commands };\n\t};\n\nconst getPageContentFocusCommands = () =>\n\tfunction usePageContentFocusCommands() {\n\t\tconst {\n\t\t\tonNavigateToEntityRecord,\n\t\t\tgoBack,\n\t\t\ttemplateId,\n\t\t\tisPreviewMode,\n\t\t\tcanEditTemplate,\n\t\t} = useSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetRenderingMode,\n\t\t\t\tgetEditorSettings: _getEditorSettings,\n\t\t\t\tgetCurrentTemplateId,\n\t\t\t} = unlock( select( editorStore ) );\n\t\t\tconst editorSettings = _getEditorSettings();\n\t\t\tconst _templateId = getCurrentTemplateId();\n\t\t\treturn {\n\t\t\t\tisTemplateHidden: getRenderingMode() === 'post-only',\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\teditorSettings.onNavigateToEntityRecord,\n\t\t\t\tgetEditorSettings: _getEditorSettings,\n\t\t\t\tgoBack: editorSettings.onNavigateToPreviousEntityRecord,\n\t\t\t\ttemplateId: _templateId,\n\t\t\t\tisPreviewMode: editorSettings.isPreviewMode,\n\t\t\t\tcanEditTemplate:\n\t\t\t\t\t!! _templateId &&\n\t\t\t\t\tselect( coreStore ).canUser( 'update', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_template',\n\t\t\t\t\t\tid: _templateId,\n\t\t\t\t\t} ),\n\t\t\t};\n\t\t}, [] );\n\t\tconst { editedRecord: template, hasResolved } = useEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplateId\n\t\t);\n\n\t\tif ( isPreviewMode ) {\n\t\t\treturn { isLoading: false, commands: [] };\n\t\t}\n\n\t\tconst commands = [];\n\n\t\tif ( templateId && hasResolved && canEditTemplate ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/switch-to-template-focus',\n\t\t\t\tlabel: sprintf(\n\t\t\t\t\t/* translators: %s: template title */\n\t\t\t\t\t__( 'Edit template: %s' ),\n\t\t\t\t\tdecodeEntities( template.title )\n\t\t\t\t),\n\t\t\t\ticon: layout,\n\t\t\t\tcategory: 'edit',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\tonNavigateToEntityRecord( {\n\t\t\t\t\t\tpostId: templateId,\n\t\t\t\t\t\tpostType: 'wp_template',\n\t\t\t\t\t} );\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\tif ( !! goBack ) {\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/switch-to-previous-entity',\n\t\t\t\tlabel: __( 'Go back' ),\n\t\t\t\ticon: page,\n\t\t\t\tcategory: 'view',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\tgoBack();\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\treturn { isLoading: false, commands };\n\t};\n\nconst getManipulateDocumentCommands = () =>\n\tfunction useManipulateDocumentCommands() {\n\t\tconst { postType, postId } = useSelect( ( select ) => {\n\t\t\tconst { getCurrentPostId, getCurrentPostType } =\n\t\t\t\tselect( editorStore );\n\t\t\treturn {\n\t\t\t\tpostType: getCurrentPostType(),\n\t\t\t\tpostId: getCurrentPostId(),\n\t\t\t};\n\t\t}, [] );\n\t\tconst { editedRecord: template, hasResolved } = useEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId\n\t\t);\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst { revertTemplate } = unlock( useDispatch( editorStore ) );\n\n\t\tif (\n\t\t\t! hasResolved ||\n\t\t\t! [ TEMPLATE_PART_POST_TYPE, TEMPLATE_POST_TYPE ].includes(\n\t\t\t\tpostType\n\t\t\t)\n\t\t) {\n\t\t\treturn { isLoading: true, commands: [] };\n\t\t}\n\n\t\tconst commands = [];\n\n\t\tif ( isTemplateRevertable( template ) ) {\n\t\t\tconst label =\n\t\t\t\ttemplate.type === TEMPLATE_POST_TYPE\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: template title */\n\t\t\t\t\t\t\t__( 'Reset template: %s' ),\n\t\t\t\t\t\t\tdecodeEntities( template.title )\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: template part title */\n\t\t\t\t\t\t\t__( 'Reset template part: %s' ),\n\t\t\t\t\t\t\tdecodeEntities( template.title )\n\t\t\t\t\t );\n\t\t\tcommands.push( {\n\t\t\t\tname: 'core/reset-template',\n\t\t\t\tlabel,\n\t\t\t\ticon: isRTL() ? rotateRight : rotateLeft,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\trevertTemplate( template );\n\t\t\t\t\tclose();\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\treturn {\n\t\t\tisLoading: ! hasResolved,\n\t\t\tcommands,\n\t\t};\n\t};\n\nexport default function useCommands() {\n\tuseCommandLoader( {\n\t\tname: 'core/editor/edit-ui',\n\t\thook: getEditorCommandLoader(),\n\t} );\n\n\tuseCommandLoader( {\n\t\tname: 'core/editor/contextual-commands',\n\t\thook: getEditedEntityContextualCommands(),\n\t\tcontext: 'entity-edit',\n\t} );\n\n\tuseCommandLoader( {\n\t\tname: 'core/editor/pattern-editing-contextual-commands',\n\t\thook: getPatternEditingContextualCommands(),\n\t\tcontext: 'block-selection-edit',\n\t} );\n\n\tuseCommandLoader( {\n\t\tname: 'core/editor/page-content-focus',\n\t\thook: getPageContentFocusCommands(),\n\t\tcontext: 'entity-edit',\n\t} );\n\n\tuseCommandLoader( {\n\t\tname: 'core/edit-site/manipulate-document',\n\t\thook: getManipulateDocumentCommands(),\n\t} );\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["preferencesStore", "editorStore", "blockEditorStore", "coreStore", "interfaceStore", "noticesStore", "patternRenameModalName", "patternDuplicateModalName", "isTemplateRevertable"]
7
7
  }
@@ -39,7 +39,6 @@ var import_data = require("@wordpress/data");
39
39
  var import_components = require("@wordpress/components");
40
40
  var import_block_editor = require("@wordpress/block-editor");
41
41
  var import_icons = require("@wordpress/icons");
42
- var import_keycodes = require("@wordpress/keycodes");
43
42
  var import_core_data = require("@wordpress/core-data");
44
43
  var import_commands = require("@wordpress/commands");
45
44
  var import_element = require("@wordpress/element");
@@ -124,7 +123,6 @@ function DocumentBar(props) {
124
123
  }, []);
125
124
  const { open: openCommandCenter } = (0, import_data.useDispatch)(import_commands.store);
126
125
  const isReducedMotion = (0, import_compose.useReducedMotion)();
127
- const hasShortcut = !window.__experimentalAdminBarInEditor;
128
126
  const isTemplate = import_constants.TEMPLATE_POST_TYPES.includes(postType);
129
127
  const hasBackButton = !!onNavigateToPreviousEntityRecord || !!unlockedPatternInfo;
130
128
  const entityTitle = isTemplate ? templateTitle : documentTitle;
@@ -147,8 +145,7 @@ function DocumentBar(props) {
147
145
  "div",
148
146
  {
149
147
  className: (0, import_clsx.default)("editor-document-bar", {
150
- "has-back-button": hasBackButton,
151
- "has-shortcut": hasShortcut
148
+ "has-back-button": hasBackButton
152
149
  }),
153
150
  children: [
154
151
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__unstableAnimatePresence, { children: hasBackButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -172,42 +169,39 @@ function DocumentBar(props) {
172
169
  className: "editor-document-bar__icon-layout"
173
170
  }
174
171
  ),
175
- isNotFound ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalText, { children: (0, import_i18n.__)("Document not found") }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
172
+ isNotFound ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalText, { children: (0, import_i18n.__)("Document not found") }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
176
173
  import_components.Button,
177
174
  {
178
175
  className: "editor-document-bar__command",
179
176
  onClick: () => openCommandCenter(),
180
177
  size: "compact",
181
- children: [
182
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
183
- import_components.__unstableMotion.div,
184
- {
185
- className: "editor-document-bar__title",
186
- initial: mountedRef.current ? {
187
- opacity: 0,
188
- transform: hasBackButton ? "translateX(15%)" : "translateX(-15%)"
189
- } : false,
190
- animate: {
191
- opacity: 1,
192
- transform: "translateX(0%)"
193
- },
194
- transition: isReducedMotion ? { duration: 0 } : void 0,
195
- children: [
196
- icon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.BlockIcon, { icon }),
197
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.__experimentalText, { size: "body", as: "h1", children: [
198
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "editor-document-bar__post-title", children: title ? (0, import_dom.__unstableStripHTML)(title) : (0, import_i18n.__)("No title") }),
199
- unlockedPatternInfo && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "editor-document-bar__post-type-label", children: unlockedPatternInfo.type === "template-part" ? `· ${(0, import_i18n.__)("Template Part")}` : `· ${(0, import_i18n.__)("Pattern")}` }),
200
- !unlockedPatternInfo && pageTypeBadge && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "editor-document-bar__post-type-label", children: `· ${pageTypeBadge}` }),
201
- !unlockedPatternInfo && postTypeLabel && !props.title && !pageTypeBadge && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "editor-document-bar__post-type-label", children: `· ${(0, import_html_entities.decodeEntities)(
202
- postTypeLabel
203
- )}` })
204
- ] })
205
- ]
178
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
179
+ import_components.__unstableMotion.div,
180
+ {
181
+ className: "editor-document-bar__title",
182
+ initial: mountedRef.current ? {
183
+ opacity: 0,
184
+ transform: hasBackButton ? "translateX(15%)" : "translateX(-15%)"
185
+ } : false,
186
+ animate: {
187
+ opacity: 1,
188
+ transform: "translateX(0%)"
206
189
  },
207
- hasBackButton
208
- ),
209
- hasShortcut && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "editor-document-bar__shortcut", children: import_keycodes.displayShortcut.primary("k") })
210
- ]
190
+ transition: isReducedMotion ? { duration: 0 } : void 0,
191
+ children: [
192
+ icon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.BlockIcon, { icon }),
193
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.__experimentalText, { size: "body", as: "h1", children: [
194
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "editor-document-bar__post-title", children: title ? (0, import_dom.__unstableStripHTML)(title) : (0, import_i18n.__)("No title") }),
195
+ unlockedPatternInfo && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "editor-document-bar__post-type-label", children: unlockedPatternInfo.type === "template-part" ? `· ${(0, import_i18n.__)("Template Part")}` : `· ${(0, import_i18n.__)("Pattern")}` }),
196
+ !unlockedPatternInfo && pageTypeBadge && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "editor-document-bar__post-type-label", children: `· ${pageTypeBadge}` }),
197
+ !unlockedPatternInfo && postTypeLabel && !props.title && !pageTypeBadge && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "editor-document-bar__post-type-label", children: `· ${(0, import_html_entities.decodeEntities)(
198
+ postTypeLabel
199
+ )}` })
200
+ ] })
201
+ ]
202
+ },
203
+ hasBackButton
204
+ )
211
205
  }
212
206
  )
213
207
  ]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/document-bar/index.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\t__experimentalText as WCText,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { BlockIcon, store as blockEditorStore } from '@wordpress/block-editor';\nimport { chevronLeftSmall, chevronRightSmall, layout } from '@wordpress/icons';\nimport { displayShortcut } from '@wordpress/keycodes';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as commandsStore } from '@wordpress/commands';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { useReducedMotion } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPES } from '../../store/constants';\nimport { store as editorStore } from '../../store';\nimport usePageTypeBadge from '../../utils/pageTypeBadge';\nimport { getTemplateInfo } from '../../utils/get-template-info';\nimport { getStylesCanvasTitle } from '../styles-canvas';\nimport { unlock } from '../../lock-unlock';\nimport useEditedSectionDetails from './useEditedSectionDetails';\n\n/** @typedef {import(\"@wordpress/components\").IconType} IconType */\n\nconst MotionButton = motion.create( Button );\n\n/**\n * This component renders a navigation bar at the top of the editor. It displays the title of the current document,\n * a back button (if applicable), and a command center button. It also handles different states of the document,\n * such as \"not found\" or \"unsynced\".\n *\n * @example\n * ```jsx\n * <DocumentBar />\n * ```\n *\n * @param {Object} props The component props.\n * @param {string} props.title A title for the document, defaulting to the document or template title currently being edited.\n * @param {IconType} props.icon An icon for the document, no default.\n * (A default icon indicating the document post type is no longer used.)\n *\n * @return {React.ReactNode} The rendered DocumentBar component.\n */\nexport default function DocumentBar( props ) {\n\t// Get action to lock the pattern design\n\tconst { stopEditingContentOnlySection } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\t// Get details about the currently edited content-only section\n\tconst unlockedPatternInfo = useEditedSectionDetails();\n\n\tconst {\n\t\tpostId,\n\t\tpostType,\n\t\tpostTypeLabel,\n\t\tdocumentTitle,\n\t\tisNotFound,\n\t\ttemplateTitle,\n\t\tonNavigateToPreviousEntityRecord,\n\t\tisTemplatePreview,\n\t\tstylesCanvasTitle,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\tgetEditorSettings,\n\t\t\tgetRenderingMode,\n\t\t} = select( editorStore );\n\n\t\tconst {\n\t\t\tgetEditedEntityRecord,\n\t\t\tgetPostType,\n\t\t\tgetCurrentTheme,\n\t\t\tisResolving: isResolvingSelector,\n\t\t} = select( coreStore );\n\t\tconst _postType = getCurrentPostType();\n\t\tconst _postId = getCurrentPostId();\n\t\tconst _document = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\t_postType,\n\t\t\t_postId\n\t\t);\n\n\t\tconst { default_template_types: templateTypes = [] } =\n\t\t\tgetCurrentTheme() ?? {};\n\n\t\tconst _templateInfo = getTemplateInfo( {\n\t\t\ttemplateTypes,\n\t\t\ttemplate: _document,\n\t\t} );\n\t\tconst _postTypeLabel = getPostType( _postType )?.labels?.singular_name;\n\n\t\t// Check if styles canvas is active and get its title\n\t\tconst { getStylesPath, getShowStylebook } = unlock(\n\t\t\tselect( editorStore )\n\t\t);\n\t\tconst _stylesPath = getStylesPath();\n\t\tconst _showStylebook = getShowStylebook();\n\t\tconst _stylesCanvasTitle = getStylesCanvasTitle(\n\t\t\t_stylesPath,\n\t\t\t_showStylebook\n\t\t);\n\n\t\treturn {\n\t\t\tpostId: _postId,\n\t\t\tpostType: _postType,\n\t\t\tpostTypeLabel: _postTypeLabel,\n\t\t\tdocumentTitle: _document.title,\n\t\t\tisNotFound:\n\t\t\t\t! _document &&\n\t\t\t\t! isResolvingSelector(\n\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t'postType',\n\t\t\t\t\t_postType,\n\t\t\t\t\t_postId\n\t\t\t\t),\n\t\t\ttemplateTitle: _templateInfo.title,\n\t\t\tonNavigateToPreviousEntityRecord:\n\t\t\t\tgetEditorSettings().onNavigateToPreviousEntityRecord,\n\t\t\tisTemplatePreview: getRenderingMode() === 'template-locked',\n\t\t\tstylesCanvasTitle: _stylesCanvasTitle,\n\t\t};\n\t}, [] );\n\n\tconst { open: openCommandCenter } = useDispatch( commandsStore );\n\tconst isReducedMotion = useReducedMotion();\n\n\tconst hasShortcut = ! window.__experimentalAdminBarInEditor;\n\n\tconst isTemplate = TEMPLATE_POST_TYPES.includes( postType );\n\tconst hasBackButton =\n\t\t!! onNavigateToPreviousEntityRecord || !! unlockedPatternInfo;\n\tconst entityTitle = isTemplate ? templateTitle : documentTitle;\n\n\t// Use pattern info if a pattern block is unlocked, otherwise use document/entity info\n\tconst title =\n\t\tunlockedPatternInfo?.patternTitle ||\n\t\tprops.title ||\n\t\tstylesCanvasTitle ||\n\t\tentityTitle;\n\tconst icon = props.icon;\n\n\t// Determine the back button action\n\tconst handleBackClick = ( event ) => {\n\t\tevent.stopPropagation();\n\t\tif ( unlockedPatternInfo ) {\n\t\t\tstopEditingContentOnlySection();\n\t\t} else if ( onNavigateToPreviousEntityRecord ) {\n\t\t\tonNavigateToPreviousEntityRecord();\n\t\t}\n\t};\n\n\tconst pageTypeBadge = usePageTypeBadge( postId );\n\n\tconst mountedRef = useRef( false );\n\tuseEffect( () => {\n\t\tmountedRef.current = true;\n\t}, [] );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'editor-document-bar', {\n\t\t\t\t'has-back-button': hasBackButton,\n\t\t\t\t'has-shortcut': hasShortcut,\n\t\t\t} ) }\n\t\t>\n\t\t\t<AnimatePresence>\n\t\t\t\t{ hasBackButton && (\n\t\t\t\t\t<MotionButton\n\t\t\t\t\t\tclassName=\"editor-document-bar__back\"\n\t\t\t\t\t\ticon={ isRTL() ? chevronRightSmall : chevronLeftSmall }\n\t\t\t\t\t\tonClick={ handleBackClick }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tinitial={\n\t\t\t\t\t\t\tmountedRef.current\n\t\t\t\t\t\t\t\t? { opacity: 0, transform: 'translateX(15%)' }\n\t\t\t\t\t\t\t\t: false // Don't show entry animation when DocumentBar mounts.\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanimate={ { opacity: 1, transform: 'translateX(0%)' } }\n\t\t\t\t\t\texit={ { opacity: 0, transform: 'translateX(15%)' } }\n\t\t\t\t\t\ttransition={\n\t\t\t\t\t\t\tisReducedMotion ? { duration: 0 } : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</MotionButton>\n\t\t\t\t) }\n\t\t\t</AnimatePresence>\n\t\t\t{ ! isTemplate && isTemplatePreview && ! hasBackButton && (\n\t\t\t\t<BlockIcon\n\t\t\t\t\ticon={ layout }\n\t\t\t\t\tclassName=\"editor-document-bar__icon-layout\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isNotFound ? (\n\t\t\t\t<WCText>{ __( 'Document not found' ) }</WCText>\n\t\t\t) : (\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"editor-document-bar__command\"\n\t\t\t\t\tonClick={ () => openCommandCenter() }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t>\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tclassName=\"editor-document-bar__title\"\n\t\t\t\t\t\t// Force entry animation when the back button is added or removed.\n\t\t\t\t\t\tkey={ hasBackButton }\n\t\t\t\t\t\tinitial={\n\t\t\t\t\t\t\tmountedRef.current\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\t\ttransform: hasBackButton\n\t\t\t\t\t\t\t\t\t\t\t? 'translateX(15%)'\n\t\t\t\t\t\t\t\t\t\t\t: 'translateX(-15%)',\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: false // Don't show entry animation when DocumentBar mounts.\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanimate={ {\n\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\ttransform: 'translateX(0%)',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ttransition={\n\t\t\t\t\t\t\tisReducedMotion ? { duration: 0 } : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ icon && <BlockIcon icon={ icon } /> }\n\t\t\t\t\t\t<WCText size=\"body\" as=\"h1\">\n\t\t\t\t\t\t\t<span className=\"editor-document-bar__post-title\">\n\t\t\t\t\t\t\t\t{ title\n\t\t\t\t\t\t\t\t\t? stripHTML( title )\n\t\t\t\t\t\t\t\t\t: __( 'No title' ) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{ unlockedPatternInfo && (\n\t\t\t\t\t\t\t\t<span className=\"editor-document-bar__post-type-label\">\n\t\t\t\t\t\t\t\t\t{ unlockedPatternInfo.type ===\n\t\t\t\t\t\t\t\t\t'template-part'\n\t\t\t\t\t\t\t\t\t\t? `· ${ __( 'Template Part' ) }`\n\t\t\t\t\t\t\t\t\t\t: `· ${ __( 'Pattern' ) }` }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ ! unlockedPatternInfo && pageTypeBadge && (\n\t\t\t\t\t\t\t\t<span className=\"editor-document-bar__post-type-label\">\n\t\t\t\t\t\t\t\t\t{ `· ${ pageTypeBadge }` }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ ! unlockedPatternInfo &&\n\t\t\t\t\t\t\t\tpostTypeLabel &&\n\t\t\t\t\t\t\t\t! props.title &&\n\t\t\t\t\t\t\t\t! pageTypeBadge && (\n\t\t\t\t\t\t\t\t\t<span className=\"editor-document-bar__post-type-label\">\n\t\t\t\t\t\t\t\t\t\t{ `· ${ decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\tpostTypeLabel\n\t\t\t\t\t\t\t\t\t\t) }` }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</WCText>\n\t\t\t\t\t</motion.div>\n\t\t\t\t\t{ hasShortcut && (\n\t\t\t\t\t\t<span className=\"editor-document-bar__shortcut\">\n\t\t\t\t\t\t\t{ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\t__experimentalText as WCText,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { BlockIcon, store as blockEditorStore } from '@wordpress/block-editor';\nimport { chevronLeftSmall, chevronRightSmall, layout } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as commandsStore } from '@wordpress/commands';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { useReducedMotion } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPES } from '../../store/constants';\nimport { store as editorStore } from '../../store';\nimport usePageTypeBadge from '../../utils/pageTypeBadge';\nimport { getTemplateInfo } from '../../utils/get-template-info';\nimport { getStylesCanvasTitle } from '../styles-canvas';\nimport { unlock } from '../../lock-unlock';\nimport useEditedSectionDetails from './useEditedSectionDetails';\n\n/** @typedef {import(\"@wordpress/components\").IconType} IconType */\n\nconst MotionButton = motion.create( Button );\n\n/**\n * This component renders a navigation bar at the top of the editor. It displays the title of the current document,\n * a back button (if applicable), and a command center button. It also handles different states of the document,\n * such as \"not found\" or \"unsynced\".\n *\n * @example\n * ```jsx\n * <DocumentBar />\n * ```\n *\n * @param {Object} props The component props.\n * @param {string} props.title A title for the document, defaulting to the document or template title currently being edited.\n * @param {IconType} props.icon An icon for the document, no default.\n * (A default icon indicating the document post type is no longer used.)\n *\n * @return {React.ReactNode} The rendered DocumentBar component.\n */\nexport default function DocumentBar( props ) {\n\t// Get action to lock the pattern design\n\tconst { stopEditingContentOnlySection } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\t// Get details about the currently edited content-only section\n\tconst unlockedPatternInfo = useEditedSectionDetails();\n\n\tconst {\n\t\tpostId,\n\t\tpostType,\n\t\tpostTypeLabel,\n\t\tdocumentTitle,\n\t\tisNotFound,\n\t\ttemplateTitle,\n\t\tonNavigateToPreviousEntityRecord,\n\t\tisTemplatePreview,\n\t\tstylesCanvasTitle,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\tgetEditorSettings,\n\t\t\tgetRenderingMode,\n\t\t} = select( editorStore );\n\n\t\tconst {\n\t\t\tgetEditedEntityRecord,\n\t\t\tgetPostType,\n\t\t\tgetCurrentTheme,\n\t\t\tisResolving: isResolvingSelector,\n\t\t} = select( coreStore );\n\t\tconst _postType = getCurrentPostType();\n\t\tconst _postId = getCurrentPostId();\n\t\tconst _document = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\t_postType,\n\t\t\t_postId\n\t\t);\n\n\t\tconst { default_template_types: templateTypes = [] } =\n\t\t\tgetCurrentTheme() ?? {};\n\n\t\tconst _templateInfo = getTemplateInfo( {\n\t\t\ttemplateTypes,\n\t\t\ttemplate: _document,\n\t\t} );\n\t\tconst _postTypeLabel = getPostType( _postType )?.labels?.singular_name;\n\n\t\t// Check if styles canvas is active and get its title\n\t\tconst { getStylesPath, getShowStylebook } = unlock(\n\t\t\tselect( editorStore )\n\t\t);\n\t\tconst _stylesPath = getStylesPath();\n\t\tconst _showStylebook = getShowStylebook();\n\t\tconst _stylesCanvasTitle = getStylesCanvasTitle(\n\t\t\t_stylesPath,\n\t\t\t_showStylebook\n\t\t);\n\n\t\treturn {\n\t\t\tpostId: _postId,\n\t\t\tpostType: _postType,\n\t\t\tpostTypeLabel: _postTypeLabel,\n\t\t\tdocumentTitle: _document.title,\n\t\t\tisNotFound:\n\t\t\t\t! _document &&\n\t\t\t\t! isResolvingSelector(\n\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t'postType',\n\t\t\t\t\t_postType,\n\t\t\t\t\t_postId\n\t\t\t\t),\n\t\t\ttemplateTitle: _templateInfo.title,\n\t\t\tonNavigateToPreviousEntityRecord:\n\t\t\t\tgetEditorSettings().onNavigateToPreviousEntityRecord,\n\t\t\tisTemplatePreview: getRenderingMode() === 'template-locked',\n\t\t\tstylesCanvasTitle: _stylesCanvasTitle,\n\t\t};\n\t}, [] );\n\n\tconst { open: openCommandCenter } = useDispatch( commandsStore );\n\tconst isReducedMotion = useReducedMotion();\n\n\tconst isTemplate = TEMPLATE_POST_TYPES.includes( postType );\n\tconst hasBackButton =\n\t\t!! onNavigateToPreviousEntityRecord || !! unlockedPatternInfo;\n\tconst entityTitle = isTemplate ? templateTitle : documentTitle;\n\n\t// Use pattern info if a pattern block is unlocked, otherwise use document/entity info\n\tconst title =\n\t\tunlockedPatternInfo?.patternTitle ||\n\t\tprops.title ||\n\t\tstylesCanvasTitle ||\n\t\tentityTitle;\n\tconst icon = props.icon;\n\n\t// Determine the back button action\n\tconst handleBackClick = ( event ) => {\n\t\tevent.stopPropagation();\n\t\tif ( unlockedPatternInfo ) {\n\t\t\tstopEditingContentOnlySection();\n\t\t} else if ( onNavigateToPreviousEntityRecord ) {\n\t\t\tonNavigateToPreviousEntityRecord();\n\t\t}\n\t};\n\n\tconst pageTypeBadge = usePageTypeBadge( postId );\n\n\tconst mountedRef = useRef( false );\n\tuseEffect( () => {\n\t\tmountedRef.current = true;\n\t}, [] );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'editor-document-bar', {\n\t\t\t\t'has-back-button': hasBackButton,\n\t\t\t} ) }\n\t\t>\n\t\t\t<AnimatePresence>\n\t\t\t\t{ hasBackButton && (\n\t\t\t\t\t<MotionButton\n\t\t\t\t\t\tclassName=\"editor-document-bar__back\"\n\t\t\t\t\t\ticon={ isRTL() ? chevronRightSmall : chevronLeftSmall }\n\t\t\t\t\t\tonClick={ handleBackClick }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tinitial={\n\t\t\t\t\t\t\tmountedRef.current\n\t\t\t\t\t\t\t\t? { opacity: 0, transform: 'translateX(15%)' }\n\t\t\t\t\t\t\t\t: false // Don't show entry animation when DocumentBar mounts.\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanimate={ { opacity: 1, transform: 'translateX(0%)' } }\n\t\t\t\t\t\texit={ { opacity: 0, transform: 'translateX(15%)' } }\n\t\t\t\t\t\ttransition={\n\t\t\t\t\t\t\tisReducedMotion ? { duration: 0 } : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</MotionButton>\n\t\t\t\t) }\n\t\t\t</AnimatePresence>\n\t\t\t{ ! isTemplate && isTemplatePreview && ! hasBackButton && (\n\t\t\t\t<BlockIcon\n\t\t\t\t\ticon={ layout }\n\t\t\t\t\tclassName=\"editor-document-bar__icon-layout\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isNotFound ? (\n\t\t\t\t<WCText>{ __( 'Document not found' ) }</WCText>\n\t\t\t) : (\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"editor-document-bar__command\"\n\t\t\t\t\tonClick={ () => openCommandCenter() }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t>\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tclassName=\"editor-document-bar__title\"\n\t\t\t\t\t\t// Force entry animation when the back button is added or removed.\n\t\t\t\t\t\tkey={ hasBackButton }\n\t\t\t\t\t\tinitial={\n\t\t\t\t\t\t\tmountedRef.current\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\t\ttransform: hasBackButton\n\t\t\t\t\t\t\t\t\t\t\t? 'translateX(15%)'\n\t\t\t\t\t\t\t\t\t\t\t: 'translateX(-15%)',\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: false // Don't show entry animation when DocumentBar mounts.\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanimate={ {\n\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\ttransform: 'translateX(0%)',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ttransition={\n\t\t\t\t\t\t\tisReducedMotion ? { duration: 0 } : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ icon && <BlockIcon icon={ icon } /> }\n\t\t\t\t\t\t<WCText size=\"body\" as=\"h1\">\n\t\t\t\t\t\t\t<span className=\"editor-document-bar__post-title\">\n\t\t\t\t\t\t\t\t{ title\n\t\t\t\t\t\t\t\t\t? stripHTML( title )\n\t\t\t\t\t\t\t\t\t: __( 'No title' ) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{ unlockedPatternInfo && (\n\t\t\t\t\t\t\t\t<span className=\"editor-document-bar__post-type-label\">\n\t\t\t\t\t\t\t\t\t{ unlockedPatternInfo.type ===\n\t\t\t\t\t\t\t\t\t'template-part'\n\t\t\t\t\t\t\t\t\t\t? `· ${ __( 'Template Part' ) }`\n\t\t\t\t\t\t\t\t\t\t: `· ${ __( 'Pattern' ) }` }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ ! unlockedPatternInfo && pageTypeBadge && (\n\t\t\t\t\t\t\t\t<span className=\"editor-document-bar__post-type-label\">\n\t\t\t\t\t\t\t\t\t{ `· ${ pageTypeBadge }` }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ ! unlockedPatternInfo &&\n\t\t\t\t\t\t\t\tpostTypeLabel &&\n\t\t\t\t\t\t\t\t! props.title &&\n\t\t\t\t\t\t\t\t! pageTypeBadge && (\n\t\t\t\t\t\t\t\t\t<span className=\"editor-document-bar__post-type-label\">\n\t\t\t\t\t\t\t\t\t\t{ `· ${ decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\tpostTypeLabel\n\t\t\t\t\t\t\t\t\t\t) }` }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</WCText>\n\t\t\t\t\t</motion.div>\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["motion", "blockEditorStore", "useEditedSectionDetails", "editorStore", "coreStore", "commandsStore", "usePageTypeBadge", "clsx", "AnimatePresence", "WCText", "stripHTML"]
7
7
  }
@@ -45,9 +45,6 @@ var import_use_is_dirty = require("./hooks/use-is-dirty.cjs");
45
45
  var import_store = require("../../store/index.cjs");
46
46
  var import_lock_unlock = require("../../lock-unlock.cjs");
47
47
  var import_jsx_runtime = require("react/jsx-runtime");
48
- function identity(values) {
49
- return values;
50
- }
51
48
  function EntitiesSavedStates({
52
49
  close,
53
50
  renderDialog,
@@ -67,7 +64,7 @@ function EntitiesSavedStates({
67
64
  function EntitiesSavedStatesExtensible({
68
65
  additionalPrompt = void 0,
69
66
  close,
70
- onSave = identity,
67
+ onSave = void 0,
71
68
  saveEnabled: saveEnabledProp = void 0,
72
69
  saveLabel = (0, import_i18n.__)("Save"),
73
70
  renderDialog,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/entities-saved-states/index.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Button, Flex, FlexItem } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tuseCallback,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\t__experimentalUseDialog as useDialog,\n\tuseInstanceId,\n} from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\nimport { useIsDirty } from './hooks/use-is-dirty';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction identity( values ) {\n\treturn values;\n}\n\n/**\n * Renders the component for managing saved states of entities.\n *\n * @param {Object} props The component props.\n * @param {Function} props.close The function to close the dialog.\n * @param {boolean=} props.renderDialog Whether to render the component with modal dialog behavior.\n * @param {string} props.variant Changes the layout of the component. When an `inline` value is provided, the action buttons are rendered at the end of the component instead of at the start.\n *\n * @return {React.ReactNode} The rendered component.\n */\nexport default function EntitiesSavedStates( {\n\tclose,\n\trenderDialog,\n\tvariant,\n} ) {\n\tconst isDirtyProps = useIsDirty();\n\treturn (\n\t\t<EntitiesSavedStatesExtensible\n\t\t\tclose={ close }\n\t\t\trenderDialog={ renderDialog }\n\t\t\tvariant={ variant }\n\t\t\t{ ...isDirtyProps }\n\t\t/>\n\t);\n}\n\n/**\n * Renders a panel for saving entities with dirty records.\n *\n * @param {Object} props The component props.\n * @param {string} props.additionalPrompt Additional prompt to display.\n * @param {Function} props.close Function to close the panel.\n * @param {Function} props.onSave Function to call when saving entities.\n * @param {boolean} props.saveEnabled Flag indicating if save is enabled.\n * @param {string} props.saveLabel Label for the save button.\n * @param {boolean} props.renderDialog Whether to render the component with modal dialog behavior.\n * @param {Array} props.dirtyEntityRecords Array of dirty entity records.\n * @param {boolean} props.isDirty Flag indicating if there are dirty entities.\n * @param {Function} props.setUnselectedEntities Function to set unselected entities.\n * @param {Array} props.unselectedEntities Array of unselected entities.\n * @param {string} props.variant Changes the layout of the component. When an `inline` value is provided, the action buttons are rendered at the end of the component instead of at the start.\n * @param {string} props.successNoticeContent Optional custom success notice content.\n *\n * @return {React.ReactNode} The rendered component.\n */\nexport function EntitiesSavedStatesExtensible( {\n\tadditionalPrompt = undefined,\n\tclose,\n\tonSave = identity,\n\tsaveEnabled: saveEnabledProp = undefined,\n\tsaveLabel = __( 'Save' ),\n\trenderDialog,\n\tdirtyEntityRecords,\n\tisDirty,\n\tsetUnselectedEntities,\n\tunselectedEntities,\n\tvariant = 'default',\n\tsuccessNoticeContent,\n} ) {\n\tconst saveButtonRef = useRef();\n\tconst { saveDirtyEntities } = unlock( useDispatch( editorStore ) );\n\t// To group entities by type.\n\tconst partitionedSavables = dirtyEntityRecords.reduce( ( acc, record ) => {\n\t\tconst { name } = record;\n\t\tif ( ! acc[ name ] ) {\n\t\t\tacc[ name ] = [];\n\t\t}\n\t\tacc[ name ].push( record );\n\t\treturn acc;\n\t}, {} );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\tconst saveEnabled = saveEnabledProp ?? isDirty;\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\tconst dialogLabelId = useInstanceId(\n\t\tEntitiesSavedStatesExtensible,\n\t\t'entities-saved-states__panel-label'\n\t);\n\tconst dialogDescriptionId = useInstanceId(\n\t\tEntitiesSavedStatesExtensible,\n\t\t'entities-saved-states__panel-description'\n\t);\n\n\tconst selectItemsToSaveDescription = !! dirtyEntityRecords.length\n\t\t? __( 'Select the items you want to save.' )\n\t\t: undefined;\n\n\tconst isInline = variant === 'inline';\n\n\tconst actionButtons = (\n\t\t<>\n\t\t\t<FlexItem\n\t\t\t\tisBlock={ isInline ? false : true }\n\t\t\t\tas={ Button }\n\t\t\t\tvariant={ isInline ? 'tertiary' : 'secondary' }\n\t\t\t\tsize={ isInline ? undefined : 'compact' }\n\t\t\t\tonClick={ dismissPanel }\n\t\t\t>\n\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t</FlexItem>\n\t\t\t<FlexItem\n\t\t\t\tisBlock={ isInline ? false : true }\n\t\t\t\tas={ Button }\n\t\t\t\tref={ saveButtonRef }\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tsize={ isInline ? undefined : 'compact' }\n\t\t\t\tdisabled={ ! saveEnabled }\n\t\t\t\taccessibleWhenDisabled\n\t\t\t\tonClick={ () =>\n\t\t\t\t\tsaveDirtyEntities( {\n\t\t\t\t\t\tonSave,\n\t\t\t\t\t\tdirtyEntityRecords,\n\t\t\t\t\t\tentitiesToSkip: unselectedEntities,\n\t\t\t\t\t\tclose,\n\t\t\t\t\t\tsuccessNoticeContent,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t\tclassName=\"editor-entities-saved-states__save-button\"\n\t\t\t>\n\t\t\t\t{ saveLabel }\n\t\t\t</FlexItem>\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ renderDialog ? saveDialogRef : undefined }\n\t\t\t{ ...( renderDialog && saveDialogProps ) }\n\t\t\tclassName={ clsx( 'entities-saved-states__panel', {\n\t\t\t\t'is-inline': isInline,\n\t\t\t} ) }\n\t\t\trole={ renderDialog ? 'dialog' : undefined }\n\t\t\taria-labelledby={ renderDialog ? dialogLabelId : undefined }\n\t\t\taria-describedby={ renderDialog ? dialogDescriptionId : undefined }\n\t\t>\n\t\t\t{ ! isInline && (\n\t\t\t\t<Flex className=\"entities-saved-states__panel-header\" gap={ 2 }>\n\t\t\t\t\t{ actionButtons }\n\t\t\t\t</Flex>\n\t\t\t) }\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<div className=\"entities-saved-states__text-prompt--header-wrapper\">\n\t\t\t\t\t<strong\n\t\t\t\t\t\tid={ renderDialog ? dialogLabelId : undefined }\n\t\t\t\t\t\tclassName=\"entities-saved-states__text-prompt--header\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Are you ready to save?' ) }\n\t\t\t\t\t</strong>\n\t\t\t\t</div>\n\t\t\t\t<div id={ renderDialog ? dialogDescriptionId : undefined }>\n\t\t\t\t\t{ additionalPrompt }\n\t\t\t\t\t<p className=\"entities-saved-states__text-prompt--changes-count\">\n\t\t\t\t\t\t{ isDirty\n\t\t\t\t\t\t\t? createInterpolateElement(\n\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %d: number of site changes waiting to be saved. */\n\t\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t\t'There is <strong>%d site change</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\t\t'There are <strong>%d site changes</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\t\tdirtyEntityRecords.length\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tdirtyEntityRecords.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{ strong: <strong /> }\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: selectItemsToSaveDescription }\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\n\t\t\t{ isInline && (\n\t\t\t\t<Flex\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\tclassName=\"entities-saved-states__panel-footer\"\n\t\t\t\t>\n\t\t\t\t\t{ actionButtons }\n\t\t\t\t</Flex>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Button, Flex, FlexItem } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tuseCallback,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\t__experimentalUseDialog as useDialog,\n\tuseInstanceId,\n} from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\nimport { useIsDirty } from './hooks/use-is-dirty';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Renders the component for managing saved states of entities.\n *\n * @param {Object} props The component props.\n * @param {Function} props.close The function to close the dialog.\n * @param {boolean=} props.renderDialog Whether to render the component with modal dialog behavior.\n * @param {string} props.variant Changes the layout of the component. When an `inline` value is provided, the action buttons are rendered at the end of the component instead of at the start.\n *\n * @return {React.ReactNode} The rendered component.\n */\nexport default function EntitiesSavedStates( {\n\tclose,\n\trenderDialog,\n\tvariant,\n} ) {\n\tconst isDirtyProps = useIsDirty();\n\treturn (\n\t\t<EntitiesSavedStatesExtensible\n\t\t\tclose={ close }\n\t\t\trenderDialog={ renderDialog }\n\t\t\tvariant={ variant }\n\t\t\t{ ...isDirtyProps }\n\t\t/>\n\t);\n}\n\n/**\n * Renders a panel for saving entities with dirty records.\n *\n * @param {Object} props The component props.\n * @param {string} props.additionalPrompt Additional prompt to display.\n * @param {Function} props.close Function to close the panel.\n * @param {Function} props.onSave Function to call when saving entities.\n * @param {boolean} props.saveEnabled Flag indicating if save is enabled.\n * @param {string} props.saveLabel Label for the save button.\n * @param {boolean} props.renderDialog Whether to render the component with modal dialog behavior.\n * @param {Array} props.dirtyEntityRecords Array of dirty entity records.\n * @param {boolean} props.isDirty Flag indicating if there are dirty entities.\n * @param {Function} props.setUnselectedEntities Function to set unselected entities.\n * @param {Array} props.unselectedEntities Array of unselected entities.\n * @param {string} props.variant Changes the layout of the component. When an `inline` value is provided, the action buttons are rendered at the end of the component instead of at the start.\n * @param {string} props.successNoticeContent Optional custom success notice content.\n *\n * @return {React.ReactNode} The rendered component.\n */\nexport function EntitiesSavedStatesExtensible( {\n\tadditionalPrompt = undefined,\n\tclose,\n\tonSave = undefined,\n\tsaveEnabled: saveEnabledProp = undefined,\n\tsaveLabel = __( 'Save' ),\n\trenderDialog,\n\tdirtyEntityRecords,\n\tisDirty,\n\tsetUnselectedEntities,\n\tunselectedEntities,\n\tvariant = 'default',\n\tsuccessNoticeContent,\n} ) {\n\tconst saveButtonRef = useRef();\n\tconst { saveDirtyEntities } = unlock( useDispatch( editorStore ) );\n\t// To group entities by type.\n\tconst partitionedSavables = dirtyEntityRecords.reduce( ( acc, record ) => {\n\t\tconst { name } = record;\n\t\tif ( ! acc[ name ] ) {\n\t\t\tacc[ name ] = [];\n\t\t}\n\t\tacc[ name ].push( record );\n\t\treturn acc;\n\t}, {} );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\tconst saveEnabled = saveEnabledProp ?? isDirty;\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\tconst dialogLabelId = useInstanceId(\n\t\tEntitiesSavedStatesExtensible,\n\t\t'entities-saved-states__panel-label'\n\t);\n\tconst dialogDescriptionId = useInstanceId(\n\t\tEntitiesSavedStatesExtensible,\n\t\t'entities-saved-states__panel-description'\n\t);\n\n\tconst selectItemsToSaveDescription = !! dirtyEntityRecords.length\n\t\t? __( 'Select the items you want to save.' )\n\t\t: undefined;\n\n\tconst isInline = variant === 'inline';\n\n\tconst actionButtons = (\n\t\t<>\n\t\t\t<FlexItem\n\t\t\t\tisBlock={ isInline ? false : true }\n\t\t\t\tas={ Button }\n\t\t\t\tvariant={ isInline ? 'tertiary' : 'secondary' }\n\t\t\t\tsize={ isInline ? undefined : 'compact' }\n\t\t\t\tonClick={ dismissPanel }\n\t\t\t>\n\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t</FlexItem>\n\t\t\t<FlexItem\n\t\t\t\tisBlock={ isInline ? false : true }\n\t\t\t\tas={ Button }\n\t\t\t\tref={ saveButtonRef }\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tsize={ isInline ? undefined : 'compact' }\n\t\t\t\tdisabled={ ! saveEnabled }\n\t\t\t\taccessibleWhenDisabled\n\t\t\t\tonClick={ () =>\n\t\t\t\t\tsaveDirtyEntities( {\n\t\t\t\t\t\tonSave,\n\t\t\t\t\t\tdirtyEntityRecords,\n\t\t\t\t\t\tentitiesToSkip: unselectedEntities,\n\t\t\t\t\t\tclose,\n\t\t\t\t\t\tsuccessNoticeContent,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t\tclassName=\"editor-entities-saved-states__save-button\"\n\t\t\t>\n\t\t\t\t{ saveLabel }\n\t\t\t</FlexItem>\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ renderDialog ? saveDialogRef : undefined }\n\t\t\t{ ...( renderDialog && saveDialogProps ) }\n\t\t\tclassName={ clsx( 'entities-saved-states__panel', {\n\t\t\t\t'is-inline': isInline,\n\t\t\t} ) }\n\t\t\trole={ renderDialog ? 'dialog' : undefined }\n\t\t\taria-labelledby={ renderDialog ? dialogLabelId : undefined }\n\t\t\taria-describedby={ renderDialog ? dialogDescriptionId : undefined }\n\t\t>\n\t\t\t{ ! isInline && (\n\t\t\t\t<Flex className=\"entities-saved-states__panel-header\" gap={ 2 }>\n\t\t\t\t\t{ actionButtons }\n\t\t\t\t</Flex>\n\t\t\t) }\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<div className=\"entities-saved-states__text-prompt--header-wrapper\">\n\t\t\t\t\t<strong\n\t\t\t\t\t\tid={ renderDialog ? dialogLabelId : undefined }\n\t\t\t\t\t\tclassName=\"entities-saved-states__text-prompt--header\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Are you ready to save?' ) }\n\t\t\t\t\t</strong>\n\t\t\t\t</div>\n\t\t\t\t<div id={ renderDialog ? dialogDescriptionId : undefined }>\n\t\t\t\t\t{ additionalPrompt }\n\t\t\t\t\t<p className=\"entities-saved-states__text-prompt--changes-count\">\n\t\t\t\t\t\t{ isDirty\n\t\t\t\t\t\t\t? createInterpolateElement(\n\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %d: number of site changes waiting to be saved. */\n\t\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t\t'There is <strong>%d site change</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\t\t'There are <strong>%d site changes</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\t\tdirtyEntityRecords.length\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tdirtyEntityRecords.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{ strong: <strong /> }\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: selectItemsToSaveDescription }\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\n\t\t\t{ isInline && (\n\t\t\t\t<Flex\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\tclassName=\"entities-saved-states__panel-footer\"\n\t\t\t\t>\n\t\t\t\t\t{ actionButtons }\n\t\t\t\t</Flex>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAiB;AAKjB,wBAAuC;AACvC,kBAAgC;AAChC,qBAIO;AACP,qBAGO;AACP,kBAA4B;AAK5B,8BAA2B;AAC3B,0BAA2B;AAC3B,mBAAqC;AACrC,yBAAuB;AAmBrB;AAPa,SAAR,oBAAsC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,mBAAe,gCAAW;AAChC,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACE,GAAG;AAAA;AAAA,EACN;AAEF;AAqBO,SAAS,8BAA+B;AAAA,EAC9C,mBAAmB;AAAA,EACnB;AAAA,EACA,SAAS;AAAA,EACT,aAAa,kBAAkB;AAAA,EAC/B,gBAAY,gBAAI,MAAO;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AACD,GAAI;AACH,QAAM,oBAAgB,uBAAO;AAC7B,QAAM,EAAE,kBAAkB,QAAI,+BAAQ,yBAAa,aAAAA,KAAY,CAAE;AAEjE,QAAM,sBAAsB,mBAAmB,OAAQ,CAAE,KAAK,WAAY;AACzE,UAAM,EAAE,KAAK,IAAI;AACjB,QAAK,CAAE,IAAK,IAAK,GAAI;AACpB,UAAK,IAAK,IAAI,CAAC;AAAA,IAChB;AACA,QAAK,IAAK,EAAE,KAAM,MAAO;AACzB,WAAO;AAAA,EACR,GAAG,CAAC,CAAE;AAGN,QAAM;AAAA,IACL,MAAM;AAAA,IACN,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,GAAG;AAAA,EACJ,IAAI;AACJ,QAAM,4BAA4B;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG,OAAO,OAAQ,eAAgB;AAAA,EACnC,EAAE,OAAQ,MAAM,OAAQ;AAExB,QAAM,cAAc,mBAAmB;AAGvC,QAAM,mBAAe,4BAAa,MAAM,MAAM,GAAG,CAAE,KAAM,CAAE;AAE3D,QAAM,CAAE,eAAe,eAAgB,QAAI,eAAAC,yBAAW;AAAA,IACrD,SAAS,MAAM,aAAa;AAAA,EAC7B,CAAE;AACF,QAAM,oBAAgB;AAAA,IACrB;AAAA,IACA;AAAA,EACD;AACA,QAAM,0BAAsB;AAAA,IAC3B;AAAA,IACA;AAAA,EACD;AAEA,QAAM,+BAA+B,CAAC,CAAE,mBAAmB,aACxD,gBAAI,oCAAqC,IACzC;AAEH,QAAM,WAAW,YAAY;AAE7B,QAAM,gBACL,4EACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,SAAU,WAAW,QAAQ;AAAA,QAC7B,IAAK;AAAA,QACL,SAAU,WAAW,aAAa;AAAA,QAClC,MAAO,WAAW,SAAY;AAAA,QAC9B,SAAU;AAAA,QAER,8BAAI,QAAS;AAAA;AAAA,IAChB;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACA,SAAU,WAAW,QAAQ;AAAA,QAC7B,IAAK;AAAA,QACL,KAAM;AAAA,QACN,SAAQ;AAAA,QACR,MAAO,WAAW,SAAY;AAAA,QAC9B,UAAW,CAAE;AAAA,QACb,wBAAsB;AAAA,QACtB,SAAU,MACT,kBAAmB;AAAA,UAClB;AAAA,UACA;AAAA,UACA,gBAAgB;AAAA,UAChB;AAAA,UACA;AAAA,QACD,CAAE;AAAA,QAEH,WAAU;AAAA,QAER;AAAA;AAAA,IACH;AAAA,KACD;AAGD,SACC;AAAA,IAAC;AAAA;AAAA,MACA,KAAM,eAAe,gBAAgB;AAAA,MACnC,GAAK,gBAAgB;AAAA,MACvB,eAAY,YAAAC,SAAM,gCAAgC;AAAA,QACjD,aAAa;AAAA,MACd,CAAE;AAAA,MACF,MAAO,eAAe,WAAW;AAAA,MACjC,mBAAkB,eAAe,gBAAgB;AAAA,MACjD,oBAAmB,eAAe,sBAAsB;AAAA,MAEtD;AAAA,SAAE,YACH,4CAAC,0BAAK,WAAU,uCAAsC,KAAM,GACzD,yBACH;AAAA,QAGD,6CAAC,SAAI,WAAU,sCACd;AAAA,sDAAC,SAAI,WAAU,sDACd;AAAA,YAAC;AAAA;AAAA,cACA,IAAK,eAAe,gBAAgB;AAAA,cACpC,WAAU;AAAA,cAER,8BAAI,wBAAyB;AAAA;AAAA,UAChC,GACD;AAAA,UACA,6CAAC,SAAI,IAAK,eAAe,sBAAsB,QAC5C;AAAA;AAAA,YACF,4CAAC,OAAE,WAAU,qDACV,wBACC;AAAA,kBACA;AAAA;AAAA,oBAEC;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA,mBAAmB;AAAA,gBACpB;AAAA,gBACA,mBAAmB;AAAA,cACpB;AAAA,cACA,EAAE,QAAQ,4CAAC,YAAO,EAAG;AAAA,YACrB,IACA,8BACJ;AAAA,aACD;AAAA,WACD;AAAA,QAEE,0BAA0B,IAAK,CAAE,SAAU;AAC5C,iBACC;AAAA,YAAC,wBAAAC;AAAA,YAAA;AAAA,cAEA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,YAHM,KAAM,CAAE,EAAE;AAAA,UAIjB;AAAA,QAEF,CAAE;AAAA,QAEA,YACD;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,WAAU;AAAA,YAER;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEF;AAEF;",
6
6
  "names": ["editorStore", "useDialog", "clsx", "EntityTypeList"]
7
7
  }
@@ -20,7 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // packages/editor/src/components/media-categories/index.js
21
21
  var media_categories_exports = {};
22
22
  __export(media_categories_exports, {
23
- default: () => media_categories_default
23
+ default: () => getInserterMediaCategories
24
24
  });
25
25
  module.exports = __toCommonJS(media_categories_exports);
26
26
  var import_i18n = require("@wordpress/i18n");
@@ -102,14 +102,15 @@ var getOpenverseCaption = (item) => {
102
102
  }
103
103
  return _caption.replace(/\s{2}/g, " ");
104
104
  };
105
+ var getCoreMediaQuery = (query = {}) => ({
106
+ ...query,
107
+ orderBy: !!query?.search ? "relevance" : "date"
108
+ });
105
109
  var coreMediaFetch = async (query = {}) => {
106
110
  const mediaItems = await (0, import_data.resolveSelect)(import_core_data.store).getEntityRecords(
107
111
  "postType",
108
112
  "attachment",
109
- {
110
- ...query,
111
- orderBy: !!query?.search ? "relevance" : "date"
112
- }
113
+ getCoreMediaQuery(query)
113
114
  );
114
115
  return mediaItems.map((mediaItem) => ({
115
116
  ...mediaItem,
@@ -119,6 +120,82 @@ var coreMediaFetch = async (query = {}) => {
119
120
  caption: mediaItem.caption?.raw
120
121
  }));
121
122
  };
123
+ var getAttachedImagesQuery = (postId, query = {}) => ({
124
+ ...query,
125
+ media_type: "image",
126
+ parent: postId
127
+ });
128
+ var normalizePostId = (postId) => {
129
+ const parsedPostId = typeof postId === "number" ? postId : Number(postId);
130
+ return Number.isInteger(parsedPostId) && parsedPostId > 0 ? parsedPostId : void 0;
131
+ };
132
+ var saveAttachmentParent = (attachmentId, postId) => (
133
+ // `throwOnError` so a failed REST write rejects (rather than being silently
134
+ // swallowed), letting the attach/detach handlers surface an error notice
135
+ // instead of a false success.
136
+ (0, import_data.dispatch)(import_core_data.store).saveEntityRecord(
137
+ "postType",
138
+ "attachment",
139
+ {
140
+ id: attachmentId,
141
+ post: postId
142
+ },
143
+ { throwOnError: true }
144
+ )
145
+ );
146
+ var getMediaItemType = (mediaItem) => mediaItem?.media_type || mediaItem?.mime_type?.split("/")[0] || mediaItem?.type;
147
+ var getImageAttachmentIds = (mediaItems) => [
148
+ ...new Set(
149
+ (Array.isArray(mediaItems) ? mediaItems : [mediaItems]).filter(
150
+ (mediaItem) => getMediaItemType(mediaItem) === "image"
151
+ ).map((mediaItem) => mediaItem?.id).filter(Boolean)
152
+ )
153
+ ];
154
+ var invalidateAttachedImagesQueries = (postId, query = {}) => {
155
+ const { invalidateResolution } = (0, import_data.dispatch)(import_core_data.store);
156
+ invalidateResolution("getEntityRecords", [
157
+ "postType",
158
+ "attachment",
159
+ getCoreMediaQuery(getAttachedImagesQuery(postId, query))
160
+ ]);
161
+ };
162
+ var getAttachedImagesCategory = (postId, typeLabel) => ({
163
+ name: "attached-images",
164
+ labels: {
165
+ name: (0, import_i18n.__)("Attached images"),
166
+ search_items: (0, import_i18n.__)("Search attachments")
167
+ },
168
+ mediaType: "image",
169
+ // The post type's singular label (e.g. "Page"), threaded through so the
170
+ // shared panel can word its attach/detach copy for the current post type.
171
+ postTypeLabel: typeLabel,
172
+ // Empty-state message. Providing this also keeps the source in the tab list
173
+ // when it has no items, so it stays discoverable and the first image can be
174
+ // attached even with none yet.
175
+ emptyMessage: typeLabel ? (0, import_i18n.sprintf)(
176
+ // translators: %s: Name of the post type e.g: "Page".
177
+ (0, import_i18n.__)("No images attached to this %s."),
178
+ typeLabel
179
+ ) : (0, import_i18n.__)("No images attached to this post."),
180
+ async fetch(query = {}) {
181
+ return coreMediaFetch(getAttachedImagesQuery(postId, query));
182
+ },
183
+ async attach(mediaItems) {
184
+ const attachmentIds = getImageAttachmentIds(mediaItems);
185
+ await Promise.all(
186
+ attachmentIds.map(
187
+ (attachmentId) => saveAttachmentParent(attachmentId, postId)
188
+ )
189
+ );
190
+ return attachmentIds.length;
191
+ },
192
+ async detach(mediaItem) {
193
+ await saveAttachmentParent(mediaItem.id, 0);
194
+ },
195
+ invalidate(query = {}) {
196
+ invalidateAttachedImagesQueries(postId, query);
197
+ }
198
+ });
122
199
  var inserterMediaCategories = [
123
200
  {
124
201
  name: "images",
@@ -198,5 +275,14 @@ var inserterMediaCategories = [
198
275
  isExternalResource: true
199
276
  }
200
277
  ];
201
- var media_categories_default = inserterMediaCategories;
278
+ function getInserterMediaCategories(postId, viewablePostTypeLabel) {
279
+ const currentPostId = normalizePostId(postId);
280
+ if (!currentPostId || !viewablePostTypeLabel) {
281
+ return inserterMediaCategories;
282
+ }
283
+ return [
284
+ getAttachedImagesCategory(currentPostId, viewablePostTypeLabel),
285
+ ...inserterMediaCategories
286
+ ];
287
+ }
202
288
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/media-categories/index.js"],
4
- "sourcesContent": ["/**\n * The `editor` settings here need to be in sync with the corresponding ones in `editor` package.\n * See `packages/editor/src/components/media-categories/index.js`.\n *\n * In the future we could consider creating an Openvese package that can be used in both `editor` and `site-editor`.\n * The rest of the settings would still need to be in sync though.\n */\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf, _x } from '@wordpress/i18n';\nimport { resolveSelect } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\n\n/** @typedef {import('@wordpress/block-editor').InserterMediaRequest} InserterMediaRequest */\n/** @typedef {import('@wordpress/block-editor').InserterMediaItem} InserterMediaItem */\n/** @typedef {import('@wordpress/block-editor').InserterMediaCategory} InserterMediaCategory */\n\nconst getExternalLink = ( url, text ) =>\n\t`<a ${ getExternalLinkAttributes( url ) }>${ text }</a>`;\n\nconst getExternalLinkAttributes = ( url ) =>\n\t`href=\"${ url }\" target=\"_blank\" rel=\"noopener\"`;\n\nconst getOpenverseLicense = ( license, licenseVersion ) => {\n\tlet licenseName = license.trim();\n\t// PDM has no abbreviation\n\tif ( license !== 'pdm' ) {\n\t\tlicenseName = license.toUpperCase().replace( 'SAMPLING', 'Sampling' );\n\t}\n\t// If version is known, append version to the name.\n\t// The license has to have a version to be valid. Only\n\t// PDM (public domain mark) doesn't have a version.\n\tif ( licenseVersion ) {\n\t\tlicenseName += ` ${ licenseVersion }`;\n\t}\n\t// For licenses other than public-domain marks, prepend 'CC' to the name.\n\tif ( ! [ 'pdm', 'cc0' ].includes( license ) ) {\n\t\tlicenseName = `CC ${ licenseName }`;\n\t}\n\treturn licenseName;\n};\n\nconst getOpenverseCaption = ( item ) => {\n\tconst {\n\t\ttitle,\n\t\tforeign_landing_url: foreignLandingUrl,\n\t\tcreator,\n\t\tcreator_url: creatorUrl,\n\t\tlicense,\n\t\tlicense_version: licenseVersion,\n\t\tlicense_url: licenseUrl,\n\t} = item;\n\tconst fullLicense = getOpenverseLicense( license, licenseVersion );\n\tconst _creator = decodeEntities( creator );\n\tlet _caption;\n\tif ( _creator ) {\n\t\t_caption = title\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %1s: Title of a media work from Openverse; %2$s: Name of the work's creator; %3s: Work's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '\"%1$s\" by %2$s/ %3$s', 'caption' ),\n\t\t\t\t\tgetExternalLink(\n\t\t\t\t\t\tforeignLandingUrl,\n\t\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t\t),\n\t\t\t\t\tcreatorUrl\n\t\t\t\t\t\t? getExternalLink( creatorUrl, _creator )\n\t\t\t\t\t\t: _creator,\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t// translators: %1s: Link attributes for a given Openverse media work; %2s: Name of the work's creator; %3s: Works's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '<a %1$s>Work</a> by %2$s/ %3$s', 'caption' ),\n\t\t\t\t\tgetExternalLinkAttributes( foreignLandingUrl ),\n\t\t\t\t\tcreatorUrl\n\t\t\t\t\t\t? getExternalLink( creatorUrl, _creator )\n\t\t\t\t\t\t: _creator,\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t );\n\t} else {\n\t\t_caption = title\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %1s: Title of a media work from Openverse; %2s: Work's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '\"%1$s\"/ %2$s', 'caption' ),\n\t\t\t\t\tgetExternalLink(\n\t\t\t\t\t\tforeignLandingUrl,\n\t\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t\t),\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t// translators: %1s: Link attributes for a given Openverse media work; %2s: Works's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '<a %1$s>Work</a>/ %2$s', 'caption' ),\n\t\t\t\t\tgetExternalLinkAttributes( foreignLandingUrl ),\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t );\n\t}\n\treturn _caption.replace( /\\s{2}/g, ' ' );\n};\n\nconst coreMediaFetch = async ( query = {} ) => {\n\tconst mediaItems = await resolveSelect( coreStore ).getEntityRecords(\n\t\t'postType',\n\t\t'attachment',\n\t\t{\n\t\t\t...query,\n\t\t\torderBy: !! query?.search ? 'relevance' : 'date',\n\t\t}\n\t);\n\treturn mediaItems.map( ( mediaItem ) => ( {\n\t\t...mediaItem,\n\t\talt: mediaItem.alt_text,\n\t\turl: mediaItem.source_url,\n\t\tpreviewUrl: mediaItem.media_details?.sizes?.medium?.source_url,\n\t\tcaption: mediaItem.caption?.raw,\n\t} ) );\n};\n\n/** @type {InserterMediaCategory[]} */\nconst inserterMediaCategories = [\n\t{\n\t\tname: 'images',\n\t\tlabels: {\n\t\t\tname: __( 'Images' ),\n\t\t\tsearch_items: __( 'Search images' ),\n\t\t},\n\t\tmediaType: 'image',\n\t\tasync fetch( query = {} ) {\n\t\t\treturn coreMediaFetch( { ...query, media_type: 'image' } );\n\t\t},\n\t},\n\t{\n\t\tname: 'videos',\n\t\tlabels: {\n\t\t\tname: __( 'Videos' ),\n\t\t\tsearch_items: __( 'Search videos' ),\n\t\t},\n\t\tmediaType: 'video',\n\t\tasync fetch( query = {} ) {\n\t\t\treturn coreMediaFetch( { ...query, media_type: 'video' } );\n\t\t},\n\t},\n\t{\n\t\tname: 'audio',\n\t\tlabels: {\n\t\t\tname: __( 'Audio' ),\n\t\t\tsearch_items: __( 'Search audio' ),\n\t\t},\n\t\tmediaType: 'audio',\n\t\tasync fetch( query = {} ) {\n\t\t\treturn coreMediaFetch( { ...query, media_type: 'audio' } );\n\t\t},\n\t},\n\t{\n\t\tname: 'openverse',\n\t\tlabels: {\n\t\t\tname: __( 'Openverse' ),\n\t\t\tsearch_items: __( 'Search Openverse' ),\n\t\t},\n\t\tmediaType: 'image',\n\t\tasync fetch( query = {} ) {\n\t\t\tconst defaultArgs = {\n\t\t\t\tmature: false,\n\t\t\t\texcluded_source: 'flickr,inaturalist,wikimedia',\n\t\t\t\tlicense: 'pdm,cc0',\n\t\t\t};\n\t\t\tconst finalQuery = { ...query, ...defaultArgs };\n\t\t\tconst mapFromInserterMediaRequest = {\n\t\t\t\tper_page: 'page_size',\n\t\t\t\tsearch: 'q',\n\t\t\t};\n\t\t\tconst url = new URL( 'https://api.openverse.org/v1/images/' );\n\t\t\tObject.entries( finalQuery ).forEach( ( [ key, value ] ) => {\n\t\t\t\tconst queryKey = mapFromInserterMediaRequest[ key ] || key;\n\t\t\t\turl.searchParams.set( queryKey, value );\n\t\t\t} );\n\t\t\tconst response = await window.fetch( url, {\n\t\t\t\theaders: {\n\t\t\t\t\t'User-Agent': 'WordPress/inserter-media-fetch',\n\t\t\t\t},\n\t\t\t} );\n\t\t\tconst jsonResponse = await response.json();\n\t\t\tconst results = jsonResponse.results;\n\t\t\treturn results.map( ( result ) => ( {\n\t\t\t\t...result,\n\t\t\t\t// This is a temp solution for better titles, until Openverse API\n\t\t\t\t// completes the cleaning up of some titles of their upstream data.\n\t\t\t\ttitle: result.title?.toLowerCase().startsWith( 'file:' )\n\t\t\t\t\t? result.title.slice( 5 )\n\t\t\t\t\t: result.title,\n\t\t\t\tsourceId: result.id,\n\t\t\t\tid: undefined,\n\t\t\t\tcaption: getOpenverseCaption( result ),\n\t\t\t\tpreviewUrl: result.thumbnail,\n\t\t\t} ) );\n\t\t},\n\t\tgetReportUrl: ( { sourceId } ) =>\n\t\t\t`https://wordpress.org/openverse/image/${ sourceId }/report/`,\n\t\tisExternalResource: true,\n\t},\n];\n\nexport default inserterMediaCategories;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * The `editor` settings here need to be in sync with the corresponding ones in `editor` package.\n * See `packages/editor/src/components/media-categories/index.js`.\n *\n * In the future we could consider creating an Openvese package that can be used in both `editor` and `site-editor`.\n * The rest of the settings would still need to be in sync though.\n */\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf, _x } from '@wordpress/i18n';\nimport { dispatch, resolveSelect } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\n\n/** @typedef {import('@wordpress/block-editor').InserterMediaRequest} InserterMediaRequest */\n/** @typedef {import('@wordpress/block-editor').InserterMediaItem} InserterMediaItem */\n/** @typedef {import('@wordpress/block-editor').InserterMediaCategory} InserterMediaCategory */\n\nconst getExternalLink = ( url, text ) =>\n\t`<a ${ getExternalLinkAttributes( url ) }>${ text }</a>`;\n\nconst getExternalLinkAttributes = ( url ) =>\n\t`href=\"${ url }\" target=\"_blank\" rel=\"noopener\"`;\n\nconst getOpenverseLicense = ( license, licenseVersion ) => {\n\tlet licenseName = license.trim();\n\t// PDM has no abbreviation\n\tif ( license !== 'pdm' ) {\n\t\tlicenseName = license.toUpperCase().replace( 'SAMPLING', 'Sampling' );\n\t}\n\t// If version is known, append version to the name.\n\t// The license has to have a version to be valid. Only\n\t// PDM (public domain mark) doesn't have a version.\n\tif ( licenseVersion ) {\n\t\tlicenseName += ` ${ licenseVersion }`;\n\t}\n\t// For licenses other than public-domain marks, prepend 'CC' to the name.\n\tif ( ! [ 'pdm', 'cc0' ].includes( license ) ) {\n\t\tlicenseName = `CC ${ licenseName }`;\n\t}\n\treturn licenseName;\n};\n\nconst getOpenverseCaption = ( item ) => {\n\tconst {\n\t\ttitle,\n\t\tforeign_landing_url: foreignLandingUrl,\n\t\tcreator,\n\t\tcreator_url: creatorUrl,\n\t\tlicense,\n\t\tlicense_version: licenseVersion,\n\t\tlicense_url: licenseUrl,\n\t} = item;\n\tconst fullLicense = getOpenverseLicense( license, licenseVersion );\n\tconst _creator = decodeEntities( creator );\n\tlet _caption;\n\tif ( _creator ) {\n\t\t_caption = title\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %1s: Title of a media work from Openverse; %2$s: Name of the work's creator; %3s: Work's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '\"%1$s\" by %2$s/ %3$s', 'caption' ),\n\t\t\t\t\tgetExternalLink(\n\t\t\t\t\t\tforeignLandingUrl,\n\t\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t\t),\n\t\t\t\t\tcreatorUrl\n\t\t\t\t\t\t? getExternalLink( creatorUrl, _creator )\n\t\t\t\t\t\t: _creator,\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t// translators: %1s: Link attributes for a given Openverse media work; %2s: Name of the work's creator; %3s: Works's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '<a %1$s>Work</a> by %2$s/ %3$s', 'caption' ),\n\t\t\t\t\tgetExternalLinkAttributes( foreignLandingUrl ),\n\t\t\t\t\tcreatorUrl\n\t\t\t\t\t\t? getExternalLink( creatorUrl, _creator )\n\t\t\t\t\t\t: _creator,\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t );\n\t} else {\n\t\t_caption = title\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %1s: Title of a media work from Openverse; %2s: Work's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '\"%1$s\"/ %2$s', 'caption' ),\n\t\t\t\t\tgetExternalLink(\n\t\t\t\t\t\tforeignLandingUrl,\n\t\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t\t),\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t// translators: %1s: Link attributes for a given Openverse media work; %2s: Works's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '<a %1$s>Work</a>/ %2$s', 'caption' ),\n\t\t\t\t\tgetExternalLinkAttributes( foreignLandingUrl ),\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t );\n\t}\n\treturn _caption.replace( /\\s{2}/g, ' ' );\n};\n\nconst getCoreMediaQuery = ( query = {} ) => ( {\n\t...query,\n\torderBy: !! query?.search ? 'relevance' : 'date',\n} );\n\nconst coreMediaFetch = async ( query = {} ) => {\n\tconst mediaItems = await resolveSelect( coreStore ).getEntityRecords(\n\t\t'postType',\n\t\t'attachment',\n\t\tgetCoreMediaQuery( query )\n\t);\n\treturn mediaItems.map( ( mediaItem ) => ( {\n\t\t...mediaItem,\n\t\talt: mediaItem.alt_text,\n\t\turl: mediaItem.source_url,\n\t\tpreviewUrl: mediaItem.media_details?.sizes?.medium?.source_url,\n\t\tcaption: mediaItem.caption?.raw,\n\t} ) );\n};\n\nconst getAttachedImagesQuery = ( postId, query = {} ) => ( {\n\t...query,\n\tmedia_type: 'image',\n\tparent: postId,\n} );\n\nconst normalizePostId = ( postId ) => {\n\tconst parsedPostId = typeof postId === 'number' ? postId : Number( postId );\n\n\treturn Number.isInteger( parsedPostId ) && parsedPostId > 0\n\t\t? parsedPostId\n\t\t: undefined;\n};\n\nconst saveAttachmentParent = ( attachmentId, postId ) =>\n\t// `throwOnError` so a failed REST write rejects (rather than being silently\n\t// swallowed), letting the attach/detach handlers surface an error notice\n\t// instead of a false success.\n\tdispatch( coreStore ).saveEntityRecord(\n\t\t'postType',\n\t\t'attachment',\n\t\t{\n\t\t\tid: attachmentId,\n\t\t\tpost: postId,\n\t\t},\n\t\t{ throwOnError: true }\n\t);\n\n// A selected media item's coarse type is exposed differently by each picker.\n// The classic media modal puts the media type directly on `type` (e.g. 'image').\n// The DataViews-driven modal passes REST attachment records, where `type` is the\n// *post* type ('attachment') and the media type lives in `media_type`\n// ('image'|'file') / `mime_type`. So the REST fields must be read first, with\n// `type` as the classic-modal fallback — otherwise a REST image reads as\n// 'attachment' and gets gated out.\nconst getMediaItemType = ( mediaItem ) =>\n\tmediaItem?.media_type ||\n\tmediaItem?.mime_type?.split( '/' )[ 0 ] ||\n\tmediaItem?.type;\n\n// The picker's \"Upload files\" tab accepts any file type, so the selection can\n// include non-images. Gate to images only: a non-image would be reparented to\n// the post but never appear in the image-filtered grid, and would wrongly count\n// toward the \"images attached\" notice.\nconst getImageAttachmentIds = ( mediaItems ) => [\n\t...new Set(\n\t\t( Array.isArray( mediaItems ) ? mediaItems : [ mediaItems ] )\n\t\t\t.filter(\n\t\t\t\t( mediaItem ) => getMediaItemType( mediaItem ) === 'image'\n\t\t\t)\n\t\t\t.map( ( mediaItem ) => mediaItem?.id )\n\t\t\t.filter( Boolean )\n\t),\n];\n\nconst invalidateAttachedImagesQueries = ( postId, query = {} ) => {\n\tconst { invalidateResolution } = dispatch( coreStore );\n\t// Invalidate the resolution backing the visible grid so it refetches after\n\t// an attach/detach and reflects the updated set of attached images. The tab\n\t// is always shown (via `emptyMessage`), so there's no separate visibility\n\t// probe to invalidate.\n\tinvalidateResolution( 'getEntityRecords', [\n\t\t'postType',\n\t\t'attachment',\n\t\tgetCoreMediaQuery( getAttachedImagesQuery( postId, query ) ),\n\t] );\n};\n\n/**\n * Builds the \"Attachments\" media category for a given post. It behaves like\n * any other inserter media source (e.g. Openverse): it appears in the tab list\n * and renders through the shared media panel. In addition to `fetch`, it exposes\n * optional `attach`/`detach`/`invalidate` capabilities that the shared panel\n * picks up to offer an \"Attach images\" button and a per-item \"Detach from post\"\n * action in the same dropdown Openverse uses for \"Report image\".\n *\n * @param {number} postId The current post id.\n * @param {string|null} [typeLabel] The post type's singular label to use in copy (e.g. \"Page\"),\n * or null to fall back to the generic \"post\".\n * @return {InserterMediaCategory} The Attachments media category.\n */\nconst getAttachedImagesCategory = ( postId, typeLabel ) => ( {\n\tname: 'attached-images',\n\tlabels: {\n\t\tname: __( 'Attached images' ),\n\t\tsearch_items: __( 'Search attachments' ),\n\t},\n\tmediaType: 'image',\n\t// The post type's singular label (e.g. \"Page\"), threaded through so the\n\t// shared panel can word its attach/detach copy for the current post type.\n\tpostTypeLabel: typeLabel,\n\t// Empty-state message. Providing this also keeps the source in the tab list\n\t// when it has no items, so it stays discoverable and the first image can be\n\t// attached even with none yet.\n\temptyMessage: typeLabel\n\t\t? sprintf(\n\t\t\t\t// translators: %s: Name of the post type e.g: \"Page\".\n\t\t\t\t__( 'No images attached to this %s.' ),\n\t\t\t\ttypeLabel\n\t\t )\n\t\t: __( 'No images attached to this post.' ),\n\tasync fetch( query = {} ) {\n\t\treturn coreMediaFetch( getAttachedImagesQuery( postId, query ) );\n\t},\n\tasync attach( mediaItems ) {\n\t\tconst attachmentIds = getImageAttachmentIds( mediaItems );\n\n\t\tawait Promise.all(\n\t\t\tattachmentIds.map( ( attachmentId ) =>\n\t\t\t\tsaveAttachmentParent( attachmentId, postId )\n\t\t\t)\n\t\t);\n\n\t\treturn attachmentIds.length;\n\t},\n\tasync detach( mediaItem ) {\n\t\tawait saveAttachmentParent( mediaItem.id, 0 );\n\t},\n\tinvalidate( query = {} ) {\n\t\tinvalidateAttachedImagesQueries( postId, query );\n\t},\n} );\n\n/** @type {InserterMediaCategory[]} */\nconst inserterMediaCategories = [\n\t{\n\t\tname: 'images',\n\t\tlabels: {\n\t\t\tname: __( 'Images' ),\n\t\t\tsearch_items: __( 'Search images' ),\n\t\t},\n\t\tmediaType: 'image',\n\t\tasync fetch( query = {} ) {\n\t\t\treturn coreMediaFetch( { ...query, media_type: 'image' } );\n\t\t},\n\t},\n\t{\n\t\tname: 'videos',\n\t\tlabels: {\n\t\t\tname: __( 'Videos' ),\n\t\t\tsearch_items: __( 'Search videos' ),\n\t\t},\n\t\tmediaType: 'video',\n\t\tasync fetch( query = {} ) {\n\t\t\treturn coreMediaFetch( { ...query, media_type: 'video' } );\n\t\t},\n\t},\n\t{\n\t\tname: 'audio',\n\t\tlabels: {\n\t\t\tname: __( 'Audio' ),\n\t\t\tsearch_items: __( 'Search audio' ),\n\t\t},\n\t\tmediaType: 'audio',\n\t\tasync fetch( query = {} ) {\n\t\t\treturn coreMediaFetch( { ...query, media_type: 'audio' } );\n\t\t},\n\t},\n\t{\n\t\tname: 'openverse',\n\t\tlabels: {\n\t\t\tname: __( 'Openverse' ),\n\t\t\tsearch_items: __( 'Search Openverse' ),\n\t\t},\n\t\tmediaType: 'image',\n\t\tasync fetch( query = {} ) {\n\t\t\tconst defaultArgs = {\n\t\t\t\tmature: false,\n\t\t\t\texcluded_source: 'flickr,inaturalist,wikimedia',\n\t\t\t\tlicense: 'pdm,cc0',\n\t\t\t};\n\t\t\tconst finalQuery = { ...query, ...defaultArgs };\n\t\t\tconst mapFromInserterMediaRequest = {\n\t\t\t\tper_page: 'page_size',\n\t\t\t\tsearch: 'q',\n\t\t\t};\n\t\t\tconst url = new URL( 'https://api.openverse.org/v1/images/' );\n\t\t\tObject.entries( finalQuery ).forEach( ( [ key, value ] ) => {\n\t\t\t\tconst queryKey = mapFromInserterMediaRequest[ key ] || key;\n\t\t\t\turl.searchParams.set( queryKey, value );\n\t\t\t} );\n\t\t\tconst response = await window.fetch( url, {\n\t\t\t\theaders: {\n\t\t\t\t\t'User-Agent': 'WordPress/inserter-media-fetch',\n\t\t\t\t},\n\t\t\t} );\n\t\t\tconst jsonResponse = await response.json();\n\t\t\tconst results = jsonResponse.results;\n\t\t\treturn results.map( ( result ) => ( {\n\t\t\t\t...result,\n\t\t\t\t// This is a temp solution for better titles, until Openverse API\n\t\t\t\t// completes the cleaning up of some titles of their upstream data.\n\t\t\t\ttitle: result.title?.toLowerCase().startsWith( 'file:' )\n\t\t\t\t\t? result.title.slice( 5 )\n\t\t\t\t\t: result.title,\n\t\t\t\tsourceId: result.id,\n\t\t\t\tid: undefined,\n\t\t\t\tcaption: getOpenverseCaption( result ),\n\t\t\t\tpreviewUrl: result.thumbnail,\n\t\t\t} ) );\n\t\t},\n\t\tgetReportUrl: ( { sourceId } ) =>\n\t\t\t`https://wordpress.org/openverse/image/${ sourceId }/report/`,\n\t\tisExternalResource: true,\n\t},\n];\n\n/**\n * Returns the inserter media categories for a given post. The \"Attachments\"\n * category is prepended only when editing real, front-end-rendered content\n * (posts, pages, public custom post types). It is omitted for synced patterns,\n * navigation menus and templates, which aren't the entity that actually gets\n * rendered, so attaching media to them is meaningless.\n *\n * @param {number|string} postId The current post id.\n * @param {string} [viewablePostTypeLabel] Singular label of the post type, set only when it is front-end viewable (post, page, public CPT).\n * @return {InserterMediaCategory[]} The inserter media categories.\n */\nexport default function getInserterMediaCategories(\n\tpostId,\n\tviewablePostTypeLabel\n) {\n\tconst currentPostId = normalizePostId( postId );\n\n\t// A falsy label means either a non-viewable post type (synced pattern,\n\t// navigation, template) or that the record hasn't resolved yet — in both\n\t// cases the category is omitted. A numeric id is also required since it\n\t// backs the attachment `parent` query.\n\tif ( ! currentPostId || ! viewablePostTypeLabel ) {\n\t\treturn inserterMediaCategories;\n\t}\n\n\treturn [\n\t\tgetAttachedImagesCategory( currentPostId, viewablePostTypeLabel ),\n\t\t...inserterMediaCategories,\n\t];\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["coreStore"]
7
7
  }
@@ -167,7 +167,6 @@ function PageAttributesParent() {
167
167
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
168
168
  import_components.ComboboxControl,
169
169
  {
170
- __next40pxDefaultSize: true,
171
170
  className: "editor-page-attributes__parent",
172
171
  label: (0, import_i18n.__)("Parent"),
173
172
  help: (0, import_i18n.__)("Choose a parent page."),