@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
@@ -65,14 +65,10 @@ const {
65
65
  __experimentalGetLastBlockAttributeChanges,
66
66
  getLowestCommonAncestorWithSelectedBlock,
67
67
  __experimentalGetActiveBlockIdByBlockNames: getActiveBlockIdByBlockNames,
68
- __experimentalGetAllowedPatterns,
69
- __experimentalGetParsedPattern,
70
- getPatternsByBlockTypes,
71
68
  __unstableGetClientIdWithClientIdsTree,
72
69
  __unstableGetClientIdsTree,
73
- __experimentalGetPatternTransformItems,
74
70
  wasBlockJustInserted,
75
- __experimentalGetGlobalBlocksByName,
71
+ getBlocksByName,
76
72
  getBlockEditingMode,
77
73
  } = selectors;
78
74
 
@@ -975,7 +971,7 @@ describe( 'selectors', () => {
975
971
  } );
976
972
  } );
977
973
 
978
- describe( '__experimentalGetGlobalBlocksByName', () => {
974
+ describe( 'getBlocksByName', () => {
979
975
  const state = {
980
976
  blocks: {
981
977
  byClientId: new Map(
@@ -1017,31 +1013,25 @@ describe( 'selectors', () => {
1017
1013
  };
1018
1014
 
1019
1015
  it( 'should return the clientIds of blocks of a given type', () => {
1020
- expect(
1021
- __experimentalGetGlobalBlocksByName( state, 'core/heading' )
1022
- ).toStrictEqual( [ '123' ] );
1016
+ expect( getBlocksByName( state, 'core/heading' ) ).toStrictEqual( [
1017
+ '123',
1018
+ ] );
1023
1019
  } );
1024
1020
 
1025
1021
  it( 'should return the clientIds of blocks of a given type even if blocks are nested', () => {
1026
- expect(
1027
- __experimentalGetGlobalBlocksByName( state, 'core/paragraph' )
1028
- ).toStrictEqual( [ '456', '1415', '1213' ] );
1022
+ expect( getBlocksByName( state, 'core/paragraph' ) ).toStrictEqual(
1023
+ [ '456', '1415', '1213' ]
1024
+ );
1029
1025
  } );
1030
1026
 
1031
1027
  it( 'Should return empty array if no blocks match. The empty array should be the same reference', () => {
1032
- const result = __experimentalGetGlobalBlocksByName(
1033
- state,
1034
- 'test/missing'
1028
+ const result = getBlocksByName( state, 'test/missing' );
1029
+ expect( getBlocksByName( state, 'test/missing' ) ).toStrictEqual(
1030
+ []
1031
+ );
1032
+ expect( getBlocksByName( state, 'test/missing2' ) === result ).toBe(
1033
+ true
1035
1034
  );
1036
- expect(
1037
- __experimentalGetGlobalBlocksByName( state, 'test/missing' )
1038
- ).toStrictEqual( [] );
1039
- expect(
1040
- __experimentalGetGlobalBlocksByName(
1041
- state,
1042
- 'test/missing2'
1043
- ) === result
1044
- ).toBe( true );
1045
1035
  } );
1046
1036
  } );
1047
1037
 
@@ -4205,382 +4195,6 @@ describe( 'selectors', () => {
4205
4195
  } );
4206
4196
  } );
4207
4197
 
4208
- describe( '__experimentalGetAllowedPatterns', () => {
4209
- const state = {
4210
- blocks: {
4211
- byClientId: new Map(
4212
- Object.entries( {
4213
- block1: { name: 'core/test-block-a' },
4214
- block2: { name: 'core/test-block-b' },
4215
- } )
4216
- ),
4217
- attributes: new Map(
4218
- Object.entries( {
4219
- block1: {},
4220
- block2: {},
4221
- } )
4222
- ),
4223
- parents: new Map(
4224
- Object.entries( {
4225
- block1: '',
4226
- block2: '',
4227
- } )
4228
- ),
4229
- },
4230
- blockListSettings: {
4231
- block1: {
4232
- allowedBlocks: [ 'core/test-block-b' ],
4233
- },
4234
- block2: {
4235
- allowedBlocks: [],
4236
- },
4237
- },
4238
- settings: {
4239
- __experimentalBlockPatterns: [
4240
- {
4241
- name: 'pattern-a',
4242
- title: 'pattern with a',
4243
- content: `<!-- wp:test-block-a --><!-- /wp:test-block-a -->`,
4244
- },
4245
- {
4246
- name: 'pattern-b',
4247
- title: 'pattern with b',
4248
- content:
4249
- '<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
4250
- },
4251
- {
4252
- name: 'pattern-c',
4253
- title: 'pattern hidden from UI',
4254
- inserter: false,
4255
- content:
4256
- '<!-- wp:test-block-a --><!-- /wp:test-block-a -->',
4257
- },
4258
- ],
4259
- },
4260
- blockEditingModes: new Map(),
4261
- };
4262
-
4263
- it( 'should return all patterns for root level', () => {
4264
- expect(
4265
- __experimentalGetAllowedPatterns( state, null )
4266
- ).toHaveLength( 2 );
4267
- } );
4268
-
4269
- it( 'should return patterns that consists of blocks allowed for the specified client ID', () => {
4270
- expect(
4271
- __experimentalGetAllowedPatterns( state, 'block1' )
4272
- ).toHaveLength( 1 );
4273
-
4274
- expect(
4275
- __experimentalGetAllowedPatterns( state, 'block2' )
4276
- ).toHaveLength( 0 );
4277
- } );
4278
- it( 'should return empty array if only patterns hidden from UI exist', () => {
4279
- expect(
4280
- __experimentalGetAllowedPatterns( {
4281
- blocks: { byClientId: new Map() },
4282
- blockListSettings: {},
4283
- settings: {
4284
- __experimentalBlockPatterns: [
4285
- {
4286
- name: 'pattern-c',
4287
- title: 'pattern hidden from UI',
4288
- inserter: false,
4289
- content:
4290
- '<!-- wp:test-block-a --><!-- /wp:test-block-a -->',
4291
- },
4292
- ],
4293
- },
4294
- } )
4295
- ).toHaveLength( 0 );
4296
- } );
4297
- } );
4298
- describe( '__experimentalGetParsedPattern', () => {
4299
- const state = {
4300
- settings: {
4301
- __experimentalBlockPatterns: [
4302
- {
4303
- name: 'pattern-a',
4304
- title: 'pattern with a',
4305
- content: `<!-- wp:test-block-a --><!-- /wp:test-block-a -->`,
4306
- },
4307
- {
4308
- name: 'pattern-hidden-from-ui',
4309
- title: 'pattern hidden from UI',
4310
- inserter: false,
4311
- content:
4312
- '<!-- wp:test-block-a --><!-- /wp:test-block-a --><!-- wp:test-block-b --><!-- /wp:test-block-b -->',
4313
- },
4314
- ],
4315
- },
4316
- };
4317
- it( 'should return proper results when pattern does not exist', () => {
4318
- expect(
4319
- __experimentalGetParsedPattern( state, 'not there' )
4320
- ).toBeNull();
4321
- } );
4322
- it( 'should return existing pattern properly parsed', () => {
4323
- const { name, blocks } = __experimentalGetParsedPattern(
4324
- state,
4325
- 'pattern-a'
4326
- );
4327
- expect( name ).toEqual( 'pattern-a' );
4328
- expect( blocks ).toHaveLength( 1 );
4329
- expect( blocks[ 0 ] ).toEqual(
4330
- expect.objectContaining( {
4331
- name: 'core/test-block-a',
4332
- } )
4333
- );
4334
- } );
4335
- it( 'should return hidden from UI pattern when requested', () => {
4336
- const { name, blocks, inserter } = __experimentalGetParsedPattern(
4337
- state,
4338
- 'pattern-hidden-from-ui'
4339
- );
4340
- expect( name ).toEqual( 'pattern-hidden-from-ui' );
4341
- expect( inserter ).toBeFalsy();
4342
- expect( blocks ).toHaveLength( 2 );
4343
- expect( blocks[ 0 ] ).toEqual(
4344
- expect.objectContaining( {
4345
- name: 'core/test-block-a',
4346
- } )
4347
- );
4348
- } );
4349
- } );
4350
- describe( 'getPatternsByBlockTypes', () => {
4351
- const state = {
4352
- blocks: {
4353
- byClientId: new Map(
4354
- Object.entries( {
4355
- block1: { name: 'core/test-block-a' },
4356
- } )
4357
- ),
4358
- parents: new Map(),
4359
- },
4360
- blockListSettings: {
4361
- block1: {
4362
- allowedBlocks: [ 'core/test-block-b' ],
4363
- },
4364
- },
4365
- settings: {
4366
- __experimentalBlockPatterns: [
4367
- {
4368
- name: 'pattern-a',
4369
- blockTypes: [ 'test/block-a' ],
4370
- title: 'pattern a',
4371
- content:
4372
- '<!-- wp:test-block-a --><!-- /wp:test-block-a -->',
4373
- },
4374
- {
4375
- name: 'pattern-b',
4376
- blockTypes: [ 'test/block-b' ],
4377
- title: 'pattern b',
4378
- content:
4379
- '<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
4380
- },
4381
- {
4382
- title: 'pattern c',
4383
- blockTypes: [ 'test/block-a' ],
4384
- content:
4385
- '<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
4386
- },
4387
- ],
4388
- },
4389
- blockEditingModes: new Map(),
4390
- };
4391
- it( 'should return empty array if no block name is provided', () => {
4392
- expect( getPatternsByBlockTypes( state ) ).toEqual( [] );
4393
- } );
4394
- it( 'should return empty array if no match is found', () => {
4395
- const patterns = getPatternsByBlockTypes(
4396
- state,
4397
- 'test/block-not-exists'
4398
- );
4399
- expect( patterns ).toEqual( [] );
4400
- } );
4401
- it( 'should return the same empty array in both empty array cases', () => {
4402
- const patterns1 = getPatternsByBlockTypes( state );
4403
- const patterns2 = getPatternsByBlockTypes(
4404
- state,
4405
- 'test/block-not-exists'
4406
- );
4407
- expect( patterns1 ).toBe( patterns2 );
4408
- } );
4409
- it( 'should return proper results when there are matched block patterns', () => {
4410
- const patterns = getPatternsByBlockTypes( state, 'test/block-a' );
4411
- expect( patterns ).toHaveLength( 2 );
4412
- expect( patterns ).toEqual(
4413
- expect.arrayContaining( [
4414
- expect.objectContaining( { title: 'pattern a' } ),
4415
- expect.objectContaining( { title: 'pattern c' } ),
4416
- ] )
4417
- );
4418
- } );
4419
- it( 'should return proper result with matched patterns and allowed blocks from rootClientId', () => {
4420
- const patterns = getPatternsByBlockTypes(
4421
- state,
4422
- 'test/block-a',
4423
- 'block1'
4424
- );
4425
- expect( patterns ).toHaveLength( 1 );
4426
- expect( patterns[ 0 ] ).toEqual(
4427
- expect.objectContaining( { title: 'pattern c' } )
4428
- );
4429
- } );
4430
- } );
4431
- describe( '__experimentalGetPatternTransformItems', () => {
4432
- const state = {
4433
- blocks: {
4434
- byClientId: new Map(
4435
- Object.entries( {
4436
- block1: { name: 'core/test-block-a' },
4437
- block2: { name: 'core/test-block-b' },
4438
- } )
4439
- ),
4440
- parents: new Map(),
4441
- controlledInnerBlocks: { 'block2-clientId': true },
4442
- },
4443
- blockListSettings: {
4444
- block1: {
4445
- allowedBlocks: [ 'core/test-block-b' ],
4446
- },
4447
- },
4448
- settings: {
4449
- __experimentalBlockPatterns: [
4450
- {
4451
- name: 'pattern-a',
4452
- blockTypes: [ 'test/block-a' ],
4453
- title: 'pattern a',
4454
- content:
4455
- '<!-- wp:test-block-a --><!-- /wp:test-block-a -->',
4456
- },
4457
- {
4458
- name: 'pattern-b',
4459
- blockTypes: [ 'test/block-b' ],
4460
- title: 'pattern b',
4461
- content:
4462
- '<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
4463
- },
4464
- {
4465
- name: 'pattern-c',
4466
- title: 'pattern c',
4467
- blockTypes: [ 'test/block-a' ],
4468
- content:
4469
- '<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
4470
- },
4471
- {
4472
- name: 'pattern-mix',
4473
- title: 'pattern mix',
4474
- blockTypes: [
4475
- 'core/test-block-a',
4476
- 'core/test-block-b',
4477
- ],
4478
- content:
4479
- '<!-- wp:test-block-b --><!-- /wp:test-block-b -->',
4480
- },
4481
- ],
4482
- },
4483
- blockEditingModes: new Map(),
4484
- };
4485
- describe( 'should return empty array', () => {
4486
- it( 'when no blocks are selected', () => {
4487
- expect(
4488
- __experimentalGetPatternTransformItems( state )
4489
- ).toEqual( [] );
4490
- } );
4491
- it( 'when a selected block has inner blocks', () => {
4492
- const blocks = [
4493
- { name: 'core/test-block-a', innerBlocks: [] },
4494
- {
4495
- name: 'core/test-block-b',
4496
- innerBlocks: [ { name: 'some inner block' } ],
4497
- },
4498
- ];
4499
- expect(
4500
- __experimentalGetPatternTransformItems( state, blocks )
4501
- ).toEqual( [] );
4502
- } );
4503
- it( 'when a selected block has controlled inner blocks', () => {
4504
- const blocks = [
4505
- { name: 'core/test-block-a', innerBlocks: [] },
4506
- {
4507
- name: 'core/test-block-b',
4508
- clientId: 'block2-clientId',
4509
- innerBlocks: [],
4510
- },
4511
- ];
4512
- expect(
4513
- __experimentalGetPatternTransformItems( state, blocks )
4514
- ).toEqual( [] );
4515
- } );
4516
- it( 'when no patterns are available based on the selected blocks', () => {
4517
- const blocks = [
4518
- { name: 'block-with-no-patterns', innerBlocks: [] },
4519
- ];
4520
- expect(
4521
- __experimentalGetPatternTransformItems( state, blocks )
4522
- ).toEqual( [] );
4523
- } );
4524
- } );
4525
- describe( 'should return proper results', () => {
4526
- it( 'when a single block is selected', () => {
4527
- const blocks = [
4528
- { name: 'core/test-block-b', innerBlocks: [] },
4529
- ];
4530
- const patterns = __experimentalGetPatternTransformItems(
4531
- state,
4532
- blocks
4533
- );
4534
- expect( patterns ).toHaveLength( 1 );
4535
- expect( patterns[ 0 ] ).toEqual(
4536
- expect.objectContaining( {
4537
- name: 'pattern-mix',
4538
- } )
4539
- );
4540
- } );
4541
- it( 'when different multiple blocks are selected', () => {
4542
- const blocks = [
4543
- { name: 'core/test-block-b', innerBlocks: [] },
4544
- { name: 'test/block-b', innerBlocks: [] },
4545
- { name: 'some other block', innerBlocks: [] },
4546
- ];
4547
- const patterns = __experimentalGetPatternTransformItems(
4548
- state,
4549
- blocks
4550
- );
4551
- expect( patterns ).toHaveLength( 2 );
4552
- expect( patterns ).toEqual(
4553
- expect.arrayContaining( [
4554
- expect.objectContaining( {
4555
- name: 'pattern-mix',
4556
- } ),
4557
- expect.objectContaining( {
4558
- name: 'pattern-b',
4559
- } ),
4560
- ] )
4561
- );
4562
- } );
4563
- it( 'when multiple blocks are selected containing multiple times the same block', () => {
4564
- const blocks = [
4565
- { name: 'core/test-block-b', innerBlocks: [] },
4566
- { name: 'some other block', innerBlocks: [] },
4567
- { name: 'core/test-block-a', innerBlocks: [] },
4568
- { name: 'core/test-block-b', innerBlocks: [] },
4569
- ];
4570
- const patterns = __experimentalGetPatternTransformItems(
4571
- state,
4572
- blocks
4573
- );
4574
- expect( patterns ).toHaveLength( 1 );
4575
- expect( patterns[ 0 ] ).toEqual(
4576
- expect.objectContaining( {
4577
- name: 'pattern-mix',
4578
- } )
4579
- );
4580
- } );
4581
- } );
4582
- } );
4583
-
4584
4198
  describe( 'wasBlockJustInserted', () => {
4585
4199
  it( 'should return true if the client id passed to wasBlockJustInserted is found within the state', () => {
4586
4200
  const expectedClientId = '62bfef6e-d5e9-43ba-b7f9-c77cf354141f';
@@ -1,36 +1,3 @@
1
- /**
2
- * Internal dependencies
3
- */
4
- import { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';
5
-
6
- const EMPTY_ARRAY = [];
7
-
8
- export function getUserPatterns( state ) {
9
- const userPatterns =
10
- state?.settings?.__experimentalReusableBlocks ?? EMPTY_ARRAY;
11
- const userPatternCategories =
12
- state?.settings?.__experimentalUserPatternCategories ?? [];
13
- const categories = new Map();
14
- userPatternCategories.forEach( ( userCategory ) =>
15
- categories.set( userCategory.id, userCategory )
16
- );
17
- return userPatterns.map( ( userPattern ) => {
18
- return {
19
- name: `core/block/${ userPattern.id }`,
20
- id: userPattern.id,
21
- type: INSERTER_PATTERN_TYPES.user,
22
- title: userPattern.title.raw,
23
- categories: userPattern.wp_pattern_category.map( ( catId ) =>
24
- categories && categories.get( catId )
25
- ? categories.get( catId ).slug
26
- : catId
27
- ),
28
- content: userPattern.content.raw,
29
- syncStatus: userPattern.wp_pattern_sync_status,
30
- };
31
- } );
32
- }
33
-
34
1
  export const checkAllowList = ( list, item, defaultResult = null ) => {
35
2
  if ( typeof list === 'boolean' ) {
36
3
  return list;
@@ -72,3 +39,13 @@ export const checkAllowListRecursive = ( blocks, allowedBlockTypes ) => {
72
39
 
73
40
  return true;
74
41
  };
42
+
43
+ export const getAllPatternsDependants = ( state ) => {
44
+ return [
45
+ state.settings.__experimentalBlockPatterns,
46
+ state.settings.__experimentalUserPatternCategories,
47
+ state.settings.__experimentalReusableBlocks,
48
+ state.settings.__experimentalFetchBlockPatterns,
49
+ state.blockPatterns,
50
+ ];
51
+ };
package/src/style.scss CHANGED
@@ -24,7 +24,6 @@
24
24
  @import "./components/block-variation-transforms/style.scss";
25
25
  @import "./components/border-radius-control/style.scss";
26
26
  @import "./components/colors-gradients/style.scss";
27
- @import "./components/contrast-checker/style.scss";
28
27
  @import "./components/date-format-picker/style.scss";
29
28
  @import "./components/duotone-control/style.scss";
30
29
  @import "./components/font-appearance-control/style.scss";
@@ -1,3 +1,2 @@
1
1
  export { default as transformStyles } from './transform-styles';
2
- export * from './block-variation-transforms';
3
2
  export { default as getPxFromCssUnit } from './get-px-from-css-unit';
package/src/utils/math.js CHANGED
@@ -106,3 +106,15 @@ export function isPointContainedByRect( point, rect ) {
106
106
  rect.bottom >= point.y
107
107
  );
108
108
  }
109
+
110
+ /**
111
+ * Is the point within the top and bottom boundaries of the rectangle.
112
+ *
113
+ * @param {WPPoint} point The point.
114
+ * @param {DOMRect} rect The rectangle.
115
+ *
116
+ * @return {boolean} True if the point is within top and bottom of rectangle, false otherwise.
117
+ */
118
+ export function isPointWithinTopAndBottomBoundariesOfRect( point, rect ) {
119
+ return rect.top <= point.y && rect.bottom >= point.y;
120
+ }
@@ -5,6 +5,52 @@ import postcss, { CssSyntaxError } from 'postcss';
5
5
  import wrap from 'postcss-prefixwrap';
6
6
  import rebaseUrl from 'postcss-urlrebase';
7
7
 
8
+ const transformStylesCache = new WeakMap();
9
+
10
+ function transformStyle(
11
+ { css, ignoredSelectors = [], baseURL },
12
+ wrapperSelector = ''
13
+ ) {
14
+ // When there is no wrapper selector or base URL, there is no need
15
+ // to transform the CSS. This is most cases because in the default
16
+ // iframed editor, no wrapping is needed, and not many styles
17
+ // provide a base URL.
18
+ if ( ! wrapperSelector && ! baseURL ) {
19
+ return css;
20
+ }
21
+
22
+ try {
23
+ return postcss(
24
+ [
25
+ wrapperSelector &&
26
+ wrap( wrapperSelector, {
27
+ ignoredSelectors: [
28
+ ...ignoredSelectors,
29
+ wrapperSelector,
30
+ ],
31
+ } ),
32
+ baseURL && rebaseUrl( { rootUrl: baseURL } ),
33
+ ].filter( Boolean )
34
+ ).process( css, {} ).css; // use sync PostCSS API
35
+ } catch ( error ) {
36
+ if ( error instanceof CssSyntaxError ) {
37
+ // eslint-disable-next-line no-console
38
+ console.warn(
39
+ 'wp.blockEditor.transformStyles Failed to transform CSS.',
40
+ error.message + '\n' + error.showSourceCode( false )
41
+ );
42
+ } else {
43
+ // eslint-disable-next-line no-console
44
+ console.warn(
45
+ 'wp.blockEditor.transformStyles Failed to transform CSS.',
46
+ error
47
+ );
48
+ }
49
+
50
+ return null;
51
+ }
52
+ }
53
+
8
54
  /**
9
55
  * Applies a series of CSS rule transforms to wrap selectors inside a given class and/or rewrite URLs depending on the parameters passed.
10
56
  *
@@ -18,45 +64,14 @@ import rebaseUrl from 'postcss-urlrebase';
18
64
  * @return {Array} converted rules.
19
65
  */
20
66
  const transformStyles = ( styles, wrapperSelector = '' ) => {
21
- return styles.map( ( { css, ignoredSelectors = [], baseURL } ) => {
22
- // When there is no wrapper selector or base URL, there is no need
23
- // to transform the CSS. This is most cases because in the default
24
- // iframed editor, no wrapping is needed, and not many styles
25
- // provide a base URL.
26
- if ( ! wrapperSelector && ! baseURL ) {
27
- return css;
67
+ return styles.map( ( style ) => {
68
+ if ( transformStylesCache.has( style ) ) {
69
+ return transformStylesCache.get( style );
28
70
  }
29
71
 
30
- try {
31
- return postcss(
32
- [
33
- wrapperSelector &&
34
- wrap( wrapperSelector, {
35
- ignoredSelectors: [
36
- ...ignoredSelectors,
37
- wrapperSelector,
38
- ],
39
- } ),
40
- baseURL && rebaseUrl( { rootUrl: baseURL } ),
41
- ].filter( Boolean )
42
- ).process( css, {} ).css; // use sync PostCSS API
43
- } catch ( error ) {
44
- if ( error instanceof CssSyntaxError ) {
45
- // eslint-disable-next-line no-console
46
- console.warn(
47
- 'wp.blockEditor.transformStyles Failed to transform CSS.',
48
- error.message + '\n' + error.showSourceCode( false )
49
- );
50
- } else {
51
- // eslint-disable-next-line no-console
52
- console.warn(
53
- 'wp.blockEditor.transformStyles Failed to transform CSS.',
54
- error
55
- );
56
- }
57
-
58
- return null;
59
- }
72
+ const transformedStyle = transformStyle( style, wrapperSelector );
73
+ transformStylesCache.set( style, transformedStyle );
74
+ return transformedStyle;
60
75
  } );
61
76
  };
62
77