@wordpress/block-editor 12.14.0 → 12.15.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 (240) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -1
  3. package/build/components/block-list/block.native.js +2 -0
  4. package/build/components/block-list/block.native.js.map +1 -1
  5. package/build/components/block-parent-selector/index.js +1 -1
  6. package/build/components/block-parent-selector/index.js.map +1 -1
  7. package/build/components/block-pattern-setup/index.js +25 -16
  8. package/build/components/block-pattern-setup/index.js.map +1 -1
  9. package/build/components/block-pattern-setup/setup-toolbar.js +4 -2
  10. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  11. package/build/components/block-patterns-list/index.js +36 -19
  12. package/build/components/block-patterns-list/index.js.map +1 -1
  13. package/build/components/block-rename/index.js +28 -0
  14. package/build/components/block-rename/index.js.map +1 -0
  15. package/build/components/block-rename/is-empty-string.js +10 -0
  16. package/build/components/block-rename/is-empty-string.js.map +1 -0
  17. package/build/components/block-rename/modal.js +87 -0
  18. package/build/components/block-rename/modal.js.map +1 -0
  19. package/build/components/block-rename/rename-control.js +74 -0
  20. package/build/components/block-rename/rename-control.js.map +1 -0
  21. package/build/components/block-rename/use-block-rename.js +17 -0
  22. package/build/components/block-rename/use-block-rename.js.map +1 -0
  23. package/build/components/block-settings-menu/block-settings-dropdown.js +33 -20
  24. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  25. package/build/components/block-settings-menu-controls/index.js +7 -0
  26. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  27. package/build/components/block-toolbar/block-toolbar-menu.native.js +1 -1
  28. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  29. package/build/components/block-types-list/index.js +6 -2
  30. package/build/components/block-types-list/index.js.map +1 -1
  31. package/build/components/date-format-picker/index.js +8 -1
  32. package/build/components/date-format-picker/index.js.map +1 -1
  33. package/build/components/global-styles/advanced-panel.js +1 -1
  34. package/build/components/global-styles/advanced-panel.js.map +1 -1
  35. package/build/components/image-size-control/index.js +0 -5
  36. package/build/components/image-size-control/index.js.map +1 -1
  37. package/build/components/inner-blocks/index.js +3 -1
  38. package/build/components/inner-blocks/index.js.map +1 -1
  39. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js +29 -31
  40. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  41. package/build/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  42. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  43. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +1 -1
  44. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  45. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +1 -1
  46. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  47. package/build/components/inserter/block-patterns-tab/utils.js +3 -4
  48. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
  49. package/build/components/inserter/hooks/use-patterns-state.js +2 -1
  50. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  51. package/build/components/inserter-listbox/index.js +11 -6
  52. package/build/components/inserter-listbox/index.js.map +1 -1
  53. package/build/components/inserter-listbox/item.js +24 -23
  54. package/build/components/inserter-listbox/item.js.map +1 -1
  55. package/build/components/inserter-listbox/row.js +5 -5
  56. package/build/components/inserter-listbox/row.js.map +1 -1
  57. package/build/components/list-view/use-list-view-expand-selected-item.js +2 -3
  58. package/build/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
  59. package/build/components/preview-options/index.js +4 -2
  60. package/build/components/preview-options/index.js.map +1 -1
  61. package/build/components/rich-text/index.native.js +1 -1
  62. package/build/components/rich-text/index.native.js.map +1 -1
  63. package/build/components/rich-text/native/index.native.js +34 -3
  64. package/build/components/rich-text/native/index.native.js.map +1 -1
  65. package/build/components/rich-text/use-input-rules.js +30 -1
  66. package/build/components/rich-text/use-input-rules.js.map +1 -1
  67. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  68. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  69. package/build/components/use-block-drop-zone/index.js +4 -1
  70. package/build/components/use-block-drop-zone/index.js.map +1 -1
  71. package/build/components/use-moving-animation/index.js +2 -1
  72. package/build/components/use-moving-animation/index.js.map +1 -1
  73. package/build/components/use-settings/index.js +2 -2
  74. package/build/components/use-settings/index.js.map +1 -1
  75. package/build/hooks/block-renaming.js +42 -0
  76. package/build/hooks/block-renaming.js.map +1 -1
  77. package/build/hooks/custom-fields.js +53 -48
  78. package/build/hooks/custom-fields.js.map +1 -1
  79. package/build/hooks/index.js +0 -1
  80. package/build/hooks/index.js.map +1 -1
  81. package/build/hooks/layout.js +13 -7
  82. package/build/hooks/layout.js.map +1 -1
  83. package/build/layouts/constrained.js +4 -3
  84. package/build/layouts/constrained.js.map +1 -1
  85. package/build/store/selectors.js +2 -0
  86. package/build/store/selectors.js.map +1 -1
  87. package/build/utils/transform-styles/index.js +26 -6
  88. package/build/utils/transform-styles/index.js.map +1 -1
  89. package/build-module/components/block-list/block.native.js +2 -0
  90. package/build-module/components/block-list/block.native.js.map +1 -1
  91. package/build-module/components/block-parent-selector/index.js +1 -1
  92. package/build-module/components/block-parent-selector/index.js.map +1 -1
  93. package/build-module/components/block-pattern-setup/index.js +24 -15
  94. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  95. package/build-module/components/block-pattern-setup/setup-toolbar.js +4 -2
  96. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  97. package/build-module/components/block-patterns-list/index.js +36 -19
  98. package/build-module/components/block-patterns-list/index.js.map +1 -1
  99. package/build-module/components/block-rename/index.js +4 -0
  100. package/build-module/components/block-rename/index.js.map +1 -0
  101. package/build-module/components/block-rename/is-empty-string.js +4 -0
  102. package/build-module/components/block-rename/is-empty-string.js.map +1 -0
  103. package/build-module/components/block-rename/modal.js +79 -0
  104. package/build-module/components/block-rename/modal.js.map +1 -0
  105. package/build-module/components/block-rename/rename-control.js +66 -0
  106. package/build-module/components/block-rename/rename-control.js.map +1 -0
  107. package/build-module/components/block-rename/use-block-rename.js +10 -0
  108. package/build-module/components/block-rename/use-block-rename.js.map +1 -0
  109. package/build-module/components/block-settings-menu/block-settings-dropdown.js +34 -21
  110. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  111. package/build-module/components/block-settings-menu-controls/index.js +7 -0
  112. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  113. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +1 -1
  114. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  115. package/build-module/components/block-types-list/index.js +6 -2
  116. package/build-module/components/block-types-list/index.js.map +1 -1
  117. package/build-module/components/date-format-picker/index.js +8 -1
  118. package/build-module/components/date-format-picker/index.js.map +1 -1
  119. package/build-module/components/global-styles/advanced-panel.js +1 -1
  120. package/build-module/components/global-styles/advanced-panel.js.map +1 -1
  121. package/build-module/components/image-size-control/index.js +0 -5
  122. package/build-module/components/image-size-control/index.js.map +1 -1
  123. package/build-module/components/inner-blocks/index.js +3 -1
  124. package/build-module/components/inner-blocks/index.js.map +1 -1
  125. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js +30 -32
  126. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  127. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  128. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  129. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
  130. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  131. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +2 -2
  132. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  133. package/build-module/components/inserter/block-patterns-tab/utils.js +3 -4
  134. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
  135. package/build-module/components/inserter/hooks/use-patterns-state.js +2 -1
  136. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  137. package/build-module/components/inserter-listbox/index.js +13 -8
  138. package/build-module/components/inserter-listbox/index.js.map +1 -1
  139. package/build-module/components/inserter-listbox/item.js +25 -23
  140. package/build-module/components/inserter-listbox/item.js.map +1 -1
  141. package/build-module/components/inserter-listbox/row.js +6 -5
  142. package/build-module/components/inserter-listbox/row.js.map +1 -1
  143. package/build-module/components/list-view/use-list-view-expand-selected-item.js +2 -3
  144. package/build-module/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
  145. package/build-module/components/preview-options/index.js +4 -2
  146. package/build-module/components/preview-options/index.js.map +1 -1
  147. package/build-module/components/rich-text/index.native.js +1 -1
  148. package/build-module/components/rich-text/index.native.js.map +1 -1
  149. package/build-module/components/rich-text/native/index.native.js +34 -3
  150. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  151. package/build-module/components/rich-text/use-input-rules.js +31 -2
  152. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  153. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  154. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  155. package/build-module/components/use-block-drop-zone/index.js +4 -1
  156. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  157. package/build-module/components/use-moving-animation/index.js +2 -1
  158. package/build-module/components/use-moving-animation/index.js.map +1 -1
  159. package/build-module/components/use-settings/index.js +2 -2
  160. package/build-module/components/use-settings/index.js.map +1 -1
  161. package/build-module/hooks/block-renaming.js +40 -0
  162. package/build-module/hooks/block-renaming.js.map +1 -1
  163. package/build-module/hooks/custom-fields.js +53 -48
  164. package/build-module/hooks/custom-fields.js.map +1 -1
  165. package/build-module/hooks/index.js +0 -1
  166. package/build-module/hooks/index.js.map +1 -1
  167. package/build-module/hooks/layout.js +13 -7
  168. package/build-module/hooks/layout.js.map +1 -1
  169. package/build-module/layouts/constrained.js +4 -3
  170. package/build-module/layouts/constrained.js.map +1 -1
  171. package/build-module/store/selectors.js +2 -0
  172. package/build-module/store/selectors.js.map +1 -1
  173. package/build-module/utils/transform-styles/index.js +24 -7
  174. package/build-module/utils/transform-styles/index.js.map +1 -1
  175. package/build-style/content-rtl.css +6 -6
  176. package/build-style/content.css +6 -6
  177. package/build-style/style-rtl.css +10 -5
  178. package/build-style/style.css +10 -5
  179. package/package.json +31 -31
  180. package/src/components/block-list/block.native.js +2 -0
  181. package/src/components/block-parent-selector/index.js +1 -1
  182. package/src/components/block-pattern-setup/index.js +38 -22
  183. package/src/components/block-pattern-setup/setup-toolbar.js +2 -0
  184. package/src/components/block-pattern-setup/style.scss +4 -1
  185. package/src/components/block-patterns-list/README.md +4 -4
  186. package/src/components/block-patterns-list/index.js +60 -34
  187. package/src/components/block-patterns-list/style.scss +7 -0
  188. package/src/components/block-rename/index.js +3 -0
  189. package/src/components/block-rename/is-empty-string.js +3 -0
  190. package/src/components/block-rename/modal.js +115 -0
  191. package/src/components/block-rename/rename-control.js +80 -0
  192. package/src/components/block-rename/use-block-rename.js +10 -0
  193. package/src/components/block-settings-menu/block-settings-dropdown.js +38 -34
  194. package/src/components/block-settings-menu-controls/index.js +9 -0
  195. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -4
  196. package/src/components/block-types-list/index.js +5 -4
  197. package/src/components/button-block-appender/content.scss +2 -2
  198. package/src/components/date-format-picker/index.js +7 -0
  199. package/src/components/editable-text/README.md +0 -36
  200. package/src/components/global-styles/advanced-panel.js +1 -1
  201. package/src/components/image-size-control/index.js +0 -6
  202. package/src/components/inner-blocks/index.js +6 -2
  203. package/src/components/inner-blocks/warning-max-depth-exceeded.native.js +57 -33
  204. package/src/components/inserter/block-patterns-explorer/pattern-list.js +5 -1
  205. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +7 -3
  206. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +6 -1
  207. package/src/components/inserter/block-patterns-tab/utils.js +6 -4
  208. package/src/components/inserter/hooks/use-patterns-state.js +3 -1
  209. package/src/components/inserter-listbox/index.js +11 -7
  210. package/src/components/inserter-listbox/item.js +11 -12
  211. package/src/components/inserter-listbox/row.js +6 -12
  212. package/src/components/list-view/use-list-view-expand-selected-item.js +7 -8
  213. package/src/components/plain-text/README.md +0 -28
  214. package/src/components/preview-options/index.js +2 -0
  215. package/src/components/rich-text/README.md +0 -58
  216. package/src/components/rich-text/index.native.js +1 -1
  217. package/src/components/rich-text/native/index.native.js +45 -2
  218. package/src/components/rich-text/use-input-rules.js +30 -2
  219. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  220. package/src/components/url-input/README.md +1 -74
  221. package/src/components/use-block-drop-zone/index.js +4 -1
  222. package/src/components/use-moving-animation/index.js +1 -1
  223. package/src/components/use-settings/index.js +2 -2
  224. package/src/components/use-settings/test/index.js +1 -1
  225. package/src/hooks/block-renaming.js +47 -0
  226. package/src/hooks/custom-fields.js +68 -65
  227. package/src/hooks/index.js +0 -1
  228. package/src/hooks/layout.js +12 -8
  229. package/src/hooks/test/__snapshots__/align.native.js.snap +5 -5
  230. package/src/layouts/constrained.js +57 -50
  231. package/src/store/selectors.js +2 -0
  232. package/src/style.scss +1 -1
  233. package/src/utils/test/transform-styles.js +49 -0
  234. package/src/utils/transform-styles/index.js +39 -13
  235. package/build/hooks/block-rename-ui.js +0 -167
  236. package/build/hooks/block-rename-ui.js.map +0 -1
  237. package/build-module/hooks/block-rename-ui.js +0 -159
  238. package/build-module/hooks/block-rename-ui.js.map +0 -1
  239. package/src/hooks/block-rename-ui.js +0 -228
  240. /package/src/{hooks/block-rename-ui.scss → components/block-rename/style.scss} +0 -0
@@ -9,7 +9,7 @@ import { TouchableWithoutFeedback, View } from 'react-native';
9
9
  */
10
10
  import { __, sprintf } from '@wordpress/i18n';
11
11
  import { useState } from '@wordpress/element';
12
- import { useDispatch, useSelect } from '@wordpress/data';
12
+ import { useSelect } from '@wordpress/data';
13
13
 
14
14
  /**
15
15
  * Internal dependencies
@@ -19,48 +19,46 @@ import UnsupportedBlockDetails from '../unsupported-block-details';
19
19
  import { store as blockEditorStore } from '../../store';
20
20
  import { MAX_NESTING_DEPTH } from './constants';
21
21
  import useUnsupportedBlockEditor from '../use-unsupported-block-editor';
22
+ import { useConvertToGroupButtons, useConvertToGroupButtonProps } from '../convert-to-group-buttons';
23
+ const EMPTY_ARRAY = [];
22
24
  const WarningMaxDepthExceeded = ({
23
25
  clientId
24
26
  }) => {
25
27
  const [showDetails, setShowDetails] = useState(false);
28
+ const isSelected = useSelect(select => select(blockEditorStore).isBlockSelected(clientId), [clientId]);
29
+
30
+ // We rely on the logic related to the Group/Ungroup buttons used in the block options to
31
+ // determine whether to use the Ungroup action.
32
+ const convertToGroupButtonProps = useConvertToGroupButtonProps([clientId]);
26
33
  const {
27
- isSelected,
28
- innerBlocks
29
- } = useSelect(select => {
30
- const {
31
- getBlock,
32
- isBlockSelected
33
- } = select(blockEditorStore);
34
- return {
35
- innerBlocks: getBlock(clientId)?.innerBlocks || [],
36
- isSelected: isBlockSelected(clientId)
37
- };
38
- }, [clientId]);
39
- const {
40
- replaceBlocks
41
- } = useDispatch(blockEditorStore);
34
+ isUngroupable
35
+ } = convertToGroupButtonProps;
36
+ const convertToGroupButtons = useConvertToGroupButtons({
37
+ ...convertToGroupButtonProps
38
+ });
39
+ const onUngroup = convertToGroupButtons.ungroup.onSelect;
42
40
  const {
43
41
  isUnsupportedBlockEditorSupported,
44
42
  canEnableUnsupportedBlockEditor
45
43
  } = useUnsupportedBlockEditor(clientId);
46
- const onUngroup = () => {
47
- if (!innerBlocks.length) {
48
- return;
49
- }
50
- replaceBlocks(clientId, innerBlocks);
51
- };
52
- let description;
53
- // When UBE can't be used, the description mentions using the web browser to edit the block.
44
+
45
+ /* translators: Warning related to having blocks deeply nested. %d: The deepest nesting level. */
46
+ const descriptionFormat = __('Blocks nested deeper than %d levels may not render properly in the mobile editor.');
47
+ let description = sprintf(descriptionFormat, MAX_NESTING_DEPTH);
54
48
  if (!isUnsupportedBlockEditorSupported && !canEnableUnsupportedBlockEditor) {
55
- /* translators: Warning related to having blocks deeply nested. %d: The deepest nesting level. */
56
- const descriptionFormat = __('Blocks nested deeper than %d levels may not render properly in the mobile editor. For this reason, we recommend flattening the content by ungrouping the block or editing the block using your web browser.');
57
- description = sprintf(descriptionFormat, MAX_NESTING_DEPTH);
49
+ // When UBE can't be used, the description mentions using the web browser to edit the block.
50
+ description += ' ' + /* translators: Recommendation included in a warning related to having blocks deeply nested. */
51
+ __('For this reason, we recommend editing the block using your web browser.');
58
52
  }
59
53
  // Otherwise, the description mentions using the web editor (i.e. UBE).
60
54
  else {
61
- /* translators: Warning related to having blocks deeply nested. %d: The deepest nesting level. */
62
- const descriptionFormat = __('Blocks nested deeper than %d levels may not render properly in the mobile editor. For this reason, we recommend flattening the content by ungrouping the block or editing the block using the web editor.');
63
- description = sprintf(descriptionFormat, MAX_NESTING_DEPTH);
55
+ description += ' ' + /* translators: Recommendation included in a warning related to having blocks deeply nested. */
56
+ __('For this reason, we recommend editing the block using the web editor.');
57
+ }
58
+ // If the block can be flattened, we also suggest to ungroup the block.
59
+ if (isUngroupable) {
60
+ description += ' ' + /* translators: Alternative option included in a warning related to having blocks deeply nested. */
61
+ __('Alternatively, you can flatten the content by ungrouping the block.');
64
62
  }
65
63
  return createElement(TouchableWithoutFeedback, {
66
64
  disabled: !isSelected,
@@ -76,10 +74,10 @@ const WarningMaxDepthExceeded = ({
76
74
  onCloseSheet: () => setShowDetails(false),
77
75
  title: __('Deeply nested block'),
78
76
  description: description,
79
- customActions: [{
77
+ customActions: isUngroupable ? [{
80
78
  label: __('Ungroup block'),
81
79
  onPress: onUngroup
82
- }]
80
+ }] : EMPTY_ARRAY
83
81
  })));
84
82
  };
85
83
  export default WarningMaxDepthExceeded;
@@ -1 +1 @@
1
- {"version":3,"names":["TouchableWithoutFeedback","View","__","sprintf","useState","useDispatch","useSelect","Warning","UnsupportedBlockDetails","store","blockEditorStore","MAX_NESTING_DEPTH","useUnsupportedBlockEditor","WarningMaxDepthExceeded","clientId","showDetails","setShowDetails","isSelected","innerBlocks","select","getBlock","isBlockSelected","replaceBlocks","isUnsupportedBlockEditorSupported","canEnableUnsupportedBlockEditor","onUngroup","length","description","descriptionFormat","createElement","disabled","accessibilityLabel","accessibilityRole","accessibilityHint","onPress","message","showSheet","onCloseSheet","title","customActions","label"],"sources":["@wordpress/block-editor/src/components/inner-blocks/warning-max-depth-exceeded.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { TouchableWithoutFeedback, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Warning from '../warning';\nimport UnsupportedBlockDetails from '../unsupported-block-details';\nimport { store as blockEditorStore } from '../../store';\nimport { MAX_NESTING_DEPTH } from './constants';\nimport useUnsupportedBlockEditor from '../use-unsupported-block-editor';\n\nconst WarningMaxDepthExceeded = ( { clientId } ) => {\n\tconst [ showDetails, setShowDetails ] = useState( false );\n\n\tconst { isSelected, innerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, isBlockSelected } = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tinnerBlocks: getBlock( clientId )?.innerBlocks || [],\n\t\t\t\tisSelected: isBlockSelected( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\n\tconst {\n\t\tisUnsupportedBlockEditorSupported,\n\t\tcanEnableUnsupportedBlockEditor,\n\t} = useUnsupportedBlockEditor( clientId );\n\n\tconst onUngroup = () => {\n\t\tif ( ! innerBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\treplaceBlocks( clientId, innerBlocks );\n\t};\n\n\tlet description;\n\t// When UBE can't be used, the description mentions using the web browser to edit the block.\n\tif (\n\t\t! isUnsupportedBlockEditorSupported &&\n\t\t! canEnableUnsupportedBlockEditor\n\t) {\n\t\t/* translators: Warning related to having blocks deeply nested. %d: The deepest nesting level. */\n\t\tconst descriptionFormat = __(\n\t\t\t'Blocks nested deeper than %d levels may not render properly in the mobile editor. For this reason, we recommend flattening the content by ungrouping the block or editing the block using your web browser.'\n\t\t);\n\t\tdescription = sprintf( descriptionFormat, MAX_NESTING_DEPTH );\n\t}\n\t// Otherwise, the description mentions using the web editor (i.e. UBE).\n\telse {\n\t\t/* translators: Warning related to having blocks deeply nested. %d: The deepest nesting level. */\n\t\tconst descriptionFormat = __(\n\t\t\t'Blocks nested deeper than %d levels may not render properly in the mobile editor. For this reason, we recommend flattening the content by ungrouping the block or editing the block using the web editor.'\n\t\t);\n\t\tdescription = sprintf( descriptionFormat, MAX_NESTING_DEPTH );\n\t}\n\n\treturn (\n\t\t<TouchableWithoutFeedback\n\t\t\tdisabled={ ! isSelected }\n\t\t\taccessibilityLabel={ __( 'Warning message' ) }\n\t\t\taccessibilityRole={ 'button' }\n\t\t\taccessibilityHint={ __( 'Tap here to show more details.' ) }\n\t\t\tonPress={ () => setShowDetails( true ) }\n\t\t>\n\t\t\t<View>\n\t\t\t\t<Warning\n\t\t\t\t\tmessage={ __(\n\t\t\t\t\t\t'Block cannot be rendered because it is deeply nested. Tap here for more details.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<UnsupportedBlockDetails\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tshowSheet={ showDetails }\n\t\t\t\t\tonCloseSheet={ () => setShowDetails( false ) }\n\t\t\t\t\ttitle={ __( 'Deeply nested block' ) }\n\t\t\t\t\tdescription={ description }\n\t\t\t\t\tcustomActions={ [\n\t\t\t\t\t\t{ label: __( 'Ungroup block' ), onPress: onUngroup },\n\t\t\t\t\t] }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t</TouchableWithoutFeedback>\n\t);\n};\n\nexport default WarningMaxDepthExceeded;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,wBAAwB,EAAEC,IAAI,QAAQ,cAAc;;AAE7D;AACA;AACA;AACA,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;;AAExD;AACA;AACA;AACA,OAAOC,OAAO,MAAM,YAAY;AAChC,OAAOC,uBAAuB,MAAM,8BAA8B;AAClE,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,iBAAiB,QAAQ,aAAa;AAC/C,OAAOC,yBAAyB,MAAM,iCAAiC;AAEvE,MAAMC,uBAAuB,GAAGA,CAAE;EAAEC;AAAS,CAAC,KAAM;EACnD,MAAM,CAAEC,WAAW,EAAEC,cAAc,CAAE,GAAGZ,QAAQ,CAAE,KAAM,CAAC;EAEzD,MAAM;IAAEa,UAAU;IAAEC;EAAY,CAAC,GAAGZ,SAAS,CAC1Ca,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC;IAAgB,CAAC,GAAGF,MAAM,CAAET,gBAAiB,CAAC;IAChE,OAAO;MACNQ,WAAW,EAAEE,QAAQ,CAAEN,QAAS,CAAC,EAAEI,WAAW,IAAI,EAAE;MACpDD,UAAU,EAAEI,eAAe,CAAEP,QAAS;IACvC,CAAC;EACF,CAAC,EACD,CAAEA,QAAQ,CACX,CAAC;EACD,MAAM;IAAEQ;EAAc,CAAC,GAAGjB,WAAW,CAAEK,gBAAiB,CAAC;EAEzD,MAAM;IACLa,iCAAiC;IACjCC;EACD,CAAC,GAAGZ,yBAAyB,CAAEE,QAAS,CAAC;EAEzC,MAAMW,SAAS,GAAGA,CAAA,KAAM;IACvB,IAAK,CAAEP,WAAW,CAACQ,MAAM,EAAG;MAC3B;IACD;IAEAJ,aAAa,CAAER,QAAQ,EAAEI,WAAY,CAAC;EACvC,CAAC;EAED,IAAIS,WAAW;EACf;EACA,IACC,CAAEJ,iCAAiC,IACnC,CAAEC,+BAA+B,EAChC;IACD;IACA,MAAMI,iBAAiB,GAAG1B,EAAE,CAC3B,6MACD,CAAC;IACDyB,WAAW,GAAGxB,OAAO,CAAEyB,iBAAiB,EAAEjB,iBAAkB,CAAC;EAC9D;EACA;EAAA,KACK;IACJ;IACA,MAAMiB,iBAAiB,GAAG1B,EAAE,CAC3B,2MACD,CAAC;IACDyB,WAAW,GAAGxB,OAAO,CAAEyB,iBAAiB,EAAEjB,iBAAkB,CAAC;EAC9D;EAEA,OACCkB,aAAA,CAAC7B,wBAAwB;IACxB8B,QAAQ,EAAG,CAAEb,UAAY;IACzBc,kBAAkB,EAAG7B,EAAE,CAAE,iBAAkB,CAAG;IAC9C8B,iBAAiB,EAAG,QAAU;IAC9BC,iBAAiB,EAAG/B,EAAE,CAAE,gCAAiC,CAAG;IAC5DgC,OAAO,EAAGA,CAAA,KAAMlB,cAAc,CAAE,IAAK;EAAG,GAExCa,aAAA,CAAC5B,IAAI,QACJ4B,aAAA,CAACtB,OAAO;IACP4B,OAAO,EAAGjC,EAAE,CACX,kFACD;EAAG,CACH,CAAC,EACF2B,aAAA,CAACrB,uBAAuB;IACvBM,QAAQ,EAAGA,QAAU;IACrBsB,SAAS,EAAGrB,WAAa;IACzBsB,YAAY,EAAGA,CAAA,KAAMrB,cAAc,CAAE,KAAM,CAAG;IAC9CsB,KAAK,EAAGpC,EAAE,CAAE,qBAAsB,CAAG;IACrCyB,WAAW,EAAGA,WAAa;IAC3BY,aAAa,EAAG,CACf;MAAEC,KAAK,EAAEtC,EAAE,CAAE,eAAgB,CAAC;MAAEgC,OAAO,EAAET;IAAU,CAAC;EAClD,CACH,CACI,CACmB,CAAC;AAE7B,CAAC;AAED,eAAeZ,uBAAuB"}
1
+ {"version":3,"names":["TouchableWithoutFeedback","View","__","sprintf","useState","useSelect","Warning","UnsupportedBlockDetails","store","blockEditorStore","MAX_NESTING_DEPTH","useUnsupportedBlockEditor","useConvertToGroupButtons","useConvertToGroupButtonProps","EMPTY_ARRAY","WarningMaxDepthExceeded","clientId","showDetails","setShowDetails","isSelected","select","isBlockSelected","convertToGroupButtonProps","isUngroupable","convertToGroupButtons","onUngroup","ungroup","onSelect","isUnsupportedBlockEditorSupported","canEnableUnsupportedBlockEditor","descriptionFormat","description","createElement","disabled","accessibilityLabel","accessibilityRole","accessibilityHint","onPress","message","showSheet","onCloseSheet","title","customActions","label"],"sources":["@wordpress/block-editor/src/components/inner-blocks/warning-max-depth-exceeded.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { TouchableWithoutFeedback, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Warning from '../warning';\nimport UnsupportedBlockDetails from '../unsupported-block-details';\nimport { store as blockEditorStore } from '../../store';\nimport { MAX_NESTING_DEPTH } from './constants';\nimport useUnsupportedBlockEditor from '../use-unsupported-block-editor';\nimport {\n\tuseConvertToGroupButtons,\n\tuseConvertToGroupButtonProps,\n} from '../convert-to-group-buttons';\n\nconst EMPTY_ARRAY = [];\n\nconst WarningMaxDepthExceeded = ( { clientId } ) => {\n\tconst [ showDetails, setShowDetails ] = useState( false );\n\n\tconst isSelected = useSelect(\n\t\t( select ) => select( blockEditorStore ).isBlockSelected( clientId ),\n\t\t[ clientId ]\n\t);\n\n\t// We rely on the logic related to the Group/Ungroup buttons used in the block options to\n\t// determine whether to use the Ungroup action.\n\tconst convertToGroupButtonProps = useConvertToGroupButtonProps( [\n\t\tclientId,\n\t] );\n\tconst { isUngroupable } = convertToGroupButtonProps;\n\tconst convertToGroupButtons = useConvertToGroupButtons( {\n\t\t...convertToGroupButtonProps,\n\t} );\n\tconst onUngroup = convertToGroupButtons.ungroup.onSelect;\n\n\tconst {\n\t\tisUnsupportedBlockEditorSupported,\n\t\tcanEnableUnsupportedBlockEditor,\n\t} = useUnsupportedBlockEditor( clientId );\n\n\t/* translators: Warning related to having blocks deeply nested. %d: The deepest nesting level. */\n\tconst descriptionFormat = __(\n\t\t'Blocks nested deeper than %d levels may not render properly in the mobile editor.'\n\t);\n\tlet description = sprintf( descriptionFormat, MAX_NESTING_DEPTH );\n\tif (\n\t\t! isUnsupportedBlockEditorSupported &&\n\t\t! canEnableUnsupportedBlockEditor\n\t) {\n\t\t// When UBE can't be used, the description mentions using the web browser to edit the block.\n\t\tdescription +=\n\t\t\t' ' +\n\t\t\t/* translators: Recommendation included in a warning related to having blocks deeply nested. */\n\t\t\t__(\n\t\t\t\t'For this reason, we recommend editing the block using your web browser.'\n\t\t\t);\n\t}\n\t// Otherwise, the description mentions using the web editor (i.e. UBE).\n\telse {\n\t\tdescription +=\n\t\t\t' ' +\n\t\t\t/* translators: Recommendation included in a warning related to having blocks deeply nested. */\n\t\t\t__(\n\t\t\t\t'For this reason, we recommend editing the block using the web editor.'\n\t\t\t);\n\t}\n\t// If the block can be flattened, we also suggest to ungroup the block.\n\tif ( isUngroupable ) {\n\t\tdescription +=\n\t\t\t' ' +\n\t\t\t/* translators: Alternative option included in a warning related to having blocks deeply nested. */\n\t\t\t__(\n\t\t\t\t'Alternatively, you can flatten the content by ungrouping the block.'\n\t\t\t);\n\t}\n\n\treturn (\n\t\t<TouchableWithoutFeedback\n\t\t\tdisabled={ ! isSelected }\n\t\t\taccessibilityLabel={ __( 'Warning message' ) }\n\t\t\taccessibilityRole={ 'button' }\n\t\t\taccessibilityHint={ __( 'Tap here to show more details.' ) }\n\t\t\tonPress={ () => setShowDetails( true ) }\n\t\t>\n\t\t\t<View>\n\t\t\t\t<Warning\n\t\t\t\t\tmessage={ __(\n\t\t\t\t\t\t'Block cannot be rendered because it is deeply nested. Tap here for more details.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<UnsupportedBlockDetails\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tshowSheet={ showDetails }\n\t\t\t\t\tonCloseSheet={ () => setShowDetails( false ) }\n\t\t\t\t\ttitle={ __( 'Deeply nested block' ) }\n\t\t\t\t\tdescription={ description }\n\t\t\t\t\tcustomActions={\n\t\t\t\t\t\tisUngroupable\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: __( 'Ungroup block' ),\n\t\t\t\t\t\t\t\t\t\tonPress: onUngroup,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t: EMPTY_ARRAY\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t</TouchableWithoutFeedback>\n\t);\n};\n\nexport default WarningMaxDepthExceeded;\n"],"mappings":"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"}
@@ -18,7 +18,7 @@ import InserterListbox from '../../inserter-listbox';
18
18
  import { searchItems } from '../search-items';
19
19
  import BlockPatternsPaging from '../../block-patterns-paging';
20
20
  import usePatternsPaging from '../hooks/use-patterns-paging';
21
- import { allPatternsCategory, myPatternsCategory } from '../block-patterns-tab/utils';
21
+ import { PATTERN_TYPES, allPatternsCategory, myPatternsCategory } from '../block-patterns-tab/utils';
22
22
  function PatternsListHeader({
23
23
  filterValue,
24
24
  filteredBlockPatternsLength
@@ -50,7 +50,7 @@ function PatternList({
50
50
  if (selectedCategory === allPatternsCategory.name) {
51
51
  return true;
52
52
  }
53
- if (selectedCategory === myPatternsCategory.name && pattern.id) {
53
+ if (selectedCategory === myPatternsCategory.name && pattern.type === PATTERN_TYPES.user) {
54
54
  return true;
55
55
  }
56
56
  if (selectedCategory === 'uncategorized') {
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useEffect","useRef","useState","_n","sprintf","useDebounce","__experimentalHeading","Heading","speak","BlockPatternsList","useInsertionPoint","usePatternsState","InserterListbox","searchItems","BlockPatternsPaging","usePatternsPaging","allPatternsCategory","myPatternsCategory","PatternsListHeader","filterValue","filteredBlockPatternsLength","createElement","level","lineHeight","className","PatternList","searchValue","selectedCategory","patternCategories","container","debouncedSpeak","destinationRootClientId","onInsertBlocks","shouldFocusBlock","patterns","onClickPattern","registeredPatternCategories","map","patternCategory","name","filteredBlockPatterns","filteredPatterns","filter","pattern","id","hasKnownCategory","categories","some","category","includes","length","count","resultsFoundMessage","pagingProps","previousSearchValue","setPreviousSearchValue","changePage","hasItems","ref","Fragment","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","isDraggable"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-explorer/pattern-list.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useEffect, useRef, useState } from '@wordpress/element';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce } from '@wordpress/compose';\nimport { __experimentalHeading as Heading } from '@wordpress/components';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport BlockPatternsList from '../../block-patterns-list';\nimport useInsertionPoint from '../hooks/use-insertion-point';\nimport usePatternsState from '../hooks/use-patterns-state';\nimport InserterListbox from '../../inserter-listbox';\nimport { searchItems } from '../search-items';\nimport BlockPatternsPaging from '../../block-patterns-paging';\nimport usePatternsPaging from '../hooks/use-patterns-paging';\nimport {\n\tallPatternsCategory,\n\tmyPatternsCategory,\n} from '../block-patterns-tab/utils';\n\nfunction PatternsListHeader( { filterValue, filteredBlockPatternsLength } ) {\n\tif ( ! filterValue ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Heading\n\t\t\tlevel={ 2 }\n\t\t\tlineHeight={ '48px' }\n\t\t\tclassName=\"block-editor-block-patterns-explorer__search-results-count\"\n\t\t>\n\t\t\t{ sprintf(\n\t\t\t\t/* translators: %d: number of patterns. */\n\t\t\t\t_n(\n\t\t\t\t\t'%d pattern found',\n\t\t\t\t\t'%d patterns found',\n\t\t\t\t\tfilteredBlockPatternsLength\n\t\t\t\t),\n\t\t\t\tfilteredBlockPatternsLength\n\t\t\t) }\n\t\t</Heading>\n\t);\n}\n\nfunction PatternList( { searchValue, selectedCategory, patternCategories } ) {\n\tconst container = useRef();\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tshouldFocusBlock: true,\n\t} );\n\tconst [ patterns, , onClickPattern ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst registeredPatternCategories = useMemo(\n\t\t() =>\n\t\t\tpatternCategories.map(\n\t\t\t\t( patternCategory ) => patternCategory.name\n\t\t\t),\n\t\t[ patternCategories ]\n\t);\n\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\tconst filteredPatterns = patterns.filter( ( pattern ) => {\n\t\t\tif ( selectedCategory === allPatternsCategory.name ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif ( selectedCategory === myPatternsCategory.name && pattern.id ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif ( selectedCategory === 'uncategorized' ) {\n\t\t\t\tconst hasKnownCategory = pattern.categories.some(\n\t\t\t\t\t( category ) =>\n\t\t\t\t\t\tregisteredPatternCategories.includes( category )\n\t\t\t\t);\n\n\t\t\t\treturn ! pattern.categories?.length || ! hasKnownCategory;\n\t\t\t}\n\n\t\t\treturn pattern.categories?.includes( selectedCategory );\n\t\t} );\n\n\t\tif ( ! searchValue ) {\n\t\t\treturn filteredPatterns;\n\t\t}\n\n\t\treturn searchItems( filteredPatterns, searchValue );\n\t}, [\n\t\tsearchValue,\n\t\tpatterns,\n\t\tselectedCategory,\n\t\tregisteredPatternCategories,\n\t] );\n\n\t// Announce search results on change.\n\tuseEffect( () => {\n\t\tif ( ! searchValue ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = filteredBlockPatterns.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}, [ searchValue, debouncedSpeak, filteredBlockPatterns.length ] );\n\n\tconst pagingProps = usePatternsPaging(\n\t\tfilteredBlockPatterns,\n\t\tselectedCategory,\n\t\tcontainer\n\t);\n\n\t// Reset page when search value changes.\n\tconst [ previousSearchValue, setPreviousSearchValue ] =\n\t\tuseState( searchValue );\n\tif ( searchValue !== previousSearchValue ) {\n\t\tsetPreviousSearchValue( searchValue );\n\t\tpagingProps.changePage( 1 );\n\t}\n\n\tconst hasItems = !! filteredBlockPatterns?.length;\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-block-patterns-explorer__list\"\n\t\t\tref={ container }\n\t\t>\n\t\t\t<PatternsListHeader\n\t\t\t\tfilterValue={ searchValue }\n\t\t\t\tfilteredBlockPatternsLength={ filteredBlockPatterns.length }\n\t\t\t/>\n\n\t\t\t<InserterListbox>\n\t\t\t\t{ hasItems && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\t\tshownPatterns={\n\t\t\t\t\t\t\t\tpagingProps.categoryPatternsAsyncList\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\t\t\tisDraggable={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockPatternsPaging { ...pagingProps } />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</InserterListbox>\n\t\t</div>\n\t);\n}\n\nexport default PatternList;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useMemo","useEffect","useRef","useState","_n","sprintf","useDebounce","__experimentalHeading","Heading","speak","BlockPatternsList","useInsertionPoint","usePatternsState","InserterListbox","searchItems","BlockPatternsPaging","usePatternsPaging","PATTERN_TYPES","allPatternsCategory","myPatternsCategory","PatternsListHeader","filterValue","filteredBlockPatternsLength","createElement","level","lineHeight","className","PatternList","searchValue","selectedCategory","patternCategories","container","debouncedSpeak","destinationRootClientId","onInsertBlocks","shouldFocusBlock","patterns","onClickPattern","registeredPatternCategories","map","patternCategory","name","filteredBlockPatterns","filteredPatterns","filter","pattern","type","user","hasKnownCategory","categories","some","category","includes","length","count","resultsFoundMessage","pagingProps","previousSearchValue","setPreviousSearchValue","changePage","hasItems","ref","Fragment","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","isDraggable"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-explorer/pattern-list.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useEffect, useRef, useState } from '@wordpress/element';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce } from '@wordpress/compose';\nimport { __experimentalHeading as Heading } from '@wordpress/components';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport BlockPatternsList from '../../block-patterns-list';\nimport useInsertionPoint from '../hooks/use-insertion-point';\nimport usePatternsState from '../hooks/use-patterns-state';\nimport InserterListbox from '../../inserter-listbox';\nimport { searchItems } from '../search-items';\nimport BlockPatternsPaging from '../../block-patterns-paging';\nimport usePatternsPaging from '../hooks/use-patterns-paging';\nimport {\n\tPATTERN_TYPES,\n\tallPatternsCategory,\n\tmyPatternsCategory,\n} from '../block-patterns-tab/utils';\n\nfunction PatternsListHeader( { filterValue, filteredBlockPatternsLength } ) {\n\tif ( ! filterValue ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Heading\n\t\t\tlevel={ 2 }\n\t\t\tlineHeight={ '48px' }\n\t\t\tclassName=\"block-editor-block-patterns-explorer__search-results-count\"\n\t\t>\n\t\t\t{ sprintf(\n\t\t\t\t/* translators: %d: number of patterns. */\n\t\t\t\t_n(\n\t\t\t\t\t'%d pattern found',\n\t\t\t\t\t'%d patterns found',\n\t\t\t\t\tfilteredBlockPatternsLength\n\t\t\t\t),\n\t\t\t\tfilteredBlockPatternsLength\n\t\t\t) }\n\t\t</Heading>\n\t);\n}\n\nfunction PatternList( { searchValue, selectedCategory, patternCategories } ) {\n\tconst container = useRef();\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tshouldFocusBlock: true,\n\t} );\n\tconst [ patterns, , onClickPattern ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst registeredPatternCategories = useMemo(\n\t\t() =>\n\t\t\tpatternCategories.map(\n\t\t\t\t( patternCategory ) => patternCategory.name\n\t\t\t),\n\t\t[ patternCategories ]\n\t);\n\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\tconst filteredPatterns = patterns.filter( ( pattern ) => {\n\t\t\tif ( selectedCategory === allPatternsCategory.name ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tselectedCategory === myPatternsCategory.name &&\n\t\t\t\tpattern.type === PATTERN_TYPES.user\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif ( selectedCategory === 'uncategorized' ) {\n\t\t\t\tconst hasKnownCategory = pattern.categories.some(\n\t\t\t\t\t( category ) =>\n\t\t\t\t\t\tregisteredPatternCategories.includes( category )\n\t\t\t\t);\n\n\t\t\t\treturn ! pattern.categories?.length || ! hasKnownCategory;\n\t\t\t}\n\n\t\t\treturn pattern.categories?.includes( selectedCategory );\n\t\t} );\n\n\t\tif ( ! searchValue ) {\n\t\t\treturn filteredPatterns;\n\t\t}\n\n\t\treturn searchItems( filteredPatterns, searchValue );\n\t}, [\n\t\tsearchValue,\n\t\tpatterns,\n\t\tselectedCategory,\n\t\tregisteredPatternCategories,\n\t] );\n\n\t// Announce search results on change.\n\tuseEffect( () => {\n\t\tif ( ! searchValue ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = filteredBlockPatterns.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}, [ searchValue, debouncedSpeak, filteredBlockPatterns.length ] );\n\n\tconst pagingProps = usePatternsPaging(\n\t\tfilteredBlockPatterns,\n\t\tselectedCategory,\n\t\tcontainer\n\t);\n\n\t// Reset page when search value changes.\n\tconst [ previousSearchValue, setPreviousSearchValue ] =\n\t\tuseState( searchValue );\n\tif ( searchValue !== previousSearchValue ) {\n\t\tsetPreviousSearchValue( searchValue );\n\t\tpagingProps.changePage( 1 );\n\t}\n\n\tconst hasItems = !! filteredBlockPatterns?.length;\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-block-patterns-explorer__list\"\n\t\t\tref={ container }\n\t\t>\n\t\t\t<PatternsListHeader\n\t\t\t\tfilterValue={ searchValue }\n\t\t\t\tfilteredBlockPatternsLength={ filteredBlockPatterns.length }\n\t\t\t/>\n\n\t\t\t<InserterListbox>\n\t\t\t\t{ hasItems && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\t\tshownPatterns={\n\t\t\t\t\t\t\t\tpagingProps.categoryPatternsAsyncList\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\t\t\tisDraggable={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockPatternsPaging { ...pagingProps } />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</InserterListbox>\n\t\t</div>\n\t);\n}\n\nexport default PatternList;\n"],"mappings":"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"}
@@ -10,11 +10,11 @@ import { __experimentalHStack as HStack, __experimentalVStack as VStack, __exper
10
10
  * Internal dependencies
11
11
  */
12
12
  import usePatternsState from '../hooks/use-patterns-state';
13
- import BlockPatternList from '../../block-patterns-list';
13
+ import BlockPatternsList from '../../block-patterns-list';
14
14
  import usePatternsPaging from '../hooks/use-patterns-paging';
15
15
  import { PatternsFilter } from './patterns-filter';
16
16
  import { usePatternCategories } from './use-pattern-categories';
17
- import { isPatternFiltered, allPatternsCategory, myPatternsCategory } from './utils';
17
+ import { isPatternFiltered, allPatternsCategory, myPatternsCategory, PATTERN_TYPES } from './utils';
18
18
  const noop = () => {};
19
19
  export function PatternCategoryPreviews({
20
20
  rootClientId,
@@ -36,7 +36,7 @@ export function PatternCategoryPreviews({
36
36
  if (category.name === allPatternsCategory.name) {
37
37
  return true;
38
38
  }
39
- if (category.name === myPatternsCategory.name && pattern.id) {
39
+ if (category.name === myPatternsCategory.name && pattern.type === PATTERN_TYPES.user) {
40
40
  return true;
41
41
  }
42
42
  if (category.name !== 'uncategorized') {
@@ -82,7 +82,7 @@ export function PatternCategoryPreviews({
82
82
  })), !currentCategoryPatterns.length && createElement(Text, {
83
83
  variant: "muted",
84
84
  className: "block-editor-inserter__patterns-category-no-results"
85
- }, __('No results found'))), currentCategoryPatterns.length > 0 && createElement(BlockPatternList, {
85
+ }, __('No results found'))), currentCategoryPatterns.length > 0 && createElement(BlockPatternsList, {
86
86
  ref: scrollContainerRef,
87
87
  shownPatterns: pagingProps.categoryPatternsAsyncList,
88
88
  blockPatterns: pagingProps.categoryPatterns,
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useState","useCallback","useRef","useEffect","__","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalText","Text","FlexBlock","usePatternsState","BlockPatternList","usePatternsPaging","PatternsFilter","usePatternCategories","isPatternFiltered","allPatternsCategory","myPatternsCategory","noop","PatternCategoryPreviews","rootClientId","onInsert","onHover","category","showTitlesAsTooltip","allPatterns","onClickPattern","patternSyncFilter","setPatternSyncFilter","patternSourceFilter","setPatternSourceFilter","availableCategories","scrollContainerRef","currentCategoryPatterns","filter","pattern","_pattern$categories$f","name","id","categories","includes","availablePatternCategories","cat","find","availableCategory","length","pagingProps","changePage","onSetPatternSyncFilter","value","onSetPatternSourceFilter","createElement","className","spacing","level","as","label","variant","ref","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","orientation","isDraggable","patternFilter"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/pattern-category-previews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tFlexBlock,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from '../hooks/use-patterns-state';\nimport BlockPatternList from '../../block-patterns-list';\nimport usePatternsPaging from '../hooks/use-patterns-paging';\nimport { PatternsFilter } from './patterns-filter';\nimport { usePatternCategories } from './use-pattern-categories';\nimport {\n\tisPatternFiltered,\n\tallPatternsCategory,\n\tmyPatternsCategory,\n} from './utils';\n\nconst noop = () => {};\n\nexport function PatternCategoryPreviews( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClickPattern ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\tconst [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst availableCategories = usePatternCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\tconst scrollContainerRef = useRef();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif (\n\t\t\t\t\tisPatternFiltered(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tpatternSourceFilter,\n\t\t\t\t\t\tpatternSyncFilter\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === allPatternsCategory.name ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name === myPatternsCategory.name && pattern.id ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[\n\t\t\tallPatterns,\n\t\t\tavailableCategories,\n\t\t\tcategory.name,\n\t\t\tpatternSourceFilter,\n\t\t\tpatternSyncFilter,\n\t\t]\n\t);\n\n\tconst pagingProps = usePatternsPaging(\n\t\tcurrentCategoryPatterns,\n\t\tcategory,\n\t\tscrollContainerRef\n\t);\n\tconst { changePage } = pagingProps;\n\n\t// Hide block pattern preview on unmount.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tconst onSetPatternSyncFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSyncFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSyncFilter, changePage ]\n\t);\n\tconst onSetPatternSourceFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSourceFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSourceFilter, changePage ]\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<VStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tclassName=\"block-editor-inserter__patterns-category-panel-header\"\n\t\t\t>\n\t\t\t\t<HStack>\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<Heading level={ 4 } as=\"div\">\n\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t<PatternsFilter\n\t\t\t\t\t\tpatternSyncFilter={ patternSyncFilter }\n\t\t\t\t\t\tpatternSourceFilter={ patternSourceFilter }\n\t\t\t\t\t\tsetPatternSyncFilter={ onSetPatternSyncFilter }\n\t\t\t\t\t\tsetPatternSourceFilter={ onSetPatternSourceFilter }\n\t\t\t\t\t\tscrollContainerRef={ scrollContainerRef }\n\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ ! currentCategoryPatterns.length && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-category-no-results\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'No results found' ) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</VStack>\n\n\t\t\t{ currentCategoryPatterns.length > 0 && (\n\t\t\t\t<BlockPatternList\n\t\t\t\t\tref={ scrollContainerRef }\n\t\t\t\t\tshownPatterns={ pagingProps.categoryPatternsAsyncList }\n\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tcategory={ category.name }\n\t\t\t\t\tisDraggable\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t\tpatternFilter={ patternSourceFilter }\n\t\t\t\t\tpagingProps={ pagingProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useMemo","useState","useCallback","useRef","useEffect","__","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalText","Text","FlexBlock","usePatternsState","BlockPatternsList","usePatternsPaging","PatternsFilter","usePatternCategories","isPatternFiltered","allPatternsCategory","myPatternsCategory","PATTERN_TYPES","noop","PatternCategoryPreviews","rootClientId","onInsert","onHover","category","showTitlesAsTooltip","allPatterns","onClickPattern","patternSyncFilter","setPatternSyncFilter","patternSourceFilter","setPatternSourceFilter","availableCategories","scrollContainerRef","currentCategoryPatterns","filter","pattern","_pattern$categories$f","name","type","user","categories","includes","availablePatternCategories","cat","find","availableCategory","length","pagingProps","changePage","onSetPatternSyncFilter","value","onSetPatternSourceFilter","createElement","className","spacing","level","as","label","variant","ref","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","orientation","isDraggable","patternFilter"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/pattern-category-previews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tFlexBlock,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from '../hooks/use-patterns-state';\nimport BlockPatternsList from '../../block-patterns-list';\nimport usePatternsPaging from '../hooks/use-patterns-paging';\nimport { PatternsFilter } from './patterns-filter';\nimport { usePatternCategories } from './use-pattern-categories';\nimport {\n\tisPatternFiltered,\n\tallPatternsCategory,\n\tmyPatternsCategory,\n\tPATTERN_TYPES,\n} from './utils';\n\nconst noop = () => {};\n\nexport function PatternCategoryPreviews( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClickPattern ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\tconst [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst availableCategories = usePatternCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\tconst scrollContainerRef = useRef();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif (\n\t\t\t\t\tisPatternFiltered(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tpatternSourceFilter,\n\t\t\t\t\t\tpatternSyncFilter\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === allPatternsCategory.name ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tcategory.name === myPatternsCategory.name &&\n\t\t\t\t\tpattern.type === PATTERN_TYPES.user\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[\n\t\t\tallPatterns,\n\t\t\tavailableCategories,\n\t\t\tcategory.name,\n\t\t\tpatternSourceFilter,\n\t\t\tpatternSyncFilter,\n\t\t]\n\t);\n\n\tconst pagingProps = usePatternsPaging(\n\t\tcurrentCategoryPatterns,\n\t\tcategory,\n\t\tscrollContainerRef\n\t);\n\tconst { changePage } = pagingProps;\n\n\t// Hide block pattern preview on unmount.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tconst onSetPatternSyncFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSyncFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSyncFilter, changePage ]\n\t);\n\tconst onSetPatternSourceFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSourceFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSourceFilter, changePage ]\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<VStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tclassName=\"block-editor-inserter__patterns-category-panel-header\"\n\t\t\t>\n\t\t\t\t<HStack>\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<Heading level={ 4 } as=\"div\">\n\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t<PatternsFilter\n\t\t\t\t\t\tpatternSyncFilter={ patternSyncFilter }\n\t\t\t\t\t\tpatternSourceFilter={ patternSourceFilter }\n\t\t\t\t\t\tsetPatternSyncFilter={ onSetPatternSyncFilter }\n\t\t\t\t\t\tsetPatternSourceFilter={ onSetPatternSourceFilter }\n\t\t\t\t\t\tscrollContainerRef={ scrollContainerRef }\n\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ ! currentCategoryPatterns.length && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-category-no-results\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'No results found' ) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</VStack>\n\n\t\t\t{ currentCategoryPatterns.length > 0 && (\n\t\t\t\t<BlockPatternsList\n\t\t\t\t\tref={ scrollContainerRef }\n\t\t\t\t\tshownPatterns={ pagingProps.categoryPatternsAsyncList }\n\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tcategory={ category.name }\n\t\t\t\t\tisDraggable\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t\tpatternFilter={ patternSourceFilter }\n\t\t\t\t\tpagingProps={ pagingProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ import { speak } from '@wordpress/a11y';
9
9
  * Internal dependencies
10
10
  */
11
11
  import usePatternsState from '../hooks/use-patterns-state';
12
- import { isPatternFiltered, allPatternsCategory, myPatternsCategory } from './utils';
12
+ import { isPatternFiltered, allPatternsCategory, myPatternsCategory, PATTERN_TYPES } from './utils';
13
13
  export function usePatternCategories(rootClientId, sourceFilter = 'all') {
14
14
  const [patterns, allCategories] = usePatternsState(undefined, rootClientId);
15
15
  const filteredPatterns = useMemo(() => sourceFilter === 'all' ? patterns : patterns.filter(pattern => !isPatternFiltered(pattern, sourceFilter)), [sourceFilter, patterns]);
@@ -29,7 +29,7 @@ export function usePatternCategories(rootClientId, sourceFilter = 'all') {
29
29
  label: _x('Uncategorized')
30
30
  });
31
31
  }
32
- if (filteredPatterns.some(pattern => pattern.id)) {
32
+ if (filteredPatterns.some(pattern => pattern.type === PATTERN_TYPES.user)) {
33
33
  categories.unshift(myPatternsCategory);
34
34
  }
35
35
  if (filteredPatterns.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useCallback","_x","_n","sprintf","speak","usePatternsState","isPatternFiltered","allPatternsCategory","myPatternsCategory","usePatternCategories","rootClientId","sourceFilter","patterns","allCategories","undefined","filteredPatterns","filter","pattern","hasRegisteredCategory","categories","length","some","cat","category","name","populatedCategories","includes","sort","a","b","label","localeCompare","find","push","id","unshift"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/use-pattern-categories.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { _x, _n, sprintf } from '@wordpress/i18n';\n\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from '../hooks/use-patterns-state';\nimport {\n\tisPatternFiltered,\n\tallPatternsCategory,\n\tmyPatternsCategory,\n} from './utils';\n\nexport function usePatternCategories( rootClientId, sourceFilter = 'all' ) {\n\tconst [ patterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst filteredPatterns = useMemo(\n\t\t() =>\n\t\t\tsourceFilter === 'all'\n\t\t\t\t? patterns\n\t\t\t\t: patterns.filter(\n\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t! isPatternFiltered( pattern, sourceFilter )\n\t\t\t\t ),\n\t\t[ sourceFilter, patterns ]\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tfilteredPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( a, b ) => a.label.localeCompare( b.label ) );\n\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\t\tif ( filteredPatterns.some( ( pattern ) => pattern.id ) ) {\n\t\t\tcategories.unshift( myPatternsCategory );\n\t\t}\n\t\tif ( filteredPatterns.length > 0 ) {\n\t\t\tcategories.unshift( {\n\t\t\t\tname: allPatternsCategory.name,\n\t\t\t\tlabel: allPatternsCategory.label,\n\t\t\t} );\n\t\t}\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of categories . */\n\t\t\t\t_n(\n\t\t\t\t\t'%d category button displayed.',\n\t\t\t\t\t'%d category buttons displayed.',\n\t\t\t\t\tcategories.length\n\t\t\t\t),\n\t\t\t\tcategories.length\n\t\t\t)\n\t\t);\n\t\treturn categories;\n\t}, [ allCategories, filteredPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,EAAEC,WAAW,QAAQ,oBAAoB;AACzD,SAASC,EAAE,EAAEC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAEjD,SAASC,KAAK,QAAQ,iBAAiB;;AAEvC;AACA;AACA;AACA,OAAOC,gBAAgB,MAAM,6BAA6B;AAC1D,SACCC,iBAAiB,EACjBC,mBAAmB,EACnBC,kBAAkB,QACZ,SAAS;AAEhB,OAAO,SAASC,oBAAoBA,CAAEC,YAAY,EAAEC,YAAY,GAAG,KAAK,EAAG;EAC1E,MAAM,CAAEC,QAAQ,EAAEC,aAAa,CAAE,GAAGR,gBAAgB,CACnDS,SAAS,EACTJ,YACD,CAAC;EAED,MAAMK,gBAAgB,GAAGhB,OAAO,CAC/B,MACCY,YAAY,KAAK,KAAK,GACnBC,QAAQ,GACRA,QAAQ,CAACI,MAAM,CACbC,OAAO,IACR,CAAEX,iBAAiB,CAAEW,OAAO,EAAEN,YAAa,CAC5C,CAAC,EACL,CAAEA,YAAY,EAAEC,QAAQ,CACzB,CAAC;EAED,MAAMM,qBAAqB,GAAGlB,WAAW,CACtCiB,OAAO,IAAM;IACd,IAAK,CAAEA,OAAO,CAACE,UAAU,IAAI,CAAEF,OAAO,CAACE,UAAU,CAACC,MAAM,EAAG;MAC1D,OAAO,KAAK;IACb;IAEA,OAAOH,OAAO,CAACE,UAAU,CAACE,IAAI,CAAIC,GAAG,IACpCT,aAAa,CAACQ,IAAI,CAAIE,QAAQ,IAAMA,QAAQ,CAACC,IAAI,KAAKF,GAAI,CAC3D,CAAC;EACF,CAAC,EACD,CAAET,aAAa,CAChB,CAAC;;EAED;EACA,MAAMY,mBAAmB,GAAG1B,OAAO,CAAE,MAAM;IAC1C,MAAMoB,UAAU,GAAGN,aAAa,CAC9BG,MAAM,CAAIO,QAAQ,IAClBR,gBAAgB,CAACM,IAAI,CAAIJ,OAAO,IAC/BA,OAAO,CAACE,UAAU,EAAEO,QAAQ,CAAEH,QAAQ,CAACC,IAAK,CAC7C,CACD,CAAC,CACAG,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMD,CAAC,CAACE,KAAK,CAACC,aAAa,CAAEF,CAAC,CAACC,KAAM,CAAE,CAAC;IAEtD,IACCf,gBAAgB,CAACM,IAAI,CAClBJ,OAAO,IAAM,CAAEC,qBAAqB,CAAED,OAAQ,CACjD,CAAC,IACD,CAAEE,UAAU,CAACa,IAAI,CACdT,QAAQ,IAAMA,QAAQ,CAACC,IAAI,KAAK,eACnC,CAAC,EACA;MACDL,UAAU,CAACc,IAAI,CAAE;QAChBT,IAAI,EAAE,eAAe;QACrBM,KAAK,EAAE7B,EAAE,CAAE,eAAgB;MAC5B,CAAE,CAAC;IACJ;IACA,IAAKc,gBAAgB,CAACM,IAAI,CAAIJ,OAAO,IAAMA,OAAO,CAACiB,EAAG,CAAC,EAAG;MACzDf,UAAU,CAACgB,OAAO,CAAE3B,kBAAmB,CAAC;IACzC;IACA,IAAKO,gBAAgB,CAACK,MAAM,GAAG,CAAC,EAAG;MAClCD,UAAU,CAACgB,OAAO,CAAE;QACnBX,IAAI,EAAEjB,mBAAmB,CAACiB,IAAI;QAC9BM,KAAK,EAAEvB,mBAAmB,CAACuB;MAC5B,CAAE,CAAC;IACJ;IACA1B,KAAK,CACJD,OAAO,EACN;IACAD,EAAE,CACD,+BAA+B,EAC/B,gCAAgC,EAChCiB,UAAU,CAACC,MACZ,CAAC,EACDD,UAAU,CAACC,MACZ,CACD,CAAC;IACD,OAAOD,UAAU;EAClB,CAAC,EAAE,CAAEN,aAAa,EAAEE,gBAAgB,EAAEG,qBAAqB,CAAG,CAAC;EAE/D,OAAOO,mBAAmB;AAC3B"}
1
+ {"version":3,"names":["useMemo","useCallback","_x","_n","sprintf","speak","usePatternsState","isPatternFiltered","allPatternsCategory","myPatternsCategory","PATTERN_TYPES","usePatternCategories","rootClientId","sourceFilter","patterns","allCategories","undefined","filteredPatterns","filter","pattern","hasRegisteredCategory","categories","length","some","cat","category","name","populatedCategories","includes","sort","a","b","label","localeCompare","find","push","type","user","unshift"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/use-pattern-categories.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { _x, _n, sprintf } from '@wordpress/i18n';\n\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from '../hooks/use-patterns-state';\nimport {\n\tisPatternFiltered,\n\tallPatternsCategory,\n\tmyPatternsCategory,\n\tPATTERN_TYPES,\n} from './utils';\n\nexport function usePatternCategories( rootClientId, sourceFilter = 'all' ) {\n\tconst [ patterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst filteredPatterns = useMemo(\n\t\t() =>\n\t\t\tsourceFilter === 'all'\n\t\t\t\t? patterns\n\t\t\t\t: patterns.filter(\n\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t! isPatternFiltered( pattern, sourceFilter )\n\t\t\t\t ),\n\t\t[ sourceFilter, patterns ]\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tfilteredPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( a, b ) => a.label.localeCompare( b.label ) );\n\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => pattern.type === PATTERN_TYPES.user\n\t\t\t)\n\t\t) {\n\t\t\tcategories.unshift( myPatternsCategory );\n\t\t}\n\t\tif ( filteredPatterns.length > 0 ) {\n\t\t\tcategories.unshift( {\n\t\t\t\tname: allPatternsCategory.name,\n\t\t\t\tlabel: allPatternsCategory.label,\n\t\t\t} );\n\t\t}\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of categories . */\n\t\t\t\t_n(\n\t\t\t\t\t'%d category button displayed.',\n\t\t\t\t\t'%d category buttons displayed.',\n\t\t\t\t\tcategories.length\n\t\t\t\t),\n\t\t\t\tcategories.length\n\t\t\t)\n\t\t);\n\t\treturn categories;\n\t}, [ allCategories, filteredPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n"],"mappings":"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"}
@@ -18,7 +18,7 @@ export const SYNC_TYPES = {
18
18
  };
19
19
  export const allPatternsCategory = {
20
20
  name: 'allPatterns',
21
- label: __('All patterns')
21
+ label: __('All')
22
22
  };
23
23
  export const myPatternsCategory = {
24
24
  name: 'myPatterns',
@@ -40,9 +40,8 @@ export function isPatternFiltered(pattern, sourceFilter, syncFilter) {
40
40
  return true;
41
41
  }
42
42
 
43
- // If user source selected, filter out theme patterns. Any pattern without
44
- // an id wasn't created by a user.
45
- if (sourceFilter === PATTERN_TYPES.user && !pattern.id) {
43
+ // If user source selected, filter out theme patterns.
44
+ if (sourceFilter === PATTERN_TYPES.user && pattern.type !== PATTERN_TYPES.user) {
46
45
  return true;
47
46
  }
48
47
 
@@ -1 +1 @@
1
- {"version":3,"names":["__","PATTERN_TYPES","all","synced","unsynced","user","theme","directory","SYNC_TYPES","full","allPatternsCategory","name","label","myPatternsCategory","isPatternFiltered","pattern","sourceFilter","syncFilter","isUserPattern","startsWith","isDirectoryPattern","source","id","syncStatus"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\n\nimport { __ } from '@wordpress/i18n';\n\nexport const PATTERN_TYPES = {\n\tall: 'all',\n\tsynced: 'synced',\n\tunsynced: 'unsynced',\n\tuser: 'user',\n\ttheme: 'theme',\n\tdirectory: 'directory',\n};\n\nexport const SYNC_TYPES = {\n\tall: 'all',\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\nexport const allPatternsCategory = {\n\tname: 'allPatterns',\n\tlabel: __( 'All patterns' ),\n};\n\nexport const myPatternsCategory = {\n\tname: 'myPatterns',\n\tlabel: __( 'My patterns' ),\n};\n\nexport function isPatternFiltered( pattern, sourceFilter, syncFilter ) {\n\tconst isUserPattern = pattern.name.startsWith( 'core/block' );\n\tconst isDirectoryPattern =\n\t\tpattern.source === 'core' ||\n\t\tpattern.source?.startsWith( 'pattern-directory' );\n\n\t// If theme source selected, filter out user created patterns and those from\n\t// the core patterns directory.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.theme &&\n\t\t( isUserPattern || isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If the directory source is selected, filter out user created patterns\n\t// and those bundled with the theme.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.directory &&\n\t\t( isUserPattern || ! isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If user source selected, filter out theme patterns. Any pattern without\n\t// an id wasn't created by a user.\n\tif ( sourceFilter === PATTERN_TYPES.user && ! pattern.id ) {\n\t\treturn true;\n\t}\n\n\t// Filter by sync status.\n\tif ( syncFilter === SYNC_TYPES.full && pattern.syncStatus !== '' ) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tsyncFilter === SYNC_TYPES.unsynced &&\n\t\tpattern.syncStatus !== 'unsynced' &&\n\t\tisUserPattern\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n"],"mappings":"AAAA;AACA;AACA;;AAEA,SAASA,EAAE,QAAQ,iBAAiB;AAEpC,OAAO,MAAMC,aAAa,GAAG;EAC5BC,GAAG,EAAE,KAAK;EACVC,MAAM,EAAE,QAAQ;EAChBC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,OAAO;EACdC,SAAS,EAAE;AACZ,CAAC;AAED,OAAO,MAAMC,UAAU,GAAG;EACzBN,GAAG,EAAE,KAAK;EACVO,IAAI,EAAE,OAAO;EACbL,QAAQ,EAAE;AACX,CAAC;AAED,OAAO,MAAMM,mBAAmB,GAAG;EAClCC,IAAI,EAAE,aAAa;EACnBC,KAAK,EAAEZ,EAAE,CAAE,cAAe;AAC3B,CAAC;AAED,OAAO,MAAMa,kBAAkB,GAAG;EACjCF,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAEZ,EAAE,CAAE,aAAc;AAC1B,CAAC;AAED,OAAO,SAASc,iBAAiBA,CAAEC,OAAO,EAAEC,YAAY,EAAEC,UAAU,EAAG;EACtE,MAAMC,aAAa,GAAGH,OAAO,CAACJ,IAAI,CAACQ,UAAU,CAAE,YAAa,CAAC;EAC7D,MAAMC,kBAAkB,GACvBL,OAAO,CAACM,MAAM,KAAK,MAAM,IACzBN,OAAO,CAACM,MAAM,EAAEF,UAAU,CAAE,mBAAoB,CAAC;;EAElD;EACA;EACA,IACCH,YAAY,KAAKf,aAAa,CAACK,KAAK,KAClCY,aAAa,IAAIE,kBAAkB,CAAE,EACtC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA;EACA,IACCJ,YAAY,KAAKf,aAAa,CAACM,SAAS,KACtCW,aAAa,IAAI,CAAEE,kBAAkB,CAAE,EACxC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA;EACA,IAAKJ,YAAY,KAAKf,aAAa,CAACI,IAAI,IAAI,CAAEU,OAAO,CAACO,EAAE,EAAG;IAC1D,OAAO,IAAI;EACZ;;EAEA;EACA,IAAKL,UAAU,KAAKT,UAAU,CAACC,IAAI,IAAIM,OAAO,CAACQ,UAAU,KAAK,EAAE,EAAG;IAClE,OAAO,IAAI;EACZ;EAEA,IACCN,UAAU,KAAKT,UAAU,CAACJ,QAAQ,IAClCW,OAAO,CAACQ,UAAU,KAAK,UAAU,IACjCL,aAAa,EACZ;IACD,OAAO,IAAI;EACZ;EAEA,OAAO,KAAK;AACb"}
1
+ {"version":3,"names":["__","PATTERN_TYPES","all","synced","unsynced","user","theme","directory","SYNC_TYPES","full","allPatternsCategory","name","label","myPatternsCategory","isPatternFiltered","pattern","sourceFilter","syncFilter","isUserPattern","startsWith","isDirectoryPattern","source","type","syncStatus"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\n\nimport { __ } from '@wordpress/i18n';\n\nexport const PATTERN_TYPES = {\n\tall: 'all',\n\tsynced: 'synced',\n\tunsynced: 'unsynced',\n\tuser: 'user',\n\ttheme: 'theme',\n\tdirectory: 'directory',\n};\n\nexport const SYNC_TYPES = {\n\tall: 'all',\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\nexport const allPatternsCategory = {\n\tname: 'allPatterns',\n\tlabel: __( 'All' ),\n};\n\nexport const myPatternsCategory = {\n\tname: 'myPatterns',\n\tlabel: __( 'My patterns' ),\n};\n\nexport function isPatternFiltered( pattern, sourceFilter, syncFilter ) {\n\tconst isUserPattern = pattern.name.startsWith( 'core/block' );\n\tconst isDirectoryPattern =\n\t\tpattern.source === 'core' ||\n\t\tpattern.source?.startsWith( 'pattern-directory' );\n\n\t// If theme source selected, filter out user created patterns and those from\n\t// the core patterns directory.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.theme &&\n\t\t( isUserPattern || isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If the directory source is selected, filter out user created patterns\n\t// and those bundled with the theme.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.directory &&\n\t\t( isUserPattern || ! isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If user source selected, filter out theme patterns.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.user &&\n\t\tpattern.type !== PATTERN_TYPES.user\n\t) {\n\t\treturn true;\n\t}\n\n\t// Filter by sync status.\n\tif ( syncFilter === SYNC_TYPES.full && pattern.syncStatus !== '' ) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tsyncFilter === SYNC_TYPES.unsynced &&\n\t\tpattern.syncStatus !== 'unsynced' &&\n\t\tisUserPattern\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n"],"mappings":"AAAA;AACA;AACA;;AAEA,SAASA,EAAE,QAAQ,iBAAiB;AAEpC,OAAO,MAAMC,aAAa,GAAG;EAC5BC,GAAG,EAAE,KAAK;EACVC,MAAM,EAAE,QAAQ;EAChBC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,OAAO;EACdC,SAAS,EAAE;AACZ,CAAC;AAED,OAAO,MAAMC,UAAU,GAAG;EACzBN,GAAG,EAAE,KAAK;EACVO,IAAI,EAAE,OAAO;EACbL,QAAQ,EAAE;AACX,CAAC;AAED,OAAO,MAAMM,mBAAmB,GAAG;EAClCC,IAAI,EAAE,aAAa;EACnBC,KAAK,EAAEZ,EAAE,CAAE,KAAM;AAClB,CAAC;AAED,OAAO,MAAMa,kBAAkB,GAAG;EACjCF,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAEZ,EAAE,CAAE,aAAc;AAC1B,CAAC;AAED,OAAO,SAASc,iBAAiBA,CAAEC,OAAO,EAAEC,YAAY,EAAEC,UAAU,EAAG;EACtE,MAAMC,aAAa,GAAGH,OAAO,CAACJ,IAAI,CAACQ,UAAU,CAAE,YAAa,CAAC;EAC7D,MAAMC,kBAAkB,GACvBL,OAAO,CAACM,MAAM,KAAK,MAAM,IACzBN,OAAO,CAACM,MAAM,EAAEF,UAAU,CAAE,mBAAoB,CAAC;;EAElD;EACA;EACA,IACCH,YAAY,KAAKf,aAAa,CAACK,KAAK,KAClCY,aAAa,IAAIE,kBAAkB,CAAE,EACtC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA;EACA,IACCJ,YAAY,KAAKf,aAAa,CAACM,SAAS,KACtCW,aAAa,IAAI,CAAEE,kBAAkB,CAAE,EACxC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA,IACCJ,YAAY,KAAKf,aAAa,CAACI,IAAI,IACnCU,OAAO,CAACO,IAAI,KAAKrB,aAAa,CAACI,IAAI,EAClC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA,IAAKY,UAAU,KAAKT,UAAU,CAACC,IAAI,IAAIM,OAAO,CAACQ,UAAU,KAAK,EAAE,EAAG;IAClE,OAAO,IAAI;EACZ;EAEA,IACCN,UAAU,KAAKT,UAAU,CAACJ,QAAQ,IAClCW,OAAO,CAACQ,UAAU,KAAK,UAAU,IACjCL,aAAa,EACZ;IACD,OAAO,IAAI;EACZ;EAEA,OAAO,KAAK;AACb"}
@@ -11,6 +11,7 @@ import { store as noticesStore } from '@wordpress/notices';
11
11
  * Internal dependencies
12
12
  */
13
13
  import { store as blockEditorStore } from '../../../store';
14
+ import { PATTERN_TYPES } from '../block-patterns-tab/utils';
14
15
 
15
16
  /**
16
17
  * Retrieves the block patterns inserter state.
@@ -53,7 +54,7 @@ const usePatternsState = (onInsert, rootClientId) => {
53
54
  createSuccessNotice
54
55
  } = useDispatch(noticesStore);
55
56
  const onClickPattern = useCallback((pattern, blocks) => {
56
- const patternBlocks = pattern.id && pattern.syncStatus !== 'unsynced' ? [createBlock('core/block', {
57
+ const patternBlocks = pattern.type === PATTERN_TYPES.user && pattern.syncStatus !== 'unsynced' ? [createBlock('core/block', {
57
58
  ref: pattern.id
58
59
  })] : blocks;
59
60
  onInsert((patternBlocks !== null && patternBlocks !== void 0 ? patternBlocks : []).map(block => cloneBlock(block)), pattern.name);
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useMemo","cloneBlock","createBlock","useDispatch","useSelect","__","sprintf","store","noticesStore","blockEditorStore","usePatternsState","onInsert","rootClientId","patternCategories","patterns","userPatternCategories","select","__experimentalGetAllowedPatterns","getSettings","__experimentalUserPatternCategories","__experimentalBlockPatternCategories","allCategories","categories","forEach","userCategory","find","existingCategory","name","push","createSuccessNotice","onClickPattern","pattern","blocks","patternBlocks","id","syncStatus","ref","map","block","title","type"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-patterns-state.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { cloneBlock, createBlock } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Retrieves the block patterns inserter state.\n *\n * @param {Function} onInsert function called when inserter a list of blocks.\n * @param {string=} rootClientId Insertion's root client ID.\n *\n * @return {Array} Returns the patterns state. (patterns, categories, onSelect handler)\n */\nconst usePatternsState = ( onInsert, rootClientId ) => {\n\tconst { patternCategories, patterns, userPatternCategories } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst {\n\t\t\t\t__experimentalUserPatternCategories,\n\t\t\t\t__experimentalBlockPatternCategories,\n\t\t\t} = getSettings();\n\t\t\treturn {\n\t\t\t\tpatterns: __experimentalGetAllowedPatterns( rootClientId ),\n\t\t\t\tuserPatternCategories: __experimentalUserPatternCategories,\n\t\t\t\tpatternCategories: __experimentalBlockPatternCategories,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst allCategories = useMemo( () => {\n\t\tconst categories = [ ...patternCategories ];\n\t\tuserPatternCategories?.forEach( ( userCategory ) => {\n\t\t\tif (\n\t\t\t\t! categories.find(\n\t\t\t\t\t( existingCategory ) =>\n\t\t\t\t\t\texistingCategory.name === userCategory.name\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcategories.push( userCategory );\n\t\t\t}\n\t\t} );\n\t\treturn categories;\n\t}, [ patternCategories, userPatternCategories ] );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst onClickPattern = useCallback(\n\t\t( pattern, blocks ) => {\n\t\t\tconst patternBlocks =\n\t\t\t\tpattern.id && pattern.syncStatus !== 'unsynced'\n\t\t\t\t\t? [ createBlock( 'core/block', { ref: pattern.id } ) ]\n\t\t\t\t\t: blocks;\n\t\t\tonInsert(\n\t\t\t\t( patternBlocks ?? [] ).map( ( block ) => cloneBlock( block ) ),\n\t\t\t\tpattern.name\n\t\t\t);\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: block pattern title. */\n\t\t\t\t\t__( 'Block pattern \"%s\" inserted.' ),\n\t\t\t\t\tpattern.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'block-pattern-inserted-notice',\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t[ createSuccessNotice, onInsert ]\n\t);\n\n\treturn [ patterns, allCategories, onClickPattern ];\n};\n\nexport default usePatternsState;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;AACzD,SAASC,UAAU,EAAEC,WAAW,QAAQ,mBAAmB;AAC3D,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,SAASD,KAAK,IAAIE,gBAAgB,QAAQ,gBAAgB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAGA,CAAEC,QAAQ,EAAEC,YAAY,KAAM;EACtD,MAAM;IAAEC,iBAAiB;IAAEC,QAAQ;IAAEC;EAAsB,CAAC,GAAGX,SAAS,CACrEY,MAAM,IAAM;IACb,MAAM;MAAEC,gCAAgC;MAAEC;IAAY,CAAC,GACtDF,MAAM,CAAEP,gBAAiB,CAAC;IAC3B,MAAM;MACLU,mCAAmC;MACnCC;IACD,CAAC,GAAGF,WAAW,CAAC,CAAC;IACjB,OAAO;MACNJ,QAAQ,EAAEG,gCAAgC,CAAEL,YAAa,CAAC;MAC1DG,qBAAqB,EAAEI,mCAAmC;MAC1DN,iBAAiB,EAAEO;IACpB,CAAC;EACF,CAAC,EACD,CAAER,YAAY,CACf,CAAC;EAED,MAAMS,aAAa,GAAGrB,OAAO,CAAE,MAAM;IACpC,MAAMsB,UAAU,GAAG,CAAE,GAAGT,iBAAiB,CAAE;IAC3CE,qBAAqB,EAAEQ,OAAO,CAAIC,YAAY,IAAM;MACnD,IACC,CAAEF,UAAU,CAACG,IAAI,CACdC,gBAAgB,IACjBA,gBAAgB,CAACC,IAAI,KAAKH,YAAY,CAACG,IACzC,CAAC,EACA;QACDL,UAAU,CAACM,IAAI,CAAEJ,YAAa,CAAC;MAChC;IACD,CAAE,CAAC;IACH,OAAOF,UAAU;EAClB,CAAC,EAAE,CAAET,iBAAiB,EAAEE,qBAAqB,CAAG,CAAC;EAEjD,MAAM;IAAEc;EAAoB,CAAC,GAAG1B,WAAW,CAAEK,YAAa,CAAC;EAC3D,MAAMsB,cAAc,GAAG/B,WAAW,CACjC,CAAEgC,OAAO,EAAEC,MAAM,KAAM;IACtB,MAAMC,aAAa,GAClBF,OAAO,CAACG,EAAE,IAAIH,OAAO,CAACI,UAAU,KAAK,UAAU,GAC5C,CAAEjC,WAAW,CAAE,YAAY,EAAE;MAAEkC,GAAG,EAAEL,OAAO,CAACG;IAAG,CAAE,CAAC,CAAE,GACpDF,MAAM;IACVrB,QAAQ,CACP,CAAEsB,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,EAAGI,GAAG,CAAIC,KAAK,IAAMrC,UAAU,CAAEqC,KAAM,CAAE,CAAC,EAC/DP,OAAO,CAACJ,IACT,CAAC;IACDE,mBAAmB,CAClBvB,OAAO,EACN;IACAD,EAAE,CAAE,8BAA+B,CAAC,EACpC0B,OAAO,CAACQ,KACT,CAAC,EACD;MACCC,IAAI,EAAE,UAAU;MAChBN,EAAE,EAAE;IACL,CACD,CAAC;EACF,CAAC,EACD,CAAEL,mBAAmB,EAAElB,QAAQ,CAChC,CAAC;EAED,OAAO,CAAEG,QAAQ,EAAEO,aAAa,EAAES,cAAc,CAAE;AACnD,CAAC;AAED,eAAepB,gBAAgB"}
1
+ {"version":3,"names":["useCallback","useMemo","cloneBlock","createBlock","useDispatch","useSelect","__","sprintf","store","noticesStore","blockEditorStore","PATTERN_TYPES","usePatternsState","onInsert","rootClientId","patternCategories","patterns","userPatternCategories","select","__experimentalGetAllowedPatterns","getSettings","__experimentalUserPatternCategories","__experimentalBlockPatternCategories","allCategories","categories","forEach","userCategory","find","existingCategory","name","push","createSuccessNotice","onClickPattern","pattern","blocks","patternBlocks","type","user","syncStatus","ref","id","map","block","title"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-patterns-state.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { cloneBlock, createBlock } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { PATTERN_TYPES } from '../block-patterns-tab/utils';\n\n/**\n * Retrieves the block patterns inserter state.\n *\n * @param {Function} onInsert function called when inserter a list of blocks.\n * @param {string=} rootClientId Insertion's root client ID.\n *\n * @return {Array} Returns the patterns state. (patterns, categories, onSelect handler)\n */\nconst usePatternsState = ( onInsert, rootClientId ) => {\n\tconst { patternCategories, patterns, userPatternCategories } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst {\n\t\t\t\t__experimentalUserPatternCategories,\n\t\t\t\t__experimentalBlockPatternCategories,\n\t\t\t} = getSettings();\n\t\t\treturn {\n\t\t\t\tpatterns: __experimentalGetAllowedPatterns( rootClientId ),\n\t\t\t\tuserPatternCategories: __experimentalUserPatternCategories,\n\t\t\t\tpatternCategories: __experimentalBlockPatternCategories,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst allCategories = useMemo( () => {\n\t\tconst categories = [ ...patternCategories ];\n\t\tuserPatternCategories?.forEach( ( userCategory ) => {\n\t\t\tif (\n\t\t\t\t! categories.find(\n\t\t\t\t\t( existingCategory ) =>\n\t\t\t\t\t\texistingCategory.name === userCategory.name\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcategories.push( userCategory );\n\t\t\t}\n\t\t} );\n\t\treturn categories;\n\t}, [ patternCategories, userPatternCategories ] );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst onClickPattern = useCallback(\n\t\t( pattern, blocks ) => {\n\t\t\tconst patternBlocks =\n\t\t\t\tpattern.type === PATTERN_TYPES.user &&\n\t\t\t\tpattern.syncStatus !== 'unsynced'\n\t\t\t\t\t? [ createBlock( 'core/block', { ref: pattern.id } ) ]\n\t\t\t\t\t: blocks;\n\t\t\tonInsert(\n\t\t\t\t( patternBlocks ?? [] ).map( ( block ) => cloneBlock( block ) ),\n\t\t\t\tpattern.name\n\t\t\t);\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: block pattern title. */\n\t\t\t\t\t__( 'Block pattern \"%s\" inserted.' ),\n\t\t\t\t\tpattern.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'block-pattern-inserted-notice',\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t[ createSuccessNotice, onInsert ]\n\t);\n\n\treturn [ patterns, allCategories, onClickPattern ];\n};\n\nexport default usePatternsState;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;AACzD,SAASC,UAAU,EAAEC,WAAW,QAAQ,mBAAmB;AAC3D,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,SAASD,KAAK,IAAIE,gBAAgB,QAAQ,gBAAgB;AAC1D,SAASC,aAAa,QAAQ,6BAA6B;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAGA,CAAEC,QAAQ,EAAEC,YAAY,KAAM;EACtD,MAAM;IAAEC,iBAAiB;IAAEC,QAAQ;IAAEC;EAAsB,CAAC,GAAGZ,SAAS,CACrEa,MAAM,IAAM;IACb,MAAM;MAAEC,gCAAgC;MAAEC;IAAY,CAAC,GACtDF,MAAM,CAAER,gBAAiB,CAAC;IAC3B,MAAM;MACLW,mCAAmC;MACnCC;IACD,CAAC,GAAGF,WAAW,CAAC,CAAC;IACjB,OAAO;MACNJ,QAAQ,EAAEG,gCAAgC,CAAEL,YAAa,CAAC;MAC1DG,qBAAqB,EAAEI,mCAAmC;MAC1DN,iBAAiB,EAAEO;IACpB,CAAC;EACF,CAAC,EACD,CAAER,YAAY,CACf,CAAC;EAED,MAAMS,aAAa,GAAGtB,OAAO,CAAE,MAAM;IACpC,MAAMuB,UAAU,GAAG,CAAE,GAAGT,iBAAiB,CAAE;IAC3CE,qBAAqB,EAAEQ,OAAO,CAAIC,YAAY,IAAM;MACnD,IACC,CAAEF,UAAU,CAACG,IAAI,CACdC,gBAAgB,IACjBA,gBAAgB,CAACC,IAAI,KAAKH,YAAY,CAACG,IACzC,CAAC,EACA;QACDL,UAAU,CAACM,IAAI,CAAEJ,YAAa,CAAC;MAChC;IACD,CAAE,CAAC;IACH,OAAOF,UAAU;EAClB,CAAC,EAAE,CAAET,iBAAiB,EAAEE,qBAAqB,CAAG,CAAC;EAEjD,MAAM;IAAEc;EAAoB,CAAC,GAAG3B,WAAW,CAAEK,YAAa,CAAC;EAC3D,MAAMuB,cAAc,GAAGhC,WAAW,CACjC,CAAEiC,OAAO,EAAEC,MAAM,KAAM;IACtB,MAAMC,aAAa,GAClBF,OAAO,CAACG,IAAI,KAAKzB,aAAa,CAAC0B,IAAI,IACnCJ,OAAO,CAACK,UAAU,KAAK,UAAU,GAC9B,CAAEnC,WAAW,CAAE,YAAY,EAAE;MAAEoC,GAAG,EAAEN,OAAO,CAACO;IAAG,CAAE,CAAC,CAAE,GACpDN,MAAM;IACVrB,QAAQ,CACP,CAAEsB,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,EAAGM,GAAG,CAAIC,KAAK,IAAMxC,UAAU,CAAEwC,KAAM,CAAE,CAAC,EAC/DT,OAAO,CAACJ,IACT,CAAC;IACDE,mBAAmB,CAClBxB,OAAO,EACN;IACAD,EAAE,CAAE,8BAA+B,CAAC,EACpC2B,OAAO,CAACU,KACT,CAAC,EACD;MACCP,IAAI,EAAE,UAAU;MAChBI,EAAE,EAAE;IACL,CACD,CAAC;EACF,CAAC,EACD,CAAET,mBAAmB,EAAElB,QAAQ,CAChC,CAAC;EAED,OAAO,CAAEG,QAAQ,EAAEO,aAAa,EAAES,cAAc,CAAE;AACnD,CAAC;AAED,eAAepB,gBAAgB"}
@@ -1,25 +1,30 @@
1
- import { createElement } from "react";
1
+ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { __unstableUseCompositeState as useCompositeState } from '@wordpress/components';
5
+ import { privateApis as componentsPrivateApis } from '@wordpress/components';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import InserterListboxContext from './context';
10
+ import { unlock } from '../../lock-unlock';
11
11
  export { default as InserterListboxGroup } from './group';
12
12
  export { default as InserterListboxRow } from './row';
13
13
  export { default as InserterListboxItem } from './item';
14
+ const {
15
+ CompositeV2: Composite,
16
+ useCompositeStoreV2: useCompositeStore
17
+ } = unlock(componentsPrivateApis);
14
18
  function InserterListbox({
15
19
  children
16
20
  }) {
17
- const compositeState = useCompositeState({
18
- shift: true,
19
- wrap: 'horizontal'
21
+ const store = useCompositeStore({
22
+ focusShift: true,
23
+ focusWrap: 'horizontal'
20
24
  });
21
- return createElement(InserterListboxContext.Provider, {
22
- value: compositeState
25
+ return createElement(Composite, {
26
+ store: store,
27
+ render: createElement(Fragment, null)
23
28
  }, children);
24
29
  }
25
30
  export default InserterListbox;
@@ -1 +1 @@
1
- {"version":3,"names":["__unstableUseCompositeState","useCompositeState","InserterListboxContext","default","InserterListboxGroup","InserterListboxRow","InserterListboxItem","InserterListbox","children","compositeState","shift","wrap","createElement","Provider","value"],"sources":["@wordpress/block-editor/src/components/inserter-listbox/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __unstableUseCompositeState as useCompositeState } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport InserterListboxContext from './context';\n\nexport { default as InserterListboxGroup } from './group';\nexport { default as InserterListboxRow } from './row';\nexport { default as InserterListboxItem } from './item';\n\nfunction InserterListbox( { children } ) {\n\tconst compositeState = useCompositeState( {\n\t\tshift: true,\n\t\twrap: 'horizontal',\n\t} );\n\treturn (\n\t\t<InserterListboxContext.Provider value={ compositeState }>\n\t\t\t{ children }\n\t\t</InserterListboxContext.Provider>\n\t);\n}\n\nexport default InserterListbox;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,2BAA2B,IAAIC,iBAAiB,QAAQ,uBAAuB;;AAExF;AACA;AACA;AACA,OAAOC,sBAAsB,MAAM,WAAW;AAE9C,SAASC,OAAO,IAAIC,oBAAoB,QAAQ,SAAS;AACzD,SAASD,OAAO,IAAIE,kBAAkB,QAAQ,OAAO;AACrD,SAASF,OAAO,IAAIG,mBAAmB,QAAQ,QAAQ;AAEvD,SAASC,eAAeA,CAAE;EAAEC;AAAS,CAAC,EAAG;EACxC,MAAMC,cAAc,GAAGR,iBAAiB,CAAE;IACzCS,KAAK,EAAE,IAAI;IACXC,IAAI,EAAE;EACP,CAAE,CAAC;EACH,OACCC,aAAA,CAACV,sBAAsB,CAACW,QAAQ;IAACC,KAAK,EAAGL;EAAgB,GACtDD,QAC8B,CAAC;AAEpC;AAEA,eAAeD,eAAe"}
1
+ {"version":3,"names":["privateApis","componentsPrivateApis","unlock","default","InserterListboxGroup","InserterListboxRow","InserterListboxItem","CompositeV2","Composite","useCompositeStoreV2","useCompositeStore","InserterListbox","children","store","focusShift","focusWrap","createElement","render","Fragment"],"sources":["@wordpress/block-editor/src/components/inserter-listbox/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nexport { default as InserterListboxGroup } from './group';\nexport { default as InserterListboxRow } from './row';\nexport { default as InserterListboxItem } from './item';\n\nconst { CompositeV2: Composite, useCompositeStoreV2: useCompositeStore } =\n\tunlock( componentsPrivateApis );\n\nfunction InserterListbox( { children } ) {\n\tconst store = useCompositeStore( {\n\t\tfocusShift: true,\n\t\tfocusWrap: 'horizontal',\n\t} );\n\n\treturn (\n\t\t<Composite store={ store } render={ <></> }>\n\t\t\t{ children }\n\t\t</Composite>\n\t);\n}\n\nexport default InserterListbox;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,IAAIC,qBAAqB,QAAQ,uBAAuB;;AAE5E;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,SAASC,OAAO,IAAIC,oBAAoB,QAAQ,SAAS;AACzD,SAASD,OAAO,IAAIE,kBAAkB,QAAQ,OAAO;AACrD,SAASF,OAAO,IAAIG,mBAAmB,QAAQ,QAAQ;AAEvD,MAAM;EAAEC,WAAW,EAAEC,SAAS;EAAEC,mBAAmB,EAAEC;AAAkB,CAAC,GACvER,MAAM,CAAED,qBAAsB,CAAC;AAEhC,SAASU,eAAeA,CAAE;EAAEC;AAAS,CAAC,EAAG;EACxC,MAAMC,KAAK,GAAGH,iBAAiB,CAAE;IAChCI,UAAU,EAAE,IAAI;IAChBC,SAAS,EAAE;EACZ,CAAE,CAAC;EAEH,OACCC,aAAA,CAACR,SAAS;IAACK,KAAK,EAAGA,KAAO;IAACI,MAAM,EAAGD,aAAA,CAAAE,QAAA,MAAI;EAAG,GACxCN,QACQ,CAAC;AAEd;AAEA,eAAeD,eAAe"}
@@ -2,46 +2,48 @@ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { Button, __unstableCompositeItem as CompositeItem } from '@wordpress/components';
6
- import { forwardRef, useContext } from '@wordpress/element';
5
+ import { Button, privateApis as componentsPrivateApis } from '@wordpress/components';
6
+ import { forwardRef } from '@wordpress/element';
7
7
 
8
8
  /**
9
9
  * Internal dependencies
10
10
  */
11
- import InserterListboxContext from './context';
11
+ import { unlock } from '../../lock-unlock';
12
+ const {
13
+ CompositeItemV2: CompositeItem
14
+ } = unlock(componentsPrivateApis);
12
15
  function InserterListboxItem({
13
16
  isFirst,
14
17
  as: Component,
15
18
  children,
16
19
  ...props
17
20
  }, ref) {
18
- const state = useContext(InserterListboxContext);
19
21
  return createElement(CompositeItem, {
20
22
  ref: ref,
21
- state: state,
22
23
  role: "option"
23
- // Use the CompositeItem `focusable` prop over Button's
24
- // isFocusable. The latter was shown to cause an issue
25
- // with tab order in the inserter list.
24
+ // Use the CompositeItem `accessibleWhenDisabled` prop
25
+ // over Button's `isFocusable`. The latter was shown to
26
+ // cause an issue with tab order in the inserter list.
26
27
  ,
27
- focusable: true,
28
- ...props
29
- }, htmlProps => {
30
- const propsWithTabIndex = {
31
- ...htmlProps,
32
- tabIndex: isFirst ? 0 : htmlProps.tabIndex
33
- };
34
- if (Component) {
35
- return createElement(Component, {
28
+ accessibleWhenDisabled: true,
29
+ ...props,
30
+ render: htmlProps => {
31
+ const propsWithTabIndex = {
32
+ ...htmlProps,
33
+ tabIndex: isFirst ? 0 : htmlProps.tabIndex
34
+ };
35
+ if (Component) {
36
+ return createElement(Component, {
37
+ ...propsWithTabIndex
38
+ }, children);
39
+ }
40
+ if (typeof children === 'function') {
41
+ return children(propsWithTabIndex);
42
+ }
43
+ return createElement(Button, {
36
44
  ...propsWithTabIndex
37
45
  }, children);
38
46
  }
39
- if (typeof children === 'function') {
40
- return children(propsWithTabIndex);
41
- }
42
- return createElement(Button, {
43
- ...propsWithTabIndex
44
- }, children);
45
47
  });
46
48
  }
47
49
  export default forwardRef(InserterListboxItem);
@@ -1 +1 @@
1
- {"version":3,"names":["Button","__unstableCompositeItem","CompositeItem","forwardRef","useContext","InserterListboxContext","InserterListboxItem","isFirst","as","Component","children","props","ref","state","createElement","role","focusable","htmlProps","propsWithTabIndex","tabIndex"],"sources":["@wordpress/block-editor/src/components/inserter-listbox/item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\t__unstableCompositeItem as CompositeItem,\n} from '@wordpress/components';\nimport { forwardRef, useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport InserterListboxContext from './context';\n\nfunction InserterListboxItem(\n\t{ isFirst, as: Component, children, ...props },\n\tref\n) {\n\tconst state = useContext( InserterListboxContext );\n\treturn (\n\t\t<CompositeItem\n\t\t\tref={ ref }\n\t\t\tstate={ state }\n\t\t\trole=\"option\"\n\t\t\t// Use the CompositeItem `focusable` prop over Button's\n\t\t\t// isFocusable. The latter was shown to cause an issue\n\t\t\t// with tab order in the inserter list.\n\t\t\tfocusable\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ ( htmlProps ) => {\n\t\t\t\tconst propsWithTabIndex = {\n\t\t\t\t\t...htmlProps,\n\t\t\t\t\ttabIndex: isFirst ? 0 : htmlProps.tabIndex,\n\t\t\t\t};\n\t\t\t\tif ( Component ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Component { ...propsWithTabIndex }>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</Component>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif ( typeof children === 'function' ) {\n\t\t\t\t\treturn children( propsWithTabIndex );\n\t\t\t\t}\n\t\t\t\treturn <Button { ...propsWithTabIndex }>{ children }</Button>;\n\t\t\t} }\n\t\t</CompositeItem>\n\t);\n}\n\nexport default forwardRef( InserterListboxItem );\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,MAAM,EACNC,uBAAuB,IAAIC,aAAa,QAClC,uBAAuB;AAC9B,SAASC,UAAU,EAAEC,UAAU,QAAQ,oBAAoB;;AAE3D;AACA;AACA;AACA,OAAOC,sBAAsB,MAAM,WAAW;AAE9C,SAASC,mBAAmBA,CAC3B;EAAEC,OAAO;EAAEC,EAAE,EAAEC,SAAS;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAC9CC,GAAG,EACF;EACD,MAAMC,KAAK,GAAGT,UAAU,CAAEC,sBAAuB,CAAC;EAClD,OACCS,aAAA,CAACZ,aAAa;IACbU,GAAG,EAAGA,GAAK;IACXC,KAAK,EAAGA,KAAO;IACfE,IAAI,EAAC;IACL;IACA;IACA;IAAA;IACAC,SAAS;IAAA,GACJL;EAAK,GAENM,SAAS,IAAM;IAClB,MAAMC,iBAAiB,GAAG;MACzB,GAAGD,SAAS;MACZE,QAAQ,EAAEZ,OAAO,GAAG,CAAC,GAAGU,SAAS,CAACE;IACnC,CAAC;IACD,IAAKV,SAAS,EAAG;MAChB,OACCK,aAAA,CAACL,SAAS;QAAA,GAAMS;MAAiB,GAC9BR,QACQ,CAAC;IAEd;IACA,IAAK,OAAOA,QAAQ,KAAK,UAAU,EAAG;MACrC,OAAOA,QAAQ,CAAEQ,iBAAkB,CAAC;IACrC;IACA,OAAOJ,aAAA,CAACd,MAAM;MAAA,GAAMkB;IAAiB,GAAKR,QAAkB,CAAC;EAC9D,CACc,CAAC;AAElB;AAEA,eAAeP,UAAU,CAAEG,mBAAoB,CAAC"}
1
+ {"version":3,"names":["Button","privateApis","componentsPrivateApis","forwardRef","unlock","CompositeItemV2","CompositeItem","InserterListboxItem","isFirst","as","Component","children","props","ref","createElement","role","accessibleWhenDisabled","render","htmlProps","propsWithTabIndex","tabIndex"],"sources":["@wordpress/block-editor/src/components/inserter-listbox/item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { CompositeItemV2: CompositeItem } = unlock( componentsPrivateApis );\n\nfunction InserterListboxItem(\n\t{ isFirst, as: Component, children, ...props },\n\tref\n) {\n\treturn (\n\t\t<CompositeItem\n\t\t\tref={ ref }\n\t\t\trole=\"option\"\n\t\t\t// Use the CompositeItem `accessibleWhenDisabled` prop\n\t\t\t// over Button's `isFocusable`. The latter was shown to\n\t\t\t// cause an issue with tab order in the inserter list.\n\t\t\taccessibleWhenDisabled\n\t\t\t{ ...props }\n\t\t\trender={ ( htmlProps ) => {\n\t\t\t\tconst propsWithTabIndex = {\n\t\t\t\t\t...htmlProps,\n\t\t\t\t\ttabIndex: isFirst ? 0 : htmlProps.tabIndex,\n\t\t\t\t};\n\t\t\t\tif ( Component ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Component { ...propsWithTabIndex }>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</Component>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif ( typeof children === 'function' ) {\n\t\t\t\t\treturn children( propsWithTabIndex );\n\t\t\t\t}\n\t\t\t\treturn <Button { ...propsWithTabIndex }>{ children }</Button>;\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( InserterListboxItem );\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,MAAM,EACNC,WAAW,IAAIC,qBAAqB,QAC9B,uBAAuB;AAC9B,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,MAAM;EAAEC,eAAe,EAAEC;AAAc,CAAC,GAAGF,MAAM,CAAEF,qBAAsB,CAAC;AAE1E,SAASK,mBAAmBA,CAC3B;EAAEC,OAAO;EAAEC,EAAE,EAAEC,SAAS;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAC9CC,GAAG,EACF;EACD,OACCC,aAAA,CAACR,aAAa;IACbO,GAAG,EAAGA,GAAK;IACXE,IAAI,EAAC;IACL;IACA;IACA;IAAA;IACAC,sBAAsB;IAAA,GACjBJ,KAAK;IACVK,MAAM,EAAKC,SAAS,IAAM;MACzB,MAAMC,iBAAiB,GAAG;QACzB,GAAGD,SAAS;QACZE,QAAQ,EAAEZ,OAAO,GAAG,CAAC,GAAGU,SAAS,CAACE;MACnC,CAAC;MACD,IAAKV,SAAS,EAAG;QAChB,OACCI,aAAA,CAACJ,SAAS;UAAA,GAAMS;QAAiB,GAC9BR,QACQ,CAAC;MAEd;MACA,IAAK,OAAOA,QAAQ,KAAK,UAAU,EAAG;QACrC,OAAOA,QAAQ,CAAEQ,iBAAkB,CAAC;MACrC;MACA,OAAOL,aAAA,CAACd,MAAM;QAAA,GAAMmB;MAAiB,GAAKR,QAAkB,CAAC;IAC9D;EAAG,CACH,CAAC;AAEJ;AAEA,eAAeR,UAAU,CAAEI,mBAAoB,CAAC"}