@wordpress/block-editor 12.17.0 → 12.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) 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/dimensions-tool/aspect-ratio-tool.js +2 -1
  40. package/build/components/dimensions-tool/aspect-ratio-tool.js.map +1 -1
  41. package/build/components/font-sizes/fluid-utils.js +7 -1
  42. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  43. package/build/components/global-styles/border-panel.js +5 -14
  44. package/build/components/global-styles/border-panel.js.map +1 -1
  45. package/build/components/global-styles/dimensions-panel.js +30 -5
  46. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  47. package/build/components/global-styles/effects-panel.js +7 -1
  48. package/build/components/global-styles/effects-panel.js.map +1 -1
  49. package/build/components/global-styles/hooks.js +11 -8
  50. package/build/components/global-styles/hooks.js.map +1 -1
  51. package/build/components/global-styles/typography-panel.js +31 -14
  52. package/build/components/global-styles/typography-panel.js.map +1 -1
  53. package/build/components/global-styles/use-global-styles-output.js +6 -0
  54. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  55. package/build/components/iframe/get-compatibility-styles.js +99 -0
  56. package/build/components/iframe/get-compatibility-styles.js.map +1 -0
  57. package/build/components/iframe/index.js +2 -3
  58. package/build/components/iframe/index.js.map +1 -1
  59. package/build/components/index.js +16 -2
  60. package/build/components/index.js.map +1 -1
  61. package/build/components/index.native.js +16 -2
  62. package/build/components/index.native.js.map +1 -1
  63. package/build/components/inspector-controls/groups.js +2 -0
  64. package/build/components/inspector-controls/groups.js.map +1 -1
  65. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  66. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  67. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
  68. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  69. package/build/components/link-control/link-preview.js +30 -26
  70. package/build/components/link-control/link-preview.js.map +1 -1
  71. package/build/components/link-control/search-input.js +1 -9
  72. package/build/components/link-control/search-input.js.map +1 -1
  73. package/build/components/list-view/block-contents.js +3 -1
  74. package/build/components/list-view/block-contents.js.map +1 -1
  75. package/build/components/list-view/block.js +10 -1
  76. package/build/components/list-view/block.js.map +1 -1
  77. package/build/components/list-view/branch.js +29 -8
  78. package/build/components/list-view/branch.js.map +1 -1
  79. package/build/components/list-view/drop-indicator.js +100 -32
  80. package/build/components/list-view/drop-indicator.js.map +1 -1
  81. package/build/components/list-view/index.js +52 -4
  82. package/build/components/list-view/index.js.map +1 -1
  83. package/build/components/list-view/leaf.js +2 -2
  84. package/build/components/list-view/leaf.js.map +1 -1
  85. package/build/components/list-view/use-list-view-block-indexes.js +30 -0
  86. package/build/components/list-view/use-list-view-block-indexes.js.map +1 -0
  87. package/build/components/list-view/use-list-view-drop-zone.js +56 -5
  88. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  89. package/build/components/list-view/utils.js +92 -0
  90. package/build/components/list-view/utils.js.map +1 -1
  91. package/build/components/provider/index.js +1 -1
  92. package/build/components/provider/index.js.map +1 -1
  93. package/build/components/recursion-provider/index.js +21 -0
  94. package/build/components/recursion-provider/index.js.map +1 -1
  95. package/build/components/rich-text/index.js +30 -6
  96. package/build/components/rich-text/index.js.map +1 -1
  97. package/build/components/rich-text/native/index.native.js +9 -9
  98. package/build/components/rich-text/native/index.native.js.map +1 -1
  99. package/build/components/use-block-drop-zone/index.js +30 -7
  100. package/build/components/use-block-drop-zone/index.js.map +1 -1
  101. package/build/components/use-on-block-drop/index.js +50 -8
  102. package/build/components/use-on-block-drop/index.js.map +1 -1
  103. package/build/hooks/block-hooks.js +5 -14
  104. package/build/hooks/block-hooks.js.map +1 -1
  105. package/build/hooks/content-lock-ui.js +17 -42
  106. package/build/hooks/content-lock-ui.js.map +1 -1
  107. package/build/hooks/dimensions.js +71 -1
  108. package/build/hooks/dimensions.js.map +1 -1
  109. package/build/hooks/effects.js +66 -0
  110. package/build/hooks/effects.js.map +1 -0
  111. package/build/hooks/index.js +17 -4
  112. package/build/hooks/index.js.map +1 -1
  113. package/build/hooks/index.native.js +13 -0
  114. package/build/hooks/index.native.js.map +1 -1
  115. package/build/hooks/style.js +9 -2
  116. package/build/hooks/style.js.map +1 -1
  117. package/build/hooks/supports.js +2 -1
  118. package/build/hooks/supports.js.map +1 -1
  119. package/build/hooks/typography.native.js +2 -2
  120. package/build/hooks/typography.native.js.map +1 -1
  121. package/build/hooks/use-bindings-attributes.js +115 -0
  122. package/build/hooks/use-bindings-attributes.js.map +1 -0
  123. package/build/hooks/use-shadow-props.js +46 -0
  124. package/build/hooks/use-shadow-props.js.map +1 -0
  125. package/build/hooks/utils.js +12 -7
  126. package/build/hooks/utils.js.map +1 -1
  127. package/build/index.js +14 -0
  128. package/build/index.js.map +1 -1
  129. package/build/store/actions.js +10 -6
  130. package/build/store/actions.js.map +1 -1
  131. package/build/store/index.js +2 -0
  132. package/build/store/index.js.map +1 -1
  133. package/build/store/private-actions.js +37 -0
  134. package/build/store/private-actions.js.map +1 -1
  135. package/build/store/private-selectors.js +60 -9
  136. package/build/store/private-selectors.js.map +1 -1
  137. package/build/store/reducer.js +44 -3
  138. package/build/store/reducer.js.map +1 -1
  139. package/build/store/resolvers.js +27 -0
  140. package/build/store/resolvers.js.map +1 -0
  141. package/build/store/selectors.js +94 -56
  142. package/build/store/selectors.js.map +1 -1
  143. package/build/store/utils.js +5 -26
  144. package/build/store/utils.js.map +1 -1
  145. package/build/utils/index.js +0 -16
  146. package/build/utils/index.js.map +1 -1
  147. package/build/utils/math.js +13 -0
  148. package/build/utils/math.js.map +1 -1
  149. package/build/utils/object.js +17 -0
  150. package/build/utils/object.js.map +1 -1
  151. package/build/utils/transform-styles/index.js +37 -27
  152. package/build/utils/transform-styles/index.js.map +1 -1
  153. package/build-module/components/block-draggable/index.js +11 -3
  154. package/build-module/components/block-draggable/index.js.map +1 -1
  155. package/build-module/components/block-edit/context.js +1 -0
  156. package/build-module/components/block-edit/context.js.map +1 -1
  157. package/build-module/components/block-edit/index.js +5 -3
  158. package/build-module/components/block-edit/index.js.map +1 -1
  159. package/build-module/components/block-editing-mode/index.js +7 -4
  160. package/build-module/components/block-editing-mode/index.js.map +1 -1
  161. package/build-module/components/block-inspector/index.js +5 -2
  162. package/build-module/components/block-inspector/index.js.map +1 -1
  163. package/build-module/components/block-list/block.js +6 -5
  164. package/build-module/components/block-list/block.js.map +1 -1
  165. package/build-module/components/block-list/block.native.js +11 -7
  166. package/build-module/components/block-list/block.native.js.map +1 -1
  167. package/build-module/components/block-list/index.js +31 -5
  168. package/build-module/components/block-list/index.js.map +1 -1
  169. package/build-module/components/block-list/private-block-context.js +1 -1
  170. package/build-module/components/block-list/private-block-context.js.map +1 -1
  171. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  172. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  173. package/build-module/components/block-lock/toolbar.js +8 -2
  174. package/build-module/components/block-lock/toolbar.js.map +1 -1
  175. package/build-module/components/block-popover/inbetween.js +15 -3
  176. package/build-module/components/block-popover/inbetween.js.map +1 -1
  177. package/build-module/components/block-preview/auto.js +3 -3
  178. package/build-module/components/block-preview/auto.js.map +1 -1
  179. package/build-module/components/block-removal-warning-modal/index.js +3 -2
  180. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  181. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -4
  182. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  183. package/build-module/components/block-switcher/block-transformations-menu.js +12 -1
  184. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  185. package/build-module/components/block-switcher/index.js +116 -86
  186. package/build-module/components/block-switcher/index.js.map +1 -1
  187. package/build-module/components/block-tools/insertion-point.js +10 -3
  188. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  189. package/build-module/components/dimensions-tool/aspect-ratio-tool.js +2 -1
  190. package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +1 -1
  191. package/build-module/components/font-sizes/fluid-utils.js +7 -1
  192. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  193. package/build-module/components/global-styles/border-panel.js +5 -14
  194. package/build-module/components/global-styles/border-panel.js.map +1 -1
  195. package/build-module/components/global-styles/dimensions-panel.js +30 -5
  196. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  197. package/build-module/components/global-styles/effects-panel.js +7 -1
  198. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  199. package/build-module/components/global-styles/hooks.js +11 -8
  200. package/build-module/components/global-styles/hooks.js.map +1 -1
  201. package/build-module/components/global-styles/typography-panel.js +32 -15
  202. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  203. package/build-module/components/global-styles/use-global-styles-output.js +6 -0
  204. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  205. package/build-module/components/iframe/get-compatibility-styles.js +93 -0
  206. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -0
  207. package/build-module/components/iframe/index.js +2 -3
  208. package/build-module/components/iframe/index.js.map +1 -1
  209. package/build-module/components/index.js +1 -1
  210. package/build-module/components/index.js.map +1 -1
  211. package/build-module/components/index.native.js +1 -1
  212. package/build-module/components/index.native.js.map +1 -1
  213. package/build-module/components/inspector-controls/groups.js +2 -0
  214. package/build-module/components/inspector-controls/groups.js.map +1 -1
  215. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  216. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  217. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
  218. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  219. package/build-module/components/link-control/link-preview.js +32 -28
  220. package/build-module/components/link-control/link-preview.js.map +1 -1
  221. package/build-module/components/link-control/search-input.js +1 -8
  222. package/build-module/components/link-control/search-input.js.map +1 -1
  223. package/build-module/components/list-view/block-contents.js +3 -1
  224. package/build-module/components/list-view/block-contents.js.map +1 -1
  225. package/build-module/components/list-view/block.js +10 -1
  226. package/build-module/components/list-view/block.js.map +1 -1
  227. package/build-module/components/list-view/branch.js +30 -9
  228. package/build-module/components/list-view/branch.js.map +1 -1
  229. package/build-module/components/list-view/drop-indicator.js +99 -32
  230. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  231. package/build-module/components/list-view/index.js +54 -6
  232. package/build-module/components/list-view/index.js.map +1 -1
  233. package/build-module/components/list-view/leaf.js +2 -2
  234. package/build-module/components/list-view/leaf.js.map +1 -1
  235. package/build-module/components/list-view/use-list-view-block-indexes.js +23 -0
  236. package/build-module/components/list-view/use-list-view-block-indexes.js.map +1 -0
  237. package/build-module/components/list-view/use-list-view-drop-zone.js +58 -7
  238. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  239. package/build-module/components/list-view/utils.js +91 -0
  240. package/build-module/components/list-view/utils.js.map +1 -1
  241. package/build-module/components/provider/index.js +1 -1
  242. package/build-module/components/provider/index.js.map +1 -1
  243. package/build-module/components/recursion-provider/index.js +17 -0
  244. package/build-module/components/recursion-provider/index.js.map +1 -1
  245. package/build-module/components/rich-text/index.js +30 -6
  246. package/build-module/components/rich-text/index.js.map +1 -1
  247. package/build-module/components/rich-text/native/index.native.js +9 -9
  248. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  249. package/build-module/components/use-block-drop-zone/index.js +31 -8
  250. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  251. package/build-module/components/use-on-block-drop/index.js +51 -9
  252. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  253. package/build-module/hooks/block-hooks.js +5 -14
  254. package/build-module/hooks/block-hooks.js.map +1 -1
  255. package/build-module/hooks/content-lock-ui.js +19 -43
  256. package/build-module/hooks/content-lock-ui.js.map +1 -1
  257. package/build-module/hooks/dimensions.js +70 -2
  258. package/build-module/hooks/dimensions.js.map +1 -1
  259. package/build-module/hooks/effects.js +51 -0
  260. package/build-module/hooks/effects.js.map +1 -0
  261. package/build-module/hooks/index.js +5 -3
  262. package/build-module/hooks/index.js.map +1 -1
  263. package/build-module/hooks/index.native.js +1 -0
  264. package/build-module/hooks/index.native.js.map +1 -1
  265. package/build-module/hooks/style.js +9 -2
  266. package/build-module/hooks/style.js.map +1 -1
  267. package/build-module/hooks/supports.js +2 -1
  268. package/build-module/hooks/supports.js.map +1 -1
  269. package/build-module/hooks/typography.native.js +2 -2
  270. package/build-module/hooks/typography.native.js.map +1 -1
  271. package/build-module/hooks/use-bindings-attributes.js +112 -0
  272. package/build-module/hooks/use-bindings-attributes.js.map +1 -0
  273. package/build-module/hooks/use-shadow-props.js +39 -0
  274. package/build-module/hooks/use-shadow-props.js.map +1 -0
  275. package/build-module/hooks/utils.js +14 -9
  276. package/build-module/hooks/utils.js.map +1 -1
  277. package/build-module/index.js +1 -1
  278. package/build-module/index.js.map +1 -1
  279. package/build-module/store/actions.js +10 -6
  280. package/build-module/store/actions.js.map +1 -1
  281. package/build-module/store/index.js +2 -0
  282. package/build-module/store/index.js.map +1 -1
  283. package/build-module/store/private-actions.js +35 -0
  284. package/build-module/store/private-actions.js.map +1 -1
  285. package/build-module/store/private-selectors.js +53 -8
  286. package/build-module/store/private-selectors.js.map +1 -1
  287. package/build-module/store/reducer.js +43 -3
  288. package/build-module/store/reducer.js.map +1 -1
  289. package/build-module/store/resolvers.js +20 -0
  290. package/build-module/store/resolvers.js.map +1 -0
  291. package/build-module/store/selectors.js +89 -52
  292. package/build-module/store/selectors.js.map +1 -1
  293. package/build-module/store/utils.js +3 -23
  294. package/build-module/store/utils.js.map +1 -1
  295. package/build-module/utils/index.js +0 -1
  296. package/build-module/utils/index.js.map +1 -1
  297. package/build-module/utils/math.js +12 -0
  298. package/build-module/utils/math.js.map +1 -1
  299. package/build-module/utils/object.js +16 -0
  300. package/build-module/utils/object.js.map +1 -1
  301. package/build-module/utils/transform-styles/index.js +36 -27
  302. package/build-module/utils/transform-styles/index.js.map +1 -1
  303. package/build-style/content-rtl.css +33 -16
  304. package/build-style/content.css +33 -16
  305. package/build-style/default-editor-styles-rtl.css +1 -1
  306. package/build-style/default-editor-styles.css +1 -1
  307. package/build-style/style-rtl.css +169 -114
  308. package/build-style/style.css +169 -114
  309. package/package.json +31 -31
  310. package/src/components/block-canvas/style.scss +8 -1
  311. package/src/components/block-draggable/index.js +16 -5
  312. package/src/components/block-edit/context.js +1 -0
  313. package/src/components/block-edit/index.js +4 -0
  314. package/src/components/block-editing-mode/index.js +12 -7
  315. package/src/components/block-inspector/index.js +5 -2
  316. package/src/components/block-list/block.js +5 -4
  317. package/src/components/block-list/block.native.js +13 -3
  318. package/src/components/block-list/content.scss +34 -5
  319. package/src/components/block-list/index.js +52 -16
  320. package/src/components/block-list/private-block-context.js +1 -1
  321. package/src/components/block-list/use-in-between-inserter.js +1 -2
  322. package/src/components/block-lock/toolbar.js +10 -2
  323. package/src/components/block-popover/inbetween.js +22 -2
  324. package/src/components/block-preview/auto.js +3 -3
  325. package/src/components/block-removal-warning-modal/index.js +3 -2
  326. package/src/components/block-settings-menu/block-settings-dropdown.js +2 -7
  327. package/src/components/block-switcher/block-transformations-menu.js +18 -1
  328. package/src/components/block-switcher/index.js +133 -111
  329. package/src/components/block-switcher/style.scss +6 -4
  330. package/src/components/block-switcher/test/index.js +113 -230
  331. package/src/components/block-toolbar/style.scss +22 -18
  332. package/src/components/block-tools/insertion-point.js +15 -2
  333. package/src/components/block-tools/style.scss +8 -7
  334. package/src/components/dimensions-tool/aspect-ratio-tool.js +4 -1
  335. package/src/components/font-sizes/fluid-utils.js +8 -2
  336. package/src/components/font-sizes/test/fluid-utils.js +9 -0
  337. package/src/components/global-styles/border-panel.js +7 -17
  338. package/src/components/global-styles/dimensions-panel.js +50 -1
  339. package/src/components/global-styles/effects-panel.js +16 -1
  340. package/src/components/global-styles/hooks.js +11 -6
  341. package/src/components/global-styles/typography-panel.js +45 -13
  342. package/src/components/global-styles/use-global-styles-output.js +6 -0
  343. package/src/components/iframe/get-compatibility-styles.js +120 -0
  344. package/src/components/iframe/index.js +2 -3
  345. package/src/components/index.js +4 -2
  346. package/src/components/index.native.js +4 -2
  347. package/src/components/inspector-controls/groups.js +2 -0
  348. package/src/components/inspector-controls-tabs/styles-tab.js +1 -0
  349. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -0
  350. package/src/components/link-control/link-preview.js +31 -55
  351. package/src/components/link-control/search-input.js +1 -9
  352. package/src/components/link-control/style.scss +31 -85
  353. package/src/components/link-control/test/index.js +2 -1
  354. package/src/components/list-view/block-contents.js +5 -1
  355. package/src/components/list-view/block.js +9 -0
  356. package/src/components/list-view/branch.js +30 -10
  357. package/src/components/list-view/drop-indicator.js +139 -46
  358. package/src/components/list-view/index.js +74 -3
  359. package/src/components/list-view/leaf.js +2 -2
  360. package/src/components/list-view/style.scss +102 -13
  361. package/src/components/list-view/test/use-list-view-drop-zone.js +4 -0
  362. package/src/components/list-view/test/utils.js +218 -1
  363. package/src/components/list-view/use-list-view-block-indexes.js +29 -0
  364. package/src/components/list-view/use-list-view-drop-zone.js +78 -6
  365. package/src/components/list-view/utils.js +116 -0
  366. package/src/components/provider/index.js +3 -1
  367. package/src/components/recursion-provider/README.md +2 -2
  368. package/src/components/recursion-provider/index.js +17 -0
  369. package/src/components/rich-text/index.js +48 -10
  370. package/src/components/rich-text/native/index.native.js +10 -10
  371. package/src/components/use-block-drop-zone/index.js +60 -19
  372. package/src/components/use-block-drop-zone/test/index.js +32 -61
  373. package/src/components/use-on-block-drop/index.js +92 -11
  374. package/src/hooks/block-hooks.js +5 -17
  375. package/src/hooks/content-lock-ui.js +15 -55
  376. package/src/hooks/dimensions.js +74 -3
  377. package/src/hooks/effects.js +57 -0
  378. package/src/hooks/index.js +4 -2
  379. package/src/hooks/index.native.js +1 -0
  380. package/src/hooks/style.js +12 -0
  381. package/src/hooks/supports.js +2 -0
  382. package/src/hooks/test/effects.js +39 -0
  383. package/src/hooks/typography.native.js +2 -2
  384. package/src/hooks/use-bindings-attributes.js +148 -0
  385. package/src/hooks/use-shadow-props.js +37 -0
  386. package/src/hooks/utils.js +30 -10
  387. package/src/index.js +2 -0
  388. package/src/store/actions.js +9 -4
  389. package/src/store/index.js +2 -0
  390. package/src/store/private-actions.js +32 -0
  391. package/src/store/private-selectors.js +78 -21
  392. package/src/store/reducer.js +49 -2
  393. package/src/store/resolvers.js +17 -0
  394. package/src/store/selectors.js +169 -161
  395. package/src/store/test/registry-selectors.js +431 -0
  396. package/src/store/test/selectors.js +14 -400
  397. package/src/store/utils.js +10 -33
  398. package/src/style.scss +0 -1
  399. package/src/utils/index.js +0 -1
  400. package/src/utils/math.js +12 -0
  401. package/src/utils/object.js +16 -0
  402. package/src/utils/transform-styles/index.js +52 -37
  403. package/tsconfig.tsbuildinfo +1 -1
  404. package/build/components/iframe/use-compatibility-styles.js +0 -100
  405. package/build/components/iframe/use-compatibility-styles.js.map +0 -1
  406. package/build/hooks/custom-fields.js +0 -106
  407. package/build/hooks/custom-fields.js.map +0 -1
  408. package/build/utils/block-variation-transforms.js +0 -42
  409. package/build/utils/block-variation-transforms.js.map +0 -1
  410. package/build-module/components/iframe/use-compatibility-styles.js +0 -94
  411. package/build-module/components/iframe/use-compatibility-styles.js.map +0 -1
  412. package/build-module/hooks/custom-fields.js +0 -99
  413. package/build-module/hooks/custom-fields.js.map +0 -1
  414. package/build-module/utils/block-variation-transforms.js +0 -35
  415. package/build-module/utils/block-variation-transforms.js.map +0 -1
  416. package/src/components/block-switcher/test/__snapshots__/index.js.snap +0 -116
  417. package/src/components/contrast-checker/style.scss +0 -3
  418. package/src/components/iframe/use-compatibility-styles.js +0 -122
  419. package/src/hooks/custom-fields.js +0 -115
  420. package/src/utils/block-variation-transforms.js +0 -38
  421. package/src/utils/test/block-variation-transforms.js +0 -94
@@ -640,13 +640,15 @@ export function showInsertionPoint(
640
640
  index,
641
641
  __unstableOptions = {}
642
642
  ) {
643
- const { __unstableWithInserter, operation } = __unstableOptions;
643
+ const { __unstableWithInserter, operation, nearestSide } =
644
+ __unstableOptions;
644
645
  return {
645
646
  type: 'SHOW_INSERTION_POINT',
646
647
  rootClientId,
647
648
  index,
648
649
  __unstableWithInserter,
649
650
  operation,
651
+ nearestSide,
650
652
  };
651
653
  }
652
654
  /**
@@ -1679,20 +1681,23 @@ export function setBlockVisibility( updates ) {
1679
1681
  }
1680
1682
 
1681
1683
  /**
1682
- * Action that sets whether a block is being temporaritly edited as blocks.
1684
+ * Action that sets whether a block is being temporarily edited as blocks.
1683
1685
  *
1684
1686
  * DO-NOT-USE in production.
1685
1687
  * This action is created for internal/experimental only usage and may be
1686
1688
  * removed anytime without any warning, causing breakage on any plugin or theme invoking it.
1687
1689
  *
1688
- * @param {?string} temporarilyEditingAsBlocks The block's clientId being temporaritly edited as blocks.
1690
+ * @param {?string} temporarilyEditingAsBlocks The block's clientId being temporarily edited as blocks.
1691
+ * @param {?string} focusModeToRevert The focus mode to revert after temporarily edit as blocks finishes.
1689
1692
  */
1690
1693
  export function __unstableSetTemporarilyEditingAsBlocks(
1691
- temporarilyEditingAsBlocks
1694
+ temporarilyEditingAsBlocks,
1695
+ focusModeToRevert
1692
1696
  ) {
1693
1697
  return {
1694
1698
  type: 'SET_TEMPORARILY_EDITING_AS_BLOCKS',
1695
1699
  temporarilyEditingAsBlocks,
1700
+ focusModeToRevert,
1696
1701
  };
1697
1702
  }
1698
1703
 
@@ -10,6 +10,7 @@ import reducer from './reducer';
10
10
  import * as selectors from './selectors';
11
11
  import * as privateActions from './private-actions';
12
12
  import * as privateSelectors from './private-selectors';
13
+ import * as resolvers from './resolvers';
13
14
  import * as actions from './actions';
14
15
  import { STORE_NAME } from './constants';
15
16
  import { unlock } from '../lock-unlock';
@@ -22,6 +23,7 @@ import { unlock } from '../lock-unlock';
22
23
  export const storeConfig = {
23
24
  reducer,
24
25
  selectors,
26
+ resolvers,
25
27
  actions,
26
28
  };
27
29
 
@@ -338,3 +338,35 @@ export function setLastFocus( lastFocus = null ) {
338
338
  lastFocus,
339
339
  };
340
340
  }
341
+
342
+ /**
343
+ * Action that stops temporarily editing as blocks.
344
+ *
345
+ * @param {string} clientId The block's clientId.
346
+ */
347
+ export function stopEditingAsBlocks( clientId ) {
348
+ return ( { select, dispatch } ) => {
349
+ const focusModeToRevert =
350
+ select.__unstableGetTemporarilyEditingFocusModeToRevert();
351
+ dispatch.__unstableMarkNextChangeAsNotPersistent();
352
+ dispatch.updateBlockAttributes( clientId, {
353
+ templateLock: 'contentOnly',
354
+ } );
355
+ dispatch.updateBlockListSettings( clientId, {
356
+ ...select.getBlockListSettings( clientId ),
357
+ templateLock: 'contentOnly',
358
+ } );
359
+ dispatch.updateSettings( { focusMode: focusModeToRevert } );
360
+ dispatch.__unstableSetTemporarilyEditingAsBlocks();
361
+ };
362
+ }
363
+
364
+ export function registerBlockBindingsSource( source ) {
365
+ return {
366
+ type: 'REGISTER_BLOCK_BINDINGS_SOURCE',
367
+ sourceName: source.name,
368
+ sourceLabel: source.label,
369
+ useSource: source.useSource,
370
+ lockAttributesEditing: source.lockAttributesEditing,
371
+ };
372
+ }
@@ -3,6 +3,11 @@
3
3
  */
4
4
  import createSelector from 'rememo';
5
5
 
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { createRegistrySelector } from '@wordpress/data';
10
+
6
11
  /**
7
12
  * Internal dependencies
8
13
  */
@@ -11,11 +16,12 @@ import {
11
16
  getBlockParents,
12
17
  getBlockEditingMode,
13
18
  getSettings,
14
- __experimentalGetParsedPattern,
15
19
  canInsertBlockType,
16
- __experimentalGetAllowedPatterns,
17
20
  } from './selectors';
18
- import { getUserPatterns, checkAllowListRecursive } from './utils';
21
+ import { checkAllowListRecursive, getAllPatternsDependants } from './utils';
22
+ import { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';
23
+ import { store } from './';
24
+ import { unlock } from '../lock-unlock';
19
25
 
20
26
  /**
21
27
  * Returns true if the block interface is hidden, or false otherwise.
@@ -242,6 +248,10 @@ export const getInserterMediaCategories = createSelector(
242
248
  ]
243
249
  );
244
250
 
251
+ export function getFetchedPatterns( state ) {
252
+ return state.blockPatterns;
253
+ }
254
+
245
255
  /**
246
256
  * Returns whether there is at least one allowed pattern for inner blocks children.
247
257
  * This is useful for deferring the parsing of all patterns until needed.
@@ -251,35 +261,74 @@ export const getInserterMediaCategories = createSelector(
251
261
  *
252
262
  * @return {boolean} If there is at least one allowed pattern.
253
263
  */
254
- export const hasAllowedPatterns = createSelector(
255
- ( state, rootClientId = null ) => {
256
- const patterns = state.settings.__experimentalBlockPatterns;
257
- const userPatterns = getUserPatterns( state );
258
- const { allowedBlockTypes } = getSettings( state );
259
- return [ ...userPatterns, ...patterns ].some(
260
- ( { name, inserter = true } ) => {
264
+ export const hasAllowedPatterns = createRegistrySelector( ( select ) =>
265
+ createSelector(
266
+ ( state, rootClientId = null ) => {
267
+ const { getAllPatterns, __experimentalGetParsedPattern } = unlock(
268
+ select( store )
269
+ );
270
+ const patterns = getAllPatterns();
271
+ const { allowedBlockTypes } = getSettings( state );
272
+ return patterns.some( ( { name, inserter = true } ) => {
261
273
  if ( ! inserter ) {
262
274
  return false;
263
275
  }
264
- const { blocks } = __experimentalGetParsedPattern(
265
- state,
266
- name
267
- );
276
+ const { blocks } = __experimentalGetParsedPattern( name );
268
277
  return (
269
278
  checkAllowListRecursive( blocks, allowedBlockTypes ) &&
270
279
  blocks.every( ( { name: blockName } ) =>
271
280
  canInsertBlockType( state, blockName, rootClientId )
272
281
  )
273
282
  );
283
+ } );
284
+ },
285
+ ( state, rootClientId ) => [
286
+ getAllPatternsDependants( state ),
287
+ state.settings.allowedBlockTypes,
288
+ state.settings.templateLock,
289
+ state.blockListSettings[ rootClientId ],
290
+ state.blocks.byClientId.get( rootClientId ),
291
+ ]
292
+ )
293
+ );
294
+
295
+ export const getAllPatterns = createRegistrySelector( ( select ) =>
296
+ createSelector( ( state ) => {
297
+ // This setting is left for back compat.
298
+ const {
299
+ __experimentalBlockPatterns = [],
300
+ __experimentalUserPatternCategories = [],
301
+ __experimentalReusableBlocks = [],
302
+ } = state.settings;
303
+ const userPatterns = ( __experimentalReusableBlocks ?? [] ).map(
304
+ ( userPattern ) => {
305
+ return {
306
+ name: `core/block/${ userPattern.id }`,
307
+ id: userPattern.id,
308
+ type: INSERTER_PATTERN_TYPES.user,
309
+ title: userPattern.title.raw,
310
+ categories: userPattern.wp_pattern_category.map(
311
+ ( catId ) => {
312
+ const category = (
313
+ __experimentalUserPatternCategories ?? []
314
+ ).find( ( { id } ) => id === catId );
315
+ return category ? category.slug : catId;
316
+ }
317
+ ),
318
+ content: userPattern.content.raw,
319
+ syncStatus: userPattern.wp_pattern_sync_status,
320
+ };
274
321
  }
275
322
  );
276
- },
277
- ( state, rootClientId ) => [
278
- ...__experimentalGetAllowedPatterns.getDependants(
279
- state,
280
- rootClientId
281
- ),
282
- ]
323
+ return [
324
+ ...userPatterns,
325
+ ...__experimentalBlockPatterns,
326
+ ...unlock( select( store ) ).getFetchedPatterns(),
327
+ ].filter(
328
+ ( x, index, arr ) =>
329
+ index === arr.findIndex( ( y ) => x.name === y.name )
330
+ );
331
+ }, getAllPatternsDependants )
283
332
  );
284
333
 
285
334
  /**
@@ -292,3 +341,11 @@ export const hasAllowedPatterns = createSelector(
292
341
  export function getLastFocus( state ) {
293
342
  return state.lastFocus;
294
343
  }
344
+
345
+ export function getAllBlockBindingsSources( state ) {
346
+ return state.blockBindingsSources;
347
+ }
348
+
349
+ export function getBlockBindingsSource( state, sourceName ) {
350
+ return state.blockBindingsSources[ sourceName ];
351
+ }
@@ -1599,13 +1599,19 @@ export function blocksMode( state = {}, action ) {
1599
1599
  export function insertionPoint( state = null, action ) {
1600
1600
  switch ( action.type ) {
1601
1601
  case 'SHOW_INSERTION_POINT': {
1602
- const { rootClientId, index, __unstableWithInserter, operation } =
1603
- action;
1602
+ const {
1603
+ rootClientId,
1604
+ index,
1605
+ __unstableWithInserter,
1606
+ operation,
1607
+ nearestSide,
1608
+ } = action;
1604
1609
  const nextState = {
1605
1610
  rootClientId,
1606
1611
  index,
1607
1612
  __unstableWithInserter,
1608
1613
  operation,
1614
+ nearestSide,
1609
1615
  };
1610
1616
 
1611
1617
  // Bail out updates if the states are the same.
@@ -1906,6 +1912,21 @@ export function temporarilyEditingAsBlocks( state = '', action ) {
1906
1912
  return state;
1907
1913
  }
1908
1914
 
1915
+ /**
1916
+ * Reducer returning the focus mode that should be used when temporarily edit as blocks finishes.
1917
+ *
1918
+ * @param {Object} state Current state.
1919
+ * @param {Object} action Dispatched action.
1920
+ *
1921
+ * @return {Object} Updated state.
1922
+ */
1923
+ export function temporarilyEditingFocusModeRevert( state = '', action ) {
1924
+ if ( action.type === 'SET_TEMPORARILY_EDITING_AS_BLOCKS' ) {
1925
+ return action.focusModeToRevert;
1926
+ }
1927
+ return state;
1928
+ }
1929
+
1909
1930
  /**
1910
1931
  * Reducer returning a map of block client IDs to block editing modes.
1911
1932
  *
@@ -2002,6 +2023,29 @@ export function lastFocus( state = false, action ) {
2002
2023
  return state;
2003
2024
  }
2004
2025
 
2026
+ function blockBindingsSources( state = {}, action ) {
2027
+ if ( action.type === 'REGISTER_BLOCK_BINDINGS_SOURCE' ) {
2028
+ return {
2029
+ ...state,
2030
+ [ action.sourceName ]: {
2031
+ label: action.sourceLabel,
2032
+ useSource: action.useSource,
2033
+ lockAttributesEditing: action.lockAttributesEditing,
2034
+ },
2035
+ };
2036
+ }
2037
+ return state;
2038
+ }
2039
+
2040
+ function blockPatterns( state = [], action ) {
2041
+ switch ( action.type ) {
2042
+ case 'RECEIVE_BLOCK_PATTERNS':
2043
+ return action.patterns;
2044
+ }
2045
+
2046
+ return state;
2047
+ }
2048
+
2005
2049
  const combinedReducers = combineReducers( {
2006
2050
  blocks,
2007
2051
  isTyping,
@@ -2024,6 +2068,7 @@ const combinedReducers = combineReducers( {
2024
2068
  highlightedBlock,
2025
2069
  lastBlockInserted,
2026
2070
  temporarilyEditingAsBlocks,
2071
+ temporarilyEditingFocusModeRevert,
2027
2072
  blockVisibility,
2028
2073
  blockEditingModes,
2029
2074
  styleOverrides,
@@ -2031,6 +2076,8 @@ const combinedReducers = combineReducers( {
2031
2076
  blockRemovalRules,
2032
2077
  openedBlockSettingsMenu,
2033
2078
  registeredInserterMediaCategories,
2079
+ blockBindingsSources,
2080
+ blockPatterns,
2034
2081
  } );
2035
2082
 
2036
2083
  function withAutomaticChangeReset( reducer ) {
@@ -0,0 +1,17 @@
1
+ export const getFetchedPatterns =
2
+ () =>
3
+ async ( { dispatch, select } ) => {
4
+ const { __experimentalFetchBlockPatterns } = select.getSettings();
5
+ if ( ! __experimentalFetchBlockPatterns ) {
6
+ return [];
7
+ }
8
+ const patterns = await __experimentalFetchBlockPatterns();
9
+ dispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );
10
+ };
11
+
12
+ getFetchedPatterns.shouldInvalidate = ( action ) => {
13
+ return (
14
+ action.type === 'UPDATE_SETTINGS' &&
15
+ !! action.settings.__experimentalFetchBlockPatterns
16
+ );
17
+ };