@wordpress/block-editor 12.9.1-next.5a1d1283.0 → 12.10.1

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 (448) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +33 -3
  3. package/build/components/block-canvas/index.js +107 -0
  4. package/build/components/block-canvas/index.js.map +1 -0
  5. package/build/components/block-inspector/index.js +4 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-patterns-list/index.js +28 -8
  8. package/build/components/block-patterns-list/index.js.map +1 -1
  9. package/build/components/block-patterns-paging/index.js +68 -0
  10. package/build/components/block-patterns-paging/index.js.map +1 -0
  11. package/build/components/block-settings-menu/block-settings-dropdown.js +28 -0
  12. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  13. package/build/components/block-settings-menu-controls/index.js +4 -7
  14. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  15. package/build/components/block-styles/index.js +1 -0
  16. package/build/components/block-styles/index.js.map +1 -1
  17. package/build/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  18. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  19. package/build/components/block-tools/block-contextual-toolbar.js +18 -7
  20. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  21. package/build/components/block-tools/block-selection-button.js +5 -1
  22. package/build/components/block-tools/block-selection-button.js.map +1 -1
  23. package/build/components/border-radius-control/input-controls.js +1 -1
  24. package/build/components/border-radius-control/input-controls.js.map +1 -1
  25. package/build/components/border-radius-control/linked-button.js +2 -4
  26. package/build/components/border-radius-control/linked-button.js.map +1 -1
  27. package/build/components/colors/with-colors.js.map +1 -1
  28. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  29. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  30. package/build/components/default-block-appender/index.native.js +20 -1
  31. package/build/components/default-block-appender/index.native.js.map +1 -1
  32. package/build/components/duotone/utils.js +68 -0
  33. package/build/components/duotone/utils.js.map +1 -1
  34. package/build/components/editor-styles/index.js +28 -9
  35. package/build/components/editor-styles/index.js.map +1 -1
  36. package/build/components/global-styles/hooks.js +2 -101
  37. package/build/components/global-styles/hooks.js.map +1 -1
  38. package/build/components/global-styles/image-settings-panel.js +61 -0
  39. package/build/components/global-styles/image-settings-panel.js.map +1 -0
  40. package/build/components/global-styles/index.js +11 -17
  41. package/build/components/global-styles/index.js.map +1 -1
  42. package/build/components/global-styles/use-global-styles-output.js +19 -15
  43. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  44. package/build/components/global-styles/utils.js +1 -1
  45. package/build/components/global-styles/utils.js.map +1 -1
  46. package/build/components/iframe/index.js +67 -33
  47. package/build/components/iframe/index.js.map +1 -1
  48. package/build/components/image-editor/use-save-image.js +2 -5
  49. package/build/components/image-editor/use-save-image.js.map +1 -1
  50. package/build/components/image-editor/use-transform-image.js +9 -9
  51. package/build/components/image-editor/use-transform-image.js.map +1 -1
  52. package/build/components/index.js +8 -12
  53. package/build/components/index.js.map +1 -1
  54. package/build/components/index.native.js +6 -5
  55. package/build/components/index.native.js.map +1 -1
  56. package/build/components/inner-blocks/use-nested-settings-update.js +13 -7
  57. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  58. package/build/components/inserter/block-patterns-explorer/explorer.js +12 -6
  59. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  60. package/build/components/inserter/block-patterns-explorer/patterns-list.js +45 -22
  61. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  62. package/build/components/inserter/block-patterns-explorer/sidebar.js +9 -9
  63. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  64. package/build/components/inserter/block-patterns-filter.js +137 -0
  65. package/build/components/inserter/block-patterns-filter.js.map +1 -0
  66. package/build/components/inserter/block-patterns-tab.js +128 -42
  67. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  68. package/build/components/inserter/hooks/use-patterns-paging.js +61 -0
  69. package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  70. package/build/components/inserter/hooks/use-patterns-state.js +21 -10
  71. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  72. package/build/components/inserter/menu.js +13 -11
  73. package/build/components/inserter/menu.js.map +1 -1
  74. package/build/components/inserter/search-results.js +4 -3
  75. package/build/components/inserter/search-results.js.map +1 -1
  76. package/build/components/inserter/tabs.js +1 -12
  77. package/build/components/inserter/tabs.js.map +1 -1
  78. package/build/components/inspector-controls/block-support-slot-container.js +12 -1
  79. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  80. package/build/components/inspector-controls/fill.js +24 -13
  81. package/build/components/inspector-controls/fill.js.map +1 -1
  82. package/build/components/inspector-controls/groups.js +5 -3
  83. package/build/components/inspector-controls/groups.js.map +1 -1
  84. package/build/components/inspector-controls/slot.js +13 -0
  85. package/build/components/inspector-controls/slot.js.map +1 -1
  86. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  87. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  88. package/build/components/link-control/index.js +12 -2
  89. package/build/components/link-control/index.js.map +1 -1
  90. package/build/components/list-view/block-select-button.js +1 -3
  91. package/build/components/list-view/block-select-button.js.map +1 -1
  92. package/build/components/list-view/block.js +13 -1
  93. package/build/components/list-view/block.js.map +1 -1
  94. package/build/components/list-view/use-block-selection.js +29 -24
  95. package/build/components/list-view/use-block-selection.js.map +1 -1
  96. package/build/components/media-placeholder/index.js +2 -2
  97. package/build/components/media-placeholder/index.js.map +1 -1
  98. package/build/components/media-placeholder/index.native.js +11 -11
  99. package/build/components/media-placeholder/index.native.js.map +1 -1
  100. package/build/components/media-replace-flow/index.js +2 -3
  101. package/build/components/media-replace-flow/index.js.map +1 -1
  102. package/build/components/media-upload/constants.js +30 -0
  103. package/build/components/media-upload/constants.js.map +1 -0
  104. package/build/components/media-upload/index.native.js +63 -53
  105. package/build/components/media-upload/index.native.js.map +1 -1
  106. package/build/components/preview-options/index.js +1 -1
  107. package/build/components/preview-options/index.js.map +1 -1
  108. package/build/components/rich-text/index.js +34 -35
  109. package/build/components/rich-text/index.js.map +1 -1
  110. package/build/components/rich-text/index.native.js +14 -32
  111. package/build/components/rich-text/index.native.js.map +1 -1
  112. package/build/components/rich-text/multiline.js +95 -0
  113. package/build/components/rich-text/multiline.js.map +1 -0
  114. package/build/components/rich-text/split-value.js +10 -16
  115. package/build/components/rich-text/split-value.js.map +1 -1
  116. package/build/components/rich-text/use-enter.js +31 -40
  117. package/build/components/rich-text/use-enter.js.map +1 -1
  118. package/build/components/rich-text/use-paste-handler.js +18 -33
  119. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  120. package/build/components/spacing-sizes-control/utils.js +1 -1
  121. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  122. package/build/components/use-block-commands/index.js +30 -18
  123. package/build/components/use-block-commands/index.js.map +1 -1
  124. package/build/components/use-block-display-information/index.js +5 -2
  125. package/build/components/use-block-display-information/index.js.map +1 -1
  126. package/build/hooks/background.js +263 -0
  127. package/build/hooks/background.js.map +1 -0
  128. package/build/hooks/block-hooks.js +188 -0
  129. package/build/hooks/block-hooks.js.map +1 -0
  130. package/build/hooks/block-rename-ui.js +161 -0
  131. package/build/hooks/block-rename-ui.js.map +1 -0
  132. package/build/hooks/duotone.js +29 -42
  133. package/build/hooks/duotone.js.map +1 -1
  134. package/build/hooks/index.js +2 -2
  135. package/build/hooks/index.js.map +1 -1
  136. package/build/hooks/layout.js +31 -14
  137. package/build/hooks/layout.js.map +1 -1
  138. package/build/hooks/position.js +4 -2
  139. package/build/hooks/position.js.map +1 -1
  140. package/build/hooks/style.js +10 -3
  141. package/build/hooks/style.js.map +1 -1
  142. package/build/private-apis.js +2 -0
  143. package/build/private-apis.js.map +1 -1
  144. package/build/store/actions.js +33 -10
  145. package/build/store/actions.js.map +1 -1
  146. package/build/store/private-actions.js +42 -8
  147. package/build/store/private-actions.js.map +1 -1
  148. package/build/store/private-selectors.js +25 -3
  149. package/build/store/private-selectors.js.map +1 -1
  150. package/build/store/reducer.js +43 -1
  151. package/build/store/reducer.js.map +1 -1
  152. package/build/store/selectors.js +84 -23
  153. package/build/store/selectors.js.map +1 -1
  154. package/build/store/utils.js +0 -4
  155. package/build/store/utils.js.map +1 -1
  156. package/build-module/components/block-canvas/index.js +97 -0
  157. package/build-module/components/block-canvas/index.js.map +1 -0
  158. package/build-module/components/block-inspector/index.js +4 -1
  159. package/build-module/components/block-inspector/index.js.map +1 -1
  160. package/build-module/components/block-patterns-list/index.js +30 -10
  161. package/build-module/components/block-patterns-list/index.js.map +1 -1
  162. package/build-module/components/block-patterns-paging/index.js +61 -0
  163. package/build-module/components/block-patterns-paging/index.js.map +1 -0
  164. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -0
  165. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  166. package/build-module/components/block-settings-menu-controls/index.js +4 -7
  167. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  168. package/build-module/components/block-styles/index.js +1 -0
  169. package/build-module/components/block-styles/index.js.map +1 -1
  170. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  171. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  172. package/build-module/components/block-tools/block-contextual-toolbar.js +18 -7
  173. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  174. package/build-module/components/block-tools/block-selection-button.js +5 -1
  175. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  176. package/build-module/components/border-radius-control/input-controls.js +1 -1
  177. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  178. package/build-module/components/border-radius-control/linked-button.js +2 -4
  179. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  180. package/build-module/components/colors/with-colors.js.map +1 -1
  181. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  182. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  183. package/build-module/components/default-block-appender/index.native.js +20 -1
  184. package/build-module/components/default-block-appender/index.native.js.map +1 -1
  185. package/build-module/components/duotone/utils.js +65 -0
  186. package/build-module/components/duotone/utils.js.map +1 -1
  187. package/build-module/components/editor-styles/index.js +28 -9
  188. package/build-module/components/editor-styles/index.js.map +1 -1
  189. package/build-module/components/global-styles/hooks.js +3 -100
  190. package/build-module/components/global-styles/hooks.js.map +1 -1
  191. package/build-module/components/global-styles/image-settings-panel.js +53 -0
  192. package/build-module/components/global-styles/image-settings-panel.js.map +1 -0
  193. package/build-module/components/global-styles/index.js +2 -2
  194. package/build-module/components/global-styles/index.js.map +1 -1
  195. package/build-module/components/global-styles/use-global-styles-output.js +18 -16
  196. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  197. package/build-module/components/global-styles/utils.js +1 -1
  198. package/build-module/components/global-styles/utils.js.map +1 -1
  199. package/build-module/components/iframe/index.js +66 -33
  200. package/build-module/components/iframe/index.js.map +1 -1
  201. package/build-module/components/image-editor/use-save-image.js +2 -5
  202. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  203. package/build-module/components/image-editor/use-transform-image.js +9 -9
  204. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  205. package/build-module/components/index.js +1 -1
  206. package/build-module/components/index.js.map +1 -1
  207. package/build-module/components/index.native.js +2 -1
  208. package/build-module/components/index.native.js.map +1 -1
  209. package/build-module/components/inner-blocks/use-nested-settings-update.js +14 -8
  210. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  211. package/build-module/components/inserter/block-patterns-explorer/explorer.js +12 -6
  212. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  213. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +47 -24
  214. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  215. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +9 -9
  216. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  217. package/build-module/components/inserter/block-patterns-filter.js +128 -0
  218. package/build-module/components/inserter/block-patterns-filter.js.map +1 -0
  219. package/build-module/components/inserter/block-patterns-tab.js +125 -44
  220. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  221. package/build-module/components/inserter/hooks/use-patterns-paging.js +54 -0
  222. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  223. package/build-module/components/inserter/hooks/use-patterns-state.js +22 -10
  224. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  225. package/build-module/components/inserter/menu.js +13 -11
  226. package/build-module/components/inserter/menu.js.map +1 -1
  227. package/build-module/components/inserter/search-results.js +4 -3
  228. package/build-module/components/inserter/search-results.js.map +1 -1
  229. package/build-module/components/inserter/tabs.js +1 -12
  230. package/build-module/components/inserter/tabs.js.map +1 -1
  231. package/build-module/components/inspector-controls/block-support-slot-container.js +13 -2
  232. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  233. package/build-module/components/inspector-controls/fill.js +25 -14
  234. package/build-module/components/inspector-controls/fill.js.map +1 -1
  235. package/build-module/components/inspector-controls/groups.js +5 -3
  236. package/build-module/components/inspector-controls/groups.js.map +1 -1
  237. package/build-module/components/inspector-controls/slot.js +15 -1
  238. package/build-module/components/inspector-controls/slot.js.map +1 -1
  239. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  240. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  241. package/build-module/components/link-control/index.js +12 -2
  242. package/build-module/components/link-control/index.js.map +1 -1
  243. package/build-module/components/list-view/block-select-button.js +1 -3
  244. package/build-module/components/list-view/block-select-button.js.map +1 -1
  245. package/build-module/components/list-view/block.js +13 -1
  246. package/build-module/components/list-view/block.js.map +1 -1
  247. package/build-module/components/list-view/use-block-selection.js +30 -25
  248. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  249. package/build-module/components/media-placeholder/index.js +2 -2
  250. package/build-module/components/media-placeholder/index.js.map +1 -1
  251. package/build-module/components/media-placeholder/index.native.js +7 -7
  252. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  253. package/build-module/components/media-replace-flow/index.js +2 -3
  254. package/build-module/components/media-replace-flow/index.js.map +1 -1
  255. package/build-module/components/media-upload/constants.js +14 -0
  256. package/build-module/components/media-upload/constants.js.map +1 -0
  257. package/build-module/components/media-upload/index.native.js +53 -34
  258. package/build-module/components/media-upload/index.native.js.map +1 -1
  259. package/build-module/components/preview-options/index.js +1 -1
  260. package/build-module/components/preview-options/index.js.map +1 -1
  261. package/build-module/components/rich-text/index.js +35 -37
  262. package/build-module/components/rich-text/index.js.map +1 -1
  263. package/build-module/components/rich-text/index.native.js +15 -33
  264. package/build-module/components/rich-text/index.native.js.map +1 -1
  265. package/build-module/components/rich-text/multiline.js +87 -0
  266. package/build-module/components/rich-text/multiline.js.map +1 -0
  267. package/build-module/components/rich-text/split-value.js +10 -16
  268. package/build-module/components/rich-text/split-value.js.map +1 -1
  269. package/build-module/components/rich-text/use-enter.js +33 -42
  270. package/build-module/components/rich-text/use-enter.js.map +1 -1
  271. package/build-module/components/rich-text/use-paste-handler.js +19 -34
  272. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  273. package/build-module/components/spacing-sizes-control/utils.js +2 -2
  274. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  275. package/build-module/components/use-block-commands/index.js +28 -16
  276. package/build-module/components/use-block-commands/index.js.map +1 -1
  277. package/build-module/components/use-block-display-information/index.js +5 -2
  278. package/build-module/components/use-block-display-information/index.js.map +1 -1
  279. package/build-module/hooks/background.js +249 -0
  280. package/build-module/hooks/background.js.map +1 -0
  281. package/build-module/hooks/block-hooks.js +181 -0
  282. package/build-module/hooks/block-hooks.js.map +1 -0
  283. package/build-module/hooks/block-rename-ui.js +154 -0
  284. package/build-module/hooks/block-rename-ui.js.map +1 -0
  285. package/build-module/hooks/duotone.js +26 -39
  286. package/build-module/hooks/duotone.js.map +1 -1
  287. package/build-module/hooks/index.js +2 -2
  288. package/build-module/hooks/index.js.map +1 -1
  289. package/build-module/hooks/layout.js +33 -16
  290. package/build-module/hooks/layout.js.map +1 -1
  291. package/build-module/hooks/position.js +4 -2
  292. package/build-module/hooks/position.js.map +1 -1
  293. package/build-module/hooks/style.js +10 -3
  294. package/build-module/hooks/style.js.map +1 -1
  295. package/build-module/private-apis.js +2 -0
  296. package/build-module/private-apis.js.map +1 -1
  297. package/build-module/store/actions.js +33 -10
  298. package/build-module/store/actions.js.map +1 -1
  299. package/build-module/store/private-actions.js +39 -8
  300. package/build-module/store/private-actions.js.map +1 -1
  301. package/build-module/store/private-selectors.js +23 -3
  302. package/build-module/store/private-selectors.js.map +1 -1
  303. package/build-module/store/reducer.js +41 -1
  304. package/build-module/store/reducer.js.map +1 -1
  305. package/build-module/store/selectors.js +78 -22
  306. package/build-module/store/selectors.js.map +1 -1
  307. package/build-module/store/utils.js +0 -4
  308. package/build-module/store/utils.js.map +1 -1
  309. package/build-style/content-rtl.css +0 -1
  310. package/build-style/content.css +0 -1
  311. package/build-style/style-rtl.css +201 -131
  312. package/build-style/style.css +201 -131
  313. package/package.json +32 -32
  314. package/src/components/block-canvas/index.js +108 -0
  315. package/src/components/block-inspector/index.js +5 -1
  316. package/src/components/block-list/content.scss +0 -1
  317. package/src/components/block-patterns-list/index.js +53 -19
  318. package/src/components/block-patterns-list/style.scss +26 -9
  319. package/src/components/block-patterns-paging/index.js +92 -0
  320. package/src/components/block-patterns-paging/style.scss +45 -0
  321. package/src/components/block-settings-menu/block-settings-dropdown.js +44 -0
  322. package/src/components/block-settings-menu-controls/index.js +4 -9
  323. package/src/components/block-styles/index.js +1 -0
  324. package/src/components/block-styles/style.scss +3 -3
  325. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -6
  326. package/src/components/block-tools/block-contextual-toolbar.js +16 -5
  327. package/src/components/block-tools/block-selection-button.js +9 -1
  328. package/src/components/block-tools/style.scss +0 -98
  329. package/src/components/border-radius-control/input-controls.js +1 -1
  330. package/src/components/border-radius-control/linked-button.js +8 -11
  331. package/src/components/color-palette/test/__snapshots__/control.js.snap +34 -21
  332. package/src/components/colors/with-colors.js +3 -2
  333. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -35
  334. package/src/components/default-block-appender/index.native.js +26 -3
  335. package/src/components/duotone/utils.js +65 -0
  336. package/src/components/editor-styles/index.js +32 -23
  337. package/src/components/global-styles/hooks.js +4 -112
  338. package/src/components/global-styles/image-settings-panel.js +71 -0
  339. package/src/components/global-styles/index.js +4 -3
  340. package/src/components/global-styles/use-global-styles-output.js +25 -16
  341. package/src/components/global-styles/utils.js +1 -2
  342. package/src/components/iframe/index.js +72 -33
  343. package/src/components/image-editor/use-save-image.js +2 -9
  344. package/src/components/image-editor/use-transform-image.js +9 -9
  345. package/src/components/index.js +1 -1
  346. package/src/components/index.native.js +2 -2
  347. package/src/components/inner-blocks/use-nested-settings-update.js +15 -10
  348. package/src/components/inserter/block-patterns-explorer/explorer.js +17 -5
  349. package/src/components/inserter/block-patterns-explorer/patterns-list.js +68 -43
  350. package/src/components/inserter/block-patterns-explorer/sidebar.js +8 -8
  351. package/src/components/inserter/block-patterns-filter.js +183 -0
  352. package/src/components/inserter/block-patterns-tab.js +217 -58
  353. package/src/components/inserter/hooks/use-patterns-paging.js +76 -0
  354. package/src/components/inserter/hooks/use-patterns-state.js +27 -16
  355. package/src/components/inserter/menu.js +15 -17
  356. package/src/components/inserter/search-results.js +6 -4
  357. package/src/components/inserter/style.scss +36 -7
  358. package/src/components/inserter/tabs.js +2 -12
  359. package/src/components/inserter/test/index.native.js +8 -12
  360. package/src/components/inspector-controls/block-support-slot-container.js +19 -3
  361. package/src/components/inspector-controls/fill.js +28 -14
  362. package/src/components/inspector-controls/groups.js +6 -2
  363. package/src/components/inspector-controls/slot.js +28 -3
  364. package/src/components/inspector-controls-tabs/styles-tab.js +4 -0
  365. package/src/components/link-control/index.js +13 -0
  366. package/src/components/link-control/style.scss +23 -2
  367. package/src/components/link-control/test/index.js +88 -6
  368. package/src/components/list-view/block-select-button.js +1 -3
  369. package/src/components/list-view/block.js +19 -1
  370. package/src/components/list-view/style.scss +1 -2
  371. package/src/components/list-view/use-block-selection.js +38 -32
  372. package/src/components/media-placeholder/README.md +2 -2
  373. package/src/components/media-placeholder/index.js +2 -2
  374. package/src/components/media-placeholder/index.native.js +11 -12
  375. package/src/components/media-replace-flow/index.js +2 -2
  376. package/src/components/media-replace-flow/test/index.js +5 -23
  377. package/src/components/media-upload/README.md +3 -2
  378. package/src/components/media-upload/constants.js +15 -0
  379. package/src/components/media-upload/index.native.js +66 -40
  380. package/src/components/media-upload/style.native.scss +4 -0
  381. package/src/components/media-upload/test/index.native.js +2 -2
  382. package/src/components/preview-options/README.md +7 -0
  383. package/src/components/preview-options/index.js +1 -1
  384. package/src/components/rich-text/index.js +48 -44
  385. package/src/components/rich-text/index.native.js +14 -42
  386. package/src/components/rich-text/multiline.js +121 -0
  387. package/src/components/rich-text/split-value.js +10 -35
  388. package/src/components/rich-text/use-enter.js +32 -42
  389. package/src/components/rich-text/use-paste-handler.js +16 -40
  390. package/src/components/spacing-sizes-control/style.scss +5 -7
  391. package/src/components/spacing-sizes-control/utils.js +1 -2
  392. package/src/components/use-block-commands/index.js +28 -20
  393. package/src/components/use-block-display-information/index.js +3 -0
  394. package/src/hooks/background.js +299 -0
  395. package/src/hooks/background.scss +75 -0
  396. package/src/hooks/block-hooks.js +257 -0
  397. package/src/hooks/block-hooks.scss +16 -0
  398. package/src/hooks/block-rename-ui.js +231 -0
  399. package/src/hooks/block-rename-ui.scss +3 -0
  400. package/src/hooks/duotone.js +42 -43
  401. package/src/hooks/index.js +2 -2
  402. package/src/hooks/layout.js +31 -33
  403. package/src/hooks/position.js +4 -3
  404. package/src/hooks/style.js +11 -2
  405. package/src/hooks/test/align.native.js +4 -3
  406. package/src/private-apis.js +2 -0
  407. package/src/store/actions.js +52 -10
  408. package/src/store/private-actions.js +37 -6
  409. package/src/store/private-selectors.js +28 -3
  410. package/src/store/reducer.js +38 -0
  411. package/src/store/selectors.js +107 -26
  412. package/src/store/test/actions.js +19 -8
  413. package/src/store/test/private-actions.js +17 -0
  414. package/src/store/test/reducer.js +25 -0
  415. package/src/store/test/selectors.js +130 -123
  416. package/src/store/utils.js +3 -10
  417. package/src/style.scss +4 -0
  418. package/build/components/duotone/components.js +0 -135
  419. package/build/components/duotone/components.js.map +0 -1
  420. package/build/components/duotone/index.js +0 -38
  421. package/build/components/duotone/index.js.map +0 -1
  422. package/build/components/global-styles/behaviors-panel.js +0 -64
  423. package/build/components/global-styles/behaviors-panel.js.map +0 -1
  424. package/build/components/inserter/reusable-blocks-tab.js +0 -85
  425. package/build/components/inserter/reusable-blocks-tab.js.map +0 -1
  426. package/build/hooks/auto-inserting-blocks.js +0 -174
  427. package/build/hooks/auto-inserting-blocks.js.map +0 -1
  428. package/build/hooks/behaviors.js +0 -173
  429. package/build/hooks/behaviors.js.map +0 -1
  430. package/build-module/components/duotone/components.js +0 -126
  431. package/build-module/components/duotone/components.js.map +0 -1
  432. package/build-module/components/duotone/index.js +0 -3
  433. package/build-module/components/duotone/index.js.map +0 -1
  434. package/build-module/components/global-styles/behaviors-panel.js +0 -57
  435. package/build-module/components/global-styles/behaviors-panel.js.map +0 -1
  436. package/build-module/components/inserter/reusable-blocks-tab.js +0 -76
  437. package/build-module/components/inserter/reusable-blocks-tab.js.map +0 -1
  438. package/build-module/hooks/auto-inserting-blocks.js +0 -167
  439. package/build-module/hooks/auto-inserting-blocks.js.map +0 -1
  440. package/build-module/hooks/behaviors.js +0 -166
  441. package/build-module/hooks/behaviors.js.map +0 -1
  442. package/src/components/duotone/components.js +0 -133
  443. package/src/components/duotone/index.js +0 -7
  444. package/src/components/global-styles/behaviors-panel.js +0 -71
  445. package/src/components/inserter/reusable-blocks-tab.js +0 -84
  446. package/src/components/inserter/test/reusable-blocks-tab.js +0 -73
  447. package/src/hooks/auto-inserting-blocks.js +0 -232
  448. package/src/hooks/behaviors.js +0 -206
@@ -10,25 +10,37 @@ import { __ } from '@wordpress/i18n';
10
10
  */
11
11
  import PatternExplorerSidebar from './sidebar';
12
12
  import PatternList from './patterns-list';
13
+ import { usePatternsCategories } from '../block-patterns-tab';
14
+
15
+ function PatternsExplorer( { initialCategory, rootClientId } ) {
16
+ const [ searchValue, setSearchValue ] = useState( '' );
17
+ const [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );
13
18
 
14
- function PatternsExplorer( { initialCategory, patternCategories } ) {
15
- const [ filterValue, setFilterValue ] = useState( '' );
16
19
  const [ selectedCategory, setSelectedCategory ] = useState(
17
20
  initialCategory?.name
18
21
  );
22
+
23
+ const patternCategories = usePatternsCategories(
24
+ rootClientId,
25
+ patternSourceFilter
26
+ );
27
+
19
28
  return (
20
29
  <div className="block-editor-block-patterns-explorer">
21
30
  <PatternExplorerSidebar
22
31
  selectedCategory={ selectedCategory }
23
32
  patternCategories={ patternCategories }
24
33
  onClickCategory={ setSelectedCategory }
25
- filterValue={ filterValue }
26
- setFilterValue={ setFilterValue }
34
+ searchValue={ searchValue }
35
+ setSearchValue={ setSearchValue }
36
+ patternSourceFilter={ patternSourceFilter }
37
+ setPatternSourceFilter={ setPatternSourceFilter }
27
38
  />
28
39
  <PatternList
29
- filterValue={ filterValue }
40
+ searchValue={ searchValue }
30
41
  selectedCategory={ selectedCategory }
31
42
  patternCategories={ patternCategories }
43
+ patternSourceFilter={ patternSourceFilter }
32
44
  />
33
45
  </div>
34
46
  );
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useMemo, useEffect } from '@wordpress/element';
4
+ import { useMemo, useEffect, useRef, useState } from '@wordpress/element';
5
5
  import { _n, sprintf } from '@wordpress/i18n';
6
- import { useDebounce, useAsyncList } from '@wordpress/compose';
6
+ import { useDebounce } from '@wordpress/compose';
7
7
  import { __experimentalHeading as Heading } from '@wordpress/components';
8
8
  import { speak } from '@wordpress/a11y';
9
9
 
@@ -11,18 +11,19 @@ import { speak } from '@wordpress/a11y';
11
11
  * Internal dependencies
12
12
  */
13
13
  import BlockPatternsList from '../../block-patterns-list';
14
- import InserterNoResults from '../no-results';
15
14
  import useInsertionPoint from '../hooks/use-insertion-point';
16
15
  import usePatternsState from '../hooks/use-patterns-state';
17
16
  import InserterListbox from '../../inserter-listbox';
18
17
  import { searchItems } from '../search-items';
19
-
20
- const INITIAL_INSERTER_RESULTS = 2;
18
+ import BlockPatternsPaging from '../../block-patterns-paging';
19
+ import usePatternsPaging from '../hooks/use-patterns-paging';
20
+ import { allPatternsCategory, myPatternsCategory } from '../block-patterns-tab';
21
21
 
22
22
  function PatternsListHeader( { filterValue, filteredBlockPatternsLength } ) {
23
23
  if ( ! filterValue ) {
24
24
  return null;
25
25
  }
26
+
26
27
  return (
27
28
  <Heading
28
29
  level={ 2 }
@@ -30,25 +31,25 @@ function PatternsListHeader( { filterValue, filteredBlockPatternsLength } ) {
30
31
  className="block-editor-block-patterns-explorer__search-results-count"
31
32
  >
32
33
  { sprintf(
33
- /* translators: %d: number of patterns. %s: block pattern search query */
34
+ /* translators: %d: number of patterns. */
34
35
  _n(
35
- '%1$d pattern found for "%2$s"',
36
- '%1$d patterns found for "%2$s"',
36
+ '%d pattern found',
37
+ '%d patterns found',
37
38
  filteredBlockPatternsLength
38
39
  ),
39
- filteredBlockPatternsLength,
40
- filterValue
40
+ filteredBlockPatternsLength
41
41
  ) }
42
42
  </Heading>
43
43
  );
44
44
  }
45
45
 
46
- function PatternList( { filterValue, selectedCategory, patternCategories } ) {
46
+ function PatternList( { searchValue, selectedCategory, patternCategories } ) {
47
+ const container = useRef();
47
48
  const debouncedSpeak = useDebounce( speak, 500 );
48
49
  const [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {
49
50
  shouldFocusBlock: true,
50
51
  } );
51
- const [ allPatterns, , onSelectBlockPattern ] = usePatternsState(
52
+ const [ patterns, , onClickPattern ] = usePatternsState(
52
53
  onInsertBlocks,
53
54
  destinationRootClientId
54
55
  );
@@ -62,30 +63,40 @@ function PatternList( { filterValue, selectedCategory, patternCategories } ) {
62
63
  );
63
64
 
64
65
  const filteredBlockPatterns = useMemo( () => {
65
- if ( ! filterValue ) {
66
- return allPatterns.filter( ( pattern ) =>
67
- selectedCategory === 'uncategorized'
68
- ? ! pattern.categories?.length ||
69
- pattern.categories.every(
70
- ( category ) =>
71
- ! registeredPatternCategories.includes(
72
- category
73
- )
74
- )
75
- : pattern.categories?.includes( selectedCategory )
76
- );
66
+ const filteredPatterns = patterns.filter( ( pattern ) => {
67
+ if ( selectedCategory === allPatternsCategory.name ) {
68
+ return true;
69
+ }
70
+ if ( selectedCategory === myPatternsCategory.name && pattern.id ) {
71
+ return true;
72
+ }
73
+ if ( selectedCategory === 'uncategorized' ) {
74
+ const hasKnownCategory = pattern.categories.some(
75
+ ( category ) =>
76
+ registeredPatternCategories.includes( category )
77
+ );
78
+
79
+ return ! pattern.categories?.length || ! hasKnownCategory;
80
+ }
81
+
82
+ return pattern.categories?.includes( selectedCategory );
83
+ } );
84
+
85
+ if ( ! searchValue ) {
86
+ return filteredPatterns;
77
87
  }
78
- return searchItems( allPatterns, filterValue );
88
+
89
+ return searchItems( filteredPatterns, searchValue );
79
90
  }, [
80
- filterValue,
81
- allPatterns,
91
+ searchValue,
92
+ patterns,
82
93
  selectedCategory,
83
94
  registeredPatternCategories,
84
95
  ] );
85
96
 
86
97
  // Announce search results on change.
87
98
  useEffect( () => {
88
- if ( ! filterValue ) {
99
+ if ( ! searchValue ) {
89
100
  return;
90
101
  }
91
102
  const count = filteredBlockPatterns.length;
@@ -95,31 +106,45 @@ function PatternList( { filterValue, selectedCategory, patternCategories } ) {
95
106
  count
96
107
  );
97
108
  debouncedSpeak( resultsFoundMessage );
98
- }, [ filterValue, debouncedSpeak, filteredBlockPatterns.length ] );
109
+ }, [ searchValue, debouncedSpeak, filteredBlockPatterns.length ] );
99
110
 
100
- const currentShownPatterns = useAsyncList( filteredBlockPatterns, {
101
- step: INITIAL_INSERTER_RESULTS,
102
- } );
111
+ const pagingProps = usePatternsPaging(
112
+ filteredBlockPatterns,
113
+ selectedCategory,
114
+ container
115
+ );
116
+
117
+ // Reset page when search value changes.
118
+ const [ previousSearchValue, setPreviousSearchValue ] =
119
+ useState( searchValue );
120
+ if ( searchValue !== previousSearchValue ) {
121
+ setPreviousSearchValue( searchValue );
122
+ pagingProps.changePage( 1 );
123
+ }
103
124
 
104
125
  const hasItems = !! filteredBlockPatterns?.length;
105
126
  return (
106
- <div className="block-editor-block-patterns-explorer__list">
107
- { hasItems && (
108
- <PatternsListHeader
109
- filterValue={ filterValue }
110
- filteredBlockPatternsLength={ filteredBlockPatterns.length }
111
- />
112
- ) }
127
+ <div
128
+ className="block-editor-block-patterns-explorer__list"
129
+ ref={ container }
130
+ >
131
+ <PatternsListHeader
132
+ filterValue={ searchValue }
133
+ filteredBlockPatternsLength={ filteredBlockPatterns.length }
134
+ />
135
+
113
136
  <InserterListbox>
114
- { ! hasItems && <InserterNoResults /> }
115
137
  { hasItems && (
116
138
  <BlockPatternsList
117
- shownPatterns={ currentShownPatterns }
118
- blockPatterns={ filteredBlockPatterns }
119
- onClickPattern={ onSelectBlockPattern }
139
+ shownPatterns={ pagingProps.categoryPatternsAsyncList }
140
+ blockPatterns={ pagingProps.categoryPatterns }
141
+ onClickPattern={ onClickPattern }
120
142
  isDraggable={ false }
121
143
  />
122
144
  ) }
145
+ { pagingProps.numPages > 1 && (
146
+ <BlockPatternsPaging { ...pagingProps } />
147
+ ) }
123
148
  </InserterListbox>
124
149
  </div>
125
150
  );
@@ -31,14 +31,14 @@ function PatternCategoriesList( {
31
31
  );
32
32
  }
33
33
 
34
- function PatternsExplorerSearch( { filterValue, setFilterValue } ) {
34
+ function PatternsExplorerSearch( { searchValue, setSearchValue } ) {
35
35
  const baseClassName = 'block-editor-block-patterns-explorer__search';
36
36
  return (
37
37
  <div className={ baseClassName }>
38
38
  <SearchControl
39
39
  __nextHasNoMarginBottom
40
- onChange={ setFilterValue }
41
- value={ filterValue }
40
+ onChange={ setSearchValue }
41
+ value={ searchValue }
42
42
  label={ __( 'Search for patterns' ) }
43
43
  placeholder={ __( 'Search' ) }
44
44
  />
@@ -50,17 +50,17 @@ function PatternExplorerSidebar( {
50
50
  selectedCategory,
51
51
  patternCategories,
52
52
  onClickCategory,
53
- filterValue,
54
- setFilterValue,
53
+ searchValue,
54
+ setSearchValue,
55
55
  } ) {
56
56
  const baseClassName = 'block-editor-block-patterns-explorer__sidebar';
57
57
  return (
58
58
  <div className={ baseClassName }>
59
59
  <PatternsExplorerSearch
60
- filterValue={ filterValue }
61
- setFilterValue={ setFilterValue }
60
+ searchValue={ searchValue }
61
+ setSearchValue={ setSearchValue }
62
62
  />
63
- { ! filterValue && (
63
+ { ! searchValue && (
64
64
  <PatternCategoriesList
65
65
  selectedCategory={ selectedCategory }
66
66
  patternCategories={ patternCategories }
@@ -0,0 +1,183 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ SVG,
6
+ Path,
7
+ DropdownMenu,
8
+ MenuGroup,
9
+ MenuItemsChoice,
10
+ } from '@wordpress/components';
11
+ import { __ } from '@wordpress/i18n';
12
+ import { Icon } from '@wordpress/icons';
13
+ import { useMemo } from '@wordpress/element';
14
+
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+ import { myPatternsCategory } from './block-patterns-tab';
19
+
20
+ export const PATTERN_TYPES = {
21
+ all: 'all',
22
+ synced: 'synced',
23
+ unsynced: 'unsynced',
24
+ user: 'user',
25
+ theme: 'theme',
26
+ directory: 'directory',
27
+ };
28
+
29
+ export const SYNC_TYPES = {
30
+ all: 'all',
31
+ full: 'fully',
32
+ unsynced: 'unsynced',
33
+ };
34
+
35
+ const getShouldDisableSyncFilter = ( sourceFilter ) =>
36
+ sourceFilter !== PATTERN_TYPES.all && sourceFilter !== PATTERN_TYPES.user;
37
+
38
+ const getShouldDisableNonUserSources = ( category ) => {
39
+ return category.name === myPatternsCategory.name;
40
+ };
41
+
42
+ export function BlockPatternsSyncFilter( {
43
+ setPatternSyncFilter,
44
+ setPatternSourceFilter,
45
+ patternSyncFilter,
46
+ patternSourceFilter,
47
+ scrollContainerRef,
48
+ category,
49
+ } ) {
50
+ // If the category is `myPatterns` then we need to set the source filter to `user`, but
51
+ // we do this by deriving from props rather than calling setPatternSourceFilter otherwise
52
+ // the user may be confused when switching to another category if the haven't explicity set
53
+ // this filter themselves.
54
+ const currentPatternSourceFilter =
55
+ category.name === myPatternsCategory.name
56
+ ? PATTERN_TYPES.user
57
+ : patternSourceFilter;
58
+
59
+ // We need to disable the sync filter option if the source filter is not 'all' or 'user'
60
+ // otherwise applying them will just result in no patterns being shown.
61
+ const shouldDisableSyncFilter = getShouldDisableSyncFilter(
62
+ currentPatternSourceFilter
63
+ );
64
+
65
+ // We also need to disable the directory and theme source filter options if the category
66
+ // is `myPatterns` otherwise applying them will also just result in no patterns being shown.
67
+ const shouldDisableNonUserSources =
68
+ getShouldDisableNonUserSources( category );
69
+
70
+ const patternSyncMenuOptions = useMemo(
71
+ () => [
72
+ { value: SYNC_TYPES.all, label: __( 'All' ) },
73
+ {
74
+ value: SYNC_TYPES.full,
75
+ label: __( 'Synced' ),
76
+ info: __( 'Updated everywhere' ),
77
+ disabled: shouldDisableSyncFilter,
78
+ },
79
+ {
80
+ value: SYNC_TYPES.unsynced,
81
+ label: __( 'Standard' ),
82
+ info: __( 'Edit freely' ),
83
+ disabled: shouldDisableSyncFilter,
84
+ },
85
+ ],
86
+ [ shouldDisableSyncFilter ]
87
+ );
88
+
89
+ const patternSourceMenuOptions = useMemo(
90
+ () => [
91
+ {
92
+ value: PATTERN_TYPES.all,
93
+ label: __( 'All' ),
94
+ disabled: shouldDisableNonUserSources,
95
+ },
96
+ {
97
+ value: PATTERN_TYPES.directory,
98
+ label: __( 'Directory' ),
99
+ info: __( 'Pattern directory & core' ),
100
+ disabled: shouldDisableNonUserSources,
101
+ },
102
+ {
103
+ value: PATTERN_TYPES.theme,
104
+ label: __( 'Theme' ),
105
+ info: __( 'Bundled with the theme' ),
106
+ disabled: shouldDisableNonUserSources,
107
+ },
108
+ {
109
+ value: PATTERN_TYPES.user,
110
+ label: __( 'User' ),
111
+ info: __( 'Custom created' ),
112
+ },
113
+ ],
114
+ [ shouldDisableNonUserSources ]
115
+ );
116
+
117
+ function handleSetSourceFilterChange( newSourceFilter ) {
118
+ setPatternSourceFilter( newSourceFilter );
119
+ if ( getShouldDisableSyncFilter( newSourceFilter ) ) {
120
+ setPatternSyncFilter( SYNC_TYPES.all );
121
+ }
122
+ }
123
+
124
+ return (
125
+ <>
126
+ <DropdownMenu
127
+ popoverProps={ {
128
+ placement: 'right-end',
129
+ } }
130
+ label="Filter patterns"
131
+ icon={
132
+ <Icon
133
+ icon={
134
+ <SVG
135
+ width="24"
136
+ height="24"
137
+ viewBox="0 0 24 24"
138
+ fill="none"
139
+ xmlns="http://www.w3.org/2000/svg"
140
+ >
141
+ <Path
142
+ d="M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z"
143
+ fill="#1E1E1E"
144
+ />
145
+ </SVG>
146
+ }
147
+ />
148
+ }
149
+ >
150
+ { () => (
151
+ <>
152
+ <MenuGroup label={ __( 'Author' ) }>
153
+ <MenuItemsChoice
154
+ choices={ patternSourceMenuOptions }
155
+ onSelect={ ( value ) => {
156
+ handleSetSourceFilterChange( value );
157
+ scrollContainerRef.current?.scrollTo(
158
+ 0,
159
+ 0
160
+ );
161
+ } }
162
+ value={ currentPatternSourceFilter }
163
+ />
164
+ </MenuGroup>
165
+ <MenuGroup label={ __( 'Type' ) }>
166
+ <MenuItemsChoice
167
+ choices={ patternSyncMenuOptions }
168
+ onSelect={ ( value ) => {
169
+ setPatternSyncFilter( value );
170
+ scrollContainerRef.current?.scrollTo(
171
+ 0,
172
+ 0
173
+ );
174
+ } }
175
+ value={ patternSyncFilter }
176
+ />
177
+ </MenuGroup>
178
+ </>
179
+ ) }
180
+ </DropdownMenu>
181
+ </>
182
+ );
183
+ }