@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
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_undoIgnore","castArray","maybeArray","Array","isArray","privateSettings","__experimentalUpdateSettings","settings","stripExperimentalSettings","reset","cleanSettings","Platform","OS","key","includes","type","hideBlockInterface","showBlockInterface","privateRemoveBlocks","clientIds","selectPrevious","forceRemove","select","dispatch","registry","length","rootClientId","getBlockRootClientId","canRemoveBlocks","rules","getBlockRemovalRules","blockNamesForPrompt","Set","queue","clientId","shift","blockName","getBlockName","add","innerBlocks","getBlockOrder","push","size","displayBlockRemovalPrompt","from","selectPreviousBlock","batch","ensureDefaultBlock","exports","count","getBlockCount","__unstableHasCustomAppender","getSettings","insertDefaultBlock","clearBlockRemovalPrompt","setBlockRemovalRules","setOpenedBlockSettingsMenu","setStyleOverride","id","style","deleteStyleOverride","syncDerivedUpdates","callback","isPersistentChange","undefined","updatedBlocks","getBlocks","undoIgnoreBlocks","setLastFocus","lastFocus"],"sources":["@wordpress/block-editor/src/store/private-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { undoIgnoreBlocks } from './undo-ignore';\n\nconst castArray = ( maybeArray ) =>\n\tArray.isArray( maybeArray ) ? maybeArray : [ maybeArray ];\n\n/**\n * A list of private/experimental block editor settings that\n * should not become a part of the WordPress public API.\n * BlockEditorProvider will remove these settings from the\n * settings object it receives.\n *\n * @see https://github.com/WordPress/gutenberg/pull/46131\n */\nconst privateSettings = [\n\t'inserterMediaCategories',\n\t'blockInspectorAnimation',\n];\n\n/**\n * Action that updates the block editor settings and\n * conditionally preserves the experimental ones.\n *\n * @param {Object} settings Updated settings\n * @param {Object} options Options object.\n * @param {boolean} options.stripExperimentalSettings Whether to strip experimental settings.\n * @param {boolean} options.reset Whether to reset the settings.\n * @return {Object} Action object\n */\nexport function __experimentalUpdateSettings(\n\tsettings,\n\t{ stripExperimentalSettings = false, reset = false } = {}\n) {\n\tlet cleanSettings = settings;\n\t// There are no plugins in the mobile apps, so there is no\n\t// need to strip the experimental settings:\n\tif ( stripExperimentalSettings && Platform.OS === 'web' ) {\n\t\tcleanSettings = {};\n\t\tfor ( const key in settings ) {\n\t\t\tif ( ! privateSettings.includes( key ) ) {\n\t\t\t\tcleanSettings[ key ] = settings[ key ];\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\ttype: 'UPDATE_SETTINGS',\n\t\tsettings: cleanSettings,\n\t\treset,\n\t};\n}\n\n/**\n * Hides the block interface (eg. toolbar, outline, etc.)\n *\n * @return {Object} Action object.\n */\nexport function hideBlockInterface() {\n\treturn {\n\t\ttype: 'HIDE_BLOCK_INTERFACE',\n\t};\n}\n\n/**\n * Shows the block interface (eg. toolbar, outline, etc.)\n *\n * @return {Object} Action object.\n */\nexport function showBlockInterface() {\n\treturn {\n\t\ttype: 'SHOW_BLOCK_INTERFACE',\n\t};\n}\n\n/**\n * Yields action objects used in signalling that the blocks corresponding to\n * the set of specified client IDs are to be removed.\n *\n * Compared to `removeBlocks`, this private interface exposes an additional\n * parameter; see `forceRemove`.\n *\n * @param {string|string[]} clientIds Client IDs of blocks to remove.\n * @param {boolean} selectPrevious True if the previous block\n * or the immediate parent\n * (if no previous block exists)\n * should be selected\n * when a block is removed.\n * @param {boolean} forceRemove Whether to force the operation,\n * bypassing any checks for certain\n * block types.\n */\nexport const privateRemoveBlocks =\n\t( clientIds, selectPrevious = true, forceRemove = false ) =>\n\t( { select, dispatch, registry } ) => {\n\t\tif ( ! clientIds || ! clientIds.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclientIds = castArray( clientIds );\n\t\tconst rootClientId = select.getBlockRootClientId( clientIds[ 0 ] );\n\t\tconst canRemoveBlocks = select.canRemoveBlocks(\n\t\t\tclientIds,\n\t\t\trootClientId\n\t\t);\n\n\t\tif ( ! canRemoveBlocks ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In certain editing contexts, we'd like to prevent accidental removal\n\t\t// of important blocks. For example, in the site editor, the Query Loop\n\t\t// block is deemed important. In such cases, we'll ask the user for\n\t\t// confirmation that they intended to remove such block(s). However,\n\t\t// the editor instance is responsible for presenting those confirmation\n\t\t// prompts to the user. Any instance opting into removal prompts must\n\t\t// register using `setBlockRemovalRules()`.\n\t\t//\n\t\t// @see https://github.com/WordPress/gutenberg/pull/51145\n\t\tconst rules = ! forceRemove && select.getBlockRemovalRules();\n\t\tif ( rules ) {\n\t\t\tconst blockNamesForPrompt = new Set();\n\n\t\t\t// Given a list of client IDs of blocks that the user intended to\n\t\t\t// remove, perform a tree search (BFS) to find all block names\n\t\t\t// corresponding to \"important\" blocks, i.e. blocks that require a\n\t\t\t// removal prompt.\n\t\t\tconst queue = [ ...clientIds ];\n\t\t\twhile ( queue.length ) {\n\t\t\t\tconst clientId = queue.shift();\n\t\t\t\tconst blockName = select.getBlockName( clientId );\n\t\t\t\tif ( rules[ blockName ] ) {\n\t\t\t\t\tblockNamesForPrompt.add( blockName );\n\t\t\t\t}\n\t\t\t\tconst innerBlocks = select.getBlockOrder( clientId );\n\t\t\t\tqueue.push( ...innerBlocks );\n\t\t\t}\n\n\t\t\t// If any such blocks were found, trigger the removal prompt and\n\t\t\t// skip any other steps (thus postponing actual removal).\n\t\t\tif ( blockNamesForPrompt.size ) {\n\t\t\t\tdispatch(\n\t\t\t\t\tdisplayBlockRemovalPrompt(\n\t\t\t\t\t\tclientIds,\n\t\t\t\t\t\tselectPrevious,\n\t\t\t\t\t\tArray.from( blockNamesForPrompt )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif ( selectPrevious ) {\n\t\t\tdispatch.selectPreviousBlock( clientIds[ 0 ], selectPrevious );\n\t\t}\n\n\t\t// We're batching these two actions because an extra `undo/redo` step can\n\t\t// be created, based on whether we insert a default block or not.\n\t\tregistry.batch( () => {\n\t\t\tdispatch( { type: 'REMOVE_BLOCKS', clientIds } );\n\t\t\t// To avoid a focus loss when removing the last block, assure there is\n\t\t\t// always a default block if the last of the blocks have been removed.\n\t\t\tdispatch( ensureDefaultBlock() );\n\t\t} );\n\t};\n\n/**\n * Action which will insert a default block insert action if there\n * are no other blocks at the root of the editor. This action should be used\n * in actions which may result in no blocks remaining in the editor (removal,\n * replacement, etc).\n */\nexport const ensureDefaultBlock =\n\t() =>\n\t( { select, dispatch } ) => {\n\t\t// To avoid a focus loss when removing the last block, assure there is\n\t\t// always a default block if the last of the blocks have been removed.\n\t\tconst count = select.getBlockCount();\n\t\tif ( count > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there's an custom appender, don't insert default block.\n\t\t// We have to remember to manually move the focus elsewhere to\n\t\t// prevent it from being lost though.\n\t\tconst { __unstableHasCustomAppender } = select.getSettings();\n\t\tif ( __unstableHasCustomAppender ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch.insertDefaultBlock();\n\t};\n\n/**\n * Returns an action object used in signalling that a block removal prompt must\n * be displayed.\n *\n * Contrast with `setBlockRemovalRules`.\n *\n * @param {string|string[]} clientIds Client IDs of blocks to remove.\n * @param {boolean} selectPrevious True if the previous block\n * or the immediate parent\n * (if no previous block exists)\n * should be selected\n * when a block is removed.\n * @param {string[]} blockNamesForPrompt Names of the blocks that\n * triggered the need for\n * confirmation before removal.\n *\n * @return {Object} Action object.\n */\nfunction displayBlockRemovalPrompt(\n\tclientIds,\n\tselectPrevious,\n\tblockNamesForPrompt\n) {\n\treturn {\n\t\ttype: 'DISPLAY_BLOCK_REMOVAL_PROMPT',\n\t\tclientIds,\n\t\tselectPrevious,\n\t\tblockNamesForPrompt,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a block removal prompt must\n * be cleared, either be cause the user has confirmed or canceled the request\n * for removal.\n *\n * @return {Object} Action object.\n */\nexport function clearBlockRemovalPrompt() {\n\treturn {\n\t\ttype: 'CLEAR_BLOCK_REMOVAL_PROMPT',\n\t};\n}\n\n/**\n * Returns an action object used to set up any rules that a block editor may\n * provide in order to prevent a user from accidentally removing certain\n * blocks. These rules are then used to display a confirmation prompt to the\n * user. For instance, in the Site Editor, the Query Loop block is important\n * enough to warrant such confirmation.\n *\n * IMPORTANT: Registering rules implicitly signals to the `privateRemoveBlocks`\n * action that the editor will be responsible for displaying block removal\n * prompts and confirming deletions. This action is meant to be used by\n * component `BlockRemovalWarningModal` only.\n *\n * The data is a record whose keys are block types (e.g. 'core/query') and\n * whose values are the explanation to be shown to users (e.g. 'Query Loop\n * displays a list of posts or pages.').\n *\n * Contrast with `displayBlockRemovalPrompt`.\n *\n * @param {Record<string,string>|false} rules Block removal rules.\n * @return {Object} Action object.\n */\nexport function setBlockRemovalRules( rules = false ) {\n\treturn {\n\t\ttype: 'SET_BLOCK_REMOVAL_RULES',\n\t\trules,\n\t};\n}\n\n/**\n * Sets the client ID of the block settings menu that is currently open.\n *\n * @param {?string} clientId The block client ID.\n * @return {Object} Action object.\n */\nexport function setOpenedBlockSettingsMenu( clientId ) {\n\treturn {\n\t\ttype: 'SET_OPENED_BLOCK_SETTINGS_MENU',\n\t\tclientId,\n\t};\n}\n\nexport function setStyleOverride( id, style ) {\n\treturn {\n\t\ttype: 'SET_STYLE_OVERRIDE',\n\t\tid,\n\t\tstyle,\n\t};\n}\n\nexport function deleteStyleOverride( id ) {\n\treturn {\n\t\ttype: 'DELETE_STYLE_OVERRIDE',\n\t\tid,\n\t};\n}\n\n/**\n * A higher-order action that mark every change inside a callback as \"non-persistent\"\n * and ignore pushing to the undo history stack. It's primarily used for synchronized\n * derived updates from the block editor without affecting the undo history.\n *\n * @param {() => void} callback The synchronous callback to derive updates.\n */\nexport function syncDerivedUpdates( callback ) {\n\treturn ( { dispatch, select, registry } ) => {\n\t\tregistry.batch( () => {\n\t\t\t// Mark every change in the `callback` as non-persistent.\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SET_EXPLICIT_PERSISTENT',\n\t\t\t\tisPersistentChange: false,\n\t\t\t} );\n\t\t\tcallback();\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SET_EXPLICIT_PERSISTENT',\n\t\t\t\tisPersistentChange: undefined,\n\t\t\t} );\n\n\t\t\t// Ignore pushing undo stack for the updated blocks.\n\t\t\tconst updatedBlocks = select.getBlocks();\n\t\t\tundoIgnoreBlocks.add( updatedBlocks );\n\t\t} );\n\t};\n}\n\n/**\n * Action that sets the element that had focus when focus leaves the editor canvas.\n *\n * @param {Object} lastFocus The last focused element.\n *\n *\n * @return {Object} Action object.\n */\nexport function setLastFocus( lastFocus = null ) {\n\treturn {\n\t\ttype: 'LAST_FOCUS',\n\t\tlastFocus,\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_undoIgnore","castArray","maybeArray","Array","isArray","privateSettings","__experimentalUpdateSettings","settings","stripExperimentalSettings","reset","cleanSettings","Platform","OS","key","includes","type","hideBlockInterface","showBlockInterface","privateRemoveBlocks","clientIds","selectPrevious","forceRemove","select","dispatch","registry","length","rootClientId","getBlockRootClientId","canRemoveBlocks","rules","getBlockRemovalRules","blockNamesForPrompt","Set","queue","clientId","shift","blockName","getBlockName","add","innerBlocks","getBlockOrder","push","size","displayBlockRemovalPrompt","from","selectPreviousBlock","batch","ensureDefaultBlock","exports","count","getBlockCount","__unstableHasCustomAppender","getSettings","insertDefaultBlock","clearBlockRemovalPrompt","setBlockRemovalRules","setOpenedBlockSettingsMenu","setStyleOverride","id","style","deleteStyleOverride","syncDerivedUpdates","callback","isPersistentChange","undefined","updatedBlocks","getBlocks","undoIgnoreBlocks","setLastFocus","lastFocus","stopEditingAsBlocks","focusModeToRevert","__unstableGetTemporarilyEditingFocusModeToRevert","__unstableMarkNextChangeAsNotPersistent","updateBlockAttributes","templateLock","updateBlockListSettings","getBlockListSettings","updateSettings","focusMode","__unstableSetTemporarilyEditingAsBlocks","registerBlockBindingsSource","source","sourceName","name","sourceLabel","label","useSource","lockAttributesEditing"],"sources":["@wordpress/block-editor/src/store/private-actions.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { undoIgnoreBlocks } from './undo-ignore';\n\nconst castArray = ( maybeArray ) =>\n\tArray.isArray( maybeArray ) ? maybeArray : [ maybeArray ];\n\n/**\n * A list of private/experimental block editor settings that\n * should not become a part of the WordPress public API.\n * BlockEditorProvider will remove these settings from the\n * settings object it receives.\n *\n * @see https://github.com/WordPress/gutenberg/pull/46131\n */\nconst privateSettings = [\n\t'inserterMediaCategories',\n\t'blockInspectorAnimation',\n];\n\n/**\n * Action that updates the block editor settings and\n * conditionally preserves the experimental ones.\n *\n * @param {Object} settings Updated settings\n * @param {Object} options Options object.\n * @param {boolean} options.stripExperimentalSettings Whether to strip experimental settings.\n * @param {boolean} options.reset Whether to reset the settings.\n * @return {Object} Action object\n */\nexport function __experimentalUpdateSettings(\n\tsettings,\n\t{ stripExperimentalSettings = false, reset = false } = {}\n) {\n\tlet cleanSettings = settings;\n\t// There are no plugins in the mobile apps, so there is no\n\t// need to strip the experimental settings:\n\tif ( stripExperimentalSettings && Platform.OS === 'web' ) {\n\t\tcleanSettings = {};\n\t\tfor ( const key in settings ) {\n\t\t\tif ( ! privateSettings.includes( key ) ) {\n\t\t\t\tcleanSettings[ key ] = settings[ key ];\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\ttype: 'UPDATE_SETTINGS',\n\t\tsettings: cleanSettings,\n\t\treset,\n\t};\n}\n\n/**\n * Hides the block interface (eg. toolbar, outline, etc.)\n *\n * @return {Object} Action object.\n */\nexport function hideBlockInterface() {\n\treturn {\n\t\ttype: 'HIDE_BLOCK_INTERFACE',\n\t};\n}\n\n/**\n * Shows the block interface (eg. toolbar, outline, etc.)\n *\n * @return {Object} Action object.\n */\nexport function showBlockInterface() {\n\treturn {\n\t\ttype: 'SHOW_BLOCK_INTERFACE',\n\t};\n}\n\n/**\n * Yields action objects used in signalling that the blocks corresponding to\n * the set of specified client IDs are to be removed.\n *\n * Compared to `removeBlocks`, this private interface exposes an additional\n * parameter; see `forceRemove`.\n *\n * @param {string|string[]} clientIds Client IDs of blocks to remove.\n * @param {boolean} selectPrevious True if the previous block\n * or the immediate parent\n * (if no previous block exists)\n * should be selected\n * when a block is removed.\n * @param {boolean} forceRemove Whether to force the operation,\n * bypassing any checks for certain\n * block types.\n */\nexport const privateRemoveBlocks =\n\t( clientIds, selectPrevious = true, forceRemove = false ) =>\n\t( { select, dispatch, registry } ) => {\n\t\tif ( ! clientIds || ! clientIds.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclientIds = castArray( clientIds );\n\t\tconst rootClientId = select.getBlockRootClientId( clientIds[ 0 ] );\n\t\tconst canRemoveBlocks = select.canRemoveBlocks(\n\t\t\tclientIds,\n\t\t\trootClientId\n\t\t);\n\n\t\tif ( ! canRemoveBlocks ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In certain editing contexts, we'd like to prevent accidental removal\n\t\t// of important blocks. For example, in the site editor, the Query Loop\n\t\t// block is deemed important. In such cases, we'll ask the user for\n\t\t// confirmation that they intended to remove such block(s). However,\n\t\t// the editor instance is responsible for presenting those confirmation\n\t\t// prompts to the user. Any instance opting into removal prompts must\n\t\t// register using `setBlockRemovalRules()`.\n\t\t//\n\t\t// @see https://github.com/WordPress/gutenberg/pull/51145\n\t\tconst rules = ! forceRemove && select.getBlockRemovalRules();\n\t\tif ( rules ) {\n\t\t\tconst blockNamesForPrompt = new Set();\n\n\t\t\t// Given a list of client IDs of blocks that the user intended to\n\t\t\t// remove, perform a tree search (BFS) to find all block names\n\t\t\t// corresponding to \"important\" blocks, i.e. blocks that require a\n\t\t\t// removal prompt.\n\t\t\tconst queue = [ ...clientIds ];\n\t\t\twhile ( queue.length ) {\n\t\t\t\tconst clientId = queue.shift();\n\t\t\t\tconst blockName = select.getBlockName( clientId );\n\t\t\t\tif ( rules[ blockName ] ) {\n\t\t\t\t\tblockNamesForPrompt.add( blockName );\n\t\t\t\t}\n\t\t\t\tconst innerBlocks = select.getBlockOrder( clientId );\n\t\t\t\tqueue.push( ...innerBlocks );\n\t\t\t}\n\n\t\t\t// If any such blocks were found, trigger the removal prompt and\n\t\t\t// skip any other steps (thus postponing actual removal).\n\t\t\tif ( blockNamesForPrompt.size ) {\n\t\t\t\tdispatch(\n\t\t\t\t\tdisplayBlockRemovalPrompt(\n\t\t\t\t\t\tclientIds,\n\t\t\t\t\t\tselectPrevious,\n\t\t\t\t\t\tArray.from( blockNamesForPrompt )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif ( selectPrevious ) {\n\t\t\tdispatch.selectPreviousBlock( clientIds[ 0 ], selectPrevious );\n\t\t}\n\n\t\t// We're batching these two actions because an extra `undo/redo` step can\n\t\t// be created, based on whether we insert a default block or not.\n\t\tregistry.batch( () => {\n\t\t\tdispatch( { type: 'REMOVE_BLOCKS', clientIds } );\n\t\t\t// To avoid a focus loss when removing the last block, assure there is\n\t\t\t// always a default block if the last of the blocks have been removed.\n\t\t\tdispatch( ensureDefaultBlock() );\n\t\t} );\n\t};\n\n/**\n * Action which will insert a default block insert action if there\n * are no other blocks at the root of the editor. This action should be used\n * in actions which may result in no blocks remaining in the editor (removal,\n * replacement, etc).\n */\nexport const ensureDefaultBlock =\n\t() =>\n\t( { select, dispatch } ) => {\n\t\t// To avoid a focus loss when removing the last block, assure there is\n\t\t// always a default block if the last of the blocks have been removed.\n\t\tconst count = select.getBlockCount();\n\t\tif ( count > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there's an custom appender, don't insert default block.\n\t\t// We have to remember to manually move the focus elsewhere to\n\t\t// prevent it from being lost though.\n\t\tconst { __unstableHasCustomAppender } = select.getSettings();\n\t\tif ( __unstableHasCustomAppender ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch.insertDefaultBlock();\n\t};\n\n/**\n * Returns an action object used in signalling that a block removal prompt must\n * be displayed.\n *\n * Contrast with `setBlockRemovalRules`.\n *\n * @param {string|string[]} clientIds Client IDs of blocks to remove.\n * @param {boolean} selectPrevious True if the previous block\n * or the immediate parent\n * (if no previous block exists)\n * should be selected\n * when a block is removed.\n * @param {string[]} blockNamesForPrompt Names of the blocks that\n * triggered the need for\n * confirmation before removal.\n *\n * @return {Object} Action object.\n */\nfunction displayBlockRemovalPrompt(\n\tclientIds,\n\tselectPrevious,\n\tblockNamesForPrompt\n) {\n\treturn {\n\t\ttype: 'DISPLAY_BLOCK_REMOVAL_PROMPT',\n\t\tclientIds,\n\t\tselectPrevious,\n\t\tblockNamesForPrompt,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a block removal prompt must\n * be cleared, either be cause the user has confirmed or canceled the request\n * for removal.\n *\n * @return {Object} Action object.\n */\nexport function clearBlockRemovalPrompt() {\n\treturn {\n\t\ttype: 'CLEAR_BLOCK_REMOVAL_PROMPT',\n\t};\n}\n\n/**\n * Returns an action object used to set up any rules that a block editor may\n * provide in order to prevent a user from accidentally removing certain\n * blocks. These rules are then used to display a confirmation prompt to the\n * user. For instance, in the Site Editor, the Query Loop block is important\n * enough to warrant such confirmation.\n *\n * IMPORTANT: Registering rules implicitly signals to the `privateRemoveBlocks`\n * action that the editor will be responsible for displaying block removal\n * prompts and confirming deletions. This action is meant to be used by\n * component `BlockRemovalWarningModal` only.\n *\n * The data is a record whose keys are block types (e.g. 'core/query') and\n * whose values are the explanation to be shown to users (e.g. 'Query Loop\n * displays a list of posts or pages.').\n *\n * Contrast with `displayBlockRemovalPrompt`.\n *\n * @param {Record<string,string>|false} rules Block removal rules.\n * @return {Object} Action object.\n */\nexport function setBlockRemovalRules( rules = false ) {\n\treturn {\n\t\ttype: 'SET_BLOCK_REMOVAL_RULES',\n\t\trules,\n\t};\n}\n\n/**\n * Sets the client ID of the block settings menu that is currently open.\n *\n * @param {?string} clientId The block client ID.\n * @return {Object} Action object.\n */\nexport function setOpenedBlockSettingsMenu( clientId ) {\n\treturn {\n\t\ttype: 'SET_OPENED_BLOCK_SETTINGS_MENU',\n\t\tclientId,\n\t};\n}\n\nexport function setStyleOverride( id, style ) {\n\treturn {\n\t\ttype: 'SET_STYLE_OVERRIDE',\n\t\tid,\n\t\tstyle,\n\t};\n}\n\nexport function deleteStyleOverride( id ) {\n\treturn {\n\t\ttype: 'DELETE_STYLE_OVERRIDE',\n\t\tid,\n\t};\n}\n\n/**\n * A higher-order action that mark every change inside a callback as \"non-persistent\"\n * and ignore pushing to the undo history stack. It's primarily used for synchronized\n * derived updates from the block editor without affecting the undo history.\n *\n * @param {() => void} callback The synchronous callback to derive updates.\n */\nexport function syncDerivedUpdates( callback ) {\n\treturn ( { dispatch, select, registry } ) => {\n\t\tregistry.batch( () => {\n\t\t\t// Mark every change in the `callback` as non-persistent.\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SET_EXPLICIT_PERSISTENT',\n\t\t\t\tisPersistentChange: false,\n\t\t\t} );\n\t\t\tcallback();\n\t\t\tdispatch( {\n\t\t\t\ttype: 'SET_EXPLICIT_PERSISTENT',\n\t\t\t\tisPersistentChange: undefined,\n\t\t\t} );\n\n\t\t\t// Ignore pushing undo stack for the updated blocks.\n\t\t\tconst updatedBlocks = select.getBlocks();\n\t\t\tundoIgnoreBlocks.add( updatedBlocks );\n\t\t} );\n\t};\n}\n\n/**\n * Action that sets the element that had focus when focus leaves the editor canvas.\n *\n * @param {Object} lastFocus The last focused element.\n *\n *\n * @return {Object} Action object.\n */\nexport function setLastFocus( lastFocus = null ) {\n\treturn {\n\t\ttype: 'LAST_FOCUS',\n\t\tlastFocus,\n\t};\n}\n\n/**\n * Action that stops temporarily editing as blocks.\n *\n * @param {string} clientId The block's clientId.\n */\nexport function stopEditingAsBlocks( clientId ) {\n\treturn ( { select, dispatch } ) => {\n\t\tconst focusModeToRevert =\n\t\t\tselect.__unstableGetTemporarilyEditingFocusModeToRevert();\n\t\tdispatch.__unstableMarkNextChangeAsNotPersistent();\n\t\tdispatch.updateBlockAttributes( clientId, {\n\t\t\ttemplateLock: 'contentOnly',\n\t\t} );\n\t\tdispatch.updateBlockListSettings( clientId, {\n\t\t\t...select.getBlockListSettings( clientId ),\n\t\t\ttemplateLock: 'contentOnly',\n\t\t} );\n\t\tdispatch.updateSettings( { focusMode: focusModeToRevert } );\n\t\tdispatch.__unstableSetTemporarilyEditingAsBlocks();\n\t};\n}\n\nexport function registerBlockBindingsSource( source ) {\n\treturn {\n\t\ttype: 'REGISTER_BLOCK_BINDINGS_SOURCE',\n\t\tsourceName: source.name,\n\t\tsourceLabel: source.label,\n\t\tuseSource: source.useSource,\n\t\tlockAttributesEditing: source.lockAttributesEditing,\n\t};\n}\n"],"mappings":"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"}
@@ -4,8 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ exports.getAllBlockBindingsSources = getAllBlockBindingsSources;
8
+ exports.getAllPatterns = void 0;
9
+ exports.getBlockBindingsSource = getBlockBindingsSource;
7
10
  exports.getBlockRemovalRules = getBlockRemovalRules;
8
- exports.getInserterMediaCategories = exports.getEnabledClientIdsTree = exports.getEnabledBlockParents = void 0;
11
+ exports.getEnabledClientIdsTree = exports.getEnabledBlockParents = void 0;
12
+ exports.getFetchedPatterns = getFetchedPatterns;
13
+ exports.getInserterMediaCategories = void 0;
9
14
  exports.getLastFocus = getLastFocus;
10
15
  exports.getLastInsertedBlocksClientIds = getLastInsertedBlocksClientIds;
11
16
  exports.getOpenedBlockSettingsMenu = getOpenedBlockSettingsMenu;
@@ -16,12 +21,20 @@ exports.hasAllowedPatterns = void 0;
16
21
  exports.isBlockInterfaceHidden = isBlockInterfaceHidden;
17
22
  exports.isBlockSubtreeDisabled = void 0;
18
23
  var _rememo = _interopRequireDefault(require("rememo"));
24
+ var _data = require("@wordpress/data");
19
25
  var _selectors = require("./selectors");
20
26
  var _utils = require("./utils");
27
+ var _utils2 = require("../components/inserter/block-patterns-tab/utils");
28
+ var _ = require("./");
29
+ var _lockUnlock = require("../lock-unlock");
21
30
  /**
22
31
  * External dependencies
23
32
  */
24
33
 
34
+ /**
35
+ * WordPress dependencies
36
+ */
37
+
25
38
  /**
26
39
  * Internal dependencies
27
40
  */
@@ -197,6 +210,10 @@ const getInserterMediaCategories = (0, _rememo.default)(state => {
197
210
  return Object.values(allowedMimeTypes).some(mimeType => mimeType.startsWith(`${category.mediaType}/`));
198
211
  });
199
212
  }, state => [state.settings.inserterMediaCategories, state.settings.allowedMimeTypes, state.settings.enableOpenverseMediaCategory, state.registeredInserterMediaCategories]);
213
+ exports.getInserterMediaCategories = getInserterMediaCategories;
214
+ function getFetchedPatterns(state) {
215
+ return state.blockPatterns;
216
+ }
200
217
 
201
218
  /**
202
219
  * Returns whether there is at least one allowed pattern for inner blocks children.
@@ -207,14 +224,16 @@ const getInserterMediaCategories = (0, _rememo.default)(state => {
207
224
  *
208
225
  * @return {boolean} If there is at least one allowed pattern.
209
226
  */
210
- exports.getInserterMediaCategories = getInserterMediaCategories;
211
- const hasAllowedPatterns = (0, _rememo.default)((state, rootClientId = null) => {
212
- const patterns = state.settings.__experimentalBlockPatterns;
213
- const userPatterns = (0, _utils.getUserPatterns)(state);
227
+ const hasAllowedPatterns = (0, _data.createRegistrySelector)(select => (0, _rememo.default)((state, rootClientId = null) => {
228
+ const {
229
+ getAllPatterns,
230
+ __experimentalGetParsedPattern
231
+ } = (0, _lockUnlock.unlock)(select(_.store));
232
+ const patterns = getAllPatterns();
214
233
  const {
215
234
  allowedBlockTypes
216
235
  } = (0, _selectors.getSettings)(state);
217
- return [...userPatterns, ...patterns].some(({
236
+ return patterns.some(({
218
237
  name,
219
238
  inserter = true
220
239
  }) => {
@@ -223,12 +242,38 @@ const hasAllowedPatterns = (0, _rememo.default)((state, rootClientId = null) =>
223
242
  }
224
243
  const {
225
244
  blocks
226
- } = (0, _selectors.__experimentalGetParsedPattern)(state, name);
245
+ } = __experimentalGetParsedPattern(name);
227
246
  return (0, _utils.checkAllowListRecursive)(blocks, allowedBlockTypes) && blocks.every(({
228
247
  name: blockName
229
248
  }) => (0, _selectors.canInsertBlockType)(state, blockName, rootClientId));
230
249
  });
231
- }, (state, rootClientId) => [..._selectors.__experimentalGetAllowedPatterns.getDependants(state, rootClientId)]);
250
+ }, (state, rootClientId) => [(0, _utils.getAllPatternsDependants)(state), state.settings.allowedBlockTypes, state.settings.templateLock, state.blockListSettings[rootClientId], state.blocks.byClientId.get(rootClientId)]));
251
+ exports.hasAllowedPatterns = hasAllowedPatterns;
252
+ const getAllPatterns = (0, _data.createRegistrySelector)(select => (0, _rememo.default)(state => {
253
+ // This setting is left for back compat.
254
+ const {
255
+ __experimentalBlockPatterns = [],
256
+ __experimentalUserPatternCategories = [],
257
+ __experimentalReusableBlocks = []
258
+ } = state.settings;
259
+ const userPatterns = (__experimentalReusableBlocks !== null && __experimentalReusableBlocks !== void 0 ? __experimentalReusableBlocks : []).map(userPattern => {
260
+ return {
261
+ name: `core/block/${userPattern.id}`,
262
+ id: userPattern.id,
263
+ type: _utils2.INSERTER_PATTERN_TYPES.user,
264
+ title: userPattern.title.raw,
265
+ categories: userPattern.wp_pattern_category.map(catId => {
266
+ const category = (__experimentalUserPatternCategories !== null && __experimentalUserPatternCategories !== void 0 ? __experimentalUserPatternCategories : []).find(({
267
+ id
268
+ }) => id === catId);
269
+ return category ? category.slug : catId;
270
+ }),
271
+ content: userPattern.content.raw,
272
+ syncStatus: userPattern.wp_pattern_sync_status
273
+ };
274
+ });
275
+ return [...userPatterns, ...__experimentalBlockPatterns, ...(0, _lockUnlock.unlock)(select(_.store)).getFetchedPatterns()].filter((x, index, arr) => index === arr.findIndex(y => x.name === y.name));
276
+ }, _utils.getAllPatternsDependants));
232
277
 
233
278
  /**
234
279
  * Returns the element of the last element that had focus when focus left the editor canvas.
@@ -237,8 +282,14 @@ const hasAllowedPatterns = (0, _rememo.default)((state, rootClientId = null) =>
237
282
  *
238
283
  * @return {Object} Element.
239
284
  */
240
- exports.hasAllowedPatterns = hasAllowedPatterns;
285
+ exports.getAllPatterns = getAllPatterns;
241
286
  function getLastFocus(state) {
242
287
  return state.lastFocus;
243
288
  }
289
+ function getAllBlockBindingsSources(state) {
290
+ return state.blockBindingsSources;
291
+ }
292
+ function getBlockBindingsSource(state, sourceName) {
293
+ return state.blockBindingsSources[sourceName];
294
+ }
244
295
  //# sourceMappingURL=private-selectors.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_rememo","_interopRequireDefault","require","_selectors","_utils","isBlockInterfaceHidden","state","getLastInsertedBlocksClientIds","lastBlockInserted","clientIds","isBlockSubtreeDisabled","createSelector","clientId","isChildSubtreeDisabled","childClientId","getBlockEditingMode","getBlockOrder","every","blocks","parents","order","blockEditingModes","blockListSettings","exports","getEnabledClientIdsTree","rootClientId","flatMap","innerBlocks","settings","templateLock","getEnabledBlockParents","ascending","getBlockParents","filter","parent","getRemovalPromptData","removalPromptData","getBlockRemovalRules","blockRemovalRules","getOpenedBlockSettingsMenu","openedBlockSettingsMenu","getStyleOverrides","styleOverrides","getRegisteredInserterMediaCategories","registeredInserterMediaCategories","getInserterMediaCategories","inserterMediaCategories","allowedMimeTypes","enableOpenverseMediaCategory","length","coreInserterMediaCategoriesNames","map","name","mergedCategories","includes","category","Object","values","some","mimeType","startsWith","mediaType","hasAllowedPatterns","patterns","__experimentalBlockPatterns","userPatterns","getUserPatterns","allowedBlockTypes","getSettings","inserter","__experimentalGetParsedPattern","checkAllowListRecursive","blockName","canInsertBlockType","__experimentalGetAllowedPatterns","getDependants","getLastFocus","lastFocus"],"sources":["@wordpress/block-editor/src/store/private-selectors.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetBlockOrder,\n\tgetBlockParents,\n\tgetBlockEditingMode,\n\tgetSettings,\n\t__experimentalGetParsedPattern,\n\tcanInsertBlockType,\n\t__experimentalGetAllowedPatterns,\n} from './selectors';\nimport { getUserPatterns, checkAllowListRecursive } from './utils';\n\n/**\n * Returns true if the block interface is hidden, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the block toolbar is hidden.\n */\nexport function isBlockInterfaceHidden( state ) {\n\treturn state.isBlockInterfaceHidden;\n}\n\n/**\n * Gets the client ids of the last inserted blocks.\n *\n * @param {Object} state Global application state.\n * @return {Array|undefined} Client Ids of the last inserted block(s).\n */\nexport function getLastInsertedBlocksClientIds( state ) {\n\treturn state?.lastBlockInserted?.clientIds;\n}\n\n/**\n * Returns true if the block with the given client ID and all of its descendants\n * have an editing mode of 'disabled', or false otherwise.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n *\n * @return {boolean} Whether the block and its descendants are disabled.\n */\nexport const isBlockSubtreeDisabled = createSelector(\n\t( state, clientId ) => {\n\t\tconst isChildSubtreeDisabled = ( childClientId ) => {\n\t\t\treturn (\n\t\t\t\tgetBlockEditingMode( state, childClientId ) === 'disabled' &&\n\t\t\t\tgetBlockOrder( state, childClientId ).every(\n\t\t\t\t\tisChildSubtreeDisabled\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\treturn (\n\t\t\tgetBlockEditingMode( state, clientId ) === 'disabled' &&\n\t\t\tgetBlockOrder( state, clientId ).every( isChildSubtreeDisabled )\n\t\t);\n\t},\n\t( state ) => [\n\t\tstate.blocks.parents,\n\t\tstate.blocks.order,\n\t\tstate.blockEditingModes,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Returns a tree of block objects with only clientID and innerBlocks set.\n * Blocks with a 'disabled' editing mode are not included.\n *\n * @param {Object} state Global application state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Object[]} Tree of block objects with only clientID and innerBlocks set.\n */\nexport const getEnabledClientIdsTree = createSelector(\n\t( state, rootClientId = '' ) => {\n\t\treturn getBlockOrder( state, rootClientId ).flatMap( ( clientId ) => {\n\t\t\tif ( getBlockEditingMode( state, clientId ) !== 'disabled' ) {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tinnerBlocks: getEnabledClientIdsTree( state, clientId ),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn getEnabledClientIdsTree( state, clientId );\n\t\t} );\n\t},\n\t( state ) => [\n\t\tstate.blocks.order,\n\t\tstate.blockEditingModes,\n\t\tstate.settings.templateLock,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Returns a list of a given block's ancestors, from top to bottom. Blocks with\n * a 'disabled' editing mode are excluded.\n *\n * @see getBlockParents\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n * @param {boolean} ascending Order results from bottom to top (true) or top\n * to bottom (false).\n */\nexport const getEnabledBlockParents = createSelector(\n\t( state, clientId, ascending = false ) => {\n\t\treturn getBlockParents( state, clientId, ascending ).filter(\n\t\t\t( parent ) => getBlockEditingMode( state, parent ) !== 'disabled'\n\t\t);\n\t},\n\t( state ) => [\n\t\tstate.blocks.parents,\n\t\tstate.blockEditingModes,\n\t\tstate.settings.templateLock,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Selector that returns the data needed to display a prompt when certain\n * blocks are removed, or `false` if no such prompt is requested.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object|false} Data for removal prompt display, if any.\n */\nexport function getRemovalPromptData( state ) {\n\treturn state.removalPromptData;\n}\n\n/**\n * Returns true if removal prompt exists, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether removal prompt exists.\n */\nexport function getBlockRemovalRules( state ) {\n\treturn state.blockRemovalRules;\n}\n\n/**\n * Returns the client ID of the block settings menu that is currently open.\n *\n * @param {Object} state Global application state.\n * @return {string|null} The client ID of the block menu that is currently open.\n */\nexport function getOpenedBlockSettingsMenu( state ) {\n\treturn state.openedBlockSettingsMenu;\n}\n\n/**\n * Returns all style overrides, intended to be merged with global editor styles.\n *\n * @param {Object} state Global application state.\n *\n * @return {Map} A map of style IDs to style overrides.\n */\nexport function getStyleOverrides( state ) {\n\treturn state.styleOverrides;\n}\n\n/** @typedef {import('./actions').InserterMediaCategory} InserterMediaCategory */\n/**\n * Returns the registered inserter media categories through the public API.\n *\n * @param {Object} state Editor state.\n *\n * @return {InserterMediaCategory[]} Inserter media categories.\n */\nexport function getRegisteredInserterMediaCategories( state ) {\n\treturn state.registeredInserterMediaCategories;\n}\n\n/**\n * Returns an array containing the allowed inserter media categories.\n * It merges the registered media categories from extenders with the\n * core ones. It also takes into account the allowed `mime_types`, which\n * can be altered by `upload_mimes` filter and restrict some of them.\n *\n * @param {Object} state Global application state.\n *\n * @return {InserterMediaCategory[]} Client IDs of descendants.\n */\nexport const getInserterMediaCategories = createSelector(\n\t( state ) => {\n\t\tconst {\n\t\t\tsettings: {\n\t\t\t\tinserterMediaCategories,\n\t\t\t\tallowedMimeTypes,\n\t\t\t\tenableOpenverseMediaCategory,\n\t\t\t},\n\t\t\tregisteredInserterMediaCategories,\n\t\t} = state;\n\t\t// The allowed `mime_types` can be altered by `upload_mimes` filter and restrict\n\t\t// some of them. In this case we shouldn't add the category to the available media\n\t\t// categories list in the inserter.\n\t\tif (\n\t\t\t( ! inserterMediaCategories &&\n\t\t\t\t! registeredInserterMediaCategories.length ) ||\n\t\t\t! allowedMimeTypes\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst coreInserterMediaCategoriesNames =\n\t\t\tinserterMediaCategories?.map( ( { name } ) => name ) || [];\n\t\tconst mergedCategories = [\n\t\t\t...( inserterMediaCategories || [] ),\n\t\t\t...( registeredInserterMediaCategories || [] ).filter(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\t! coreInserterMediaCategoriesNames.includes( name )\n\t\t\t),\n\t\t];\n\t\treturn mergedCategories.filter( ( category ) => {\n\t\t\t// Check if Openverse category is enabled.\n\t\t\tif (\n\t\t\t\t! enableOpenverseMediaCategory &&\n\t\t\t\tcategory.name === 'openverse'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn Object.values( allowedMimeTypes ).some( ( mimeType ) =>\n\t\t\t\tmimeType.startsWith( `${ category.mediaType }/` )\n\t\t\t);\n\t\t} );\n\t},\n\t( state ) => [\n\t\tstate.settings.inserterMediaCategories,\n\t\tstate.settings.allowedMimeTypes,\n\t\tstate.settings.enableOpenverseMediaCategory,\n\t\tstate.registeredInserterMediaCategories,\n\t]\n);\n\n/**\n * Returns whether there is at least one allowed pattern for inner blocks children.\n * This is useful for deferring the parsing of all patterns until needed.\n *\n * @param {Object} state Editor state.\n * @param {string} [rootClientId=null] Target root client ID.\n *\n * @return {boolean} If there is at least one allowed pattern.\n */\nexport const hasAllowedPatterns = createSelector(\n\t( state, rootClientId = null ) => {\n\t\tconst patterns = state.settings.__experimentalBlockPatterns;\n\t\tconst userPatterns = getUserPatterns( state );\n\t\tconst { allowedBlockTypes } = getSettings( state );\n\t\treturn [ ...userPatterns, ...patterns ].some(\n\t\t\t( { name, inserter = true } ) => {\n\t\t\t\tif ( ! inserter ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst { blocks } = __experimentalGetParsedPattern(\n\t\t\t\t\tstate,\n\t\t\t\t\tname\n\t\t\t\t);\n\t\t\t\treturn (\n\t\t\t\t\tcheckAllowListRecursive( blocks, allowedBlockTypes ) &&\n\t\t\t\t\tblocks.every( ( { name: blockName } ) =>\n\t\t\t\t\t\tcanInsertBlockType( state, blockName, rootClientId )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t},\n\t( state, rootClientId ) => [\n\t\t...__experimentalGetAllowedPatterns.getDependants(\n\t\t\tstate,\n\t\t\trootClientId\n\t\t),\n\t]\n);\n\n/**\n * Returns the element of the last element that had focus when focus left the editor canvas.\n *\n * @param {Object} state Block editor state.\n *\n * @return {Object} Element.\n */\nexport function getLastFocus( state ) {\n\treturn state.lastFocus;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_rememo","_interopRequireDefault","require","_data","_selectors","_utils","_utils2","_","_lockUnlock","isBlockInterfaceHidden","state","getLastInsertedBlocksClientIds","lastBlockInserted","clientIds","isBlockSubtreeDisabled","createSelector","clientId","isChildSubtreeDisabled","childClientId","getBlockEditingMode","getBlockOrder","every","blocks","parents","order","blockEditingModes","blockListSettings","exports","getEnabledClientIdsTree","rootClientId","flatMap","innerBlocks","settings","templateLock","getEnabledBlockParents","ascending","getBlockParents","filter","parent","getRemovalPromptData","removalPromptData","getBlockRemovalRules","blockRemovalRules","getOpenedBlockSettingsMenu","openedBlockSettingsMenu","getStyleOverrides","styleOverrides","getRegisteredInserterMediaCategories","registeredInserterMediaCategories","getInserterMediaCategories","inserterMediaCategories","allowedMimeTypes","enableOpenverseMediaCategory","length","coreInserterMediaCategoriesNames","map","name","mergedCategories","includes","category","Object","values","some","mimeType","startsWith","mediaType","getFetchedPatterns","blockPatterns","hasAllowedPatterns","createRegistrySelector","select","getAllPatterns","__experimentalGetParsedPattern","unlock","store","patterns","allowedBlockTypes","getSettings","inserter","checkAllowListRecursive","blockName","canInsertBlockType","getAllPatternsDependants","byClientId","get","__experimentalBlockPatterns","__experimentalUserPatternCategories","__experimentalReusableBlocks","userPatterns","userPattern","id","type","INSERTER_PATTERN_TYPES","user","title","raw","categories","wp_pattern_category","catId","find","slug","content","syncStatus","wp_pattern_sync_status","x","index","arr","findIndex","y","getLastFocus","lastFocus","getAllBlockBindingsSources","blockBindingsSources","getBlockBindingsSource","sourceName"],"sources":["@wordpress/block-editor/src/store/private-selectors.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\n\n/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetBlockOrder,\n\tgetBlockParents,\n\tgetBlockEditingMode,\n\tgetSettings,\n\tcanInsertBlockType,\n} from './selectors';\nimport { checkAllowListRecursive, getAllPatternsDependants } from './utils';\nimport { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';\nimport { store } from './';\nimport { unlock } from '../lock-unlock';\n\n/**\n * Returns true if the block interface is hidden, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the block toolbar is hidden.\n */\nexport function isBlockInterfaceHidden( state ) {\n\treturn state.isBlockInterfaceHidden;\n}\n\n/**\n * Gets the client ids of the last inserted blocks.\n *\n * @param {Object} state Global application state.\n * @return {Array|undefined} Client Ids of the last inserted block(s).\n */\nexport function getLastInsertedBlocksClientIds( state ) {\n\treturn state?.lastBlockInserted?.clientIds;\n}\n\n/**\n * Returns true if the block with the given client ID and all of its descendants\n * have an editing mode of 'disabled', or false otherwise.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n *\n * @return {boolean} Whether the block and its descendants are disabled.\n */\nexport const isBlockSubtreeDisabled = createSelector(\n\t( state, clientId ) => {\n\t\tconst isChildSubtreeDisabled = ( childClientId ) => {\n\t\t\treturn (\n\t\t\t\tgetBlockEditingMode( state, childClientId ) === 'disabled' &&\n\t\t\t\tgetBlockOrder( state, childClientId ).every(\n\t\t\t\t\tisChildSubtreeDisabled\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\treturn (\n\t\t\tgetBlockEditingMode( state, clientId ) === 'disabled' &&\n\t\t\tgetBlockOrder( state, clientId ).every( isChildSubtreeDisabled )\n\t\t);\n\t},\n\t( state ) => [\n\t\tstate.blocks.parents,\n\t\tstate.blocks.order,\n\t\tstate.blockEditingModes,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Returns a tree of block objects with only clientID and innerBlocks set.\n * Blocks with a 'disabled' editing mode are not included.\n *\n * @param {Object} state Global application state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Object[]} Tree of block objects with only clientID and innerBlocks set.\n */\nexport const getEnabledClientIdsTree = createSelector(\n\t( state, rootClientId = '' ) => {\n\t\treturn getBlockOrder( state, rootClientId ).flatMap( ( clientId ) => {\n\t\t\tif ( getBlockEditingMode( state, clientId ) !== 'disabled' ) {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tinnerBlocks: getEnabledClientIdsTree( state, clientId ),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn getEnabledClientIdsTree( state, clientId );\n\t\t} );\n\t},\n\t( state ) => [\n\t\tstate.blocks.order,\n\t\tstate.blockEditingModes,\n\t\tstate.settings.templateLock,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Returns a list of a given block's ancestors, from top to bottom. Blocks with\n * a 'disabled' editing mode are excluded.\n *\n * @see getBlockParents\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n * @param {boolean} ascending Order results from bottom to top (true) or top\n * to bottom (false).\n */\nexport const getEnabledBlockParents = createSelector(\n\t( state, clientId, ascending = false ) => {\n\t\treturn getBlockParents( state, clientId, ascending ).filter(\n\t\t\t( parent ) => getBlockEditingMode( state, parent ) !== 'disabled'\n\t\t);\n\t},\n\t( state ) => [\n\t\tstate.blocks.parents,\n\t\tstate.blockEditingModes,\n\t\tstate.settings.templateLock,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Selector that returns the data needed to display a prompt when certain\n * blocks are removed, or `false` if no such prompt is requested.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object|false} Data for removal prompt display, if any.\n */\nexport function getRemovalPromptData( state ) {\n\treturn state.removalPromptData;\n}\n\n/**\n * Returns true if removal prompt exists, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether removal prompt exists.\n */\nexport function getBlockRemovalRules( state ) {\n\treturn state.blockRemovalRules;\n}\n\n/**\n * Returns the client ID of the block settings menu that is currently open.\n *\n * @param {Object} state Global application state.\n * @return {string|null} The client ID of the block menu that is currently open.\n */\nexport function getOpenedBlockSettingsMenu( state ) {\n\treturn state.openedBlockSettingsMenu;\n}\n\n/**\n * Returns all style overrides, intended to be merged with global editor styles.\n *\n * @param {Object} state Global application state.\n *\n * @return {Map} A map of style IDs to style overrides.\n */\nexport function getStyleOverrides( state ) {\n\treturn state.styleOverrides;\n}\n\n/** @typedef {import('./actions').InserterMediaCategory} InserterMediaCategory */\n/**\n * Returns the registered inserter media categories through the public API.\n *\n * @param {Object} state Editor state.\n *\n * @return {InserterMediaCategory[]} Inserter media categories.\n */\nexport function getRegisteredInserterMediaCategories( state ) {\n\treturn state.registeredInserterMediaCategories;\n}\n\n/**\n * Returns an array containing the allowed inserter media categories.\n * It merges the registered media categories from extenders with the\n * core ones. It also takes into account the allowed `mime_types`, which\n * can be altered by `upload_mimes` filter and restrict some of them.\n *\n * @param {Object} state Global application state.\n *\n * @return {InserterMediaCategory[]} Client IDs of descendants.\n */\nexport const getInserterMediaCategories = createSelector(\n\t( state ) => {\n\t\tconst {\n\t\t\tsettings: {\n\t\t\t\tinserterMediaCategories,\n\t\t\t\tallowedMimeTypes,\n\t\t\t\tenableOpenverseMediaCategory,\n\t\t\t},\n\t\t\tregisteredInserterMediaCategories,\n\t\t} = state;\n\t\t// The allowed `mime_types` can be altered by `upload_mimes` filter and restrict\n\t\t// some of them. In this case we shouldn't add the category to the available media\n\t\t// categories list in the inserter.\n\t\tif (\n\t\t\t( ! inserterMediaCategories &&\n\t\t\t\t! registeredInserterMediaCategories.length ) ||\n\t\t\t! allowedMimeTypes\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst coreInserterMediaCategoriesNames =\n\t\t\tinserterMediaCategories?.map( ( { name } ) => name ) || [];\n\t\tconst mergedCategories = [\n\t\t\t...( inserterMediaCategories || [] ),\n\t\t\t...( registeredInserterMediaCategories || [] ).filter(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\t! coreInserterMediaCategoriesNames.includes( name )\n\t\t\t),\n\t\t];\n\t\treturn mergedCategories.filter( ( category ) => {\n\t\t\t// Check if Openverse category is enabled.\n\t\t\tif (\n\t\t\t\t! enableOpenverseMediaCategory &&\n\t\t\t\tcategory.name === 'openverse'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn Object.values( allowedMimeTypes ).some( ( mimeType ) =>\n\t\t\t\tmimeType.startsWith( `${ category.mediaType }/` )\n\t\t\t);\n\t\t} );\n\t},\n\t( state ) => [\n\t\tstate.settings.inserterMediaCategories,\n\t\tstate.settings.allowedMimeTypes,\n\t\tstate.settings.enableOpenverseMediaCategory,\n\t\tstate.registeredInserterMediaCategories,\n\t]\n);\n\nexport function getFetchedPatterns( state ) {\n\treturn state.blockPatterns;\n}\n\n/**\n * Returns whether there is at least one allowed pattern for inner blocks children.\n * This is useful for deferring the parsing of all patterns until needed.\n *\n * @param {Object} state Editor state.\n * @param {string} [rootClientId=null] Target root client ID.\n *\n * @return {boolean} If there is at least one allowed pattern.\n */\nexport const hasAllowedPatterns = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, rootClientId = null ) => {\n\t\t\tconst { getAllPatterns, __experimentalGetParsedPattern } = unlock(\n\t\t\t\tselect( store )\n\t\t\t);\n\t\t\tconst patterns = getAllPatterns();\n\t\t\tconst { allowedBlockTypes } = getSettings( state );\n\t\t\treturn patterns.some( ( { name, inserter = true } ) => {\n\t\t\t\tif ( ! inserter ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst { blocks } = __experimentalGetParsedPattern( name );\n\t\t\t\treturn (\n\t\t\t\t\tcheckAllowListRecursive( blocks, allowedBlockTypes ) &&\n\t\t\t\t\tblocks.every( ( { name: blockName } ) =>\n\t\t\t\t\t\tcanInsertBlockType( state, blockName, rootClientId )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} );\n\t\t},\n\t\t( state, rootClientId ) => [\n\t\t\tgetAllPatternsDependants( state ),\n\t\t\tstate.settings.allowedBlockTypes,\n\t\t\tstate.settings.templateLock,\n\t\t\tstate.blockListSettings[ rootClientId ],\n\t\t\tstate.blocks.byClientId.get( rootClientId ),\n\t\t]\n\t)\n);\n\nexport const getAllPatterns = createRegistrySelector( ( select ) =>\n\tcreateSelector( ( state ) => {\n\t\t// This setting is left for back compat.\n\t\tconst {\n\t\t\t__experimentalBlockPatterns = [],\n\t\t\t__experimentalUserPatternCategories = [],\n\t\t\t__experimentalReusableBlocks = [],\n\t\t} = state.settings;\n\t\tconst userPatterns = ( __experimentalReusableBlocks ?? [] ).map(\n\t\t\t( userPattern ) => {\n\t\t\t\treturn {\n\t\t\t\t\tname: `core/block/${ userPattern.id }`,\n\t\t\t\t\tid: userPattern.id,\n\t\t\t\t\ttype: INSERTER_PATTERN_TYPES.user,\n\t\t\t\t\ttitle: userPattern.title.raw,\n\t\t\t\t\tcategories: userPattern.wp_pattern_category.map(\n\t\t\t\t\t\t( catId ) => {\n\t\t\t\t\t\t\tconst category = (\n\t\t\t\t\t\t\t\t__experimentalUserPatternCategories ?? []\n\t\t\t\t\t\t\t).find( ( { id } ) => id === catId );\n\t\t\t\t\t\t\treturn category ? category.slug : catId;\n\t\t\t\t\t\t}\n\t\t\t\t\t),\n\t\t\t\t\tcontent: userPattern.content.raw,\n\t\t\t\t\tsyncStatus: userPattern.wp_pattern_sync_status,\n\t\t\t\t};\n\t\t\t}\n\t\t);\n\t\treturn [\n\t\t\t...userPatterns,\n\t\t\t...__experimentalBlockPatterns,\n\t\t\t...unlock( select( store ) ).getFetchedPatterns(),\n\t\t].filter(\n\t\t\t( x, index, arr ) =>\n\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t);\n\t}, getAllPatternsDependants )\n);\n\n/**\n * Returns the element of the last element that had focus when focus left the editor canvas.\n *\n * @param {Object} state Block editor state.\n *\n * @return {Object} Element.\n */\nexport function getLastFocus( state ) {\n\treturn state.lastFocus;\n}\n\nexport function getAllBlockBindingsSources( state ) {\n\treturn state.blockBindingsSources;\n}\n\nexport function getBlockBindingsSource( state, sourceName ) {\n\treturn state.blockBindingsSources[ sourceName ];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAGA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,UAAA,GAAAF,OAAA;AAOA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,CAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAvBA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,sBAAsBA,CAAEC,KAAK,EAAG;EAC/C,OAAOA,KAAK,CAACD,sBAAsB;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,8BAA8BA,CAAED,KAAK,EAAG;EACvD,OAAOA,KAAK,EAAEE,iBAAiB,EAAEC,SAAS;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,sBAAsB,GAAG,IAAAC,eAAc,EACnD,CAAEL,KAAK,EAAEM,QAAQ,KAAM;EACtB,MAAMC,sBAAsB,GAAKC,aAAa,IAAM;IACnD,OACC,IAAAC,8BAAmB,EAAET,KAAK,EAAEQ,aAAc,CAAC,KAAK,UAAU,IAC1D,IAAAE,wBAAa,EAAEV,KAAK,EAAEQ,aAAc,CAAC,CAACG,KAAK,CAC1CJ,sBACD,CAAC;EAEH,CAAC;EACD,OACC,IAAAE,8BAAmB,EAAET,KAAK,EAAEM,QAAS,CAAC,KAAK,UAAU,IACrD,IAAAI,wBAAa,EAAEV,KAAK,EAAEM,QAAS,CAAC,CAACK,KAAK,CAAEJ,sBAAuB,CAAC;AAElE,CAAC,EACCP,KAAK,IAAM,CACZA,KAAK,CAACY,MAAM,CAACC,OAAO,EACpBb,KAAK,CAACY,MAAM,CAACE,KAAK,EAClBd,KAAK,CAACe,iBAAiB,EACvBf,KAAK,CAACgB,iBAAiB,CAEzB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARAC,OAAA,CAAAb,sBAAA,GAAAA,sBAAA;AASO,MAAMc,uBAAuB,GAAG,IAAAb,eAAc,EACpD,CAAEL,KAAK,EAAEmB,YAAY,GAAG,EAAE,KAAM;EAC/B,OAAO,IAAAT,wBAAa,EAAEV,KAAK,EAAEmB,YAAa,CAAC,CAACC,OAAO,CAAId,QAAQ,IAAM;IACpE,IAAK,IAAAG,8BAAmB,EAAET,KAAK,EAAEM,QAAS,CAAC,KAAK,UAAU,EAAG;MAC5D,OAAO,CACN;QACCA,QAAQ;QACRe,WAAW,EAAEH,uBAAuB,CAAElB,KAAK,EAAEM,QAAS;MACvD,CAAC,CACD;IACF;IACA,OAAOY,uBAAuB,CAAElB,KAAK,EAAEM,QAAS,CAAC;EAClD,CAAE,CAAC;AACJ,CAAC,EACCN,KAAK,IAAM,CACZA,KAAK,CAACY,MAAM,CAACE,KAAK,EAClBd,KAAK,CAACe,iBAAiB,EACvBf,KAAK,CAACsB,QAAQ,CAACC,YAAY,EAC3BvB,KAAK,CAACgB,iBAAiB,CAEzB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVAC,OAAA,CAAAC,uBAAA,GAAAA,uBAAA;AAWO,MAAMM,sBAAsB,GAAG,IAAAnB,eAAc,EACnD,CAAEL,KAAK,EAAEM,QAAQ,EAAEmB,SAAS,GAAG,KAAK,KAAM;EACzC,OAAO,IAAAC,0BAAe,EAAE1B,KAAK,EAAEM,QAAQ,EAAEmB,SAAU,CAAC,CAACE,MAAM,CACxDC,MAAM,IAAM,IAAAnB,8BAAmB,EAAET,KAAK,EAAE4B,MAAO,CAAC,KAAK,UACxD,CAAC;AACF,CAAC,EACC5B,KAAK,IAAM,CACZA,KAAK,CAACY,MAAM,CAACC,OAAO,EACpBb,KAAK,CAACe,iBAAiB,EACvBf,KAAK,CAACsB,QAAQ,CAACC,YAAY,EAC3BvB,KAAK,CAACgB,iBAAiB,CAEzB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPAC,OAAA,CAAAO,sBAAA,GAAAA,sBAAA;AAQO,SAASK,oBAAoBA,CAAE7B,KAAK,EAAG;EAC7C,OAAOA,KAAK,CAAC8B,iBAAiB;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAAE/B,KAAK,EAAG;EAC7C,OAAOA,KAAK,CAACgC,iBAAiB;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,0BAA0BA,CAAEjC,KAAK,EAAG;EACnD,OAAOA,KAAK,CAACkC,uBAAuB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAAEnC,KAAK,EAAG;EAC1C,OAAOA,KAAK,CAACoC,cAAc;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,oCAAoCA,CAAErC,KAAK,EAAG;EAC7D,OAAOA,KAAK,CAACsC,iCAAiC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,0BAA0B,GAAG,IAAAlC,eAAc,EACrDL,KAAK,IAAM;EACZ,MAAM;IACLsB,QAAQ,EAAE;MACTkB,uBAAuB;MACvBC,gBAAgB;MAChBC;IACD,CAAC;IACDJ;EACD,CAAC,GAAGtC,KAAK;EACT;EACA;EACA;EACA,IACG,CAAEwC,uBAAuB,IAC1B,CAAEF,iCAAiC,CAACK,MAAM,IAC3C,CAAEF,gBAAgB,EACjB;IACD;EACD;EACA,MAAMG,gCAAgC,GACrCJ,uBAAuB,EAAEK,GAAG,CAAE,CAAE;IAAEC;EAAK,CAAC,KAAMA,IAAK,CAAC,IAAI,EAAE;EAC3D,MAAMC,gBAAgB,GAAG,CACxB,IAAKP,uBAAuB,IAAI,EAAE,CAAE,EACpC,GAAG,CAAEF,iCAAiC,IAAI,EAAE,EAAGX,MAAM,CACpD,CAAE;IAAEmB;EAAK,CAAC,KACT,CAAEF,gCAAgC,CAACI,QAAQ,CAAEF,IAAK,CACpD,CAAC,CACD;EACD,OAAOC,gBAAgB,CAACpB,MAAM,CAAIsB,QAAQ,IAAM;IAC/C;IACA,IACC,CAAEP,4BAA4B,IAC9BO,QAAQ,CAACH,IAAI,KAAK,WAAW,EAC5B;MACD,OAAO,KAAK;IACb;IACA,OAAOI,MAAM,CAACC,MAAM,CAAEV,gBAAiB,CAAC,CAACW,IAAI,CAAIC,QAAQ,IACxDA,QAAQ,CAACC,UAAU,CAAG,GAAGL,QAAQ,CAACM,SAAW,GAAG,CACjD,CAAC;EACF,CAAE,CAAC;AACJ,CAAC,EACCvD,KAAK,IAAM,CACZA,KAAK,CAACsB,QAAQ,CAACkB,uBAAuB,EACtCxC,KAAK,CAACsB,QAAQ,CAACmB,gBAAgB,EAC/BzC,KAAK,CAACsB,QAAQ,CAACoB,4BAA4B,EAC3C1C,KAAK,CAACsC,iCAAiC,CAEzC,CAAC;AAACrB,OAAA,CAAAsB,0BAAA,GAAAA,0BAAA;AAEK,SAASiB,kBAAkBA,CAAExD,KAAK,EAAG;EAC3C,OAAOA,KAAK,CAACyD,aAAa;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,kBAAkB,GAAG,IAAAC,4BAAsB,EAAIC,MAAM,IACjE,IAAAvD,eAAc,EACb,CAAEL,KAAK,EAAEmB,YAAY,GAAG,IAAI,KAAM;EACjC,MAAM;IAAE0C,cAAc;IAAEC;EAA+B,CAAC,GAAG,IAAAC,kBAAM,EAChEH,MAAM,CAAEI,OAAM,CACf,CAAC;EACD,MAAMC,QAAQ,GAAGJ,cAAc,CAAC,CAAC;EACjC,MAAM;IAAEK;EAAkB,CAAC,GAAG,IAAAC,sBAAW,EAAEnE,KAAM,CAAC;EAClD,OAAOiE,QAAQ,CAACb,IAAI,CAAE,CAAE;IAAEN,IAAI;IAAEsB,QAAQ,GAAG;EAAK,CAAC,KAAM;IACtD,IAAK,CAAEA,QAAQ,EAAG;MACjB,OAAO,KAAK;IACb;IACA,MAAM;MAAExD;IAAO,CAAC,GAAGkD,8BAA8B,CAAEhB,IAAK,CAAC;IACzD,OACC,IAAAuB,8BAAuB,EAAEzD,MAAM,EAAEsD,iBAAkB,CAAC,IACpDtD,MAAM,CAACD,KAAK,CAAE,CAAE;MAAEmC,IAAI,EAAEwB;IAAU,CAAC,KAClC,IAAAC,6BAAkB,EAAEvE,KAAK,EAAEsE,SAAS,EAAEnD,YAAa,CACpD,CAAC;EAEH,CAAE,CAAC;AACJ,CAAC,EACD,CAAEnB,KAAK,EAAEmB,YAAY,KAAM,CAC1B,IAAAqD,+BAAwB,EAAExE,KAAM,CAAC,EACjCA,KAAK,CAACsB,QAAQ,CAAC4C,iBAAiB,EAChClE,KAAK,CAACsB,QAAQ,CAACC,YAAY,EAC3BvB,KAAK,CAACgB,iBAAiB,CAAEG,YAAY,CAAE,EACvCnB,KAAK,CAACY,MAAM,CAAC6D,UAAU,CAACC,GAAG,CAAEvD,YAAa,CAAC,CAE7C,CACD,CAAC;AAACF,OAAA,CAAAyC,kBAAA,GAAAA,kBAAA;AAEK,MAAMG,cAAc,GAAG,IAAAF,4BAAsB,EAAIC,MAAM,IAC7D,IAAAvD,eAAc,EAAIL,KAAK,IAAM;EAC5B;EACA,MAAM;IACL2E,2BAA2B,GAAG,EAAE;IAChCC,mCAAmC,GAAG,EAAE;IACxCC,4BAA4B,GAAG;EAChC,CAAC,GAAG7E,KAAK,CAACsB,QAAQ;EAClB,MAAMwD,YAAY,GAAG,CAAED,4BAA4B,aAA5BA,4BAA4B,cAA5BA,4BAA4B,GAAI,EAAE,EAAGhC,GAAG,CAC5DkC,WAAW,IAAM;IAClB,OAAO;MACNjC,IAAI,EAAG,cAAciC,WAAW,CAACC,EAAI,EAAC;MACtCA,EAAE,EAAED,WAAW,CAACC,EAAE;MAClBC,IAAI,EAAEC,8BAAsB,CAACC,IAAI;MACjCC,KAAK,EAAEL,WAAW,CAACK,KAAK,CAACC,GAAG;MAC5BC,UAAU,EAAEP,WAAW,CAACQ,mBAAmB,CAAC1C,GAAG,CAC5C2C,KAAK,IAAM;QACZ,MAAMvC,QAAQ,GAAG,CAChB2B,mCAAmC,aAAnCA,mCAAmC,cAAnCA,mCAAmC,GAAI,EAAE,EACxCa,IAAI,CAAE,CAAE;UAAET;QAAG,CAAC,KAAMA,EAAE,KAAKQ,KAAM,CAAC;QACpC,OAAOvC,QAAQ,GAAGA,QAAQ,CAACyC,IAAI,GAAGF,KAAK;MACxC,CACD,CAAC;MACDG,OAAO,EAAEZ,WAAW,CAACY,OAAO,CAACN,GAAG;MAChCO,UAAU,EAAEb,WAAW,CAACc;IACzB,CAAC;EACF,CACD,CAAC;EACD,OAAO,CACN,GAAGf,YAAY,EACf,GAAGH,2BAA2B,EAC9B,GAAG,IAAAZ,kBAAM,EAAEH,MAAM,CAAEI,OAAM,CAAE,CAAC,CAACR,kBAAkB,CAAC,CAAC,CACjD,CAAC7B,MAAM,CACP,CAAEmE,CAAC,EAAEC,KAAK,EAAEC,GAAG,KACdD,KAAK,KAAKC,GAAG,CAACC,SAAS,CAAIC,CAAC,IAAMJ,CAAC,CAAChD,IAAI,KAAKoD,CAAC,CAACpD,IAAK,CACtD,CAAC;AACF,CAAC,EAAE0B,+BAAyB,CAC7B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANAvD,OAAA,CAAA4C,cAAA,GAAAA,cAAA;AAOO,SAASsC,YAAYA,CAAEnG,KAAK,EAAG;EACrC,OAAOA,KAAK,CAACoG,SAAS;AACvB;AAEO,SAASC,0BAA0BA,CAAErG,KAAK,EAAG;EACnD,OAAOA,KAAK,CAACsG,oBAAoB;AAClC;AAEO,SAASC,sBAAsBA,CAAEvG,KAAK,EAAEwG,UAAU,EAAG;EAC3D,OAAOxG,KAAK,CAACsG,oBAAoB,CAAEE,UAAU,CAAE;AAChD"}
@@ -33,6 +33,7 @@ exports.settings = settings;
33
33
  exports.styleOverrides = styleOverrides;
34
34
  exports.template = template;
35
35
  exports.temporarilyEditingAsBlocks = temporarilyEditingAsBlocks;
36
+ exports.temporarilyEditingFocusModeRevert = temporarilyEditingFocusModeRevert;
36
37
  var _es = _interopRequireDefault(require("fast-deep-equal/es6"));
37
38
  var _compose = require("@wordpress/compose");
38
39
  var _data = require("@wordpress/data");
@@ -1420,13 +1421,15 @@ function insertionPoint(state = null, action) {
1420
1421
  rootClientId,
1421
1422
  index,
1422
1423
  __unstableWithInserter,
1423
- operation
1424
+ operation,
1425
+ nearestSide
1424
1426
  } = action;
1425
1427
  const nextState = {
1426
1428
  rootClientId,
1427
1429
  index,
1428
1430
  __unstableWithInserter,
1429
- operation
1431
+ operation,
1432
+ nearestSide
1430
1433
  };
1431
1434
 
1432
1435
  // Bail out updates if the states are the same.
@@ -1712,6 +1715,21 @@ function temporarilyEditingAsBlocks(state = '', action) {
1712
1715
  return state;
1713
1716
  }
1714
1717
 
1718
+ /**
1719
+ * Reducer returning the focus mode that should be used when temporarily edit as blocks finishes.
1720
+ *
1721
+ * @param {Object} state Current state.
1722
+ * @param {Object} action Dispatched action.
1723
+ *
1724
+ * @return {Object} Updated state.
1725
+ */
1726
+ function temporarilyEditingFocusModeRevert(state = '', action) {
1727
+ if (action.type === 'SET_TEMPORARILY_EDITING_AS_BLOCKS') {
1728
+ return action.focusModeToRevert;
1729
+ }
1730
+ return state;
1731
+ }
1732
+
1715
1733
  /**
1716
1734
  * Reducer returning a map of block client IDs to block editing modes.
1717
1735
  *
@@ -1807,6 +1825,26 @@ function lastFocus(state = false, action) {
1807
1825
  }
1808
1826
  return state;
1809
1827
  }
1828
+ function blockBindingsSources(state = {}, action) {
1829
+ if (action.type === 'REGISTER_BLOCK_BINDINGS_SOURCE') {
1830
+ return {
1831
+ ...state,
1832
+ [action.sourceName]: {
1833
+ label: action.sourceLabel,
1834
+ useSource: action.useSource,
1835
+ lockAttributesEditing: action.lockAttributesEditing
1836
+ }
1837
+ };
1838
+ }
1839
+ return state;
1840
+ }
1841
+ function blockPatterns(state = [], action) {
1842
+ switch (action.type) {
1843
+ case 'RECEIVE_BLOCK_PATTERNS':
1844
+ return action.patterns;
1845
+ }
1846
+ return state;
1847
+ }
1810
1848
  const combinedReducers = (0, _data.combineReducers)({
1811
1849
  blocks,
1812
1850
  isTyping,
@@ -1829,13 +1867,16 @@ const combinedReducers = (0, _data.combineReducers)({
1829
1867
  highlightedBlock,
1830
1868
  lastBlockInserted,
1831
1869
  temporarilyEditingAsBlocks,
1870
+ temporarilyEditingFocusModeRevert,
1832
1871
  blockVisibility,
1833
1872
  blockEditingModes,
1834
1873
  styleOverrides,
1835
1874
  removalPromptData,
1836
1875
  blockRemovalRules,
1837
1876
  openedBlockSettingsMenu,
1838
- registeredInserterMediaCategories
1877
+ registeredInserterMediaCategories,
1878
+ blockBindingsSources,
1879
+ blockPatterns
1839
1880
  });
1840
1881
  function withAutomaticChangeReset(reducer) {
1841
1882
  return (state, action) => {