@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,179 @@
1
+ import { createElement, Fragment } from "react";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+
6
+ import { __ } from '@wordpress/i18n';
7
+ import { useViewportMatch } from '@wordpress/compose';
8
+ import { useSelect, useDispatch } from '@wordpress/data';
9
+ import { useMemo } from '@wordpress/element';
10
+ import { store as preferencesStore, privateApis as preferencesPrivateApis } from '@wordpress/preferences';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import EnablePanelOption from './enable-panel';
16
+ import EnablePluginDocumentSettingPanelOption from './enable-plugin-document-setting-panel';
17
+ import BlockManager from '../block-manager';
18
+ import PostTaxonomies from '../post-taxonomies';
19
+ import PostFeaturedImageCheck from '../post-featured-image/check';
20
+ import PostExcerptCheck from '../post-excerpt/check';
21
+ import PageAttributesCheck from '../page-attributes/check';
22
+ import PostTypeSupportCheck from '../post-type-support-check';
23
+ import { store as editorStore } from '../../store';
24
+ import { unlock } from '../../lock-unlock';
25
+ const {
26
+ PreferencesModal,
27
+ PreferencesModalTabs,
28
+ PreferencesModalSection,
29
+ PreferenceToggleControl
30
+ } = unlock(preferencesPrivateApis);
31
+ export default function EditorPreferencesModal({
32
+ extraSections = {},
33
+ isActive,
34
+ onClose
35
+ }) {
36
+ const isLargeViewport = useViewportMatch('medium');
37
+ const {
38
+ showBlockBreadcrumbsOption
39
+ } = useSelect(select => {
40
+ const {
41
+ getEditorSettings
42
+ } = select(editorStore);
43
+ const {
44
+ get
45
+ } = select(preferencesStore);
46
+ const isRichEditingEnabled = getEditorSettings().richEditingEnabled;
47
+ const isDistractionFreeEnabled = get('core', 'distractionFree');
48
+ return {
49
+ showBlockBreadcrumbsOption: !isDistractionFreeEnabled && isLargeViewport && isRichEditingEnabled
50
+ };
51
+ }, [isLargeViewport]);
52
+ const {
53
+ setIsListViewOpened,
54
+ setIsInserterOpened
55
+ } = useDispatch(editorStore);
56
+ const {
57
+ set: setPreference
58
+ } = useDispatch(preferencesStore);
59
+ const toggleDistractionFree = () => {
60
+ setPreference('core', 'fixedToolbar', true);
61
+ setIsInserterOpened(false);
62
+ setIsListViewOpened(false);
63
+ // Todo: Check sidebar when closing/opening distraction free.
64
+ };
65
+
66
+ const turnOffDistractionFree = () => {
67
+ setPreference('core', 'distractionFree', false);
68
+ };
69
+ const sections = useMemo(() => [{
70
+ name: 'general',
71
+ tabLabel: __('General'),
72
+ content: createElement(Fragment, null, createElement(PreferencesModalSection, {
73
+ title: __('Interface')
74
+ }, createElement(PreferenceToggleControl, {
75
+ scope: "core",
76
+ featureName: "showListViewByDefault",
77
+ help: __('Opens the block list view sidebar by default.'),
78
+ label: __('Always open list view')
79
+ }), showBlockBreadcrumbsOption && createElement(PreferenceToggleControl, {
80
+ scope: "core",
81
+ featureName: "showBlockBreadcrumbs",
82
+ help: __('Display the block hierarchy trail at the bottom of the editor.'),
83
+ label: __('Show block breadcrumbs')
84
+ }), createElement(PreferenceToggleControl, {
85
+ scope: "core",
86
+ featureName: "allowRightClickOverrides",
87
+ help: __('Allows contextual list view menus via right-click, overriding browser defaults.'),
88
+ label: __('Allow right-click contextual menus')
89
+ })), createElement(PreferencesModalSection, {
90
+ title: __('Document settings'),
91
+ description: __('Select what settings are shown in the document panel.')
92
+ }, createElement(EnablePluginDocumentSettingPanelOption.Slot, null), createElement(PostTaxonomies, {
93
+ taxonomyWrapper: (content, taxonomy) => createElement(EnablePanelOption, {
94
+ label: taxonomy.labels.menu_name,
95
+ panelName: `taxonomy-panel-${taxonomy.slug}`
96
+ })
97
+ }), createElement(PostFeaturedImageCheck, null, createElement(EnablePanelOption, {
98
+ label: __('Featured image'),
99
+ panelName: "featured-image"
100
+ })), createElement(PostExcerptCheck, null, createElement(EnablePanelOption, {
101
+ label: __('Excerpt'),
102
+ panelName: "post-excerpt"
103
+ })), createElement(PostTypeSupportCheck, {
104
+ supportKeys: ['comments', 'trackbacks']
105
+ }, createElement(EnablePanelOption, {
106
+ label: __('Discussion'),
107
+ panelName: "discussion-panel"
108
+ })), createElement(PageAttributesCheck, null, createElement(EnablePanelOption, {
109
+ label: __('Page attributes'),
110
+ panelName: "page-attributes"
111
+ }))), extraSections?.general)
112
+ }, {
113
+ name: 'appearance',
114
+ tabLabel: __('Appearance'),
115
+ content: createElement(PreferencesModalSection, {
116
+ title: __('Appearance'),
117
+ description: __('Customize the editor interface to suit your needs.')
118
+ }, createElement(PreferenceToggleControl, {
119
+ scope: "core",
120
+ featureName: "fixedToolbar",
121
+ onToggle: turnOffDistractionFree,
122
+ help: __('Access all block and document tools in a single place.'),
123
+ label: __('Top toolbar')
124
+ }), createElement(PreferenceToggleControl, {
125
+ scope: "core",
126
+ featureName: "distractionFree",
127
+ onToggle: toggleDistractionFree,
128
+ help: __('Reduce visual distractions by hiding the toolbar and other elements to focus on writing.'),
129
+ label: __('Distraction free')
130
+ }), createElement(PreferenceToggleControl, {
131
+ scope: "core",
132
+ featureName: "focusMode",
133
+ help: __('Highlights the current block and fades other content.'),
134
+ label: __('Spotlight mode')
135
+ }), extraSections?.appearance)
136
+ }, {
137
+ name: 'accessibility',
138
+ tabLabel: __('Accessibility'),
139
+ content: createElement(Fragment, null, createElement(PreferencesModalSection, {
140
+ title: __('Navigation'),
141
+ description: __('Optimize the editing experience for enhanced control.')
142
+ }, createElement(PreferenceToggleControl, {
143
+ scope: "core",
144
+ featureName: "keepCaretInsideBlock",
145
+ help: __('Keeps the text cursor within the block boundaries, aiding users with screen readers by preventing unintentional cursor movement outside the block.'),
146
+ label: __('Contain text cursor inside block')
147
+ })), createElement(PreferencesModalSection, {
148
+ title: __('Interface')
149
+ }, createElement(PreferenceToggleControl, {
150
+ scope: "core",
151
+ featureName: "showIconLabels",
152
+ label: __('Show button text labels'),
153
+ help: __('Show text instead of icons on buttons across the interface.')
154
+ })))
155
+ }, {
156
+ name: 'blocks',
157
+ tabLabel: __('Blocks'),
158
+ content: createElement(Fragment, null, createElement(PreferencesModalSection, {
159
+ title: __('Inserter')
160
+ }, createElement(PreferenceToggleControl, {
161
+ scope: "core",
162
+ featureName: "mostUsedBlocks",
163
+ help: __('Adds a category with the most frequently used blocks in the inserter.'),
164
+ label: __('Show most used blocks')
165
+ })), createElement(PreferencesModalSection, {
166
+ title: __('Manage block visibility'),
167
+ description: __("Disable blocks that you don't want to appear in the inserter. They can always be toggled back on later.")
168
+ }, createElement(BlockManager, null)))
169
+ }], [isLargeViewport, showBlockBreadcrumbsOption, extraSections]);
170
+ if (!isActive) {
171
+ return null;
172
+ }
173
+ return createElement(PreferencesModal, {
174
+ closeModal: onClose
175
+ }, createElement(PreferencesModalTabs, {
176
+ sections: sections
177
+ }));
178
+ }
179
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","useViewportMatch","useSelect","useDispatch","useMemo","store","preferencesStore","privateApis","preferencesPrivateApis","EnablePanelOption","EnablePluginDocumentSettingPanelOption","BlockManager","PostTaxonomies","PostFeaturedImageCheck","PostExcerptCheck","PageAttributesCheck","PostTypeSupportCheck","editorStore","unlock","PreferencesModal","PreferencesModalTabs","PreferencesModalSection","PreferenceToggleControl","EditorPreferencesModal","extraSections","isActive","onClose","isLargeViewport","showBlockBreadcrumbsOption","select","getEditorSettings","get","isRichEditingEnabled","richEditingEnabled","isDistractionFreeEnabled","setIsListViewOpened","setIsInserterOpened","set","setPreference","toggleDistractionFree","turnOffDistractionFree","sections","name","tabLabel","content","createElement","Fragment","title","scope","featureName","help","label","description","Slot","taxonomyWrapper","taxonomy","labels","menu_name","panelName","slug","supportKeys","general","onToggle","appearance","closeModal"],"sources":["@wordpress/editor/src/components/preferences-modal/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\n\nimport { __ } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tstore as preferencesStore,\n\tprivateApis as preferencesPrivateApis,\n} from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport EnablePanelOption from './enable-panel';\nimport EnablePluginDocumentSettingPanelOption from './enable-plugin-document-setting-panel';\nimport BlockManager from '../block-manager';\nimport PostTaxonomies from '../post-taxonomies';\nimport PostFeaturedImageCheck from '../post-featured-image/check';\nimport PostExcerptCheck from '../post-excerpt/check';\nimport PageAttributesCheck from '../page-attributes/check';\nimport PostTypeSupportCheck from '../post-type-support-check';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst {\n\tPreferencesModal,\n\tPreferencesModalTabs,\n\tPreferencesModalSection,\n\tPreferenceToggleControl,\n} = unlock( preferencesPrivateApis );\n\nexport default function EditorPreferencesModal( {\n\textraSections = {},\n\tisActive,\n\tonClose,\n} ) {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst { showBlockBreadcrumbsOption } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditorSettings } = select( editorStore );\n\t\t\tconst { get } = select( preferencesStore );\n\t\t\tconst isRichEditingEnabled = getEditorSettings().richEditingEnabled;\n\t\t\tconst isDistractionFreeEnabled = get( 'core', 'distractionFree' );\n\t\t\treturn {\n\t\t\t\tshowBlockBreadcrumbsOption:\n\t\t\t\t\t! isDistractionFreeEnabled &&\n\t\t\t\t\tisLargeViewport &&\n\t\t\t\t\tisRichEditingEnabled,\n\t\t\t};\n\t\t},\n\t\t[ isLargeViewport ]\n\t);\n\n\tconst { setIsListViewOpened, setIsInserterOpened } =\n\t\tuseDispatch( editorStore );\n\tconst { set: setPreference } = useDispatch( preferencesStore );\n\n\tconst toggleDistractionFree = () => {\n\t\tsetPreference( 'core', 'fixedToolbar', true );\n\t\tsetIsInserterOpened( false );\n\t\tsetIsListViewOpened( false );\n\t\t// Todo: Check sidebar when closing/opening distraction free.\n\t};\n\n\tconst turnOffDistractionFree = () => {\n\t\tsetPreference( 'core', 'distractionFree', false );\n\t};\n\n\tconst sections = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tname: 'general',\n\t\t\t\ttabLabel: __( 'General' ),\n\t\t\t\tcontent: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PreferencesModalSection title={ __( 'Interface' ) }>\n\t\t\t\t\t\t\t<PreferenceToggleControl\n\t\t\t\t\t\t\t\tscope=\"core\"\n\t\t\t\t\t\t\t\tfeatureName=\"showListViewByDefault\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Opens the block list view sidebar by default.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Always open list view' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ showBlockBreadcrumbsOption && (\n\t\t\t\t\t\t\t\t<PreferenceToggleControl\n\t\t\t\t\t\t\t\t\tscope=\"core\"\n\t\t\t\t\t\t\t\t\tfeatureName=\"showBlockBreadcrumbs\"\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Display the block hierarchy trail at the bottom of the editor.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Show block breadcrumbs' ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<PreferenceToggleControl\n\t\t\t\t\t\t\t\tscope=\"core\"\n\t\t\t\t\t\t\t\tfeatureName=\"allowRightClickOverrides\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Allows contextual list view menus via right-click, overriding browser defaults.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t\t'Allow right-click contextual menus'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Document settings' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t'Select what settings are shown in the document panel.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<EnablePluginDocumentSettingPanelOption.Slot />\n\t\t\t\t\t\t\t<PostTaxonomies\n\t\t\t\t\t\t\t\ttaxonomyWrapper={ ( content, taxonomy ) => (\n\t\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\t\tlabel={ taxonomy.labels.menu_name }\n\t\t\t\t\t\t\t\t\t\tpanelName={ `taxonomy-panel-${ taxonomy.slug }` }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<PostFeaturedImageCheck>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Featured image' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"featured-image\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PostFeaturedImageCheck>\n\t\t\t\t\t\t\t<PostExcerptCheck>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Excerpt' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"post-excerpt\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PostExcerptCheck>\n\t\t\t\t\t\t\t<PostTypeSupportCheck\n\t\t\t\t\t\t\t\tsupportKeys={ [ 'comments', 'trackbacks' ] }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Discussion' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"discussion-panel\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PostTypeSupportCheck>\n\t\t\t\t\t\t\t<PageAttributesCheck>\n\t\t\t\t\t\t\t\t<EnablePanelOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Page attributes' ) }\n\t\t\t\t\t\t\t\t\tpanelName=\"page-attributes\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PageAttributesCheck>\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t\t{ extraSections?.general }\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'appearance',\n\t\t\t\ttabLabel: __( 'Appearance' ),\n\t\t\t\tcontent: (\n\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\ttitle={ __( 'Appearance' ) }\n\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t'Customize the editor interface to suit your needs.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<PreferenceToggleControl\n\t\t\t\t\t\t\tscope=\"core\"\n\t\t\t\t\t\t\tfeatureName=\"fixedToolbar\"\n\t\t\t\t\t\t\tonToggle={ turnOffDistractionFree }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Access all block and document tools in a single place.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tlabel={ __( 'Top toolbar' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PreferenceToggleControl\n\t\t\t\t\t\t\tscope=\"core\"\n\t\t\t\t\t\t\tfeatureName=\"distractionFree\"\n\t\t\t\t\t\t\tonToggle={ toggleDistractionFree }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Reduce visual distractions by hiding the toolbar and other elements to focus on writing.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tlabel={ __( 'Distraction free' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PreferenceToggleControl\n\t\t\t\t\t\t\tscope=\"core\"\n\t\t\t\t\t\t\tfeatureName=\"focusMode\"\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Highlights the current block and fades other content.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tlabel={ __( 'Spotlight mode' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ extraSections?.appearance }\n\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'accessibility',\n\t\t\t\ttabLabel: __( 'Accessibility' ),\n\t\t\t\tcontent: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Navigation' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t'Optimize the editing experience for enhanced control.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PreferenceToggleControl\n\t\t\t\t\t\t\t\tscope=\"core\"\n\t\t\t\t\t\t\t\tfeatureName=\"keepCaretInsideBlock\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Keeps the text cursor within the block boundaries, aiding users with screen readers by preventing unintentional cursor movement outside the block.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t\t'Contain text cursor inside block'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t\t<PreferencesModalSection title={ __( 'Interface' ) }>\n\t\t\t\t\t\t\t<PreferenceToggleControl\n\t\t\t\t\t\t\t\tscope=\"core\"\n\t\t\t\t\t\t\t\tfeatureName=\"showIconLabels\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Show button text labels' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Show text instead of icons on buttons across the interface.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'blocks',\n\t\t\t\ttabLabel: __( 'Blocks' ),\n\t\t\t\tcontent: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PreferencesModalSection title={ __( 'Inserter' ) }>\n\t\t\t\t\t\t\t<PreferenceToggleControl\n\t\t\t\t\t\t\t\tscope=\"core\"\n\t\t\t\t\t\t\t\tfeatureName=\"mostUsedBlocks\"\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Adds a category with the most frequently used blocks in the inserter.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tlabel={ __( 'Show most used blocks' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t\t<PreferencesModalSection\n\t\t\t\t\t\t\ttitle={ __( 'Manage block visibility' ) }\n\t\t\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t\t\t\"Disable blocks that you don't want to appear in the inserter. They can always be toggled back on later.\"\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockManager />\n\t\t\t\t\t\t</PreferencesModalSection>\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t},\n\t\t],\n\t\t[ isLargeViewport, showBlockBreadcrumbsOption, extraSections ]\n\t);\n\n\tif ( ! isActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PreferencesModal closeModal={ onClose }>\n\t\t\t<PreferencesModalTabs sections={ sections } />\n\t\t</PreferencesModal>\n\t);\n}\n"],"mappings":"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"}
@@ -41,10 +41,7 @@ function DisableBlock({
41
41
  export default function DisableNonPageContentBlocks() {
42
42
  useBlockEditingMode('disabled');
43
43
  const clientIds = useSelect(select => {
44
- const {
45
- __experimentalGetGlobalBlocksByName
46
- } = select(blockEditorStore);
47
- return __experimentalGetGlobalBlocksByName(PAGE_CONTENT_BLOCK_TYPES);
44
+ return select(blockEditorStore).getBlocksByName(PAGE_CONTENT_BLOCK_TYPES);
48
45
  }, []);
49
46
  return clientIds.map(clientId => {
50
47
  return createElement(DisableBlock, {
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useDispatch","useBlockEditingMode","store","blockEditorStore","useEffect","PAGE_CONTENT_BLOCK_TYPES","DisableBlock","clientId","isDescendentOfQueryLoop","select","getBlockParentsByBlockName","length","mode","undefined","setBlockEditingMode","unsetBlockEditingMode","DisableNonPageContentBlocks","clientIds","__experimentalGetGlobalBlocksByName","map","createElement","key"],"sources":["@wordpress/editor/src/components/provider/disable-non-page-content-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseBlockEditingMode,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { PAGE_CONTENT_BLOCK_TYPES } from './constants';\n\nfunction DisableBlock( { clientId } ) {\n\tconst isDescendentOfQueryLoop = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockParentsByBlockName } = select( blockEditorStore );\n\t\t\treturn (\n\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/query' ).length !==\n\t\t\t\t0\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst mode = isDescendentOfQueryLoop ? undefined : 'contentOnly';\n\tconst { setBlockEditingMode, unsetBlockEditingMode } =\n\t\tuseDispatch( blockEditorStore );\n\tuseEffect( () => {\n\t\tif ( mode ) {\n\t\t\tsetBlockEditingMode( clientId, mode );\n\t\t\treturn () => {\n\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t};\n\t\t}\n\t}, [ clientId, mode, setBlockEditingMode, unsetBlockEditingMode ] );\n}\n\n/**\n * Component that when rendered, makes it so that the site editor allows only\n * page content to be edited.\n */\nexport default function DisableNonPageContentBlocks() {\n\tuseBlockEditingMode( 'disabled' );\n\tconst clientIds = useSelect( ( select ) => {\n\t\tconst { __experimentalGetGlobalBlocksByName } =\n\t\t\tselect( blockEditorStore );\n\t\treturn __experimentalGetGlobalBlocksByName( PAGE_CONTENT_BLOCK_TYPES );\n\t}, [] );\n\n\treturn clientIds.map( ( clientId ) => {\n\t\treturn <DisableBlock key={ clientId } clientId={ clientId } />;\n\t} );\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SACCC,mBAAmB,EACnBC,KAAK,IAAIC,gBAAgB,QACnB,yBAAyB;AAChC,SAASC,SAAS,QAAQ,oBAAoB;;AAE9C;AACA;AACA;AACA,SAASC,wBAAwB,QAAQ,aAAa;AAEtD,SAASC,YAAYA,CAAE;EAAEC;AAAS,CAAC,EAAG;EACrC,MAAMC,uBAAuB,GAAGT,SAAS,CACtCU,MAAM,IAAM;IACb,MAAM;MAAEC;IAA2B,CAAC,GAAGD,MAAM,CAAEN,gBAAiB,CAAC;IACjE,OACCO,0BAA0B,CAAEH,QAAQ,EAAE,YAAa,CAAC,CAACI,MAAM,KAC3D,CAAC;EAEH,CAAC,EACD,CAAEJ,QAAQ,CACX,CAAC;EACD,MAAMK,IAAI,GAAGJ,uBAAuB,GAAGK,SAAS,GAAG,aAAa;EAChE,MAAM;IAAEC,mBAAmB;IAAEC;EAAsB,CAAC,GACnDf,WAAW,CAAEG,gBAAiB,CAAC;EAChCC,SAAS,CAAE,MAAM;IAChB,IAAKQ,IAAI,EAAG;MACXE,mBAAmB,CAAEP,QAAQ,EAAEK,IAAK,CAAC;MACrC,OAAO,MAAM;QACZG,qBAAqB,CAAER,QAAS,CAAC;MAClC,CAAC;IACF;EACD,CAAC,EAAE,CAAEA,QAAQ,EAAEK,IAAI,EAAEE,mBAAmB,EAAEC,qBAAqB,CAAG,CAAC;AACpE;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAASC,2BAA2BA,CAAA,EAAG;EACrDf,mBAAmB,CAAE,UAAW,CAAC;EACjC,MAAMgB,SAAS,GAAGlB,SAAS,CAAIU,MAAM,IAAM;IAC1C,MAAM;MAAES;IAAoC,CAAC,GAC5CT,MAAM,CAAEN,gBAAiB,CAAC;IAC3B,OAAOe,mCAAmC,CAAEb,wBAAyB,CAAC;EACvE,CAAC,EAAE,EAAG,CAAC;EAEP,OAAOY,SAAS,CAACE,GAAG,CAAIZ,QAAQ,IAAM;IACrC,OAAOa,aAAA,CAACd,YAAY;MAACe,GAAG,EAAGd,QAAU;MAACA,QAAQ,EAAGA;IAAU,CAAE,CAAC;EAC/D,CAAE,CAAC;AACJ"}
1
+ {"version":3,"names":["useSelect","useDispatch","useBlockEditingMode","store","blockEditorStore","useEffect","PAGE_CONTENT_BLOCK_TYPES","DisableBlock","clientId","isDescendentOfQueryLoop","select","getBlockParentsByBlockName","length","mode","undefined","setBlockEditingMode","unsetBlockEditingMode","DisableNonPageContentBlocks","clientIds","getBlocksByName","map","createElement","key"],"sources":["@wordpress/editor/src/components/provider/disable-non-page-content-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseBlockEditingMode,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { PAGE_CONTENT_BLOCK_TYPES } from './constants';\n\nfunction DisableBlock( { clientId } ) {\n\tconst isDescendentOfQueryLoop = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockParentsByBlockName } = select( blockEditorStore );\n\t\t\treturn (\n\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/query' ).length !==\n\t\t\t\t0\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst mode = isDescendentOfQueryLoop ? undefined : 'contentOnly';\n\tconst { setBlockEditingMode, unsetBlockEditingMode } =\n\t\tuseDispatch( blockEditorStore );\n\tuseEffect( () => {\n\t\tif ( mode ) {\n\t\t\tsetBlockEditingMode( clientId, mode );\n\t\t\treturn () => {\n\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t};\n\t\t}\n\t}, [ clientId, mode, setBlockEditingMode, unsetBlockEditingMode ] );\n}\n\n/**\n * Component that when rendered, makes it so that the site editor allows only\n * page content to be edited.\n */\nexport default function DisableNonPageContentBlocks() {\n\tuseBlockEditingMode( 'disabled' );\n\tconst clientIds = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getBlocksByName(\n\t\t\tPAGE_CONTENT_BLOCK_TYPES\n\t\t);\n\t}, [] );\n\n\treturn clientIds.map( ( clientId ) => {\n\t\treturn <DisableBlock key={ clientId } clientId={ clientId } />;\n\t} );\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SACCC,mBAAmB,EACnBC,KAAK,IAAIC,gBAAgB,QACnB,yBAAyB;AAChC,SAASC,SAAS,QAAQ,oBAAoB;;AAE9C;AACA;AACA;AACA,SAASC,wBAAwB,QAAQ,aAAa;AAEtD,SAASC,YAAYA,CAAE;EAAEC;AAAS,CAAC,EAAG;EACrC,MAAMC,uBAAuB,GAAGT,SAAS,CACtCU,MAAM,IAAM;IACb,MAAM;MAAEC;IAA2B,CAAC,GAAGD,MAAM,CAAEN,gBAAiB,CAAC;IACjE,OACCO,0BAA0B,CAAEH,QAAQ,EAAE,YAAa,CAAC,CAACI,MAAM,KAC3D,CAAC;EAEH,CAAC,EACD,CAAEJ,QAAQ,CACX,CAAC;EACD,MAAMK,IAAI,GAAGJ,uBAAuB,GAAGK,SAAS,GAAG,aAAa;EAChE,MAAM;IAAEC,mBAAmB;IAAEC;EAAsB,CAAC,GACnDf,WAAW,CAAEG,gBAAiB,CAAC;EAChCC,SAAS,CAAE,MAAM;IAChB,IAAKQ,IAAI,EAAG;MACXE,mBAAmB,CAAEP,QAAQ,EAAEK,IAAK,CAAC;MACrC,OAAO,MAAM;QACZG,qBAAqB,CAAER,QAAS,CAAC;MAClC,CAAC;IACF;EACD,CAAC,EAAE,CAAEA,QAAQ,EAAEK,IAAI,EAAEE,mBAAmB,EAAEC,qBAAqB,CAAG,CAAC;AACpE;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAASC,2BAA2BA,CAAA,EAAG;EACrDf,mBAAmB,CAAE,UAAW,CAAC;EACjC,MAAMgB,SAAS,GAAGlB,SAAS,CAAIU,MAAM,IAAM;IAC1C,OAAOA,MAAM,CAAEN,gBAAiB,CAAC,CAACe,eAAe,CAChDb,wBACD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,OAAOY,SAAS,CAACE,GAAG,CAAIZ,QAAQ,IAAM;IACrC,OAAOa,aAAA,CAACd,YAAY;MAACe,GAAG,EAAGd,QAAU;MAACA,QAAQ,EAAGA;IAAU,CAAE,CAAC;EAC/D,CAAE,CAAC;AACJ"}
@@ -3,10 +3,11 @@
3
3
  */
4
4
  import { Platform, useMemo, useCallback } from '@wordpress/element';
5
5
  import { useDispatch, useSelect } from '@wordpress/data';
6
- import { store as coreStore, __experimentalFetchLinkSuggestions as fetchLinkSuggestions, __experimentalFetchUrlData as fetchUrlData } from '@wordpress/core-data';
6
+ import { store as coreStore, __experimentalFetchLinkSuggestions as fetchLinkSuggestions, __experimentalFetchUrlData as fetchUrlData, fetchBlockPatterns } from '@wordpress/core-data';
7
7
  import { __ } from '@wordpress/i18n';
8
8
  import { store as preferencesStore } from '@wordpress/preferences';
9
9
  import { useViewportMatch } from '@wordpress/compose';
10
+ import { store as blocksStore } from '@wordpress/blocks';
10
11
 
11
12
  /**
12
13
  * Internal dependencies
@@ -15,7 +16,7 @@ import inserterMediaCategories from '../media-categories';
15
16
  import { mediaUpload } from '../../utils';
16
17
  import { store as editorStore } from '../../store';
17
18
  const EMPTY_BLOCKS_LIST = [];
18
- const BLOCK_EDITOR_SETTINGS = ['__experimentalBlockDirectory', '__experimentalDiscussionSettings', '__experimentalFeatures', '__experimentalGlobalStylesBaseStyles', '__experimentalPreferredStyleVariations', '__unstableGalleryWithImageBlocks', 'alignWide', 'allowedBlockTypes', 'blockInspectorTabs', 'allowedMimeTypes', 'bodyPlaceholder', 'canLockBlocks', 'capabilities', 'clearBlockSelection', 'codeEditingEnabled', 'colors', 'disableCustomColors', 'disableCustomFontSizes', 'disableCustomSpacingSizes', 'disableCustomGradients', 'disableLayoutStyles', 'enableCustomLineHeight', 'enableCustomSpacing', 'enableCustomUnits', 'enableOpenverseMediaCategory', 'fontSizes', 'gradients', 'generateAnchors', 'getPostLinkProps', 'hasInlineToolbar', 'imageDefaultSize', 'imageDimensions', 'imageEditing', 'imageSizes', 'isRTL', 'locale', 'maxWidth', 'onUpdateDefaultBlockStyles', 'postContentAttributes', 'postsPerPage', 'readOnly', 'styles', 'titlePlaceholder', 'supportsLayout', 'widgetTypesToHideFromLegacyWidgetBlock', '__unstableHasCustomAppender', '__unstableIsPreviewMode', '__unstableResolvedAssets', '__unstableIsBlockBasedTheme', '__experimentalArchiveTitleTypeLabel', '__experimentalArchiveTitleNameLabel'];
19
+ const BLOCK_EDITOR_SETTINGS = ['__experimentalBlockDirectory', '__experimentalDiscussionSettings', '__experimentalFeatures', '__experimentalGlobalStylesBaseStyles', '__experimentalPreferredStyleVariations', '__unstableGalleryWithImageBlocks', 'alignWide', 'blockInspectorTabs', 'allowedMimeTypes', 'bodyPlaceholder', 'canLockBlocks', 'capabilities', 'clearBlockSelection', 'codeEditingEnabled', 'colors', 'disableCustomColors', 'disableCustomFontSizes', 'disableCustomSpacingSizes', 'disableCustomGradients', 'disableLayoutStyles', 'enableCustomLineHeight', 'enableCustomSpacing', 'enableCustomUnits', 'enableOpenverseMediaCategory', 'fontSizes', 'gradients', 'generateAnchors', 'getPostLinkProps', 'hasInlineToolbar', 'imageDefaultSize', 'imageDimensions', 'imageEditing', 'imageSizes', 'isRTL', 'locale', 'maxWidth', 'onUpdateDefaultBlockStyles', 'postContentAttributes', 'postsPerPage', 'readOnly', 'styles', 'titlePlaceholder', 'supportsLayout', 'widgetTypesToHideFromLegacyWidgetBlock', '__unstableHasCustomAppender', '__unstableIsPreviewMode', '__unstableResolvedAssets', '__unstableIsBlockBasedTheme', '__experimentalArchiveTitleTypeLabel', '__experimentalArchiveTitleNameLabel'];
19
20
 
20
21
  /**
21
22
  * React hook used to compute the block editor settings to use for the post editor.
@@ -31,18 +32,19 @@ function useBlockEditorSettings(settings, postType, postId) {
31
32
  const isLargeViewport = useViewportMatch('medium');
32
33
  const {
33
34
  allowRightClickOverrides,
35
+ blockTypes,
34
36
  focusMode,
35
37
  hasFixedToolbar,
36
38
  isDistractionFree,
37
39
  keepCaretInsideBlock,
38
40
  reusableBlocks,
39
41
  hasUploadPermissions,
42
+ hiddenBlockTypes,
40
43
  canUseUnfilteredHTML,
41
44
  userCanCreatePages,
42
45
  pageOnFront,
43
46
  pageForPosts,
44
47
  userPatternCategories,
45
- restBlockPatterns,
46
48
  restBlockPatternCategories
47
49
  } = useSelect(select => {
48
50
  var _canUser;
@@ -53,18 +55,22 @@ function useBlockEditorSettings(settings, postType, postId) {
53
55
  getEntityRecord,
54
56
  getUserPatternCategories,
55
57
  getEntityRecords,
56
- getBlockPatterns,
57
58
  getBlockPatternCategories
58
59
  } = select(coreStore);
59
60
  const {
60
61
  get
61
62
  } = select(preferencesStore);
63
+ const {
64
+ getBlockTypes
65
+ } = select(blocksStore);
62
66
  const siteSettings = canUser('read', 'settings') ? getEntityRecord('root', 'site') : undefined;
63
67
  return {
64
68
  allowRightClickOverrides: get('core', 'allowRightClickOverrides'),
69
+ blockTypes: getBlockTypes(),
65
70
  canUseUnfilteredHTML: getRawEntityRecord('postType', postType, postId)?._links?.hasOwnProperty('wp:action-unfiltered-html'),
66
71
  focusMode: get('core', 'focusMode'),
67
72
  hasFixedToolbar: get('core', 'fixedToolbar') || !isLargeViewport,
73
+ hiddenBlockTypes: get('core', 'hiddenBlockTypes'),
68
74
  isDistractionFree: get('core', 'distractionFree'),
69
75
  keepCaretInsideBlock: get('core', 'keepCaretInsideBlock'),
70
76
  reusableBlocks: isWeb ? getEntityRecords('postType', 'wp_block', {
@@ -76,7 +82,6 @@ function useBlockEditorSettings(settings, postType, postId) {
76
82
  pageOnFront: siteSettings?.page_on_front,
77
83
  pageForPosts: siteSettings?.page_for_posts,
78
84
  userPatternCategories: getUserPatternCategories(),
79
- restBlockPatterns: getBlockPatterns(),
80
85
  restBlockPatternCategories: getBlockPatternCategories()
81
86
  };
82
87
  }, [postType, postId, isLargeViewport]);
@@ -87,11 +92,11 @@ function useBlockEditorSettings(settings, postType, postId) {
87
92
  // WP 6.0
88
93
  settings.__experimentalBlockPatternCategories; // WP 5.9
89
94
 
90
- const blockPatterns = useMemo(() => [...(settingsBlockPatterns || []), ...(restBlockPatterns || [])].filter((x, index, arr) => index === arr.findIndex(y => x.name === y.name)).filter(({
95
+ const blockPatterns = useMemo(() => [...(settingsBlockPatterns || [])].filter(({
91
96
  postTypes
92
97
  }) => {
93
98
  return !postTypes || Array.isArray(postTypes) && postTypes.includes(postType);
94
- }), [settingsBlockPatterns, restBlockPatterns, postType]);
99
+ }), [settingsBlockPatterns, postType]);
95
100
  const blockPatternCategories = useMemo(() => [...(settingsBlockPatternCategories || []), ...(restBlockPatternCategories || [])].filter((x, index, arr) => index === arr.findIndex(y => x.name === y.name)), [settingsBlockPatternCategories, restBlockPatternCategories]);
96
101
  const {
97
102
  undo,
@@ -116,17 +121,38 @@ function useBlockEditorSettings(settings, postType, postId) {
116
121
  }
117
122
  return saveEntityRecord('postType', 'page', options);
118
123
  }, [saveEntityRecord, userCanCreatePages]);
124
+ const allowedBlockTypes = useMemo(() => {
125
+ // Omit hidden block types if exists and non-empty.
126
+ if (hiddenBlockTypes && hiddenBlockTypes.length > 0) {
127
+ // Defer to passed setting for `allowedBlockTypes` if provided as
128
+ // anything other than `true` (where `true` is equivalent to allow
129
+ // all block types).
130
+ const defaultAllowedBlockTypes = true === settings.allowedBlockTypes ? blockTypes.map(({
131
+ name
132
+ }) => name) : settings.allowedBlockTypes || [];
133
+ return defaultAllowedBlockTypes.filter(type => !hiddenBlockTypes.includes(type));
134
+ }
135
+ return settings.allowedBlockTypes;
136
+ }, [settings.allowedBlockTypes, hiddenBlockTypes, blockTypes]);
119
137
  const forceDisableFocusMode = settings.focusMode === false;
120
138
  return useMemo(() => ({
121
139
  ...Object.fromEntries(Object.entries(settings).filter(([key]) => BLOCK_EDITOR_SETTINGS.includes(key))),
140
+ allowedBlockTypes,
122
141
  allowRightClickOverrides,
123
142
  focusMode: focusMode && !forceDisableFocusMode,
124
143
  hasFixedToolbar,
125
144
  isDistractionFree,
126
145
  keepCaretInsideBlock,
127
146
  mediaUpload: hasUploadPermissions ? mediaUpload : undefined,
128
- __experimentalReusableBlocks: reusableBlocks,
129
147
  __experimentalBlockPatterns: blockPatterns,
148
+ __experimentalFetchBlockPatterns: async () => {
149
+ return (await fetchBlockPatterns()).filter(({
150
+ postTypes
151
+ }) => {
152
+ return !postTypes || Array.isArray(postTypes) && postTypes.includes(postType);
153
+ });
154
+ },
155
+ __experimentalReusableBlocks: reusableBlocks,
130
156
  __experimentalBlockPatternCategories: blockPatternCategories,
131
157
  __experimentalUserPatternCategories: userPatternCategories,
132
158
  __experimentalFetchLinkSuggestions: (search, searchOptions) => fetchLinkSuggestions(search, searchOptions, settings),
@@ -149,7 +175,7 @@ function useBlockEditorSettings(settings, postType, postId) {
149
175
  templateLock: postType === 'wp_navigation' ? 'insert' : settings.templateLock,
150
176
  template: postType === 'wp_navigation' ? [['core/navigation', {}, []]] : settings.template,
151
177
  __experimentalSetIsInserterOpened: setIsInserterOpened
152
- }), [allowRightClickOverrides, focusMode, forceDisableFocusMode, hasFixedToolbar, isDistractionFree, keepCaretInsideBlock, settings, hasUploadPermissions, reusableBlocks, userPatternCategories, blockPatterns, blockPatternCategories, canUseUnfilteredHTML, undo, createPageEntity, userCanCreatePages, pageOnFront, pageForPosts, postType, setIsInserterOpened]);
178
+ }), [allowedBlockTypes, allowRightClickOverrides, focusMode, forceDisableFocusMode, hasFixedToolbar, isDistractionFree, keepCaretInsideBlock, settings, hasUploadPermissions, reusableBlocks, userPatternCategories, blockPatterns, blockPatternCategories, canUseUnfilteredHTML, undo, createPageEntity, userCanCreatePages, pageOnFront, pageForPosts, postType, setIsInserterOpened]);
153
179
  }
154
180
  export default useBlockEditorSettings;
155
181
  //# sourceMappingURL=use-block-editor-settings.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","useMemo","useCallback","useDispatch","useSelect","store","coreStore","__experimentalFetchLinkSuggestions","fetchLinkSuggestions","__experimentalFetchUrlData","fetchUrlData","__","preferencesStore","useViewportMatch","inserterMediaCategories","mediaUpload","editorStore","EMPTY_BLOCKS_LIST","BLOCK_EDITOR_SETTINGS","useBlockEditorSettings","settings","postType","postId","_settings$__experimen","_settings$__experimen2","isLargeViewport","allowRightClickOverrides","focusMode","hasFixedToolbar","isDistractionFree","keepCaretInsideBlock","reusableBlocks","hasUploadPermissions","canUseUnfilteredHTML","userCanCreatePages","pageOnFront","pageForPosts","userPatternCategories","restBlockPatterns","restBlockPatternCategories","select","_canUser","isWeb","OS","canUser","getRawEntityRecord","getEntityRecord","getUserPatternCategories","getEntityRecords","getBlockPatterns","getBlockPatternCategories","get","siteSettings","undefined","_links","hasOwnProperty","per_page","page_on_front","page_for_posts","settingsBlockPatterns","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","settingsBlockPatternCategories","__experimentalAdditionalBlockPatternCategories","__experimentalBlockPatternCategories","blockPatterns","filter","x","index","arr","findIndex","y","name","postTypes","Array","isArray","includes","blockPatternCategories","undo","setIsInserterOpened","saveEntityRecord","createPageEntity","options","Promise","reject","message","forceDisableFocusMode","Object","fromEntries","entries","key","__experimentalReusableBlocks","__experimentalUserPatternCategories","search","searchOptions","__experimentalFetchRichUrlData","__experimentalCanUserUseUnfilteredHTML","__experimentalUndo","outlineMode","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","__experimentalPreferPatternsOnRoot","templateLock","template","__experimentalSetIsInserterOpened"],"sources":["@wordpress/editor/src/components/provider/use-block-editor-settings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Platform, useMemo, useCallback } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tstore as coreStore,\n\t__experimentalFetchLinkSuggestions as fetchLinkSuggestions,\n\t__experimentalFetchUrlData as fetchUrlData,\n} from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport inserterMediaCategories from '../media-categories';\nimport { mediaUpload } from '../../utils';\nimport { store as editorStore } from '../../store';\n\nconst EMPTY_BLOCKS_LIST = [];\n\nconst BLOCK_EDITOR_SETTINGS = [\n\t'__experimentalBlockDirectory',\n\t'__experimentalDiscussionSettings',\n\t'__experimentalFeatures',\n\t'__experimentalGlobalStylesBaseStyles',\n\t'__experimentalPreferredStyleVariations',\n\t'__unstableGalleryWithImageBlocks',\n\t'alignWide',\n\t'allowedBlockTypes',\n\t'blockInspectorTabs',\n\t'allowedMimeTypes',\n\t'bodyPlaceholder',\n\t'canLockBlocks',\n\t'capabilities',\n\t'clearBlockSelection',\n\t'codeEditingEnabled',\n\t'colors',\n\t'disableCustomColors',\n\t'disableCustomFontSizes',\n\t'disableCustomSpacingSizes',\n\t'disableCustomGradients',\n\t'disableLayoutStyles',\n\t'enableCustomLineHeight',\n\t'enableCustomSpacing',\n\t'enableCustomUnits',\n\t'enableOpenverseMediaCategory',\n\t'fontSizes',\n\t'gradients',\n\t'generateAnchors',\n\t'getPostLinkProps',\n\t'hasInlineToolbar',\n\t'imageDefaultSize',\n\t'imageDimensions',\n\t'imageEditing',\n\t'imageSizes',\n\t'isRTL',\n\t'locale',\n\t'maxWidth',\n\t'onUpdateDefaultBlockStyles',\n\t'postContentAttributes',\n\t'postsPerPage',\n\t'readOnly',\n\t'styles',\n\t'titlePlaceholder',\n\t'supportsLayout',\n\t'widgetTypesToHideFromLegacyWidgetBlock',\n\t'__unstableHasCustomAppender',\n\t'__unstableIsPreviewMode',\n\t'__unstableResolvedAssets',\n\t'__unstableIsBlockBasedTheme',\n\t'__experimentalArchiveTitleTypeLabel',\n\t'__experimentalArchiveTitleNameLabel',\n];\n\n/**\n * React hook used to compute the block editor settings to use for the post editor.\n *\n * @param {Object} settings EditorProvider settings prop.\n * @param {string} postType Editor root level post type.\n * @param {string} postId Editor root level post ID.\n *\n * @return {Object} Block Editor Settings.\n */\nfunction useBlockEditorSettings( settings, postType, postId ) {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst {\n\t\tallowRightClickOverrides,\n\t\tfocusMode,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tkeepCaretInsideBlock,\n\t\treusableBlocks,\n\t\thasUploadPermissions,\n\t\tcanUseUnfilteredHTML,\n\t\tuserCanCreatePages,\n\t\tpageOnFront,\n\t\tpageForPosts,\n\t\tuserPatternCategories,\n\t\trestBlockPatterns,\n\t\trestBlockPatternCategories,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst isWeb = Platform.OS === 'web';\n\t\t\tconst {\n\t\t\t\tcanUser,\n\t\t\t\tgetRawEntityRecord,\n\t\t\t\tgetEntityRecord,\n\t\t\t\tgetUserPatternCategories,\n\t\t\t\tgetEntityRecords,\n\t\t\t\tgetBlockPatterns,\n\t\t\t\tgetBlockPatternCategories,\n\t\t\t} = select( coreStore );\n\t\t\tconst { get } = select( preferencesStore );\n\n\t\t\tconst siteSettings = canUser( 'read', 'settings' )\n\t\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tallowRightClickOverrides: get(\n\t\t\t\t\t'core',\n\t\t\t\t\t'allowRightClickOverrides'\n\t\t\t\t),\n\t\t\t\tcanUseUnfilteredHTML: getRawEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\tpostId\n\t\t\t\t)?._links?.hasOwnProperty( 'wp:action-unfiltered-html' ),\n\t\t\t\tfocusMode: get( 'core', 'focusMode' ),\n\t\t\t\thasFixedToolbar:\n\t\t\t\t\tget( 'core', 'fixedToolbar' ) || ! isLargeViewport,\n\t\t\t\tisDistractionFree: get( 'core', 'distractionFree' ),\n\t\t\t\tkeepCaretInsideBlock: get( 'core', 'keepCaretInsideBlock' ),\n\t\t\t\treusableBlocks: isWeb\n\t\t\t\t\t? getEntityRecords( 'postType', 'wp_block', {\n\t\t\t\t\t\t\tper_page: -1,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_BLOCKS_LIST, // Reusable blocks are fetched in the native version of this hook.\n\t\t\t\thasUploadPermissions: canUser( 'create', 'media' ) ?? true,\n\t\t\t\tuserCanCreatePages: canUser( 'create', 'pages' ),\n\t\t\t\tpageOnFront: siteSettings?.page_on_front,\n\t\t\t\tpageForPosts: siteSettings?.page_for_posts,\n\t\t\t\tuserPatternCategories: getUserPatternCategories(),\n\t\t\t\trestBlockPatterns: getBlockPatterns(),\n\t\t\t\trestBlockPatternCategories: getBlockPatternCategories(),\n\t\t\t};\n\t\t},\n\t\t[ postType, postId, isLargeViewport ]\n\t);\n\n\tconst settingsBlockPatterns =\n\t\tsettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatterns; // WP 5.9\n\tconst settingsBlockPatternCategories =\n\t\tsettings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatternCategories; // WP 5.9\n\n\tconst blockPatterns = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t...( settingsBlockPatterns || [] ),\n\t\t\t\t...( restBlockPatterns || [] ),\n\t\t\t]\n\t\t\t\t.filter(\n\t\t\t\t\t( x, index, arr ) =>\n\t\t\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t\t\t)\n\t\t\t\t.filter( ( { postTypes } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t! postTypes ||\n\t\t\t\t\t\t( Array.isArray( postTypes ) &&\n\t\t\t\t\t\t\tpostTypes.includes( postType ) )\n\t\t\t\t\t);\n\t\t\t\t} ),\n\t\t[ settingsBlockPatterns, restBlockPatterns, postType ]\n\t);\n\n\tconst blockPatternCategories = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t...( settingsBlockPatternCategories || [] ),\n\t\t\t\t...( restBlockPatternCategories || [] ),\n\t\t\t].filter(\n\t\t\t\t( x, index, arr ) =>\n\t\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t\t),\n\t\t[ settingsBlockPatternCategories, restBlockPatternCategories ]\n\t);\n\n\tconst { undo, setIsInserterOpened } = useDispatch( editorStore );\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\t/**\n\t * Creates a Post entity.\n\t * This is utilised by the Link UI to allow for on-the-fly creation of Posts/Pages.\n\t *\n\t * @param {Object} options parameters for the post being created. These mirror those used on 3rd param of saveEntityRecord.\n\t * @return {Object} the post type object that was created.\n\t */\n\tconst createPageEntity = useCallback(\n\t\t( options ) => {\n\t\t\tif ( ! userCanCreatePages ) {\n\t\t\t\treturn Promise.reject( {\n\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t'You do not have permission to create Pages.'\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn saveEntityRecord( 'postType', 'page', options );\n\t\t},\n\t\t[ saveEntityRecord, userCanCreatePages ]\n\t);\n\n\tconst forceDisableFocusMode = settings.focusMode === false;\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\t...Object.fromEntries(\n\t\t\t\tObject.entries( settings ).filter( ( [ key ] ) =>\n\t\t\t\t\tBLOCK_EDITOR_SETTINGS.includes( key )\n\t\t\t\t)\n\t\t\t),\n\t\t\tallowRightClickOverrides,\n\t\t\tfocusMode: focusMode && ! forceDisableFocusMode,\n\t\t\thasFixedToolbar,\n\t\t\tisDistractionFree,\n\t\t\tkeepCaretInsideBlock,\n\t\t\tmediaUpload: hasUploadPermissions ? mediaUpload : undefined,\n\t\t\t__experimentalReusableBlocks: reusableBlocks,\n\t\t\t__experimentalBlockPatterns: blockPatterns,\n\t\t\t__experimentalBlockPatternCategories: blockPatternCategories,\n\t\t\t__experimentalUserPatternCategories: userPatternCategories,\n\t\t\t__experimentalFetchLinkSuggestions: ( search, searchOptions ) =>\n\t\t\t\tfetchLinkSuggestions( search, searchOptions, settings ),\n\t\t\tinserterMediaCategories,\n\t\t\t__experimentalFetchRichUrlData: fetchUrlData,\n\t\t\t// Todo: This only checks the top level post, not the post within a template or any other entity that can be edited.\n\t\t\t// This might be better as a generic \"canUser\" selector.\n\t\t\t__experimentalCanUserUseUnfilteredHTML: canUseUnfilteredHTML,\n\t\t\t//Todo: this is only needed for native and should probably be removed.\n\t\t\t__experimentalUndo: undo,\n\t\t\t// Check whether we want all site editor frames to have outlines\n\t\t\t// including the navigation / pattern / parts editors.\n\t\t\toutlineMode: postType === 'wp_template',\n\t\t\t// Check these two properties: they were not present in the site editor.\n\t\t\t__experimentalCreatePageEntity: createPageEntity,\n\t\t\t__experimentalUserCanCreatePages: userCanCreatePages,\n\t\t\tpageOnFront,\n\t\t\tpageForPosts,\n\t\t\t__experimentalPreferPatternsOnRoot: postType === 'wp_template',\n\t\t\ttemplateLock:\n\t\t\t\tpostType === 'wp_navigation' ? 'insert' : settings.templateLock,\n\t\t\ttemplate:\n\t\t\t\tpostType === 'wp_navigation'\n\t\t\t\t\t? [ [ 'core/navigation', {}, [] ] ]\n\t\t\t\t\t: settings.template,\n\t\t\t__experimentalSetIsInserterOpened: setIsInserterOpened,\n\t\t} ),\n\t\t[\n\t\t\tallowRightClickOverrides,\n\t\t\tfocusMode,\n\t\t\tforceDisableFocusMode,\n\t\t\thasFixedToolbar,\n\t\t\tisDistractionFree,\n\t\t\tkeepCaretInsideBlock,\n\t\t\tsettings,\n\t\t\thasUploadPermissions,\n\t\t\treusableBlocks,\n\t\t\tuserPatternCategories,\n\t\t\tblockPatterns,\n\t\t\tblockPatternCategories,\n\t\t\tcanUseUnfilteredHTML,\n\t\t\tundo,\n\t\t\tcreatePageEntity,\n\t\t\tuserCanCreatePages,\n\t\t\tpageOnFront,\n\t\t\tpageForPosts,\n\t\t\tpostType,\n\t\t\tsetIsInserterOpened,\n\t\t]\n\t);\n}\n\nexport default useBlockEditorSettings;\n"],"mappings":"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"}
1
+ {"version":3,"names":["Platform","useMemo","useCallback","useDispatch","useSelect","store","coreStore","__experimentalFetchLinkSuggestions","fetchLinkSuggestions","__experimentalFetchUrlData","fetchUrlData","fetchBlockPatterns","__","preferencesStore","useViewportMatch","blocksStore","inserterMediaCategories","mediaUpload","editorStore","EMPTY_BLOCKS_LIST","BLOCK_EDITOR_SETTINGS","useBlockEditorSettings","settings","postType","postId","_settings$__experimen","_settings$__experimen2","isLargeViewport","allowRightClickOverrides","blockTypes","focusMode","hasFixedToolbar","isDistractionFree","keepCaretInsideBlock","reusableBlocks","hasUploadPermissions","hiddenBlockTypes","canUseUnfilteredHTML","userCanCreatePages","pageOnFront","pageForPosts","userPatternCategories","restBlockPatternCategories","select","_canUser","isWeb","OS","canUser","getRawEntityRecord","getEntityRecord","getUserPatternCategories","getEntityRecords","getBlockPatternCategories","get","getBlockTypes","siteSettings","undefined","_links","hasOwnProperty","per_page","page_on_front","page_for_posts","settingsBlockPatterns","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","settingsBlockPatternCategories","__experimentalAdditionalBlockPatternCategories","__experimentalBlockPatternCategories","blockPatterns","filter","postTypes","Array","isArray","includes","blockPatternCategories","x","index","arr","findIndex","y","name","undo","setIsInserterOpened","saveEntityRecord","createPageEntity","options","Promise","reject","message","allowedBlockTypes","length","defaultAllowedBlockTypes","map","type","forceDisableFocusMode","Object","fromEntries","entries","key","__experimentalFetchBlockPatterns","__experimentalReusableBlocks","__experimentalUserPatternCategories","search","searchOptions","__experimentalFetchRichUrlData","__experimentalCanUserUseUnfilteredHTML","__experimentalUndo","outlineMode","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","__experimentalPreferPatternsOnRoot","templateLock","template","__experimentalSetIsInserterOpened"],"sources":["@wordpress/editor/src/components/provider/use-block-editor-settings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Platform, useMemo, useCallback } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tstore as coreStore,\n\t__experimentalFetchLinkSuggestions as fetchLinkSuggestions,\n\t__experimentalFetchUrlData as fetchUrlData,\n\tfetchBlockPatterns,\n} from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport inserterMediaCategories from '../media-categories';\nimport { mediaUpload } from '../../utils';\nimport { store as editorStore } from '../../store';\n\nconst EMPTY_BLOCKS_LIST = [];\n\nconst BLOCK_EDITOR_SETTINGS = [\n\t'__experimentalBlockDirectory',\n\t'__experimentalDiscussionSettings',\n\t'__experimentalFeatures',\n\t'__experimentalGlobalStylesBaseStyles',\n\t'__experimentalPreferredStyleVariations',\n\t'__unstableGalleryWithImageBlocks',\n\t'alignWide',\n\t'blockInspectorTabs',\n\t'allowedMimeTypes',\n\t'bodyPlaceholder',\n\t'canLockBlocks',\n\t'capabilities',\n\t'clearBlockSelection',\n\t'codeEditingEnabled',\n\t'colors',\n\t'disableCustomColors',\n\t'disableCustomFontSizes',\n\t'disableCustomSpacingSizes',\n\t'disableCustomGradients',\n\t'disableLayoutStyles',\n\t'enableCustomLineHeight',\n\t'enableCustomSpacing',\n\t'enableCustomUnits',\n\t'enableOpenverseMediaCategory',\n\t'fontSizes',\n\t'gradients',\n\t'generateAnchors',\n\t'getPostLinkProps',\n\t'hasInlineToolbar',\n\t'imageDefaultSize',\n\t'imageDimensions',\n\t'imageEditing',\n\t'imageSizes',\n\t'isRTL',\n\t'locale',\n\t'maxWidth',\n\t'onUpdateDefaultBlockStyles',\n\t'postContentAttributes',\n\t'postsPerPage',\n\t'readOnly',\n\t'styles',\n\t'titlePlaceholder',\n\t'supportsLayout',\n\t'widgetTypesToHideFromLegacyWidgetBlock',\n\t'__unstableHasCustomAppender',\n\t'__unstableIsPreviewMode',\n\t'__unstableResolvedAssets',\n\t'__unstableIsBlockBasedTheme',\n\t'__experimentalArchiveTitleTypeLabel',\n\t'__experimentalArchiveTitleNameLabel',\n];\n\n/**\n * React hook used to compute the block editor settings to use for the post editor.\n *\n * @param {Object} settings EditorProvider settings prop.\n * @param {string} postType Editor root level post type.\n * @param {string} postId Editor root level post ID.\n *\n * @return {Object} Block Editor Settings.\n */\nfunction useBlockEditorSettings( settings, postType, postId ) {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst {\n\t\tallowRightClickOverrides,\n\t\tblockTypes,\n\t\tfocusMode,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tkeepCaretInsideBlock,\n\t\treusableBlocks,\n\t\thasUploadPermissions,\n\t\thiddenBlockTypes,\n\t\tcanUseUnfilteredHTML,\n\t\tuserCanCreatePages,\n\t\tpageOnFront,\n\t\tpageForPosts,\n\t\tuserPatternCategories,\n\t\trestBlockPatternCategories,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst isWeb = Platform.OS === 'web';\n\t\t\tconst {\n\t\t\t\tcanUser,\n\t\t\t\tgetRawEntityRecord,\n\t\t\t\tgetEntityRecord,\n\t\t\t\tgetUserPatternCategories,\n\t\t\t\tgetEntityRecords,\n\t\t\t\tgetBlockPatternCategories,\n\t\t\t} = select( coreStore );\n\t\t\tconst { get } = select( preferencesStore );\n\t\t\tconst { getBlockTypes } = select( blocksStore );\n\t\t\tconst siteSettings = canUser( 'read', 'settings' )\n\t\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tallowRightClickOverrides: get(\n\t\t\t\t\t'core',\n\t\t\t\t\t'allowRightClickOverrides'\n\t\t\t\t),\n\t\t\t\tblockTypes: getBlockTypes(),\n\t\t\t\tcanUseUnfilteredHTML: getRawEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\tpostId\n\t\t\t\t)?._links?.hasOwnProperty( 'wp:action-unfiltered-html' ),\n\t\t\t\tfocusMode: get( 'core', 'focusMode' ),\n\t\t\t\thasFixedToolbar:\n\t\t\t\t\tget( 'core', 'fixedToolbar' ) || ! isLargeViewport,\n\t\t\t\thiddenBlockTypes: get( 'core', 'hiddenBlockTypes' ),\n\t\t\t\tisDistractionFree: get( 'core', 'distractionFree' ),\n\t\t\t\tkeepCaretInsideBlock: get( 'core', 'keepCaretInsideBlock' ),\n\t\t\t\treusableBlocks: isWeb\n\t\t\t\t\t? getEntityRecords( 'postType', 'wp_block', {\n\t\t\t\t\t\t\tper_page: -1,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_BLOCKS_LIST, // Reusable blocks are fetched in the native version of this hook.\n\t\t\t\thasUploadPermissions: canUser( 'create', 'media' ) ?? true,\n\t\t\t\tuserCanCreatePages: canUser( 'create', 'pages' ),\n\t\t\t\tpageOnFront: siteSettings?.page_on_front,\n\t\t\t\tpageForPosts: siteSettings?.page_for_posts,\n\t\t\t\tuserPatternCategories: getUserPatternCategories(),\n\t\t\t\trestBlockPatternCategories: getBlockPatternCategories(),\n\t\t\t};\n\t\t},\n\t\t[ postType, postId, isLargeViewport ]\n\t);\n\n\tconst settingsBlockPatterns =\n\t\tsettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatterns; // WP 5.9\n\tconst settingsBlockPatternCategories =\n\t\tsettings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatternCategories; // WP 5.9\n\n\tconst blockPatterns = useMemo(\n\t\t() =>\n\t\t\t[ ...( settingsBlockPatterns || [] ) ].filter(\n\t\t\t\t( { postTypes } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t! postTypes ||\n\t\t\t\t\t\t( Array.isArray( postTypes ) &&\n\t\t\t\t\t\t\tpostTypes.includes( postType ) )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t),\n\t\t[ settingsBlockPatterns, postType ]\n\t);\n\n\tconst blockPatternCategories = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t...( settingsBlockPatternCategories || [] ),\n\t\t\t\t...( restBlockPatternCategories || [] ),\n\t\t\t].filter(\n\t\t\t\t( x, index, arr ) =>\n\t\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t\t),\n\t\t[ settingsBlockPatternCategories, restBlockPatternCategories ]\n\t);\n\n\tconst { undo, setIsInserterOpened } = useDispatch( editorStore );\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\t/**\n\t * Creates a Post entity.\n\t * This is utilised by the Link UI to allow for on-the-fly creation of Posts/Pages.\n\t *\n\t * @param {Object} options parameters for the post being created. These mirror those used on 3rd param of saveEntityRecord.\n\t * @return {Object} the post type object that was created.\n\t */\n\tconst createPageEntity = useCallback(\n\t\t( options ) => {\n\t\t\tif ( ! userCanCreatePages ) {\n\t\t\t\treturn Promise.reject( {\n\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t'You do not have permission to create Pages.'\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn saveEntityRecord( 'postType', 'page', options );\n\t\t},\n\t\t[ saveEntityRecord, userCanCreatePages ]\n\t);\n\n\tconst allowedBlockTypes = useMemo( () => {\n\t\t// Omit hidden block types if exists and non-empty.\n\t\tif ( hiddenBlockTypes && hiddenBlockTypes.length > 0 ) {\n\t\t\t// Defer to passed setting for `allowedBlockTypes` if provided as\n\t\t\t// anything other than `true` (where `true` is equivalent to allow\n\t\t\t// all block types).\n\t\t\tconst defaultAllowedBlockTypes =\n\t\t\t\ttrue === settings.allowedBlockTypes\n\t\t\t\t\t? blockTypes.map( ( { name } ) => name )\n\t\t\t\t\t: settings.allowedBlockTypes || [];\n\n\t\t\treturn defaultAllowedBlockTypes.filter(\n\t\t\t\t( type ) => ! hiddenBlockTypes.includes( type )\n\t\t\t);\n\t\t}\n\n\t\treturn settings.allowedBlockTypes;\n\t}, [ settings.allowedBlockTypes, hiddenBlockTypes, blockTypes ] );\n\n\tconst forceDisableFocusMode = settings.focusMode === false;\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\t...Object.fromEntries(\n\t\t\t\tObject.entries( settings ).filter( ( [ key ] ) =>\n\t\t\t\t\tBLOCK_EDITOR_SETTINGS.includes( key )\n\t\t\t\t)\n\t\t\t),\n\t\t\tallowedBlockTypes,\n\t\t\tallowRightClickOverrides,\n\t\t\tfocusMode: focusMode && ! forceDisableFocusMode,\n\t\t\thasFixedToolbar,\n\t\t\tisDistractionFree,\n\t\t\tkeepCaretInsideBlock,\n\t\t\tmediaUpload: hasUploadPermissions ? mediaUpload : undefined,\n\t\t\t__experimentalBlockPatterns: blockPatterns,\n\t\t\t__experimentalFetchBlockPatterns: async () => {\n\t\t\t\treturn ( await fetchBlockPatterns() ).filter(\n\t\t\t\t\t( { postTypes } ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t! postTypes ||\n\t\t\t\t\t\t\t( Array.isArray( postTypes ) &&\n\t\t\t\t\t\t\t\tpostTypes.includes( postType ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t},\n\t\t\t__experimentalReusableBlocks: reusableBlocks,\n\t\t\t__experimentalBlockPatternCategories: blockPatternCategories,\n\t\t\t__experimentalUserPatternCategories: userPatternCategories,\n\t\t\t__experimentalFetchLinkSuggestions: ( search, searchOptions ) =>\n\t\t\t\tfetchLinkSuggestions( search, searchOptions, settings ),\n\t\t\tinserterMediaCategories,\n\t\t\t__experimentalFetchRichUrlData: fetchUrlData,\n\t\t\t// Todo: This only checks the top level post, not the post within a template or any other entity that can be edited.\n\t\t\t// This might be better as a generic \"canUser\" selector.\n\t\t\t__experimentalCanUserUseUnfilteredHTML: canUseUnfilteredHTML,\n\t\t\t//Todo: this is only needed for native and should probably be removed.\n\t\t\t__experimentalUndo: undo,\n\t\t\t// Check whether we want all site editor frames to have outlines\n\t\t\t// including the navigation / pattern / parts editors.\n\t\t\toutlineMode: postType === 'wp_template',\n\t\t\t// Check these two properties: they were not present in the site editor.\n\t\t\t__experimentalCreatePageEntity: createPageEntity,\n\t\t\t__experimentalUserCanCreatePages: userCanCreatePages,\n\t\t\tpageOnFront,\n\t\t\tpageForPosts,\n\t\t\t__experimentalPreferPatternsOnRoot: postType === 'wp_template',\n\t\t\ttemplateLock:\n\t\t\t\tpostType === 'wp_navigation' ? 'insert' : settings.templateLock,\n\t\t\ttemplate:\n\t\t\t\tpostType === 'wp_navigation'\n\t\t\t\t\t? [ [ 'core/navigation', {}, [] ] ]\n\t\t\t\t\t: settings.template,\n\t\t\t__experimentalSetIsInserterOpened: setIsInserterOpened,\n\t\t} ),\n\t\t[\n\t\t\tallowedBlockTypes,\n\t\t\tallowRightClickOverrides,\n\t\t\tfocusMode,\n\t\t\tforceDisableFocusMode,\n\t\t\thasFixedToolbar,\n\t\t\tisDistractionFree,\n\t\t\tkeepCaretInsideBlock,\n\t\t\tsettings,\n\t\t\thasUploadPermissions,\n\t\t\treusableBlocks,\n\t\t\tuserPatternCategories,\n\t\t\tblockPatterns,\n\t\t\tblockPatternCategories,\n\t\t\tcanUseUnfilteredHTML,\n\t\t\tundo,\n\t\t\tcreatePageEntity,\n\t\t\tuserCanCreatePages,\n\t\t\tpageOnFront,\n\t\t\tpageForPosts,\n\t\t\tpostType,\n\t\t\tsetIsInserterOpened,\n\t\t]\n\t);\n}\n\nexport default useBlockEditorSettings;\n"],"mappings":"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"}
@@ -6,7 +6,6 @@ import { addFilter } from '@wordpress/hooks';
6
6
  import { privateApis as patternsPrivateApis } from '@wordpress/patterns';
7
7
  import { createHigherOrderComponent } from '@wordpress/compose';
8
8
  import { useBlockEditingMode } from '@wordpress/block-editor';
9
- import { hasBlockSupport } from '@wordpress/blocks';
10
9
  import { useSelect } from '@wordpress/data';
11
10
 
12
11
  /**
@@ -30,17 +29,22 @@ const {
30
29
  * @return {Component} Wrapped component.
31
30
  */
32
31
  const withPartialSyncingControls = createHigherOrderComponent(BlockEdit => props => {
33
- const blockEditingMode = useBlockEditingMode();
34
- const hasCustomFieldsSupport = hasBlockSupport(props.name, '__experimentalConnections', false);
35
- const isEditingPattern = useSelect(select => select(editorStore).getCurrentPostType() === PATTERN_TYPES.user, []);
36
- const shouldShowPartialSyncingControls = hasCustomFieldsSupport && props.isSelected && isEditingPattern && blockEditingMode === 'default' && Object.keys(PARTIAL_SYNCING_SUPPORTED_BLOCKS).includes(props.name);
32
+ const isSupportedBlock = Object.keys(PARTIAL_SYNCING_SUPPORTED_BLOCKS).includes(props.name);
37
33
  return createElement(Fragment, null, createElement(BlockEdit, {
38
34
  ...props
39
- }), shouldShowPartialSyncingControls && createElement(PartialSyncingControls, {
35
+ }), props.isSelected && isSupportedBlock && createElement(ControlsWithStoreSubscription, {
40
36
  ...props
41
37
  }));
42
38
  });
43
- if (window.__experimentalPatternPartialSyncing) {
44
- addFilter('editor.BlockEdit', 'core/editor/with-partial-syncing-controls', withPartialSyncingControls);
39
+
40
+ // Split into a separate component to avoid a store subscription
41
+ // on every block.
42
+ function ControlsWithStoreSubscription(props) {
43
+ const blockEditingMode = useBlockEditingMode();
44
+ const isEditingPattern = useSelect(select => select(editorStore).getCurrentPostType() === PATTERN_TYPES.user, []);
45
+ return isEditingPattern && blockEditingMode === 'default' && createElement(PartialSyncingControls, {
46
+ ...props
47
+ });
45
48
  }
49
+ addFilter('editor.BlockEdit', 'core/editor/with-partial-syncing-controls', withPartialSyncingControls);
46
50
  //# sourceMappingURL=pattern-partial-syncing.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["addFilter","privateApis","patternsPrivateApis","createHigherOrderComponent","useBlockEditingMode","hasBlockSupport","useSelect","store","editorStore","unlock","PartialSyncingControls","PATTERN_TYPES","PARTIAL_SYNCING_SUPPORTED_BLOCKS","withPartialSyncingControls","BlockEdit","props","blockEditingMode","hasCustomFieldsSupport","name","isEditingPattern","select","getCurrentPostType","user","shouldShowPartialSyncingControls","isSelected","Object","keys","includes","createElement","Fragment","window","__experimentalPatternPartialSyncing"],"sources":["@wordpress/editor/src/hooks/pattern-partial-syncing.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { useBlockEditingMode } from '@wordpress/block-editor';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nconst {\n\tPartialSyncingControls,\n\tPATTERN_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} = unlock( patternsPrivateApis );\n\n/**\n * Override the default edit UI to include a new block inspector control for\n * assigning a partial syncing controls to supported blocks in the pattern editor.\n * Currently, only the `core/paragraph` block is supported.\n *\n * @param {Component} BlockEdit Original component.\n *\n * @return {Component} Wrapped component.\n */\nconst withPartialSyncingControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst blockEditingMode = useBlockEditingMode();\n\t\tconst hasCustomFieldsSupport = hasBlockSupport(\n\t\t\tprops.name,\n\t\t\t'__experimentalConnections',\n\t\t\tfalse\n\t\t);\n\t\tconst isEditingPattern = useSelect(\n\t\t\t( select ) =>\n\t\t\t\tselect( editorStore ).getCurrentPostType() ===\n\t\t\t\tPATTERN_TYPES.user,\n\t\t\t[]\n\t\t);\n\n\t\tconst shouldShowPartialSyncingControls =\n\t\t\thasCustomFieldsSupport &&\n\t\t\tprops.isSelected &&\n\t\t\tisEditingPattern &&\n\t\t\tblockEditingMode === 'default' &&\n\t\t\tObject.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(\n\t\t\t\tprops.name\n\t\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t\t{ shouldShowPartialSyncingControls && (\n\t\t\t\t\t<PartialSyncingControls { ...props } />\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n\nif ( window.__experimentalPatternPartialSyncing ) {\n\taddFilter(\n\t\t'editor.BlockEdit',\n\t\t'core/editor/with-partial-syncing-controls',\n\t\twithPartialSyncingControls\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,WAAW,IAAIC,mBAAmB,QAAQ,qBAAqB;AACxE,SAASC,0BAA0B,QAAQ,oBAAoB;AAC/D,SAASC,mBAAmB,QAAQ,yBAAyB;AAC7D,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,WAAW,QAAQ,UAAU;AAC/C,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,MAAM;EACLC,sBAAsB;EACtBC,aAAa;EACbC;AACD,CAAC,GAAGH,MAAM,CAAEP,mBAAoB,CAAC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMW,0BAA0B,GAAGV,0BAA0B,CAC1DW,SAAS,IAAQC,KAAK,IAAM;EAC7B,MAAMC,gBAAgB,GAAGZ,mBAAmB,CAAC,CAAC;EAC9C,MAAMa,sBAAsB,GAAGZ,eAAe,CAC7CU,KAAK,CAACG,IAAI,EACV,2BAA2B,EAC3B,KACD,CAAC;EACD,MAAMC,gBAAgB,GAAGb,SAAS,CAC/Bc,MAAM,IACPA,MAAM,CAAEZ,WAAY,CAAC,CAACa,kBAAkB,CAAC,CAAC,KAC1CV,aAAa,CAACW,IAAI,EACnB,EACD,CAAC;EAED,MAAMC,gCAAgC,GACrCN,sBAAsB,IACtBF,KAAK,CAACS,UAAU,IAChBL,gBAAgB,IAChBH,gBAAgB,KAAK,SAAS,IAC9BS,MAAM,CAACC,IAAI,CAAEd,gCAAiC,CAAC,CAACe,QAAQ,CACvDZ,KAAK,CAACG,IACP,CAAC;EAEF,OACCU,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACd,SAAS;IAAA,GAAMC;EAAK,CAAI,CAAC,EACxBQ,gCAAgC,IACjCK,aAAA,CAAClB,sBAAsB;IAAA,GAAMK;EAAK,CAAI,CAEtC,CAAC;AAEL,CACD,CAAC;AAED,IAAKe,MAAM,CAACC,mCAAmC,EAAG;EACjD/B,SAAS,CACR,kBAAkB,EAClB,2CAA2C,EAC3Ca,0BACD,CAAC;AACF"}
1
+ {"version":3,"names":["addFilter","privateApis","patternsPrivateApis","createHigherOrderComponent","useBlockEditingMode","useSelect","store","editorStore","unlock","PartialSyncingControls","PATTERN_TYPES","PARTIAL_SYNCING_SUPPORTED_BLOCKS","withPartialSyncingControls","BlockEdit","props","isSupportedBlock","Object","keys","includes","name","createElement","Fragment","isSelected","ControlsWithStoreSubscription","blockEditingMode","isEditingPattern","select","getCurrentPostType","user"],"sources":["@wordpress/editor/src/hooks/pattern-partial-syncing.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { useBlockEditingMode } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nconst {\n\tPartialSyncingControls,\n\tPATTERN_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} = unlock( patternsPrivateApis );\n\n/**\n * Override the default edit UI to include a new block inspector control for\n * assigning a partial syncing controls to supported blocks in the pattern editor.\n * Currently, only the `core/paragraph` block is supported.\n *\n * @param {Component} BlockEdit Original component.\n *\n * @return {Component} Wrapped component.\n */\nconst withPartialSyncingControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst isSupportedBlock = Object.keys(\n\t\t\tPARTIAL_SYNCING_SUPPORTED_BLOCKS\n\t\t).includes( props.name );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t\t{ props.isSelected && isSupportedBlock && (\n\t\t\t\t\t<ControlsWithStoreSubscription { ...props } />\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n\n// Split into a separate component to avoid a store subscription\n// on every block.\nfunction ControlsWithStoreSubscription( props ) {\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst isEditingPattern = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editorStore ).getCurrentPostType() === PATTERN_TYPES.user,\n\t\t[]\n\t);\n\n\treturn (\n\t\tisEditingPattern &&\n\t\tblockEditingMode === 'default' && (\n\t\t\t<PartialSyncingControls { ...props } />\n\t\t)\n\t);\n}\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/with-partial-syncing-controls',\n\twithPartialSyncingControls\n);\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,WAAW,IAAIC,mBAAmB,QAAQ,qBAAqB;AACxE,SAASC,0BAA0B,QAAQ,oBAAoB;AAC/D,SAASC,mBAAmB,QAAQ,yBAAyB;AAC7D,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,WAAW,QAAQ,UAAU;AAC/C,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,MAAM;EACLC,sBAAsB;EACtBC,aAAa;EACbC;AACD,CAAC,GAAGH,MAAM,CAAEN,mBAAoB,CAAC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMU,0BAA0B,GAAGT,0BAA0B,CAC1DU,SAAS,IAAQC,KAAK,IAAM;EAC7B,MAAMC,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CACnCN,gCACD,CAAC,CAACO,QAAQ,CAAEJ,KAAK,CAACK,IAAK,CAAC;EAExB,OACCC,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACP,SAAS;IAAA,GAAMC;EAAK,CAAI,CAAC,EACxBA,KAAK,CAACQ,UAAU,IAAIP,gBAAgB,IACrCK,aAAA,CAACG,6BAA6B;IAAA,GAAMT;EAAK,CAAI,CAE7C,CAAC;AAEL,CACD,CAAC;;AAED;AACA;AACA,SAASS,6BAA6BA,CAAET,KAAK,EAAG;EAC/C,MAAMU,gBAAgB,GAAGpB,mBAAmB,CAAC,CAAC;EAC9C,MAAMqB,gBAAgB,GAAGpB,SAAS,CAC/BqB,MAAM,IACPA,MAAM,CAAEnB,WAAY,CAAC,CAACoB,kBAAkB,CAAC,CAAC,KAAKjB,aAAa,CAACkB,IAAI,EAClE,EACD,CAAC;EAED,OACCH,gBAAgB,IAChBD,gBAAgB,KAAK,SAAS,IAC7BJ,aAAA,CAACX,sBAAsB;IAAA,GAAMK;EAAK,CAAI,CACtC;AAEH;AAEAd,SAAS,CACR,kBAAkB,EAClB,2CAA2C,EAC3CY,0BACD,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
+ import './bindings';
4
5
  import './hooks';
5
6
  export { storeConfig, store } from './store';
6
7
  export * from './components';
@@ -1 +1 @@
1
- {"version":3,"names":["storeConfig","store","transformStyles"],"sources":["@wordpress/editor/src/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './hooks';\n\nexport { storeConfig, store } from './store';\nexport * from './components';\nexport * from './utils';\nexport * from './private-apis';\n\n/*\n * Backward compatibility\n */\nexport { transformStyles } from '@wordpress/block-editor';\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,SAAS;AAEhB,SAASA,WAAW,EAAEC,KAAK,QAAQ,SAAS;AAC5C,cAAc,cAAc;AAC5B,cAAc,SAAS;AACvB,cAAc,gBAAgB;;AAE9B;AACA;AACA;AACA,SAASC,eAAe,QAAQ,yBAAyB"}
1
+ {"version":3,"names":["storeConfig","store","transformStyles"],"sources":["@wordpress/editor/src/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './bindings';\nimport './hooks';\n\nexport { storeConfig, store } from './store';\nexport * from './components';\nexport * from './utils';\nexport * from './private-apis';\n\n/*\n * Backward compatibility\n */\nexport { transformStyles } from '@wordpress/block-editor';\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,YAAY;AACnB,OAAO,SAAS;AAEhB,SAASA,WAAW,EAAEC,KAAK,QAAQ,SAAS;AAC5C,cAAc,cAAc;AAC5B,cAAc,SAAS;AACvB,cAAc,gBAAgB;;AAE9B;AACA;AACA;AACA,SAASC,eAAe,QAAQ,yBAAyB"}
@@ -4,27 +4,31 @@
4
4
  import EditorCanvas from './components/editor-canvas';
5
5
  import { ExperimentalEditorProvider } from './components/provider';
6
6
  import { lock } from './lock-unlock';
7
+ import EnablePluginDocumentSettingPanelOption from './components/preferences-modal/enable-plugin-document-setting-panel';
7
8
  import { EntitiesSavedStatesExtensible } from './components/entities-saved-states';
8
9
  import useBlockEditorSettings from './components/provider/use-block-editor-settings';
9
10
  import DocumentTools from './components/document-tools';
10
11
  import InserterSidebar from './components/inserter-sidebar';
11
12
  import ListViewSidebar from './components/list-view-sidebar';
13
+ import PluginPostExcerpt from './components/post-excerpt/plugin';
12
14
  import PostPanelRow from './components/post-panel-row';
13
15
  import PostViewLink from './components/post-view-link';
14
16
  import PreviewDropdown from './components/preview-dropdown';
15
- import PluginPostExcerpt from './components/post-excerpt/plugin';
17
+ import PreferencesModal from './components/preferences-modal';
16
18
  export const privateApis = {};
17
19
  lock(privateApis, {
18
20
  DocumentTools,
19
21
  EditorCanvas,
20
22
  ExperimentalEditorProvider,
23
+ EnablePluginDocumentSettingPanelOption,
21
24
  EntitiesSavedStatesExtensible,
22
25
  InserterSidebar,
23
26
  ListViewSidebar,
27
+ PluginPostExcerpt,
24
28
  PostPanelRow,
25
29
  PostViewLink,
26
30
  PreviewDropdown,
27
- PluginPostExcerpt,
31
+ PreferencesModal,
28
32
  // This is a temporary private API while we're updating the site editor to use EditorProvider.
29
33
  useBlockEditorSettings
30
34
  });