@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 +1 @@
1
- {"version":3,"names":["classnames","__","_x","sprintf","getBlockSupport","hasBlockSupport","BaseControl","privateApis","componentsPrivateApis","createHigherOrderComponent","useInstanceId","useSelect","useContext","useMemo","createPortal","Platform","addFilter","BlockList","useSetting","InspectorControls","useBlockDisplayInformation","cleanEmptyObject","unlock","store","blockEditorStore","CustomSelectControl","POSITION_SUPPORT_KEY","OPTION_CLASSNAME","DEFAULT_OPTION","key","value","name","className","STICKY_OPTION","__experimentalHint","FIXED_OPTION","POSITION_SIDES","VALID_POSITION_TYPES","getPositionCSS","selector","style","output","type","positionType","position","includes","forEach","side","undefined","hasStickyPositionSupport","blockType","support","sticky","hasFixedPositionSupport","fixed","hasPositionSupport","hasPositionValue","props","attributes","hasStickyOrFixedPositionValue","resetPosition","setAttributes","top","right","bottom","left","useIsPositionDisabled","blockName","allowFixed","allowSticky","isDisabled","PositionPanel","clientId","firstParentClientId","select","getBlockParents","parents","length","blockInformation","stickyHelpText","title","options","availableOptions","push","onChangeType","next","placementValue","newStyle","selectedOption","find","option","web","createElement","group","__nextHasNoMarginBottom","help","__nextUnconstrainedWidth","__next36pxDefaultSize","label","hideLabelFromVision","describedBy","__experimentalShowSelectedHint","onChange","selectedItem","size","native","withInspectorControls","BlockEdit","positionSupport","showPositionControls","withPositionStyles","BlockListBlock","hasPositionBlockSupport","allowPositionStyles","id","element","__unstableElementContext","positionSelector","css","Fragment"],"sources":["@wordpress/block-editor/src/hooks/position.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport {\n\tBaseControl,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tuseContext,\n\tuseMemo,\n\tcreatePortal,\n\tPlatform,\n} from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../components/block-list';\nimport useSetting from '../components/use-setting';\nimport InspectorControls from '../components/inspector-controls';\nimport useBlockDisplayInformation from '../components/use-block-display-information';\nimport { cleanEmptyObject } from './utils';\nimport { unlock } from '../lock-unlock';\nimport { store as blockEditorStore } from '../store';\n\nconst { CustomSelectControl } = unlock( componentsPrivateApis );\n\nconst POSITION_SUPPORT_KEY = 'position';\n\nconst OPTION_CLASSNAME =\n\t'block-editor-hooks__position-selection__select-control__option';\n\nconst DEFAULT_OPTION = {\n\tkey: 'default',\n\tvalue: '',\n\tname: __( 'Default' ),\n\tclassName: OPTION_CLASSNAME,\n};\n\nconst STICKY_OPTION = {\n\tkey: 'sticky',\n\tvalue: 'sticky',\n\tname: _x( 'Sticky', 'Name for the value of the CSS position property' ),\n\tclassName: OPTION_CLASSNAME,\n\t__experimentalHint: __(\n\t\t'The block will stick to the top of the window instead of scrolling.'\n\t),\n};\n\nconst FIXED_OPTION = {\n\tkey: 'fixed',\n\tvalue: 'fixed',\n\tname: _x( 'Fixed', 'Name for the value of the CSS position property' ),\n\tclassName: OPTION_CLASSNAME,\n\t__experimentalHint: __(\n\t\t'The block will not move when the page is scrolled.'\n\t),\n};\n\nconst POSITION_SIDES = [ 'top', 'right', 'bottom', 'left' ];\nconst VALID_POSITION_TYPES = [ 'sticky', 'fixed' ];\n\n/**\n * Get calculated position CSS.\n *\n * @param {Object} props Component props.\n * @param {string} props.selector Selector to use.\n * @param {Object} props.style Style object.\n * @return {string} The generated CSS rules.\n */\nexport function getPositionCSS( { selector, style } ) {\n\tlet output = '';\n\n\tconst { type: positionType } = style?.position || {};\n\n\tif ( ! VALID_POSITION_TYPES.includes( positionType ) ) {\n\t\treturn output;\n\t}\n\n\toutput += `${ selector } {`;\n\toutput += `position: ${ positionType };`;\n\n\tPOSITION_SIDES.forEach( ( side ) => {\n\t\tif ( style?.position?.[ side ] !== undefined ) {\n\t\t\toutput += `${ side }: ${ style.position[ side ] };`;\n\t\t}\n\t} );\n\n\tif ( positionType === 'sticky' || positionType === 'fixed' ) {\n\t\t// TODO: Replace hard-coded z-index value with a z-index preset approach in theme.json.\n\t\toutput += `z-index: 10`;\n\t}\n\toutput += `}`;\n\n\treturn output;\n}\n\n/**\n * Determines if there is sticky position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasStickyPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! ( true === support || support?.sticky );\n}\n\n/**\n * Determines if there is fixed position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasFixedPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! ( true === support || support?.fixed );\n}\n\n/**\n * Determines if there is position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! support;\n}\n\n/**\n * Checks if there is a current value in the position block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a position value set.\n */\nexport function hasPositionValue( props ) {\n\treturn props.attributes.style?.position?.type !== undefined;\n}\n\n/**\n * Checks if the block is currently set to a sticky or fixed position.\n * This check is helpful for determining how to position block toolbars or other elements.\n *\n * @param {Object} attributes Block attributes.\n * @return {boolean} Whether or not the block is set to a sticky or fixed position.\n */\nexport function hasStickyOrFixedPositionValue( attributes ) {\n\tconst positionType = attributes.style?.position?.type;\n\treturn positionType === 'sticky' || positionType === 'fixed';\n}\n\n/**\n * Resets the position block support attributes. This can be used when disabling\n * the position support controls for a block via a `ToolsPanel`.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetPosition( { attributes = {}, setAttributes } ) {\n\tconst { style = {} } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tposition: {\n\t\t\t\t...style?.position,\n\t\t\t\ttype: undefined,\n\t\t\t\ttop: undefined,\n\t\t\t\tright: undefined,\n\t\t\t\tbottom: undefined,\n\t\t\t\tleft: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if position settings have been disabled.\n *\n * @param {string} name The name of the block.\n *\n * @return {boolean} Whether padding setting is disabled.\n */\nexport function useIsPositionDisabled( { name: blockName } = {} ) {\n\tconst allowFixed = useSetting( 'position.fixed' );\n\tconst allowSticky = useSetting( 'position.sticky' );\n\tconst isDisabled = ! allowFixed && ! allowSticky;\n\n\treturn ! hasPositionSupport( blockName ) || isDisabled;\n}\n\n/*\n * Position controls rendered in an inspector control panel.\n *\n * @param {Object} props\n *\n * @return {WPElement} Position panel.\n */\nexport function PositionPanel( props ) {\n\tconst {\n\t\tattributes: { style = {} },\n\t\tclientId,\n\t\tname: blockName,\n\t\tsetAttributes,\n\t} = props;\n\n\tconst allowFixed = hasFixedPositionSupport( blockName );\n\tconst allowSticky = hasStickyPositionSupport( blockName );\n\tconst value = style?.position?.type;\n\n\tconst { firstParentClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockParents } = select( blockEditorStore );\n\t\t\tconst parents = getBlockParents( clientId );\n\t\t\treturn { firstParentClientId: parents[ parents.length - 1 ] };\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst blockInformation = useBlockDisplayInformation( firstParentClientId );\n\tconst stickyHelpText =\n\t\tallowSticky && value === STICKY_OPTION.value && blockInformation\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %s: the name of the parent block. */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'The block will stick to the scrollable area of the parent %s block.'\n\t\t\t\t\t),\n\t\t\t\t\tblockInformation.title\n\t\t\t )\n\t\t\t: null;\n\n\tconst options = useMemo( () => {\n\t\tconst availableOptions = [ DEFAULT_OPTION ];\n\t\t// Display options if they are allowed, or if a block already has a valid value set.\n\t\t// This allows for a block to be switched off from a position type that is not allowed.\n\t\tif ( allowSticky || value === STICKY_OPTION.value ) {\n\t\t\tavailableOptions.push( STICKY_OPTION );\n\t\t}\n\t\tif ( allowFixed || value === FIXED_OPTION.value ) {\n\t\t\tavailableOptions.push( FIXED_OPTION );\n\t\t}\n\t\treturn availableOptions;\n\t}, [ allowFixed, allowSticky, value ] );\n\n\tconst onChangeType = ( next ) => {\n\t\t// For now, use a hard-coded `0px` value for the position.\n\t\t// `0px` is preferred over `0` as it can be used in `calc()` functions.\n\t\t// In the future, it could be useful to allow for an offset value.\n\t\tconst placementValue = '0px';\n\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\tposition: {\n\t\t\t\t...style?.position,\n\t\t\t\ttype: next,\n\t\t\t\ttop:\n\t\t\t\t\tnext === 'sticky' || next === 'fixed'\n\t\t\t\t\t\t? placementValue\n\t\t\t\t\t\t: undefined,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t} );\n\t};\n\n\tconst selectedOption = value\n\t\t? options.find( ( option ) => option.value === value ) || DEFAULT_OPTION\n\t\t: DEFAULT_OPTION;\n\n\t// Only display position controls if there is at least one option to choose from.\n\treturn Platform.select( {\n\t\tweb:\n\t\t\toptions.length > 1 ? (\n\t\t\t\t<InspectorControls group=\"position\">\n\t\t\t\t\t<BaseControl\n\t\t\t\t\t\tclassName=\"block-editor-hooks__position-selection\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\thelp={ stickyHelpText }\n\t\t\t\t\t>\n\t\t\t\t\t\t<CustomSelectControl\n\t\t\t\t\t\t\t__nextUnconstrainedWidth\n\t\t\t\t\t\t\t__next36pxDefaultSize\n\t\t\t\t\t\t\tclassName=\"block-editor-hooks__position-selection__select-control\"\n\t\t\t\t\t\t\tlabel={ __( 'Position' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tdescribedBy={ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Currently selected position.\n\t\t\t\t\t\t\t\t__( 'Currently selected position: %s' ),\n\t\t\t\t\t\t\t\tselectedOption.name\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\tvalue={ selectedOption }\n\t\t\t\t\t\t\t__experimentalShowSelectedHint\n\t\t\t\t\t\t\tonChange={ ( { selectedItem } ) => {\n\t\t\t\t\t\t\t\tonChangeType( selectedItem.value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BaseControl>\n\t\t\t\t</InspectorControls>\n\t\t\t) : null,\n\t\tnative: null,\n\t} );\n}\n\n/**\n * Override the default edit UI to include position controls.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst positionSupport = hasBlockSupport(\n\t\t\tblockName,\n\t\t\tPOSITION_SUPPORT_KEY\n\t\t);\n\t\tconst showPositionControls =\n\t\t\tpositionSupport && ! useIsPositionDisabled( props );\n\n\t\treturn [\n\t\t\tshowPositionControls && (\n\t\t\t\t<PositionPanel key=\"position\" { ...props } />\n\t\t\t),\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the position styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withPositionStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst hasPositionBlockSupport = hasBlockSupport(\n\t\t\tname,\n\t\t\tPOSITION_SUPPORT_KEY\n\t\t);\n\t\tconst allowPositionStyles =\n\t\t\thasPositionBlockSupport && ! useIsPositionDisabled( props );\n\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\n\t\t// Higher specificity to override defaults in editor UI.\n\t\tconst positionSelector = `.wp-container-${ id }.wp-container-${ id }`;\n\n\t\t// Get CSS string for the current position values.\n\t\tlet css;\n\t\tif ( allowPositionStyles ) {\n\t\t\tcss =\n\t\t\t\tgetPositionCSS( {\n\t\t\t\t\tselector: positionSelector,\n\t\t\t\t\tstyle: attributes?.style,\n\t\t\t\t} ) || '';\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name.\n\t\tconst className = classnames( props?.className, {\n\t\t\t[ `wp-container-${ id }` ]: allowPositionStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t[ `is-position-${ attributes?.style?.position?.type }` ]:\n\t\t\t\tallowPositionStyles &&\n\t\t\t\t!! css &&\n\t\t\t\t!! attributes?.style?.position?.type,\n\t\t} );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ allowPositionStyles &&\n\t\t\t\t\telement &&\n\t\t\t\t\t!! css &&\n\t\t\t\t\tcreatePortal( <style>{ css }</style>, element ) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withPositionStyles'\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/position/with-position-styles',\n\twithPositionStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/position/with-inspector-controls',\n\twithInspectorControls\n);\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","__","_x","sprintf","getBlockSupport","hasBlockSupport","BaseControl","privateApis","componentsPrivateApis","createHigherOrderComponent","useInstanceId","useSelect","useContext","useMemo","createPortal","Platform","addFilter","BlockList","useSetting","InspectorControls","useBlockDisplayInformation","cleanEmptyObject","unlock","store","blockEditorStore","CustomSelectControl","POSITION_SUPPORT_KEY","OPTION_CLASSNAME","DEFAULT_OPTION","key","value","name","className","STICKY_OPTION","__experimentalHint","FIXED_OPTION","POSITION_SIDES","VALID_POSITION_TYPES","getPositionCSS","selector","style","output","type","positionType","position","includes","forEach","side","undefined","hasStickyPositionSupport","blockType","support","sticky","hasFixedPositionSupport","fixed","hasPositionSupport","hasPositionValue","props","attributes","hasStickyOrFixedPositionValue","resetPosition","setAttributes","top","right","bottom","left","useIsPositionDisabled","blockName","allowFixed","allowSticky","isDisabled","PositionPanel","clientId","firstParentClientId","select","getBlockParents","parents","length","blockInformation","stickyHelpText","title","options","availableOptions","push","onChangeType","next","placementValue","newStyle","selectedOption","find","option","web","createElement","group","__nextHasNoMarginBottom","help","__nextUnconstrainedWidth","__next36pxDefaultSize","label","hideLabelFromVision","describedBy","__experimentalShowSelectedHint","onChange","selectedItem","size","native","withInspectorControls","BlockEdit","positionSupport","isPositionDisabled","showPositionControls","withPositionStyles","BlockListBlock","hasPositionBlockSupport","allowPositionStyles","id","element","__unstableElementContext","positionSelector","css","Fragment"],"sources":["@wordpress/block-editor/src/hooks/position.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport {\n\tBaseControl,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tuseContext,\n\tuseMemo,\n\tcreatePortal,\n\tPlatform,\n} from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../components/block-list';\nimport useSetting from '../components/use-setting';\nimport InspectorControls from '../components/inspector-controls';\nimport useBlockDisplayInformation from '../components/use-block-display-information';\nimport { cleanEmptyObject } from './utils';\nimport { unlock } from '../lock-unlock';\nimport { store as blockEditorStore } from '../store';\n\nconst { CustomSelectControl } = unlock( componentsPrivateApis );\n\nconst POSITION_SUPPORT_KEY = 'position';\n\nconst OPTION_CLASSNAME =\n\t'block-editor-hooks__position-selection__select-control__option';\n\nconst DEFAULT_OPTION = {\n\tkey: 'default',\n\tvalue: '',\n\tname: __( 'Default' ),\n\tclassName: OPTION_CLASSNAME,\n};\n\nconst STICKY_OPTION = {\n\tkey: 'sticky',\n\tvalue: 'sticky',\n\tname: _x( 'Sticky', 'Name for the value of the CSS position property' ),\n\tclassName: OPTION_CLASSNAME,\n\t__experimentalHint: __(\n\t\t'The block will stick to the top of the window instead of scrolling.'\n\t),\n};\n\nconst FIXED_OPTION = {\n\tkey: 'fixed',\n\tvalue: 'fixed',\n\tname: _x( 'Fixed', 'Name for the value of the CSS position property' ),\n\tclassName: OPTION_CLASSNAME,\n\t__experimentalHint: __(\n\t\t'The block will not move when the page is scrolled.'\n\t),\n};\n\nconst POSITION_SIDES = [ 'top', 'right', 'bottom', 'left' ];\nconst VALID_POSITION_TYPES = [ 'sticky', 'fixed' ];\n\n/**\n * Get calculated position CSS.\n *\n * @param {Object} props Component props.\n * @param {string} props.selector Selector to use.\n * @param {Object} props.style Style object.\n * @return {string} The generated CSS rules.\n */\nexport function getPositionCSS( { selector, style } ) {\n\tlet output = '';\n\n\tconst { type: positionType } = style?.position || {};\n\n\tif ( ! VALID_POSITION_TYPES.includes( positionType ) ) {\n\t\treturn output;\n\t}\n\n\toutput += `${ selector } {`;\n\toutput += `position: ${ positionType };`;\n\n\tPOSITION_SIDES.forEach( ( side ) => {\n\t\tif ( style?.position?.[ side ] !== undefined ) {\n\t\t\toutput += `${ side }: ${ style.position[ side ] };`;\n\t\t}\n\t} );\n\n\tif ( positionType === 'sticky' || positionType === 'fixed' ) {\n\t\t// TODO: Replace hard-coded z-index value with a z-index preset approach in theme.json.\n\t\toutput += `z-index: 10`;\n\t}\n\toutput += `}`;\n\n\treturn output;\n}\n\n/**\n * Determines if there is sticky position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasStickyPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! ( true === support || support?.sticky );\n}\n\n/**\n * Determines if there is fixed position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasFixedPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! ( true === support || support?.fixed );\n}\n\n/**\n * Determines if there is position support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasPositionSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, POSITION_SUPPORT_KEY );\n\treturn !! support;\n}\n\n/**\n * Checks if there is a current value in the position block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a position value set.\n */\nexport function hasPositionValue( props ) {\n\treturn props.attributes.style?.position?.type !== undefined;\n}\n\n/**\n * Checks if the block is currently set to a sticky or fixed position.\n * This check is helpful for determining how to position block toolbars or other elements.\n *\n * @param {Object} attributes Block attributes.\n * @return {boolean} Whether or not the block is set to a sticky or fixed position.\n */\nexport function hasStickyOrFixedPositionValue( attributes ) {\n\tconst positionType = attributes.style?.position?.type;\n\treturn positionType === 'sticky' || positionType === 'fixed';\n}\n\n/**\n * Resets the position block support attributes. This can be used when disabling\n * the position support controls for a block via a `ToolsPanel`.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetPosition( { attributes = {}, setAttributes } ) {\n\tconst { style = {} } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tposition: {\n\t\t\t\t...style?.position,\n\t\t\t\ttype: undefined,\n\t\t\t\ttop: undefined,\n\t\t\t\tright: undefined,\n\t\t\t\tbottom: undefined,\n\t\t\t\tleft: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if position settings have been disabled.\n *\n * @param {string} name The name of the block.\n *\n * @return {boolean} Whether padding setting is disabled.\n */\nexport function useIsPositionDisabled( { name: blockName } = {} ) {\n\tconst allowFixed = useSetting( 'position.fixed' );\n\tconst allowSticky = useSetting( 'position.sticky' );\n\tconst isDisabled = ! allowFixed && ! allowSticky;\n\n\treturn ! hasPositionSupport( blockName ) || isDisabled;\n}\n\n/*\n * Position controls rendered in an inspector control panel.\n *\n * @param {Object} props\n *\n * @return {WPElement} Position panel.\n */\nexport function PositionPanel( props ) {\n\tconst {\n\t\tattributes: { style = {} },\n\t\tclientId,\n\t\tname: blockName,\n\t\tsetAttributes,\n\t} = props;\n\n\tconst allowFixed = hasFixedPositionSupport( blockName );\n\tconst allowSticky = hasStickyPositionSupport( blockName );\n\tconst value = style?.position?.type;\n\n\tconst { firstParentClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockParents } = select( blockEditorStore );\n\t\t\tconst parents = getBlockParents( clientId );\n\t\t\treturn { firstParentClientId: parents[ parents.length - 1 ] };\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst blockInformation = useBlockDisplayInformation( firstParentClientId );\n\tconst stickyHelpText =\n\t\tallowSticky && value === STICKY_OPTION.value && blockInformation\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %s: the name of the parent block. */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'The block will stick to the scrollable area of the parent %s block.'\n\t\t\t\t\t),\n\t\t\t\t\tblockInformation.title\n\t\t\t )\n\t\t\t: null;\n\n\tconst options = useMemo( () => {\n\t\tconst availableOptions = [ DEFAULT_OPTION ];\n\t\t// Display options if they are allowed, or if a block already has a valid value set.\n\t\t// This allows for a block to be switched off from a position type that is not allowed.\n\t\tif ( allowSticky || value === STICKY_OPTION.value ) {\n\t\t\tavailableOptions.push( STICKY_OPTION );\n\t\t}\n\t\tif ( allowFixed || value === FIXED_OPTION.value ) {\n\t\t\tavailableOptions.push( FIXED_OPTION );\n\t\t}\n\t\treturn availableOptions;\n\t}, [ allowFixed, allowSticky, value ] );\n\n\tconst onChangeType = ( next ) => {\n\t\t// For now, use a hard-coded `0px` value for the position.\n\t\t// `0px` is preferred over `0` as it can be used in `calc()` functions.\n\t\t// In the future, it could be useful to allow for an offset value.\n\t\tconst placementValue = '0px';\n\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\tposition: {\n\t\t\t\t...style?.position,\n\t\t\t\ttype: next,\n\t\t\t\ttop:\n\t\t\t\t\tnext === 'sticky' || next === 'fixed'\n\t\t\t\t\t\t? placementValue\n\t\t\t\t\t\t: undefined,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t} );\n\t};\n\n\tconst selectedOption = value\n\t\t? options.find( ( option ) => option.value === value ) || DEFAULT_OPTION\n\t\t: DEFAULT_OPTION;\n\n\t// Only display position controls if there is at least one option to choose from.\n\treturn Platform.select( {\n\t\tweb:\n\t\t\toptions.length > 1 ? (\n\t\t\t\t<InspectorControls group=\"position\">\n\t\t\t\t\t<BaseControl\n\t\t\t\t\t\tclassName=\"block-editor-hooks__position-selection\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\thelp={ stickyHelpText }\n\t\t\t\t\t>\n\t\t\t\t\t\t<CustomSelectControl\n\t\t\t\t\t\t\t__nextUnconstrainedWidth\n\t\t\t\t\t\t\t__next36pxDefaultSize\n\t\t\t\t\t\t\tclassName=\"block-editor-hooks__position-selection__select-control\"\n\t\t\t\t\t\t\tlabel={ __( 'Position' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tdescribedBy={ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Currently selected position.\n\t\t\t\t\t\t\t\t__( 'Currently selected position: %s' ),\n\t\t\t\t\t\t\t\tselectedOption.name\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\tvalue={ selectedOption }\n\t\t\t\t\t\t\t__experimentalShowSelectedHint\n\t\t\t\t\t\t\tonChange={ ( { selectedItem } ) => {\n\t\t\t\t\t\t\t\tonChangeType( selectedItem.value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BaseControl>\n\t\t\t\t</InspectorControls>\n\t\t\t) : null,\n\t\tnative: null,\n\t} );\n}\n\n/**\n * Override the default edit UI to include position controls.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst positionSupport = hasBlockSupport(\n\t\t\tblockName,\n\t\t\tPOSITION_SUPPORT_KEY\n\t\t);\n\t\tconst isPositionDisabled = useIsPositionDisabled( props );\n\t\tconst showPositionControls = positionSupport && ! isPositionDisabled;\n\n\t\treturn [\n\t\t\tshowPositionControls && (\n\t\t\t\t<PositionPanel key=\"position\" { ...props } />\n\t\t\t),\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the position styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withPositionStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst hasPositionBlockSupport = hasBlockSupport(\n\t\t\tname,\n\t\t\tPOSITION_SUPPORT_KEY\n\t\t);\n\t\tconst isPositionDisabled = useIsPositionDisabled( props );\n\t\tconst allowPositionStyles =\n\t\t\thasPositionBlockSupport && ! isPositionDisabled;\n\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\n\t\t// Higher specificity to override defaults in editor UI.\n\t\tconst positionSelector = `.wp-container-${ id }.wp-container-${ id }`;\n\n\t\t// Get CSS string for the current position values.\n\t\tlet css;\n\t\tif ( allowPositionStyles ) {\n\t\t\tcss =\n\t\t\t\tgetPositionCSS( {\n\t\t\t\t\tselector: positionSelector,\n\t\t\t\t\tstyle: attributes?.style,\n\t\t\t\t} ) || '';\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name.\n\t\tconst className = classnames( props?.className, {\n\t\t\t[ `wp-container-${ id }` ]: allowPositionStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t[ `is-position-${ attributes?.style?.position?.type }` ]:\n\t\t\t\tallowPositionStyles &&\n\t\t\t\t!! css &&\n\t\t\t\t!! attributes?.style?.position?.type,\n\t\t} );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ allowPositionStyles &&\n\t\t\t\t\telement &&\n\t\t\t\t\t!! css &&\n\t\t\t\t\tcreatePortal( <style>{ css }</style>, element ) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withPositionStyles'\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/position/with-position-styles',\n\twithPositionStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/position/with-inspector-controls',\n\twithInspectorControls\n);\n"],"mappings":"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"}
@@ -17,14 +17,16 @@ import { getCSSRules, compileCSS } from '@wordpress/style-engine';
17
17
  * Internal dependencies
18
18
  */
19
19
  import BlockList from '../components/block-list';
20
+ import { BACKGROUND_SUPPORT_KEY, BackgroundImagePanel } from './background';
20
21
  import { BORDER_SUPPORT_KEY, BorderPanel } from './border';
21
22
  import { COLOR_SUPPORT_KEY, ColorEdit } from './color';
22
23
  import { TypographyPanel, TYPOGRAPHY_SUPPORT_KEY, TYPOGRAPHY_SUPPORT_KEYS } from './typography';
23
24
  import { DIMENSIONS_SUPPORT_KEY, SPACING_SUPPORT_KEY, DimensionsPanel } from './dimensions';
24
25
  import useDisplayBlockControls from '../components/use-display-block-controls';
25
26
  import { shouldSkipSerialization } from './utils';
27
+ import { scopeSelector } from '../components/global-styles/utils';
26
28
  import { useBlockEditingMode } from '../components/block-editing-mode';
27
- const styleSupportKeys = [...TYPOGRAPHY_SUPPORT_KEYS, BORDER_SUPPORT_KEY, COLOR_SUPPORT_KEY, DIMENSIONS_SUPPORT_KEY, SPACING_SUPPORT_KEY];
29
+ const styleSupportKeys = [...TYPOGRAPHY_SUPPORT_KEYS, BORDER_SUPPORT_KEY, COLOR_SUPPORT_KEY, DIMENSIONS_SUPPORT_KEY, BACKGROUND_SUPPORT_KEY, SPACING_SUPPORT_KEY];
28
30
  const hasStyleSupport = nameOrType => styleSupportKeys.some(key => hasBlockSupport(nameOrType, key));
29
31
 
30
32
  /**
@@ -96,7 +98,11 @@ const skipSerializationPathsEdit = {
96
98
  */
97
99
  const skipSerializationPathsSave = {
98
100
  ...skipSerializationPathsEdit,
99
- [`${SPACING_SUPPORT_KEY}`]: ['spacing.blockGap']
101
+ [`${BACKGROUND_SUPPORT_KEY}`]: [BACKGROUND_SUPPORT_KEY] // Skip serialization of background support in save mode.
102
+ };
103
+
104
+ const skipSerializationPathsSaveChecks = {
105
+ [`${BACKGROUND_SUPPORT_KEY}`]: true
100
106
  };
101
107
 
102
108
  /**
@@ -247,7 +253,7 @@ export function addSaveProps(props, blockType, attributes, skipPaths = skipSeria
247
253
  style
248
254
  } = attributes;
249
255
  Object.entries(skipPaths).forEach(([indicator, path]) => {
250
- const skipSerialization = getBlockSupport(blockType, indicator);
256
+ const skipSerialization = skipSerializationPathsSaveChecks[indicator] || getBlockSupport(blockType, indicator);
251
257
  if (skipSerialization === true) {
252
258
  style = omitStyle(style, path);
253
259
  }
@@ -307,6 +313,8 @@ export const withBlockControls = createHigherOrderComponent(BlockEdit => props =
307
313
  const blockEditingMode = useBlockEditingMode();
308
314
  return createElement(Fragment, null, shouldDisplayControls && blockEditingMode === 'default' && createElement(Fragment, null, createElement(ColorEdit, {
309
315
  ...props
316
+ }), createElement(BackgroundImagePanel, {
317
+ ...props
310
318
  }), createElement(TypographyPanel, {
311
319
  ...props
312
320
  }), createElement(BorderPanel, {
@@ -319,6 +327,19 @@ export const withBlockControls = createHigherOrderComponent(BlockEdit => props =
319
327
  }));
320
328
  }, 'withToolbarControls');
321
329
 
330
+ // Defines which element types are supported, including their hover styles or
331
+ // any other elements that have been included under a single element type
332
+ // e.g. heading and h1-h6.
333
+ const elementTypes = [{
334
+ elementType: 'button'
335
+ }, {
336
+ elementType: 'link',
337
+ pseudo: [':hover']
338
+ }, {
339
+ elementType: 'heading',
340
+ elements: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']
341
+ }];
342
+
322
343
  /**
323
344
  * Override the default block element to include elements styles.
324
345
  *
@@ -327,32 +348,60 @@ export const withBlockControls = createHigherOrderComponent(BlockEdit => props =
327
348
  */
328
349
  const withElementsStyles = createHigherOrderComponent(BlockListBlock => props => {
329
350
  const blockElementsContainerIdentifier = `wp-elements-${useInstanceId(BlockListBlock)}`;
330
- const skipLinkColorSerialization = shouldSkipSerialization(props.name, COLOR_SUPPORT_KEY, 'link');
351
+
352
+ // The .editor-styles-wrapper selector is required on elements styles. As it is
353
+ // added to all other editor styles, not providing it causes reset and global
354
+ // styles to override element styles because of higher specificity.
355
+ const baseElementSelector = `.editor-styles-wrapper .${blockElementsContainerIdentifier}`;
356
+ const blockElementStyles = props.attributes.style?.elements;
331
357
  const styles = useMemo(() => {
332
- // The .editor-styles-wrapper selector is required on elements styles. As it is
333
- // added to all other editor styles, not providing it causes reset and global
334
- // styles to override element styles because of higher specificity.
335
- const elements = [{
336
- styles: !skipLinkColorSerialization ? props.attributes.style?.elements?.link : undefined,
337
- selector: `.editor-styles-wrapper .${blockElementsContainerIdentifier} ${ELEMENTS.link}`
338
- }, {
339
- styles: !skipLinkColorSerialization ? props.attributes.style?.elements?.link?.[':hover'] : undefined,
340
- selector: `.editor-styles-wrapper .${blockElementsContainerIdentifier} ${ELEMENTS.link}:hover`
341
- }];
342
- const elementCssRules = [];
343
- for (const {
344
- styles: elementStyles,
345
- selector
346
- } of elements) {
358
+ if (!blockElementStyles) {
359
+ return;
360
+ }
361
+ const elementCSSRules = [];
362
+ elementTypes.forEach(({
363
+ elementType,
364
+ pseudo,
365
+ elements
366
+ }) => {
367
+ const skipSerialization = shouldSkipSerialization(props.name, COLOR_SUPPORT_KEY, elementType);
368
+ if (skipSerialization) {
369
+ return;
370
+ }
371
+ const elementStyles = blockElementStyles?.[elementType];
372
+
373
+ // Process primary element type styles.
347
374
  if (elementStyles) {
348
- const cssRule = compileCSS(elementStyles, {
375
+ const selector = scopeSelector(baseElementSelector, ELEMENTS[elementType]);
376
+ elementCSSRules.push(compileCSS(elementStyles, {
349
377
  selector
378
+ }));
379
+
380
+ // Process any interactive states for the element type.
381
+ if (pseudo) {
382
+ pseudo.forEach(pseudoSelector => {
383
+ if (elementStyles[pseudoSelector]) {
384
+ elementCSSRules.push(compileCSS(elementStyles[pseudoSelector], {
385
+ selector: scopeSelector(baseElementSelector, `${ELEMENTS[elementType]}${pseudoSelector}`)
386
+ }));
387
+ }
388
+ });
389
+ }
390
+ }
391
+
392
+ // Process related elements e.g. h1-h6 for headings
393
+ if (elements) {
394
+ elements.forEach(element => {
395
+ if (blockElementStyles[element]) {
396
+ elementCSSRules.push(compileCSS(blockElementStyles[element], {
397
+ selector: scopeSelector(baseElementSelector, ELEMENTS[element])
398
+ }));
399
+ }
350
400
  });
351
- elementCssRules.push(cssRule);
352
401
  }
353
- }
354
- return elementCssRules.length > 0 ? elementCssRules.join('') : undefined;
355
- }, [props.attributes.style?.elements, blockElementsContainerIdentifier, skipLinkColorSerialization]);
402
+ });
403
+ return elementCSSRules.length > 0 ? elementCSSRules.join('') : undefined;
404
+ }, [baseElementSelector, blockElementStyles, props.name]);
356
405
  const element = useContext(BlockList.__unstableElementContext);
357
406
  return createElement(Fragment, null, styles && element && createPortal(createElement("style", {
358
407
  dangerouslySetInnerHTML: {
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useContext","useMemo","createPortal","addFilter","getBlockSupport","hasBlockSupport","__EXPERIMENTAL_ELEMENTS","ELEMENTS","createHigherOrderComponent","useInstanceId","getCSSRules","compileCSS","BlockList","BORDER_SUPPORT_KEY","BorderPanel","COLOR_SUPPORT_KEY","ColorEdit","TypographyPanel","TYPOGRAPHY_SUPPORT_KEY","TYPOGRAPHY_SUPPORT_KEYS","DIMENSIONS_SUPPORT_KEY","SPACING_SUPPORT_KEY","DimensionsPanel","useDisplayBlockControls","shouldSkipSerialization","useBlockEditingMode","styleSupportKeys","hasStyleSupport","nameOrType","some","key","getInlineStyles","styles","output","forEach","rule","value","addAttribute","settings","attributes","style","Object","assign","type","skipSerializationPathsEdit","skipSerializationPathsSave","renamedFeatures","gradients","omitStyle","paths","preserveReference","newStyle","JSON","parse","stringify","Array","isArray","path","split","length","firstSubpath","restPath","addSaveProps","props","blockType","skipPaths","entries","indicator","skipSerialization","featureName","feature","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","withBlockControls","BlockEdit","name","createElement","shouldDisplayControls","blockEditingMode","Fragment","withElementsStyles","BlockListBlock","blockElementsContainerIdentifier","skipLinkColorSerialization","elements","link","undefined","selector","elementCssRules","elementStyles","cssRule","push","join","element","__unstableElementContext","dangerouslySetInnerHTML","__html","className"],"sources":["@wordpress/block-editor/src/hooks/style.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useMemo, createPortal } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\thasBlockSupport,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n} from '@wordpress/blocks';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { getCSSRules, compileCSS } from '@wordpress/style-engine';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../components/block-list';\nimport { BORDER_SUPPORT_KEY, BorderPanel } from './border';\nimport { COLOR_SUPPORT_KEY, ColorEdit } from './color';\nimport {\n\tTypographyPanel,\n\tTYPOGRAPHY_SUPPORT_KEY,\n\tTYPOGRAPHY_SUPPORT_KEYS,\n} from './typography';\nimport {\n\tDIMENSIONS_SUPPORT_KEY,\n\tSPACING_SUPPORT_KEY,\n\tDimensionsPanel,\n} from './dimensions';\nimport useDisplayBlockControls from '../components/use-display-block-controls';\nimport { shouldSkipSerialization } from './utils';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\n\nconst styleSupportKeys = [\n\t...TYPOGRAPHY_SUPPORT_KEYS,\n\tBORDER_SUPPORT_KEY,\n\tCOLOR_SUPPORT_KEY,\n\tDIMENSIONS_SUPPORT_KEY,\n\tSPACING_SUPPORT_KEY,\n];\n\nconst hasStyleSupport = ( nameOrType ) =>\n\tstyleSupportKeys.some( ( key ) => hasBlockSupport( nameOrType, key ) );\n\n/**\n * Returns the inline styles to add depending on the style object\n *\n * @param {Object} styles Styles configuration.\n *\n * @return {Object} Flattened CSS variables declaration.\n */\nexport function getInlineStyles( styles = {} ) {\n\tconst output = {};\n\t// The goal is to move everything to server side generated engine styles\n\t// This is temporary as we absorb more and more styles into the engine.\n\tgetCSSRules( styles ).forEach( ( rule ) => {\n\t\toutput[ rule.key ] = rule.value;\n\t} );\n\n\treturn output;\n}\n\n/**\n * Filters registered block settings, extending attributes to include `style` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttribute( settings ) {\n\tif ( ! hasStyleSupport( settings ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * A dictionary of paths to flag skipping block support serialization as the key,\n * with values providing the style paths to be omitted from serialization.\n *\n * @constant\n * @type {Record<string, string[]>}\n */\nconst skipSerializationPathsEdit = {\n\t[ `${ BORDER_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [ 'border' ],\n\t[ `${ COLOR_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tCOLOR_SUPPORT_KEY,\n\t],\n\t[ `${ TYPOGRAPHY_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tTYPOGRAPHY_SUPPORT_KEY,\n\t],\n\t[ `${ DIMENSIONS_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tDIMENSIONS_SUPPORT_KEY,\n\t],\n\t[ `${ SPACING_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tSPACING_SUPPORT_KEY,\n\t],\n};\n\n/**\n * A dictionary of paths to flag skipping block support serialization as the key,\n * with values providing the style paths to be omitted from serialization.\n *\n * Extends the Edit skip paths to enable skipping additional paths in just\n * the Save component. This allows a block support to be serialized within the\n * editor, while using an alternate approach, such as server-side rendering, when\n * the support is saved.\n *\n * @constant\n * @type {Record<string, string[]>}\n */\nconst skipSerializationPathsSave = {\n\t...skipSerializationPathsEdit,\n\t[ `${ SPACING_SUPPORT_KEY }` ]: [ 'spacing.blockGap' ],\n};\n\n/**\n * A dictionary used to normalize feature names between support flags, style\n * object properties and __experimentSkipSerialization configuration arrays.\n *\n * This allows not having to provide a migration for a support flag and possible\n * backwards compatibility bridges, while still achieving consistency between\n * the support flag and the skip serialization array.\n *\n * @constant\n * @type {Record<string, string>}\n */\nconst renamedFeatures = { gradients: 'gradient' };\n\n/**\n * A utility function used to remove one or more paths from a style object.\n * Works in a way similar to Lodash's `omit()`. See unit tests and examples below.\n *\n * It supports a single string path:\n *\n * ```\n * omitStyle( { color: 'red' }, 'color' ); // {}\n * ```\n *\n * or an array of paths:\n *\n * ```\n * omitStyle( { color: 'red', background: '#fff' }, [ 'color', 'background' ] ); // {}\n * ```\n *\n * It also allows you to specify paths at multiple levels in a string.\n *\n * ```\n * omitStyle( { typography: { textDecoration: 'underline' } }, 'typography.textDecoration' ); // {}\n * ```\n *\n * You can remove multiple paths at the same time:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\ttypography: {\n * \t\t\t\ttextDecoration: 'underline',\n * \t\t\t\ttextTransform: 'uppercase',\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t'typography.textDecoration',\n * \t\t\t'typography.textTransform',\n *\t\t]\n * );\n * // {}\n * ```\n *\n * You can also specify nested paths as arrays:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\ttypography: {\n * \t\t\t\ttextDecoration: 'underline',\n * \t\t\t\ttextTransform: 'uppercase',\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t[ 'typography', 'textDecoration' ],\n * \t\t\t[ 'typography', 'textTransform' ],\n *\t\t]\n * );\n * // {}\n * ```\n *\n * With regards to nesting of styles, infinite depth is supported:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\tborder: {\n * \t\t\t\tradius: {\n * \t\t\t\t\ttopLeft: '10px',\n * \t\t\t\t\ttopRight: '0.5rem',\n * \t\t\t\t}\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t[ 'border', 'radius', 'topRight' ],\n *\t\t]\n * );\n * // { border: { radius: { topLeft: '10px' } } }\n * ```\n *\n * The third argument, `preserveReference`, defines how to treat the input style object.\n * It is mostly necessary to properly handle mutation when recursively handling the style object.\n * Defaulting to `false`, this will always create a new object, avoiding to mutate `style`.\n * However, when recursing, we change that value to `true` in order to work with a single copy\n * of the original style object.\n *\n * @see https://lodash.com/docs/4.17.15#omit\n *\n * @param {Object} style Styles object.\n * @param {Array|string} paths Paths to remove.\n * @param {boolean} preserveReference True to mutate the `style` object, false otherwise.\n * @return {Object} Styles object with the specified paths removed.\n */\nexport function omitStyle( style, paths, preserveReference = false ) {\n\tif ( ! style ) {\n\t\treturn style;\n\t}\n\n\tlet newStyle = style;\n\tif ( ! preserveReference ) {\n\t\tnewStyle = JSON.parse( JSON.stringify( style ) );\n\t}\n\n\tif ( ! Array.isArray( paths ) ) {\n\t\tpaths = [ paths ];\n\t}\n\n\tpaths.forEach( ( path ) => {\n\t\tif ( ! Array.isArray( path ) ) {\n\t\t\tpath = path.split( '.' );\n\t\t}\n\n\t\tif ( path.length > 1 ) {\n\t\t\tconst [ firstSubpath, ...restPath ] = path;\n\t\t\tomitStyle( newStyle[ firstSubpath ], [ restPath ], true );\n\t\t} else if ( path.length === 1 ) {\n\t\t\tdelete newStyle[ path[ 0 ] ];\n\t\t}\n\t} );\n\n\treturn newStyle;\n}\n\n/**\n * Override props assigned to save component to inject the CSS variables definition.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n * @param {?Record<string, string[]>} skipPaths An object of keys and paths to skip serialization.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps(\n\tprops,\n\tblockType,\n\tattributes,\n\tskipPaths = skipSerializationPathsSave\n) {\n\tif ( ! hasStyleSupport( blockType ) ) {\n\t\treturn props;\n\t}\n\n\tlet { style } = attributes;\n\tObject.entries( skipPaths ).forEach( ( [ indicator, path ] ) => {\n\t\tconst skipSerialization = getBlockSupport( blockType, indicator );\n\n\t\tif ( skipSerialization === true ) {\n\t\t\tstyle = omitStyle( style, path );\n\t\t}\n\n\t\tif ( Array.isArray( skipSerialization ) ) {\n\t\t\tskipSerialization.forEach( ( featureName ) => {\n\t\t\t\tconst feature = renamedFeatures[ featureName ] || featureName;\n\t\t\t\tstyle = omitStyle( style, [ [ ...path, feature ] ] );\n\t\t\t} );\n\t\t}\n\t} );\n\n\tprops.style = {\n\t\t...getInlineStyles( style ),\n\t\t...props.style,\n\t};\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to extend the block edit wrapper\n * to apply the desired styles and classnames properly.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object}.Filtered block settings.\n */\nexport function addEditProps( settings ) {\n\tif ( ! hasStyleSupport( settings ) ) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\n\t\treturn addSaveProps(\n\t\t\tprops,\n\t\t\tsettings,\n\t\t\tattributes,\n\t\t\tskipSerializationPathsEdit\n\t\t);\n\t};\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include new inspector controls for\n * all the custom styles configs.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withBlockControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tif ( ! hasStyleSupport( props.name ) ) {\n\t\t\treturn <BlockEdit key=\"edit\" { ...props } />;\n\t\t}\n\n\t\tconst shouldDisplayControls = useDisplayBlockControls();\n\t\tconst blockEditingMode = useBlockEditingMode();\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldDisplayControls && blockEditingMode === 'default' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ColorEdit { ...props } />\n\t\t\t\t\t\t<TypographyPanel { ...props } />\n\t\t\t\t\t\t<BorderPanel { ...props } />\n\t\t\t\t\t\t<DimensionsPanel { ...props } />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<BlockEdit key=\"edit\" { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\n/**\n * Override the default block element to include elements styles.\n *\n * @param {Function} BlockListBlock Original component\n * @return {Function} Wrapped component\n */\nconst withElementsStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst blockElementsContainerIdentifier = `wp-elements-${ useInstanceId(\n\t\t\tBlockListBlock\n\t\t) }`;\n\n\t\tconst skipLinkColorSerialization = shouldSkipSerialization(\n\t\t\tprops.name,\n\t\t\tCOLOR_SUPPORT_KEY,\n\t\t\t'link'\n\t\t);\n\n\t\tconst styles = useMemo( () => {\n\t\t\t// The .editor-styles-wrapper selector is required on elements styles. As it is\n\t\t\t// added to all other editor styles, not providing it causes reset and global\n\t\t\t// styles to override element styles because of higher specificity.\n\t\t\tconst elements = [\n\t\t\t\t{\n\t\t\t\t\tstyles: ! skipLinkColorSerialization\n\t\t\t\t\t\t? props.attributes.style?.elements?.link\n\t\t\t\t\t\t: undefined,\n\t\t\t\t\tselector: `.editor-styles-wrapper .${ blockElementsContainerIdentifier } ${ ELEMENTS.link }`,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tstyles: ! skipLinkColorSerialization\n\t\t\t\t\t\t? props.attributes.style?.elements?.link?.[ ':hover' ]\n\t\t\t\t\t\t: undefined,\n\t\t\t\t\tselector: `.editor-styles-wrapper .${ blockElementsContainerIdentifier } ${ ELEMENTS.link }:hover`,\n\t\t\t\t},\n\t\t\t];\n\t\t\tconst elementCssRules = [];\n\t\t\tfor ( const { styles: elementStyles, selector } of elements ) {\n\t\t\t\tif ( elementStyles ) {\n\t\t\t\t\tconst cssRule = compileCSS( elementStyles, {\n\t\t\t\t\t\tselector,\n\t\t\t\t\t} );\n\t\t\t\t\telementCssRules.push( cssRule );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn elementCssRules.length > 0\n\t\t\t\t? elementCssRules.join( '' )\n\t\t\t\t: undefined;\n\t\t}, [\n\t\t\tprops.attributes.style?.elements,\n\t\t\tblockElementsContainerIdentifier,\n\t\t\tskipLinkColorSerialization,\n\t\t] );\n\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ styles &&\n\t\t\t\t\telement &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t<style\n\t\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t\t__html: styles,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>,\n\t\t\t\t\t\telement\n\t\t\t\t\t) }\n\n\t\t\t\t<BlockListBlock\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tclassName={\n\t\t\t\t\t\tprops.attributes.style?.elements\n\t\t\t\t\t\t\t? classnames(\n\t\t\t\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\t\t\t\tblockElementsContainerIdentifier\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: props.className\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t},\n\t'withElementsStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/style/addAttribute',\n\taddAttribute\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/style/addSaveProps',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/style/addEditProps',\n\taddEditProps\n);\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/style/with-block-controls',\n\twithBlockControls\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/with-elements-styles',\n\twithElementsStyles\n);\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,UAAU,EAAEC,OAAO,EAAEC,YAAY,QAAQ,oBAAoB;AACtE,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SACCC,eAAe,EACfC,eAAe,EACfC,uBAAuB,IAAIC,QAAQ,QAC7B,mBAAmB;AAC1B,SAASC,0BAA0B,EAAEC,aAAa,QAAQ,oBAAoB;AAC9E,SAASC,WAAW,EAAEC,UAAU,QAAQ,yBAAyB;;AAEjE;AACA;AACA;AACA,OAAOC,SAAS,MAAM,0BAA0B;AAChD,SAASC,kBAAkB,EAAEC,WAAW,QAAQ,UAAU;AAC1D,SAASC,iBAAiB,EAAEC,SAAS,QAAQ,SAAS;AACtD,SACCC,eAAe,EACfC,sBAAsB,EACtBC,uBAAuB,QACjB,cAAc;AACrB,SACCC,sBAAsB,EACtBC,mBAAmB,EACnBC,eAAe,QACT,cAAc;AACrB,OAAOC,uBAAuB,MAAM,0CAA0C;AAC9E,SAASC,uBAAuB,QAAQ,SAAS;AACjD,SAASC,mBAAmB,QAAQ,kCAAkC;AAEtE,MAAMC,gBAAgB,GAAG,CACxB,GAAGP,uBAAuB,EAC1BN,kBAAkB,EAClBE,iBAAiB,EACjBK,sBAAsB,EACtBC,mBAAmB,CACnB;AAED,MAAMM,eAAe,GAAKC,UAAU,IACnCF,gBAAgB,CAACG,IAAI,CAAIC,GAAG,IAAMzB,eAAe,CAAEuB,UAAU,EAAEE,GAAI,CAAE,CAAC;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAAEC,MAAM,GAAG,CAAC,CAAC,EAAG;EAC9C,MAAMC,MAAM,GAAG,CAAC,CAAC;EACjB;EACA;EACAvB,WAAW,CAAEsB,MAAO,CAAC,CAACE,OAAO,CAAIC,IAAI,IAAM;IAC1CF,MAAM,CAAEE,IAAI,CAACL,GAAG,CAAE,GAAGK,IAAI,CAACC,KAAK;EAChC,CAAE,CAAC;EAEH,OAAOH,MAAM;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASI,YAAYA,CAAEC,QAAQ,EAAG;EACjC,IAAK,CAAEX,eAAe,CAAEW,QAAS,CAAC,EAAG;IACpC,OAAOA,QAAQ;EAChB;;EAEA;EACA,IAAK,CAAEA,QAAQ,CAACC,UAAU,CAACC,KAAK,EAAG;IAClCC,MAAM,CAACC,MAAM,CAAEJ,QAAQ,CAACC,UAAU,EAAE;MACnCC,KAAK,EAAE;QACNG,IAAI,EAAE;MACP;IACD,CAAE,CAAC;EACJ;EAEA,OAAOL,QAAQ;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,0BAA0B,GAAG;EAClC,CAAG,GAAG/B,kBAAoB,kCAAiC,GAAI,CAAE,QAAQ,CAAE;EAC3E,CAAG,GAAGE,iBAAmB,kCAAiC,GAAI,CAC7DA,iBAAiB,CACjB;EACD,CAAG,GAAGG,sBAAwB,kCAAiC,GAAI,CAClEA,sBAAsB,CACtB;EACD,CAAG,GAAGE,sBAAwB,kCAAiC,GAAI,CAClEA,sBAAsB,CACtB;EACD,CAAG,GAAGC,mBAAqB,kCAAiC,GAAI,CAC/DA,mBAAmB;AAErB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMwB,0BAA0B,GAAG;EAClC,GAAGD,0BAA0B;EAC7B,CAAG,GAAGvB,mBAAqB,EAAC,GAAI,CAAE,kBAAkB;AACrD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMyB,eAAe,GAAG;EAAEC,SAAS,EAAE;AAAW,CAAC;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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"}
1
+ {"version":3,"names":["classnames","useContext","useMemo","createPortal","addFilter","getBlockSupport","hasBlockSupport","__EXPERIMENTAL_ELEMENTS","ELEMENTS","createHigherOrderComponent","useInstanceId","getCSSRules","compileCSS","BlockList","BACKGROUND_SUPPORT_KEY","BackgroundImagePanel","BORDER_SUPPORT_KEY","BorderPanel","COLOR_SUPPORT_KEY","ColorEdit","TypographyPanel","TYPOGRAPHY_SUPPORT_KEY","TYPOGRAPHY_SUPPORT_KEYS","DIMENSIONS_SUPPORT_KEY","SPACING_SUPPORT_KEY","DimensionsPanel","useDisplayBlockControls","shouldSkipSerialization","scopeSelector","useBlockEditingMode","styleSupportKeys","hasStyleSupport","nameOrType","some","key","getInlineStyles","styles","output","forEach","rule","value","addAttribute","settings","attributes","style","Object","assign","type","skipSerializationPathsEdit","skipSerializationPathsSave","skipSerializationPathsSaveChecks","renamedFeatures","gradients","omitStyle","paths","preserveReference","newStyle","JSON","parse","stringify","Array","isArray","path","split","length","firstSubpath","restPath","addSaveProps","props","blockType","skipPaths","entries","indicator","skipSerialization","featureName","feature","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","withBlockControls","BlockEdit","name","createElement","shouldDisplayControls","blockEditingMode","Fragment","elementTypes","elementType","pseudo","elements","withElementsStyles","BlockListBlock","blockElementsContainerIdentifier","baseElementSelector","blockElementStyles","elementCSSRules","elementStyles","selector","push","pseudoSelector","element","join","undefined","__unstableElementContext","dangerouslySetInnerHTML","__html","className"],"sources":["@wordpress/block-editor/src/hooks/style.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useMemo, createPortal } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\thasBlockSupport,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n} from '@wordpress/blocks';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { getCSSRules, compileCSS } from '@wordpress/style-engine';\n\n/**\n * Internal dependencies\n */\nimport BlockList from '../components/block-list';\nimport { BACKGROUND_SUPPORT_KEY, BackgroundImagePanel } from './background';\nimport { BORDER_SUPPORT_KEY, BorderPanel } from './border';\nimport { COLOR_SUPPORT_KEY, ColorEdit } from './color';\nimport {\n\tTypographyPanel,\n\tTYPOGRAPHY_SUPPORT_KEY,\n\tTYPOGRAPHY_SUPPORT_KEYS,\n} from './typography';\nimport {\n\tDIMENSIONS_SUPPORT_KEY,\n\tSPACING_SUPPORT_KEY,\n\tDimensionsPanel,\n} from './dimensions';\nimport useDisplayBlockControls from '../components/use-display-block-controls';\nimport { shouldSkipSerialization } from './utils';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\n\nconst styleSupportKeys = [\n\t...TYPOGRAPHY_SUPPORT_KEYS,\n\tBORDER_SUPPORT_KEY,\n\tCOLOR_SUPPORT_KEY,\n\tDIMENSIONS_SUPPORT_KEY,\n\tBACKGROUND_SUPPORT_KEY,\n\tSPACING_SUPPORT_KEY,\n];\n\nconst hasStyleSupport = ( nameOrType ) =>\n\tstyleSupportKeys.some( ( key ) => hasBlockSupport( nameOrType, key ) );\n\n/**\n * Returns the inline styles to add depending on the style object\n *\n * @param {Object} styles Styles configuration.\n *\n * @return {Object} Flattened CSS variables declaration.\n */\nexport function getInlineStyles( styles = {} ) {\n\tconst output = {};\n\t// The goal is to move everything to server side generated engine styles\n\t// This is temporary as we absorb more and more styles into the engine.\n\tgetCSSRules( styles ).forEach( ( rule ) => {\n\t\toutput[ rule.key ] = rule.value;\n\t} );\n\n\treturn output;\n}\n\n/**\n * Filters registered block settings, extending attributes to include `style` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttribute( settings ) {\n\tif ( ! hasStyleSupport( settings ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * A dictionary of paths to flag skipping block support serialization as the key,\n * with values providing the style paths to be omitted from serialization.\n *\n * @constant\n * @type {Record<string, string[]>}\n */\nconst skipSerializationPathsEdit = {\n\t[ `${ BORDER_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [ 'border' ],\n\t[ `${ COLOR_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tCOLOR_SUPPORT_KEY,\n\t],\n\t[ `${ TYPOGRAPHY_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tTYPOGRAPHY_SUPPORT_KEY,\n\t],\n\t[ `${ DIMENSIONS_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tDIMENSIONS_SUPPORT_KEY,\n\t],\n\t[ `${ SPACING_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tSPACING_SUPPORT_KEY,\n\t],\n};\n\n/**\n * A dictionary of paths to flag skipping block support serialization as the key,\n * with values providing the style paths to be omitted from serialization.\n *\n * Extends the Edit skip paths to enable skipping additional paths in just\n * the Save component. This allows a block support to be serialized within the\n * editor, while using an alternate approach, such as server-side rendering, when\n * the support is saved.\n *\n * @constant\n * @type {Record<string, string[]>}\n */\nconst skipSerializationPathsSave = {\n\t...skipSerializationPathsEdit,\n\t[ `${ BACKGROUND_SUPPORT_KEY }` ]: [ BACKGROUND_SUPPORT_KEY ], // Skip serialization of background support in save mode.\n};\n\nconst skipSerializationPathsSaveChecks = {\n\t[ `${ BACKGROUND_SUPPORT_KEY }` ]: true,\n};\n\n/**\n * A dictionary used to normalize feature names between support flags, style\n * object properties and __experimentSkipSerialization configuration arrays.\n *\n * This allows not having to provide a migration for a support flag and possible\n * backwards compatibility bridges, while still achieving consistency between\n * the support flag and the skip serialization array.\n *\n * @constant\n * @type {Record<string, string>}\n */\nconst renamedFeatures = { gradients: 'gradient' };\n\n/**\n * A utility function used to remove one or more paths from a style object.\n * Works in a way similar to Lodash's `omit()`. See unit tests and examples below.\n *\n * It supports a single string path:\n *\n * ```\n * omitStyle( { color: 'red' }, 'color' ); // {}\n * ```\n *\n * or an array of paths:\n *\n * ```\n * omitStyle( { color: 'red', background: '#fff' }, [ 'color', 'background' ] ); // {}\n * ```\n *\n * It also allows you to specify paths at multiple levels in a string.\n *\n * ```\n * omitStyle( { typography: { textDecoration: 'underline' } }, 'typography.textDecoration' ); // {}\n * ```\n *\n * You can remove multiple paths at the same time:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\ttypography: {\n * \t\t\t\ttextDecoration: 'underline',\n * \t\t\t\ttextTransform: 'uppercase',\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t'typography.textDecoration',\n * \t\t\t'typography.textTransform',\n *\t\t]\n * );\n * // {}\n * ```\n *\n * You can also specify nested paths as arrays:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\ttypography: {\n * \t\t\t\ttextDecoration: 'underline',\n * \t\t\t\ttextTransform: 'uppercase',\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t[ 'typography', 'textDecoration' ],\n * \t\t\t[ 'typography', 'textTransform' ],\n *\t\t]\n * );\n * // {}\n * ```\n *\n * With regards to nesting of styles, infinite depth is supported:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\tborder: {\n * \t\t\t\tradius: {\n * \t\t\t\t\ttopLeft: '10px',\n * \t\t\t\t\ttopRight: '0.5rem',\n * \t\t\t\t}\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t[ 'border', 'radius', 'topRight' ],\n *\t\t]\n * );\n * // { border: { radius: { topLeft: '10px' } } }\n * ```\n *\n * The third argument, `preserveReference`, defines how to treat the input style object.\n * It is mostly necessary to properly handle mutation when recursively handling the style object.\n * Defaulting to `false`, this will always create a new object, avoiding to mutate `style`.\n * However, when recursing, we change that value to `true` in order to work with a single copy\n * of the original style object.\n *\n * @see https://lodash.com/docs/4.17.15#omit\n *\n * @param {Object} style Styles object.\n * @param {Array|string} paths Paths to remove.\n * @param {boolean} preserveReference True to mutate the `style` object, false otherwise.\n * @return {Object} Styles object with the specified paths removed.\n */\nexport function omitStyle( style, paths, preserveReference = false ) {\n\tif ( ! style ) {\n\t\treturn style;\n\t}\n\n\tlet newStyle = style;\n\tif ( ! preserveReference ) {\n\t\tnewStyle = JSON.parse( JSON.stringify( style ) );\n\t}\n\n\tif ( ! Array.isArray( paths ) ) {\n\t\tpaths = [ paths ];\n\t}\n\n\tpaths.forEach( ( path ) => {\n\t\tif ( ! Array.isArray( path ) ) {\n\t\t\tpath = path.split( '.' );\n\t\t}\n\n\t\tif ( path.length > 1 ) {\n\t\t\tconst [ firstSubpath, ...restPath ] = path;\n\t\t\tomitStyle( newStyle[ firstSubpath ], [ restPath ], true );\n\t\t} else if ( path.length === 1 ) {\n\t\t\tdelete newStyle[ path[ 0 ] ];\n\t\t}\n\t} );\n\n\treturn newStyle;\n}\n\n/**\n * Override props assigned to save component to inject the CSS variables definition.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n * @param {?Record<string, string[]>} skipPaths An object of keys and paths to skip serialization.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps(\n\tprops,\n\tblockType,\n\tattributes,\n\tskipPaths = skipSerializationPathsSave\n) {\n\tif ( ! hasStyleSupport( blockType ) ) {\n\t\treturn props;\n\t}\n\n\tlet { style } = attributes;\n\tObject.entries( skipPaths ).forEach( ( [ indicator, path ] ) => {\n\t\tconst skipSerialization =\n\t\t\tskipSerializationPathsSaveChecks[ indicator ] ||\n\t\t\tgetBlockSupport( blockType, indicator );\n\n\t\tif ( skipSerialization === true ) {\n\t\t\tstyle = omitStyle( style, path );\n\t\t}\n\n\t\tif ( Array.isArray( skipSerialization ) ) {\n\t\t\tskipSerialization.forEach( ( featureName ) => {\n\t\t\t\tconst feature = renamedFeatures[ featureName ] || featureName;\n\t\t\t\tstyle = omitStyle( style, [ [ ...path, feature ] ] );\n\t\t\t} );\n\t\t}\n\t} );\n\n\tprops.style = {\n\t\t...getInlineStyles( style ),\n\t\t...props.style,\n\t};\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to extend the block edit wrapper\n * to apply the desired styles and classnames properly.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object}.Filtered block settings.\n */\nexport function addEditProps( settings ) {\n\tif ( ! hasStyleSupport( settings ) ) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\n\t\treturn addSaveProps(\n\t\t\tprops,\n\t\t\tsettings,\n\t\t\tattributes,\n\t\t\tskipSerializationPathsEdit\n\t\t);\n\t};\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include new inspector controls for\n * all the custom styles configs.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withBlockControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tif ( ! hasStyleSupport( props.name ) ) {\n\t\t\treturn <BlockEdit key=\"edit\" { ...props } />;\n\t\t}\n\n\t\tconst shouldDisplayControls = useDisplayBlockControls();\n\t\tconst blockEditingMode = useBlockEditingMode();\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldDisplayControls && blockEditingMode === 'default' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ColorEdit { ...props } />\n\t\t\t\t\t\t<BackgroundImagePanel { ...props } />\n\t\t\t\t\t\t<TypographyPanel { ...props } />\n\t\t\t\t\t\t<BorderPanel { ...props } />\n\t\t\t\t\t\t<DimensionsPanel { ...props } />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<BlockEdit key=\"edit\" { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\n// Defines which element types are supported, including their hover styles or\n// any other elements that have been included under a single element type\n// e.g. heading and h1-h6.\nconst elementTypes = [\n\t{ elementType: 'button' },\n\t{ elementType: 'link', pseudo: [ ':hover' ] },\n\t{\n\t\telementType: 'heading',\n\t\telements: [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ],\n\t},\n];\n\n/**\n * Override the default block element to include elements styles.\n *\n * @param {Function} BlockListBlock Original component\n * @return {Function} Wrapped component\n */\nconst withElementsStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst blockElementsContainerIdentifier = `wp-elements-${ useInstanceId(\n\t\t\tBlockListBlock\n\t\t) }`;\n\n\t\t// The .editor-styles-wrapper selector is required on elements styles. As it is\n\t\t// added to all other editor styles, not providing it causes reset and global\n\t\t// styles to override element styles because of higher specificity.\n\t\tconst baseElementSelector = `.editor-styles-wrapper .${ blockElementsContainerIdentifier }`;\n\t\tconst blockElementStyles = props.attributes.style?.elements;\n\n\t\tconst styles = useMemo( () => {\n\t\t\tif ( ! blockElementStyles ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst elementCSSRules = [];\n\n\t\t\telementTypes.forEach( ( { elementType, pseudo, elements } ) => {\n\t\t\t\tconst skipSerialization = shouldSkipSerialization(\n\t\t\t\t\tprops.name,\n\t\t\t\t\tCOLOR_SUPPORT_KEY,\n\t\t\t\t\telementType\n\t\t\t\t);\n\n\t\t\t\tif ( skipSerialization ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst elementStyles = blockElementStyles?.[ elementType ];\n\n\t\t\t\t// Process primary element type styles.\n\t\t\t\tif ( elementStyles ) {\n\t\t\t\t\tconst selector = scopeSelector(\n\t\t\t\t\t\tbaseElementSelector,\n\t\t\t\t\t\tELEMENTS[ elementType ]\n\t\t\t\t\t);\n\n\t\t\t\t\telementCSSRules.push(\n\t\t\t\t\t\tcompileCSS( elementStyles, { selector } )\n\t\t\t\t\t);\n\n\t\t\t\t\t// Process any interactive states for the element type.\n\t\t\t\t\tif ( pseudo ) {\n\t\t\t\t\t\tpseudo.forEach( ( pseudoSelector ) => {\n\t\t\t\t\t\t\tif ( elementStyles[ pseudoSelector ] ) {\n\t\t\t\t\t\t\t\telementCSSRules.push(\n\t\t\t\t\t\t\t\t\tcompileCSS(\n\t\t\t\t\t\t\t\t\t\telementStyles[ pseudoSelector ],\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tselector: scopeSelector(\n\t\t\t\t\t\t\t\t\t\t\t\tbaseElementSelector,\n\t\t\t\t\t\t\t\t\t\t\t\t`${ ELEMENTS[ elementType ] }${ pseudoSelector }`\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} );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Process related elements e.g. h1-h6 for headings\n\t\t\t\tif ( elements ) {\n\t\t\t\t\telements.forEach( ( element ) => {\n\t\t\t\t\t\tif ( blockElementStyles[ element ] ) {\n\t\t\t\t\t\t\telementCSSRules.push(\n\t\t\t\t\t\t\t\tcompileCSS( blockElementStyles[ element ], {\n\t\t\t\t\t\t\t\t\tselector: scopeSelector(\n\t\t\t\t\t\t\t\t\t\tbaseElementSelector,\n\t\t\t\t\t\t\t\t\t\tELEMENTS[ element ]\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}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn elementCSSRules.length > 0\n\t\t\t\t? elementCSSRules.join( '' )\n\t\t\t\t: undefined;\n\t\t}, [ baseElementSelector, blockElementStyles, props.name ] );\n\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ styles &&\n\t\t\t\t\telement &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t<style\n\t\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t\t__html: styles,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>,\n\t\t\t\t\t\telement\n\t\t\t\t\t) }\n\n\t\t\t\t<BlockListBlock\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tclassName={\n\t\t\t\t\t\tprops.attributes.style?.elements\n\t\t\t\t\t\t\t? classnames(\n\t\t\t\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\t\t\t\tblockElementsContainerIdentifier\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: props.className\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t},\n\t'withElementsStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/style/addAttribute',\n\taddAttribute\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/style/addSaveProps',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/style/addEditProps',\n\taddEditProps\n);\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/style/with-block-controls',\n\twithBlockControls\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/with-elements-styles',\n\twithElementsStyles\n);\n"],"mappings":"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"}
@@ -136,6 +136,8 @@ export function useBlockSettings(name, parentLayout) {
136
136
  const isBackgroundEnabled = useSetting('color.background');
137
137
  const isLinkEnabled = useSetting('color.link');
138
138
  const isTextEnabled = useSetting('color.text');
139
+ const isHeadingEnabled = useSetting('color.heading');
140
+ const isButtonEnabled = useSetting('color.button');
139
141
  const rawSettings = useMemo(() => {
140
142
  return {
141
143
  color: {
@@ -162,6 +164,8 @@ export function useBlockSettings(name, parentLayout) {
162
164
  customDuotone,
163
165
  background: isBackgroundEnabled,
164
166
  link: isLinkEnabled,
167
+ heading: isHeadingEnabled,
168
+ button: isButtonEnabled,
165
169
  text: isTextEnabled
166
170
  },
167
171
  typography: {
@@ -1 +1 @@
1
- {"version":3,"names":["getBlockSupport","useMemo","useSetting","useSettingsForBlockElement","getValueFromObjectPath","setImmutably","cleanEmptyObject","object","Array","isArray","cleanedNestedObjects","Object","entries","map","key","value","filter","undefined","length","fromEntries","transformStyles","activeSupports","migrationPaths","result","source","index","results","values","every","isActive","innerBlocks","referenceBlockAttributes","attributes","returnBlock","forEach","support","path","styleValue","shouldSkipSerialization","blockType","featureSet","feature","skipSerialization","__experimentalSkipSerialization","includes","useBlockSettings","name","parentLayout","fontFamilies","fontSizes","customFontSize","fontStyle","fontWeight","lineHeight","textColumns","textDecoration","writingMode","textTransform","letterSpacing","padding","margin","blockGap","spacingSizes","units","minHeight","layout","borderColor","borderRadius","borderStyle","borderWidth","customColorsEnabled","customColors","customDuotone","themeColors","defaultColors","defaultPalette","defaultDuotone","userDuotonePalette","themeDuotonePalette","defaultDuotonePalette","userGradientPalette","themeGradientPalette","defaultGradientPalette","defaultGradients","areCustomGradientsEnabled","isBackgroundEnabled","isLinkEnabled","isTextEnabled","rawSettings","color","palette","custom","theme","default","gradients","duotone","customGradient","background","link","text","typography","spacing","border","radius","style","width","dimensions"],"sources":["@wordpress/block-editor/src/hooks/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { useSetting } from '../components';\nimport { useSettingsForBlockElement } from '../components/global-styles/hooks';\nimport { getValueFromObjectPath, setImmutably } from '../utils/object';\n\n/**\n * Removed falsy values from nested object.\n *\n * @param {*} object\n * @return {*} Object cleaned from falsy values\n */\nexport const cleanEmptyObject = ( object ) => {\n\tif (\n\t\tobject === null ||\n\t\ttypeof object !== 'object' ||\n\t\tArray.isArray( object )\n\t) {\n\t\treturn object;\n\t}\n\n\tconst cleanedNestedObjects = Object.entries( object )\n\t\t.map( ( [ key, value ] ) => [ key, cleanEmptyObject( value ) ] )\n\t\t.filter( ( [ , value ] ) => value !== undefined );\n\treturn ! cleanedNestedObjects.length\n\t\t? undefined\n\t\t: Object.fromEntries( cleanedNestedObjects );\n};\n\nexport function transformStyles(\n\tactiveSupports,\n\tmigrationPaths,\n\tresult,\n\tsource,\n\tindex,\n\tresults\n) {\n\t// If there are no active supports return early.\n\tif (\n\t\tObject.values( activeSupports ?? {} ).every(\n\t\t\t( isActive ) => ! isActive\n\t\t)\n\t) {\n\t\treturn result;\n\t}\n\t// If the condition verifies we are probably in the presence of a wrapping transform\n\t// e.g: nesting paragraphs in a group or columns and in that case the styles should not be transformed.\n\tif ( results.length === 1 && result.innerBlocks.length === source.length ) {\n\t\treturn result;\n\t}\n\t// For cases where we have a transform from one block to multiple blocks\n\t// or multiple blocks to one block we apply the styles of the first source block\n\t// to the result(s).\n\tlet referenceBlockAttributes = source[ 0 ]?.attributes;\n\t// If we are in presence of transform between more than one block in the source\n\t// that has more than one block in the result\n\t// we apply the styles on source N to the result N,\n\t// if source N does not exists we do nothing.\n\tif ( results.length > 1 && source.length > 1 ) {\n\t\tif ( source[ index ] ) {\n\t\t\treferenceBlockAttributes = source[ index ]?.attributes;\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n\tlet returnBlock = result;\n\tObject.entries( activeSupports ).forEach( ( [ support, isActive ] ) => {\n\t\tif ( isActive ) {\n\t\t\tmigrationPaths[ support ].forEach( ( path ) => {\n\t\t\t\tconst styleValue = getValueFromObjectPath(\n\t\t\t\t\treferenceBlockAttributes,\n\t\t\t\t\tpath\n\t\t\t\t);\n\t\t\t\tif ( styleValue ) {\n\t\t\t\t\treturnBlock = {\n\t\t\t\t\t\t...returnBlock,\n\t\t\t\t\t\tattributes: setImmutably(\n\t\t\t\t\t\t\treturnBlock.attributes,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tstyleValue\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n\treturn returnBlock;\n}\n\n/**\n * Check whether serialization of specific block support feature or set should\n * be skipped.\n *\n * @param {string|Object} blockType Block name or block type object.\n * @param {string} featureSet Name of block support feature set.\n * @param {string} feature Name of the individual feature to check.\n *\n * @return {boolean} Whether serialization should occur.\n */\nexport function shouldSkipSerialization( blockType, featureSet, feature ) {\n\tconst support = getBlockSupport( blockType, featureSet );\n\tconst skipSerialization = support?.__experimentalSkipSerialization;\n\n\tif ( Array.isArray( skipSerialization ) ) {\n\t\treturn skipSerialization.includes( feature );\n\t}\n\n\treturn skipSerialization;\n}\n\n/**\n * Based on the block and its context, returns an object of all the block settings.\n * This object can be passed as a prop to all the Styles UI components\n * (TypographyPanel, DimensionsPanel...).\n *\n * @param {string} name Block name.\n * @param {*} parentLayout Parent layout.\n *\n * @return {Object} Settings object.\n */\nexport function useBlockSettings( name, parentLayout ) {\n\tconst fontFamilies = useSetting( 'typography.fontFamilies' );\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\tconst customFontSize = useSetting( 'typography.customFontSize' );\n\tconst fontStyle = useSetting( 'typography.fontStyle' );\n\tconst fontWeight = useSetting( 'typography.fontWeight' );\n\tconst lineHeight = useSetting( 'typography.lineHeight' );\n\tconst textColumns = useSetting( 'typography.textColumns' );\n\tconst textDecoration = useSetting( 'typography.textDecoration' );\n\tconst writingMode = useSetting( 'typography.writingMode' );\n\tconst textTransform = useSetting( 'typography.textTransform' );\n\tconst letterSpacing = useSetting( 'typography.letterSpacing' );\n\tconst padding = useSetting( 'spacing.padding' );\n\tconst margin = useSetting( 'spacing.margin' );\n\tconst blockGap = useSetting( 'spacing.blockGap' );\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\tconst units = useSetting( 'spacing.units' );\n\tconst minHeight = useSetting( 'dimensions.minHeight' );\n\tconst layout = useSetting( 'layout' );\n\tconst borderColor = useSetting( 'border.color' );\n\tconst borderRadius = useSetting( 'border.radius' );\n\tconst borderStyle = useSetting( 'border.style' );\n\tconst borderWidth = useSetting( 'border.width' );\n\tconst customColorsEnabled = useSetting( 'color.custom' );\n\tconst customColors = useSetting( 'color.palette.custom' );\n\tconst customDuotone = useSetting( 'color.customDuotone' );\n\tconst themeColors = useSetting( 'color.palette.theme' );\n\tconst defaultColors = useSetting( 'color.palette.default' );\n\tconst defaultPalette = useSetting( 'color.defaultPalette' );\n\tconst defaultDuotone = useSetting( 'color.defaultDuotone' );\n\tconst userDuotonePalette = useSetting( 'color.duotone.custom' );\n\tconst themeDuotonePalette = useSetting( 'color.duotone.theme' );\n\tconst defaultDuotonePalette = useSetting( 'color.duotone.default' );\n\tconst userGradientPalette = useSetting( 'color.gradients.custom' );\n\tconst themeGradientPalette = useSetting( 'color.gradients.theme' );\n\tconst defaultGradientPalette = useSetting( 'color.gradients.default' );\n\tconst defaultGradients = useSetting( 'color.defaultGradients' );\n\tconst areCustomGradientsEnabled = useSetting( 'color.customGradient' );\n\tconst isBackgroundEnabled = useSetting( 'color.background' );\n\tconst isLinkEnabled = useSetting( 'color.link' );\n\tconst isTextEnabled = useSetting( 'color.text' );\n\n\tconst rawSettings = useMemo( () => {\n\t\treturn {\n\t\t\tcolor: {\n\t\t\t\tpalette: {\n\t\t\t\t\tcustom: customColors,\n\t\t\t\t\ttheme: themeColors,\n\t\t\t\t\tdefault: defaultColors,\n\t\t\t\t},\n\t\t\t\tgradients: {\n\t\t\t\t\tcustom: userGradientPalette,\n\t\t\t\t\ttheme: themeGradientPalette,\n\t\t\t\t\tdefault: defaultGradientPalette,\n\t\t\t\t},\n\t\t\t\tduotone: {\n\t\t\t\t\tcustom: userDuotonePalette,\n\t\t\t\t\ttheme: themeDuotonePalette,\n\t\t\t\t\tdefault: defaultDuotonePalette,\n\t\t\t\t},\n\t\t\t\tdefaultGradients,\n\t\t\t\tdefaultPalette,\n\t\t\t\tdefaultDuotone,\n\t\t\t\tcustom: customColorsEnabled,\n\t\t\t\tcustomGradient: areCustomGradientsEnabled,\n\t\t\t\tcustomDuotone,\n\t\t\t\tbackground: isBackgroundEnabled,\n\t\t\t\tlink: isLinkEnabled,\n\t\t\t\ttext: isTextEnabled,\n\t\t\t},\n\t\t\ttypography: {\n\t\t\t\tfontFamilies: {\n\t\t\t\t\tcustom: fontFamilies,\n\t\t\t\t},\n\t\t\t\tfontSizes: {\n\t\t\t\t\tcustom: fontSizes,\n\t\t\t\t},\n\t\t\t\tcustomFontSize,\n\t\t\t\tfontStyle,\n\t\t\t\tfontWeight,\n\t\t\t\tlineHeight,\n\t\t\t\ttextColumns,\n\t\t\t\ttextDecoration,\n\t\t\t\ttextTransform,\n\t\t\t\tletterSpacing,\n\t\t\t\twritingMode,\n\t\t\t},\n\t\t\tspacing: {\n\t\t\t\tspacingSizes: {\n\t\t\t\t\tcustom: spacingSizes,\n\t\t\t\t},\n\t\t\t\tpadding,\n\t\t\t\tmargin,\n\t\t\t\tblockGap,\n\t\t\t\tunits,\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tcolor: borderColor,\n\t\t\t\tradius: borderRadius,\n\t\t\t\tstyle: borderStyle,\n\t\t\t\twidth: borderWidth,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\tminHeight,\n\t\t\t},\n\t\t\tlayout,\n\t\t\tparentLayout,\n\t\t};\n\t}, [\n\t\tfontFamilies,\n\t\tfontSizes,\n\t\tcustomFontSize,\n\t\tfontStyle,\n\t\tfontWeight,\n\t\tlineHeight,\n\t\ttextColumns,\n\t\ttextDecoration,\n\t\ttextTransform,\n\t\tletterSpacing,\n\t\twritingMode,\n\t\tpadding,\n\t\tmargin,\n\t\tblockGap,\n\t\tspacingSizes,\n\t\tunits,\n\t\tminHeight,\n\t\tlayout,\n\t\tparentLayout,\n\t\tborderColor,\n\t\tborderRadius,\n\t\tborderStyle,\n\t\tborderWidth,\n\t\tcustomColorsEnabled,\n\t\tcustomColors,\n\t\tcustomDuotone,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tdefaultPalette,\n\t\tdefaultDuotone,\n\t\tuserDuotonePalette,\n\t\tthemeDuotonePalette,\n\t\tdefaultDuotonePalette,\n\t\tuserGradientPalette,\n\t\tthemeGradientPalette,\n\t\tdefaultGradientPalette,\n\t\tdefaultGradients,\n\t\tareCustomGradientsEnabled,\n\t\tisBackgroundEnabled,\n\t\tisLinkEnabled,\n\t\tisTextEnabled,\n\t] );\n\n\treturn useSettingsForBlockElement( rawSettings, name );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,mBAAmB;AACnD,SAASC,OAAO,QAAQ,oBAAoB;;AAE5C;AACA;AACA;AACA,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,0BAA0B,QAAQ,mCAAmC;AAC9E,SAASC,sBAAsB,EAAEC,YAAY,QAAQ,iBAAiB;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAKC,MAAM,IAAM;EAC7C,IACCA,MAAM,KAAK,IAAI,IACf,OAAOA,MAAM,KAAK,QAAQ,IAC1BC,KAAK,CAACC,OAAO,CAAEF,MAAO,CAAC,EACtB;IACD,OAAOA,MAAM;EACd;EAEA,MAAMG,oBAAoB,GAAGC,MAAM,CAACC,OAAO,CAAEL,MAAO,CAAC,CACnDM,GAAG,CAAE,CAAE,CAAEC,GAAG,EAAEC,KAAK,CAAE,KAAM,CAAED,GAAG,EAAER,gBAAgB,CAAES,KAAM,CAAC,CAAG,CAAC,CAC/DC,MAAM,CAAE,CAAE,GAAID,KAAK,CAAE,KAAMA,KAAK,KAAKE,SAAU,CAAC;EAClD,OAAO,CAAEP,oBAAoB,CAACQ,MAAM,GACjCD,SAAS,GACTN,MAAM,CAACQ,WAAW,CAAET,oBAAqB,CAAC;AAC9C,CAAC;AAED,OAAO,SAASU,eAAeA,CAC9BC,cAAc,EACdC,cAAc,EACdC,MAAM,EACNC,MAAM,EACNC,KAAK,EACLC,OAAO,EACN;EACD;EACA,IACCf,MAAM,CAACgB,MAAM,CAAEN,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,CAAC,CAAE,CAAC,CAACO,KAAK,CACxCC,QAAQ,IAAM,CAAEA,QACnB,CAAC,EACA;IACD,OAAON,MAAM;EACd;EACA;EACA;EACA,IAAKG,OAAO,CAACR,MAAM,KAAK,CAAC,IAAIK,MAAM,CAACO,WAAW,CAACZ,MAAM,KAAKM,MAAM,CAACN,MAAM,EAAG;IAC1E,OAAOK,MAAM;EACd;EACA;EACA;EACA;EACA,IAAIQ,wBAAwB,GAAGP,MAAM,CAAE,CAAC,CAAE,EAAEQ,UAAU;EACtD;EACA;EACA;EACA;EACA,IAAKN,OAAO,CAACR,MAAM,GAAG,CAAC,IAAIM,MAAM,CAACN,MAAM,GAAG,CAAC,EAAG;IAC9C,IAAKM,MAAM,CAAEC,KAAK,CAAE,EAAG;MACtBM,wBAAwB,GAAGP,MAAM,CAAEC,KAAK,CAAE,EAAEO,UAAU;IACvD,CAAC,MAAM;MACN,OAAOT,MAAM;IACd;EACD;EACA,IAAIU,WAAW,GAAGV,MAAM;EACxBZ,MAAM,CAACC,OAAO,CAAES,cAAe,CAAC,CAACa,OAAO,CAAE,CAAE,CAAEC,OAAO,EAAEN,QAAQ,CAAE,KAAM;IACtE,IAAKA,QAAQ,EAAG;MACfP,cAAc,CAAEa,OAAO,CAAE,CAACD,OAAO,CAAIE,IAAI,IAAM;QAC9C,MAAMC,UAAU,GAAGjC,sBAAsB,CACxC2B,wBAAwB,EACxBK,IACD,CAAC;QACD,IAAKC,UAAU,EAAG;UACjBJ,WAAW,GAAG;YACb,GAAGA,WAAW;YACdD,UAAU,EAAE3B,YAAY,CACvB4B,WAAW,CAACD,UAAU,EACtBI,IAAI,EACJC,UACD;UACD,CAAC;QACF;MACD,CAAE,CAAC;IACJ;EACD,CAAE,CAAC;EACH,OAAOJ,WAAW;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,uBAAuBA,CAAEC,SAAS,EAAEC,UAAU,EAAEC,OAAO,EAAG;EACzE,MAAMN,OAAO,GAAGnC,eAAe,CAAEuC,SAAS,EAAEC,UAAW,CAAC;EACxD,MAAME,iBAAiB,GAAGP,OAAO,EAAEQ,+BAA+B;EAElE,IAAKnC,KAAK,CAACC,OAAO,CAAEiC,iBAAkB,CAAC,EAAG;IACzC,OAAOA,iBAAiB,CAACE,QAAQ,CAAEH,OAAQ,CAAC;EAC7C;EAEA,OAAOC,iBAAiB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,gBAAgBA,CAAEC,IAAI,EAAEC,YAAY,EAAG;EACtD,MAAMC,YAAY,GAAG9C,UAAU,CAAE,yBAA0B,CAAC;EAC5D,MAAM+C,SAAS,GAAG/C,UAAU,CAAE,sBAAuB,CAAC;EACtD,MAAMgD,cAAc,GAAGhD,UAAU,CAAE,2BAA4B,CAAC;EAChE,MAAMiD,SAAS,GAAGjD,UAAU,CAAE,sBAAuB,CAAC;EACtD,MAAMkD,UAAU,GAAGlD,UAAU,CAAE,uBAAwB,CAAC;EACxD,MAAMmD,UAAU,GAAGnD,UAAU,CAAE,uBAAwB,CAAC;EACxD,MAAMoD,WAAW,GAAGpD,UAAU,CAAE,wBAAyB,CAAC;EAC1D,MAAMqD,cAAc,GAAGrD,UAAU,CAAE,2BAA4B,CAAC;EAChE,MAAMsD,WAAW,GAAGtD,UAAU,CAAE,wBAAyB,CAAC;EAC1D,MAAMuD,aAAa,GAAGvD,UAAU,CAAE,0BAA2B,CAAC;EAC9D,MAAMwD,aAAa,GAAGxD,UAAU,CAAE,0BAA2B,CAAC;EAC9D,MAAMyD,OAAO,GAAGzD,UAAU,CAAE,iBAAkB,CAAC;EAC/C,MAAM0D,MAAM,GAAG1D,UAAU,CAAE,gBAAiB,CAAC;EAC7C,MAAM2D,QAAQ,GAAG3D,UAAU,CAAE,kBAAmB,CAAC;EACjD,MAAM4D,YAAY,GAAG5D,UAAU,CAAE,sBAAuB,CAAC;EACzD,MAAM6D,KAAK,GAAG7D,UAAU,CAAE,eAAgB,CAAC;EAC3C,MAAM8D,SAAS,GAAG9D,UAAU,CAAE,sBAAuB,CAAC;EACtD,MAAM+D,MAAM,GAAG/D,UAAU,CAAE,QAAS,CAAC;EACrC,MAAMgE,WAAW,GAAGhE,UAAU,CAAE,cAAe,CAAC;EAChD,MAAMiE,YAAY,GAAGjE,UAAU,CAAE,eAAgB,CAAC;EAClD,MAAMkE,WAAW,GAAGlE,UAAU,CAAE,cAAe,CAAC;EAChD,MAAMmE,WAAW,GAAGnE,UAAU,CAAE,cAAe,CAAC;EAChD,MAAMoE,mBAAmB,GAAGpE,UAAU,CAAE,cAAe,CAAC;EACxD,MAAMqE,YAAY,GAAGrE,UAAU,CAAE,sBAAuB,CAAC;EACzD,MAAMsE,aAAa,GAAGtE,UAAU,CAAE,qBAAsB,CAAC;EACzD,MAAMuE,WAAW,GAAGvE,UAAU,CAAE,qBAAsB,CAAC;EACvD,MAAMwE,aAAa,GAAGxE,UAAU,CAAE,uBAAwB,CAAC;EAC3D,MAAMyE,cAAc,GAAGzE,UAAU,CAAE,sBAAuB,CAAC;EAC3D,MAAM0E,cAAc,GAAG1E,UAAU,CAAE,sBAAuB,CAAC;EAC3D,MAAM2E,kBAAkB,GAAG3E,UAAU,CAAE,sBAAuB,CAAC;EAC/D,MAAM4E,mBAAmB,GAAG5E,UAAU,CAAE,qBAAsB,CAAC;EAC/D,MAAM6E,qBAAqB,GAAG7E,UAAU,CAAE,uBAAwB,CAAC;EACnE,MAAM8E,mBAAmB,GAAG9E,UAAU,CAAE,wBAAyB,CAAC;EAClE,MAAM+E,oBAAoB,GAAG/E,UAAU,CAAE,uBAAwB,CAAC;EAClE,MAAMgF,sBAAsB,GAAGhF,UAAU,CAAE,yBAA0B,CAAC;EACtE,MAAMiF,gBAAgB,GAAGjF,UAAU,CAAE,wBAAyB,CAAC;EAC/D,MAAMkF,yBAAyB,GAAGlF,UAAU,CAAE,sBAAuB,CAAC;EACtE,MAAMmF,mBAAmB,GAAGnF,UAAU,CAAE,kBAAmB,CAAC;EAC5D,MAAMoF,aAAa,GAAGpF,UAAU,CAAE,YAAa,CAAC;EAChD,MAAMqF,aAAa,GAAGrF,UAAU,CAAE,YAAa,CAAC;EAEhD,MAAMsF,WAAW,GAAGvF,OAAO,CAAE,MAAM;IAClC,OAAO;MACNwF,KAAK,EAAE;QACNC,OAAO,EAAE;UACRC,MAAM,EAAEpB,YAAY;UACpBqB,KAAK,EAAEnB,WAAW;UAClBoB,OAAO,EAAEnB;QACV,CAAC;QACDoB,SAAS,EAAE;UACVH,MAAM,EAAEX,mBAAmB;UAC3BY,KAAK,EAAEX,oBAAoB;UAC3BY,OAAO,EAAEX;QACV,CAAC;QACDa,OAAO,EAAE;UACRJ,MAAM,EAAEd,kBAAkB;UAC1Be,KAAK,EAAEd,mBAAmB;UAC1Be,OAAO,EAAEd;QACV,CAAC;QACDI,gBAAgB;QAChBR,cAAc;QACdC,cAAc;QACde,MAAM,EAAErB,mBAAmB;QAC3B0B,cAAc,EAAEZ,yBAAyB;QACzCZ,aAAa;QACbyB,UAAU,EAAEZ,mBAAmB;QAC/Ba,IAAI,EAAEZ,aAAa;QACnBa,IAAI,EAAEZ;MACP,CAAC;MACDa,UAAU,EAAE;QACXpD,YAAY,EAAE;UACb2C,MAAM,EAAE3C;QACT,CAAC;QACDC,SAAS,EAAE;UACV0C,MAAM,EAAE1C;QACT,CAAC;QACDC,cAAc;QACdC,SAAS;QACTC,UAAU;QACVC,UAAU;QACVC,WAAW;QACXC,cAAc;QACdE,aAAa;QACbC,aAAa;QACbF;MACD,CAAC;MACD6C,OAAO,EAAE;QACRvC,YAAY,EAAE;UACb6B,MAAM,EAAE7B;QACT,CAAC;QACDH,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRE;MACD,CAAC;MACDuC,MAAM,EAAE;QACPb,KAAK,EAAEvB,WAAW;QAClBqC,MAAM,EAAEpC,YAAY;QACpBqC,KAAK,EAAEpC,WAAW;QAClBqC,KAAK,EAAEpC;MACR,CAAC;MACDqC,UAAU,EAAE;QACX1C;MACD,CAAC;MACDC,MAAM;MACNlB;IACD,CAAC;EACF,CAAC,EAAE,CACFC,YAAY,EACZC,SAAS,EACTC,cAAc,EACdC,SAAS,EACTC,UAAU,EACVC,UAAU,EACVC,WAAW,EACXC,cAAc,EACdE,aAAa,EACbC,aAAa,EACbF,WAAW,EACXG,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,YAAY,EACZC,KAAK,EACLC,SAAS,EACTC,MAAM,EACNlB,YAAY,EACZmB,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXC,mBAAmB,EACnBC,YAAY,EACZC,aAAa,EACbC,WAAW,EACXC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,kBAAkB,EAClBC,mBAAmB,EACnBC,qBAAqB,EACrBC,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,EACtBC,gBAAgB,EAChBC,yBAAyB,EACzBC,mBAAmB,EACnBC,aAAa,EACbC,aAAa,CACZ,CAAC;EAEH,OAAOpF,0BAA0B,CAAEqF,WAAW,EAAE1C,IAAK,CAAC;AACvD"}
1
+ {"version":3,"names":["getBlockSupport","useMemo","useSetting","useSettingsForBlockElement","getValueFromObjectPath","setImmutably","cleanEmptyObject","object","Array","isArray","cleanedNestedObjects","Object","entries","map","key","value","filter","undefined","length","fromEntries","transformStyles","activeSupports","migrationPaths","result","source","index","results","values","every","isActive","innerBlocks","referenceBlockAttributes","attributes","returnBlock","forEach","support","path","styleValue","shouldSkipSerialization","blockType","featureSet","feature","skipSerialization","__experimentalSkipSerialization","includes","useBlockSettings","name","parentLayout","fontFamilies","fontSizes","customFontSize","fontStyle","fontWeight","lineHeight","textColumns","textDecoration","writingMode","textTransform","letterSpacing","padding","margin","blockGap","spacingSizes","units","minHeight","layout","borderColor","borderRadius","borderStyle","borderWidth","customColorsEnabled","customColors","customDuotone","themeColors","defaultColors","defaultPalette","defaultDuotone","userDuotonePalette","themeDuotonePalette","defaultDuotonePalette","userGradientPalette","themeGradientPalette","defaultGradientPalette","defaultGradients","areCustomGradientsEnabled","isBackgroundEnabled","isLinkEnabled","isTextEnabled","isHeadingEnabled","isButtonEnabled","rawSettings","color","palette","custom","theme","default","gradients","duotone","customGradient","background","link","heading","button","text","typography","spacing","border","radius","style","width","dimensions"],"sources":["@wordpress/block-editor/src/hooks/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { useSetting } from '../components';\nimport { useSettingsForBlockElement } from '../components/global-styles/hooks';\nimport { getValueFromObjectPath, setImmutably } from '../utils/object';\n\n/**\n * Removed falsy values from nested object.\n *\n * @param {*} object\n * @return {*} Object cleaned from falsy values\n */\nexport const cleanEmptyObject = ( object ) => {\n\tif (\n\t\tobject === null ||\n\t\ttypeof object !== 'object' ||\n\t\tArray.isArray( object )\n\t) {\n\t\treturn object;\n\t}\n\n\tconst cleanedNestedObjects = Object.entries( object )\n\t\t.map( ( [ key, value ] ) => [ key, cleanEmptyObject( value ) ] )\n\t\t.filter( ( [ , value ] ) => value !== undefined );\n\treturn ! cleanedNestedObjects.length\n\t\t? undefined\n\t\t: Object.fromEntries( cleanedNestedObjects );\n};\n\nexport function transformStyles(\n\tactiveSupports,\n\tmigrationPaths,\n\tresult,\n\tsource,\n\tindex,\n\tresults\n) {\n\t// If there are no active supports return early.\n\tif (\n\t\tObject.values( activeSupports ?? {} ).every(\n\t\t\t( isActive ) => ! isActive\n\t\t)\n\t) {\n\t\treturn result;\n\t}\n\t// If the condition verifies we are probably in the presence of a wrapping transform\n\t// e.g: nesting paragraphs in a group or columns and in that case the styles should not be transformed.\n\tif ( results.length === 1 && result.innerBlocks.length === source.length ) {\n\t\treturn result;\n\t}\n\t// For cases where we have a transform from one block to multiple blocks\n\t// or multiple blocks to one block we apply the styles of the first source block\n\t// to the result(s).\n\tlet referenceBlockAttributes = source[ 0 ]?.attributes;\n\t// If we are in presence of transform between more than one block in the source\n\t// that has more than one block in the result\n\t// we apply the styles on source N to the result N,\n\t// if source N does not exists we do nothing.\n\tif ( results.length > 1 && source.length > 1 ) {\n\t\tif ( source[ index ] ) {\n\t\t\treferenceBlockAttributes = source[ index ]?.attributes;\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n\tlet returnBlock = result;\n\tObject.entries( activeSupports ).forEach( ( [ support, isActive ] ) => {\n\t\tif ( isActive ) {\n\t\t\tmigrationPaths[ support ].forEach( ( path ) => {\n\t\t\t\tconst styleValue = getValueFromObjectPath(\n\t\t\t\t\treferenceBlockAttributes,\n\t\t\t\t\tpath\n\t\t\t\t);\n\t\t\t\tif ( styleValue ) {\n\t\t\t\t\treturnBlock = {\n\t\t\t\t\t\t...returnBlock,\n\t\t\t\t\t\tattributes: setImmutably(\n\t\t\t\t\t\t\treturnBlock.attributes,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tstyleValue\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n\treturn returnBlock;\n}\n\n/**\n * Check whether serialization of specific block support feature or set should\n * be skipped.\n *\n * @param {string|Object} blockType Block name or block type object.\n * @param {string} featureSet Name of block support feature set.\n * @param {string} feature Name of the individual feature to check.\n *\n * @return {boolean} Whether serialization should occur.\n */\nexport function shouldSkipSerialization( blockType, featureSet, feature ) {\n\tconst support = getBlockSupport( blockType, featureSet );\n\tconst skipSerialization = support?.__experimentalSkipSerialization;\n\n\tif ( Array.isArray( skipSerialization ) ) {\n\t\treturn skipSerialization.includes( feature );\n\t}\n\n\treturn skipSerialization;\n}\n\n/**\n * Based on the block and its context, returns an object of all the block settings.\n * This object can be passed as a prop to all the Styles UI components\n * (TypographyPanel, DimensionsPanel...).\n *\n * @param {string} name Block name.\n * @param {*} parentLayout Parent layout.\n *\n * @return {Object} Settings object.\n */\nexport function useBlockSettings( name, parentLayout ) {\n\tconst fontFamilies = useSetting( 'typography.fontFamilies' );\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\tconst customFontSize = useSetting( 'typography.customFontSize' );\n\tconst fontStyle = useSetting( 'typography.fontStyle' );\n\tconst fontWeight = useSetting( 'typography.fontWeight' );\n\tconst lineHeight = useSetting( 'typography.lineHeight' );\n\tconst textColumns = useSetting( 'typography.textColumns' );\n\tconst textDecoration = useSetting( 'typography.textDecoration' );\n\tconst writingMode = useSetting( 'typography.writingMode' );\n\tconst textTransform = useSetting( 'typography.textTransform' );\n\tconst letterSpacing = useSetting( 'typography.letterSpacing' );\n\tconst padding = useSetting( 'spacing.padding' );\n\tconst margin = useSetting( 'spacing.margin' );\n\tconst blockGap = useSetting( 'spacing.blockGap' );\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\tconst units = useSetting( 'spacing.units' );\n\tconst minHeight = useSetting( 'dimensions.minHeight' );\n\tconst layout = useSetting( 'layout' );\n\tconst borderColor = useSetting( 'border.color' );\n\tconst borderRadius = useSetting( 'border.radius' );\n\tconst borderStyle = useSetting( 'border.style' );\n\tconst borderWidth = useSetting( 'border.width' );\n\tconst customColorsEnabled = useSetting( 'color.custom' );\n\tconst customColors = useSetting( 'color.palette.custom' );\n\tconst customDuotone = useSetting( 'color.customDuotone' );\n\tconst themeColors = useSetting( 'color.palette.theme' );\n\tconst defaultColors = useSetting( 'color.palette.default' );\n\tconst defaultPalette = useSetting( 'color.defaultPalette' );\n\tconst defaultDuotone = useSetting( 'color.defaultDuotone' );\n\tconst userDuotonePalette = useSetting( 'color.duotone.custom' );\n\tconst themeDuotonePalette = useSetting( 'color.duotone.theme' );\n\tconst defaultDuotonePalette = useSetting( 'color.duotone.default' );\n\tconst userGradientPalette = useSetting( 'color.gradients.custom' );\n\tconst themeGradientPalette = useSetting( 'color.gradients.theme' );\n\tconst defaultGradientPalette = useSetting( 'color.gradients.default' );\n\tconst defaultGradients = useSetting( 'color.defaultGradients' );\n\tconst areCustomGradientsEnabled = useSetting( 'color.customGradient' );\n\tconst isBackgroundEnabled = useSetting( 'color.background' );\n\tconst isLinkEnabled = useSetting( 'color.link' );\n\tconst isTextEnabled = useSetting( 'color.text' );\n\tconst isHeadingEnabled = useSetting( 'color.heading' );\n\tconst isButtonEnabled = useSetting( 'color.button' );\n\n\tconst rawSettings = useMemo( () => {\n\t\treturn {\n\t\t\tcolor: {\n\t\t\t\tpalette: {\n\t\t\t\t\tcustom: customColors,\n\t\t\t\t\ttheme: themeColors,\n\t\t\t\t\tdefault: defaultColors,\n\t\t\t\t},\n\t\t\t\tgradients: {\n\t\t\t\t\tcustom: userGradientPalette,\n\t\t\t\t\ttheme: themeGradientPalette,\n\t\t\t\t\tdefault: defaultGradientPalette,\n\t\t\t\t},\n\t\t\t\tduotone: {\n\t\t\t\t\tcustom: userDuotonePalette,\n\t\t\t\t\ttheme: themeDuotonePalette,\n\t\t\t\t\tdefault: defaultDuotonePalette,\n\t\t\t\t},\n\t\t\t\tdefaultGradients,\n\t\t\t\tdefaultPalette,\n\t\t\t\tdefaultDuotone,\n\t\t\t\tcustom: customColorsEnabled,\n\t\t\t\tcustomGradient: areCustomGradientsEnabled,\n\t\t\t\tcustomDuotone,\n\t\t\t\tbackground: isBackgroundEnabled,\n\t\t\t\tlink: isLinkEnabled,\n\t\t\t\theading: isHeadingEnabled,\n\t\t\t\tbutton: isButtonEnabled,\n\t\t\t\ttext: isTextEnabled,\n\t\t\t},\n\t\t\ttypography: {\n\t\t\t\tfontFamilies: {\n\t\t\t\t\tcustom: fontFamilies,\n\t\t\t\t},\n\t\t\t\tfontSizes: {\n\t\t\t\t\tcustom: fontSizes,\n\t\t\t\t},\n\t\t\t\tcustomFontSize,\n\t\t\t\tfontStyle,\n\t\t\t\tfontWeight,\n\t\t\t\tlineHeight,\n\t\t\t\ttextColumns,\n\t\t\t\ttextDecoration,\n\t\t\t\ttextTransform,\n\t\t\t\tletterSpacing,\n\t\t\t\twritingMode,\n\t\t\t},\n\t\t\tspacing: {\n\t\t\t\tspacingSizes: {\n\t\t\t\t\tcustom: spacingSizes,\n\t\t\t\t},\n\t\t\t\tpadding,\n\t\t\t\tmargin,\n\t\t\t\tblockGap,\n\t\t\t\tunits,\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tcolor: borderColor,\n\t\t\t\tradius: borderRadius,\n\t\t\t\tstyle: borderStyle,\n\t\t\t\twidth: borderWidth,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\tminHeight,\n\t\t\t},\n\t\t\tlayout,\n\t\t\tparentLayout,\n\t\t};\n\t}, [\n\t\tfontFamilies,\n\t\tfontSizes,\n\t\tcustomFontSize,\n\t\tfontStyle,\n\t\tfontWeight,\n\t\tlineHeight,\n\t\ttextColumns,\n\t\ttextDecoration,\n\t\ttextTransform,\n\t\tletterSpacing,\n\t\twritingMode,\n\t\tpadding,\n\t\tmargin,\n\t\tblockGap,\n\t\tspacingSizes,\n\t\tunits,\n\t\tminHeight,\n\t\tlayout,\n\t\tparentLayout,\n\t\tborderColor,\n\t\tborderRadius,\n\t\tborderStyle,\n\t\tborderWidth,\n\t\tcustomColorsEnabled,\n\t\tcustomColors,\n\t\tcustomDuotone,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tdefaultPalette,\n\t\tdefaultDuotone,\n\t\tuserDuotonePalette,\n\t\tthemeDuotonePalette,\n\t\tdefaultDuotonePalette,\n\t\tuserGradientPalette,\n\t\tthemeGradientPalette,\n\t\tdefaultGradientPalette,\n\t\tdefaultGradients,\n\t\tareCustomGradientsEnabled,\n\t\tisBackgroundEnabled,\n\t\tisLinkEnabled,\n\t\tisTextEnabled,\n\t] );\n\n\treturn useSettingsForBlockElement( rawSettings, name );\n}\n"],"mappings":"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"}
@@ -20,6 +20,7 @@ import DimensionsTool from './components/dimensions-tool';
20
20
  import ResolutionTool from './components/resolution-tool';
21
21
  import { default as ReusableBlocksRenameHint, useReusableBlocksRenameHint } from './components/inserter/reusable-block-rename-hint';
22
22
  import { usesContextKey } from './components/rich-text/format-edit';
23
+ import { ExperimentalBlockCanvas } from './components/block-canvas';
23
24
 
24
25
  /**
25
26
  * Private @wordpress/block-editor APIs.
@@ -27,6 +28,7 @@ import { usesContextKey } from './components/rich-text/format-edit';
27
28
  export const privateApis = {};
28
29
  lock(privateApis, {
29
30
  ...globalStyles,
31
+ ExperimentalBlockCanvas,
30
32
  ExperimentalBlockEditorProvider,
31
33
  getRichTextValues,
32
34
  kebabCase,
@@ -1 +1 @@
1
- {"version":3,"names":["globalStyles","ExperimentalBlockEditorProvider","lock","getRichTextValues","kebabCase","ResizableBoxPopover","ComposedPrivateInserter","PrivateInserter","PrivateListView","BlockInfo","useShouldContextualToolbarShow","cleanEmptyObject","BlockQuickNavigation","LayoutStyle","BlockRemovalWarningModal","useLayoutClasses","useLayoutStyles","DimensionsTool","ResolutionTool","default","ReusableBlocksRenameHint","useReusableBlocksRenameHint","usesContextKey","privateApis"],"sources":["@wordpress/block-editor/src/private-apis.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport * as globalStyles from './components/global-styles';\nimport { ExperimentalBlockEditorProvider } from './components/provider';\nimport { lock } from './lock-unlock';\nimport { getRichTextValues } from './components/rich-text/get-rich-text-values';\nimport { kebabCase } from './utils/object';\nimport ResizableBoxPopover from './components/resizable-box-popover';\nimport { ComposedPrivateInserter as PrivateInserter } from './components/inserter';\nimport { PrivateListView } from './components/list-view';\nimport BlockInfo from './components/block-info-slot-fill';\nimport { useShouldContextualToolbarShow } from './utils/use-should-contextual-toolbar-show';\nimport { cleanEmptyObject } from './hooks/utils';\nimport BlockQuickNavigation from './components/block-quick-navigation';\nimport { LayoutStyle } from './components/block-list/layout';\nimport { BlockRemovalWarningModal } from './components/block-removal-warning-modal';\nimport { useLayoutClasses, useLayoutStyles } from './hooks';\nimport DimensionsTool from './components/dimensions-tool';\nimport ResolutionTool from './components/resolution-tool';\nimport {\n\tdefault as ReusableBlocksRenameHint,\n\tuseReusableBlocksRenameHint,\n} from './components/inserter/reusable-block-rename-hint';\nimport { usesContextKey } from './components/rich-text/format-edit';\n\n/**\n * Private @wordpress/block-editor APIs.\n */\nexport const privateApis = {};\nlock( privateApis, {\n\t...globalStyles,\n\tExperimentalBlockEditorProvider,\n\tgetRichTextValues,\n\tkebabCase,\n\tPrivateInserter,\n\tPrivateListView,\n\tResizableBoxPopover,\n\tBlockInfo,\n\tuseShouldContextualToolbarShow,\n\tcleanEmptyObject,\n\tBlockQuickNavigation,\n\tLayoutStyle,\n\tBlockRemovalWarningModal,\n\tuseLayoutClasses,\n\tuseLayoutStyles,\n\tDimensionsTool,\n\tResolutionTool,\n\tReusableBlocksRenameHint,\n\tuseReusableBlocksRenameHint,\n\tusesContextKey,\n} );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,KAAKA,YAAY,MAAM,4BAA4B;AAC1D,SAASC,+BAA+B,QAAQ,uBAAuB;AACvE,SAASC,IAAI,QAAQ,eAAe;AACpC,SAASC,iBAAiB,QAAQ,6CAA6C;AAC/E,SAASC,SAAS,QAAQ,gBAAgB;AAC1C,OAAOC,mBAAmB,MAAM,oCAAoC;AACpE,SAASC,uBAAuB,IAAIC,eAAe,QAAQ,uBAAuB;AAClF,SAASC,eAAe,QAAQ,wBAAwB;AACxD,OAAOC,SAAS,MAAM,mCAAmC;AACzD,SAASC,8BAA8B,QAAQ,4CAA4C;AAC3F,SAASC,gBAAgB,QAAQ,eAAe;AAChD,OAAOC,oBAAoB,MAAM,qCAAqC;AACtE,SAASC,WAAW,QAAQ,gCAAgC;AAC5D,SAASC,wBAAwB,QAAQ,0CAA0C;AACnF,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,SAAS;AAC3D,OAAOC,cAAc,MAAM,8BAA8B;AACzD,OAAOC,cAAc,MAAM,8BAA8B;AACzD,SACCC,OAAO,IAAIC,wBAAwB,EACnCC,2BAA2B,QACrB,kDAAkD;AACzD,SAASC,cAAc,QAAQ,oCAAoC;;AAEnE;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAG,CAAC,CAAC;AAC7BrB,IAAI,CAAEqB,WAAW,EAAE;EAClB,GAAGvB,YAAY;EACfC,+BAA+B;EAC/BE,iBAAiB;EACjBC,SAAS;EACTG,eAAe;EACfC,eAAe;EACfH,mBAAmB;EACnBI,SAAS;EACTC,8BAA8B;EAC9BC,gBAAgB;EAChBC,oBAAoB;EACpBC,WAAW;EACXC,wBAAwB;EACxBC,gBAAgB;EAChBC,eAAe;EACfC,cAAc;EACdC,cAAc;EACdE,wBAAwB;EACxBC,2BAA2B;EAC3BC;AACD,CAAE,CAAC"}
1
+ {"version":3,"names":["globalStyles","ExperimentalBlockEditorProvider","lock","getRichTextValues","kebabCase","ResizableBoxPopover","ComposedPrivateInserter","PrivateInserter","PrivateListView","BlockInfo","useShouldContextualToolbarShow","cleanEmptyObject","BlockQuickNavigation","LayoutStyle","BlockRemovalWarningModal","useLayoutClasses","useLayoutStyles","DimensionsTool","ResolutionTool","default","ReusableBlocksRenameHint","useReusableBlocksRenameHint","usesContextKey","ExperimentalBlockCanvas","privateApis"],"sources":["@wordpress/block-editor/src/private-apis.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport * as globalStyles from './components/global-styles';\nimport { ExperimentalBlockEditorProvider } from './components/provider';\nimport { lock } from './lock-unlock';\nimport { getRichTextValues } from './components/rich-text/get-rich-text-values';\nimport { kebabCase } from './utils/object';\nimport ResizableBoxPopover from './components/resizable-box-popover';\nimport { ComposedPrivateInserter as PrivateInserter } from './components/inserter';\nimport { PrivateListView } from './components/list-view';\nimport BlockInfo from './components/block-info-slot-fill';\nimport { useShouldContextualToolbarShow } from './utils/use-should-contextual-toolbar-show';\nimport { cleanEmptyObject } from './hooks/utils';\nimport BlockQuickNavigation from './components/block-quick-navigation';\nimport { LayoutStyle } from './components/block-list/layout';\nimport { BlockRemovalWarningModal } from './components/block-removal-warning-modal';\nimport { useLayoutClasses, useLayoutStyles } from './hooks';\nimport DimensionsTool from './components/dimensions-tool';\nimport ResolutionTool from './components/resolution-tool';\nimport {\n\tdefault as ReusableBlocksRenameHint,\n\tuseReusableBlocksRenameHint,\n} from './components/inserter/reusable-block-rename-hint';\nimport { usesContextKey } from './components/rich-text/format-edit';\nimport { ExperimentalBlockCanvas } from './components/block-canvas';\n\n/**\n * Private @wordpress/block-editor APIs.\n */\nexport const privateApis = {};\nlock( privateApis, {\n\t...globalStyles,\n\tExperimentalBlockCanvas,\n\tExperimentalBlockEditorProvider,\n\tgetRichTextValues,\n\tkebabCase,\n\tPrivateInserter,\n\tPrivateListView,\n\tResizableBoxPopover,\n\tBlockInfo,\n\tuseShouldContextualToolbarShow,\n\tcleanEmptyObject,\n\tBlockQuickNavigation,\n\tLayoutStyle,\n\tBlockRemovalWarningModal,\n\tuseLayoutClasses,\n\tuseLayoutStyles,\n\tDimensionsTool,\n\tResolutionTool,\n\tReusableBlocksRenameHint,\n\tuseReusableBlocksRenameHint,\n\tusesContextKey,\n} );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,KAAKA,YAAY,MAAM,4BAA4B;AAC1D,SAASC,+BAA+B,QAAQ,uBAAuB;AACvE,SAASC,IAAI,QAAQ,eAAe;AACpC,SAASC,iBAAiB,QAAQ,6CAA6C;AAC/E,SAASC,SAAS,QAAQ,gBAAgB;AAC1C,OAAOC,mBAAmB,MAAM,oCAAoC;AACpE,SAASC,uBAAuB,IAAIC,eAAe,QAAQ,uBAAuB;AAClF,SAASC,eAAe,QAAQ,wBAAwB;AACxD,OAAOC,SAAS,MAAM,mCAAmC;AACzD,SAASC,8BAA8B,QAAQ,4CAA4C;AAC3F,SAASC,gBAAgB,QAAQ,eAAe;AAChD,OAAOC,oBAAoB,MAAM,qCAAqC;AACtE,SAASC,WAAW,QAAQ,gCAAgC;AAC5D,SAASC,wBAAwB,QAAQ,0CAA0C;AACnF,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,SAAS;AAC3D,OAAOC,cAAc,MAAM,8BAA8B;AACzD,OAAOC,cAAc,MAAM,8BAA8B;AACzD,SACCC,OAAO,IAAIC,wBAAwB,EACnCC,2BAA2B,QACrB,kDAAkD;AACzD,SAASC,cAAc,QAAQ,oCAAoC;AACnE,SAASC,uBAAuB,QAAQ,2BAA2B;;AAEnE;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAG,CAAC,CAAC;AAC7BtB,IAAI,CAAEsB,WAAW,EAAE;EAClB,GAAGxB,YAAY;EACfuB,uBAAuB;EACvBtB,+BAA+B;EAC/BE,iBAAiB;EACjBC,SAAS;EACTG,eAAe;EACfC,eAAe;EACfH,mBAAmB;EACnBI,SAAS;EACTC,8BAA8B;EAC9BC,gBAAgB;EAChBC,oBAAoB;EACpBC,WAAW;EACXC,wBAAwB;EACxBC,gBAAgB;EAChBC,eAAe;EACfC,cAAc;EACdC,cAAc;EACdE,wBAAwB;EACxBC,2BAA2B;EAC3BC;AACD,CAAE,CAAC"}
@@ -339,7 +339,8 @@ function getBlocksWithDefaultStylesApplied(blocks, blockEditorSettings) {
339
339
  */
340
340
  export const replaceBlocks = (clientIds, blocks, indexToSelect, initialPosition = 0, meta) => ({
341
341
  select,
342
- dispatch
342
+ dispatch,
343
+ registry
343
344
  }) => {
344
345
  /* eslint-enable jsdoc/valid-types */
345
346
  clientIds = castArray(clientIds);
@@ -353,16 +354,22 @@ export const replaceBlocks = (clientIds, blocks, indexToSelect, initialPosition
353
354
  return;
354
355
  }
355
356
  }
356
- dispatch({
357
- type: 'REPLACE_BLOCKS',
358
- clientIds,
359
- blocks,
360
- time: Date.now(),
361
- indexToSelect,
362
- initialPosition,
363
- meta
357
+ // We're batching these two actions because an extra `undo/redo` step can
358
+ // be created, based on whether we insert a default block or not.
359
+ registry.batch(() => {
360
+ dispatch({
361
+ type: 'REPLACE_BLOCKS',
362
+ clientIds,
363
+ blocks,
364
+ time: Date.now(),
365
+ indexToSelect,
366
+ initialPosition,
367
+ meta
368
+ });
369
+ // To avoid a focus loss when removing the last block, assure there is
370
+ // always a default block if the last of the blocks have been removed.
371
+ dispatch.ensureDefaultBlock();
364
372
  });
365
- dispatch.ensureDefaultBlock();
366
373
  };
367
374
 
368
375
  /**
@@ -865,6 +872,22 @@ export const mergeBlocks = (firstBlockClientId, secondBlockClientId) => ({
865
872
  dispatch.insertBlocks(blockWithSameType.innerBlocks, undefined, clientIdA);
866
873
  dispatch.removeBlock(clientIdB);
867
874
  dispatch.selectBlock(blockWithSameType.innerBlocks[0].clientId);
875
+
876
+ // Attempt to merge the next block if it's the same type and
877
+ // same attributes. This is useful when merging a paragraph into
878
+ // a list, and the next block is also a list. If we don't merge,
879
+ // it looks like one list, but it's actually two lists. The same
880
+ // applies to other blocks such as a group with the same
881
+ // attributes.
882
+ const nextBlockClientId = select.getNextBlockClientId(clientIdA);
883
+ if (nextBlockClientId && select.getBlockName(clientIdA) === select.getBlockName(nextBlockClientId)) {
884
+ const rootAttributes = select.getBlockAttributes(clientIdA);
885
+ const previousRootAttributes = select.getBlockAttributes(nextBlockClientId);
886
+ if (Object.keys(rootAttributes).every(key => rootAttributes[key] === previousRootAttributes[key])) {
887
+ dispatch.moveBlocksToPosition(select.getBlockOrder(nextBlockClientId), nextBlockClientId, clientIdA);
888
+ dispatch.removeBlock(nextBlockClientId, false);
889
+ }
890
+ }
868
891
  });
869
892
  return;
870
893
  }