@wordpress/block-editor 12.16.1-next.79a6196f.0 → 12.18.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 (376) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +32 -0
  3. package/build/components/block-draggable/index.js +11 -3
  4. package/build/components/block-draggable/index.js.map +1 -1
  5. package/build/components/block-edit/context.js +3 -1
  6. package/build/components/block-edit/context.js.map +1 -1
  7. package/build/components/block-edit/index.js +4 -2
  8. package/build/components/block-edit/index.js.map +1 -1
  9. package/build/components/block-editing-mode/index.js +6 -3
  10. package/build/components/block-editing-mode/index.js.map +1 -1
  11. package/build/components/block-inspector/index.js +5 -2
  12. package/build/components/block-inspector/index.js.map +1 -1
  13. package/build/components/block-list/block.js +4 -3
  14. package/build/components/block-list/block.js.map +1 -1
  15. package/build/components/block-list/block.native.js +9 -5
  16. package/build/components/block-list/block.native.js.map +1 -1
  17. package/build/components/block-list/index.js +30 -4
  18. package/build/components/block-list/index.js.map +1 -1
  19. package/build/components/block-list/private-block-context.js +1 -1
  20. package/build/components/block-list/private-block-context.js.map +1 -1
  21. package/build/components/block-list/use-in-between-inserter.js +1 -1
  22. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  23. package/build/components/block-popover/inbetween.js +15 -3
  24. package/build/components/block-popover/inbetween.js.map +1 -1
  25. package/build/components/block-preview/auto.js +1 -1
  26. package/build/components/block-preview/auto.js.map +1 -1
  27. package/build/components/block-removal-warning-modal/index.js +3 -2
  28. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  29. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -4
  30. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  31. package/build/components/block-switcher/block-transformations-menu.js +12 -1
  32. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  33. package/build/components/block-switcher/index.js +119 -90
  34. package/build/components/block-switcher/index.js.map +1 -1
  35. package/build/components/block-tools/insertion-point.js +10 -3
  36. package/build/components/block-tools/insertion-point.js.map +1 -1
  37. package/build/components/font-sizes/fluid-utils.js +7 -1
  38. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  39. package/build/components/global-styles/border-panel.js +5 -14
  40. package/build/components/global-styles/border-panel.js.map +1 -1
  41. package/build/components/global-styles/effects-panel.js +7 -1
  42. package/build/components/global-styles/effects-panel.js.map +1 -1
  43. package/build/components/iframe/get-compatibility-styles.js +99 -0
  44. package/build/components/iframe/get-compatibility-styles.js.map +1 -0
  45. package/build/components/iframe/index.js +2 -3
  46. package/build/components/iframe/index.js.map +1 -1
  47. package/build/components/index.js +16 -2
  48. package/build/components/index.js.map +1 -1
  49. package/build/components/index.native.js +16 -2
  50. package/build/components/index.native.js.map +1 -1
  51. package/build/components/inspector-controls/groups.js +2 -0
  52. package/build/components/inspector-controls/groups.js.map +1 -1
  53. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  54. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  55. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
  56. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  57. package/build/components/link-control/link-preview.js +30 -26
  58. package/build/components/link-control/link-preview.js.map +1 -1
  59. package/build/components/link-control/search-input.js +1 -9
  60. package/build/components/link-control/search-input.js.map +1 -1
  61. package/build/components/list-view/block-contents.js +3 -1
  62. package/build/components/list-view/block-contents.js.map +1 -1
  63. package/build/components/list-view/block.js +10 -1
  64. package/build/components/list-view/block.js.map +1 -1
  65. package/build/components/list-view/branch.js +29 -8
  66. package/build/components/list-view/branch.js.map +1 -1
  67. package/build/components/list-view/drop-indicator.js +100 -32
  68. package/build/components/list-view/drop-indicator.js.map +1 -1
  69. package/build/components/list-view/index.js +52 -4
  70. package/build/components/list-view/index.js.map +1 -1
  71. package/build/components/list-view/leaf.js +2 -2
  72. package/build/components/list-view/leaf.js.map +1 -1
  73. package/build/components/list-view/use-list-view-block-indexes.js +30 -0
  74. package/build/components/list-view/use-list-view-block-indexes.js.map +1 -0
  75. package/build/components/list-view/use-list-view-drop-zone.js +56 -5
  76. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  77. package/build/components/list-view/utils.js +92 -0
  78. package/build/components/list-view/utils.js.map +1 -1
  79. package/build/components/provider/index.js +1 -1
  80. package/build/components/provider/index.js.map +1 -1
  81. package/build/components/recursion-provider/index.js +21 -0
  82. package/build/components/recursion-provider/index.js.map +1 -1
  83. package/build/components/rich-text/index.js +30 -6
  84. package/build/components/rich-text/index.js.map +1 -1
  85. package/build/components/rich-text/native/index.native.js +9 -9
  86. package/build/components/rich-text/native/index.native.js.map +1 -1
  87. package/build/components/use-block-drop-zone/index.js +30 -7
  88. package/build/components/use-block-drop-zone/index.js.map +1 -1
  89. package/build/components/use-on-block-drop/index.js +50 -8
  90. package/build/components/use-on-block-drop/index.js.map +1 -1
  91. package/build/hooks/block-hooks.js +5 -14
  92. package/build/hooks/block-hooks.js.map +1 -1
  93. package/build/hooks/content-lock-ui.js +17 -42
  94. package/build/hooks/content-lock-ui.js.map +1 -1
  95. package/build/hooks/effects.js +66 -0
  96. package/build/hooks/effects.js.map +1 -0
  97. package/build/hooks/index.js +14 -0
  98. package/build/hooks/index.js.map +1 -1
  99. package/build/hooks/index.native.js +13 -0
  100. package/build/hooks/index.native.js.map +1 -1
  101. package/build/hooks/style.js +6 -2
  102. package/build/hooks/style.js.map +1 -1
  103. package/build/hooks/supports.js +2 -1
  104. package/build/hooks/supports.js.map +1 -1
  105. package/build/hooks/typography.native.js +2 -2
  106. package/build/hooks/typography.native.js.map +1 -1
  107. package/build/hooks/use-bindings-attributes.js +115 -0
  108. package/build/hooks/use-bindings-attributes.js.map +1 -0
  109. package/build/hooks/use-shadow-props.js +46 -0
  110. package/build/hooks/use-shadow-props.js.map +1 -0
  111. package/build/hooks/utils.js +7 -6
  112. package/build/hooks/utils.js.map +1 -1
  113. package/build/index.js +14 -0
  114. package/build/index.js.map +1 -1
  115. package/build/store/actions.js +10 -6
  116. package/build/store/actions.js.map +1 -1
  117. package/build/store/index.js +2 -0
  118. package/build/store/index.js.map +1 -1
  119. package/build/store/private-actions.js +37 -0
  120. package/build/store/private-actions.js.map +1 -1
  121. package/build/store/private-selectors.js +60 -9
  122. package/build/store/private-selectors.js.map +1 -1
  123. package/build/store/reducer.js +44 -3
  124. package/build/store/reducer.js.map +1 -1
  125. package/build/store/resolvers.js +27 -0
  126. package/build/store/resolvers.js.map +1 -0
  127. package/build/store/selectors.js +94 -56
  128. package/build/store/selectors.js.map +1 -1
  129. package/build/store/utils.js +5 -26
  130. package/build/store/utils.js.map +1 -1
  131. package/build/utils/index.js +0 -16
  132. package/build/utils/index.js.map +1 -1
  133. package/build/utils/math.js +13 -0
  134. package/build/utils/math.js.map +1 -1
  135. package/build/utils/transform-styles/index.js +37 -27
  136. package/build/utils/transform-styles/index.js.map +1 -1
  137. package/build-module/components/block-draggable/index.js +11 -3
  138. package/build-module/components/block-draggable/index.js.map +1 -1
  139. package/build-module/components/block-edit/context.js +1 -0
  140. package/build-module/components/block-edit/context.js.map +1 -1
  141. package/build-module/components/block-edit/index.js +5 -3
  142. package/build-module/components/block-edit/index.js.map +1 -1
  143. package/build-module/components/block-editing-mode/index.js +7 -4
  144. package/build-module/components/block-editing-mode/index.js.map +1 -1
  145. package/build-module/components/block-inspector/index.js +5 -2
  146. package/build-module/components/block-inspector/index.js.map +1 -1
  147. package/build-module/components/block-list/block.js +6 -5
  148. package/build-module/components/block-list/block.js.map +1 -1
  149. package/build-module/components/block-list/block.native.js +11 -7
  150. package/build-module/components/block-list/block.native.js.map +1 -1
  151. package/build-module/components/block-list/index.js +31 -5
  152. package/build-module/components/block-list/index.js.map +1 -1
  153. package/build-module/components/block-list/private-block-context.js +1 -1
  154. package/build-module/components/block-list/private-block-context.js.map +1 -1
  155. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  156. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  157. package/build-module/components/block-popover/inbetween.js +15 -3
  158. package/build-module/components/block-popover/inbetween.js.map +1 -1
  159. package/build-module/components/block-preview/auto.js +3 -3
  160. package/build-module/components/block-preview/auto.js.map +1 -1
  161. package/build-module/components/block-removal-warning-modal/index.js +3 -2
  162. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  163. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -4
  164. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  165. package/build-module/components/block-switcher/block-transformations-menu.js +12 -1
  166. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  167. package/build-module/components/block-switcher/index.js +116 -86
  168. package/build-module/components/block-switcher/index.js.map +1 -1
  169. package/build-module/components/block-tools/insertion-point.js +10 -3
  170. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  171. package/build-module/components/font-sizes/fluid-utils.js +7 -1
  172. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  173. package/build-module/components/global-styles/border-panel.js +5 -14
  174. package/build-module/components/global-styles/border-panel.js.map +1 -1
  175. package/build-module/components/global-styles/effects-panel.js +7 -1
  176. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  177. package/build-module/components/iframe/get-compatibility-styles.js +93 -0
  178. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -0
  179. package/build-module/components/iframe/index.js +2 -3
  180. package/build-module/components/iframe/index.js.map +1 -1
  181. package/build-module/components/index.js +1 -1
  182. package/build-module/components/index.js.map +1 -1
  183. package/build-module/components/index.native.js +1 -1
  184. package/build-module/components/index.native.js.map +1 -1
  185. package/build-module/components/inspector-controls/groups.js +2 -0
  186. package/build-module/components/inspector-controls/groups.js.map +1 -1
  187. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  188. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  189. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
  190. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  191. package/build-module/components/link-control/link-preview.js +32 -28
  192. package/build-module/components/link-control/link-preview.js.map +1 -1
  193. package/build-module/components/link-control/search-input.js +1 -8
  194. package/build-module/components/link-control/search-input.js.map +1 -1
  195. package/build-module/components/list-view/block-contents.js +3 -1
  196. package/build-module/components/list-view/block-contents.js.map +1 -1
  197. package/build-module/components/list-view/block.js +10 -1
  198. package/build-module/components/list-view/block.js.map +1 -1
  199. package/build-module/components/list-view/branch.js +30 -9
  200. package/build-module/components/list-view/branch.js.map +1 -1
  201. package/build-module/components/list-view/drop-indicator.js +99 -32
  202. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  203. package/build-module/components/list-view/index.js +54 -6
  204. package/build-module/components/list-view/index.js.map +1 -1
  205. package/build-module/components/list-view/leaf.js +2 -2
  206. package/build-module/components/list-view/leaf.js.map +1 -1
  207. package/build-module/components/list-view/use-list-view-block-indexes.js +23 -0
  208. package/build-module/components/list-view/use-list-view-block-indexes.js.map +1 -0
  209. package/build-module/components/list-view/use-list-view-drop-zone.js +58 -7
  210. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  211. package/build-module/components/list-view/utils.js +91 -0
  212. package/build-module/components/list-view/utils.js.map +1 -1
  213. package/build-module/components/provider/index.js +1 -1
  214. package/build-module/components/provider/index.js.map +1 -1
  215. package/build-module/components/recursion-provider/index.js +17 -0
  216. package/build-module/components/recursion-provider/index.js.map +1 -1
  217. package/build-module/components/rich-text/index.js +30 -6
  218. package/build-module/components/rich-text/index.js.map +1 -1
  219. package/build-module/components/rich-text/native/index.native.js +9 -9
  220. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  221. package/build-module/components/use-block-drop-zone/index.js +31 -8
  222. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  223. package/build-module/components/use-on-block-drop/index.js +51 -9
  224. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  225. package/build-module/hooks/block-hooks.js +5 -14
  226. package/build-module/hooks/block-hooks.js.map +1 -1
  227. package/build-module/hooks/content-lock-ui.js +19 -43
  228. package/build-module/hooks/content-lock-ui.js.map +1 -1
  229. package/build-module/hooks/effects.js +51 -0
  230. package/build-module/hooks/effects.js.map +1 -0
  231. package/build-module/hooks/index.js +2 -0
  232. package/build-module/hooks/index.js.map +1 -1
  233. package/build-module/hooks/index.native.js +1 -0
  234. package/build-module/hooks/index.native.js.map +1 -1
  235. package/build-module/hooks/style.js +6 -2
  236. package/build-module/hooks/style.js.map +1 -1
  237. package/build-module/hooks/supports.js +2 -1
  238. package/build-module/hooks/supports.js.map +1 -1
  239. package/build-module/hooks/typography.native.js +2 -2
  240. package/build-module/hooks/typography.native.js.map +1 -1
  241. package/build-module/hooks/use-bindings-attributes.js +112 -0
  242. package/build-module/hooks/use-bindings-attributes.js.map +1 -0
  243. package/build-module/hooks/use-shadow-props.js +39 -0
  244. package/build-module/hooks/use-shadow-props.js.map +1 -0
  245. package/build-module/hooks/utils.js +9 -8
  246. package/build-module/hooks/utils.js.map +1 -1
  247. package/build-module/index.js +1 -1
  248. package/build-module/index.js.map +1 -1
  249. package/build-module/store/actions.js +10 -6
  250. package/build-module/store/actions.js.map +1 -1
  251. package/build-module/store/index.js +2 -0
  252. package/build-module/store/index.js.map +1 -1
  253. package/build-module/store/private-actions.js +35 -0
  254. package/build-module/store/private-actions.js.map +1 -1
  255. package/build-module/store/private-selectors.js +53 -8
  256. package/build-module/store/private-selectors.js.map +1 -1
  257. package/build-module/store/reducer.js +43 -3
  258. package/build-module/store/reducer.js.map +1 -1
  259. package/build-module/store/resolvers.js +20 -0
  260. package/build-module/store/resolvers.js.map +1 -0
  261. package/build-module/store/selectors.js +89 -52
  262. package/build-module/store/selectors.js.map +1 -1
  263. package/build-module/store/utils.js +3 -23
  264. package/build-module/store/utils.js.map +1 -1
  265. package/build-module/utils/index.js +0 -1
  266. package/build-module/utils/index.js.map +1 -1
  267. package/build-module/utils/math.js +12 -0
  268. package/build-module/utils/math.js.map +1 -1
  269. package/build-module/utils/transform-styles/index.js +36 -27
  270. package/build-module/utils/transform-styles/index.js.map +1 -1
  271. package/build-style/content-rtl.css +33 -16
  272. package/build-style/content.css +33 -16
  273. package/build-style/default-editor-styles-rtl.css +1 -1
  274. package/build-style/default-editor-styles.css +1 -1
  275. package/build-style/style-rtl.css +169 -114
  276. package/build-style/style.css +169 -114
  277. package/package.json +31 -31
  278. package/src/components/block-canvas/style.scss +8 -1
  279. package/src/components/block-draggable/index.js +16 -5
  280. package/src/components/block-edit/context.js +1 -0
  281. package/src/components/block-edit/index.js +4 -0
  282. package/src/components/block-editing-mode/index.js +12 -7
  283. package/src/components/block-inspector/index.js +5 -2
  284. package/src/components/block-list/block.js +5 -4
  285. package/src/components/block-list/block.native.js +13 -3
  286. package/src/components/block-list/content.scss +34 -5
  287. package/src/components/block-list/index.js +52 -16
  288. package/src/components/block-list/private-block-context.js +1 -1
  289. package/src/components/block-list/use-in-between-inserter.js +1 -2
  290. package/src/components/block-popover/inbetween.js +22 -2
  291. package/src/components/block-preview/auto.js +3 -3
  292. package/src/components/block-removal-warning-modal/index.js +3 -2
  293. package/src/components/block-settings-menu/block-settings-dropdown.js +2 -7
  294. package/src/components/block-switcher/block-transformations-menu.js +18 -1
  295. package/src/components/block-switcher/index.js +133 -111
  296. package/src/components/block-switcher/style.scss +6 -4
  297. package/src/components/block-switcher/test/index.js +113 -230
  298. package/src/components/block-toolbar/style.scss +22 -18
  299. package/src/components/block-tools/insertion-point.js +15 -2
  300. package/src/components/block-tools/style.scss +8 -7
  301. package/src/components/font-sizes/fluid-utils.js +8 -2
  302. package/src/components/font-sizes/test/fluid-utils.js +9 -0
  303. package/src/components/global-styles/border-panel.js +7 -17
  304. package/src/components/global-styles/effects-panel.js +16 -1
  305. package/src/components/iframe/get-compatibility-styles.js +120 -0
  306. package/src/components/iframe/index.js +2 -3
  307. package/src/components/index.js +4 -2
  308. package/src/components/index.native.js +4 -2
  309. package/src/components/inspector-controls/groups.js +2 -0
  310. package/src/components/inspector-controls-tabs/styles-tab.js +1 -0
  311. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -0
  312. package/src/components/link-control/link-preview.js +31 -55
  313. package/src/components/link-control/search-input.js +1 -9
  314. package/src/components/link-control/style.scss +31 -85
  315. package/src/components/link-control/test/index.js +2 -1
  316. package/src/components/list-view/block-contents.js +5 -1
  317. package/src/components/list-view/block.js +9 -0
  318. package/src/components/list-view/branch.js +30 -10
  319. package/src/components/list-view/drop-indicator.js +139 -46
  320. package/src/components/list-view/index.js +74 -3
  321. package/src/components/list-view/leaf.js +2 -2
  322. package/src/components/list-view/style.scss +102 -13
  323. package/src/components/list-view/test/use-list-view-drop-zone.js +4 -0
  324. package/src/components/list-view/test/utils.js +218 -1
  325. package/src/components/list-view/use-list-view-block-indexes.js +29 -0
  326. package/src/components/list-view/use-list-view-drop-zone.js +78 -6
  327. package/src/components/list-view/utils.js +116 -0
  328. package/src/components/provider/index.js +3 -1
  329. package/src/components/recursion-provider/README.md +2 -2
  330. package/src/components/recursion-provider/index.js +17 -0
  331. package/src/components/rich-text/index.js +48 -10
  332. package/src/components/rich-text/native/index.native.js +10 -10
  333. package/src/components/use-block-drop-zone/index.js +60 -19
  334. package/src/components/use-block-drop-zone/test/index.js +32 -61
  335. package/src/components/use-on-block-drop/index.js +92 -11
  336. package/src/hooks/block-hooks.js +5 -17
  337. package/src/hooks/content-lock-ui.js +15 -55
  338. package/src/hooks/effects.js +57 -0
  339. package/src/hooks/index.js +2 -0
  340. package/src/hooks/index.native.js +1 -0
  341. package/src/hooks/style.js +8 -0
  342. package/src/hooks/supports.js +2 -0
  343. package/src/hooks/test/effects.js +39 -0
  344. package/src/hooks/typography.native.js +2 -2
  345. package/src/hooks/use-bindings-attributes.js +148 -0
  346. package/src/hooks/use-shadow-props.js +37 -0
  347. package/src/hooks/utils.js +10 -6
  348. package/src/index.js +2 -0
  349. package/src/store/actions.js +9 -4
  350. package/src/store/index.js +2 -0
  351. package/src/store/private-actions.js +32 -0
  352. package/src/store/private-selectors.js +78 -21
  353. package/src/store/reducer.js +49 -2
  354. package/src/store/resolvers.js +17 -0
  355. package/src/store/selectors.js +169 -161
  356. package/src/store/test/registry-selectors.js +431 -0
  357. package/src/store/test/selectors.js +14 -400
  358. package/src/store/utils.js +10 -33
  359. package/src/style.scss +0 -1
  360. package/src/utils/index.js +0 -1
  361. package/src/utils/math.js +12 -0
  362. package/src/utils/transform-styles/index.js +52 -37
  363. package/tsconfig.tsbuildinfo +1 -1
  364. package/build/components/iframe/use-compatibility-styles.js +0 -100
  365. package/build/components/iframe/use-compatibility-styles.js.map +0 -1
  366. package/build/utils/block-variation-transforms.js +0 -42
  367. package/build/utils/block-variation-transforms.js.map +0 -1
  368. package/build-module/components/iframe/use-compatibility-styles.js +0 -94
  369. package/build-module/components/iframe/use-compatibility-styles.js.map +0 -1
  370. package/build-module/utils/block-variation-transforms.js +0 -35
  371. package/build-module/utils/block-variation-transforms.js.map +0 -1
  372. package/src/components/block-switcher/test/__snapshots__/index.js.snap +0 -116
  373. package/src/components/contrast-checker/style.scss +0 -3
  374. package/src/components/iframe/use-compatibility-styles.js +0 -122
  375. package/src/utils/block-variation-transforms.js +0 -38
  376. package/src/utils/test/block-variation-transforms.js +0 -94
@@ -17,8 +17,10 @@ import { createRegistrySelector } from '@wordpress/data';
17
17
  /**
18
18
  * Internal dependencies
19
19
  */
20
- import { getUserPatterns, checkAllowListRecursive, checkAllowList } from './utils';
20
+ import { checkAllowListRecursive, checkAllowList, getAllPatternsDependants } from './utils';
21
21
  import { orderBy } from '../utils/sorting';
22
+ import { STORE_NAME } from './constants';
23
+ import { unlock } from '../lock-unlock';
22
24
 
23
25
  /**
24
26
  * A block selection object.
@@ -263,14 +265,14 @@ export const getGlobalBlockCount = createSelector((state, blockName) => {
263
265
  }, state => [state.blocks.order, state.blocks.byClientId]);
264
266
 
265
267
  /**
266
- * Returns all global blocks that match a blockName. Results include nested blocks.
268
+ * Returns all blocks that match a blockName. Results include nested blocks.
267
269
  *
268
270
  * @param {Object} state Global application state.
269
271
  * @param {?string} blockName Optional block name, if not specified, returns an empty array.
270
272
  *
271
273
  * @return {Array} Array of clientIds of blocks with name equal to blockName.
272
274
  */
273
- export const __experimentalGetGlobalBlocksByName = createSelector((state, blockName) => {
275
+ export const getBlocksByName = createSelector((state, blockName) => {
274
276
  if (!blockName) {
275
277
  return EMPTY_ARRAY;
276
278
  }
@@ -283,6 +285,24 @@ export const __experimentalGetGlobalBlocksByName = createSelector((state, blockN
283
285
  return foundBlocks.length > 0 ? foundBlocks : EMPTY_ARRAY;
284
286
  }, state => [state.blocks.order, state.blocks.byClientId]);
285
287
 
288
+ /**
289
+ * Returns all global blocks that match a blockName. Results include nested blocks.
290
+ *
291
+ * @deprecated
292
+ *
293
+ * @param {Object} state Global application state.
294
+ * @param {?string} blockName Optional block name, if not specified, returns an empty array.
295
+ *
296
+ * @return {Array} Array of clientIds of blocks with name equal to blockName.
297
+ */
298
+ export function __experimentalGetGlobalBlocksByName(state, blockName) {
299
+ deprecated("wp.data.select( 'core/block-editor' ).__experimentalGetGlobalBlocksByName", {
300
+ since: '6.5',
301
+ alternative: `wp.data.select( 'core/block-editor' ).getBlocksByName`
302
+ });
303
+ return getBlocksByName(state, blockName);
304
+ }
305
+
286
306
  /**
287
307
  * Given an array of block client IDs, returns the corresponding array of block
288
308
  * objects.
@@ -1750,7 +1770,7 @@ export const getInserterItems = createSelector((state, rootClientId = null) => {
1750
1770
  });
1751
1771
  const sortedBlockTypes = [...coreItems, ...nonCoreItems];
1752
1772
  return [...sortedBlockTypes, ...syncedPatternInserterItems];
1753
- }, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId, state.blocks.order, state.preferences.insertUsage, state.settings.allowedBlockTypes, state.settings.templateLock, getReusableBlocks(state), getBlockTypes()]);
1773
+ }, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId.get(rootClientId), state.blocks.order, state.preferences.insertUsage, state.settings.allowedBlockTypes, state.settings.templateLock, getReusableBlocks(state), getBlockTypes()]);
1754
1774
 
1755
1775
  /**
1756
1776
  * Determines the items that appear in the available block transforms list.
@@ -1792,7 +1812,7 @@ export const getBlockTransformItems = createSelector((state, blocks, rootClientI
1792
1812
  return accumulator;
1793
1813
  }, []);
1794
1814
  return orderBy(possibleTransforms, block => itemsByName[block.name].frecency, 'desc');
1795
- }, (state, blocks, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId, state.preferences.insertUsage, state.settings.allowedBlockTypes, state.settings.templateLock, getBlockTypes()]);
1815
+ }, (state, blocks, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId.get(rootClientId), state.preferences.insertUsage, state.settings.allowedBlockTypes, state.settings.templateLock, getBlockTypes()]);
1796
1816
 
1797
1817
  /**
1798
1818
  * Determines whether there are items to show in the inserter.
@@ -1809,7 +1829,7 @@ export const hasInserterItems = createSelector((state, rootClientId = null) => {
1809
1829
  }
1810
1830
  const hasReusableBlock = canInsertBlockTypeUnmemoized(state, 'core/block', rootClientId) && getReusableBlocks(state).length > 0;
1811
1831
  return hasReusableBlock;
1812
- }, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId, state.settings.allowedBlockTypes, state.settings.templateLock, getReusableBlocks(state), getBlockTypes()]);
1832
+ }, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId.get(rootClientId), state.settings.allowedBlockTypes, state.settings.templateLock, getReusableBlocks(state), getBlockTypes()]);
1813
1833
 
1814
1834
  /**
1815
1835
  * Returns the list of allowed inserter blocks for inner blocks children.
@@ -1825,8 +1845,11 @@ export const getAllowedBlocks = createSelector((state, rootClientId = null) => {
1825
1845
  }
1826
1846
  const blockTypes = getBlockTypes().filter(blockType => canIncludeBlockTypeInInserter(state, blockType, rootClientId));
1827
1847
  const hasReusableBlock = canInsertBlockTypeUnmemoized(state, 'core/block', rootClientId) && getReusableBlocks(state).length > 0;
1828
- return [...blockTypes, ...(hasReusableBlock ? ['core/block'] : [])];
1829
- }, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId, state.settings.allowedBlockTypes, state.settings.templateLock, getReusableBlocks(state), getBlockTypes()]);
1848
+ if (hasReusableBlock) {
1849
+ blockTypes.push('core/block');
1850
+ }
1851
+ return blockTypes;
1852
+ }, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId.get(rootClientId), state.settings.allowedBlockTypes, state.settings.templateLock, getReusableBlocks(state), getBlockTypes()]);
1830
1853
  export const __experimentalGetAllowedBlocks = createSelector((state, rootClientId = null) => {
1831
1854
  deprecated('wp.data.select( "core/block-editor" ).__experimentalGetAllowedBlocks', {
1832
1855
  alternative: 'wp.data.select( "core/block-editor" ).getAllowedBlocks',
@@ -1871,13 +1894,12 @@ export const __experimentalGetDirectInsertBlock = createSelector((state, rootCli
1871
1894
  });
1872
1895
  return getDirectInsertBlock(state, rootClientId);
1873
1896
  }, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.tree.get(rootClientId)]);
1874
- export const __experimentalUserPatternCategories = createSelector(state => {
1875
- return state?.settings?.__experimentalUserPatternCategories;
1876
- }, state => [state.settings.__experimentalUserPatternCategories]);
1877
- export const __experimentalGetParsedPattern = createSelector((state, patternName) => {
1878
- const patterns = state.settings.__experimentalBlockPatterns;
1879
- const userPatterns = getUserPatterns(state);
1880
- const pattern = [...patterns, ...userPatterns].find(({
1897
+ export const __experimentalGetParsedPattern = createRegistrySelector(select => createSelector((state, patternName) => {
1898
+ const {
1899
+ getAllPatterns
1900
+ } = unlock(select(STORE_NAME));
1901
+ const patterns = getAllPatterns();
1902
+ const pattern = patterns.find(({
1881
1903
  name
1882
1904
  }) => name === patternName);
1883
1905
  if (!pattern) {
@@ -1889,23 +1911,10 @@ export const __experimentalGetParsedPattern = createSelector((state, patternName
1889
1911
  __unstableSkipMigrationLogs: true
1890
1912
  })
1891
1913
  };
1892
- }, state => [state.settings.__experimentalBlockPatterns, state.settings.__experimentalReusableBlocks, state?.settings?.__experimentalUserPatternCategories]);
1893
- const getAllAllowedPatterns = createSelector(state => {
1894
- const patterns = state.settings.__experimentalBlockPatterns;
1895
- const userPatterns = getUserPatterns(state);
1896
- const {
1897
- allowedBlockTypes
1898
- } = getSettings(state);
1899
- const parsedPatterns = [...userPatterns, ...patterns].filter(({
1900
- inserter = true
1901
- }) => !!inserter).map(({
1902
- name
1903
- }) => __experimentalGetParsedPattern(state, name));
1904
- const allowedPatterns = parsedPatterns.filter(({
1905
- blocks
1906
- }) => checkAllowListRecursive(blocks, allowedBlockTypes));
1907
- return allowedPatterns;
1908
- }, state => [state.settings.__experimentalBlockPatterns, state.settings.__experimentalReusableBlocks, state.settings.allowedBlockTypes, state?.settings?.__experimentalUserPatternCategories]);
1914
+ }, getAllPatternsDependants));
1915
+ const getAllowedPatternsDependants = (state, rootClientId) => {
1916
+ return [...getAllPatternsDependants(state), state.settings.allowedBlockTypes, state.settings.templateLock, state.blockListSettings[rootClientId], state.blocks.byClientId.get(rootClientId)];
1917
+ };
1909
1918
 
1910
1919
  /**
1911
1920
  * Returns the list of allowed patterns for inner blocks children.
@@ -1915,15 +1924,32 @@ const getAllAllowedPatterns = createSelector(state => {
1915
1924
  *
1916
1925
  * @return {Array?} The list of allowed patterns.
1917
1926
  */
1918
- export const __experimentalGetAllowedPatterns = createSelector((state, rootClientId = null) => {
1919
- const availableParsedPatterns = getAllAllowedPatterns(state);
1920
- const patternsAllowed = availableParsedPatterns.filter(({
1921
- blocks
1922
- }) => blocks.every(({
1923
- name
1924
- }) => canInsertBlockType(state, name, rootClientId)));
1925
- return patternsAllowed;
1926
- }, (state, rootClientId) => [state.settings.__experimentalBlockPatterns, state.settings.__experimentalReusableBlocks, state.settings.allowedBlockTypes, state.settings.templateLock, state.blockListSettings[rootClientId], state.blocks.byClientId.get(rootClientId)]);
1927
+ export const __experimentalGetAllowedPatterns = createRegistrySelector(select => {
1928
+ return createSelector((state, rootClientId = null) => {
1929
+ const {
1930
+ getAllPatterns,
1931
+ __experimentalGetParsedPattern: getParsedPattern
1932
+ } = unlock(select(STORE_NAME));
1933
+ const patterns = getAllPatterns();
1934
+ const {
1935
+ allowedBlockTypes
1936
+ } = getSettings(state);
1937
+ const parsedPatterns = patterns.filter(({
1938
+ inserter = true
1939
+ }) => !!inserter).map(({
1940
+ name
1941
+ }) => getParsedPattern(name));
1942
+ const availableParsedPatterns = parsedPatterns.filter(({
1943
+ blocks
1944
+ }) => checkAllowListRecursive(blocks, allowedBlockTypes));
1945
+ const patternsAllowed = availableParsedPatterns.filter(({
1946
+ blocks
1947
+ }) => blocks.every(({
1948
+ name
1949
+ }) => canInsertBlockType(state, name, rootClientId)));
1950
+ return patternsAllowed;
1951
+ }, getAllowedPatternsDependants);
1952
+ });
1927
1953
 
1928
1954
  /**
1929
1955
  * Returns the list of patterns based on their declared `blockTypes`
@@ -1938,24 +1964,24 @@ export const __experimentalGetAllowedPatterns = createSelector((state, rootClien
1938
1964
  *
1939
1965
  * @return {Array} The list of matched block patterns based on declared `blockTypes` and block name.
1940
1966
  */
1941
- export const getPatternsByBlockTypes = createSelector((state, blockNames, rootClientId = null) => {
1967
+ export const getPatternsByBlockTypes = createRegistrySelector(select => createSelector((state, blockNames, rootClientId = null) => {
1942
1968
  if (!blockNames) return EMPTY_ARRAY;
1943
- const patterns = __experimentalGetAllowedPatterns(state, rootClientId);
1969
+ const patterns = select(STORE_NAME).__experimentalGetAllowedPatterns(rootClientId);
1944
1970
  const normalizedBlockNames = Array.isArray(blockNames) ? blockNames : [blockNames];
1945
1971
  const filteredPatterns = patterns.filter(pattern => pattern?.blockTypes?.some?.(blockName => normalizedBlockNames.includes(blockName)));
1946
1972
  if (filteredPatterns.length === 0) {
1947
1973
  return EMPTY_ARRAY;
1948
1974
  }
1949
1975
  return filteredPatterns;
1950
- }, (state, blockNames, rootClientId) => [...__experimentalGetAllowedPatterns.getDependants(state, rootClientId)]);
1951
- export const __experimentalGetPatternsByBlockTypes = createSelector((state, blockNames, rootClientId = null) => {
1976
+ }, (state, blockNames, rootClientId) => getAllowedPatternsDependants(state, rootClientId)));
1977
+ export const __experimentalGetPatternsByBlockTypes = createRegistrySelector(select => {
1952
1978
  deprecated('wp.data.select( "core/block-editor" ).__experimentalGetPatternsByBlockTypes', {
1953
1979
  alternative: 'wp.data.select( "core/block-editor" ).getPatternsByBlockTypes',
1954
1980
  since: '6.2',
1955
1981
  version: '6.4'
1956
1982
  });
1957
- return getPatternsByBlockTypes(state, blockNames, rootClientId);
1958
- }, (state, blockNames, rootClientId) => [...__experimentalGetAllowedPatterns.getDependants(state, rootClientId)]);
1983
+ return select(STORE_NAME).getPatternsByBlockTypes;
1984
+ });
1959
1985
 
1960
1986
  /**
1961
1987
  * Determines the items that appear in the available pattern transforms list.
@@ -1974,7 +2000,7 @@ export const __experimentalGetPatternsByBlockTypes = createSelector((state, bloc
1974
2000
  *
1975
2001
  * @return {WPBlockPattern[]} Items that are eligible for a pattern transformation.
1976
2002
  */
1977
- export const __experimentalGetPatternTransformItems = createSelector((state, blocks, rootClientId = null) => {
2003
+ export const __experimentalGetPatternTransformItems = createRegistrySelector(select => createSelector((state, blocks, rootClientId = null) => {
1978
2004
  if (!blocks) return EMPTY_ARRAY;
1979
2005
  /**
1980
2006
  * For now we only handle blocks without InnerBlocks and take into account
@@ -2000,8 +2026,8 @@ export const __experimentalGetPatternTransformItems = createSelector((state, blo
2000
2026
  * block pattern's blocks and try to find matches from the selected blocks.
2001
2027
  * Now this happens in the consumer to avoid heavy operations in the selector.
2002
2028
  */
2003
- return getPatternsByBlockTypes(state, selectedBlockNames, rootClientId);
2004
- }, (state, blocks, rootClientId) => [...getPatternsByBlockTypes.getDependants(state, rootClientId)]);
2029
+ return select(STORE_NAME).getPatternsByBlockTypes(selectedBlockNames, rootClientId);
2030
+ }, (state, blocks, rootClientId) => getAllowedPatternsDependants(state, rootClientId)));
2005
2031
 
2006
2032
  /**
2007
2033
  * Returns the Block List settings of a block, if any exist.
@@ -2116,7 +2142,7 @@ export function __experimentalGetLastBlockAttributeChanges(state) {
2116
2142
  */
2117
2143
  function getReusableBlocks(state) {
2118
2144
  var _state$settings$__exp;
2119
- return (_state$settings$__exp = state?.settings?.__experimentalReusableBlocks) !== null && _state$settings$__exp !== void 0 ? _state$settings$__exp : EMPTY_ARRAY;
2145
+ return (_state$settings$__exp = state.settings.__experimentalReusableBlocks) !== null && _state$settings$__exp !== void 0 ? _state$settings$__exp : EMPTY_ARRAY;
2120
2146
  }
2121
2147
 
2122
2148
  /**
@@ -2267,7 +2293,7 @@ export const __unstableGetContentLockingParent = createSelector((state, clientId
2267
2293
  let result;
2268
2294
  while (state.blocks.parents.has(current)) {
2269
2295
  current = state.blocks.parents.get(current);
2270
- if (current && getBlockName(state, current) === 'core/block' && window.__experimentalPatternPartialSyncing || current && getTemplateLock(state, current) === 'contentOnly') {
2296
+ if (current && getBlockName(state, current) === 'core/block' || current && getTemplateLock(state, current) === 'contentOnly') {
2271
2297
  result = current;
2272
2298
  }
2273
2299
  }
@@ -2284,6 +2310,17 @@ export const __unstableGetContentLockingParent = createSelector((state, clientId
2284
2310
  export function __unstableGetTemporarilyEditingAsBlocks(state) {
2285
2311
  return state.temporarilyEditingAsBlocks;
2286
2312
  }
2313
+
2314
+ /**
2315
+ * DO-NOT-USE in production.
2316
+ * This selector is created for internal/experimental only usage and may be
2317
+ * removed anytime without any warning, causing breakage on any plugin or theme invoking it.
2318
+ *
2319
+ * @param {Object} state Global application state.
2320
+ */
2321
+ export function __unstableGetTemporarilyEditingFocusModeToRevert(state) {
2322
+ return state.temporarilyEditingFocusModeRevert;
2323
+ }
2287
2324
  export function __unstableHasActiveBlockOverlayActive(state, clientId) {
2288
2325
  // Prevent overlay on blocks with a non-default editing mode. If the mdoe is
2289
2326
  // 'disabled' then the overlay is redundant since the block can't be