@wordpress/editor 14.34.1-next.2f1c7c01b.0 → 14.35.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 (124) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -1
  3. package/build/components/collab-sidebar/add-comment.js +4 -6
  4. package/build/components/collab-sidebar/add-comment.js.map +2 -2
  5. package/build/components/collab-sidebar/comment-form.js +14 -5
  6. package/build/components/collab-sidebar/comment-form.js.map +2 -2
  7. package/build/components/collab-sidebar/comments.js +60 -24
  8. package/build/components/collab-sidebar/comments.js.map +2 -2
  9. package/build/components/collab-sidebar/index.js +4 -4
  10. package/build/components/collab-sidebar/index.js.map +2 -2
  11. package/build/components/commands/index.js +16 -4
  12. package/build/components/commands/index.js.map +2 -2
  13. package/build/components/editor/index.js +10 -2
  14. package/build/components/editor/index.js.map +2 -2
  15. package/build/components/entities-saved-states/index.js.map +1 -1
  16. package/build/components/global-styles/hooks.js.map +1 -1
  17. package/build/components/post-template/panel.js +9 -6
  18. package/build/components/post-template/panel.js.map +2 -2
  19. package/build/components/post-title/index.js +18 -9
  20. package/build/components/post-title/index.js.map +2 -2
  21. package/build/components/visual-editor/index.js +10 -2
  22. package/build/components/visual-editor/index.js.map +2 -2
  23. package/build/components/visual-editor/use-edit-content-only-section-exit.js +65 -0
  24. package/build/components/visual-editor/use-edit-content-only-section-exit.js.map +7 -0
  25. package/build/components/visual-editor/use-padding-appender.js +75 -0
  26. package/build/components/visual-editor/use-padding-appender.js.map +7 -0
  27. package/build/dataviews/fields/content-preview/content-preview-view.js +2 -2
  28. package/build/dataviews/fields/content-preview/content-preview-view.js.map +3 -3
  29. package/build/hooks/pattern-overrides.js +1 -3
  30. package/build/hooks/pattern-overrides.js.map +2 -2
  31. package/build/store/actions.js +1 -1
  32. package/build/store/actions.js.map +2 -2
  33. package/build-module/components/collab-sidebar/add-comment.js +4 -6
  34. package/build-module/components/collab-sidebar/add-comment.js.map +2 -2
  35. package/build-module/components/collab-sidebar/comment-form.js +14 -5
  36. package/build-module/components/collab-sidebar/comment-form.js.map +2 -2
  37. package/build-module/components/collab-sidebar/comments.js +60 -24
  38. package/build-module/components/collab-sidebar/comments.js.map +2 -2
  39. package/build-module/components/collab-sidebar/index.js +4 -4
  40. package/build-module/components/collab-sidebar/index.js.map +2 -2
  41. package/build-module/components/commands/index.js +16 -4
  42. package/build-module/components/commands/index.js.map +2 -2
  43. package/build-module/components/editor/index.js +10 -2
  44. package/build-module/components/editor/index.js.map +2 -2
  45. package/build-module/components/entities-saved-states/index.js.map +1 -1
  46. package/build-module/components/global-styles/hooks.js.map +1 -1
  47. package/build-module/components/post-template/panel.js +9 -6
  48. package/build-module/components/post-template/panel.js.map +2 -2
  49. package/build-module/components/post-title/index.js +18 -9
  50. package/build-module/components/post-title/index.js.map +2 -2
  51. package/build-module/components/visual-editor/index.js +10 -2
  52. package/build-module/components/visual-editor/index.js.map +2 -2
  53. package/build-module/components/visual-editor/use-edit-content-only-section-exit.js +40 -0
  54. package/build-module/components/visual-editor/use-edit-content-only-section-exit.js.map +7 -0
  55. package/build-module/components/visual-editor/use-padding-appender.js +50 -0
  56. package/build-module/components/visual-editor/use-padding-appender.js.map +7 -0
  57. package/build-module/dataviews/fields/content-preview/content-preview-view.js +3 -4
  58. package/build-module/dataviews/fields/content-preview/content-preview-view.js.map +2 -2
  59. package/build-module/hooks/pattern-overrides.js +1 -3
  60. package/build-module/hooks/pattern-overrides.js.map +2 -2
  61. package/build-module/store/actions.js +1 -1
  62. package/build-module/store/actions.js.map +2 -2
  63. package/build-style/style-rtl.css +52 -40
  64. package/build-style/style.css +52 -40
  65. package/build-types/components/collab-sidebar/add-comment.d.ts.map +1 -1
  66. package/build-types/components/collab-sidebar/comment-form.d.ts.map +1 -1
  67. package/build-types/components/collab-sidebar/comments.d.ts +1 -1
  68. package/build-types/components/collab-sidebar/comments.d.ts.map +1 -1
  69. package/build-types/components/commands/index.d.ts.map +1 -1
  70. package/build-types/components/editor/index.d.ts.map +1 -1
  71. package/build-types/components/entities-saved-states/index.d.ts +2 -2
  72. package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
  73. package/build-types/components/global-styles/hooks.d.ts +6 -6
  74. package/build-types/components/global-styles/hooks.d.ts.map +1 -1
  75. package/build-types/components/header/back-button.d.ts.map +1 -1
  76. package/build-types/components/local-autosave-monitor/index.d.ts.map +1 -1
  77. package/build-types/components/more-menu/tools-more-menu-group.d.ts.map +1 -1
  78. package/build-types/components/more-menu/view-more-menu-group.d.ts.map +1 -1
  79. package/build-types/components/plugin-document-setting-panel/index.d.ts.map +1 -1
  80. package/build-types/components/plugin-post-publish-panel/index.d.ts.map +1 -1
  81. package/build-types/components/plugin-post-status-info/index.d.ts.map +1 -1
  82. package/build-types/components/plugin-pre-publish-panel/index.d.ts.map +1 -1
  83. package/build-types/components/post-excerpt/plugin.d.ts.map +1 -1
  84. package/build-types/components/post-locked-modal/index.d.ts.map +1 -1
  85. package/build-types/components/post-publish-button/index.d.ts.map +1 -1
  86. package/build-types/components/post-taxonomies/flat-term-selector.d.ts.map +1 -1
  87. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts +1 -10
  88. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts.map +1 -1
  89. package/build-types/components/post-template/panel.d.ts.map +1 -1
  90. package/build-types/components/preferences-modal/enable-plugin-document-setting-panel.d.ts.map +1 -1
  91. package/build-types/components/save-publish-panels/index.d.ts.map +1 -1
  92. package/build-types/components/style-book/color-examples.d.ts.map +1 -1
  93. package/build-types/components/style-book/duotone-examples.d.ts.map +1 -1
  94. package/build-types/components/visual-editor/index.d.ts.map +1 -1
  95. package/build-types/components/visual-editor/use-edit-content-only-section-exit.d.ts +6 -0
  96. package/build-types/components/visual-editor/use-edit-content-only-section-exit.d.ts.map +1 -0
  97. package/build-types/components/visual-editor/use-padding-appender.d.ts +2 -0
  98. package/build-types/components/visual-editor/use-padding-appender.d.ts.map +1 -0
  99. package/build-types/dataviews/fields/content-preview/content-preview-view.d.ts.map +1 -1
  100. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  101. package/build-types/store/actions.d.ts +3 -4
  102. package/build-types/store/actions.d.ts.map +1 -1
  103. package/build-types/store/private-actions.d.ts.map +1 -1
  104. package/build-types/store/private-selectors.d.ts +5 -5
  105. package/build-types/store/selectors.d.ts +68 -68
  106. package/package.json +40 -40
  107. package/src/components/collab-sidebar/add-comment.js +4 -10
  108. package/src/components/collab-sidebar/comment-form.js +16 -4
  109. package/src/components/collab-sidebar/comments.js +100 -41
  110. package/src/components/collab-sidebar/index.js +4 -4
  111. package/src/components/collab-sidebar/style.scss +15 -0
  112. package/src/components/commands/index.js +32 -19
  113. package/src/components/editor/index.js +11 -0
  114. package/src/components/entities-saved-states/index.js +1 -1
  115. package/src/components/global-styles/hooks.js +4 -4
  116. package/src/components/post-template/panel.js +11 -8
  117. package/src/components/post-title/index.js +22 -9
  118. package/src/components/visual-editor/index.js +10 -1
  119. package/src/components/visual-editor/use-edit-content-only-section-exit.js +55 -0
  120. package/src/components/visual-editor/use-padding-appender.js +70 -0
  121. package/src/dataviews/fields/content-preview/content-preview-view.tsx +2 -5
  122. package/src/hooks/pattern-overrides.js +0 -2
  123. package/src/store/actions.js +9 -1
  124. package/tsconfig.tsbuildinfo +1 -1
@@ -276,20 +276,32 @@ var getEditedEntityContextualCommands = () => function useEditedEntityContextual
276
276
  return { isLoading: false, commands };
277
277
  };
278
278
  var getPageContentFocusCommands = () => function usePageContentFocusCommands() {
279
- const { onNavigateToEntityRecord, goBack, templateId, isPreviewMode } = (0, import_data.useSelect)((select) => {
279
+ const {
280
+ onNavigateToEntityRecord,
281
+ goBack,
282
+ templateId,
283
+ isPreviewMode,
284
+ canEditTemplate
285
+ } = (0, import_data.useSelect)((select) => {
280
286
  const {
281
287
  getRenderingMode,
282
288
  getEditorSettings: _getEditorSettings,
283
289
  getCurrentTemplateId
284
290
  } = (0, import_lock_unlock.unlock)(select(import_store.store));
285
291
  const editorSettings = _getEditorSettings();
292
+ const _templateId = getCurrentTemplateId();
286
293
  return {
287
294
  isTemplateHidden: getRenderingMode() === "post-only",
288
295
  onNavigateToEntityRecord: editorSettings.onNavigateToEntityRecord,
289
296
  getEditorSettings: _getEditorSettings,
290
297
  goBack: editorSettings.onNavigateToPreviousEntityRecord,
291
- templateId: getCurrentTemplateId(),
292
- isPreviewMode: editorSettings.isPreviewMode
298
+ templateId: _templateId,
299
+ isPreviewMode: editorSettings.isPreviewMode,
300
+ canEditTemplate: !!_templateId && select(import_core_data.store).canUser("update", {
301
+ kind: "postType",
302
+ name: "wp_template",
303
+ id: _templateId
304
+ })
293
305
  };
294
306
  }, []);
295
307
  const { editedRecord: template, hasResolved } = (0, import_core_data.useEntityRecord)(
@@ -301,7 +313,7 @@ var getPageContentFocusCommands = () => function usePageContentFocusCommands() {
301
313
  return { isLoading: false, commands: [] };
302
314
  }
303
315
  const commands = [];
304
- if (templateId && hasResolved) {
316
+ if (templateId && hasResolved && canEditTemplate) {
305
317
  commands.push({
306
318
  name: "core/switch-to-template-focus",
307
319
  label: (0, import_i18n.sprintf)(
@@ -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\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\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\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\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\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\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\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\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\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\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\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\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\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\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 { onNavigateToEntityRecord, goBack, templateId, isPreviewMode } =\n\t\t\tuseSelect( ( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetRenderingMode,\n\t\t\t\t\tgetEditorSettings: _getEditorSettings,\n\t\t\t\t\tgetCurrentTemplateId,\n\t\t\t\t} = unlock( select( editorStore ) );\n\t\t\t\tconst editorSettings = _getEditorSettings();\n\t\t\t\treturn {\n\t\t\t\t\tisTemplateHidden: getRenderingMode() === 'post-only',\n\t\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\t\teditorSettings.onNavigateToEntityRecord,\n\t\t\t\t\tgetEditorSettings: _getEditorSettings,\n\t\t\t\t\tgoBack: editorSettings.onNavigateToPreviousEntityRecord,\n\t\t\t\t\ttemplateId: getCurrentTemplateId(),\n\t\t\t\t\tisPreviewMode: editorSettings.isPreviewMode,\n\t\t\t\t};\n\t\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 ) {\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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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",
6
6
  "names": ["preferencesStore", "editorStore", "blockEditorStore", "coreStore", "interfaceStore", "noticesStore", "patternRenameModalName", "patternDuplicateModalName", "isTemplateRevertable"]
7
7
  }
@@ -74,13 +74,21 @@ function Editor({
74
74
  getEntityRecord,
75
75
  getResolutionError,
76
76
  hasFinishedResolution,
77
- getCurrentTheme
77
+ getCurrentTheme,
78
+ __experimentalGetCurrentGlobalStylesId,
79
+ canUser
78
80
  } = select(import_core_data.store);
79
81
  const { getRenderingMode, getCurrentPostType } = select(import_store.store);
80
82
  const postArgs = ["postType", postType, postId];
81
83
  const renderingMode = getRenderingMode();
82
84
  const currentPostType = getCurrentPostType();
83
85
  const _isBlockTheme = getCurrentTheme()?.is_block_theme;
86
+ const globalStylesId = __experimentalGetCurrentGlobalStylesId();
87
+ const userCanEditGlobalStyles = globalStylesId ? canUser("update", {
88
+ kind: "root",
89
+ name: "globalStyles",
90
+ id: globalStylesId
91
+ }) : false;
84
92
  return {
85
93
  post: getEntityRecord(...postArgs),
86
94
  template: templateId ? getEntityRecord(
@@ -94,7 +102,7 @@ function Editor({
94
102
  ),
95
103
  error: getResolutionError("getEntityRecord", postArgs)?.message,
96
104
  isBlockTheme: _isBlockTheme,
97
- showGlobalStyles: _isBlockTheme && (currentPostType === "wp_template" || renderingMode === "template-locked")
105
+ showGlobalStyles: _isBlockTheme && userCanEditGlobalStyles && (currentPostType === "wp_template" || renderingMode === "template-locked")
98
106
  };
99
107
  },
100
108
  [postType, postId, templateId]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/editor/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { Notice } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { TEMPLATE_POST_TYPE } from '../../store/constants';\nimport EditorInterface from '../editor-interface';\nimport { ExperimentalEditorProvider } from '../provider';\nimport Sidebar from '../sidebar';\nimport NotesSidebar from '../collab-sidebar';\nimport GlobalStylesSidebar from '../global-styles-sidebar';\nimport { GlobalStylesRenderer } from '../global-styles-renderer';\n\nfunction Editor( {\n\tpostType,\n\tpostId,\n\ttemplateId,\n\tsettings,\n\tchildren,\n\tinitialEdits,\n\n\t// This could be part of the settings.\n\tonActionPerformed,\n\n\t// The following abstractions are not ideal but necessary\n\t// to account for site editor and post editor differences for now.\n\textraContent,\n\textraSidebarPanels,\n\t...props\n} ) {\n\tconst {\n\t\tpost,\n\t\ttemplate,\n\t\thasLoadedPost,\n\t\terror,\n\t\tisBlockTheme,\n\t\tshowGlobalStyles,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEntityRecord,\n\t\t\t\tgetResolutionError,\n\t\t\t\thasFinishedResolution,\n\t\t\t\tgetCurrentTheme,\n\t\t\t} = select( coreStore );\n\t\t\tconst { getRenderingMode, getCurrentPostType } =\n\t\t\t\tselect( editorStore );\n\n\t\t\tconst postArgs = [ 'postType', postType, postId ];\n\t\t\tconst renderingMode = getRenderingMode();\n\t\t\tconst currentPostType = getCurrentPostType();\n\t\t\tconst _isBlockTheme = getCurrentTheme()?.is_block_theme;\n\n\t\t\treturn {\n\t\t\t\tpost: getEntityRecord( ...postArgs ),\n\t\t\t\ttemplate: templateId\n\t\t\t\t\t? getEntityRecord(\n\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t\t\t\ttemplateId\n\t\t\t\t\t )\n\t\t\t\t\t: undefined,\n\t\t\t\thasLoadedPost: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecord',\n\t\t\t\t\tpostArgs\n\t\t\t\t),\n\t\t\t\terror: getResolutionError( 'getEntityRecord', postArgs )\n\t\t\t\t\t?.message,\n\t\t\t\tisBlockTheme: _isBlockTheme,\n\t\t\t\tshowGlobalStyles:\n\t\t\t\t\t_isBlockTheme &&\n\t\t\t\t\t( currentPostType === 'wp_template' ||\n\t\t\t\t\t\trenderingMode === 'template-locked' ),\n\t\t\t};\n\t\t},\n\t\t[ postType, postId, templateId ]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ hasLoadedPost && ! post && (\n\t\t\t\t<Notice\n\t\t\t\t\tstatus={ !! error ? 'error' : 'warning' }\n\t\t\t\t\tisDismissible={ false }\n\t\t\t\t>\n\t\t\t\t\t{ ! error\n\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\"You attempted to edit an item that doesn't exist. Perhaps it was deleted?\"\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: error }\n\t\t\t\t</Notice>\n\t\t\t) }\n\t\t\t{ !! post && (\n\t\t\t\t<ExperimentalEditorProvider\n\t\t\t\t\tpost={ post }\n\t\t\t\t\t__unstableTemplate={ template }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tinitialEdits={ initialEdits }\n\t\t\t\t\tuseSubRegistry={ false }\n\t\t\t\t>\n\t\t\t\t\t<EditorInterface { ...props }>\n\t\t\t\t\t\t{ extraContent }\n\t\t\t\t\t</EditorInterface>\n\t\t\t\t\t{ children }\n\t\t\t\t\t<Sidebar\n\t\t\t\t\t\tonActionPerformed={ onActionPerformed }\n\t\t\t\t\t\textraPanels={ extraSidebarPanels }\n\t\t\t\t\t/>\n\t\t\t\t\t<NotesSidebar />\n\t\t\t\t\t{ isBlockTheme && <GlobalStylesRenderer /> }\n\t\t\t\t\t{ showGlobalStyles && <GlobalStylesSidebar /> }\n\t\t\t\t</ExperimentalEditorProvider>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default Editor;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAC1B,uBAAmC;AACnC,wBAAuB;AACvB,kBAAmB;AAKnB,mBAAqC;AACrC,uBAAmC;AACnC,8BAA4B;AAC5B,sBAA2C;AAC3C,qBAAoB;AACpB,4BAAyB;AACzB,mCAAgC;AAChC,oCAAqC;AAoEnC;AAlEF,SAAS,OAAQ;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA,GAAG;AACJ,GAAI;AACH,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI;AAAA,IACH,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,iBAAAA,KAAU;AACtB,YAAM,EAAE,kBAAkB,mBAAmB,IAC5C,OAAQ,aAAAC,KAAY;AAErB,YAAM,WAAW,CAAE,YAAY,UAAU,MAAO;AAChD,YAAM,gBAAgB,iBAAiB;AACvC,YAAM,kBAAkB,mBAAmB;AAC3C,YAAM,gBAAgB,gBAAgB,GAAG;AAEzC,aAAO;AAAA,QACN,MAAM,gBAAiB,GAAG,QAAS;AAAA,QACnC,UAAU,aACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACA,IACA;AAAA,QACH,eAAe;AAAA,UACd;AAAA,UACA;AAAA,QACD;AAAA,QACA,OAAO,mBAAoB,mBAAmB,QAAS,GACpD;AAAA,QACH,cAAc;AAAA,QACd,kBACC,kBACE,oBAAoB,iBACrB,kBAAkB;AAAA,MACrB;AAAA,IACD;AAAA,IACA,CAAE,UAAU,QAAQ,UAAW;AAAA,EAChC;AAEA,SACC,4EACG;AAAA,qBAAiB,CAAE,QACpB;AAAA,MAAC;AAAA;AAAA,QACA,QAAS,CAAC,CAAE,QAAQ,UAAU;AAAA,QAC9B,eAAgB;AAAA,QAEd,WAAE,YACD;AAAA,UACA;AAAA,QACA,IACA;AAAA;AAAA,IACJ;AAAA,IAEC,CAAC,CAAE,QACJ;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,oBAAqB;AAAA,QACrB;AAAA,QACA;AAAA,QACA,gBAAiB;AAAA,QAEjB;AAAA,sDAAC,wBAAAC,SAAA,EAAkB,GAAG,OACnB,wBACH;AAAA,UACE;AAAA,UACF;AAAA,YAAC,eAAAC;AAAA,YAAA;AAAA,cACA;AAAA,cACA,aAAc;AAAA;AAAA,UACf;AAAA,UACA,4CAAC,sBAAAC,SAAA,EAAa;AAAA,UACZ,gBAAgB,4CAAC,sDAAqB;AAAA,UACtC,oBAAoB,4CAAC,6BAAAC,SAAA,EAAoB;AAAA;AAAA;AAAA,IAC5C;AAAA,KAEF;AAEF;AAEA,IAAO,iBAAQ;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { Notice } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { TEMPLATE_POST_TYPE } from '../../store/constants';\nimport EditorInterface from '../editor-interface';\nimport { ExperimentalEditorProvider } from '../provider';\nimport Sidebar from '../sidebar';\nimport NotesSidebar from '../collab-sidebar';\nimport GlobalStylesSidebar from '../global-styles-sidebar';\nimport { GlobalStylesRenderer } from '../global-styles-renderer';\n\nfunction Editor( {\n\tpostType,\n\tpostId,\n\ttemplateId,\n\tsettings,\n\tchildren,\n\tinitialEdits,\n\n\t// This could be part of the settings.\n\tonActionPerformed,\n\n\t// The following abstractions are not ideal but necessary\n\t// to account for site editor and post editor differences for now.\n\textraContent,\n\textraSidebarPanels,\n\t...props\n} ) {\n\tconst {\n\t\tpost,\n\t\ttemplate,\n\t\thasLoadedPost,\n\t\terror,\n\t\tisBlockTheme,\n\t\tshowGlobalStyles,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEntityRecord,\n\t\t\t\tgetResolutionError,\n\t\t\t\thasFinishedResolution,\n\t\t\t\tgetCurrentTheme,\n\t\t\t\t__experimentalGetCurrentGlobalStylesId,\n\t\t\t\tcanUser,\n\t\t\t} = select( coreStore );\n\t\t\tconst { getRenderingMode, getCurrentPostType } =\n\t\t\t\tselect( editorStore );\n\n\t\t\tconst postArgs = [ 'postType', postType, postId ];\n\t\t\tconst renderingMode = getRenderingMode();\n\t\t\tconst currentPostType = getCurrentPostType();\n\t\t\tconst _isBlockTheme = getCurrentTheme()?.is_block_theme;\n\t\t\tconst globalStylesId = __experimentalGetCurrentGlobalStylesId();\n\t\t\tconst userCanEditGlobalStyles = globalStylesId\n\t\t\t\t? canUser( 'update', {\n\t\t\t\t\t\tkind: 'root',\n\t\t\t\t\t\tname: 'globalStyles',\n\t\t\t\t\t\tid: globalStylesId,\n\t\t\t\t } )\n\t\t\t\t: false;\n\n\t\t\treturn {\n\t\t\t\tpost: getEntityRecord( ...postArgs ),\n\t\t\t\ttemplate: templateId\n\t\t\t\t\t? getEntityRecord(\n\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t\t\t\ttemplateId\n\t\t\t\t\t )\n\t\t\t\t\t: undefined,\n\t\t\t\thasLoadedPost: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecord',\n\t\t\t\t\tpostArgs\n\t\t\t\t),\n\t\t\t\terror: getResolutionError( 'getEntityRecord', postArgs )\n\t\t\t\t\t?.message,\n\t\t\t\tisBlockTheme: _isBlockTheme,\n\t\t\t\tshowGlobalStyles:\n\t\t\t\t\t_isBlockTheme &&\n\t\t\t\t\tuserCanEditGlobalStyles &&\n\t\t\t\t\t( currentPostType === 'wp_template' ||\n\t\t\t\t\t\trenderingMode === 'template-locked' ),\n\t\t\t};\n\t\t},\n\t\t[ postType, postId, templateId ]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ hasLoadedPost && ! post && (\n\t\t\t\t<Notice\n\t\t\t\t\tstatus={ !! error ? 'error' : 'warning' }\n\t\t\t\t\tisDismissible={ false }\n\t\t\t\t>\n\t\t\t\t\t{ ! error\n\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\"You attempted to edit an item that doesn't exist. Perhaps it was deleted?\"\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: error }\n\t\t\t\t</Notice>\n\t\t\t) }\n\t\t\t{ !! post && (\n\t\t\t\t<ExperimentalEditorProvider\n\t\t\t\t\tpost={ post }\n\t\t\t\t\t__unstableTemplate={ template }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tinitialEdits={ initialEdits }\n\t\t\t\t\tuseSubRegistry={ false }\n\t\t\t\t>\n\t\t\t\t\t<EditorInterface { ...props }>\n\t\t\t\t\t\t{ extraContent }\n\t\t\t\t\t</EditorInterface>\n\t\t\t\t\t{ children }\n\t\t\t\t\t<Sidebar\n\t\t\t\t\t\tonActionPerformed={ onActionPerformed }\n\t\t\t\t\t\textraPanels={ extraSidebarPanels }\n\t\t\t\t\t/>\n\t\t\t\t\t<NotesSidebar />\n\t\t\t\t\t{ isBlockTheme && <GlobalStylesRenderer /> }\n\t\t\t\t\t{ showGlobalStyles && <GlobalStylesSidebar /> }\n\t\t\t\t</ExperimentalEditorProvider>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default Editor;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAC1B,uBAAmC;AACnC,wBAAuB;AACvB,kBAAmB;AAKnB,mBAAqC;AACrC,uBAAmC;AACnC,8BAA4B;AAC5B,sBAA2C;AAC3C,qBAAoB;AACpB,4BAAyB;AACzB,mCAAgC;AAChC,oCAAqC;AA+EnC;AA7EF,SAAS,OAAQ;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA,GAAG;AACJ,GAAI;AACH,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI;AAAA,IACH,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,iBAAAA,KAAU;AACtB,YAAM,EAAE,kBAAkB,mBAAmB,IAC5C,OAAQ,aAAAC,KAAY;AAErB,YAAM,WAAW,CAAE,YAAY,UAAU,MAAO;AAChD,YAAM,gBAAgB,iBAAiB;AACvC,YAAM,kBAAkB,mBAAmB;AAC3C,YAAM,gBAAgB,gBAAgB,GAAG;AACzC,YAAM,iBAAiB,uCAAuC;AAC9D,YAAM,0BAA0B,iBAC7B,QAAS,UAAU;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,IAAI;AAAA,MACJ,CAAE,IACF;AAEH,aAAO;AAAA,QACN,MAAM,gBAAiB,GAAG,QAAS;AAAA,QACnC,UAAU,aACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACA,IACA;AAAA,QACH,eAAe;AAAA,UACd;AAAA,UACA;AAAA,QACD;AAAA,QACA,OAAO,mBAAoB,mBAAmB,QAAS,GACpD;AAAA,QACH,cAAc;AAAA,QACd,kBACC,iBACA,4BACE,oBAAoB,iBACrB,kBAAkB;AAAA,MACrB;AAAA,IACD;AAAA,IACA,CAAE,UAAU,QAAQ,UAAW;AAAA,EAChC;AAEA,SACC,4EACG;AAAA,qBAAiB,CAAE,QACpB;AAAA,MAAC;AAAA;AAAA,QACA,QAAS,CAAC,CAAE,QAAQ,UAAU;AAAA,QAC9B,eAAgB;AAAA,QAEd,WAAE,YACD;AAAA,UACA;AAAA,QACA,IACA;AAAA;AAAA,IACJ;AAAA,IAEC,CAAC,CAAE,QACJ;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,oBAAqB;AAAA,QACrB;AAAA,QACA;AAAA,QACA,gBAAiB;AAAA,QAEjB;AAAA,sDAAC,wBAAAC,SAAA,EAAkB,GAAG,OACnB,wBACH;AAAA,UACE;AAAA,UACF;AAAA,YAAC,eAAAC;AAAA,YAAA;AAAA,cACA;AAAA,cACA,aAAc;AAAA;AAAA,UACf;AAAA,UACA,4CAAC,sBAAAC,SAAA,EAAa;AAAA,UACZ,gBAAgB,4CAAC,sDAAqB;AAAA,UACtC,oBAAoB,4CAAC,6BAAAC,SAAA,EAAoB;AAAA;AAAA;AAAA,IAC5C;AAAA,KAEF;AAEF;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["coreStore", "editorStore", "EditorInterface", "Sidebar", "NotesSidebar", "GlobalStylesSidebar"]
7
7
  }
@@ -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 *\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} ) {\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} )\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"],
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 *\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} ) {\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} )\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
5
  "mappings": "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",
6
6
  "names": ["editorStore", "useDialog", "clsx", "EntityTypeList"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/global-styles/hooks.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback } from '@wordpress/element';\nimport {\n\tmergeGlobalStyles,\n\tgetStyle,\n\tgetSetting,\n} from '@wordpress/global-styles-engine';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { cleanEmptyObject } = unlock( blockEditorPrivateApis );\n\n/**\n * Hook to fetch and manage user global styles config\n */\nfunction useGlobalStylesUserConfig() {\n\tconst { globalStylesId, isReady, settings, styles, _links } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEntityRecord,\n\t\t\t\tgetEditedEntityRecord,\n\t\t\t\thasFinishedResolution,\n\t\t\t\tcanUser,\n\t\t\t} = select( coreStore );\n\t\t\tconst _globalStylesId =\n\t\t\t\tselect( coreStore ).__experimentalGetCurrentGlobalStylesId();\n\n\t\t\tlet record;\n\n\t\t\tconst userCanEditGlobalStyles = _globalStylesId\n\t\t\t\t? canUser( 'update', {\n\t\t\t\t\t\tkind: 'root',\n\t\t\t\t\t\tname: 'globalStyles',\n\t\t\t\t\t\tid: _globalStylesId,\n\t\t\t\t } )\n\t\t\t\t: null;\n\n\t\t\tif (\n\t\t\t\t_globalStylesId &&\n\t\t\t\ttypeof userCanEditGlobalStyles === 'boolean'\n\t\t\t) {\n\t\t\t\tif ( userCanEditGlobalStyles ) {\n\t\t\t\t\trecord = getEditedEntityRecord(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\t_globalStylesId\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\trecord = getEntityRecord(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\t_globalStylesId,\n\t\t\t\t\t\t{ context: 'view' }\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet hasResolved = false;\n\t\t\tif (\n\t\t\t\thasFinishedResolution(\n\t\t\t\t\t'__experimentalGetCurrentGlobalStylesId'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif ( _globalStylesId ) {\n\t\t\t\t\thasResolved = userCanEditGlobalStyles\n\t\t\t\t\t\t? hasFinishedResolution( 'getEditedEntityRecord', [\n\t\t\t\t\t\t\t\t'root',\n\t\t\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\t\t\t_globalStylesId,\n\t\t\t\t\t\t ] )\n\t\t\t\t\t\t: hasFinishedResolution( 'getEntityRecord', [\n\t\t\t\t\t\t\t\t'root',\n\t\t\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\t\t\t_globalStylesId,\n\t\t\t\t\t\t\t\t{ context: 'view' },\n\t\t\t\t\t\t ] );\n\t\t\t\t} else {\n\t\t\t\t\thasResolved = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tglobalStylesId: _globalStylesId,\n\t\t\t\tisReady: hasResolved,\n\t\t\t\tsettings: record?.settings,\n\t\t\t\tstyles: record?.styles,\n\t\t\t\t_links: record?._links,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst { getEditedEntityRecord } = useSelect( coreStore );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tconst config = useMemo( () => {\n\t\treturn {\n\t\t\tsettings: settings ?? {},\n\t\t\tstyles: styles ?? {},\n\t\t\t_links: _links ?? {},\n\t\t};\n\t}, [ settings, styles, _links ] );\n\n\tconst setConfig = useCallback(\n\t\t( callbackOrObject, options = {} ) => {\n\t\t\tconst record = getEditedEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'globalStyles',\n\t\t\t\tglobalStylesId\n\t\t\t);\n\n\t\t\tconst currentConfig = {\n\t\t\t\tstyles: record?.styles ?? {},\n\t\t\t\tsettings: record?.settings ?? {},\n\t\t\t\t_links: record?._links ?? {},\n\t\t\t};\n\n\t\t\tconst updatedConfig =\n\t\t\t\ttypeof callbackOrObject === 'function'\n\t\t\t\t\t? callbackOrObject( currentConfig )\n\t\t\t\t\t: callbackOrObject;\n\n\t\t\teditEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'globalStyles',\n\t\t\t\tglobalStylesId,\n\t\t\t\t{\n\t\t\t\t\tstyles: cleanEmptyObject( updatedConfig.styles ) || {},\n\t\t\t\t\tsettings: cleanEmptyObject( updatedConfig.settings ) || {},\n\t\t\t\t\t_links: cleanEmptyObject( updatedConfig._links ) || {},\n\t\t\t\t},\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\t\t[ globalStylesId, editEntityRecord, getEditedEntityRecord ]\n\t);\n\n\treturn [ isReady, config, setConfig ];\n}\n\n/**\n * Hook to fetch base/theme global styles config\n */\nfunction useGlobalStylesBaseConfig() {\n\tconst baseConfig = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).__experimentalGetCurrentThemeBaseGlobalStyles(),\n\t\t[]\n\t);\n\treturn [ !! baseConfig, baseConfig ];\n}\n\n/**\n * Hook to get merged global styles configuration\n *\n * @return {Object} Object containing merged, base, user configs and setUser function\n * { merged, base, user, setUser }\n */\nexport function useGlobalStyles() {\n\tconst [ isUserConfigReady, userConfig, setUserConfig ] =\n\t\tuseGlobalStylesUserConfig();\n\tconst [ isBaseConfigReady, baseConfig ] = useGlobalStylesBaseConfig();\n\n\tconst merged = useMemo( () => {\n\t\tif ( ! isUserConfigReady || ! isBaseConfigReady ) {\n\t\t\treturn {};\n\t\t}\n\t\treturn mergeGlobalStyles( baseConfig || {}, userConfig );\n\t}, [ isUserConfigReady, isBaseConfigReady, baseConfig, userConfig ] );\n\n\treturn {\n\t\tmerged,\n\t\tbase: baseConfig || {},\n\t\tuser: userConfig,\n\t\tsetUser: setUserConfig,\n\t\tisReady: isUserConfigReady && isBaseConfigReady,\n\t};\n}\n\n/**\n * Hook to get a style value from global styles\n *\n * @param {string} path Style path (e.g., 'color.background')\n * @param {string} blockName Optional block name\n * @return {*} Style value\n */\nexport function useStyle( path, blockName ) {\n\tconst { merged } = useGlobalStyles();\n\treturn useMemo(\n\t\t() => getStyle( merged, path, blockName ),\n\t\t[ merged, path, blockName ]\n\t);\n}\n\n/**\n * Hook to get a setting value from global styles\n *\n * @param {string} path Setting path (e.g., 'spacing.blockGap')\n * @param {string} blockName Optional block name\n * @return {*} Setting value\n */\nexport function useSetting( path, blockName ) {\n\tconst { merged } = useGlobalStyles();\n\treturn useMemo(\n\t\t() => getSetting( merged, path, blockName ),\n\t\t[ merged, path, blockName ]\n\t);\n}\n"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback } from '@wordpress/element';\nimport {\n\tmergeGlobalStyles,\n\tgetStyle,\n\tgetSetting,\n} from '@wordpress/global-styles-engine';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { cleanEmptyObject } = unlock( blockEditorPrivateApis );\n\n/**\n * Hook to fetch and manage user global styles config\n */\nfunction useGlobalStylesUserConfig() {\n\tconst { globalStylesId, isReady, settings, styles, _links } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEntityRecord,\n\t\t\t\tgetEditedEntityRecord,\n\t\t\t\thasFinishedResolution,\n\t\t\t\tcanUser,\n\t\t\t} = select( coreStore );\n\t\t\tconst _globalStylesId =\n\t\t\t\tselect( coreStore ).__experimentalGetCurrentGlobalStylesId();\n\n\t\t\tlet record;\n\n\t\t\tconst userCanEditGlobalStyles = _globalStylesId\n\t\t\t\t? canUser( 'update', {\n\t\t\t\t\t\tkind: 'root',\n\t\t\t\t\t\tname: 'globalStyles',\n\t\t\t\t\t\tid: _globalStylesId,\n\t\t\t\t } )\n\t\t\t\t: null;\n\n\t\t\tif (\n\t\t\t\t_globalStylesId &&\n\t\t\t\ttypeof userCanEditGlobalStyles === 'boolean'\n\t\t\t) {\n\t\t\t\tif ( userCanEditGlobalStyles ) {\n\t\t\t\t\trecord = getEditedEntityRecord(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\t_globalStylesId\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\trecord = getEntityRecord(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\t_globalStylesId,\n\t\t\t\t\t\t{ context: 'view' }\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet hasResolved = false;\n\t\t\tif (\n\t\t\t\thasFinishedResolution(\n\t\t\t\t\t'__experimentalGetCurrentGlobalStylesId'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif ( _globalStylesId ) {\n\t\t\t\t\thasResolved = userCanEditGlobalStyles\n\t\t\t\t\t\t? hasFinishedResolution( 'getEditedEntityRecord', [\n\t\t\t\t\t\t\t\t'root',\n\t\t\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\t\t\t_globalStylesId,\n\t\t\t\t\t\t ] )\n\t\t\t\t\t\t: hasFinishedResolution( 'getEntityRecord', [\n\t\t\t\t\t\t\t\t'root',\n\t\t\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\t\t\t_globalStylesId,\n\t\t\t\t\t\t\t\t{ context: 'view' },\n\t\t\t\t\t\t ] );\n\t\t\t\t} else {\n\t\t\t\t\thasResolved = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tglobalStylesId: _globalStylesId,\n\t\t\t\tisReady: hasResolved,\n\t\t\t\tsettings: record?.settings,\n\t\t\t\tstyles: record?.styles,\n\t\t\t\t_links: record?._links,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst { getEditedEntityRecord } = useSelect( coreStore );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tconst config = useMemo( () => {\n\t\treturn {\n\t\t\tsettings: settings ?? {},\n\t\t\tstyles: styles ?? {},\n\t\t\t_links: _links ?? {},\n\t\t};\n\t}, [ settings, styles, _links ] );\n\n\tconst setConfig = useCallback(\n\t\t( callbackOrObject, options = {} ) => {\n\t\t\tconst record = getEditedEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'globalStyles',\n\t\t\t\tglobalStylesId\n\t\t\t);\n\n\t\t\tconst currentConfig = {\n\t\t\t\tstyles: record?.styles ?? {},\n\t\t\t\tsettings: record?.settings ?? {},\n\t\t\t\t_links: record?._links ?? {},\n\t\t\t};\n\n\t\t\tconst updatedConfig =\n\t\t\t\ttypeof callbackOrObject === 'function'\n\t\t\t\t\t? callbackOrObject( currentConfig )\n\t\t\t\t\t: callbackOrObject;\n\n\t\t\teditEntityRecord(\n\t\t\t\t'root',\n\t\t\t\t'globalStyles',\n\t\t\t\tglobalStylesId,\n\t\t\t\t{\n\t\t\t\t\tstyles: cleanEmptyObject( updatedConfig.styles ) || {},\n\t\t\t\t\tsettings: cleanEmptyObject( updatedConfig.settings ) || {},\n\t\t\t\t\t_links: cleanEmptyObject( updatedConfig._links ) || {},\n\t\t\t\t},\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\t\t[ globalStylesId, editEntityRecord, getEditedEntityRecord ]\n\t);\n\n\treturn [ isReady, config, setConfig ];\n}\n\n/**\n * Hook to fetch base/theme global styles config\n */\nfunction useGlobalStylesBaseConfig() {\n\tconst baseConfig = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).__experimentalGetCurrentThemeBaseGlobalStyles(),\n\t\t[]\n\t);\n\treturn [ !! baseConfig, baseConfig ];\n}\n\n/**\n * Hook to get merged global styles configuration\n *\n * @return {Object} Object containing merged, base, user configs and setUser function\n * { merged, base, user, setUser }\n */\nexport function useGlobalStyles() {\n\tconst [ isUserConfigReady, userConfig, setUserConfig ] =\n\t\tuseGlobalStylesUserConfig();\n\tconst [ isBaseConfigReady, baseConfig ] = useGlobalStylesBaseConfig();\n\n\tconst merged = useMemo( () => {\n\t\tif ( ! isUserConfigReady || ! isBaseConfigReady ) {\n\t\t\treturn {};\n\t\t}\n\t\treturn mergeGlobalStyles( baseConfig || {}, userConfig );\n\t}, [ isUserConfigReady, isBaseConfigReady, baseConfig, userConfig ] );\n\n\treturn {\n\t\tmerged,\n\t\tbase: baseConfig || {},\n\t\tuser: userConfig,\n\t\tsetUser: setUserConfig,\n\t\tisReady: isUserConfigReady && isBaseConfigReady,\n\t};\n}\n\n/**\n * Hook to get a style value from global styles\n *\n * @param {string} path Style path (e.g., 'color.background')\n * @param {string=} blockName Optional block name\n * @return {*} Style value\n */\nexport function useStyle( path, blockName ) {\n\tconst { merged } = useGlobalStyles();\n\treturn useMemo(\n\t\t() => getStyle( merged, path, blockName ),\n\t\t[ merged, path, blockName ]\n\t);\n}\n\n/**\n * Hook to get a setting value from global styles\n *\n * @param {string} path Setting path (e.g., 'spacing.blockGap')\n * @param {string=} blockName Optional block name\n * @return {*} Setting value\n */\nexport function useSetting( path, blockName ) {\n\tconst { merged } = useGlobalStyles();\n\treturn useMemo(\n\t\t() => getSetting( merged, path, blockName ),\n\t\t[ merged, path, blockName ]\n\t);\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["blockEditorPrivateApis", "getEditedEntityRecord", "coreStore"]
7
7
  }
@@ -67,12 +67,15 @@ function PostTemplatePanel() {
67
67
  }) ?? false;
68
68
  return canCreateTemplates;
69
69
  }, []);
70
- const canViewTemplates = (0, import_data.useSelect)((select) => {
71
- return select(import_core_data.store).canUser("read", {
72
- kind: "postType",
73
- name: "wp_template"
74
- }) ?? false;
75
- }, []);
70
+ const canViewTemplates = (0, import_data.useSelect)(
71
+ (select) => {
72
+ return isVisible ? select(import_core_data.store).canUser("read", {
73
+ kind: "postType",
74
+ name: "wp_template"
75
+ }) : false;
76
+ },
77
+ [isVisible]
78
+ );
76
79
  if ((!isBlockTheme || !canViewTemplates) && isVisible) {
77
80
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_classic_theme.default, {});
78
81
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-template/panel.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport ClassicThemeControl from './classic-theme';\nimport BlockThemeControl from './block-theme';\n\n/**\n * Displays the template controls based on the current editor settings and user permissions.\n *\n * @return {React.ReactNode} The rendered PostTemplatePanel component.\n */\nexport default function PostTemplatePanel() {\n\tconst { templateId, isBlockTheme } = useSelect( ( select ) => {\n\t\tconst { getCurrentTemplateId, getEditorSettings } =\n\t\t\tselect( editorStore );\n\t\treturn {\n\t\t\ttemplateId: getCurrentTemplateId(),\n\t\t\tisBlockTheme: getEditorSettings().__unstableIsBlockBasedTheme,\n\t\t};\n\t}, [] );\n\n\tconst isVisible = useSelect( ( select ) => {\n\t\tconst postTypeSlug = select( editorStore ).getCurrentPostType();\n\t\tconst postType = select( coreStore ).getPostType( postTypeSlug );\n\t\tif ( ! postType?.viewable ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst settings = select( editorStore ).getEditorSettings();\n\t\tconst hasTemplates =\n\t\t\t!! settings.availableTemplates &&\n\t\t\tObject.keys( settings.availableTemplates ).length > 0;\n\t\tif ( hasTemplates ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( ! settings.supportsTemplateMode ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst canCreateTemplates =\n\t\t\tselect( coreStore ).canUser( 'create', {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: 'wp_template',\n\t\t\t} ) ?? false;\n\t\treturn canCreateTemplates;\n\t}, [] );\n\n\tconst canViewTemplates = useSelect( ( select ) => {\n\t\treturn (\n\t\t\tselect( coreStore ).canUser( 'read', {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: 'wp_template',\n\t\t\t} ) ?? false\n\t\t);\n\t}, [] );\n\n\tif ( ( ! isBlockTheme || ! canViewTemplates ) && isVisible ) {\n\t\treturn <ClassicThemeControl />;\n\t}\n\n\tif ( isBlockTheme && !! templateId ) {\n\t\treturn <BlockThemeControl id={ templateId } />;\n\t}\n\treturn null;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAC1B,uBAAmC;AAKnC,mBAAqC;AACrC,2BAAgC;AAChC,yBAA8B;AAsDrB;AA/CM,SAAR,oBAAqC;AAC3C,QAAM,EAAE,YAAY,aAAa,QAAI,uBAAW,CAAE,WAAY;AAC7D,UAAM,EAAE,sBAAsB,kBAAkB,IAC/C,OAAQ,aAAAA,KAAY;AACrB,WAAO;AAAA,MACN,YAAY,qBAAqB;AAAA,MACjC,cAAc,kBAAkB,EAAE;AAAA,IACnC;AAAA,EACD,GAAG,CAAC,CAAE;AAEN,QAAM,gBAAY,uBAAW,CAAE,WAAY;AAC1C,UAAM,eAAe,OAAQ,aAAAA,KAAY,EAAE,mBAAmB;AAC9D,UAAM,WAAW,OAAQ,iBAAAC,KAAU,EAAE,YAAa,YAAa;AAC/D,QAAK,CAAE,UAAU,UAAW;AAC3B,aAAO;AAAA,IACR;AAEA,UAAM,WAAW,OAAQ,aAAAD,KAAY,EAAE,kBAAkB;AACzD,UAAM,eACL,CAAC,CAAE,SAAS,sBACZ,OAAO,KAAM,SAAS,kBAAmB,EAAE,SAAS;AACrD,QAAK,cAAe;AACnB,aAAO;AAAA,IACR;AAEA,QAAK,CAAE,SAAS,sBAAuB;AACtC,aAAO;AAAA,IACR;AAEA,UAAM,qBACL,OAAQ,iBAAAC,KAAU,EAAE,QAAS,UAAU;AAAA,MACtC,MAAM;AAAA,MACN,MAAM;AAAA,IACP,CAAE,KAAK;AACR,WAAO;AAAA,EACR,GAAG,CAAC,CAAE;AAEN,QAAM,uBAAmB,uBAAW,CAAE,WAAY;AACjD,WACC,OAAQ,iBAAAA,KAAU,EAAE,QAAS,QAAQ;AAAA,MACpC,MAAM;AAAA,MACN,MAAM;AAAA,IACP,CAAE,KAAK;AAAA,EAET,GAAG,CAAC,CAAE;AAEN,OAAO,CAAE,gBAAgB,CAAE,qBAAsB,WAAY;AAC5D,WAAO,4CAAC,qBAAAC,SAAA,EAAoB;AAAA,EAC7B;AAEA,MAAK,gBAAgB,CAAC,CAAE,YAAa;AACpC,WAAO,4CAAC,mBAAAC,SAAA,EAAkB,IAAK,YAAa;AAAA,EAC7C;AACA,SAAO;AACR;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport ClassicThemeControl from './classic-theme';\nimport BlockThemeControl from './block-theme';\n\n/**\n * Displays the template controls based on the current editor settings and user permissions.\n *\n * @return {React.ReactNode} The rendered PostTemplatePanel component.\n */\nexport default function PostTemplatePanel() {\n\tconst { templateId, isBlockTheme } = useSelect( ( select ) => {\n\t\tconst { getCurrentTemplateId, getEditorSettings } =\n\t\t\tselect( editorStore );\n\t\treturn {\n\t\t\ttemplateId: getCurrentTemplateId(),\n\t\t\tisBlockTheme: getEditorSettings().__unstableIsBlockBasedTheme,\n\t\t};\n\t}, [] );\n\n\tconst isVisible = useSelect( ( select ) => {\n\t\tconst postTypeSlug = select( editorStore ).getCurrentPostType();\n\t\tconst postType = select( coreStore ).getPostType( postTypeSlug );\n\t\tif ( ! postType?.viewable ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst settings = select( editorStore ).getEditorSettings();\n\t\tconst hasTemplates =\n\t\t\t!! settings.availableTemplates &&\n\t\t\tObject.keys( settings.availableTemplates ).length > 0;\n\t\tif ( hasTemplates ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( ! settings.supportsTemplateMode ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst canCreateTemplates =\n\t\t\tselect( coreStore ).canUser( 'create', {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: 'wp_template',\n\t\t\t} ) ?? false;\n\t\treturn canCreateTemplates;\n\t}, [] );\n\n\tconst canViewTemplates = useSelect(\n\t\t( select ) => {\n\t\t\treturn isVisible\n\t\t\t\t? select( coreStore ).canUser( 'read', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_template',\n\t\t\t\t } )\n\t\t\t\t: false;\n\t\t},\n\t\t[ isVisible ]\n\t);\n\n\tif ( ( ! isBlockTheme || ! canViewTemplates ) && isVisible ) {\n\t\treturn <ClassicThemeControl />;\n\t}\n\n\tif ( isBlockTheme && !! templateId ) {\n\t\treturn <BlockThemeControl id={ templateId } />;\n\t}\n\treturn null;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAC1B,uBAAmC;AAKnC,mBAAqC;AACrC,2BAAgC;AAChC,yBAA8B;AAyDrB;AAlDM,SAAR,oBAAqC;AAC3C,QAAM,EAAE,YAAY,aAAa,QAAI,uBAAW,CAAE,WAAY;AAC7D,UAAM,EAAE,sBAAsB,kBAAkB,IAC/C,OAAQ,aAAAA,KAAY;AACrB,WAAO;AAAA,MACN,YAAY,qBAAqB;AAAA,MACjC,cAAc,kBAAkB,EAAE;AAAA,IACnC;AAAA,EACD,GAAG,CAAC,CAAE;AAEN,QAAM,gBAAY,uBAAW,CAAE,WAAY;AAC1C,UAAM,eAAe,OAAQ,aAAAA,KAAY,EAAE,mBAAmB;AAC9D,UAAM,WAAW,OAAQ,iBAAAC,KAAU,EAAE,YAAa,YAAa;AAC/D,QAAK,CAAE,UAAU,UAAW;AAC3B,aAAO;AAAA,IACR;AAEA,UAAM,WAAW,OAAQ,aAAAD,KAAY,EAAE,kBAAkB;AACzD,UAAM,eACL,CAAC,CAAE,SAAS,sBACZ,OAAO,KAAM,SAAS,kBAAmB,EAAE,SAAS;AACrD,QAAK,cAAe;AACnB,aAAO;AAAA,IACR;AAEA,QAAK,CAAE,SAAS,sBAAuB;AACtC,aAAO;AAAA,IACR;AAEA,UAAM,qBACL,OAAQ,iBAAAC,KAAU,EAAE,QAAS,UAAU;AAAA,MACtC,MAAM;AAAA,MACN,MAAM;AAAA,IACP,CAAE,KAAK;AACR,WAAO;AAAA,EACR,GAAG,CAAC,CAAE;AAEN,QAAM,uBAAmB;AAAA,IACxB,CAAE,WAAY;AACb,aAAO,YACJ,OAAQ,iBAAAA,KAAU,EAAE,QAAS,QAAQ;AAAA,QACrC,MAAM;AAAA,QACN,MAAM;AAAA,MACN,CAAE,IACF;AAAA,IACJ;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AAEA,OAAO,CAAE,gBAAgB,CAAE,qBAAsB,WAAY;AAC5D,WAAO,4CAAC,qBAAAC,SAAA,EAAoB;AAAA,EAC7B;AAEA,MAAK,gBAAgB,CAAC,CAAE,YAAa;AACpC,WAAO,4CAAC,mBAAAC,SAAA,EAAkB,IAAK,YAAa;AAAA,EAC7C;AACA,SAAO;AACR;",
6
6
  "names": ["editorStore", "coreStore", "ClassicThemeControl", "BlockThemeControl"]
7
7
  }
@@ -48,18 +48,25 @@ var import_constants = require("./constants");
48
48
  var import_use_post_title_focus = __toESM(require("./use-post-title-focus"));
49
49
  var import_use_post_title = __toESM(require("./use-post-title"));
50
50
  var import_post_type_support_check = __toESM(require("../post-type-support-check"));
51
+ var import_lock_unlock = require("../../lock-unlock");
51
52
  var import_jsx_runtime = (
52
53
  /* eslint-disable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */
53
54
  require("react/jsx-runtime")
54
55
  );
55
56
  var PostTitle = (0, import_element.forwardRef)((_, forwardedRef) => {
56
- const { placeholder } = (0, import_data.useSelect)((select) => {
57
- const { getSettings } = select(import_block_editor.store);
58
- const { titlePlaceholder } = getSettings();
59
- return {
60
- placeholder: titlePlaceholder
61
- };
62
- }, []);
57
+ const { placeholder, isEditingContentOnlySection } = (0, import_data.useSelect)(
58
+ (select) => {
59
+ const { getSettings, getEditedContentOnlySection } = (0, import_lock_unlock.unlock)(
60
+ select(import_block_editor.store)
61
+ );
62
+ const { titlePlaceholder } = getSettings();
63
+ return {
64
+ placeholder: titlePlaceholder,
65
+ isEditingContentOnlySection: !!getEditedContentOnlySection()
66
+ };
67
+ },
68
+ []
69
+ );
63
70
  const [isSelected, setIsSelected] = (0, import_element.useState)(false);
64
71
  const { ref: focusRef } = (0, import_use_post_title_focus.default)(forwardedRef);
65
72
  const { title, setTitle: onUpdate } = (0, import_use_post_title.default)();
@@ -151,11 +158,12 @@ var PostTitle = (0, import_element.forwardRef)((_, forwardedRef) => {
151
158
  const className = (0, import_clsx.default)(import_constants.DEFAULT_CLASSNAMES, {
152
159
  "is-selected": isSelected
153
160
  });
161
+ const style = isEditingContentOnlySection ? { opacity: 0.2 } : void 0;
154
162
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
155
163
  "h1",
156
164
  {
157
165
  ref: (0, import_compose.useMergeRefs)([richTextRef, focusRef]),
158
- contentEditable: true,
166
+ contentEditable: !isEditingContentOnlySection,
159
167
  className,
160
168
  "aria-label": decodedPlaceholder,
161
169
  role: "textbox",
@@ -163,7 +171,8 @@ var PostTitle = (0, import_element.forwardRef)((_, forwardedRef) => {
163
171
  onFocus: onSelect,
164
172
  onBlur: onUnselect,
165
173
  onKeyDown,
166
- onPaste
174
+ onPaste,
175
+ style
167
176
  }
168
177
  );
169
178
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-title/index.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef, useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { ENTER } from '@wordpress/keycodes';\nimport { pasteHandler } from '@wordpress/blocks';\nimport {\n\t__unstableUseRichText as useRichText,\n\tcreate,\n\tinsert,\n} from '@wordpress/rich-text';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { DEFAULT_CLASSNAMES, REGEXP_NEWLINES } from './constants';\nimport usePostTitleFocus from './use-post-title-focus';\nimport usePostTitle from './use-post-title';\nimport PostTypeSupportCheck from '../post-type-support-check';\n\nconst PostTitle = forwardRef( ( _, forwardedRef ) => {\n\tconst { placeholder } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { titlePlaceholder } = getSettings();\n\n\t\treturn {\n\t\t\tplaceholder: titlePlaceholder,\n\t\t};\n\t}, [] );\n\n\tconst [ isSelected, setIsSelected ] = useState( false );\n\n\tconst { ref: focusRef } = usePostTitleFocus( forwardedRef );\n\n\tconst { title, setTitle: onUpdate } = usePostTitle();\n\n\tconst [ selection, setSelection ] = useState( {} );\n\n\tconst { clearSelectedBlock, insertBlocks, insertDefaultBlock } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst decodedPlaceholder =\n\t\tdecodeEntities( placeholder ) || __( 'Add title' );\n\n\tconst {\n\t\tvalue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: title,\n\t\tonChange( newValue ) {\n\t\t\tonUpdate( newValue.replace( REGEXP_NEWLINES, ' ' ) );\n\t\t},\n\t\tplaceholder: decodedPlaceholder,\n\t\tselectionStart: selection.start,\n\t\tselectionEnd: selection.end,\n\t\tonSelectionChange( newStart, newEnd ) {\n\t\t\tsetSelection( ( sel ) => {\n\t\t\t\tconst { start, end } = sel;\n\t\t\t\tif ( start === newStart && end === newEnd ) {\n\t\t\t\t\treturn sel;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tstart: newStart,\n\t\t\t\t\tend: newEnd,\n\t\t\t\t};\n\t\t\t} );\n\t\t},\n\t\t__unstableDisableFormats: false,\n\t} );\n\n\tfunction onInsertBlockAfter( blocks ) {\n\t\tinsertBlocks( blocks, 0 );\n\t}\n\n\tfunction onSelect() {\n\t\tsetIsSelected( true );\n\t\tclearSelectedBlock();\n\t}\n\n\tfunction onUnselect() {\n\t\tsetIsSelected( false );\n\t\tsetSelection( {} );\n\t}\n\n\tfunction onEnterPress() {\n\t\tinsertDefaultBlock( undefined, undefined, 0 );\n\t}\n\n\tfunction onKeyDown( event ) {\n\t\tif ( event.keyCode === ENTER ) {\n\t\t\tevent.preventDefault();\n\t\t\tonEnterPress();\n\t\t}\n\t}\n\n\tfunction onPaste( event ) {\n\t\tconst clipboardData = event.clipboardData;\n\n\t\tlet plainText = '';\n\t\tlet html = '';\n\n\t\ttry {\n\t\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\t\thtml = clipboardData.getData( 'text/html' );\n\t\t} catch ( error ) {\n\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t// behaviour.\n\t\t\treturn;\n\t\t}\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t} );\n\n\t\tevent.preventDefault();\n\n\t\tif ( ! content.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( typeof content !== 'string' ) {\n\t\t\tconst [ firstBlock ] = content;\n\n\t\t\tif (\n\t\t\t\t! title &&\n\t\t\t\t( firstBlock.name === 'core/heading' ||\n\t\t\t\t\tfirstBlock.name === 'core/paragraph' )\n\t\t\t) {\n\t\t\t\t// Strip HTML to avoid unwanted HTML being added to the title.\n\t\t\t\t// In the majority of cases it is assumed that HTML in the title\n\t\t\t\t// is undesirable.\n\t\t\t\tconst contentNoHTML = stripHTML(\n\t\t\t\t\tfirstBlock.attributes.content\n\t\t\t\t);\n\t\t\t\tonUpdate( contentNoHTML );\n\t\t\t\tonInsertBlockAfter( content.slice( 1 ) );\n\t\t\t} else {\n\t\t\t\tonInsertBlockAfter( content );\n\t\t\t}\n\t\t} else {\n\t\t\t// Strip HTML to avoid unwanted HTML being added to the title.\n\t\t\t// In the majority of cases it is assumed that HTML in the title\n\t\t\t// is undesirable.\n\t\t\tconst contentNoHTML = stripHTML( content );\n\t\t\tonChange( insert( value, create( { html: contentNoHTML } ) ) );\n\t\t}\n\t}\n\n\t// The wp-block className is important for editor styles.\n\t// This same block is used in both the visual and the code editor.\n\tconst className = clsx( DEFAULT_CLASSNAMES, {\n\t\t'is-selected': isSelected,\n\t} );\n\n\treturn (\n\t\t/* eslint-disable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */\n\t\t<h1\n\t\t\tref={ useMergeRefs( [ richTextRef, focusRef ] ) }\n\t\t\tcontentEditable\n\t\t\tclassName={ className }\n\t\t\taria-label={ decodedPlaceholder }\n\t\t\trole=\"textbox\"\n\t\t\taria-multiline=\"true\"\n\t\t\tonFocus={ onSelect }\n\t\t\tonBlur={ onUnselect }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t\tonPaste={ onPaste }\n\t\t/>\n\t\t/* eslint-enable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */\n\t);\n} );\n\n/**\n * Renders the `PostTitle` component.\n *\n * @param {Object} _ Unused parameter.\n * @param {Element} forwardedRef Forwarded ref for the component.\n *\n * @return {React.ReactNode} The rendered PostTitle component.\n */\nexport default forwardRef( ( _, forwardedRef ) => (\n\t<PostTypeSupportCheck supportKeys=\"title\">\n\t\t<PostTitle ref={ forwardedRef } />\n\t</PostTypeSupportCheck>\n) );\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef, useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { ENTER } from '@wordpress/keycodes';\nimport { pasteHandler } from '@wordpress/blocks';\nimport {\n\t__unstableUseRichText as useRichText,\n\tcreate,\n\tinsert,\n} from '@wordpress/rich-text';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { DEFAULT_CLASSNAMES, REGEXP_NEWLINES } from './constants';\nimport usePostTitleFocus from './use-post-title-focus';\nimport usePostTitle from './use-post-title';\nimport PostTypeSupportCheck from '../post-type-support-check';\n\nimport { unlock } from '../../lock-unlock';\n\nconst PostTitle = forwardRef( ( _, forwardedRef ) => {\n\tconst { placeholder, isEditingContentOnlySection } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, getEditedContentOnlySection } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\tconst { titlePlaceholder } = getSettings();\n\n\t\t\treturn {\n\t\t\t\tplaceholder: titlePlaceholder,\n\t\t\t\tisEditingContentOnlySection: !! getEditedContentOnlySection(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst [ isSelected, setIsSelected ] = useState( false );\n\n\tconst { ref: focusRef } = usePostTitleFocus( forwardedRef );\n\n\tconst { title, setTitle: onUpdate } = usePostTitle();\n\n\tconst [ selection, setSelection ] = useState( {} );\n\n\tconst { clearSelectedBlock, insertBlocks, insertDefaultBlock } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst decodedPlaceholder =\n\t\tdecodeEntities( placeholder ) || __( 'Add title' );\n\n\tconst {\n\t\tvalue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: title,\n\t\tonChange( newValue ) {\n\t\t\tonUpdate( newValue.replace( REGEXP_NEWLINES, ' ' ) );\n\t\t},\n\t\tplaceholder: decodedPlaceholder,\n\t\tselectionStart: selection.start,\n\t\tselectionEnd: selection.end,\n\t\tonSelectionChange( newStart, newEnd ) {\n\t\t\tsetSelection( ( sel ) => {\n\t\t\t\tconst { start, end } = sel;\n\t\t\t\tif ( start === newStart && end === newEnd ) {\n\t\t\t\t\treturn sel;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tstart: newStart,\n\t\t\t\t\tend: newEnd,\n\t\t\t\t};\n\t\t\t} );\n\t\t},\n\t\t__unstableDisableFormats: false,\n\t} );\n\n\tfunction onInsertBlockAfter( blocks ) {\n\t\tinsertBlocks( blocks, 0 );\n\t}\n\n\tfunction onSelect() {\n\t\tsetIsSelected( true );\n\t\tclearSelectedBlock();\n\t}\n\n\tfunction onUnselect() {\n\t\tsetIsSelected( false );\n\t\tsetSelection( {} );\n\t}\n\n\tfunction onEnterPress() {\n\t\tinsertDefaultBlock( undefined, undefined, 0 );\n\t}\n\n\tfunction onKeyDown( event ) {\n\t\tif ( event.keyCode === ENTER ) {\n\t\t\tevent.preventDefault();\n\t\t\tonEnterPress();\n\t\t}\n\t}\n\n\tfunction onPaste( event ) {\n\t\tconst clipboardData = event.clipboardData;\n\n\t\tlet plainText = '';\n\t\tlet html = '';\n\n\t\ttry {\n\t\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\t\thtml = clipboardData.getData( 'text/html' );\n\t\t} catch ( error ) {\n\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t// behaviour.\n\t\t\treturn;\n\t\t}\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t} );\n\n\t\tevent.preventDefault();\n\n\t\tif ( ! content.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( typeof content !== 'string' ) {\n\t\t\tconst [ firstBlock ] = content;\n\n\t\t\tif (\n\t\t\t\t! title &&\n\t\t\t\t( firstBlock.name === 'core/heading' ||\n\t\t\t\t\tfirstBlock.name === 'core/paragraph' )\n\t\t\t) {\n\t\t\t\t// Strip HTML to avoid unwanted HTML being added to the title.\n\t\t\t\t// In the majority of cases it is assumed that HTML in the title\n\t\t\t\t// is undesirable.\n\t\t\t\tconst contentNoHTML = stripHTML(\n\t\t\t\t\tfirstBlock.attributes.content\n\t\t\t\t);\n\t\t\t\tonUpdate( contentNoHTML );\n\t\t\t\tonInsertBlockAfter( content.slice( 1 ) );\n\t\t\t} else {\n\t\t\t\tonInsertBlockAfter( content );\n\t\t\t}\n\t\t} else {\n\t\t\t// Strip HTML to avoid unwanted HTML being added to the title.\n\t\t\t// In the majority of cases it is assumed that HTML in the title\n\t\t\t// is undesirable.\n\t\t\tconst contentNoHTML = stripHTML( content );\n\t\t\tonChange( insert( value, create( { html: contentNoHTML } ) ) );\n\t\t}\n\t}\n\n\t// The wp-block className is important for editor styles.\n\t// This same block is used in both the visual and the code editor.\n\tconst className = clsx( DEFAULT_CLASSNAMES, {\n\t\t'is-selected': isSelected,\n\t} );\n\n\t// Because the title is within the editor iframe, we can't use scss styles.\n\t// Instead use an inline style to dim the block when it's disabled.\n\tconst style = isEditingContentOnlySection ? { opacity: 0.2 } : undefined;\n\n\treturn (\n\t\t/* eslint-disable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */\n\t\t<h1\n\t\t\tref={ useMergeRefs( [ richTextRef, focusRef ] ) }\n\t\t\tcontentEditable={ ! isEditingContentOnlySection }\n\t\t\tclassName={ className }\n\t\t\taria-label={ decodedPlaceholder }\n\t\t\trole=\"textbox\"\n\t\t\taria-multiline=\"true\"\n\t\t\tonFocus={ onSelect }\n\t\t\tonBlur={ onUnselect }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t\tonPaste={ onPaste }\n\t\t\tstyle={ style }\n\t\t/>\n\t\t/* eslint-enable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */\n\t);\n} );\n\n/**\n * Renders the `PostTitle` component.\n *\n * @param {Object} _ Unused parameter.\n * @param {Element} forwardedRef Forwarded ref for the component.\n *\n * @return {React.ReactNode} The rendered PostTitle component.\n */\nexport default forwardRef( ( _, forwardedRef ) => (\n\t<PostTypeSupportCheck supportKeys=\"title\">\n\t\t<PostTitle ref={ forwardedRef } />\n\t</PostTypeSupportCheck>\n) );\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorStore", "usePostTitleFocus", "usePostTitle", "useRichText", "stripHTML", "clsx", "PostTypeSupportCheck"]
7
7
  }
@@ -48,6 +48,8 @@ var import_resizable_editor = __toESM(require("../resizable-editor"));
48
48
  var import_use_select_nearest_editable_block = __toESM(require("./use-select-nearest-editable-block"));
49
49
  var import_constants = require("../../store/constants");
50
50
  var import_use_zoom_out_mode_exit = require("./use-zoom-out-mode-exit");
51
+ var import_use_padding_appender = require("./use-padding-appender");
52
+ var import_use_edit_content_only_section_exit = require("./use-edit-content-only-section-exit");
51
53
  var import_jsx_runtime = require("react/jsx-runtime");
52
54
  var {
53
55
  LayoutStyle,
@@ -267,6 +269,9 @@ function VisualEditor({
267
269
  const scrollTop = ownerDocument.documentElement.scrollTop || ownerDocument.body.scrollTop;
268
270
  return canvasMinHeight + scrollTop;
269
271
  }, [canvasMinHeight]);
272
+ const [paddingAppenderRef, paddingStyle] = (0, import_use_padding_appender.usePaddingAppender)(
273
+ !isPreview && renderingMode === "post-only" && !isDesignPostType
274
+ );
270
275
  const iframeStyles = (0, import_element.useMemo)(() => {
271
276
  return [
272
277
  ...styles ?? [],
@@ -277,12 +282,13 @@ function VisualEditor({
277
282
  css: `:where(.block-editor-iframe__body){display:flow-root;${calculatedMinHeight ? `min-height:${calculatedMinHeight}px;` : ""}}.is-root-container{display:flow-root;${// Some themes will have `min-height: 100vh` for the root container,
278
283
  // which isn't a requirement in auto resize mode.
279
284
  enableResizing ? "min-height:0!important;" : ""}}
285
+ ${paddingStyle ? paddingStyle : ""}
280
286
  ${enableResizing ? `.block-editor-iframe__html{background:var(--wp-editor-canvas-background);display:flex;align-items:center;justify-content:center;min-height:100vh;}.block-editor-iframe__body{width:100%;}` : ""}`
281
287
  // The CSS above centers the body content vertically when resizing is enabled and applies a background
282
288
  // color to the iframe HTML element to match the background color of the editor canvas.
283
289
  }
284
290
  ];
285
- }, [styles, enableResizing, calculatedMinHeight]);
291
+ }, [styles, enableResizing, calculatedMinHeight, paddingStyle]);
286
292
  const typewriterRef = (0, import_block_editor.__unstableUseTypewriter)();
287
293
  contentRef = (0, import_compose.useMergeRefs)([
288
294
  localRef,
@@ -294,7 +300,9 @@ function VisualEditor({
294
300
  (0, import_use_select_nearest_editable_block.default)({
295
301
  isEnabled: renderingMode === "template-locked"
296
302
  }),
297
- (0, import_use_zoom_out_mode_exit.useZoomOutModeExit)()
303
+ (0, import_use_zoom_out_mode_exit.useZoomOutModeExit)(),
304
+ paddingAppenderRef,
305
+ (0, import_use_edit_content_only_section_exit.useEditContentOnlySectionExit)()
298
306
  ]);
299
307
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
300
308
  "div",