@wordpress/editor 13.26.0 → 13.27.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 (137) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/bindings/index.js +20 -0
  3. package/build/bindings/index.js.map +1 -0
  4. package/build/bindings/post-meta.js +52 -0
  5. package/build/bindings/post-meta.js.map +1 -0
  6. package/build/components/block-manager/category.js +106 -0
  7. package/build/components/block-manager/category.js.map +1 -0
  8. package/build/components/block-manager/checklist.js +35 -0
  9. package/build/components/block-manager/checklist.js.map +1 -0
  10. package/build/components/block-manager/index.js +130 -0
  11. package/build/components/block-manager/index.js.map +1 -0
  12. package/build/components/document-tools/index.js +58 -52
  13. package/build/components/document-tools/index.js.map +1 -1
  14. package/build/components/editor-canvas/index.js +4 -4
  15. package/build/components/editor-canvas/index.js.map +1 -1
  16. package/build/components/editor-notices/index.js +11 -11
  17. package/build/components/editor-notices/index.js.map +1 -1
  18. package/build/components/entities-saved-states/entity-type-list.js +38 -7
  19. package/build/components/entities-saved-states/entity-type-list.js.map +1 -1
  20. package/build/components/entities-saved-states/index.js +1 -1
  21. package/build/components/entities-saved-states/index.js.map +1 -1
  22. package/build/components/offline-status/index.native.js +1 -3
  23. package/build/components/offline-status/index.native.js.map +1 -1
  24. package/build/components/post-locked-modal/index.js +1 -1
  25. package/build/components/post-locked-modal/index.js.map +1 -1
  26. package/build/components/post-saved-state/index.js +10 -24
  27. package/build/components/post-saved-state/index.js.map +1 -1
  28. package/build/components/post-schedule/check.js +5 -16
  29. package/build/components/post-schedule/check.js.map +1 -1
  30. package/build/components/preferences-modal/enable-panel.js +42 -0
  31. package/build/components/preferences-modal/enable-panel.js.map +1 -0
  32. package/build/components/preferences-modal/enable-plugin-document-setting-panel.js +33 -0
  33. package/build/components/preferences-modal/enable-plugin-document-setting-panel.js.map +1 -0
  34. package/build/components/preferences-modal/index.js +186 -0
  35. package/build/components/preferences-modal/index.js.map +1 -0
  36. package/build/components/provider/disable-non-page-content-blocks.js +1 -4
  37. package/build/components/provider/disable-non-page-content-blocks.js.map +1 -1
  38. package/build/components/provider/use-block-editor-settings.js +34 -8
  39. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  40. package/build/hooks/pattern-partial-syncing.js +12 -8
  41. package/build/hooks/pattern-partial-syncing.js.map +1 -1
  42. package/build/index.js +1 -0
  43. package/build/index.js.map +1 -1
  44. package/build/private-apis.js +6 -2
  45. package/build/private-apis.js.map +1 -1
  46. package/build/store/defaults.js +2 -0
  47. package/build/store/defaults.js.map +1 -1
  48. package/build/store/private-actions.js +33 -1
  49. package/build/store/private-actions.js.map +1 -1
  50. package/build/store/private-selectors.js +1 -1
  51. package/build/store/private-selectors.js.map +1 -1
  52. package/build-module/bindings/index.js +15 -0
  53. package/build-module/bindings/index.js.map +1 -0
  54. package/build-module/bindings/post-meta.js +45 -0
  55. package/build-module/bindings/post-meta.js.map +1 -0
  56. package/build-module/components/block-manager/category.js +97 -0
  57. package/build-module/components/block-manager/category.js.map +1 -0
  58. package/build-module/components/block-manager/checklist.js +27 -0
  59. package/build-module/components/block-manager/checklist.js.map +1 -0
  60. package/build-module/components/block-manager/index.js +121 -0
  61. package/build-module/components/block-manager/index.js.map +1 -0
  62. package/build-module/components/document-tools/index.js +58 -52
  63. package/build-module/components/document-tools/index.js.map +1 -1
  64. package/build-module/components/editor-canvas/index.js +4 -4
  65. package/build-module/components/editor-canvas/index.js.map +1 -1
  66. package/build-module/components/editor-notices/index.js +12 -12
  67. package/build-module/components/editor-notices/index.js.map +1 -1
  68. package/build-module/components/entities-saved-states/entity-type-list.js +39 -8
  69. package/build-module/components/entities-saved-states/entity-type-list.js.map +1 -1
  70. package/build-module/components/entities-saved-states/index.js +1 -1
  71. package/build-module/components/entities-saved-states/index.js.map +1 -1
  72. package/build-module/components/offline-status/index.native.js +1 -3
  73. package/build-module/components/offline-status/index.native.js.map +1 -1
  74. package/build-module/components/post-locked-modal/index.js +1 -1
  75. package/build-module/components/post-locked-modal/index.js.map +1 -1
  76. package/build-module/components/post-saved-state/index.js +11 -25
  77. package/build-module/components/post-saved-state/index.js.map +1 -1
  78. package/build-module/components/post-schedule/check.js +6 -15
  79. package/build-module/components/post-schedule/check.js.map +1 -1
  80. package/build-module/components/preferences-modal/enable-panel.js +34 -0
  81. package/build-module/components/preferences-modal/enable-panel.js.map +1 -0
  82. package/build-module/components/preferences-modal/enable-plugin-document-setting-panel.js +24 -0
  83. package/build-module/components/preferences-modal/enable-plugin-document-setting-panel.js.map +1 -0
  84. package/build-module/components/preferences-modal/index.js +179 -0
  85. package/build-module/components/preferences-modal/index.js.map +1 -0
  86. package/build-module/components/provider/disable-non-page-content-blocks.js +1 -4
  87. package/build-module/components/provider/disable-non-page-content-blocks.js.map +1 -1
  88. package/build-module/components/provider/use-block-editor-settings.js +35 -9
  89. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  90. package/build-module/hooks/pattern-partial-syncing.js +12 -8
  91. package/build-module/hooks/pattern-partial-syncing.js.map +1 -1
  92. package/build-module/index.js +1 -0
  93. package/build-module/index.js.map +1 -1
  94. package/build-module/private-apis.js +6 -2
  95. package/build-module/private-apis.js.map +1 -1
  96. package/build-module/store/defaults.js +2 -0
  97. package/build-module/store/defaults.js.map +1 -1
  98. package/build-module/store/private-actions.js +29 -0
  99. package/build-module/store/private-actions.js.map +1 -1
  100. package/build-module/store/private-selectors.js +1 -1
  101. package/build-module/store/private-selectors.js.map +1 -1
  102. package/build-style/style-rtl.css +80 -12
  103. package/build-style/style.css +80 -12
  104. package/package.json +33 -33
  105. package/src/bindings/index.js +13 -0
  106. package/src/bindings/post-meta.js +42 -0
  107. package/src/components/block-manager/category.js +96 -0
  108. package/src/components/block-manager/checklist.js +30 -0
  109. package/src/components/block-manager/index.js +160 -0
  110. package/src/components/block-manager/style.scss +82 -0
  111. package/src/components/document-tools/index.js +9 -1
  112. package/src/components/editor-canvas/index.js +3 -2
  113. package/src/components/editor-notices/index.js +11 -12
  114. package/src/components/editor-notices/style.scss +0 -1
  115. package/src/components/entities-saved-states/entity-type-list.js +47 -5
  116. package/src/components/entities-saved-states/index.js +7 -7
  117. package/src/components/entities-saved-states/style.scss +4 -0
  118. package/src/components/offline-status/index.native.js +2 -4
  119. package/src/components/post-locked-modal/index.js +1 -1
  120. package/src/components/post-locked-modal/style.scss +0 -6
  121. package/src/components/post-saved-state/index.js +30 -47
  122. package/src/components/post-schedule/check.js +10 -14
  123. package/src/components/post-schedule/test/check.js +24 -9
  124. package/src/components/preferences-modal/enable-panel.js +30 -0
  125. package/src/components/preferences-modal/enable-plugin-document-setting-panel.js +23 -0
  126. package/src/components/preferences-modal/index.js +269 -0
  127. package/src/components/preferences-modal/test/index.js +28 -0
  128. package/src/components/provider/disable-non-page-content-blocks.js +3 -3
  129. package/src/components/provider/use-block-editor-settings.js +45 -17
  130. package/src/hooks/pattern-partial-syncing.js +26 -29
  131. package/src/index.js +1 -0
  132. package/src/private-apis.js +6 -2
  133. package/src/store/defaults.js +2 -0
  134. package/src/store/private-actions.js +49 -0
  135. package/src/store/private-selectors.js +1 -1
  136. package/src/style.scss +1 -1
  137. package/src/components/editor-canvas/style.scss +0 -5
@@ -0,0 +1,121 @@
1
+ import { createElement } from "react";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { store as blocksStore } from '@wordpress/blocks';
6
+ import { withSelect, withDispatch } from '@wordpress/data';
7
+ import { SearchControl, Button } from '@wordpress/components';
8
+ import { __, _n, sprintf } from '@wordpress/i18n';
9
+ import { useEffect, useState } from '@wordpress/element';
10
+ import { useDebounce, compose } from '@wordpress/compose';
11
+ import { speak } from '@wordpress/a11y';
12
+ import { store as preferencesStore } from '@wordpress/preferences';
13
+
14
+ /**
15
+ * Internal dependencies
16
+ */
17
+ import { unlock } from '../../lock-unlock';
18
+ import { store as editorStore } from '../../store';
19
+ import BlockManagerCategory from './category';
20
+ function BlockManager({
21
+ blockTypes,
22
+ categories,
23
+ hasBlockSupport,
24
+ isMatchingSearchTerm,
25
+ numberOfHiddenBlocks,
26
+ enableAllBlockTypes
27
+ }) {
28
+ const debouncedSpeak = useDebounce(speak, 500);
29
+ const [search, setSearch] = useState('');
30
+
31
+ // Filtering occurs here (as opposed to `withSelect`) to avoid
32
+ // wasted renders by consequence of `Array#filter` producing
33
+ // a new value reference on each call.
34
+ blockTypes = blockTypes.filter(blockType => hasBlockSupport(blockType, 'inserter', true) && (!search || isMatchingSearchTerm(blockType, search)) && (!blockType.parent || blockType.parent.includes('core/post-content')));
35
+
36
+ // Announce search results on change
37
+ useEffect(() => {
38
+ if (!search) {
39
+ return;
40
+ }
41
+ const count = blockTypes.length;
42
+ const resultsFoundMessage = sprintf( /* translators: %d: number of results. */
43
+ _n('%d result found.', '%d results found.', count), count);
44
+ debouncedSpeak(resultsFoundMessage);
45
+ }, [blockTypes.length, search, debouncedSpeak]);
46
+ return createElement("div", {
47
+ className: "editor-block-manager__content"
48
+ }, !!numberOfHiddenBlocks && createElement("div", {
49
+ className: "editor-block-manager__disabled-blocks-count"
50
+ }, sprintf( /* translators: %d: number of blocks. */
51
+ _n('%d block is hidden.', '%d blocks are hidden.', numberOfHiddenBlocks), numberOfHiddenBlocks), createElement(Button, {
52
+ variant: "link",
53
+ onClick: () => enableAllBlockTypes(blockTypes)
54
+ }, __('Reset'))), createElement(SearchControl, {
55
+ __nextHasNoMarginBottom: true,
56
+ label: __('Search for a block'),
57
+ placeholder: __('Search for a block'),
58
+ value: search,
59
+ onChange: nextSearch => setSearch(nextSearch),
60
+ className: "editor-block-manager__search"
61
+ }), createElement("div", {
62
+ tabIndex: "0",
63
+ role: "region",
64
+ "aria-label": __('Available block types'),
65
+ className: "editor-block-manager__results"
66
+ }, blockTypes.length === 0 && createElement("p", {
67
+ className: "editor-block-manager__no-results"
68
+ }, __('No blocks found.')), categories.map(category => createElement(BlockManagerCategory, {
69
+ key: category.slug,
70
+ title: category.title,
71
+ blockTypes: blockTypes.filter(blockType => blockType.category === category.slug)
72
+ })), createElement(BlockManagerCategory, {
73
+ title: __('Uncategorized'),
74
+ blockTypes: blockTypes.filter(({
75
+ category
76
+ }) => !category)
77
+ })));
78
+ }
79
+ export default compose([withSelect(select => {
80
+ var _get;
81
+ const {
82
+ getBlockTypes,
83
+ getCategories,
84
+ hasBlockSupport,
85
+ isMatchingSearchTerm
86
+ } = select(blocksStore);
87
+ const {
88
+ get
89
+ } = select(preferencesStore);
90
+
91
+ // Some hidden blocks become unregistered
92
+ // by removing for instance the plugin that registered them, yet
93
+ // they're still remain as hidden by the user's action.
94
+ // We consider "hidden", blocks which were hidden and
95
+ // are still registered.
96
+ const blockTypes = getBlockTypes();
97
+ const hiddenBlockTypes = ((_get = get('core', 'hiddenBlockTypes')) !== null && _get !== void 0 ? _get : []).filter(hiddenBlock => {
98
+ return blockTypes.some(registeredBlock => registeredBlock.name === hiddenBlock);
99
+ });
100
+ const numberOfHiddenBlocks = Array.isArray(hiddenBlockTypes) && hiddenBlockTypes.length;
101
+ return {
102
+ blockTypes,
103
+ categories: getCategories(),
104
+ hasBlockSupport,
105
+ isMatchingSearchTerm,
106
+ numberOfHiddenBlocks
107
+ };
108
+ }), withDispatch(dispatch => {
109
+ const {
110
+ showBlockTypes
111
+ } = unlock(dispatch(editorStore));
112
+ return {
113
+ enableAllBlockTypes: blockTypes => {
114
+ const blockNames = blockTypes.map(({
115
+ name
116
+ }) => name);
117
+ showBlockTypes(blockNames);
118
+ }
119
+ };
120
+ })])(BlockManager);
121
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["store","blocksStore","withSelect","withDispatch","SearchControl","Button","__","_n","sprintf","useEffect","useState","useDebounce","compose","speak","preferencesStore","unlock","editorStore","BlockManagerCategory","BlockManager","blockTypes","categories","hasBlockSupport","isMatchingSearchTerm","numberOfHiddenBlocks","enableAllBlockTypes","debouncedSpeak","search","setSearch","filter","blockType","parent","includes","count","length","resultsFoundMessage","createElement","className","variant","onClick","__nextHasNoMarginBottom","label","placeholder","value","onChange","nextSearch","tabIndex","role","map","category","key","slug","title","select","_get","getBlockTypes","getCategories","get","hiddenBlockTypes","hiddenBlock","some","registeredBlock","name","Array","isArray","dispatch","showBlockTypes","blockNames"],"sources":["@wordpress/editor/src/components/block-manager/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { SearchControl, Button } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport { useDebounce, compose } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\nimport BlockManagerCategory from './category';\n\nfunction BlockManager( {\n\tblockTypes,\n\tcategories,\n\thasBlockSupport,\n\tisMatchingSearchTerm,\n\tnumberOfHiddenBlocks,\n\tenableAllBlockTypes,\n} ) {\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst [ search, setSearch ] = useState( '' );\n\n\t// Filtering occurs here (as opposed to `withSelect`) to avoid\n\t// wasted renders by consequence of `Array#filter` producing\n\t// a new value reference on each call.\n\tblockTypes = blockTypes.filter(\n\t\t( blockType ) =>\n\t\t\thasBlockSupport( blockType, 'inserter', true ) &&\n\t\t\t( ! search || isMatchingSearchTerm( blockType, search ) ) &&\n\t\t\t( ! blockType.parent ||\n\t\t\t\tblockType.parent.includes( 'core/post-content' ) )\n\t);\n\n\t// Announce search results on change\n\tuseEffect( () => {\n\t\tif ( ! search ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = blockTypes.length;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage );\n\t}, [ blockTypes.length, search, debouncedSpeak ] );\n\n\treturn (\n\t\t<div className=\"editor-block-manager__content\">\n\t\t\t{ !! numberOfHiddenBlocks && (\n\t\t\t\t<div className=\"editor-block-manager__disabled-blocks-count\">\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t'%d block is hidden.',\n\t\t\t\t\t\t\t'%d blocks are hidden.',\n\t\t\t\t\t\t\tnumberOfHiddenBlocks\n\t\t\t\t\t\t),\n\t\t\t\t\t\tnumberOfHiddenBlocks\n\t\t\t\t\t) }\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\tonClick={ () => enableAllBlockTypes( blockTypes ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<SearchControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Search for a block' ) }\n\t\t\t\tplaceholder={ __( 'Search for a block' ) }\n\t\t\t\tvalue={ search }\n\t\t\t\tonChange={ ( nextSearch ) => setSearch( nextSearch ) }\n\t\t\t\tclassName=\"editor-block-manager__search\"\n\t\t\t/>\n\t\t\t<div\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"region\"\n\t\t\t\taria-label={ __( 'Available block types' ) }\n\t\t\t\tclassName=\"editor-block-manager__results\"\n\t\t\t>\n\t\t\t\t{ blockTypes.length === 0 && (\n\t\t\t\t\t<p className=\"editor-block-manager__no-results\">\n\t\t\t\t\t\t{ __( 'No blocks found.' ) }\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t<BlockManagerCategory\n\t\t\t\t\t\tkey={ category.slug }\n\t\t\t\t\t\ttitle={ category.title }\n\t\t\t\t\t\tblockTypes={ blockTypes.filter(\n\t\t\t\t\t\t\t( blockType ) =>\n\t\t\t\t\t\t\t\tblockType.category === category.slug\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t\t<BlockManagerCategory\n\t\t\t\t\ttitle={ __( 'Uncategorized' ) }\n\t\t\t\t\tblockTypes={ blockTypes.filter(\n\t\t\t\t\t\t( { category } ) => ! category\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockTypes,\n\t\t\tgetCategories,\n\t\t\thasBlockSupport,\n\t\t\tisMatchingSearchTerm,\n\t\t} = select( blocksStore );\n\t\tconst { get } = select( preferencesStore );\n\n\t\t// Some hidden blocks become unregistered\n\t\t// by removing for instance the plugin that registered them, yet\n\t\t// they're still remain as hidden by the user's action.\n\t\t// We consider \"hidden\", blocks which were hidden and\n\t\t// are still registered.\n\t\tconst blockTypes = getBlockTypes();\n\t\tconst hiddenBlockTypes = (\n\t\t\tget( 'core', 'hiddenBlockTypes' ) ?? []\n\t\t).filter( ( hiddenBlock ) => {\n\t\t\treturn blockTypes.some(\n\t\t\t\t( registeredBlock ) => registeredBlock.name === hiddenBlock\n\t\t\t);\n\t\t} );\n\t\tconst numberOfHiddenBlocks =\n\t\t\tArray.isArray( hiddenBlockTypes ) && hiddenBlockTypes.length;\n\n\t\treturn {\n\t\t\tblockTypes,\n\t\t\tcategories: getCategories(),\n\t\t\thasBlockSupport,\n\t\t\tisMatchingSearchTerm,\n\t\t\tnumberOfHiddenBlocks,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { showBlockTypes } = unlock( dispatch( editorStore ) );\n\t\treturn {\n\t\t\tenableAllBlockTypes: ( blockTypes ) => {\n\t\t\t\tconst blockNames = blockTypes.map( ( { name } ) => name );\n\t\t\t\tshowBlockTypes( blockNames );\n\t\t\t},\n\t\t};\n\t} ),\n] )( BlockManager );\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACxD,SAASC,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAC1D,SAASC,aAAa,EAAEC,MAAM,QAAQ,uBAAuB;AAC7D,SAASC,EAAE,EAAEC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AACjD,SAASC,SAAS,EAAEC,QAAQ,QAAQ,oBAAoB;AACxD,SAASC,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;AACzD,SAASC,KAAK,QAAQ,iBAAiB;AACvC,SAASb,KAAK,IAAIc,gBAAgB,QAAQ,wBAAwB;;AAElE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASf,KAAK,IAAIgB,WAAW,QAAQ,aAAa;AAClD,OAAOC,oBAAoB,MAAM,YAAY;AAE7C,SAASC,YAAYA,CAAE;EACtBC,UAAU;EACVC,UAAU;EACVC,eAAe;EACfC,oBAAoB;EACpBC,oBAAoB;EACpBC;AACD,CAAC,EAAG;EACH,MAAMC,cAAc,GAAGd,WAAW,CAAEE,KAAK,EAAE,GAAI,CAAC;EAChD,MAAM,CAAEa,MAAM,EAAEC,SAAS,CAAE,GAAGjB,QAAQ,CAAE,EAAG,CAAC;;EAE5C;EACA;EACA;EACAS,UAAU,GAAGA,UAAU,CAACS,MAAM,CAC3BC,SAAS,IACVR,eAAe,CAAEQ,SAAS,EAAE,UAAU,EAAE,IAAK,CAAC,KAC5C,CAAEH,MAAM,IAAIJ,oBAAoB,CAAEO,SAAS,EAAEH,MAAO,CAAC,CAAE,KACvD,CAAEG,SAAS,CAACC,MAAM,IACnBD,SAAS,CAACC,MAAM,CAACC,QAAQ,CAAE,mBAAoB,CAAC,CACnD,CAAC;;EAED;EACAtB,SAAS,CAAE,MAAM;IAChB,IAAK,CAAEiB,MAAM,EAAG;MACf;IACD;IACA,MAAMM,KAAK,GAAGb,UAAU,CAACc,MAAM;IAC/B,MAAMC,mBAAmB,GAAG1B,OAAO,EAClC;IACAD,EAAE,CAAE,kBAAkB,EAAE,mBAAmB,EAAEyB,KAAM,CAAC,EACpDA,KACD,CAAC;IACDP,cAAc,CAAES,mBAAoB,CAAC;EACtC,CAAC,EAAE,CAAEf,UAAU,CAACc,MAAM,EAAEP,MAAM,EAAED,cAAc,CAAG,CAAC;EAElD,OACCU,aAAA;IAAKC,SAAS,EAAC;EAA+B,GAC3C,CAAC,CAAEb,oBAAoB,IACxBY,aAAA;IAAKC,SAAS,EAAC;EAA6C,GACzD5B,OAAO,EACR;EACAD,EAAE,CACD,qBAAqB,EACrB,uBAAuB,EACvBgB,oBACD,CAAC,EACDA,oBACD,CAAC,EACDY,aAAA,CAAC9B,MAAM;IACNgC,OAAO,EAAC,MAAM;IACdC,OAAO,EAAGA,CAAA,KAAMd,mBAAmB,CAAEL,UAAW;EAAG,GAEjDb,EAAE,CAAE,OAAQ,CACP,CACJ,CACL,EACD6B,aAAA,CAAC/B,aAAa;IACbmC,uBAAuB;IACvBC,KAAK,EAAGlC,EAAE,CAAE,oBAAqB,CAAG;IACpCmC,WAAW,EAAGnC,EAAE,CAAE,oBAAqB,CAAG;IAC1CoC,KAAK,EAAGhB,MAAQ;IAChBiB,QAAQ,EAAKC,UAAU,IAAMjB,SAAS,CAAEiB,UAAW,CAAG;IACtDR,SAAS,EAAC;EAA8B,CACxC,CAAC,EACFD,aAAA;IACCU,QAAQ,EAAC,GAAG;IACZC,IAAI,EAAC,QAAQ;IACb,cAAaxC,EAAE,CAAE,uBAAwB,CAAG;IAC5C8B,SAAS,EAAC;EAA+B,GAEvCjB,UAAU,CAACc,MAAM,KAAK,CAAC,IACxBE,aAAA;IAAGC,SAAS,EAAC;EAAkC,GAC5C9B,EAAE,CAAE,kBAAmB,CACvB,CACH,EACCc,UAAU,CAAC2B,GAAG,CAAIC,QAAQ,IAC3Bb,aAAA,CAAClB,oBAAoB;IACpBgC,GAAG,EAAGD,QAAQ,CAACE,IAAM;IACrBC,KAAK,EAAGH,QAAQ,CAACG,KAAO;IACxBhC,UAAU,EAAGA,UAAU,CAACS,MAAM,CAC3BC,SAAS,IACVA,SAAS,CAACmB,QAAQ,KAAKA,QAAQ,CAACE,IAClC;EAAG,CACH,CACA,CAAC,EACHf,aAAA,CAAClB,oBAAoB;IACpBkC,KAAK,EAAG7C,EAAE,CAAE,eAAgB,CAAG;IAC/Ba,UAAU,EAAGA,UAAU,CAACS,MAAM,CAC7B,CAAE;MAAEoB;IAAS,CAAC,KAAM,CAAEA,QACvB;EAAG,CACH,CACG,CACD,CAAC;AAER;AAEA,eAAepC,OAAO,CAAE,CACvBV,UAAU,CAAIkD,MAAM,IAAM;EAAA,IAAAC,IAAA;EACzB,MAAM;IACLC,aAAa;IACbC,aAAa;IACblC,eAAe;IACfC;EACD,CAAC,GAAG8B,MAAM,CAAEnD,WAAY,CAAC;EACzB,MAAM;IAAEuD;EAAI,CAAC,GAAGJ,MAAM,CAAEtC,gBAAiB,CAAC;;EAE1C;EACA;EACA;EACA;EACA;EACA,MAAMK,UAAU,GAAGmC,aAAa,CAAC,CAAC;EAClC,MAAMG,gBAAgB,GAAG,EAAAJ,IAAA,GACxBG,GAAG,CAAE,MAAM,EAAE,kBAAmB,CAAC,cAAAH,IAAA,cAAAA,IAAA,GAAI,EAAE,EACtCzB,MAAM,CAAI8B,WAAW,IAAM;IAC5B,OAAOvC,UAAU,CAACwC,IAAI,CACnBC,eAAe,IAAMA,eAAe,CAACC,IAAI,KAAKH,WACjD,CAAC;EACF,CAAE,CAAC;EACH,MAAMnC,oBAAoB,GACzBuC,KAAK,CAACC,OAAO,CAAEN,gBAAiB,CAAC,IAAIA,gBAAgB,CAACxB,MAAM;EAE7D,OAAO;IACNd,UAAU;IACVC,UAAU,EAAEmC,aAAa,CAAC,CAAC;IAC3BlC,eAAe;IACfC,oBAAoB;IACpBC;EACD,CAAC;AACF,CAAE,CAAC,EACHpB,YAAY,CAAI6D,QAAQ,IAAM;EAC7B,MAAM;IAAEC;EAAe,CAAC,GAAGlD,MAAM,CAAEiD,QAAQ,CAAEhD,WAAY,CAAE,CAAC;EAC5D,OAAO;IACNQ,mBAAmB,EAAIL,UAAU,IAAM;MACtC,MAAM+C,UAAU,GAAG/C,UAAU,CAAC4B,GAAG,CAAE,CAAE;QAAEc;MAAK,CAAC,KAAMA,IAAK,CAAC;MACzDI,cAAc,CAAEC,UAAW,CAAC;IAC7B;EACD,CAAC;AACF,CAAE,CAAC,CACF,CAAC,CAAEhD,YAAa,CAAC"}
@@ -94,58 +94,64 @@ function DocumentTools({
94
94
  /* translators: button label text should, if possible, be under 16 characters. */
95
95
  const longLabel = _x('Toggle block inserter', 'Generic label for block inserter button');
96
96
  const shortLabel = !isInserterOpened ? __('Add') : __('Close');
97
- return createElement(NavigableToolbar, {
98
- className: classnames('editor-document-tools', className),
99
- "aria-label": toolbarAriaLabel,
100
- shouldUseKeyboardFocusShortcut: !blockToolbarCanBeFocused,
101
- variant: "unstyled"
102
- }, createElement("div", {
103
- className: "editor-document-tools__left"
104
- }, createElement(ToolbarItem, {
105
- ref: inserterButton,
106
- as: Button,
107
- className: "editor-document-tools__inserter-toggle",
108
- variant: "primary",
109
- isPressed: isInserterOpened,
110
- onMouseDown: preventDefault,
111
- onClick: toggleInserter,
112
- disabled: disableBlockTools,
113
- icon: plus,
114
- label: showIconLabels ? shortLabel : longLabel,
115
- showTooltip: !showIconLabels,
116
- "aria-expanded": isInserterOpened
117
- }), (isWideViewport || !showIconLabels) && createElement(Fragment, null, isLargeViewport && !hasFixedToolbar && createElement(ToolbarItem, {
118
- as: ToolSelector,
119
- showTooltip: !showIconLabels,
120
- variant: showIconLabels ? 'tertiary' : undefined,
121
- disabled: disableBlockTools,
122
- size: "compact"
123
- }), createElement(ToolbarItem, {
124
- as: EditorHistoryUndo,
125
- showTooltip: !showIconLabels,
126
- variant: showIconLabels ? 'tertiary' : undefined,
127
- size: "compact"
128
- }), createElement(ToolbarItem, {
129
- as: EditorHistoryRedo,
130
- showTooltip: !showIconLabels,
131
- variant: showIconLabels ? 'tertiary' : undefined,
132
- size: "compact"
133
- }), createElement(ToolbarItem, {
134
- as: Button,
135
- className: "editor-document-tools__document-overview-toggle",
136
- icon: listView,
137
- disabled: disableBlockTools,
138
- isPressed: isListViewOpen
139
- /* translators: button label text should, if possible, be under 16 characters. */,
140
- label: listViewLabel,
141
- onClick: toggleListView,
142
- shortcut: listViewShortcut,
143
- showTooltip: !showIconLabels,
144
- variant: showIconLabels ? 'tertiary' : undefined,
145
- "aria-expanded": isListViewOpen,
146
- ref: listViewToggleRef,
147
- size: "compact"
148
- })), children));
97
+ return (
98
+ // Some plugins expect and use the `edit-post-header-toolbar` CSS class to
99
+ // find the toolbar and inject UI elements into it. This is not officially
100
+ // supported, but we're keeping it in the list of class names for backwards
101
+ // compatibility.
102
+ createElement(NavigableToolbar, {
103
+ className: classnames('editor-document-tools', 'edit-post-header-toolbar', className),
104
+ "aria-label": toolbarAriaLabel,
105
+ shouldUseKeyboardFocusShortcut: !blockToolbarCanBeFocused,
106
+ variant: "unstyled"
107
+ }, createElement("div", {
108
+ className: "editor-document-tools__left"
109
+ }, createElement(ToolbarItem, {
110
+ ref: inserterButton,
111
+ as: Button,
112
+ className: "editor-document-tools__inserter-toggle",
113
+ variant: "primary",
114
+ isPressed: isInserterOpened,
115
+ onMouseDown: preventDefault,
116
+ onClick: toggleInserter,
117
+ disabled: disableBlockTools,
118
+ icon: plus,
119
+ label: showIconLabels ? shortLabel : longLabel,
120
+ showTooltip: !showIconLabels,
121
+ "aria-expanded": isInserterOpened
122
+ }), (isWideViewport || !showIconLabels) && createElement(Fragment, null, isLargeViewport && !hasFixedToolbar && createElement(ToolbarItem, {
123
+ as: ToolSelector,
124
+ showTooltip: !showIconLabels,
125
+ variant: showIconLabels ? 'tertiary' : undefined,
126
+ disabled: disableBlockTools,
127
+ size: "compact"
128
+ }), createElement(ToolbarItem, {
129
+ as: EditorHistoryUndo,
130
+ showTooltip: !showIconLabels,
131
+ variant: showIconLabels ? 'tertiary' : undefined,
132
+ size: "compact"
133
+ }), createElement(ToolbarItem, {
134
+ as: EditorHistoryRedo,
135
+ showTooltip: !showIconLabels,
136
+ variant: showIconLabels ? 'tertiary' : undefined,
137
+ size: "compact"
138
+ }), createElement(ToolbarItem, {
139
+ as: Button,
140
+ className: "editor-document-tools__document-overview-toggle",
141
+ icon: listView,
142
+ disabled: disableBlockTools,
143
+ isPressed: isListViewOpen
144
+ /* translators: button label text should, if possible, be under 16 characters. */,
145
+ label: listViewLabel,
146
+ onClick: toggleListView,
147
+ shortcut: listViewShortcut,
148
+ showTooltip: !showIconLabels,
149
+ variant: showIconLabels ? 'tertiary' : undefined,
150
+ "aria-expanded": isListViewOpen,
151
+ ref: listViewToggleRef,
152
+ size: "compact"
153
+ })), children))
154
+ );
149
155
  }
150
156
  export default DocumentTools;
151
157
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useViewportMatch","useSelect","useDispatch","__","_x","NavigableToolbar","ToolSelector","store","blockEditorStore","privateApis","blockEditorPrivateApis","Button","ToolbarItem","listView","plus","useRef","useCallback","keyboardShortcutsStore","preferencesStore","unlock","editorStore","EditorHistoryRedo","EditorHistoryUndo","useCanBlockToolbarBeFocused","preventDefault","event","DocumentTools","className","disableBlockTools","children","listViewLabel","inserterButton","setIsInserterOpened","setIsListViewOpened","isInserterOpened","isListViewOpen","listViewShortcut","listViewToggleRef","hasFixedToolbar","showIconLabels","select","getSettings","get","isListViewOpened","getListViewToggleRef","getShortcutRepresentation","isLargeViewport","isWideViewport","blockToolbarCanBeFocused","toolbarAriaLabel","toggleListView","toggleInserter","current","focus","longLabel","shortLabel","createElement","shouldUseKeyboardFocusShortcut","variant","ref","as","isPressed","onMouseDown","onClick","disabled","icon","label","showTooltip","Fragment","undefined","size","shortcut"],"sources":["@wordpress/editor/src/components/document-tools/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tNavigableToolbar,\n\tToolSelector,\n\tstore as blockEditorStore,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { Button, ToolbarItem } from '@wordpress/components';\nimport { listView, plus } from '@wordpress/icons';\nimport { useRef, useCallback } from '@wordpress/element';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\nimport EditorHistoryRedo from '../editor-history/redo';\nimport EditorHistoryUndo from '../editor-history/undo';\n\nconst { useCanBlockToolbarBeFocused } = unlock( blockEditorPrivateApis );\n\nconst preventDefault = ( event ) => {\n\tevent.preventDefault();\n};\n\nfunction DocumentTools( {\n\tclassName,\n\tdisableBlockTools = false,\n\tchildren,\n\t// This is a temporary prop until the list view is fully unified between post and site editors.\n\tlistViewLabel = __( 'Document Overview' ),\n} ) {\n\tconst inserterButton = useRef();\n\tconst { setIsInserterOpened, setIsListViewOpened } =\n\t\tuseDispatch( editorStore );\n\tconst {\n\t\tisInserterOpened,\n\t\tisListViewOpen,\n\t\tlistViewShortcut,\n\t\tlistViewToggleRef,\n\t\thasFixedToolbar,\n\t\tshowIconLabels,\n\t} = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { get } = select( preferencesStore );\n\t\tconst { isListViewOpened, getListViewToggleRef } = unlock(\n\t\t\tselect( editorStore )\n\t\t);\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\n\t\treturn {\n\t\t\tisInserterOpened: select( editorStore ).isInserterOpened(),\n\t\t\tisListViewOpen: isListViewOpened(),\n\t\t\tlistViewShortcut: getShortcutRepresentation(\n\t\t\t\t'core/editor/toggle-list-view'\n\t\t\t),\n\t\t\tlistViewToggleRef: getListViewToggleRef(),\n\t\t\thasFixedToolbar: getSettings().hasFixedToolbar,\n\t\t\tshowIconLabels: get( 'core', 'showIconLabels' ),\n\t\t};\n\t}, [] );\n\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isWideViewport = useViewportMatch( 'wide' );\n\tconst blockToolbarCanBeFocused = useCanBlockToolbarBeFocused();\n\n\t/* translators: accessibility text for the editor toolbar */\n\tconst toolbarAriaLabel = __( 'Document tools' );\n\n\tconst toggleListView = useCallback(\n\t\t() => setIsListViewOpened( ! isListViewOpen ),\n\t\t[ setIsListViewOpened, isListViewOpen ]\n\t);\n\n\tconst toggleInserter = useCallback( () => {\n\t\tif ( isInserterOpened ) {\n\t\t\t// Focusing the inserter button should close the inserter popover.\n\t\t\t// However, there are some cases it won't close when the focus is lost.\n\t\t\t// See https://github.com/WordPress/gutenberg/issues/43090 for more details.\n\t\t\tinserterButton.current.focus();\n\t\t\tsetIsInserterOpened( false );\n\t\t} else {\n\t\t\tsetIsInserterOpened( true );\n\t\t}\n\t}, [ isInserterOpened, setIsInserterOpened ] );\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst longLabel = _x(\n\t\t'Toggle block inserter',\n\t\t'Generic label for block inserter button'\n\t);\n\tconst shortLabel = ! isInserterOpened ? __( 'Add' ) : __( 'Close' );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tclassName={ classnames( 'editor-document-tools', className ) }\n\t\t\taria-label={ toolbarAriaLabel }\n\t\t\tshouldUseKeyboardFocusShortcut={ ! blockToolbarCanBeFocused }\n\t\t\tvariant=\"unstyled\"\n\t\t>\n\t\t\t<div className=\"editor-document-tools__left\">\n\t\t\t\t<ToolbarItem\n\t\t\t\t\tref={ inserterButton }\n\t\t\t\t\tas={ Button }\n\t\t\t\t\tclassName=\"editor-document-tools__inserter-toggle\"\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tisPressed={ isInserterOpened }\n\t\t\t\t\tonMouseDown={ preventDefault }\n\t\t\t\t\tonClick={ toggleInserter }\n\t\t\t\t\tdisabled={ disableBlockTools }\n\t\t\t\t\ticon={ plus }\n\t\t\t\t\tlabel={ showIconLabels ? shortLabel : longLabel }\n\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\taria-expanded={ isInserterOpened }\n\t\t\t\t/>\n\t\t\t\t{ ( isWideViewport || ! showIconLabels ) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ isLargeViewport && ! hasFixedToolbar && (\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ ToolSelector }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ disableBlockTools }\n\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\tas={ EditorHistoryUndo }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\tas={ EditorHistoryRedo }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tclassName=\"editor-document-tools__document-overview-toggle\"\n\t\t\t\t\t\t\ticon={ listView }\n\t\t\t\t\t\t\tdisabled={ disableBlockTools }\n\t\t\t\t\t\t\tisPressed={ isListViewOpen }\n\t\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\t\tlabel={ listViewLabel }\n\t\t\t\t\t\t\tonClick={ toggleListView }\n\t\t\t\t\t\t\tshortcut={ listViewShortcut }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t\taria-expanded={ isListViewOpen }\n\t\t\t\t\t\t\tref={ listViewToggleRef }\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\nexport default DocumentTools;\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","useViewportMatch","useSelect","useDispatch","__","_x","NavigableToolbar","ToolSelector","store","blockEditorStore","privateApis","blockEditorPrivateApis","Button","ToolbarItem","listView","plus","useRef","useCallback","keyboardShortcutsStore","preferencesStore","unlock","editorStore","EditorHistoryRedo","EditorHistoryUndo","useCanBlockToolbarBeFocused","preventDefault","event","DocumentTools","className","disableBlockTools","children","listViewLabel","inserterButton","setIsInserterOpened","setIsListViewOpened","isInserterOpened","isListViewOpen","listViewShortcut","listViewToggleRef","hasFixedToolbar","showIconLabels","select","getSettings","get","isListViewOpened","getListViewToggleRef","getShortcutRepresentation","isLargeViewport","isWideViewport","blockToolbarCanBeFocused","toolbarAriaLabel","toggleListView","toggleInserter","current","focus","longLabel","shortLabel","createElement","shouldUseKeyboardFocusShortcut","variant","ref","as","isPressed","onMouseDown","onClick","disabled","icon","label","showTooltip","Fragment","undefined","size","shortcut"],"sources":["@wordpress/editor/src/components/document-tools/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tNavigableToolbar,\n\tToolSelector,\n\tstore as blockEditorStore,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { Button, ToolbarItem } from '@wordpress/components';\nimport { listView, plus } from '@wordpress/icons';\nimport { useRef, useCallback } from '@wordpress/element';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\nimport EditorHistoryRedo from '../editor-history/redo';\nimport EditorHistoryUndo from '../editor-history/undo';\n\nconst { useCanBlockToolbarBeFocused } = unlock( blockEditorPrivateApis );\n\nconst preventDefault = ( event ) => {\n\tevent.preventDefault();\n};\n\nfunction DocumentTools( {\n\tclassName,\n\tdisableBlockTools = false,\n\tchildren,\n\t// This is a temporary prop until the list view is fully unified between post and site editors.\n\tlistViewLabel = __( 'Document Overview' ),\n} ) {\n\tconst inserterButton = useRef();\n\tconst { setIsInserterOpened, setIsListViewOpened } =\n\t\tuseDispatch( editorStore );\n\tconst {\n\t\tisInserterOpened,\n\t\tisListViewOpen,\n\t\tlistViewShortcut,\n\t\tlistViewToggleRef,\n\t\thasFixedToolbar,\n\t\tshowIconLabels,\n\t} = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { get } = select( preferencesStore );\n\t\tconst { isListViewOpened, getListViewToggleRef } = unlock(\n\t\t\tselect( editorStore )\n\t\t);\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\n\t\treturn {\n\t\t\tisInserterOpened: select( editorStore ).isInserterOpened(),\n\t\t\tisListViewOpen: isListViewOpened(),\n\t\t\tlistViewShortcut: getShortcutRepresentation(\n\t\t\t\t'core/editor/toggle-list-view'\n\t\t\t),\n\t\t\tlistViewToggleRef: getListViewToggleRef(),\n\t\t\thasFixedToolbar: getSettings().hasFixedToolbar,\n\t\t\tshowIconLabels: get( 'core', 'showIconLabels' ),\n\t\t};\n\t}, [] );\n\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isWideViewport = useViewportMatch( 'wide' );\n\tconst blockToolbarCanBeFocused = useCanBlockToolbarBeFocused();\n\n\t/* translators: accessibility text for the editor toolbar */\n\tconst toolbarAriaLabel = __( 'Document tools' );\n\n\tconst toggleListView = useCallback(\n\t\t() => setIsListViewOpened( ! isListViewOpen ),\n\t\t[ setIsListViewOpened, isListViewOpen ]\n\t);\n\n\tconst toggleInserter = useCallback( () => {\n\t\tif ( isInserterOpened ) {\n\t\t\t// Focusing the inserter button should close the inserter popover.\n\t\t\t// However, there are some cases it won't close when the focus is lost.\n\t\t\t// See https://github.com/WordPress/gutenberg/issues/43090 for more details.\n\t\t\tinserterButton.current.focus();\n\t\t\tsetIsInserterOpened( false );\n\t\t} else {\n\t\t\tsetIsInserterOpened( true );\n\t\t}\n\t}, [ isInserterOpened, setIsInserterOpened ] );\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst longLabel = _x(\n\t\t'Toggle block inserter',\n\t\t'Generic label for block inserter button'\n\t);\n\tconst shortLabel = ! isInserterOpened ? __( 'Add' ) : __( 'Close' );\n\n\treturn (\n\t\t// Some plugins expect and use the `edit-post-header-toolbar` CSS class to\n\t\t// find the toolbar and inject UI elements into it. This is not officially\n\t\t// supported, but we're keeping it in the list of class names for backwards\n\t\t// compatibility.\n\t\t<NavigableToolbar\n\t\t\tclassName={ classnames(\n\t\t\t\t'editor-document-tools',\n\t\t\t\t'edit-post-header-toolbar',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\taria-label={ toolbarAriaLabel }\n\t\t\tshouldUseKeyboardFocusShortcut={ ! blockToolbarCanBeFocused }\n\t\t\tvariant=\"unstyled\"\n\t\t>\n\t\t\t<div className=\"editor-document-tools__left\">\n\t\t\t\t<ToolbarItem\n\t\t\t\t\tref={ inserterButton }\n\t\t\t\t\tas={ Button }\n\t\t\t\t\tclassName=\"editor-document-tools__inserter-toggle\"\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tisPressed={ isInserterOpened }\n\t\t\t\t\tonMouseDown={ preventDefault }\n\t\t\t\t\tonClick={ toggleInserter }\n\t\t\t\t\tdisabled={ disableBlockTools }\n\t\t\t\t\ticon={ plus }\n\t\t\t\t\tlabel={ showIconLabels ? shortLabel : longLabel }\n\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\taria-expanded={ isInserterOpened }\n\t\t\t\t/>\n\t\t\t\t{ ( isWideViewport || ! showIconLabels ) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ isLargeViewport && ! hasFixedToolbar && (\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ ToolSelector }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ disableBlockTools }\n\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\tas={ EditorHistoryUndo }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\tas={ EditorHistoryRedo }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tclassName=\"editor-document-tools__document-overview-toggle\"\n\t\t\t\t\t\t\ticon={ listView }\n\t\t\t\t\t\t\tdisabled={ disableBlockTools }\n\t\t\t\t\t\t\tisPressed={ isListViewOpen }\n\t\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\t\tlabel={ listViewLabel }\n\t\t\t\t\t\t\tonClick={ toggleListView }\n\t\t\t\t\t\t\tshortcut={ listViewShortcut }\n\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t\taria-expanded={ isListViewOpen }\n\t\t\t\t\t\t\tref={ listViewToggleRef }\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\nexport default DocumentTools;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,EAAE,EAAEC,EAAE,QAAQ,iBAAiB;AACxC,SACCC,gBAAgB,EAChBC,YAAY,EACZC,KAAK,IAAIC,gBAAgB,EACzBC,WAAW,IAAIC,sBAAsB,QAC/B,yBAAyB;AAChC,SAASC,MAAM,EAAEC,WAAW,QAAQ,uBAAuB;AAC3D,SAASC,QAAQ,EAAEC,IAAI,QAAQ,kBAAkB;AACjD,SAASC,MAAM,EAAEC,WAAW,QAAQ,oBAAoB;AACxD,SAAST,KAAK,IAAIU,sBAAsB,QAAQ,+BAA+B;AAC/E,SAASV,KAAK,IAAIW,gBAAgB,QAAQ,wBAAwB;;AAElE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASZ,KAAK,IAAIa,WAAW,QAAQ,aAAa;AAClD,OAAOC,iBAAiB,MAAM,wBAAwB;AACtD,OAAOC,iBAAiB,MAAM,wBAAwB;AAEtD,MAAM;EAAEC;AAA4B,CAAC,GAAGJ,MAAM,CAAET,sBAAuB,CAAC;AAExE,MAAMc,cAAc,GAAKC,KAAK,IAAM;EACnCA,KAAK,CAACD,cAAc,CAAC,CAAC;AACvB,CAAC;AAED,SAASE,aAAaA,CAAE;EACvBC,SAAS;EACTC,iBAAiB,GAAG,KAAK;EACzBC,QAAQ;EACR;EACAC,aAAa,GAAG3B,EAAE,CAAE,mBAAoB;AACzC,CAAC,EAAG;EACH,MAAM4B,cAAc,GAAGhB,MAAM,CAAC,CAAC;EAC/B,MAAM;IAAEiB,mBAAmB;IAAEC;EAAoB,CAAC,GACjD/B,WAAW,CAAEkB,WAAY,CAAC;EAC3B,MAAM;IACLc,gBAAgB;IAChBC,cAAc;IACdC,gBAAgB;IAChBC,iBAAiB;IACjBC,eAAe;IACfC;EACD,CAAC,GAAGtC,SAAS,CAAIuC,MAAM,IAAM;IAC5B,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEhC,gBAAiB,CAAC;IAClD,MAAM;MAAEkC;IAAI,CAAC,GAAGF,MAAM,CAAEtB,gBAAiB,CAAC;IAC1C,MAAM;MAAEyB,gBAAgB;MAAEC;IAAqB,CAAC,GAAGzB,MAAM,CACxDqB,MAAM,CAAEpB,WAAY,CACrB,CAAC;IACD,MAAM;MAAEyB;IAA0B,CAAC,GAAGL,MAAM,CAAEvB,sBAAuB,CAAC;IAEtE,OAAO;MACNiB,gBAAgB,EAAEM,MAAM,CAAEpB,WAAY,CAAC,CAACc,gBAAgB,CAAC,CAAC;MAC1DC,cAAc,EAAEQ,gBAAgB,CAAC,CAAC;MAClCP,gBAAgB,EAAES,yBAAyB,CAC1C,8BACD,CAAC;MACDR,iBAAiB,EAAEO,oBAAoB,CAAC,CAAC;MACzCN,eAAe,EAAEG,WAAW,CAAC,CAAC,CAACH,eAAe;MAC9CC,cAAc,EAAEG,GAAG,CAAE,MAAM,EAAE,gBAAiB;IAC/C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMI,eAAe,GAAG9C,gBAAgB,CAAE,QAAS,CAAC;EACpD,MAAM+C,cAAc,GAAG/C,gBAAgB,CAAE,MAAO,CAAC;EACjD,MAAMgD,wBAAwB,GAAGzB,2BAA2B,CAAC,CAAC;;EAE9D;EACA,MAAM0B,gBAAgB,GAAG9C,EAAE,CAAE,gBAAiB,CAAC;EAE/C,MAAM+C,cAAc,GAAGlC,WAAW,CACjC,MAAMiB,mBAAmB,CAAE,CAAEE,cAAe,CAAC,EAC7C,CAAEF,mBAAmB,EAAEE,cAAc,CACtC,CAAC;EAED,MAAMgB,cAAc,GAAGnC,WAAW,CAAE,MAAM;IACzC,IAAKkB,gBAAgB,EAAG;MACvB;MACA;MACA;MACAH,cAAc,CAACqB,OAAO,CAACC,KAAK,CAAC,CAAC;MAC9BrB,mBAAmB,CAAE,KAAM,CAAC;IAC7B,CAAC,MAAM;MACNA,mBAAmB,CAAE,IAAK,CAAC;IAC5B;EACD,CAAC,EAAE,CAAEE,gBAAgB,EAAEF,mBAAmB,CAAG,CAAC;;EAE9C;EACA,MAAMsB,SAAS,GAAGlD,EAAE,CACnB,uBAAuB,EACvB,yCACD,CAAC;EACD,MAAMmD,UAAU,GAAG,CAAErB,gBAAgB,GAAG/B,EAAE,CAAE,KAAM,CAAC,GAAGA,EAAE,CAAE,OAAQ,CAAC;EAEnE;IACC;IACA;IACA;IACA;IACAqD,aAAA,CAACnD,gBAAgB;MAChBsB,SAAS,EAAG5B,UAAU,CACrB,uBAAuB,EACvB,0BAA0B,EAC1B4B,SACD,CAAG;MACH,cAAasB,gBAAkB;MAC/BQ,8BAA8B,EAAG,CAAET,wBAA0B;MAC7DU,OAAO,EAAC;IAAU,GAElBF,aAAA;MAAK7B,SAAS,EAAC;IAA6B,GAC3C6B,aAAA,CAAC5C,WAAW;MACX+C,GAAG,EAAG5B,cAAgB;MACtB6B,EAAE,EAAGjD,MAAQ;MACbgB,SAAS,EAAC,wCAAwC;MAClD+B,OAAO,EAAC,SAAS;MACjBG,SAAS,EAAG3B,gBAAkB;MAC9B4B,WAAW,EAAGtC,cAAgB;MAC9BuC,OAAO,EAAGZ,cAAgB;MAC1Ba,QAAQ,EAAGpC,iBAAmB;MAC9BqC,IAAI,EAAGnD,IAAM;MACboD,KAAK,EAAG3B,cAAc,GAAGgB,UAAU,GAAGD,SAAW;MACjDa,WAAW,EAAG,CAAE5B,cAAgB;MAChC,iBAAgBL;IAAkB,CAClC,CAAC,EACA,CAAEa,cAAc,IAAI,CAAER,cAAc,KACrCiB,aAAA,CAAAY,QAAA,QACGtB,eAAe,IAAI,CAAER,eAAe,IACrCkB,aAAA,CAAC5C,WAAW;MACXgD,EAAE,EAAGtD,YAAc;MACnB6D,WAAW,EAAG,CAAE5B,cAAgB;MAChCmB,OAAO,EACNnB,cAAc,GAAG,UAAU,GAAG8B,SAC9B;MACDL,QAAQ,EAAGpC,iBAAmB;MAC9B0C,IAAI,EAAC;IAAS,CACd,CACD,EACDd,aAAA,CAAC5C,WAAW;MACXgD,EAAE,EAAGtC,iBAAmB;MACxB6C,WAAW,EAAG,CAAE5B,cAAgB;MAChCmB,OAAO,EAAGnB,cAAc,GAAG,UAAU,GAAG8B,SAAW;MACnDC,IAAI,EAAC;IAAS,CACd,CAAC,EACFd,aAAA,CAAC5C,WAAW;MACXgD,EAAE,EAAGvC,iBAAmB;MACxB8C,WAAW,EAAG,CAAE5B,cAAgB;MAChCmB,OAAO,EAAGnB,cAAc,GAAG,UAAU,GAAG8B,SAAW;MACnDC,IAAI,EAAC;IAAS,CACd,CAAC,EACFd,aAAA,CAAC5C,WAAW;MACXgD,EAAE,EAAGjD,MAAQ;MACbgB,SAAS,EAAC,iDAAiD;MAC3DsC,IAAI,EAAGpD,QAAU;MACjBmD,QAAQ,EAAGpC,iBAAmB;MAC9BiC,SAAS,EAAG1B;MACZ;MACA+B,KAAK,EAAGpC,aAAe;MACvBiC,OAAO,EAAGb,cAAgB;MAC1BqB,QAAQ,EAAGnC,gBAAkB;MAC7B+B,WAAW,EAAG,CAAE5B,cAAgB;MAChCmB,OAAO,EAAGnB,cAAc,GAAG,UAAU,GAAG8B,SAAW;MACnD,iBAAgBlC,cAAgB;MAChCwB,GAAG,EAAGtB,iBAAmB;MACzBiC,IAAI,EAAC;IAAS,CACd,CACA,CACF,EACCzC,QACE,CACY;EAAC;AAErB;AAEA,eAAeH,aAAa"}
@@ -7,7 +7,7 @@ import classnames from 'classnames';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { BlockList, store as blockEditorStore, __unstableUseTypewriter as useTypewriter, __unstableUseTypingObserver as useTypingObserver, useSettings, __experimentalRecursionProvider as RecursionProvider, privateApis as blockEditorPrivateApis, __experimentalUseResizeCanvas as useResizeCanvas } from '@wordpress/block-editor';
10
+ import { BlockList, store as blockEditorStore, __unstableUseTypewriter as useTypewriter, __unstableUseTypingObserver as useTypingObserver, useSettings, RecursionProvider, privateApis as blockEditorPrivateApis, __experimentalUseResizeCanvas as useResizeCanvas } from '@wordpress/block-editor';
11
11
  import { useEffect, useRef, useMemo } from '@wordpress/element';
12
12
  import { useSelect } from '@wordpress/data';
13
13
  import { parse } from '@wordpress/blocks';
@@ -272,9 +272,9 @@ function EditorCanvas({
272
272
  blockName: wrapperBlockName,
273
273
  uniqueId: wrapperUniqueId
274
274
  }, createElement(BlockList, {
275
- className: classnames(className, 'is-' + deviceType.toLowerCase() + '-preview', renderingMode !== 'post-only' ? 'wp-site-blocks' : `${blockListLayoutClass} wp-block-post-content` // Ensure root level blocks receive default/flow blockGap styling rules.
276
- ),
277
-
275
+ className: classnames(className, 'is-' + deviceType.toLowerCase() + '-preview', renderingMode !== 'post-only' ? 'wp-site-blocks' : `${blockListLayoutClass} wp-block-post-content`,
276
+ // Ensure root level blocks receive default/flow blockGap styling rules.
277
+ renderingMode !== 'all' && 'is-' + renderingMode),
278
278
  layout: blockListLayout,
279
279
  dropZoneElement:
280
280
  // When iframed, pass in the html element of the iframe to
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","BlockList","store","blockEditorStore","__unstableUseTypewriter","useTypewriter","__unstableUseTypingObserver","useTypingObserver","useSettings","__experimentalRecursionProvider","RecursionProvider","privateApis","blockEditorPrivateApis","__experimentalUseResizeCanvas","useResizeCanvas","useEffect","useRef","useMemo","useSelect","parse","coreStore","useMergeRefs","PostTitle","editorStore","unlock","EditTemplateBlocksNotification","LayoutStyle","useLayoutClasses","useLayoutStyles","ExperimentalBlockCanvas","BlockCanvas","noop","getPostContentAttributes","blocks","i","length","name","attributes","innerBlocks","nestedPostContent","checkForPostContentAtRootLevel","EditorCanvas","autoFocus","className","renderAppender","styles","disableIframe","iframeProps","children","renderingMode","postContentAttributes","editedPostTemplate","wrapperBlockName","wrapperUniqueId","deviceType","hasHistory","select","getCurrentPostId","getCurrentPostType","getCurrentTemplateId","getEditorSettings","getRenderingMode","getDeviceType","getPostType","canUser","getEditedEntityRecord","postTypeSlug","_renderingMode","_wrapperBlockName","editorSettings","supportsTemplateMode","postType","canEditTemplate","currentTemplateId","template","undefined","viewable","goBack","isCleanNewPost","hasRootPaddingAwareAlignments","themeHasDisabledLayoutStyles","themeSupportsLayout","_settings","getSettings","disableLayoutStyles","supportsLayout","__experimentalFeatures","useRootPaddingAwareAlignments","deviceStyles","globalLayoutSettings","fallbackLayout","type","newestPostContentAttributes","content","parseableContent","hasPostContentAtRootLevel","layout","align","postContentLayoutClasses","blockListLayoutClass","postContentLayoutStyles","postContentLayout","inherit","contentSize","wideSize","blockListLayout","postEditorLayout","observeTypingRef","titleRef","current","focus","alignCSS","localRef","typewriterRef","contentRef","createElement","shouldIframe","includes","height","style","Fragment","selector","css","contentEditable","ref","marginTop","blockName","uniqueId","toLowerCase","dropZoneElement","parentNode"],"sources":["@wordpress/editor/src/components/editor-canvas/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBlockList,\n\tstore as blockEditorStore,\n\t__unstableUseTypewriter as useTypewriter,\n\t__unstableUseTypingObserver as useTypingObserver,\n\tuseSettings,\n\t__experimentalRecursionProvider as RecursionProvider,\n\tprivateApis as blockEditorPrivateApis,\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { parse } from '@wordpress/blocks';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PostTitle from '../post-title';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport EditTemplateBlocksNotification from './edit-template-blocks-notification';\n\nconst {\n\tLayoutStyle,\n\tuseLayoutClasses,\n\tuseLayoutStyles,\n\tExperimentalBlockCanvas: BlockCanvas,\n} = unlock( blockEditorPrivateApis );\n\nconst noop = () => {};\n\n/**\n * Given an array of nested blocks, find the first Post Content\n * block inside it, recursing through any nesting levels,\n * and return its attributes.\n *\n * @param {Array} blocks A list of blocks.\n *\n * @return {Object | undefined} The Post Content block.\n */\nfunction getPostContentAttributes( blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tif ( blocks[ i ].name === 'core/post-content' ) {\n\t\t\treturn blocks[ i ].attributes;\n\t\t}\n\t\tif ( blocks[ i ].innerBlocks.length ) {\n\t\t\tconst nestedPostContent = getPostContentAttributes(\n\t\t\t\tblocks[ i ].innerBlocks\n\t\t\t);\n\n\t\t\tif ( nestedPostContent ) {\n\t\t\t\treturn nestedPostContent;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction checkForPostContentAtRootLevel( blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tif ( blocks[ i ].name === 'core/post-content' ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction EditorCanvas( {\n\t// Ideally as we unify post and site editors, we won't need these props.\n\tautoFocus,\n\tclassName,\n\trenderAppender,\n\tstyles,\n\tdisableIframe = false,\n\tiframeProps,\n\tchildren,\n} ) {\n\tconst {\n\t\trenderingMode,\n\t\tpostContentAttributes,\n\t\teditedPostTemplate = {},\n\t\twrapperBlockName,\n\t\twrapperUniqueId,\n\t\tdeviceType,\n\t\thasHistory,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetCurrentPostId,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentTemplateId,\n\t\t\tgetEditorSettings,\n\t\t\tgetRenderingMode,\n\t\t\tgetDeviceType,\n\t\t} = select( editorStore );\n\t\tconst { getPostType, canUser, getEditedEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst postTypeSlug = getCurrentPostType();\n\t\tconst _renderingMode = getRenderingMode();\n\t\tlet _wrapperBlockName;\n\n\t\tif ( postTypeSlug === 'wp_block' ) {\n\t\t\t_wrapperBlockName = 'core/block';\n\t\t} else if ( ! _renderingMode === 'post-only' ) {\n\t\t\t_wrapperBlockName = 'core/post-content';\n\t\t}\n\n\t\tconst editorSettings = getEditorSettings();\n\t\tconst supportsTemplateMode = editorSettings.supportsTemplateMode;\n\t\tconst postType = getPostType( postTypeSlug );\n\t\tconst canEditTemplate = canUser( 'create', 'templates' );\n\t\tconst currentTemplateId = getCurrentTemplateId();\n\t\tconst template = currentTemplateId\n\t\t\t? getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_template',\n\t\t\t\t\tcurrentTemplateId\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\trenderingMode: _renderingMode,\n\t\t\tpostContentAttributes: editorSettings.postContentAttributes,\n\t\t\t// Post template fetch returns a 404 on classic themes, which\n\t\t\t// messes with e2e tests, so check it's a block theme first.\n\t\t\teditedPostTemplate:\n\t\t\t\tpostType?.viewable && supportsTemplateMode && canEditTemplate\n\t\t\t\t\t? template\n\t\t\t\t\t: undefined,\n\t\t\twrapperBlockName: _wrapperBlockName,\n\t\t\twrapperUniqueId: getCurrentPostId(),\n\t\t\tdeviceType: getDeviceType(),\n\t\t\thasHistory: !! editorSettings.goBack,\n\t\t};\n\t}, [] );\n\tconst { isCleanNewPost } = useSelect( editorStore );\n\tconst {\n\t\thasRootPaddingAwareAlignments,\n\t\tthemeHasDisabledLayoutStyles,\n\t\tthemeSupportsLayout,\n\t} = useSelect( ( select ) => {\n\t\tconst _settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tthemeHasDisabledLayoutStyles: _settings.disableLayoutStyles,\n\t\t\tthemeSupportsLayout: _settings.supportsLayout,\n\t\t\thasRootPaddingAwareAlignments:\n\t\t\t\t_settings.__experimentalFeatures?.useRootPaddingAwareAlignments,\n\t\t};\n\t}, [] );\n\n\tconst deviceStyles = useResizeCanvas( deviceType );\n\tconst [ globalLayoutSettings ] = useSettings( 'layout' );\n\n\t// fallbackLayout is used if there is no Post Content,\n\t// and for Post Title.\n\tconst fallbackLayout = useMemo( () => {\n\t\tif ( renderingMode !== 'post-only' ) {\n\t\t\treturn { type: 'default' };\n\t\t}\n\n\t\tif ( themeSupportsLayout ) {\n\t\t\t// We need to ensure support for wide and full alignments,\n\t\t\t// so we add the constrained type.\n\t\t\treturn { ...globalLayoutSettings, type: 'constrained' };\n\t\t}\n\t\t// Set default layout for classic themes so all alignments are supported.\n\t\treturn { type: 'default' };\n\t}, [ renderingMode, themeSupportsLayout, globalLayoutSettings ] );\n\n\tconst newestPostContentAttributes = useMemo( () => {\n\t\tif (\n\t\t\t! editedPostTemplate?.content &&\n\t\t\t! editedPostTemplate?.blocks &&\n\t\t\tpostContentAttributes\n\t\t) {\n\t\t\treturn postContentAttributes;\n\t\t}\n\t\t// When in template editing mode, we can access the blocks directly.\n\t\tif ( editedPostTemplate?.blocks ) {\n\t\t\treturn getPostContentAttributes( editedPostTemplate?.blocks );\n\t\t}\n\t\t// If there are no blocks, we have to parse the content string.\n\t\t// Best double-check it's a string otherwise the parse function gets unhappy.\n\t\tconst parseableContent =\n\t\t\ttypeof editedPostTemplate?.content === 'string'\n\t\t\t\t? editedPostTemplate?.content\n\t\t\t\t: '';\n\n\t\treturn getPostContentAttributes( parse( parseableContent ) ) || {};\n\t}, [\n\t\teditedPostTemplate?.content,\n\t\teditedPostTemplate?.blocks,\n\t\tpostContentAttributes,\n\t] );\n\n\tconst hasPostContentAtRootLevel = useMemo( () => {\n\t\tif ( ! editedPostTemplate?.content && ! editedPostTemplate?.blocks ) {\n\t\t\treturn false;\n\t\t}\n\t\t// When in template editing mode, we can access the blocks directly.\n\t\tif ( editedPostTemplate?.blocks ) {\n\t\t\treturn checkForPostContentAtRootLevel( editedPostTemplate?.blocks );\n\t\t}\n\t\t// If there are no blocks, we have to parse the content string.\n\t\t// Best double-check it's a string otherwise the parse function gets unhappy.\n\t\tconst parseableContent =\n\t\t\ttypeof editedPostTemplate?.content === 'string'\n\t\t\t\t? editedPostTemplate?.content\n\t\t\t\t: '';\n\n\t\treturn (\n\t\t\tcheckForPostContentAtRootLevel( parse( parseableContent ) ) || false\n\t\t);\n\t}, [ editedPostTemplate?.content, editedPostTemplate?.blocks ] );\n\n\tconst { layout = {}, align = '' } = newestPostContentAttributes || {};\n\n\tconst postContentLayoutClasses = useLayoutClasses(\n\t\tnewestPostContentAttributes,\n\t\t'core/post-content'\n\t);\n\n\tconst blockListLayoutClass = classnames(\n\t\t{\n\t\t\t'is-layout-flow': ! themeSupportsLayout,\n\t\t},\n\t\tthemeSupportsLayout && postContentLayoutClasses,\n\t\talign && `align${ align }`\n\t);\n\n\tconst postContentLayoutStyles = useLayoutStyles(\n\t\tnewestPostContentAttributes,\n\t\t'core/post-content',\n\t\t'.block-editor-block-list__layout.is-root-container'\n\t);\n\n\t// Update type for blocks using legacy layouts.\n\tconst postContentLayout = useMemo( () => {\n\t\treturn layout &&\n\t\t\t( layout?.type === 'constrained' ||\n\t\t\t\tlayout?.inherit ||\n\t\t\t\tlayout?.contentSize ||\n\t\t\t\tlayout?.wideSize )\n\t\t\t? { ...globalLayoutSettings, ...layout, type: 'constrained' }\n\t\t\t: { ...globalLayoutSettings, ...layout, type: 'default' };\n\t}, [\n\t\tlayout?.type,\n\t\tlayout?.inherit,\n\t\tlayout?.contentSize,\n\t\tlayout?.wideSize,\n\t\tglobalLayoutSettings,\n\t] );\n\n\t// If there is a Post Content block we use its layout for the block list;\n\t// if not, this must be a classic theme, in which case we use the fallback layout.\n\tconst blockListLayout = postContentAttributes\n\t\t? postContentLayout\n\t\t: fallbackLayout;\n\n\tconst postEditorLayout =\n\t\tblockListLayout?.type === 'default' && ! hasPostContentAtRootLevel\n\t\t\t? fallbackLayout\n\t\t\t: blockListLayout;\n\n\tconst observeTypingRef = useTypingObserver();\n\tconst titleRef = useRef();\n\tuseEffect( () => {\n\t\tif ( ! autoFocus || ! isCleanNewPost() ) {\n\t\t\treturn;\n\t\t}\n\t\ttitleRef?.current?.focus();\n\t}, [ autoFocus, isCleanNewPost ] );\n\n\t// Add some styles for alignwide/alignfull Post Content and its children.\n\tconst alignCSS = `.is-root-container.alignwide { max-width: var(--wp--style--global--wide-size); margin-left: auto; margin-right: auto;}\n\t\t.is-root-container.alignwide:where(.is-layout-flow) > :not(.alignleft):not(.alignright) { max-width: var(--wp--style--global--wide-size);}\n\t\t.is-root-container.alignfull { max-width: none; margin-left: auto; margin-right: auto;}\n\t\t.is-root-container.alignfull:where(.is-layout-flow) > :not(.alignleft):not(.alignright) { max-width: none;}`;\n\n\tconst localRef = useRef();\n\tconst typewriterRef = useTypewriter();\n\tconst contentRef = useMergeRefs( [\n\t\tlocalRef,\n\t\trenderingMode === 'post-only' ? typewriterRef : noop,\n\t] );\n\n\treturn (\n\t\t<BlockCanvas\n\t\t\tshouldIframe={\n\t\t\t\t! disableIframe || [ 'Tablet', 'Mobile' ].includes( deviceType )\n\t\t\t}\n\t\t\tcontentRef={ contentRef }\n\t\t\tstyles={ styles }\n\t\t\theight=\"100%\"\n\t\t\tiframeProps={ {\n\t\t\t\tclassName: classnames( 'editor-canvas__iframe', {\n\t\t\t\t\t'has-history': hasHistory,\n\t\t\t\t} ),\n\t\t\t\t...iframeProps,\n\t\t\t\tstyle: {\n\t\t\t\t\t...iframeProps?.style,\n\t\t\t\t\t...deviceStyles,\n\t\t\t\t},\n\t\t\t} }\n\t\t>\n\t\t\t{ themeSupportsLayout &&\n\t\t\t\t! themeHasDisabledLayoutStyles &&\n\t\t\t\trenderingMode === 'post-only' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\tselector=\".editor-editor-canvas__post-title-wrapper\"\n\t\t\t\t\t\t\tlayout={ fallbackLayout }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\tselector=\".block-editor-block-list__layout.is-root-container\"\n\t\t\t\t\t\t\tlayout={ postEditorLayout }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ align && <LayoutStyle css={ alignCSS } /> }\n\t\t\t\t\t\t{ postContentLayoutStyles && (\n\t\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\t\tlayout={ postContentLayout }\n\t\t\t\t\t\t\t\tcss={ postContentLayoutStyles }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t{ renderingMode === 'post-only' && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'editor-editor-canvas__post-title-wrapper',\n\t\t\t\t\t\t// The following class is only here for backward comapatibility\n\t\t\t\t\t\t// some themes might be using it to style the post title.\n\t\t\t\t\t\t'edit-post-visual-editor__post-title-wrapper',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-global-padding': hasRootPaddingAwareAlignments,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tcontentEditable={ false }\n\t\t\t\t\tref={ observeTypingRef }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t// This is using inline styles\n\t\t\t\t\t\t// so it's applied for both iframed and non iframed editors.\n\t\t\t\t\t\tmarginTop: '4rem',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<PostTitle ref={ titleRef } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<RecursionProvider\n\t\t\t\tblockName={ wrapperBlockName }\n\t\t\t\tuniqueId={ wrapperUniqueId }\n\t\t\t>\n\t\t\t\t<BlockList\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t'is-' + deviceType.toLowerCase() + '-preview',\n\t\t\t\t\t\trenderingMode !== 'post-only'\n\t\t\t\t\t\t\t? 'wp-site-blocks'\n\t\t\t\t\t\t\t: `${ blockListLayoutClass } wp-block-post-content` // Ensure root level blocks receive default/flow blockGap styling rules.\n\t\t\t\t\t) }\n\t\t\t\t\tlayout={ blockListLayout }\n\t\t\t\t\tdropZoneElement={\n\t\t\t\t\t\t// When iframed, pass in the html element of the iframe to\n\t\t\t\t\t\t// ensure the drop zone extends to the edges of the iframe.\n\t\t\t\t\t\tdisableIframe\n\t\t\t\t\t\t\t? localRef.current\n\t\t\t\t\t\t\t: localRef.current?.parentNode\n\t\t\t\t\t}\n\t\t\t\t\trenderAppender={ renderAppender }\n\t\t\t\t/>\n\t\t\t\t<EditTemplateBlocksNotification contentRef={ localRef } />\n\t\t\t</RecursionProvider>\n\t\t\t{ children }\n\t\t</BlockCanvas>\n\t);\n}\n\nexport default EditorCanvas;\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","BlockList","store","blockEditorStore","__unstableUseTypewriter","useTypewriter","__unstableUseTypingObserver","useTypingObserver","useSettings","RecursionProvider","privateApis","blockEditorPrivateApis","__experimentalUseResizeCanvas","useResizeCanvas","useEffect","useRef","useMemo","useSelect","parse","coreStore","useMergeRefs","PostTitle","editorStore","unlock","EditTemplateBlocksNotification","LayoutStyle","useLayoutClasses","useLayoutStyles","ExperimentalBlockCanvas","BlockCanvas","noop","getPostContentAttributes","blocks","i","length","name","attributes","innerBlocks","nestedPostContent","checkForPostContentAtRootLevel","EditorCanvas","autoFocus","className","renderAppender","styles","disableIframe","iframeProps","children","renderingMode","postContentAttributes","editedPostTemplate","wrapperBlockName","wrapperUniqueId","deviceType","hasHistory","select","getCurrentPostId","getCurrentPostType","getCurrentTemplateId","getEditorSettings","getRenderingMode","getDeviceType","getPostType","canUser","getEditedEntityRecord","postTypeSlug","_renderingMode","_wrapperBlockName","editorSettings","supportsTemplateMode","postType","canEditTemplate","currentTemplateId","template","undefined","viewable","goBack","isCleanNewPost","hasRootPaddingAwareAlignments","themeHasDisabledLayoutStyles","themeSupportsLayout","_settings","getSettings","disableLayoutStyles","supportsLayout","__experimentalFeatures","useRootPaddingAwareAlignments","deviceStyles","globalLayoutSettings","fallbackLayout","type","newestPostContentAttributes","content","parseableContent","hasPostContentAtRootLevel","layout","align","postContentLayoutClasses","blockListLayoutClass","postContentLayoutStyles","postContentLayout","inherit","contentSize","wideSize","blockListLayout","postEditorLayout","observeTypingRef","titleRef","current","focus","alignCSS","localRef","typewriterRef","contentRef","createElement","shouldIframe","includes","height","style","Fragment","selector","css","contentEditable","ref","marginTop","blockName","uniqueId","toLowerCase","dropZoneElement","parentNode"],"sources":["@wordpress/editor/src/components/editor-canvas/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBlockList,\n\tstore as blockEditorStore,\n\t__unstableUseTypewriter as useTypewriter,\n\t__unstableUseTypingObserver as useTypingObserver,\n\tuseSettings,\n\tRecursionProvider,\n\tprivateApis as blockEditorPrivateApis,\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { parse } from '@wordpress/blocks';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PostTitle from '../post-title';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport EditTemplateBlocksNotification from './edit-template-blocks-notification';\n\nconst {\n\tLayoutStyle,\n\tuseLayoutClasses,\n\tuseLayoutStyles,\n\tExperimentalBlockCanvas: BlockCanvas,\n} = unlock( blockEditorPrivateApis );\n\nconst noop = () => {};\n\n/**\n * Given an array of nested blocks, find the first Post Content\n * block inside it, recursing through any nesting levels,\n * and return its attributes.\n *\n * @param {Array} blocks A list of blocks.\n *\n * @return {Object | undefined} The Post Content block.\n */\nfunction getPostContentAttributes( blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tif ( blocks[ i ].name === 'core/post-content' ) {\n\t\t\treturn blocks[ i ].attributes;\n\t\t}\n\t\tif ( blocks[ i ].innerBlocks.length ) {\n\t\t\tconst nestedPostContent = getPostContentAttributes(\n\t\t\t\tblocks[ i ].innerBlocks\n\t\t\t);\n\n\t\t\tif ( nestedPostContent ) {\n\t\t\t\treturn nestedPostContent;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction checkForPostContentAtRootLevel( blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tif ( blocks[ i ].name === 'core/post-content' ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction EditorCanvas( {\n\t// Ideally as we unify post and site editors, we won't need these props.\n\tautoFocus,\n\tclassName,\n\trenderAppender,\n\tstyles,\n\tdisableIframe = false,\n\tiframeProps,\n\tchildren,\n} ) {\n\tconst {\n\t\trenderingMode,\n\t\tpostContentAttributes,\n\t\teditedPostTemplate = {},\n\t\twrapperBlockName,\n\t\twrapperUniqueId,\n\t\tdeviceType,\n\t\thasHistory,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetCurrentPostId,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentTemplateId,\n\t\t\tgetEditorSettings,\n\t\t\tgetRenderingMode,\n\t\t\tgetDeviceType,\n\t\t} = select( editorStore );\n\t\tconst { getPostType, canUser, getEditedEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst postTypeSlug = getCurrentPostType();\n\t\tconst _renderingMode = getRenderingMode();\n\t\tlet _wrapperBlockName;\n\n\t\tif ( postTypeSlug === 'wp_block' ) {\n\t\t\t_wrapperBlockName = 'core/block';\n\t\t} else if ( ! _renderingMode === 'post-only' ) {\n\t\t\t_wrapperBlockName = 'core/post-content';\n\t\t}\n\n\t\tconst editorSettings = getEditorSettings();\n\t\tconst supportsTemplateMode = editorSettings.supportsTemplateMode;\n\t\tconst postType = getPostType( postTypeSlug );\n\t\tconst canEditTemplate = canUser( 'create', 'templates' );\n\t\tconst currentTemplateId = getCurrentTemplateId();\n\t\tconst template = currentTemplateId\n\t\t\t? getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_template',\n\t\t\t\t\tcurrentTemplateId\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\trenderingMode: _renderingMode,\n\t\t\tpostContentAttributes: editorSettings.postContentAttributes,\n\t\t\t// Post template fetch returns a 404 on classic themes, which\n\t\t\t// messes with e2e tests, so check it's a block theme first.\n\t\t\teditedPostTemplate:\n\t\t\t\tpostType?.viewable && supportsTemplateMode && canEditTemplate\n\t\t\t\t\t? template\n\t\t\t\t\t: undefined,\n\t\t\twrapperBlockName: _wrapperBlockName,\n\t\t\twrapperUniqueId: getCurrentPostId(),\n\t\t\tdeviceType: getDeviceType(),\n\t\t\thasHistory: !! editorSettings.goBack,\n\t\t};\n\t}, [] );\n\tconst { isCleanNewPost } = useSelect( editorStore );\n\tconst {\n\t\thasRootPaddingAwareAlignments,\n\t\tthemeHasDisabledLayoutStyles,\n\t\tthemeSupportsLayout,\n\t} = useSelect( ( select ) => {\n\t\tconst _settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tthemeHasDisabledLayoutStyles: _settings.disableLayoutStyles,\n\t\t\tthemeSupportsLayout: _settings.supportsLayout,\n\t\t\thasRootPaddingAwareAlignments:\n\t\t\t\t_settings.__experimentalFeatures?.useRootPaddingAwareAlignments,\n\t\t};\n\t}, [] );\n\n\tconst deviceStyles = useResizeCanvas( deviceType );\n\tconst [ globalLayoutSettings ] = useSettings( 'layout' );\n\n\t// fallbackLayout is used if there is no Post Content,\n\t// and for Post Title.\n\tconst fallbackLayout = useMemo( () => {\n\t\tif ( renderingMode !== 'post-only' ) {\n\t\t\treturn { type: 'default' };\n\t\t}\n\n\t\tif ( themeSupportsLayout ) {\n\t\t\t// We need to ensure support for wide and full alignments,\n\t\t\t// so we add the constrained type.\n\t\t\treturn { ...globalLayoutSettings, type: 'constrained' };\n\t\t}\n\t\t// Set default layout for classic themes so all alignments are supported.\n\t\treturn { type: 'default' };\n\t}, [ renderingMode, themeSupportsLayout, globalLayoutSettings ] );\n\n\tconst newestPostContentAttributes = useMemo( () => {\n\t\tif (\n\t\t\t! editedPostTemplate?.content &&\n\t\t\t! editedPostTemplate?.blocks &&\n\t\t\tpostContentAttributes\n\t\t) {\n\t\t\treturn postContentAttributes;\n\t\t}\n\t\t// When in template editing mode, we can access the blocks directly.\n\t\tif ( editedPostTemplate?.blocks ) {\n\t\t\treturn getPostContentAttributes( editedPostTemplate?.blocks );\n\t\t}\n\t\t// If there are no blocks, we have to parse the content string.\n\t\t// Best double-check it's a string otherwise the parse function gets unhappy.\n\t\tconst parseableContent =\n\t\t\ttypeof editedPostTemplate?.content === 'string'\n\t\t\t\t? editedPostTemplate?.content\n\t\t\t\t: '';\n\n\t\treturn getPostContentAttributes( parse( parseableContent ) ) || {};\n\t}, [\n\t\teditedPostTemplate?.content,\n\t\teditedPostTemplate?.blocks,\n\t\tpostContentAttributes,\n\t] );\n\n\tconst hasPostContentAtRootLevel = useMemo( () => {\n\t\tif ( ! editedPostTemplate?.content && ! editedPostTemplate?.blocks ) {\n\t\t\treturn false;\n\t\t}\n\t\t// When in template editing mode, we can access the blocks directly.\n\t\tif ( editedPostTemplate?.blocks ) {\n\t\t\treturn checkForPostContentAtRootLevel( editedPostTemplate?.blocks );\n\t\t}\n\t\t// If there are no blocks, we have to parse the content string.\n\t\t// Best double-check it's a string otherwise the parse function gets unhappy.\n\t\tconst parseableContent =\n\t\t\ttypeof editedPostTemplate?.content === 'string'\n\t\t\t\t? editedPostTemplate?.content\n\t\t\t\t: '';\n\n\t\treturn (\n\t\t\tcheckForPostContentAtRootLevel( parse( parseableContent ) ) || false\n\t\t);\n\t}, [ editedPostTemplate?.content, editedPostTemplate?.blocks ] );\n\n\tconst { layout = {}, align = '' } = newestPostContentAttributes || {};\n\n\tconst postContentLayoutClasses = useLayoutClasses(\n\t\tnewestPostContentAttributes,\n\t\t'core/post-content'\n\t);\n\n\tconst blockListLayoutClass = classnames(\n\t\t{\n\t\t\t'is-layout-flow': ! themeSupportsLayout,\n\t\t},\n\t\tthemeSupportsLayout && postContentLayoutClasses,\n\t\talign && `align${ align }`\n\t);\n\n\tconst postContentLayoutStyles = useLayoutStyles(\n\t\tnewestPostContentAttributes,\n\t\t'core/post-content',\n\t\t'.block-editor-block-list__layout.is-root-container'\n\t);\n\n\t// Update type for blocks using legacy layouts.\n\tconst postContentLayout = useMemo( () => {\n\t\treturn layout &&\n\t\t\t( layout?.type === 'constrained' ||\n\t\t\t\tlayout?.inherit ||\n\t\t\t\tlayout?.contentSize ||\n\t\t\t\tlayout?.wideSize )\n\t\t\t? { ...globalLayoutSettings, ...layout, type: 'constrained' }\n\t\t\t: { ...globalLayoutSettings, ...layout, type: 'default' };\n\t}, [\n\t\tlayout?.type,\n\t\tlayout?.inherit,\n\t\tlayout?.contentSize,\n\t\tlayout?.wideSize,\n\t\tglobalLayoutSettings,\n\t] );\n\n\t// If there is a Post Content block we use its layout for the block list;\n\t// if not, this must be a classic theme, in which case we use the fallback layout.\n\tconst blockListLayout = postContentAttributes\n\t\t? postContentLayout\n\t\t: fallbackLayout;\n\n\tconst postEditorLayout =\n\t\tblockListLayout?.type === 'default' && ! hasPostContentAtRootLevel\n\t\t\t? fallbackLayout\n\t\t\t: blockListLayout;\n\n\tconst observeTypingRef = useTypingObserver();\n\tconst titleRef = useRef();\n\tuseEffect( () => {\n\t\tif ( ! autoFocus || ! isCleanNewPost() ) {\n\t\t\treturn;\n\t\t}\n\t\ttitleRef?.current?.focus();\n\t}, [ autoFocus, isCleanNewPost ] );\n\n\t// Add some styles for alignwide/alignfull Post Content and its children.\n\tconst alignCSS = `.is-root-container.alignwide { max-width: var(--wp--style--global--wide-size); margin-left: auto; margin-right: auto;}\n\t\t.is-root-container.alignwide:where(.is-layout-flow) > :not(.alignleft):not(.alignright) { max-width: var(--wp--style--global--wide-size);}\n\t\t.is-root-container.alignfull { max-width: none; margin-left: auto; margin-right: auto;}\n\t\t.is-root-container.alignfull:where(.is-layout-flow) > :not(.alignleft):not(.alignright) { max-width: none;}`;\n\n\tconst localRef = useRef();\n\tconst typewriterRef = useTypewriter();\n\tconst contentRef = useMergeRefs( [\n\t\tlocalRef,\n\t\trenderingMode === 'post-only' ? typewriterRef : noop,\n\t] );\n\n\treturn (\n\t\t<BlockCanvas\n\t\t\tshouldIframe={\n\t\t\t\t! disableIframe || [ 'Tablet', 'Mobile' ].includes( deviceType )\n\t\t\t}\n\t\t\tcontentRef={ contentRef }\n\t\t\tstyles={ styles }\n\t\t\theight=\"100%\"\n\t\t\tiframeProps={ {\n\t\t\t\tclassName: classnames( 'editor-canvas__iframe', {\n\t\t\t\t\t'has-history': hasHistory,\n\t\t\t\t} ),\n\t\t\t\t...iframeProps,\n\t\t\t\tstyle: {\n\t\t\t\t\t...iframeProps?.style,\n\t\t\t\t\t...deviceStyles,\n\t\t\t\t},\n\t\t\t} }\n\t\t>\n\t\t\t{ themeSupportsLayout &&\n\t\t\t\t! themeHasDisabledLayoutStyles &&\n\t\t\t\trenderingMode === 'post-only' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\tselector=\".editor-editor-canvas__post-title-wrapper\"\n\t\t\t\t\t\t\tlayout={ fallbackLayout }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\tselector=\".block-editor-block-list__layout.is-root-container\"\n\t\t\t\t\t\t\tlayout={ postEditorLayout }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ align && <LayoutStyle css={ alignCSS } /> }\n\t\t\t\t\t\t{ postContentLayoutStyles && (\n\t\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\t\tlayout={ postContentLayout }\n\t\t\t\t\t\t\t\tcss={ postContentLayoutStyles }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t{ renderingMode === 'post-only' && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'editor-editor-canvas__post-title-wrapper',\n\t\t\t\t\t\t// The following class is only here for backward comapatibility\n\t\t\t\t\t\t// some themes might be using it to style the post title.\n\t\t\t\t\t\t'edit-post-visual-editor__post-title-wrapper',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-global-padding': hasRootPaddingAwareAlignments,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tcontentEditable={ false }\n\t\t\t\t\tref={ observeTypingRef }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t// This is using inline styles\n\t\t\t\t\t\t// so it's applied for both iframed and non iframed editors.\n\t\t\t\t\t\tmarginTop: '4rem',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<PostTitle ref={ titleRef } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<RecursionProvider\n\t\t\t\tblockName={ wrapperBlockName }\n\t\t\t\tuniqueId={ wrapperUniqueId }\n\t\t\t>\n\t\t\t\t<BlockList\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t'is-' + deviceType.toLowerCase() + '-preview',\n\t\t\t\t\t\trenderingMode !== 'post-only'\n\t\t\t\t\t\t\t? 'wp-site-blocks'\n\t\t\t\t\t\t\t: `${ blockListLayoutClass } wp-block-post-content`, // Ensure root level blocks receive default/flow blockGap styling rules.\n\t\t\t\t\t\trenderingMode !== 'all' && 'is-' + renderingMode\n\t\t\t\t\t) }\n\t\t\t\t\tlayout={ blockListLayout }\n\t\t\t\t\tdropZoneElement={\n\t\t\t\t\t\t// When iframed, pass in the html element of the iframe to\n\t\t\t\t\t\t// ensure the drop zone extends to the edges of the iframe.\n\t\t\t\t\t\tdisableIframe\n\t\t\t\t\t\t\t? localRef.current\n\t\t\t\t\t\t\t: localRef.current?.parentNode\n\t\t\t\t\t}\n\t\t\t\t\trenderAppender={ renderAppender }\n\t\t\t\t/>\n\t\t\t\t<EditTemplateBlocksNotification contentRef={ localRef } />\n\t\t\t</RecursionProvider>\n\t\t\t{ children }\n\t\t</BlockCanvas>\n\t);\n}\n\nexport default EditorCanvas;\n"],"mappings":"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"}
@@ -3,18 +3,22 @@ import { createElement, Fragment } from "react";
3
3
  * WordPress dependencies
4
4
  */
5
5
  import { NoticeList } from '@wordpress/components';
6
- import { withSelect, withDispatch } from '@wordpress/data';
7
- import { compose } from '@wordpress/compose';
6
+ import { useDispatch, useSelect } from '@wordpress/data';
8
7
  import { store as noticesStore } from '@wordpress/notices';
9
8
 
10
9
  /**
11
10
  * Internal dependencies
12
11
  */
13
12
  import TemplateValidationNotice from '../template-validation-notice';
14
- export function EditorNotices({
15
- notices,
16
- onRemove
17
- }) {
13
+ export function EditorNotices() {
14
+ const {
15
+ notices
16
+ } = useSelect(select => ({
17
+ notices: select(noticesStore).getNotices()
18
+ }), []);
19
+ const {
20
+ removeNotice
21
+ } = useDispatch(noticesStore);
18
22
  const dismissibleNotices = notices.filter(({
19
23
  isDismissible,
20
24
  type
@@ -29,12 +33,8 @@ export function EditorNotices({
29
33
  }), createElement(NoticeList, {
30
34
  notices: dismissibleNotices,
31
35
  className: "components-editor-notices__dismissible",
32
- onRemove: onRemove
36
+ onRemove: removeNotice
33
37
  }, createElement(TemplateValidationNotice, null)));
34
38
  }
35
- export default compose([withSelect(select => ({
36
- notices: select(noticesStore).getNotices()
37
- })), withDispatch(dispatch => ({
38
- onRemove: dispatch(noticesStore).removeNotice
39
- }))])(EditorNotices);
39
+ export default EditorNotices;
40
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NoticeList","withSelect","withDispatch","compose","store","noticesStore","TemplateValidationNotice","EditorNotices","notices","onRemove","dismissibleNotices","filter","isDismissible","type","nonDismissibleNotices","createElement","Fragment","className","select","getNotices","dispatch","removeNotice"],"sources":["@wordpress/editor/src/components/editor-notices/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { NoticeList } from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport TemplateValidationNotice from '../template-validation-notice';\n\nexport function EditorNotices( { notices, onRemove } ) {\n\tconst dismissibleNotices = notices.filter(\n\t\t( { isDismissible, type } ) => isDismissible && type === 'default'\n\t);\n\tconst nonDismissibleNotices = notices.filter(\n\t\t( { isDismissible, type } ) => ! isDismissible && type === 'default'\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<NoticeList\n\t\t\t\tnotices={ nonDismissibleNotices }\n\t\t\t\tclassName=\"components-editor-notices__pinned\"\n\t\t\t/>\n\t\t\t<NoticeList\n\t\t\t\tnotices={ dismissibleNotices }\n\t\t\t\tclassName=\"components-editor-notices__dismissible\"\n\t\t\t\tonRemove={ onRemove }\n\t\t\t>\n\t\t\t\t<TemplateValidationNotice />\n\t\t\t</NoticeList>\n\t\t</>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => ( {\n\t\tnotices: select( noticesStore ).getNotices(),\n\t} ) ),\n\twithDispatch( ( dispatch ) => ( {\n\t\tonRemove: dispatch( noticesStore ).removeNotice,\n\t} ) ),\n] )( EditorNotices );\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,UAAU,QAAQ,uBAAuB;AAClD,SAASC,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAC1D,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,OAAOC,wBAAwB,MAAM,+BAA+B;AAEpE,OAAO,SAASC,aAAaA,CAAE;EAAEC,OAAO;EAAEC;AAAS,CAAC,EAAG;EACtD,MAAMC,kBAAkB,GAAGF,OAAO,CAACG,MAAM,CACxC,CAAE;IAAEC,aAAa;IAAEC;EAAK,CAAC,KAAMD,aAAa,IAAIC,IAAI,KAAK,SAC1D,CAAC;EACD,MAAMC,qBAAqB,GAAGN,OAAO,CAACG,MAAM,CAC3C,CAAE;IAAEC,aAAa;IAAEC;EAAK,CAAC,KAAM,CAAED,aAAa,IAAIC,IAAI,KAAK,SAC5D,CAAC;EAED,OACCE,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACf,UAAU;IACVQ,OAAO,EAAGM,qBAAuB;IACjCG,SAAS,EAAC;EAAmC,CAC7C,CAAC,EACFF,aAAA,CAACf,UAAU;IACVQ,OAAO,EAAGE,kBAAoB;IAC9BO,SAAS,EAAC,wCAAwC;IAClDR,QAAQ,EAAGA;EAAU,GAErBM,aAAA,CAACT,wBAAwB,MAAE,CAChB,CACX,CAAC;AAEL;AAEA,eAAeH,OAAO,CAAE,CACvBF,UAAU,CAAIiB,MAAM,KAAQ;EAC3BV,OAAO,EAAEU,MAAM,CAAEb,YAAa,CAAC,CAACc,UAAU,CAAC;AAC5C,CAAC,CAAG,CAAC,EACLjB,YAAY,CAAIkB,QAAQ,KAAQ;EAC/BX,QAAQ,EAAEW,QAAQ,CAAEf,YAAa,CAAC,CAACgB;AACpC,CAAC,CAAG,CAAC,CACJ,CAAC,CAAEd,aAAc,CAAC"}
1
+ {"version":3,"names":["NoticeList","useDispatch","useSelect","store","noticesStore","TemplateValidationNotice","EditorNotices","notices","select","getNotices","removeNotice","dismissibleNotices","filter","isDismissible","type","nonDismissibleNotices","createElement","Fragment","className","onRemove"],"sources":["@wordpress/editor/src/components/editor-notices/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { NoticeList } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport TemplateValidationNotice from '../template-validation-notice';\n\nexport function EditorNotices() {\n\tconst { notices } = useSelect(\n\t\t( select ) => ( {\n\t\t\tnotices: select( noticesStore ).getNotices(),\n\t\t} ),\n\t\t[]\n\t);\n\tconst { removeNotice } = useDispatch( noticesStore );\n\tconst dismissibleNotices = notices.filter(\n\t\t( { isDismissible, type } ) => isDismissible && type === 'default'\n\t);\n\tconst nonDismissibleNotices = notices.filter(\n\t\t( { isDismissible, type } ) => ! isDismissible && type === 'default'\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<NoticeList\n\t\t\t\tnotices={ nonDismissibleNotices }\n\t\t\t\tclassName=\"components-editor-notices__pinned\"\n\t\t\t/>\n\t\t\t<NoticeList\n\t\t\t\tnotices={ dismissibleNotices }\n\t\t\t\tclassName=\"components-editor-notices__dismissible\"\n\t\t\t\tonRemove={ removeNotice }\n\t\t\t>\n\t\t\t\t<TemplateValidationNotice />\n\t\t\t</NoticeList>\n\t\t</>\n\t);\n}\n\nexport default EditorNotices;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,UAAU,QAAQ,uBAAuB;AAClD,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,OAAOC,wBAAwB,MAAM,+BAA+B;AAEpE,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC/B,MAAM;IAAEC;EAAQ,CAAC,GAAGL,SAAS,CAC1BM,MAAM,KAAQ;IACfD,OAAO,EAAEC,MAAM,CAAEJ,YAAa,CAAC,CAACK,UAAU,CAAC;EAC5C,CAAC,CAAE,EACH,EACD,CAAC;EACD,MAAM;IAAEC;EAAa,CAAC,GAAGT,WAAW,CAAEG,YAAa,CAAC;EACpD,MAAMO,kBAAkB,GAAGJ,OAAO,CAACK,MAAM,CACxC,CAAE;IAAEC,aAAa;IAAEC;EAAK,CAAC,KAAMD,aAAa,IAAIC,IAAI,KAAK,SAC1D,CAAC;EACD,MAAMC,qBAAqB,GAAGR,OAAO,CAACK,MAAM,CAC3C,CAAE;IAAEC,aAAa;IAAEC;EAAK,CAAC,KAAM,CAAED,aAAa,IAAIC,IAAI,KAAK,SAC5D,CAAC;EAED,OACCE,aAAA,CAAAC,QAAA,QACCD,aAAA,CAAChB,UAAU;IACVO,OAAO,EAAGQ,qBAAuB;IACjCG,SAAS,EAAC;EAAmC,CAC7C,CAAC,EACFF,aAAA,CAAChB,UAAU;IACVO,OAAO,EAAGI,kBAAoB;IAC9BO,SAAS,EAAC,wCAAwC;IAClDC,QAAQ,EAAGT;EAAc,GAEzBM,aAAA,CAACX,wBAAwB,MAAE,CAChB,CACX,CAAC;AAEL;AAEA,eAAeC,aAAa"}
@@ -1,4 +1,4 @@
1
- import { createElement } from "react";
1
+ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
@@ -6,11 +6,18 @@ import { __ } from '@wordpress/i18n';
6
6
  import { useSelect } from '@wordpress/data';
7
7
  import { PanelBody, PanelRow } from '@wordpress/components';
8
8
  import { store as coreStore } from '@wordpress/core-data';
9
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
10
+ import { useContext } from '@wordpress/element';
9
11
 
10
12
  /**
11
13
  * Internal dependencies
12
14
  */
13
15
  import EntityRecordItem from './entity-record-item';
16
+ import { unlock } from '../../lock-unlock';
17
+ const {
18
+ getGlobalStylesChanges,
19
+ GlobalStylesContext
20
+ } = unlock(blockEditorPrivateApis);
14
21
  function getEntityDescription(entity, count) {
15
22
  switch (entity) {
16
23
  case 'site':
@@ -22,6 +29,32 @@ function getEntityDescription(entity, count) {
22
29
  return __('The following content has been modified.');
23
30
  }
24
31
  }
32
+ function GlobalStylesDescription({
33
+ record
34
+ }) {
35
+ const {
36
+ user: currentEditorGlobalStyles
37
+ } = useContext(GlobalStylesContext);
38
+ const savedRecord = useSelect(select => select(coreStore).getEntityRecord(record.kind, record.name, record.key), [record.kind, record.name, record.key]);
39
+ const globalStylesChanges = getGlobalStylesChanges(currentEditorGlobalStyles, savedRecord, {
40
+ maxResults: 10
41
+ });
42
+ return globalStylesChanges.length ? createElement(Fragment, null, createElement("h3", {
43
+ className: "entities-saved-states__description-heading"
44
+ }, __('Changes made to:')), createElement(PanelRow, null, globalStylesChanges.join(', '))) : null;
45
+ }
46
+ function EntityDescription({
47
+ record,
48
+ count
49
+ }) {
50
+ if ('globalStyles' === record?.name) {
51
+ return createElement(GlobalStylesDescription, {
52
+ record: record
53
+ });
54
+ }
55
+ const description = getEntityDescription(record?.name, count);
56
+ return description ? createElement(PanelRow, null, description) : null;
57
+ }
25
58
  export default function EntityTypeList({
26
59
  list,
27
60
  unselectedEntities,
@@ -30,19 +63,17 @@ export default function EntityTypeList({
30
63
  const count = list.length;
31
64
  const firstRecord = list[0];
32
65
  const entityConfig = useSelect(select => select(coreStore).getEntityConfig(firstRecord.kind, firstRecord.name), [firstRecord.kind, firstRecord.name]);
33
- const {
34
- name
35
- } = firstRecord;
36
66
  let entityLabel = entityConfig.label;
37
- if (name === 'wp_template_part') {
67
+ if (firstRecord?.name === 'wp_template_part') {
38
68
  entityLabel = 1 === count ? __('Template Part') : __('Template Parts');
39
69
  }
40
- // Set description based on type of entity.
41
- const description = getEntityDescription(name, count);
42
70
  return createElement(PanelBody, {
43
71
  title: entityLabel,
44
72
  initialOpen: true
45
- }, description && createElement(PanelRow, null, description), list.map(record => {
73
+ }, createElement(EntityDescription, {
74
+ record: firstRecord,
75
+ count: count
76
+ }), list.map(record => {
46
77
  return createElement(EntityRecordItem, {
47
78
  key: record.key || record.property,
48
79
  record: record,