@wordpress/block-editor 12.17.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 (401) hide show
  1. package/CHANGELOG.md +4 -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-lock/toolbar.js +8 -2
  24. package/build/components/block-lock/toolbar.js.map +1 -1
  25. package/build/components/block-popover/inbetween.js +15 -3
  26. package/build/components/block-popover/inbetween.js.map +1 -1
  27. package/build/components/block-preview/auto.js +1 -1
  28. package/build/components/block-preview/auto.js.map +1 -1
  29. package/build/components/block-removal-warning-modal/index.js +3 -2
  30. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -4
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/block-switcher/block-transformations-menu.js +12 -1
  34. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  35. package/build/components/block-switcher/index.js +119 -90
  36. package/build/components/block-switcher/index.js.map +1 -1
  37. package/build/components/block-tools/insertion-point.js +10 -3
  38. package/build/components/block-tools/insertion-point.js.map +1 -1
  39. package/build/components/font-sizes/fluid-utils.js +7 -1
  40. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  41. package/build/components/global-styles/border-panel.js +5 -14
  42. package/build/components/global-styles/border-panel.js.map +1 -1
  43. package/build/components/global-styles/effects-panel.js +7 -1
  44. package/build/components/global-styles/effects-panel.js.map +1 -1
  45. package/build/components/global-styles/hooks.js +3 -2
  46. package/build/components/global-styles/hooks.js.map +1 -1
  47. package/build/components/global-styles/typography-panel.js +31 -14
  48. package/build/components/global-styles/typography-panel.js.map +1 -1
  49. package/build/components/iframe/get-compatibility-styles.js +99 -0
  50. package/build/components/iframe/get-compatibility-styles.js.map +1 -0
  51. package/build/components/iframe/index.js +2 -3
  52. package/build/components/iframe/index.js.map +1 -1
  53. package/build/components/index.js +16 -2
  54. package/build/components/index.js.map +1 -1
  55. package/build/components/index.native.js +16 -2
  56. package/build/components/index.native.js.map +1 -1
  57. package/build/components/inspector-controls/groups.js +2 -0
  58. package/build/components/inspector-controls/groups.js.map +1 -1
  59. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  60. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  61. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
  62. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  63. package/build/components/link-control/link-preview.js +30 -26
  64. package/build/components/link-control/link-preview.js.map +1 -1
  65. package/build/components/link-control/search-input.js +1 -9
  66. package/build/components/link-control/search-input.js.map +1 -1
  67. package/build/components/list-view/block-contents.js +3 -1
  68. package/build/components/list-view/block-contents.js.map +1 -1
  69. package/build/components/list-view/block.js +10 -1
  70. package/build/components/list-view/block.js.map +1 -1
  71. package/build/components/list-view/branch.js +29 -8
  72. package/build/components/list-view/branch.js.map +1 -1
  73. package/build/components/list-view/drop-indicator.js +100 -32
  74. package/build/components/list-view/drop-indicator.js.map +1 -1
  75. package/build/components/list-view/index.js +52 -4
  76. package/build/components/list-view/index.js.map +1 -1
  77. package/build/components/list-view/leaf.js +2 -2
  78. package/build/components/list-view/leaf.js.map +1 -1
  79. package/build/components/list-view/use-list-view-block-indexes.js +30 -0
  80. package/build/components/list-view/use-list-view-block-indexes.js.map +1 -0
  81. package/build/components/list-view/use-list-view-drop-zone.js +56 -5
  82. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  83. package/build/components/list-view/utils.js +92 -0
  84. package/build/components/list-view/utils.js.map +1 -1
  85. package/build/components/provider/index.js +1 -1
  86. package/build/components/provider/index.js.map +1 -1
  87. package/build/components/recursion-provider/index.js +21 -0
  88. package/build/components/recursion-provider/index.js.map +1 -1
  89. package/build/components/rich-text/index.js +30 -6
  90. package/build/components/rich-text/index.js.map +1 -1
  91. package/build/components/rich-text/native/index.native.js +9 -9
  92. package/build/components/rich-text/native/index.native.js.map +1 -1
  93. package/build/components/use-block-drop-zone/index.js +30 -7
  94. package/build/components/use-block-drop-zone/index.js.map +1 -1
  95. package/build/components/use-on-block-drop/index.js +50 -8
  96. package/build/components/use-on-block-drop/index.js.map +1 -1
  97. package/build/hooks/block-hooks.js +5 -14
  98. package/build/hooks/block-hooks.js.map +1 -1
  99. package/build/hooks/content-lock-ui.js +17 -42
  100. package/build/hooks/content-lock-ui.js.map +1 -1
  101. package/build/hooks/effects.js +66 -0
  102. package/build/hooks/effects.js.map +1 -0
  103. package/build/hooks/index.js +15 -2
  104. package/build/hooks/index.js.map +1 -1
  105. package/build/hooks/index.native.js +13 -0
  106. package/build/hooks/index.native.js.map +1 -1
  107. package/build/hooks/style.js +6 -2
  108. package/build/hooks/style.js.map +1 -1
  109. package/build/hooks/supports.js +2 -1
  110. package/build/hooks/supports.js.map +1 -1
  111. package/build/hooks/typography.native.js +2 -2
  112. package/build/hooks/typography.native.js.map +1 -1
  113. package/build/hooks/use-bindings-attributes.js +115 -0
  114. package/build/hooks/use-bindings-attributes.js.map +1 -0
  115. package/build/hooks/use-shadow-props.js +46 -0
  116. package/build/hooks/use-shadow-props.js.map +1 -0
  117. package/build/hooks/utils.js +11 -7
  118. package/build/hooks/utils.js.map +1 -1
  119. package/build/index.js +14 -0
  120. package/build/index.js.map +1 -1
  121. package/build/store/actions.js +10 -6
  122. package/build/store/actions.js.map +1 -1
  123. package/build/store/index.js +2 -0
  124. package/build/store/index.js.map +1 -1
  125. package/build/store/private-actions.js +37 -0
  126. package/build/store/private-actions.js.map +1 -1
  127. package/build/store/private-selectors.js +60 -9
  128. package/build/store/private-selectors.js.map +1 -1
  129. package/build/store/reducer.js +44 -3
  130. package/build/store/reducer.js.map +1 -1
  131. package/build/store/resolvers.js +27 -0
  132. package/build/store/resolvers.js.map +1 -0
  133. package/build/store/selectors.js +94 -56
  134. package/build/store/selectors.js.map +1 -1
  135. package/build/store/utils.js +5 -26
  136. package/build/store/utils.js.map +1 -1
  137. package/build/utils/index.js +0 -16
  138. package/build/utils/index.js.map +1 -1
  139. package/build/utils/math.js +13 -0
  140. package/build/utils/math.js.map +1 -1
  141. package/build/utils/object.js +17 -0
  142. package/build/utils/object.js.map +1 -1
  143. package/build/utils/transform-styles/index.js +37 -27
  144. package/build/utils/transform-styles/index.js.map +1 -1
  145. package/build-module/components/block-draggable/index.js +11 -3
  146. package/build-module/components/block-draggable/index.js.map +1 -1
  147. package/build-module/components/block-edit/context.js +1 -0
  148. package/build-module/components/block-edit/context.js.map +1 -1
  149. package/build-module/components/block-edit/index.js +5 -3
  150. package/build-module/components/block-edit/index.js.map +1 -1
  151. package/build-module/components/block-editing-mode/index.js +7 -4
  152. package/build-module/components/block-editing-mode/index.js.map +1 -1
  153. package/build-module/components/block-inspector/index.js +5 -2
  154. package/build-module/components/block-inspector/index.js.map +1 -1
  155. package/build-module/components/block-list/block.js +6 -5
  156. package/build-module/components/block-list/block.js.map +1 -1
  157. package/build-module/components/block-list/block.native.js +11 -7
  158. package/build-module/components/block-list/block.native.js.map +1 -1
  159. package/build-module/components/block-list/index.js +31 -5
  160. package/build-module/components/block-list/index.js.map +1 -1
  161. package/build-module/components/block-list/private-block-context.js +1 -1
  162. package/build-module/components/block-list/private-block-context.js.map +1 -1
  163. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  164. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  165. package/build-module/components/block-lock/toolbar.js +8 -2
  166. package/build-module/components/block-lock/toolbar.js.map +1 -1
  167. package/build-module/components/block-popover/inbetween.js +15 -3
  168. package/build-module/components/block-popover/inbetween.js.map +1 -1
  169. package/build-module/components/block-preview/auto.js +3 -3
  170. package/build-module/components/block-preview/auto.js.map +1 -1
  171. package/build-module/components/block-removal-warning-modal/index.js +3 -2
  172. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  173. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -4
  174. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  175. package/build-module/components/block-switcher/block-transformations-menu.js +12 -1
  176. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  177. package/build-module/components/block-switcher/index.js +116 -86
  178. package/build-module/components/block-switcher/index.js.map +1 -1
  179. package/build-module/components/block-tools/insertion-point.js +10 -3
  180. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  181. package/build-module/components/font-sizes/fluid-utils.js +7 -1
  182. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  183. package/build-module/components/global-styles/border-panel.js +5 -14
  184. package/build-module/components/global-styles/border-panel.js.map +1 -1
  185. package/build-module/components/global-styles/effects-panel.js +7 -1
  186. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  187. package/build-module/components/global-styles/hooks.js +3 -2
  188. package/build-module/components/global-styles/hooks.js.map +1 -1
  189. package/build-module/components/global-styles/typography-panel.js +32 -15
  190. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  191. package/build-module/components/iframe/get-compatibility-styles.js +93 -0
  192. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -0
  193. package/build-module/components/iframe/index.js +2 -3
  194. package/build-module/components/iframe/index.js.map +1 -1
  195. package/build-module/components/index.js +1 -1
  196. package/build-module/components/index.js.map +1 -1
  197. package/build-module/components/index.native.js +1 -1
  198. package/build-module/components/index.native.js.map +1 -1
  199. package/build-module/components/inspector-controls/groups.js +2 -0
  200. package/build-module/components/inspector-controls/groups.js.map +1 -1
  201. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  202. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  203. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
  204. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  205. package/build-module/components/link-control/link-preview.js +32 -28
  206. package/build-module/components/link-control/link-preview.js.map +1 -1
  207. package/build-module/components/link-control/search-input.js +1 -8
  208. package/build-module/components/link-control/search-input.js.map +1 -1
  209. package/build-module/components/list-view/block-contents.js +3 -1
  210. package/build-module/components/list-view/block-contents.js.map +1 -1
  211. package/build-module/components/list-view/block.js +10 -1
  212. package/build-module/components/list-view/block.js.map +1 -1
  213. package/build-module/components/list-view/branch.js +30 -9
  214. package/build-module/components/list-view/branch.js.map +1 -1
  215. package/build-module/components/list-view/drop-indicator.js +99 -32
  216. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  217. package/build-module/components/list-view/index.js +54 -6
  218. package/build-module/components/list-view/index.js.map +1 -1
  219. package/build-module/components/list-view/leaf.js +2 -2
  220. package/build-module/components/list-view/leaf.js.map +1 -1
  221. package/build-module/components/list-view/use-list-view-block-indexes.js +23 -0
  222. package/build-module/components/list-view/use-list-view-block-indexes.js.map +1 -0
  223. package/build-module/components/list-view/use-list-view-drop-zone.js +58 -7
  224. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  225. package/build-module/components/list-view/utils.js +91 -0
  226. package/build-module/components/list-view/utils.js.map +1 -1
  227. package/build-module/components/provider/index.js +1 -1
  228. package/build-module/components/provider/index.js.map +1 -1
  229. package/build-module/components/recursion-provider/index.js +17 -0
  230. package/build-module/components/recursion-provider/index.js.map +1 -1
  231. package/build-module/components/rich-text/index.js +30 -6
  232. package/build-module/components/rich-text/index.js.map +1 -1
  233. package/build-module/components/rich-text/native/index.native.js +9 -9
  234. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  235. package/build-module/components/use-block-drop-zone/index.js +31 -8
  236. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  237. package/build-module/components/use-on-block-drop/index.js +51 -9
  238. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  239. package/build-module/hooks/block-hooks.js +5 -14
  240. package/build-module/hooks/block-hooks.js.map +1 -1
  241. package/build-module/hooks/content-lock-ui.js +19 -43
  242. package/build-module/hooks/content-lock-ui.js.map +1 -1
  243. package/build-module/hooks/effects.js +51 -0
  244. package/build-module/hooks/effects.js.map +1 -0
  245. package/build-module/hooks/index.js +3 -2
  246. package/build-module/hooks/index.js.map +1 -1
  247. package/build-module/hooks/index.native.js +1 -0
  248. package/build-module/hooks/index.native.js.map +1 -1
  249. package/build-module/hooks/style.js +6 -2
  250. package/build-module/hooks/style.js.map +1 -1
  251. package/build-module/hooks/supports.js +2 -1
  252. package/build-module/hooks/supports.js.map +1 -1
  253. package/build-module/hooks/typography.native.js +2 -2
  254. package/build-module/hooks/typography.native.js.map +1 -1
  255. package/build-module/hooks/use-bindings-attributes.js +112 -0
  256. package/build-module/hooks/use-bindings-attributes.js.map +1 -0
  257. package/build-module/hooks/use-shadow-props.js +39 -0
  258. package/build-module/hooks/use-shadow-props.js.map +1 -0
  259. package/build-module/hooks/utils.js +13 -9
  260. package/build-module/hooks/utils.js.map +1 -1
  261. package/build-module/index.js +1 -1
  262. package/build-module/index.js.map +1 -1
  263. package/build-module/store/actions.js +10 -6
  264. package/build-module/store/actions.js.map +1 -1
  265. package/build-module/store/index.js +2 -0
  266. package/build-module/store/index.js.map +1 -1
  267. package/build-module/store/private-actions.js +35 -0
  268. package/build-module/store/private-actions.js.map +1 -1
  269. package/build-module/store/private-selectors.js +53 -8
  270. package/build-module/store/private-selectors.js.map +1 -1
  271. package/build-module/store/reducer.js +43 -3
  272. package/build-module/store/reducer.js.map +1 -1
  273. package/build-module/store/resolvers.js +20 -0
  274. package/build-module/store/resolvers.js.map +1 -0
  275. package/build-module/store/selectors.js +89 -52
  276. package/build-module/store/selectors.js.map +1 -1
  277. package/build-module/store/utils.js +3 -23
  278. package/build-module/store/utils.js.map +1 -1
  279. package/build-module/utils/index.js +0 -1
  280. package/build-module/utils/index.js.map +1 -1
  281. package/build-module/utils/math.js +12 -0
  282. package/build-module/utils/math.js.map +1 -1
  283. package/build-module/utils/object.js +16 -0
  284. package/build-module/utils/object.js.map +1 -1
  285. package/build-module/utils/transform-styles/index.js +36 -27
  286. package/build-module/utils/transform-styles/index.js.map +1 -1
  287. package/build-style/content-rtl.css +33 -16
  288. package/build-style/content.css +33 -16
  289. package/build-style/default-editor-styles-rtl.css +1 -1
  290. package/build-style/default-editor-styles.css +1 -1
  291. package/build-style/style-rtl.css +169 -114
  292. package/build-style/style.css +169 -114
  293. package/package.json +31 -31
  294. package/src/components/block-canvas/style.scss +8 -1
  295. package/src/components/block-draggable/index.js +16 -5
  296. package/src/components/block-edit/context.js +1 -0
  297. package/src/components/block-edit/index.js +4 -0
  298. package/src/components/block-editing-mode/index.js +12 -7
  299. package/src/components/block-inspector/index.js +5 -2
  300. package/src/components/block-list/block.js +5 -4
  301. package/src/components/block-list/block.native.js +13 -3
  302. package/src/components/block-list/content.scss +34 -5
  303. package/src/components/block-list/index.js +52 -16
  304. package/src/components/block-list/private-block-context.js +1 -1
  305. package/src/components/block-list/use-in-between-inserter.js +1 -2
  306. package/src/components/block-lock/toolbar.js +10 -2
  307. package/src/components/block-popover/inbetween.js +22 -2
  308. package/src/components/block-preview/auto.js +3 -3
  309. package/src/components/block-removal-warning-modal/index.js +3 -2
  310. package/src/components/block-settings-menu/block-settings-dropdown.js +2 -7
  311. package/src/components/block-switcher/block-transformations-menu.js +18 -1
  312. package/src/components/block-switcher/index.js +133 -111
  313. package/src/components/block-switcher/style.scss +6 -4
  314. package/src/components/block-switcher/test/index.js +113 -230
  315. package/src/components/block-toolbar/style.scss +22 -18
  316. package/src/components/block-tools/insertion-point.js +15 -2
  317. package/src/components/block-tools/style.scss +8 -7
  318. package/src/components/font-sizes/fluid-utils.js +8 -2
  319. package/src/components/font-sizes/test/fluid-utils.js +9 -0
  320. package/src/components/global-styles/border-panel.js +7 -17
  321. package/src/components/global-styles/effects-panel.js +16 -1
  322. package/src/components/global-styles/hooks.js +2 -0
  323. package/src/components/global-styles/typography-panel.js +45 -13
  324. package/src/components/iframe/get-compatibility-styles.js +120 -0
  325. package/src/components/iframe/index.js +2 -3
  326. package/src/components/index.js +4 -2
  327. package/src/components/index.native.js +4 -2
  328. package/src/components/inspector-controls/groups.js +2 -0
  329. package/src/components/inspector-controls-tabs/styles-tab.js +1 -0
  330. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -0
  331. package/src/components/link-control/link-preview.js +31 -55
  332. package/src/components/link-control/search-input.js +1 -9
  333. package/src/components/link-control/style.scss +31 -85
  334. package/src/components/link-control/test/index.js +2 -1
  335. package/src/components/list-view/block-contents.js +5 -1
  336. package/src/components/list-view/block.js +9 -0
  337. package/src/components/list-view/branch.js +30 -10
  338. package/src/components/list-view/drop-indicator.js +139 -46
  339. package/src/components/list-view/index.js +74 -3
  340. package/src/components/list-view/leaf.js +2 -2
  341. package/src/components/list-view/style.scss +102 -13
  342. package/src/components/list-view/test/use-list-view-drop-zone.js +4 -0
  343. package/src/components/list-view/test/utils.js +218 -1
  344. package/src/components/list-view/use-list-view-block-indexes.js +29 -0
  345. package/src/components/list-view/use-list-view-drop-zone.js +78 -6
  346. package/src/components/list-view/utils.js +116 -0
  347. package/src/components/provider/index.js +3 -1
  348. package/src/components/recursion-provider/README.md +2 -2
  349. package/src/components/recursion-provider/index.js +17 -0
  350. package/src/components/rich-text/index.js +48 -10
  351. package/src/components/rich-text/native/index.native.js +10 -10
  352. package/src/components/use-block-drop-zone/index.js +60 -19
  353. package/src/components/use-block-drop-zone/test/index.js +32 -61
  354. package/src/components/use-on-block-drop/index.js +92 -11
  355. package/src/hooks/block-hooks.js +5 -17
  356. package/src/hooks/content-lock-ui.js +15 -55
  357. package/src/hooks/effects.js +57 -0
  358. package/src/hooks/index.js +2 -2
  359. package/src/hooks/index.native.js +1 -0
  360. package/src/hooks/style.js +8 -0
  361. package/src/hooks/supports.js +2 -0
  362. package/src/hooks/test/effects.js +39 -0
  363. package/src/hooks/typography.native.js +2 -2
  364. package/src/hooks/use-bindings-attributes.js +148 -0
  365. package/src/hooks/use-shadow-props.js +37 -0
  366. package/src/hooks/utils.js +26 -10
  367. package/src/index.js +2 -0
  368. package/src/store/actions.js +9 -4
  369. package/src/store/index.js +2 -0
  370. package/src/store/private-actions.js +32 -0
  371. package/src/store/private-selectors.js +78 -21
  372. package/src/store/reducer.js +49 -2
  373. package/src/store/resolvers.js +17 -0
  374. package/src/store/selectors.js +169 -161
  375. package/src/store/test/registry-selectors.js +431 -0
  376. package/src/store/test/selectors.js +14 -400
  377. package/src/store/utils.js +10 -33
  378. package/src/style.scss +0 -1
  379. package/src/utils/index.js +0 -1
  380. package/src/utils/math.js +12 -0
  381. package/src/utils/object.js +16 -0
  382. package/src/utils/transform-styles/index.js +52 -37
  383. package/tsconfig.tsbuildinfo +1 -1
  384. package/build/components/iframe/use-compatibility-styles.js +0 -100
  385. package/build/components/iframe/use-compatibility-styles.js.map +0 -1
  386. package/build/hooks/custom-fields.js +0 -106
  387. package/build/hooks/custom-fields.js.map +0 -1
  388. package/build/utils/block-variation-transforms.js +0 -42
  389. package/build/utils/block-variation-transforms.js.map +0 -1
  390. package/build-module/components/iframe/use-compatibility-styles.js +0 -94
  391. package/build-module/components/iframe/use-compatibility-styles.js.map +0 -1
  392. package/build-module/hooks/custom-fields.js +0 -99
  393. package/build-module/hooks/custom-fields.js.map +0 -1
  394. package/build-module/utils/block-variation-transforms.js +0 -35
  395. package/build-module/utils/block-variation-transforms.js.map +0 -1
  396. package/src/components/block-switcher/test/__snapshots__/index.js.snap +0 -116
  397. package/src/components/contrast-checker/style.scss +0 -3
  398. package/src/components/iframe/use-compatibility-styles.js +0 -122
  399. package/src/hooks/custom-fields.js +0 -115
  400. package/src/utils/block-variation-transforms.js +0 -38
  401. package/src/utils/test/block-variation-transforms.js +0 -94
@@ -29,75 +29,44 @@ import BlockStylesMenu from './block-styles-menu';
29
29
  import PatternTransformationsMenu from './pattern-transformations-menu';
30
30
  import useBlockDisplayTitle from '../block-title/use-block-display-title';
31
31
 
32
- export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
32
+ function BlockSwitcherDropdownMenuContents( {
33
+ onClose,
34
+ clientIds,
35
+ hasBlockStyles,
36
+ canRemove,
37
+ } ) {
33
38
  const { replaceBlocks, multiSelect, updateBlockAttributes } =
34
39
  useDispatch( blockEditorStore );
35
- const blockInformation = useBlockDisplayInformation( blocks[ 0 ].clientId );
36
- const {
37
- possibleBlockTransformations,
38
- canRemove,
39
- hasBlockStyles,
40
- icon,
41
- patterns,
42
- } = useSelect(
40
+ const { possibleBlockTransformations, patterns, blocks } = useSelect(
43
41
  ( select ) => {
44
42
  const {
43
+ getBlocksByClientId,
45
44
  getBlockRootClientId,
46
45
  getBlockTransformItems,
47
46
  __experimentalGetPatternTransformItems,
48
- canRemoveBlocks,
49
47
  } = select( blockEditorStore );
50
- const { getBlockStyles, getBlockType } = select( blocksStore );
51
48
  const rootClientId = getBlockRootClientId(
52
49
  Array.isArray( clientIds ) ? clientIds[ 0 ] : clientIds
53
50
  );
54
- const [ { name: firstBlockName } ] = blocks;
55
- const _isSingleBlockSelected = blocks.length === 1;
56
- const styles =
57
- _isSingleBlockSelected && getBlockStyles( firstBlockName );
58
- let _icon;
59
- if ( _isSingleBlockSelected ) {
60
- _icon = blockInformation?.icon; // Take into account active block variations.
61
- } else {
62
- const isSelectionOfSameType =
63
- new Set( blocks.map( ( { name } ) => name ) ).size === 1;
64
- // When selection consists of blocks of multiple types, display an
65
- // appropriate icon to communicate the non-uniformity.
66
- _icon = isSelectionOfSameType
67
- ? getBlockType( firstBlockName )?.icon
68
- : copy;
69
- }
51
+ const _blocks = getBlocksByClientId( clientIds );
70
52
  return {
53
+ blocks: _blocks,
71
54
  possibleBlockTransformations: getBlockTransformItems(
72
- blocks,
55
+ _blocks,
73
56
  rootClientId
74
57
  ),
75
- canRemove: canRemoveBlocks( clientIds, rootClientId ),
76
- hasBlockStyles: !! styles?.length,
77
- icon: _icon,
78
58
  patterns: __experimentalGetPatternTransformItems(
79
- blocks,
59
+ _blocks,
80
60
  rootClientId
81
61
  ),
82
62
  };
83
63
  },
84
- [ clientIds, blocks, blockInformation?.icon ]
64
+ [ clientIds ]
85
65
  );
86
-
87
66
  const blockVariationTransformations = useBlockVariationTransforms( {
88
67
  clientIds,
89
68
  blocks,
90
69
  } );
91
-
92
- const blockTitle = useBlockDisplayTitle( {
93
- clientId: Array.isArray( clientIds ) ? clientIds[ 0 ] : clientIds,
94
- maximumLength: 35,
95
- } );
96
-
97
- const isSingleBlock = blocks.length === 1;
98
- const isReusable = isSingleBlock && isReusableBlock( blocks[ 0 ] );
99
- const isTemplate = isSingleBlock && isTemplatePart( blocks[ 0 ] );
100
-
101
70
  function selectForMultipleBlocks( insertedBlocks ) {
102
71
  if ( insertedBlocks.length > 1 ) {
103
72
  multiSelect(
@@ -106,14 +75,12 @@ export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
106
75
  );
107
76
  }
108
77
  }
109
-
110
78
  // Simple block tranformation based on the `Block Transforms` API.
111
79
  function onBlockTransform( name ) {
112
80
  const newBlocks = switchToBlockType( blocks, name );
113
81
  replaceBlocks( clientIds, newBlocks );
114
82
  selectForMultipleBlocks( newBlocks );
115
83
  }
116
-
117
84
  function onBlockVariationTransform( name ) {
118
85
  updateBlockAttributes( blocks[ 0 ].clientId, {
119
86
  ...blockVariationTransformations.find(
@@ -121,18 +88,18 @@ export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
121
88
  ).attributes,
122
89
  } );
123
90
  }
124
-
125
91
  // Pattern transformation through the `Patterns` API.
126
92
  function onPatternTransform( transformedBlocks ) {
127
93
  replaceBlocks( clientIds, transformedBlocks );
128
94
  selectForMultipleBlocks( transformedBlocks );
129
95
  }
130
-
131
96
  /**
132
97
  * The `isTemplate` check is a stopgap solution here.
133
98
  * Ideally, the Transforms API should handle this
134
99
  * by allowing to exclude blocks from wildcard transformations.
135
100
  */
101
+ const isSingleBlock = blocks.length === 1;
102
+ const isTemplate = isSingleBlock && isTemplatePart( blocks[ 0 ] );
136
103
  const hasPossibleBlockTransformations =
137
104
  !! possibleBlockTransformations.length && canRemove && ! isTemplate;
138
105
  const hasPossibleBlockVariationTransformations =
@@ -141,11 +108,118 @@ export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
141
108
  const hasBlockOrBlockVariationTransforms =
142
109
  hasPossibleBlockTransformations ||
143
110
  hasPossibleBlockVariationTransformations;
144
- const showDropdown =
111
+ const hasContents =
145
112
  hasBlockStyles ||
146
113
  hasBlockOrBlockVariationTransforms ||
147
114
  hasPatternTransformation;
148
- if ( ! showDropdown ) {
115
+ if ( ! hasContents ) {
116
+ return (
117
+ <p className="block-editor-block-switcher__no-transforms">
118
+ { __( 'No transforms.' ) }
119
+ </p>
120
+ );
121
+ }
122
+ return (
123
+ <div className="block-editor-block-switcher__container">
124
+ { hasPatternTransformation && (
125
+ <PatternTransformationsMenu
126
+ blocks={ blocks }
127
+ patterns={ patterns }
128
+ onSelect={ ( transformedBlocks ) => {
129
+ onPatternTransform( transformedBlocks );
130
+ onClose();
131
+ } }
132
+ />
133
+ ) }
134
+ { hasBlockOrBlockVariationTransforms && (
135
+ <BlockTransformationsMenu
136
+ className="block-editor-block-switcher__transforms__menugroup"
137
+ possibleBlockTransformations={
138
+ possibleBlockTransformations
139
+ }
140
+ possibleBlockVariationTransformations={
141
+ blockVariationTransformations
142
+ }
143
+ blocks={ blocks }
144
+ onSelect={ ( name ) => {
145
+ onBlockTransform( name );
146
+ onClose();
147
+ } }
148
+ onSelectVariation={ ( name ) => {
149
+ onBlockVariationTransform( name );
150
+ onClose();
151
+ } }
152
+ />
153
+ ) }
154
+ { hasBlockStyles && (
155
+ <BlockStylesMenu
156
+ hoveredBlock={ blocks[ 0 ] }
157
+ onSwitch={ onClose }
158
+ />
159
+ ) }
160
+ </div>
161
+ );
162
+ }
163
+
164
+ export const BlockSwitcher = ( { clientIds } ) => {
165
+ const blockInformation = useBlockDisplayInformation( clientIds?.[ 0 ] );
166
+ const {
167
+ canRemove,
168
+ hasBlockStyles,
169
+ icon,
170
+ invalidBlocks,
171
+ isReusable,
172
+ isTemplate,
173
+ } = useSelect(
174
+ ( select ) => {
175
+ const {
176
+ getBlockRootClientId,
177
+ getBlocksByClientId,
178
+ canRemoveBlocks,
179
+ } = select( blockEditorStore );
180
+ const { getBlockStyles, getBlockType } = select( blocksStore );
181
+ const _blocks = getBlocksByClientId( clientIds );
182
+ if ( ! _blocks.length || _blocks.some( ( block ) => ! block ) ) {
183
+ return { invalidBlocks: true };
184
+ }
185
+ const rootClientId = getBlockRootClientId( clientIds );
186
+ const [ { name: firstBlockName } ] = _blocks;
187
+ const _isSingleBlockSelected = _blocks.length === 1;
188
+ let _icon;
189
+ if ( _isSingleBlockSelected ) {
190
+ _icon = blockInformation?.icon; // Take into account active block variations.
191
+ } else {
192
+ const isSelectionOfSameType =
193
+ new Set( _blocks.map( ( { name } ) => name ) ).size === 1;
194
+ // When selection consists of blocks of multiple types, display an
195
+ // appropriate icon to communicate the non-uniformity.
196
+ _icon = isSelectionOfSameType
197
+ ? getBlockType( firstBlockName )?.icon
198
+ : copy;
199
+ }
200
+ return {
201
+ canRemove: canRemoveBlocks( clientIds, rootClientId ),
202
+ hasBlockStyles:
203
+ _isSingleBlockSelected &&
204
+ !! getBlockStyles( firstBlockName )?.length,
205
+ icon: _icon,
206
+ isReusable:
207
+ _isSingleBlockSelected && isReusableBlock( _blocks[ 0 ] ),
208
+ isTemplate:
209
+ _isSingleBlockSelected && isTemplatePart( _blocks[ 0 ] ),
210
+ };
211
+ },
212
+ [ clientIds, blockInformation?.icon ]
213
+ );
214
+ const blockTitle = useBlockDisplayTitle( {
215
+ clientId: clientIds?.[ 0 ],
216
+ maximumLength: 35,
217
+ } );
218
+ if ( invalidBlocks ) {
219
+ return null;
220
+ }
221
+ const hideDropdown = ! hasBlockStyles && ! canRemove;
222
+ if ( hideDropdown ) {
149
223
  return (
150
224
  <ToolbarGroup>
151
225
  <ToolbarButton
@@ -166,11 +240,10 @@ export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
166
240
  </ToolbarGroup>
167
241
  );
168
242
  }
169
-
243
+ const isSingleBlock = clientIds.length === 1;
170
244
  const blockSwitcherLabel = isSingleBlock
171
245
  ? blockTitle
172
246
  : __( 'Multiple blocks selected' );
173
-
174
247
  const blockSwitcherDescription = isSingleBlock
175
248
  ? __( 'Change block type or style' )
176
249
  : sprintf(
@@ -178,11 +251,10 @@ export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
178
251
  _n(
179
252
  'Change type of %d block',
180
253
  'Change type of %d blocks',
181
- blocks.length
254
+ clientIds.length
182
255
  ),
183
- blocks.length
256
+ clientIds.length
184
257
  );
185
-
186
258
  return (
187
259
  <ToolbarGroup>
188
260
  <ToolbarItem>
@@ -215,46 +287,12 @@ export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
215
287
  menuProps={ { orientation: 'both' } }
216
288
  >
217
289
  { ( { onClose } ) => (
218
- <div className="block-editor-block-switcher__container">
219
- { hasPatternTransformation && (
220
- <PatternTransformationsMenu
221
- blocks={ blocks }
222
- patterns={ patterns }
223
- onSelect={ ( transformedBlocks ) => {
224
- onPatternTransform(
225
- transformedBlocks
226
- );
227
- onClose();
228
- } }
229
- />
230
- ) }
231
- { hasBlockOrBlockVariationTransforms && (
232
- <BlockTransformationsMenu
233
- className="block-editor-block-switcher__transforms__menugroup"
234
- possibleBlockTransformations={
235
- possibleBlockTransformations
236
- }
237
- possibleBlockVariationTransformations={
238
- blockVariationTransformations
239
- }
240
- blocks={ blocks }
241
- onSelect={ ( name ) => {
242
- onBlockTransform( name );
243
- onClose();
244
- } }
245
- onSelectVariation={ ( name ) => {
246
- onBlockVariationTransform( name );
247
- onClose();
248
- } }
249
- />
250
- ) }
251
- { hasBlockStyles && (
252
- <BlockStylesMenu
253
- hoveredBlock={ blocks[ 0 ] }
254
- onSwitch={ onClose }
255
- />
256
- ) }
257
- </div>
290
+ <BlockSwitcherDropdownMenuContents
291
+ onClose={ onClose }
292
+ clientIds={ clientIds }
293
+ hasBlockStyles={ hasBlockStyles }
294
+ canRemove={ canRemove }
295
+ />
258
296
  ) }
259
297
  </DropdownMenu>
260
298
  ) }
@@ -263,20 +301,4 @@ export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
263
301
  );
264
302
  };
265
303
 
266
- export const BlockSwitcher = ( { clientIds } ) => {
267
- const blocks = useSelect(
268
- ( select ) =>
269
- select( blockEditorStore ).getBlocksByClientId( clientIds ),
270
- [ clientIds ]
271
- );
272
-
273
- if ( ! blocks.length || blocks.some( ( block ) => ! block ) ) {
274
- return null;
275
- }
276
-
277
- return (
278
- <BlockSwitcherDropdownMenu clientIds={ clientIds } blocks={ blocks } />
279
- );
280
- };
281
-
282
304
  export default BlockSwitcher;
@@ -35,10 +35,6 @@
35
35
  }
36
36
  }
37
37
 
38
- .show-icon-labels .block-editor-block-toolbar .block-editor-block-switcher .components-button.has-icon::after {
39
- font-size: 14px;
40
- }
41
-
42
38
  .components-button.block-editor-block-switcher__no-switcher-icon {
43
39
  display: flex;
44
40
 
@@ -201,3 +197,9 @@
201
197
  }
202
198
  }
203
199
  }
200
+
201
+ .block-editor-block-switcher__no-transforms {
202
+ color: $gray-700;
203
+ padding: 6px $grid-unit;
204
+ margin: 0;
205
+ }