@wordpress/block-editor 12.9.0 → 12.10.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 (463) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +33 -3
  3. package/build/components/block-canvas/index.js +107 -0
  4. package/build/components/block-canvas/index.js.map +1 -0
  5. package/build/components/block-inspector/index.js +4 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-patterns-list/index.js +19 -4
  8. package/build/components/block-patterns-list/index.js.map +1 -1
  9. package/build/components/block-patterns-paging/index.js +66 -0
  10. package/build/components/block-patterns-paging/index.js.map +1 -0
  11. package/build/components/block-settings-menu/block-settings-dropdown.js +28 -0
  12. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  13. package/build/components/block-settings-menu-controls/index.js +4 -7
  14. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  15. package/build/components/block-styles/index.js +1 -0
  16. package/build/components/block-styles/index.js.map +1 -1
  17. package/build/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  18. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  19. package/build/components/block-tools/block-contextual-toolbar.js +18 -7
  20. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  21. package/build/components/block-tools/block-selection-button.js +5 -1
  22. package/build/components/block-tools/block-selection-button.js.map +1 -1
  23. package/build/components/border-radius-control/input-controls.js +1 -1
  24. package/build/components/border-radius-control/input-controls.js.map +1 -1
  25. package/build/components/border-radius-control/linked-button.js +2 -4
  26. package/build/components/border-radius-control/linked-button.js.map +1 -1
  27. package/build/components/colors/with-colors.js.map +1 -1
  28. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  29. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  30. package/build/components/default-block-appender/index.native.js +20 -1
  31. package/build/components/default-block-appender/index.native.js.map +1 -1
  32. package/build/components/duotone/utils.js +68 -0
  33. package/build/components/duotone/utils.js.map +1 -1
  34. package/build/components/editor-styles/index.js +28 -9
  35. package/build/components/editor-styles/index.js.map +1 -1
  36. package/build/components/global-styles/hooks.js +2 -101
  37. package/build/components/global-styles/hooks.js.map +1 -1
  38. package/build/components/global-styles/image-settings-panel.js +61 -0
  39. package/build/components/global-styles/image-settings-panel.js.map +1 -0
  40. package/build/components/global-styles/index.js +11 -17
  41. package/build/components/global-styles/index.js.map +1 -1
  42. package/build/components/global-styles/use-global-styles-output.js +19 -15
  43. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  44. package/build/components/global-styles/utils.js +1 -1
  45. package/build/components/global-styles/utils.js.map +1 -1
  46. package/build/components/iframe/index.js +67 -33
  47. package/build/components/iframe/index.js.map +1 -1
  48. package/build/components/image-editor/use-save-image.js +2 -5
  49. package/build/components/image-editor/use-save-image.js.map +1 -1
  50. package/build/components/image-editor/use-transform-image.js +9 -9
  51. package/build/components/image-editor/use-transform-image.js.map +1 -1
  52. package/build/components/index.js +8 -12
  53. package/build/components/index.js.map +1 -1
  54. package/build/components/index.native.js +6 -5
  55. package/build/components/index.native.js.map +1 -1
  56. package/build/components/inner-blocks/use-nested-settings-update.js +13 -7
  57. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  58. package/build/components/inserter/block-patterns-explorer/explorer.js +12 -6
  59. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  60. package/build/components/inserter/block-patterns-explorer/patterns-list.js +57 -23
  61. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  62. package/build/components/inserter/block-patterns-explorer/sidebar.js +24 -9
  63. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  64. package/build/components/inserter/block-patterns-source-filter.js +54 -0
  65. package/build/components/inserter/block-patterns-source-filter.js.map +1 -0
  66. package/build/components/inserter/block-patterns-sync-filter.js +46 -0
  67. package/build/components/inserter/block-patterns-sync-filter.js.map +1 -0
  68. package/build/components/inserter/block-patterns-tab.js +91 -45
  69. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  70. package/build/components/inserter/hooks/use-patterns-paging.js +57 -0
  71. package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  72. package/build/components/inserter/hooks/use-patterns-state.js +21 -10
  73. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  74. package/build/components/inserter/menu.js +13 -11
  75. package/build/components/inserter/menu.js.map +1 -1
  76. package/build/components/inserter/search-results.js +4 -3
  77. package/build/components/inserter/search-results.js.map +1 -1
  78. package/build/components/inserter/tabs.js +1 -12
  79. package/build/components/inserter/tabs.js.map +1 -1
  80. package/build/components/inspector-controls/block-support-slot-container.js +12 -1
  81. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  82. package/build/components/inspector-controls/fill.js +24 -13
  83. package/build/components/inspector-controls/fill.js.map +1 -1
  84. package/build/components/inspector-controls/groups.js +5 -3
  85. package/build/components/inspector-controls/groups.js.map +1 -1
  86. package/build/components/inspector-controls/slot.js +13 -0
  87. package/build/components/inspector-controls/slot.js.map +1 -1
  88. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  89. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  90. package/build/components/link-control/index.js +13 -2
  91. package/build/components/link-control/index.js.map +1 -1
  92. package/build/components/link-control/settings.js +2 -1
  93. package/build/components/link-control/settings.js.map +1 -1
  94. package/build/components/list-view/block-select-button.js +1 -3
  95. package/build/components/list-view/block-select-button.js.map +1 -1
  96. package/build/components/list-view/block.js +13 -1
  97. package/build/components/list-view/block.js.map +1 -1
  98. package/build/components/list-view/use-block-selection.js +29 -24
  99. package/build/components/list-view/use-block-selection.js.map +1 -1
  100. package/build/components/media-placeholder/index.js +2 -2
  101. package/build/components/media-placeholder/index.js.map +1 -1
  102. package/build/components/media-placeholder/index.native.js +11 -11
  103. package/build/components/media-placeholder/index.native.js.map +1 -1
  104. package/build/components/media-replace-flow/index.js +2 -3
  105. package/build/components/media-replace-flow/index.js.map +1 -1
  106. package/build/components/media-upload/constants.js +30 -0
  107. package/build/components/media-upload/constants.js.map +1 -0
  108. package/build/components/media-upload/index.native.js +63 -53
  109. package/build/components/media-upload/index.native.js.map +1 -1
  110. package/build/components/preview-options/index.js +1 -1
  111. package/build/components/preview-options/index.js.map +1 -1
  112. package/build/components/rich-text/index.js +34 -35
  113. package/build/components/rich-text/index.js.map +1 -1
  114. package/build/components/rich-text/index.native.js +14 -32
  115. package/build/components/rich-text/index.native.js.map +1 -1
  116. package/build/components/rich-text/multiline.js +95 -0
  117. package/build/components/rich-text/multiline.js.map +1 -0
  118. package/build/components/rich-text/split-value.js +10 -16
  119. package/build/components/rich-text/split-value.js.map +1 -1
  120. package/build/components/rich-text/use-enter.js +31 -40
  121. package/build/components/rich-text/use-enter.js.map +1 -1
  122. package/build/components/rich-text/use-paste-handler.js +18 -33
  123. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  124. package/build/components/spacing-sizes-control/utils.js +1 -1
  125. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  126. package/build/components/use-block-commands/index.js +30 -18
  127. package/build/components/use-block-commands/index.js.map +1 -1
  128. package/build/components/use-block-display-information/index.js +5 -2
  129. package/build/components/use-block-display-information/index.js.map +1 -1
  130. package/build/hooks/background.js +258 -0
  131. package/build/hooks/background.js.map +1 -0
  132. package/build/hooks/block-hooks.js +188 -0
  133. package/build/hooks/block-hooks.js.map +1 -0
  134. package/build/hooks/block-rename-ui.js +160 -0
  135. package/build/hooks/block-rename-ui.js.map +1 -0
  136. package/build/hooks/duotone.js +29 -42
  137. package/build/hooks/duotone.js.map +1 -1
  138. package/build/hooks/index.js +2 -2
  139. package/build/hooks/index.js.map +1 -1
  140. package/build/hooks/layout.js +31 -14
  141. package/build/hooks/layout.js.map +1 -1
  142. package/build/hooks/position.js +4 -2
  143. package/build/hooks/position.js.map +1 -1
  144. package/build/hooks/style.js +74 -25
  145. package/build/hooks/style.js.map +1 -1
  146. package/build/hooks/utils.js +4 -0
  147. package/build/hooks/utils.js.map +1 -1
  148. package/build/private-apis.js +2 -0
  149. package/build/private-apis.js.map +1 -1
  150. package/build/store/actions.js +33 -10
  151. package/build/store/actions.js.map +1 -1
  152. package/build/store/private-actions.js +42 -8
  153. package/build/store/private-actions.js.map +1 -1
  154. package/build/store/private-selectors.js +23 -0
  155. package/build/store/private-selectors.js.map +1 -1
  156. package/build/store/reducer.js +43 -1
  157. package/build/store/reducer.js.map +1 -1
  158. package/build/store/selectors.js +84 -23
  159. package/build/store/selectors.js.map +1 -1
  160. package/build/store/utils.js +0 -4
  161. package/build/store/utils.js.map +1 -1
  162. package/build-module/components/block-canvas/index.js +97 -0
  163. package/build-module/components/block-canvas/index.js.map +1 -0
  164. package/build-module/components/block-inspector/index.js +4 -1
  165. package/build-module/components/block-inspector/index.js.map +1 -1
  166. package/build-module/components/block-patterns-list/index.js +20 -5
  167. package/build-module/components/block-patterns-list/index.js.map +1 -1
  168. package/build-module/components/block-patterns-paging/index.js +59 -0
  169. package/build-module/components/block-patterns-paging/index.js.map +1 -0
  170. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -0
  171. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  172. package/build-module/components/block-settings-menu-controls/index.js +4 -7
  173. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  174. package/build-module/components/block-styles/index.js +1 -0
  175. package/build-module/components/block-styles/index.js.map +1 -1
  176. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  177. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  178. package/build-module/components/block-tools/block-contextual-toolbar.js +18 -7
  179. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  180. package/build-module/components/block-tools/block-selection-button.js +5 -1
  181. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  182. package/build-module/components/border-radius-control/input-controls.js +1 -1
  183. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  184. package/build-module/components/border-radius-control/linked-button.js +2 -4
  185. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  186. package/build-module/components/colors/with-colors.js.map +1 -1
  187. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  188. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  189. package/build-module/components/default-block-appender/index.native.js +20 -1
  190. package/build-module/components/default-block-appender/index.native.js.map +1 -1
  191. package/build-module/components/duotone/utils.js +65 -0
  192. package/build-module/components/duotone/utils.js.map +1 -1
  193. package/build-module/components/editor-styles/index.js +28 -9
  194. package/build-module/components/editor-styles/index.js.map +1 -1
  195. package/build-module/components/global-styles/hooks.js +3 -100
  196. package/build-module/components/global-styles/hooks.js.map +1 -1
  197. package/build-module/components/global-styles/image-settings-panel.js +53 -0
  198. package/build-module/components/global-styles/image-settings-panel.js.map +1 -0
  199. package/build-module/components/global-styles/index.js +2 -2
  200. package/build-module/components/global-styles/index.js.map +1 -1
  201. package/build-module/components/global-styles/use-global-styles-output.js +18 -16
  202. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  203. package/build-module/components/global-styles/utils.js +1 -1
  204. package/build-module/components/global-styles/utils.js.map +1 -1
  205. package/build-module/components/iframe/index.js +66 -33
  206. package/build-module/components/iframe/index.js.map +1 -1
  207. package/build-module/components/image-editor/use-save-image.js +2 -5
  208. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  209. package/build-module/components/image-editor/use-transform-image.js +9 -9
  210. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  211. package/build-module/components/index.js +1 -1
  212. package/build-module/components/index.js.map +1 -1
  213. package/build-module/components/index.native.js +2 -1
  214. package/build-module/components/index.native.js.map +1 -1
  215. package/build-module/components/inner-blocks/use-nested-settings-update.js +14 -8
  216. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  217. package/build-module/components/inserter/block-patterns-explorer/explorer.js +12 -6
  218. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  219. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +59 -25
  220. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  221. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +23 -9
  222. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  223. package/build-module/components/inserter/block-patterns-source-filter.js +44 -0
  224. package/build-module/components/inserter/block-patterns-source-filter.js.map +1 -0
  225. package/build-module/components/inserter/block-patterns-sync-filter.js +38 -0
  226. package/build-module/components/inserter/block-patterns-sync-filter.js.map +1 -0
  227. package/build-module/components/inserter/block-patterns-tab.js +87 -46
  228. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  229. package/build-module/components/inserter/hooks/use-patterns-paging.js +50 -0
  230. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  231. package/build-module/components/inserter/hooks/use-patterns-state.js +22 -10
  232. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  233. package/build-module/components/inserter/menu.js +13 -11
  234. package/build-module/components/inserter/menu.js.map +1 -1
  235. package/build-module/components/inserter/search-results.js +4 -3
  236. package/build-module/components/inserter/search-results.js.map +1 -1
  237. package/build-module/components/inserter/tabs.js +1 -12
  238. package/build-module/components/inserter/tabs.js.map +1 -1
  239. package/build-module/components/inspector-controls/block-support-slot-container.js +13 -2
  240. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  241. package/build-module/components/inspector-controls/fill.js +25 -14
  242. package/build-module/components/inspector-controls/fill.js.map +1 -1
  243. package/build-module/components/inspector-controls/groups.js +5 -3
  244. package/build-module/components/inspector-controls/groups.js.map +1 -1
  245. package/build-module/components/inspector-controls/slot.js +15 -1
  246. package/build-module/components/inspector-controls/slot.js.map +1 -1
  247. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  248. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  249. package/build-module/components/link-control/index.js +13 -2
  250. package/build-module/components/link-control/index.js.map +1 -1
  251. package/build-module/components/link-control/settings.js +2 -1
  252. package/build-module/components/link-control/settings.js.map +1 -1
  253. package/build-module/components/list-view/block-select-button.js +1 -3
  254. package/build-module/components/list-view/block-select-button.js.map +1 -1
  255. package/build-module/components/list-view/block.js +13 -1
  256. package/build-module/components/list-view/block.js.map +1 -1
  257. package/build-module/components/list-view/use-block-selection.js +30 -25
  258. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  259. package/build-module/components/media-placeholder/index.js +2 -2
  260. package/build-module/components/media-placeholder/index.js.map +1 -1
  261. package/build-module/components/media-placeholder/index.native.js +7 -7
  262. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  263. package/build-module/components/media-replace-flow/index.js +2 -3
  264. package/build-module/components/media-replace-flow/index.js.map +1 -1
  265. package/build-module/components/media-upload/constants.js +14 -0
  266. package/build-module/components/media-upload/constants.js.map +1 -0
  267. package/build-module/components/media-upload/index.native.js +53 -34
  268. package/build-module/components/media-upload/index.native.js.map +1 -1
  269. package/build-module/components/preview-options/index.js +1 -1
  270. package/build-module/components/preview-options/index.js.map +1 -1
  271. package/build-module/components/rich-text/index.js +35 -37
  272. package/build-module/components/rich-text/index.js.map +1 -1
  273. package/build-module/components/rich-text/index.native.js +15 -33
  274. package/build-module/components/rich-text/index.native.js.map +1 -1
  275. package/build-module/components/rich-text/multiline.js +87 -0
  276. package/build-module/components/rich-text/multiline.js.map +1 -0
  277. package/build-module/components/rich-text/split-value.js +10 -16
  278. package/build-module/components/rich-text/split-value.js.map +1 -1
  279. package/build-module/components/rich-text/use-enter.js +33 -42
  280. package/build-module/components/rich-text/use-enter.js.map +1 -1
  281. package/build-module/components/rich-text/use-paste-handler.js +19 -34
  282. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  283. package/build-module/components/spacing-sizes-control/utils.js +2 -2
  284. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  285. package/build-module/components/use-block-commands/index.js +28 -16
  286. package/build-module/components/use-block-commands/index.js.map +1 -1
  287. package/build-module/components/use-block-display-information/index.js +5 -2
  288. package/build-module/components/use-block-display-information/index.js.map +1 -1
  289. package/build-module/hooks/background.js +244 -0
  290. package/build-module/hooks/background.js.map +1 -0
  291. package/build-module/hooks/block-hooks.js +181 -0
  292. package/build-module/hooks/block-hooks.js.map +1 -0
  293. package/build-module/hooks/block-rename-ui.js +153 -0
  294. package/build-module/hooks/block-rename-ui.js.map +1 -0
  295. package/build-module/hooks/duotone.js +26 -39
  296. package/build-module/hooks/duotone.js.map +1 -1
  297. package/build-module/hooks/index.js +2 -2
  298. package/build-module/hooks/index.js.map +1 -1
  299. package/build-module/hooks/layout.js +33 -16
  300. package/build-module/hooks/layout.js.map +1 -1
  301. package/build-module/hooks/position.js +4 -2
  302. package/build-module/hooks/position.js.map +1 -1
  303. package/build-module/hooks/style.js +73 -24
  304. package/build-module/hooks/style.js.map +1 -1
  305. package/build-module/hooks/utils.js +4 -0
  306. package/build-module/hooks/utils.js.map +1 -1
  307. package/build-module/private-apis.js +2 -0
  308. package/build-module/private-apis.js.map +1 -1
  309. package/build-module/store/actions.js +33 -10
  310. package/build-module/store/actions.js.map +1 -1
  311. package/build-module/store/private-actions.js +39 -8
  312. package/build-module/store/private-actions.js.map +1 -1
  313. package/build-module/store/private-selectors.js +21 -0
  314. package/build-module/store/private-selectors.js.map +1 -1
  315. package/build-module/store/reducer.js +41 -1
  316. package/build-module/store/reducer.js.map +1 -1
  317. package/build-module/store/selectors.js +78 -22
  318. package/build-module/store/selectors.js.map +1 -1
  319. package/build-module/store/utils.js +0 -4
  320. package/build-module/store/utils.js.map +1 -1
  321. package/build-style/content-rtl.css +0 -1
  322. package/build-style/content.css +0 -1
  323. package/build-style/style-rtl.css +174 -131
  324. package/build-style/style.css +174 -131
  325. package/package.json +32 -32
  326. package/src/components/block-canvas/index.js +108 -0
  327. package/src/components/block-inspector/index.js +5 -1
  328. package/src/components/block-list/content.scss +0 -1
  329. package/src/components/block-patterns-list/index.js +32 -7
  330. package/src/components/block-patterns-list/style.scss +26 -9
  331. package/src/components/block-patterns-paging/index.js +92 -0
  332. package/src/components/block-patterns-paging/style.scss +42 -0
  333. package/src/components/block-settings-menu/block-settings-dropdown.js +44 -0
  334. package/src/components/block-settings-menu-controls/index.js +4 -9
  335. package/src/components/block-styles/index.js +1 -0
  336. package/src/components/block-styles/style.scss +3 -3
  337. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -6
  338. package/src/components/block-tools/block-contextual-toolbar.js +16 -5
  339. package/src/components/block-tools/block-selection-button.js +9 -1
  340. package/src/components/block-tools/style.scss +0 -98
  341. package/src/components/border-radius-control/input-controls.js +1 -1
  342. package/src/components/border-radius-control/linked-button.js +8 -11
  343. package/src/components/color-palette/test/__snapshots__/control.js.snap +34 -21
  344. package/src/components/colors/with-colors.js +3 -2
  345. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -35
  346. package/src/components/default-block-appender/index.native.js +26 -3
  347. package/src/components/duotone/utils.js +65 -0
  348. package/src/components/editor-styles/index.js +32 -23
  349. package/src/components/global-styles/hooks.js +4 -112
  350. package/src/components/global-styles/image-settings-panel.js +71 -0
  351. package/src/components/global-styles/index.js +4 -3
  352. package/src/components/global-styles/use-global-styles-output.js +25 -16
  353. package/src/components/global-styles/utils.js +1 -2
  354. package/src/components/iframe/index.js +72 -33
  355. package/src/components/image-editor/use-save-image.js +2 -9
  356. package/src/components/image-editor/use-transform-image.js +9 -9
  357. package/src/components/index.js +1 -1
  358. package/src/components/index.native.js +2 -2
  359. package/src/components/inner-blocks/use-nested-settings-update.js +15 -10
  360. package/src/components/inserter/block-patterns-explorer/explorer.js +17 -5
  361. package/src/components/inserter/block-patterns-explorer/patterns-list.js +109 -40
  362. package/src/components/inserter/block-patterns-explorer/sidebar.js +23 -8
  363. package/src/components/inserter/block-patterns-source-filter.js +40 -0
  364. package/src/components/inserter/block-patterns-sync-filter.js +35 -0
  365. package/src/components/inserter/block-patterns-tab.js +168 -57
  366. package/src/components/inserter/hooks/use-patterns-paging.js +65 -0
  367. package/src/components/inserter/hooks/use-patterns-state.js +27 -16
  368. package/src/components/inserter/menu.js +15 -17
  369. package/src/components/inserter/search-results.js +6 -4
  370. package/src/components/inserter/style.scss +23 -2
  371. package/src/components/inserter/tabs.js +2 -12
  372. package/src/components/inserter/test/index.native.js +8 -12
  373. package/src/components/inspector-controls/block-support-slot-container.js +19 -3
  374. package/src/components/inspector-controls/fill.js +28 -14
  375. package/src/components/inspector-controls/groups.js +6 -2
  376. package/src/components/inspector-controls/slot.js +28 -3
  377. package/src/components/inspector-controls-tabs/styles-tab.js +4 -0
  378. package/src/components/link-control/index.js +14 -0
  379. package/src/components/link-control/settings.js +1 -0
  380. package/src/components/link-control/style.scss +28 -7
  381. package/src/components/link-control/test/index.js +88 -6
  382. package/src/components/list-view/block-select-button.js +1 -3
  383. package/src/components/list-view/block.js +19 -1
  384. package/src/components/list-view/style.scss +1 -2
  385. package/src/components/list-view/use-block-selection.js +38 -32
  386. package/src/components/media-placeholder/README.md +2 -2
  387. package/src/components/media-placeholder/index.js +2 -2
  388. package/src/components/media-placeholder/index.native.js +11 -12
  389. package/src/components/media-replace-flow/index.js +2 -2
  390. package/src/components/media-replace-flow/test/index.js +5 -23
  391. package/src/components/media-upload/README.md +3 -2
  392. package/src/components/media-upload/constants.js +15 -0
  393. package/src/components/media-upload/index.native.js +66 -40
  394. package/src/components/media-upload/style.native.scss +4 -0
  395. package/src/components/media-upload/test/index.native.js +2 -2
  396. package/src/components/preview-options/README.md +7 -0
  397. package/src/components/preview-options/index.js +1 -1
  398. package/src/components/rich-text/index.js +48 -44
  399. package/src/components/rich-text/index.native.js +14 -42
  400. package/src/components/rich-text/multiline.js +121 -0
  401. package/src/components/rich-text/split-value.js +10 -35
  402. package/src/components/rich-text/use-enter.js +32 -42
  403. package/src/components/rich-text/use-paste-handler.js +16 -40
  404. package/src/components/spacing-sizes-control/style.scss +5 -7
  405. package/src/components/spacing-sizes-control/utils.js +1 -2
  406. package/src/components/use-block-commands/index.js +28 -20
  407. package/src/components/use-block-display-information/index.js +3 -0
  408. package/src/hooks/background.js +288 -0
  409. package/src/hooks/background.scss +57 -0
  410. package/src/hooks/block-hooks.js +257 -0
  411. package/src/hooks/block-hooks.scss +16 -0
  412. package/src/hooks/block-rename-ui.js +230 -0
  413. package/src/hooks/block-rename-ui.scss +3 -0
  414. package/src/hooks/duotone.js +42 -43
  415. package/src/hooks/index.js +2 -2
  416. package/src/hooks/layout.js +31 -33
  417. package/src/hooks/position.js +4 -3
  418. package/src/hooks/style.js +96 -37
  419. package/src/hooks/test/align.native.js +4 -3
  420. package/src/hooks/utils.js +4 -0
  421. package/src/private-apis.js +2 -0
  422. package/src/store/actions.js +52 -10
  423. package/src/store/private-actions.js +37 -6
  424. package/src/store/private-selectors.js +21 -0
  425. package/src/store/reducer.js +38 -0
  426. package/src/store/selectors.js +107 -26
  427. package/src/store/test/actions.js +19 -8
  428. package/src/store/test/private-actions.js +17 -0
  429. package/src/store/test/reducer.js +25 -0
  430. package/src/store/test/selectors.js +130 -123
  431. package/src/store/utils.js +3 -10
  432. package/src/style.scss +4 -0
  433. package/build/components/duotone/components.js +0 -135
  434. package/build/components/duotone/components.js.map +0 -1
  435. package/build/components/duotone/index.js +0 -38
  436. package/build/components/duotone/index.js.map +0 -1
  437. package/build/components/global-styles/behaviors-panel.js +0 -64
  438. package/build/components/global-styles/behaviors-panel.js.map +0 -1
  439. package/build/components/inserter/reusable-blocks-tab.js +0 -85
  440. package/build/components/inserter/reusable-blocks-tab.js.map +0 -1
  441. package/build/hooks/auto-inserting-blocks.js +0 -174
  442. package/build/hooks/auto-inserting-blocks.js.map +0 -1
  443. package/build/hooks/behaviors.js +0 -173
  444. package/build/hooks/behaviors.js.map +0 -1
  445. package/build-module/components/duotone/components.js +0 -126
  446. package/build-module/components/duotone/components.js.map +0 -1
  447. package/build-module/components/duotone/index.js +0 -3
  448. package/build-module/components/duotone/index.js.map +0 -1
  449. package/build-module/components/global-styles/behaviors-panel.js +0 -57
  450. package/build-module/components/global-styles/behaviors-panel.js.map +0 -1
  451. package/build-module/components/inserter/reusable-blocks-tab.js +0 -76
  452. package/build-module/components/inserter/reusable-blocks-tab.js.map +0 -1
  453. package/build-module/hooks/auto-inserting-blocks.js +0 -167
  454. package/build-module/hooks/auto-inserting-blocks.js.map +0 -1
  455. package/build-module/hooks/behaviors.js +0 -166
  456. package/build-module/hooks/behaviors.js.map +0 -1
  457. package/src/components/duotone/components.js +0 -133
  458. package/src/components/duotone/index.js +0 -7
  459. package/src/components/global-styles/behaviors-panel.js +0 -71
  460. package/src/components/inserter/reusable-blocks-tab.js +0 -84
  461. package/src/components/inserter/test/reusable-blocks-tab.js +0 -73
  462. package/src/hooks/auto-inserting-blocks.js +0 -232
  463. package/src/hooks/behaviors.js +0 -206
@@ -1,126 +0,0 @@
1
- import { createElement } from "@wordpress/element";
2
- /**
3
- * WordPress dependencies
4
- */
5
- import { SVG } from '@wordpress/components';
6
-
7
- /**
8
- * Internal dependencies
9
- */
10
- import { __unstableGetValuesFromColors as getValuesFromColors } from './index';
11
-
12
- /**
13
- * SVG and stylesheet needed for rendering the duotone filter.
14
- *
15
- * @param {Object} props Duotone props.
16
- * @param {string} props.selector Selector to apply the filter to.
17
- * @param {string} props.id Unique id for this duotone filter.
18
- *
19
- * @return {WPElement} Duotone element.
20
- */
21
- export function DuotoneStylesheet({
22
- selector,
23
- id
24
- }) {
25
- const css = `
26
- ${selector} {
27
- filter: url( #${id} );
28
- }
29
- `;
30
- return createElement("style", null, css);
31
- }
32
-
33
- /**
34
- * Stylesheet for disabling a global styles duotone filter.
35
- *
36
- * @param {Object} props Duotone props.
37
- * @param {string} props.selector Selector to disable the filter for.
38
- *
39
- * @return {WPElement} Filter none style element.
40
- */
41
- export function DuotoneUnsetStylesheet({
42
- selector
43
- }) {
44
- const css = `
45
- ${selector} {
46
- filter: none;
47
- }
48
- `;
49
- return createElement("style", null, css);
50
- }
51
-
52
- /**
53
- * The SVG part of the duotone filter.
54
- *
55
- * @param {Object} props Duotone props.
56
- * @param {string} props.id Unique id for this duotone filter.
57
- * @param {string[]} props.colors Color strings from dark to light.
58
- *
59
- * @return {WPElement} Duotone SVG.
60
- */
61
- export function DuotoneFilter({
62
- id,
63
- colors
64
- }) {
65
- const values = getValuesFromColors(colors);
66
- return createElement(SVG, {
67
- xmlnsXlink: "http://www.w3.org/1999/xlink",
68
- viewBox: "0 0 0 0",
69
- width: "0",
70
- height: "0",
71
- focusable: "false",
72
- role: "none",
73
- style: {
74
- visibility: 'hidden',
75
- position: 'absolute',
76
- left: '-9999px',
77
- overflow: 'hidden'
78
- }
79
- }, createElement("defs", null, createElement("filter", {
80
- id: id
81
- }, createElement("feColorMatrix", {
82
- // Use sRGB instead of linearRGB so transparency looks correct.
83
- colorInterpolationFilters: "sRGB",
84
- type: "matrix"
85
- // Use perceptual brightness to convert to grayscale.
86
- ,
87
- values: " .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 "
88
- }), createElement("feComponentTransfer", {
89
- // Use sRGB instead of linearRGB to be consistent with how CSS gradients work.
90
- colorInterpolationFilters: "sRGB"
91
- }, createElement("feFuncR", {
92
- type: "table",
93
- tableValues: values.r.join(' ')
94
- }), createElement("feFuncG", {
95
- type: "table",
96
- tableValues: values.g.join(' ')
97
- }), createElement("feFuncB", {
98
- type: "table",
99
- tableValues: values.b.join(' ')
100
- }), createElement("feFuncA", {
101
- type: "table",
102
- tableValues: values.a.join(' ')
103
- })), createElement("feComposite", {
104
- // Re-mask the image with the original transparency since the feColorMatrix above loses that information.
105
- in2: "SourceGraphic",
106
- operator: "in"
107
- }))));
108
- }
109
-
110
- /**
111
- * SVG from a duotone preset
112
- *
113
- * @param {Object} props Duotone props.
114
- * @param {Object} props.preset Duotone preset settings.
115
- *
116
- * @return {WPElement} Duotone element.
117
- */
118
- export function PresetDuotoneFilter({
119
- preset
120
- }) {
121
- return createElement(DuotoneFilter, {
122
- id: `wp-duotone-${preset.slug}`,
123
- colors: preset.colors
124
- });
125
- }
126
- //# sourceMappingURL=components.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["SVG","__unstableGetValuesFromColors","getValuesFromColors","DuotoneStylesheet","selector","id","css","createElement","DuotoneUnsetStylesheet","DuotoneFilter","colors","values","xmlnsXlink","viewBox","width","height","focusable","role","style","visibility","position","left","overflow","colorInterpolationFilters","type","tableValues","r","join","g","b","a","in2","operator","PresetDuotoneFilter","preset","slug"],"sources":["@wordpress/block-editor/src/components/duotone/components.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { SVG } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { __unstableGetValuesFromColors as getValuesFromColors } from './index';\n\n/**\n * SVG and stylesheet needed for rendering the duotone filter.\n *\n * @param {Object} props Duotone props.\n * @param {string} props.selector Selector to apply the filter to.\n * @param {string} props.id Unique id for this duotone filter.\n *\n * @return {WPElement} Duotone element.\n */\nexport function DuotoneStylesheet( { selector, id } ) {\n\tconst css = `\n${ selector } {\n\tfilter: url( #${ id } );\n}\n`;\n\treturn <style>{ css }</style>;\n}\n\n/**\n * Stylesheet for disabling a global styles duotone filter.\n *\n * @param {Object} props Duotone props.\n * @param {string} props.selector Selector to disable the filter for.\n *\n * @return {WPElement} Filter none style element.\n */\nexport function DuotoneUnsetStylesheet( { selector } ) {\n\tconst css = `\n${ selector } {\n\tfilter: none;\n}\n`;\n\treturn <style>{ css }</style>;\n}\n\n/**\n * The SVG part of the duotone filter.\n *\n * @param {Object} props Duotone props.\n * @param {string} props.id Unique id for this duotone filter.\n * @param {string[]} props.colors Color strings from dark to light.\n *\n * @return {WPElement} Duotone SVG.\n */\nexport function DuotoneFilter( { id, colors } ) {\n\tconst values = getValuesFromColors( colors );\n\treturn (\n\t\t<SVG\n\t\t\txmlnsXlink=\"http://www.w3.org/1999/xlink\"\n\t\t\tviewBox=\"0 0 0 0\"\n\t\t\twidth=\"0\"\n\t\t\theight=\"0\"\n\t\t\tfocusable=\"false\"\n\t\t\trole=\"none\"\n\t\t\tstyle={ {\n\t\t\t\tvisibility: 'hidden',\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: '-9999px',\n\t\t\t\toverflow: 'hidden',\n\t\t\t} }\n\t\t>\n\t\t\t<defs>\n\t\t\t\t<filter id={ id }>\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\t// Use sRGB instead of linearRGB so transparency looks correct.\n\t\t\t\t\t\tcolorInterpolationFilters=\"sRGB\"\n\t\t\t\t\t\ttype=\"matrix\"\n\t\t\t\t\t\t// Use perceptual brightness to convert to grayscale.\n\t\t\t\t\t\tvalues=\"\n\t\t\t\t\t\t\t.299 .587 .114 0 0\n\t\t\t\t\t\t\t.299 .587 .114 0 0\n\t\t\t\t\t\t\t.299 .587 .114 0 0\n\t\t\t\t\t\t\t.299 .587 .114 0 0\n\t\t\t\t\t\t\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feComponentTransfer\n\t\t\t\t\t\t// Use sRGB instead of linearRGB to be consistent with how CSS gradients work.\n\t\t\t\t\t\tcolorInterpolationFilters=\"sRGB\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<feFuncR\n\t\t\t\t\t\t\ttype=\"table\"\n\t\t\t\t\t\t\ttableValues={ values.r.join( ' ' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<feFuncG\n\t\t\t\t\t\t\ttype=\"table\"\n\t\t\t\t\t\t\ttableValues={ values.g.join( ' ' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<feFuncB\n\t\t\t\t\t\t\ttype=\"table\"\n\t\t\t\t\t\t\ttableValues={ values.b.join( ' ' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<feFuncA\n\t\t\t\t\t\t\ttype=\"table\"\n\t\t\t\t\t\t\ttableValues={ values.a.join( ' ' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</feComponentTransfer>\n\t\t\t\t\t<feComposite\n\t\t\t\t\t\t// Re-mask the image with the original transparency since the feColorMatrix above loses that information.\n\t\t\t\t\t\tin2=\"SourceGraphic\"\n\t\t\t\t\t\toperator=\"in\"\n\t\t\t\t\t/>\n\t\t\t\t</filter>\n\t\t\t</defs>\n\t\t</SVG>\n\t);\n}\n\n/**\n * SVG from a duotone preset\n *\n * @param {Object} props Duotone props.\n * @param {Object} props.preset Duotone preset settings.\n *\n * @return {WPElement} Duotone element.\n */\nexport function PresetDuotoneFilter( { preset } ) {\n\treturn (\n\t\t<DuotoneFilter\n\t\t\tid={ `wp-duotone-${ preset.slug }` }\n\t\t\tcolors={ preset.colors }\n\t\t/>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,GAAG,QAAQ,uBAAuB;;AAE3C;AACA;AACA;AACA,SAASC,6BAA6B,IAAIC,mBAAmB,QAAQ,SAAS;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAAE;EAAEC,QAAQ;EAAEC;AAAG,CAAC,EAAG;EACrD,MAAMC,GAAG,GAAI;AACd,EAAGF,QAAU;AACb,iBAAkBC,EAAI;AACtB;AACA,CAAC;EACA,OAAOE,aAAA,gBAASD,GAAY,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,sBAAsBA,CAAE;EAAEJ;AAAS,CAAC,EAAG;EACtD,MAAME,GAAG,GAAI;AACd,EAAGF,QAAU;AACb;AACA;AACA,CAAC;EACA,OAAOG,aAAA,gBAASD,GAAY,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,aAAaA,CAAE;EAAEJ,EAAE;EAAEK;AAAO,CAAC,EAAG;EAC/C,MAAMC,MAAM,GAAGT,mBAAmB,CAAEQ,MAAO,CAAC;EAC5C,OACCH,aAAA,CAACP,GAAG;IACHY,UAAU,EAAC,8BAA8B;IACzCC,OAAO,EAAC,SAAS;IACjBC,KAAK,EAAC,GAAG;IACTC,MAAM,EAAC,GAAG;IACVC,SAAS,EAAC,OAAO;IACjBC,IAAI,EAAC,MAAM;IACXC,KAAK,EAAG;MACPC,UAAU,EAAE,QAAQ;MACpBC,QAAQ,EAAE,UAAU;MACpBC,IAAI,EAAE,SAAS;MACfC,QAAQ,EAAE;IACX;EAAG,GAEHf,aAAA,eACCA,aAAA;IAAQF,EAAE,EAAGA;EAAI,GAChBE,aAAA;IACC;IACAgB,yBAAyB,EAAC,MAAM;IAChCC,IAAI,EAAC;IACL;IAAA;IACAb,MAAM,EAAC;EAKN,CACD,CAAC,EACFJ,aAAA;IACC;IACAgB,yBAAyB,EAAC;EAAM,GAEhChB,aAAA;IACCiB,IAAI,EAAC,OAAO;IACZC,WAAW,EAAGd,MAAM,CAACe,CAAC,CAACC,IAAI,CAAE,GAAI;EAAG,CACpC,CAAC,EACFpB,aAAA;IACCiB,IAAI,EAAC,OAAO;IACZC,WAAW,EAAGd,MAAM,CAACiB,CAAC,CAACD,IAAI,CAAE,GAAI;EAAG,CACpC,CAAC,EACFpB,aAAA;IACCiB,IAAI,EAAC,OAAO;IACZC,WAAW,EAAGd,MAAM,CAACkB,CAAC,CAACF,IAAI,CAAE,GAAI;EAAG,CACpC,CAAC,EACFpB,aAAA;IACCiB,IAAI,EAAC,OAAO;IACZC,WAAW,EAAGd,MAAM,CAACmB,CAAC,CAACH,IAAI,CAAE,GAAI;EAAG,CACpC,CACmB,CAAC,EACtBpB,aAAA;IACC;IACAwB,GAAG,EAAC,eAAe;IACnBC,QAAQ,EAAC;EAAI,CACb,CACM,CACH,CACF,CAAC;AAER;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAAE;EAAEC;AAAO,CAAC,EAAG;EACjD,OACC3B,aAAA,CAACE,aAAa;IACbJ,EAAE,EAAI,cAAc6B,MAAM,CAACC,IAAM,EAAG;IACpCzB,MAAM,EAAGwB,MAAM,CAACxB;EAAQ,CACxB,CAAC;AAEJ"}
@@ -1,3 +0,0 @@
1
- export { getValuesFromColors as __unstableGetValuesFromColors } from './utils';
2
- export { DuotoneFilter as __unstableDuotoneFilter, PresetDuotoneFilter as __unstablePresetDuotoneFilter, DuotoneStylesheet as __unstableDuotoneStylesheet, DuotoneUnsetStylesheet as __unstableDuotoneUnsetStylesheet } from './components';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["getValuesFromColors","__unstableGetValuesFromColors","DuotoneFilter","__unstableDuotoneFilter","PresetDuotoneFilter","__unstablePresetDuotoneFilter","DuotoneStylesheet","__unstableDuotoneStylesheet","DuotoneUnsetStylesheet","__unstableDuotoneUnsetStylesheet"],"sources":["@wordpress/block-editor/src/components/duotone/index.js"],"sourcesContent":["export { getValuesFromColors as __unstableGetValuesFromColors } from './utils';\nexport {\n\tDuotoneFilter as __unstableDuotoneFilter,\n\tPresetDuotoneFilter as __unstablePresetDuotoneFilter,\n\tDuotoneStylesheet as __unstableDuotoneStylesheet,\n\tDuotoneUnsetStylesheet as __unstableDuotoneUnsetStylesheet,\n} from './components';\n"],"mappings":"AAAA,SAASA,mBAAmB,IAAIC,6BAA6B,QAAQ,SAAS;AAC9E,SACCC,aAAa,IAAIC,uBAAuB,EACxCC,mBAAmB,IAAIC,6BAA6B,EACpDC,iBAAiB,IAAIC,2BAA2B,EAChDC,sBAAsB,IAAIC,gCAAgC,QACpD,cAAc"}
@@ -1,57 +0,0 @@
1
- import { createElement } from "@wordpress/element";
2
- /**
3
- * WordPress dependencies
4
- */
5
- import { SelectControl } from '@wordpress/components';
6
- import { __ } from '@wordpress/i18n';
7
- export default function ({
8
- onChange,
9
- value,
10
- behaviors
11
- }) {
12
- const defaultBehaviors = {
13
- default: {
14
- value: 'default',
15
- label: __('Default')
16
- },
17
- noBehaviors: {
18
- value: '',
19
- label: __('No behaviors')
20
- }
21
- };
22
- const behaviorsOptions = Object.entries(behaviors).map(([behaviorName]) => ({
23
- value: behaviorName,
24
- // Capitalize the first letter of the behavior name.
25
- label: `${behaviorName.charAt(0).toUpperCase()}${behaviorName.slice(1).toLowerCase()}`
26
- }));
27
- const options = [...Object.values(defaultBehaviors), ...behaviorsOptions];
28
- const animations = [{
29
- value: 'zoom',
30
- label: __('Zoom')
31
- }, {
32
- value: 'fade',
33
- label: __('Fade')
34
- }];
35
- return createElement("div", {
36
- style: {
37
- marginTop: '2rem'
38
- }
39
- }, createElement(SelectControl, {
40
- label: __('Behaviors')
41
- // At the moment we are only supporting one behavior (Lightbox)
42
- ,
43
- value: value,
44
- options: options,
45
- onChange: onChange,
46
- hideCancelButton: true,
47
- size: "__unstable-large"
48
- }), value === 'lightbox' && createElement(SelectControl, {
49
- label: __('Animation'),
50
- value: behaviors?.lightbox.animation ? behaviors?.lightbox.animation : '',
51
- options: animations,
52
- onChange: onChange,
53
- hideCancelButton: false,
54
- size: "__unstable-large"
55
- }));
56
- }
57
- //# sourceMappingURL=behaviors-panel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["SelectControl","__","onChange","value","behaviors","defaultBehaviors","default","label","noBehaviors","behaviorsOptions","Object","entries","map","behaviorName","charAt","toUpperCase","slice","toLowerCase","options","values","animations","createElement","style","marginTop","hideCancelButton","size","lightbox","animation"],"sources":["@wordpress/block-editor/src/components/global-styles/behaviors-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nexport default function ( { onChange, value, behaviors } ) {\n\tconst defaultBehaviors = {\n\t\tdefault: {\n\t\t\tvalue: 'default',\n\t\t\tlabel: __( 'Default' ),\n\t\t},\n\t\tnoBehaviors: {\n\t\t\tvalue: '',\n\t\t\tlabel: __( 'No behaviors' ),\n\t\t},\n\t};\n\n\tconst behaviorsOptions = Object.entries( behaviors ).map(\n\t\t( [ behaviorName ] ) => ( {\n\t\t\tvalue: behaviorName,\n\t\t\t// Capitalize the first letter of the behavior name.\n\t\t\tlabel: `${ behaviorName.charAt( 0 ).toUpperCase() }${ behaviorName\n\t\t\t\t.slice( 1 )\n\t\t\t\t.toLowerCase() }`,\n\t\t} )\n\t);\n\n\tconst options = [\n\t\t...Object.values( defaultBehaviors ),\n\t\t...behaviorsOptions,\n\t];\n\n\tconst animations = [\n\t\t{\n\t\t\tvalue: 'zoom',\n\t\t\tlabel: __( 'Zoom' ),\n\t\t},\n\t\t{\n\t\t\tvalue: 'fade',\n\t\t\tlabel: __( 'Fade' ),\n\t\t},\n\t];\n\treturn (\n\t\t<div style={ { marginTop: '2rem' } }>\n\t\t\t<SelectControl\n\t\t\t\tlabel={ __( 'Behaviors' ) }\n\t\t\t\t// At the moment we are only supporting one behavior (Lightbox)\n\t\t\t\tvalue={ value }\n\t\t\t\toptions={ options }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thideCancelButton={ true }\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t/>\n\t\t\t{ value === 'lightbox' && (\n\t\t\t\t<SelectControl\n\t\t\t\t\tlabel={ __( 'Animation' ) }\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tbehaviors?.lightbox.animation\n\t\t\t\t\t\t\t? behaviors?.lightbox.animation\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\toptions={ animations }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\thideCancelButton={ false }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,aAAa,QAAQ,uBAAuB;AACrD,SAASC,EAAE,QAAQ,iBAAiB;AAEpC,eAAe,UAAW;EAAEC,QAAQ;EAAEC,KAAK;EAAEC;AAAU,CAAC,EAAG;EAC1D,MAAMC,gBAAgB,GAAG;IACxBC,OAAO,EAAE;MACRH,KAAK,EAAE,SAAS;MAChBI,KAAK,EAAEN,EAAE,CAAE,SAAU;IACtB,CAAC;IACDO,WAAW,EAAE;MACZL,KAAK,EAAE,EAAE;MACTI,KAAK,EAAEN,EAAE,CAAE,cAAe;IAC3B;EACD,CAAC;EAED,MAAMQ,gBAAgB,GAAGC,MAAM,CAACC,OAAO,CAAEP,SAAU,CAAC,CAACQ,GAAG,CACvD,CAAE,CAAEC,YAAY,CAAE,MAAQ;IACzBV,KAAK,EAAEU,YAAY;IACnB;IACAN,KAAK,EAAG,GAAGM,YAAY,CAACC,MAAM,CAAE,CAAE,CAAC,CAACC,WAAW,CAAC,CAAG,GAAGF,YAAY,CAChEG,KAAK,CAAE,CAAE,CAAC,CACVC,WAAW,CAAC,CAAG;EAClB,CAAC,CACF,CAAC;EAED,MAAMC,OAAO,GAAG,CACf,GAAGR,MAAM,CAACS,MAAM,CAAEd,gBAAiB,CAAC,EACpC,GAAGI,gBAAgB,CACnB;EAED,MAAMW,UAAU,GAAG,CAClB;IACCjB,KAAK,EAAE,MAAM;IACbI,KAAK,EAAEN,EAAE,CAAE,MAAO;EACnB,CAAC,EACD;IACCE,KAAK,EAAE,MAAM;IACbI,KAAK,EAAEN,EAAE,CAAE,MAAO;EACnB,CAAC,CACD;EACD,OACCoB,aAAA;IAAKC,KAAK,EAAG;MAAEC,SAAS,EAAE;IAAO;EAAG,GACnCF,aAAA,CAACrB,aAAa;IACbO,KAAK,EAAGN,EAAE,CAAE,WAAY;IACxB;IAAA;IACAE,KAAK,EAAGA,KAAO;IACfe,OAAO,EAAGA,OAAS;IACnBhB,QAAQ,EAAGA,QAAU;IACrBsB,gBAAgB,EAAG,IAAM;IACzBC,IAAI,EAAC;EAAkB,CACvB,CAAC,EACAtB,KAAK,KAAK,UAAU,IACrBkB,aAAA,CAACrB,aAAa;IACbO,KAAK,EAAGN,EAAE,CAAE,WAAY,CAAG;IAC3BE,KAAK,EACJC,SAAS,EAAEsB,QAAQ,CAACC,SAAS,GAC1BvB,SAAS,EAAEsB,QAAQ,CAACC,SAAS,GAC7B,EACH;IACDT,OAAO,EAAGE,UAAY;IACtBlB,QAAQ,EAAGA,QAAU;IACrBsB,gBAAgB,EAAG,KAAO;IAC1BC,IAAI,EAAC;EAAkB,CACvB,CAEE,CAAC;AAER"}
@@ -1,76 +0,0 @@
1
- import { createElement, Fragment } from "@wordpress/element";
2
- /**
3
- * WordPress dependencies
4
- */
5
- import { useMemo } from '@wordpress/element';
6
- import { __ } from '@wordpress/i18n';
7
- import { addQueryArgs } from '@wordpress/url';
8
- import { Button } from '@wordpress/components';
9
-
10
- /**
11
- * Internal dependencies
12
- */
13
- import BlockTypesList from '../block-types-list';
14
- import InserterPanel from './panel';
15
- import InserterNoResults from './no-results';
16
- import useBlockTypesState from './hooks/use-block-types-state';
17
- import ReusableBlocksRenameHint from './reusable-block-rename-hint';
18
- function ReusableBlocksList({
19
- onHover,
20
- onInsert,
21
- rootClientId
22
- }) {
23
- const [items,,, onSelectItem] = useBlockTypesState(rootClientId, onInsert);
24
- const filteredItems = useMemo(() => {
25
- return items.filter(({
26
- category,
27
- syncStatus
28
- }) => category === 'reusable' && syncStatus !== 'unsynced');
29
- }, [items]);
30
- if (filteredItems.length === 0) {
31
- return createElement(InserterNoResults, null);
32
- }
33
- return createElement(InserterPanel, {
34
- title: __('Synced patterns')
35
- }, createElement(BlockTypesList, {
36
- items: filteredItems,
37
- onSelect: onSelectItem,
38
- onHover: onHover,
39
- label: __('Synced patterns')
40
- }));
41
- }
42
-
43
- // The unwrapped component is only exported for use by unit tests.
44
- /**
45
- * List of reusable blocks shown in the "Reusable" tab of the inserter.
46
- *
47
- * @param {Object} props Component props.
48
- * @param {?string} props.rootClientId Client id of block to insert into.
49
- * @param {Function} props.onInsert Callback to run when item is inserted.
50
- * @param {Function} props.onHover Callback to run when item is hovered.
51
- *
52
- * @return {WPComponent} The component.
53
- */
54
- export function ReusableBlocksTab({
55
- rootClientId,
56
- onInsert,
57
- onHover
58
- }) {
59
- return createElement(Fragment, null, createElement("div", {
60
- className: "block-editor-inserter__hint"
61
- }, createElement(ReusableBlocksRenameHint, null)), createElement(ReusableBlocksList, {
62
- onHover: onHover,
63
- onInsert: onInsert,
64
- rootClientId: rootClientId
65
- }), createElement("div", {
66
- className: "block-editor-inserter__manage-reusable-blocks-container"
67
- }, createElement(Button, {
68
- className: "block-editor-inserter__manage-reusable-blocks",
69
- variant: "secondary",
70
- href: addQueryArgs('edit.php', {
71
- post_type: 'wp_block'
72
- })
73
- }, __('Manage my patterns'))));
74
- }
75
- export default ReusableBlocksTab;
76
- //# sourceMappingURL=reusable-blocks-tab.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useMemo","__","addQueryArgs","Button","BlockTypesList","InserterPanel","InserterNoResults","useBlockTypesState","ReusableBlocksRenameHint","ReusableBlocksList","onHover","onInsert","rootClientId","items","onSelectItem","filteredItems","filter","category","syncStatus","length","createElement","title","onSelect","label","ReusableBlocksTab","Fragment","className","variant","href","post_type"],"sources":["@wordpress/block-editor/src/components/inserter/reusable-blocks-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { addQueryArgs } from '@wordpress/url';\nimport { Button } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesList from '../block-types-list';\nimport InserterPanel from './panel';\nimport InserterNoResults from './no-results';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport ReusableBlocksRenameHint from './reusable-block-rename-hint';\n\nfunction ReusableBlocksList( { onHover, onInsert, rootClientId } ) {\n\tconst [ items, , , onSelectItem ] = useBlockTypesState(\n\t\trootClientId,\n\t\tonInsert\n\t);\n\n\tconst filteredItems = useMemo( () => {\n\t\treturn items.filter(\n\t\t\t( { category, syncStatus } ) =>\n\t\t\t\tcategory === 'reusable' && syncStatus !== 'unsynced'\n\t\t);\n\t}, [ items ] );\n\n\tif ( filteredItems.length === 0 ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\treturn (\n\t\t<InserterPanel title={ __( 'Synced patterns' ) }>\n\t\t\t<BlockTypesList\n\t\t\t\titems={ filteredItems }\n\t\t\t\tonSelect={ onSelectItem }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ __( 'Synced patterns' ) }\n\t\t\t/>\n\t\t</InserterPanel>\n\t);\n}\n\n// The unwrapped component is only exported for use by unit tests.\n/**\n * List of reusable blocks shown in the \"Reusable\" tab of the inserter.\n *\n * @param {Object} props Component props.\n * @param {?string} props.rootClientId Client id of block to insert into.\n * @param {Function} props.onInsert Callback to run when item is inserted.\n * @param {Function} props.onHover Callback to run when item is hovered.\n *\n * @return {WPComponent} The component.\n */\nexport function ReusableBlocksTab( { rootClientId, onInsert, onHover } ) {\n\treturn (\n\t\t<>\n\t\t\t<div className=\"block-editor-inserter__hint\">\n\t\t\t\t<ReusableBlocksRenameHint />\n\t\t\t</div>\n\t\t\t<ReusableBlocksList\n\t\t\t\tonHover={ onHover }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t/>\n\t\t\t<div className=\"block-editor-inserter__manage-reusable-blocks-container\">\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"block-editor-inserter__manage-reusable-blocks\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\thref={ addQueryArgs( 'edit.php', {\n\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Manage my patterns' ) }\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ReusableBlocksTab;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,MAAM,QAAQ,uBAAuB;;AAE9C;AACA;AACA;AACA,OAAOC,cAAc,MAAM,qBAAqB;AAChD,OAAOC,aAAa,MAAM,SAAS;AACnC,OAAOC,iBAAiB,MAAM,cAAc;AAC5C,OAAOC,kBAAkB,MAAM,+BAA+B;AAC9D,OAAOC,wBAAwB,MAAM,8BAA8B;AAEnE,SAASC,kBAAkBA,CAAE;EAAEC,OAAO;EAAEC,QAAQ;EAAEC;AAAa,CAAC,EAAG;EAClE,MAAM,CAAEC,KAAK,IAAMC,YAAY,CAAE,GAAGP,kBAAkB,CACrDK,YAAY,EACZD,QACD,CAAC;EAED,MAAMI,aAAa,GAAGf,OAAO,CAAE,MAAM;IACpC,OAAOa,KAAK,CAACG,MAAM,CAClB,CAAE;MAAEC,QAAQ;MAAEC;IAAW,CAAC,KACzBD,QAAQ,KAAK,UAAU,IAAIC,UAAU,KAAK,UAC5C,CAAC;EACF,CAAC,EAAE,CAAEL,KAAK,CAAG,CAAC;EAEd,IAAKE,aAAa,CAACI,MAAM,KAAK,CAAC,EAAG;IACjC,OAAOC,aAAA,CAACd,iBAAiB,MAAE,CAAC;EAC7B;EAEA,OACCc,aAAA,CAACf,aAAa;IAACgB,KAAK,EAAGpB,EAAE,CAAE,iBAAkB;EAAG,GAC/CmB,aAAA,CAAChB,cAAc;IACdS,KAAK,EAAGE,aAAe;IACvBO,QAAQ,EAAGR,YAAc;IACzBJ,OAAO,EAAGA,OAAS;IACnBa,KAAK,EAAGtB,EAAE,CAAE,iBAAkB;EAAG,CACjC,CACa,CAAC;AAElB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASuB,iBAAiBA,CAAE;EAAEZ,YAAY;EAAED,QAAQ;EAAED;AAAQ,CAAC,EAAG;EACxE,OACCU,aAAA,CAAAK,QAAA,QACCL,aAAA;IAAKM,SAAS,EAAC;EAA6B,GAC3CN,aAAA,CAACZ,wBAAwB,MAAE,CACvB,CAAC,EACNY,aAAA,CAACX,kBAAkB;IAClBC,OAAO,EAAGA,OAAS;IACnBC,QAAQ,EAAGA,QAAU;IACrBC,YAAY,EAAGA;EAAc,CAC7B,CAAC,EACFQ,aAAA;IAAKM,SAAS,EAAC;EAAyD,GACvEN,aAAA,CAACjB,MAAM;IACNuB,SAAS,EAAC,+CAA+C;IACzDC,OAAO,EAAC,WAAW;IACnBC,IAAI,EAAG1B,YAAY,CAAE,UAAU,EAAE;MAChC2B,SAAS,EAAE;IACZ,CAAE;EAAG,GAEH5B,EAAE,CAAE,oBAAqB,CACpB,CACJ,CACJ,CAAC;AAEL;AAEA,eAAeuB,iBAAiB"}
@@ -1,167 +0,0 @@
1
- import { createElement } from "@wordpress/element";
2
- /**
3
- * WordPress dependencies
4
- */
5
- import { __ } from '@wordpress/i18n';
6
- import { addFilter } from '@wordpress/hooks';
7
- import { Fragment } from '@wordpress/element';
8
- import { PanelBody, ToggleControl } from '@wordpress/components';
9
- import { createHigherOrderComponent } from '@wordpress/compose';
10
- import { createBlock, store as blocksStore } from '@wordpress/blocks';
11
- import { useDispatch, useSelect } from '@wordpress/data';
12
-
13
- /**
14
- * Internal dependencies
15
- */
16
- import { InspectorControls } from '../components';
17
- import { store as blockEditorStore } from '../store';
18
- function AutoInsertingBlocksControl(props) {
19
- const {
20
- autoInsertedBlocksForCurrentBlock,
21
- groupedAutoInsertedBlocks
22
- } = useSelect(select => {
23
- const {
24
- getBlockTypes
25
- } = select(blocksStore);
26
- const _autoInsertedBlocksForCurrentBlock = getBlockTypes()?.filter(({
27
- autoInsert
28
- }) => autoInsert && props.blockName in autoInsert);
29
-
30
- // Group by block namespace (i.e. prefix before the slash).
31
- const _groupedAutoInsertedBlocks = _autoInsertedBlocksForCurrentBlock?.reduce((groups, block) => {
32
- const [namespace] = block.name.split('/');
33
- if (!groups[namespace]) {
34
- groups[namespace] = [];
35
- }
36
- groups[namespace].push(block);
37
- return groups;
38
- }, {});
39
- return {
40
- autoInsertedBlocksForCurrentBlock: _autoInsertedBlocksForCurrentBlock,
41
- groupedAutoInsertedBlocks: _groupedAutoInsertedBlocks
42
- };
43
- }, [props.blockName]);
44
- const {
45
- autoInsertedBlockClientIds,
46
- blockIndex,
47
- rootClientId,
48
- innerBlocksLength
49
- } = useSelect(select => {
50
- const {
51
- getBlock,
52
- getBlockIndex,
53
- getBlockRootClientId
54
- } = select(blockEditorStore);
55
- const _rootClientId = getBlockRootClientId(props.clientId);
56
- const _autoInsertedBlockClientIds = autoInsertedBlocksForCurrentBlock.reduce((clientIds, block) => {
57
- const relativePosition = block?.autoInsert?.[props.blockName];
58
- let candidates;
59
- switch (relativePosition) {
60
- case 'before':
61
- case 'after':
62
- // Any of the current block's siblings (with the right block type) qualifies
63
- // as an auto-inserted block (inserted `before` or `after` the current one),
64
- // as the block might've been auto-inserted and then moved around a bit by the user.
65
- candidates = getBlock(_rootClientId)?.innerBlocks;
66
- break;
67
- case 'first_child':
68
- case 'last_child':
69
- // Any of the current block's child blocks (with the right block type) qualifies
70
- // as an auto-inserted first or last child block, as the block might've been
71
- // auto-inserted and then moved around a bit by the user.
72
- candidates = getBlock(props.clientId).innerBlocks;
73
- break;
74
- }
75
- const autoInsertedBlock = candidates?.find(({
76
- name
77
- }) => name === block.name);
78
- if (autoInsertedBlock) {
79
- clientIds[block.name] = autoInsertedBlock.clientId;
80
- }
81
-
82
- // TOOD: If no auto-inserted block was found in any of its designated locations,
83
- // we want to check if it's present elsewhere in the block tree.
84
- // If it is, we'd consider it manually inserted and would want to remove the
85
- // corresponding toggle from the block inspector panel.
86
-
87
- return clientIds;
88
- }, {});
89
- return {
90
- blockIndex: getBlockIndex(props.clientId),
91
- innerBlocksLength: getBlock(props.clientId)?.innerBlocks?.length,
92
- rootClientId: _rootClientId,
93
- autoInsertedBlockClientIds: _autoInsertedBlockClientIds
94
- };
95
- }, [autoInsertedBlocksForCurrentBlock, props.blockName, props.clientId]);
96
- const {
97
- insertBlock,
98
- removeBlock
99
- } = useDispatch(blockEditorStore);
100
- if (!autoInsertedBlocksForCurrentBlock.length) {
101
- return null;
102
- }
103
- const insertBlockIntoDesignatedLocation = (block, relativePosition) => {
104
- switch (relativePosition) {
105
- case 'before':
106
- case 'after':
107
- insertBlock(block, relativePosition === 'after' ? blockIndex + 1 : blockIndex, rootClientId,
108
- // Insert as a child of the current block's parent
109
- false);
110
- break;
111
- case 'first_child':
112
- case 'last_child':
113
- insertBlock(block,
114
- // TODO: It'd be great if insertBlock() would accept negative indices for insertion.
115
- relativePosition === 'first_child' ? 0 : innerBlocksLength, props.clientId,
116
- // Insert as a child of the current block.
117
- false);
118
- break;
119
- }
120
- };
121
- return createElement(InspectorControls, null, createElement(PanelBody, {
122
- title: __('Plugins'),
123
- initialOpen: true
124
- }, Object.keys(groupedAutoInsertedBlocks).map(vendor => {
125
- return createElement(Fragment, {
126
- key: vendor
127
- }, createElement("h3", null, vendor), groupedAutoInsertedBlocks[vendor].map(block => {
128
- // TODO: Display block icon.
129
- // <BlockIcon icon={ block.icon } />
130
-
131
- const checked = (block.name in autoInsertedBlockClientIds);
132
- return createElement(ToggleControl, {
133
- checked: checked,
134
- key: block.title,
135
- label: block.title,
136
- onChange: () => {
137
- if (!checked) {
138
- // Create and insert block.
139
- const relativePosition = block.autoInsert[props.blockName];
140
- insertBlockIntoDesignatedLocation(createBlock(block.name), relativePosition);
141
- return;
142
- }
143
-
144
- // Remove block.
145
- const clientId = autoInsertedBlockClientIds[block.name];
146
- removeBlock(clientId, false);
147
- }
148
- });
149
- }));
150
- })));
151
- }
152
- export const withAutoInsertingBlocks = createHigherOrderComponent(BlockEdit => {
153
- return props => {
154
- const blockEdit = createElement(BlockEdit, {
155
- key: "edit",
156
- ...props
157
- });
158
- return createElement(Fragment, null, blockEdit, createElement(AutoInsertingBlocksControl, {
159
- blockName: props.name,
160
- clientId: props.clientId
161
- }));
162
- };
163
- }, 'withAutoInsertingBlocks');
164
- if (window?.__experimentalAutoInsertingBlocks) {
165
- addFilter('editor.BlockEdit', 'core/auto-inserting-blocks/with-inspector-control', withAutoInsertingBlocks);
166
- }
167
- //# sourceMappingURL=auto-inserting-blocks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["__","addFilter","Fragment","PanelBody","ToggleControl","createHigherOrderComponent","createBlock","store","blocksStore","useDispatch","useSelect","InspectorControls","blockEditorStore","AutoInsertingBlocksControl","props","autoInsertedBlocksForCurrentBlock","groupedAutoInsertedBlocks","select","getBlockTypes","_autoInsertedBlocksForCurrentBlock","filter","autoInsert","blockName","_groupedAutoInsertedBlocks","reduce","groups","block","namespace","name","split","push","autoInsertedBlockClientIds","blockIndex","rootClientId","innerBlocksLength","getBlock","getBlockIndex","getBlockRootClientId","_rootClientId","clientId","_autoInsertedBlockClientIds","clientIds","relativePosition","candidates","innerBlocks","autoInsertedBlock","find","length","insertBlock","removeBlock","insertBlockIntoDesignatedLocation","createElement","title","initialOpen","Object","keys","map","vendor","key","checked","label","onChange","withAutoInsertingBlocks","BlockEdit","blockEdit","window","__experimentalAutoInsertingBlocks"],"sources":["@wordpress/block-editor/src/hooks/auto-inserting-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { addFilter } from '@wordpress/hooks';\nimport { Fragment } from '@wordpress/element';\nimport { PanelBody, ToggleControl } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { createBlock, store as blocksStore } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { InspectorControls } from '../components';\nimport { store as blockEditorStore } from '../store';\n\nfunction AutoInsertingBlocksControl( props ) {\n\tconst { autoInsertedBlocksForCurrentBlock, groupedAutoInsertedBlocks } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { getBlockTypes } = select( blocksStore );\n\t\t\t\tconst _autoInsertedBlocksForCurrentBlock =\n\t\t\t\t\tgetBlockTypes()?.filter(\n\t\t\t\t\t\t( { autoInsert } ) =>\n\t\t\t\t\t\t\tautoInsert && props.blockName in autoInsert\n\t\t\t\t\t);\n\n\t\t\t\t// Group by block namespace (i.e. prefix before the slash).\n\t\t\t\tconst _groupedAutoInsertedBlocks =\n\t\t\t\t\t_autoInsertedBlocksForCurrentBlock?.reduce(\n\t\t\t\t\t\t( groups, block ) => {\n\t\t\t\t\t\t\tconst [ namespace ] = block.name.split( '/' );\n\t\t\t\t\t\t\tif ( ! groups[ namespace ] ) {\n\t\t\t\t\t\t\t\tgroups[ namespace ] = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tgroups[ namespace ].push( block );\n\t\t\t\t\t\t\treturn groups;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{}\n\t\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tautoInsertedBlocksForCurrentBlock:\n\t\t\t\t\t\t_autoInsertedBlocksForCurrentBlock,\n\t\t\t\t\tgroupedAutoInsertedBlocks: _groupedAutoInsertedBlocks,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ props.blockName ]\n\t\t);\n\n\tconst {\n\t\tautoInsertedBlockClientIds,\n\t\tblockIndex,\n\t\trootClientId,\n\t\tinnerBlocksLength,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockIndex, getBlockRootClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst _rootClientId = getBlockRootClientId( props.clientId );\n\n\t\t\tconst _autoInsertedBlockClientIds =\n\t\t\t\tautoInsertedBlocksForCurrentBlock.reduce(\n\t\t\t\t\t( clientIds, block ) => {\n\t\t\t\t\t\tconst relativePosition =\n\t\t\t\t\t\t\tblock?.autoInsert?.[ props.blockName ];\n\t\t\t\t\t\tlet candidates;\n\n\t\t\t\t\t\tswitch ( relativePosition ) {\n\t\t\t\t\t\t\tcase 'before':\n\t\t\t\t\t\t\tcase 'after':\n\t\t\t\t\t\t\t\t// Any of the current block's siblings (with the right block type) qualifies\n\t\t\t\t\t\t\t\t// as an auto-inserted block (inserted `before` or `after` the current one),\n\t\t\t\t\t\t\t\t// as the block might've been auto-inserted and then moved around a bit by the user.\n\t\t\t\t\t\t\t\tcandidates =\n\t\t\t\t\t\t\t\t\tgetBlock( _rootClientId )?.innerBlocks;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'first_child':\n\t\t\t\t\t\t\tcase 'last_child':\n\t\t\t\t\t\t\t\t// Any of the current block's child blocks (with the right block type) qualifies\n\t\t\t\t\t\t\t\t// as an auto-inserted first or last child block, as the block might've been\n\t\t\t\t\t\t\t\t// auto-inserted and then moved around a bit by the user.\n\t\t\t\t\t\t\t\tcandidates = getBlock(\n\t\t\t\t\t\t\t\t\tprops.clientId\n\t\t\t\t\t\t\t\t).innerBlocks;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst autoInsertedBlock = candidates?.find(\n\t\t\t\t\t\t\t( { name } ) => name === block.name\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( autoInsertedBlock ) {\n\t\t\t\t\t\t\tclientIds[ block.name ] =\n\t\t\t\t\t\t\t\tautoInsertedBlock.clientId;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// TOOD: If no auto-inserted block was found in any of its designated locations,\n\t\t\t\t\t\t// we want to check if it's present elsewhere in the block tree.\n\t\t\t\t\t\t// If it is, we'd consider it manually inserted and would want to remove the\n\t\t\t\t\t\t// corresponding toggle from the block inspector panel.\n\n\t\t\t\t\t\treturn clientIds;\n\t\t\t\t\t},\n\t\t\t\t\t{}\n\t\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tblockIndex: getBlockIndex( props.clientId ),\n\t\t\t\tinnerBlocksLength: getBlock( props.clientId )?.innerBlocks\n\t\t\t\t\t?.length,\n\t\t\t\trootClientId: _rootClientId,\n\t\t\t\tautoInsertedBlockClientIds: _autoInsertedBlockClientIds,\n\t\t\t};\n\t\t},\n\t\t[ autoInsertedBlocksForCurrentBlock, props.blockName, props.clientId ]\n\t);\n\n\tconst { insertBlock, removeBlock } = useDispatch( blockEditorStore );\n\n\tif ( ! autoInsertedBlocksForCurrentBlock.length ) {\n\t\treturn null;\n\t}\n\n\tconst insertBlockIntoDesignatedLocation = ( block, relativePosition ) => {\n\t\tswitch ( relativePosition ) {\n\t\t\tcase 'before':\n\t\t\tcase 'after':\n\t\t\t\tinsertBlock(\n\t\t\t\t\tblock,\n\t\t\t\t\trelativePosition === 'after' ? blockIndex + 1 : blockIndex,\n\t\t\t\t\trootClientId, // Insert as a child of the current block's parent\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase 'first_child':\n\t\t\tcase 'last_child':\n\t\t\t\tinsertBlock(\n\t\t\t\t\tblock,\n\t\t\t\t\t// TODO: It'd be great if insertBlock() would accept negative indices for insertion.\n\t\t\t\t\trelativePosition === 'first_child' ? 0 : innerBlocksLength,\n\t\t\t\t\tprops.clientId, // Insert as a child of the current block.\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\treturn (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Plugins' ) } initialOpen={ true }>\n\t\t\t\t{ Object.keys( groupedAutoInsertedBlocks ).map( ( vendor ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Fragment key={ vendor }>\n\t\t\t\t\t\t\t<h3>{ vendor }</h3>\n\t\t\t\t\t\t\t{ groupedAutoInsertedBlocks[ vendor ].map(\n\t\t\t\t\t\t\t\t( block ) => {\n\t\t\t\t\t\t\t\t\t// TODO: Display block icon.\n\t\t\t\t\t\t\t\t\t// <BlockIcon icon={ block.icon } />\n\n\t\t\t\t\t\t\t\t\tconst checked =\n\t\t\t\t\t\t\t\t\t\tblock.name in\n\t\t\t\t\t\t\t\t\t\tautoInsertedBlockClientIds;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t\t\t\tchecked={ checked }\n\t\t\t\t\t\t\t\t\t\t\tkey={ block.title }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ block.title }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tif ( ! checked ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Create and insert block.\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst relativePosition =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblock.autoInsert[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprops.blockName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\tinsertBlockIntoDesignatedLocation(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tblock.name\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trelativePosition\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Remove block.\n\t\t\t\t\t\t\t\t\t\t\t\tconst clientId =\n\t\t\t\t\t\t\t\t\t\t\t\t\tautoInsertedBlockClientIds[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblock.name\n\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\tremoveBlock( clientId, false );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n}\n\nexport const withAutoInsertingBlocks = createHigherOrderComponent(\n\t( BlockEdit ) => {\n\t\treturn ( props ) => {\n\t\t\tconst blockEdit = <BlockEdit key=\"edit\" { ...props } />;\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{ blockEdit }\n\t\t\t\t\t<AutoInsertingBlocksControl\n\t\t\t\t\t\tblockName={ props.name }\n\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t};\n\t},\n\t'withAutoInsertingBlocks'\n);\n\nif ( window?.__experimentalAutoInsertingBlocks ) {\n\taddFilter(\n\t\t'editor.BlockEdit',\n\t\t'core/auto-inserting-blocks/with-inspector-control',\n\t\twithAutoInsertingBlocks\n\t);\n}\n"],"mappings":"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"}