@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":["_element","require","_classnames","_interopRequireDefault","_icons","_components","_data","_keycodes","_blocks","_a11y","_dom","_i18n","_blockTitle","_blockIcon","_store","_blockDraggable","_useBlockDisplayInformation","_useBlockRefs","_blockMover","BlockSelectionButton","clientId","rootClientId","blockInformation","useBlockDisplayInformation","selected","useSelect","select","getBlock","getBlockIndex","hasBlockMovingClientId","getBlockListSettings","__unstableGetEditorMode","blockEditorStore","index","name","attributes","blockMovingMode","orientation","editorMode","setNavigationMode","removeBlock","useDispatch","ref","useRef","blockType","getBlockType","label","getAccessibleBlockLabel","useEffect","current","focus","speak","blockElement","useBlockElement","getBlockRootClientId","getClientIdsOfDescendants","getSelectedBlockClientId","getMultiSelectedBlocksEndClientId","getPreviousBlockClientId","getNextBlockClientId","selectBlock","clearSelectedBlock","setBlockMovingClientId","moveBlockToPosition","onKeyDown","event","keyCode","isUp","UP","isDown","DOWN","isLeft","LEFT","isRight","RIGHT","isTab","TAB","isEscape","ESCAPE","isEnter","ENTER","isSpace","SPACE","isShift","shiftKey","BACKSPACE","DELETE","preventDefault","selectedBlockClientId","selectionEndClientId","selectionBeforeEndClientId","selectionAfterEndClientId","navigateUp","navigateDown","navigateOut","navigateIn","focusedBlockUid","_getBlockRootClientId","_getClientIdsOfDescen","startingBlockClientId","defaultPrevented","sourceRoot","destRoot","sourceBlockIndex","destinationBlockIndex","nextTabbable","tabbable","findNext","contains","ownerDocument","defaultView","frameElement","findPrevious","classNames","classnames","dragHandleLabel","__","createElement","className","Flex","justify","FlexItem","default","icon","showColors","clientIds","hideDragHandle","draggableProps","Button","dragHandle","tabIndex","onClick","undefined","showTooltip","maximumLength","_default","exports"],"sources":["@wordpress/block-editor/src/components/block-tools/block-selection-button.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { dragHandle } from '@wordpress/icons';\nimport { Button, Flex, FlexItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tBACKSPACE,\n\tDELETE,\n\tUP,\n\tDOWN,\n\tLEFT,\n\tRIGHT,\n\tTAB,\n\tESCAPE,\n\tENTER,\n\tSPACE,\n} from '@wordpress/keycodes';\nimport {\n\tgetBlockType,\n\t__experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel,\n} from '@wordpress/blocks';\nimport { speak } from '@wordpress/a11y';\nimport { focus } from '@wordpress/dom';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockTitle from '../block-title';\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\nimport BlockDraggable from '../block-draggable';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport BlockMover from '../block-mover';\n\n/**\n * Block selection button component, displaying the label of the block. If the block\n * descends from a root block, a button is displayed enabling the user to select\n * the root block.\n *\n * @param {string} props Component props.\n * @param {string} props.clientId Client ID of block.\n *\n * @return {WPComponent} The component to be rendered.\n */\nfunction BlockSelectionButton( { clientId, rootClientId } ) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockIndex,\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tgetBlockListSettings,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tconst { name, attributes } = getBlock( clientId );\n\t\t\tconst blockMovingMode = hasBlockMovingClientId();\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tname,\n\t\t\t\tattributes,\n\t\t\t\tblockMovingMode,\n\t\t\t\torientation: getBlockListSettings( rootClientId )?.orientation,\n\t\t\t\teditorMode: __unstableGetEditorMode(),\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\tconst {\n\t\tindex,\n\t\tname,\n\t\tattributes,\n\t\tblockMovingMode,\n\t\torientation,\n\t\teditorMode,\n\t} = selected;\n\tconst { setNavigationMode, removeBlock } = useDispatch( blockEditorStore );\n\tconst ref = useRef();\n\n\tconst blockType = getBlockType( name );\n\tconst label = getAccessibleBlockLabel(\n\t\tblockType,\n\t\tattributes,\n\t\tindex + 1,\n\t\torientation\n\t);\n\n\t// Focus the breadcrumb in navigation mode.\n\tuseEffect( () => {\n\t\tref.current.focus();\n\n\t\tspeak( label );\n\t}, [ label ] );\n\tconst blockElement = useBlockElement( clientId );\n\n\tconst {\n\t\thasBlockMovingClientId,\n\t\tgetBlockIndex,\n\t\tgetBlockRootClientId,\n\t\tgetClientIdsOfDescendants,\n\t\tgetSelectedBlockClientId,\n\t\tgetMultiSelectedBlocksEndClientId,\n\t\tgetPreviousBlockClientId,\n\t\tgetNextBlockClientId,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tselectBlock,\n\t\tclearSelectedBlock,\n\t\tsetBlockMovingClientId,\n\t\tmoveBlockToPosition,\n\t} = useDispatch( blockEditorStore );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\t\tconst isUp = keyCode === UP;\n\t\tconst isDown = keyCode === DOWN;\n\t\tconst isLeft = keyCode === LEFT;\n\t\tconst isRight = keyCode === RIGHT;\n\t\tconst isTab = keyCode === TAB;\n\t\tconst isEscape = keyCode === ESCAPE;\n\t\tconst isEnter = keyCode === ENTER;\n\t\tconst isSpace = keyCode === SPACE;\n\t\tconst isShift = event.shiftKey;\n\n\t\tif ( keyCode === BACKSPACE || keyCode === DELETE ) {\n\t\t\tremoveBlock( clientId );\n\t\t\tevent.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst selectionEndClientId = getMultiSelectedBlocksEndClientId();\n\t\tconst selectionBeforeEndClientId = getPreviousBlockClientId(\n\t\t\tselectionEndClientId || selectedBlockClientId\n\t\t);\n\t\tconst selectionAfterEndClientId = getNextBlockClientId(\n\t\t\tselectionEndClientId || selectedBlockClientId\n\t\t);\n\n\t\tconst navigateUp = ( isTab && isShift ) || isUp;\n\t\tconst navigateDown = ( isTab && ! isShift ) || isDown;\n\t\t// Move out of current nesting level (no effect if at root level).\n\t\tconst navigateOut = isLeft;\n\t\t// Move into next nesting level (no effect if the current block has no innerBlocks).\n\t\tconst navigateIn = isRight;\n\n\t\tlet focusedBlockUid;\n\t\tif ( navigateUp ) {\n\t\t\tfocusedBlockUid = selectionBeforeEndClientId;\n\t\t} else if ( navigateDown ) {\n\t\t\tfocusedBlockUid = selectionAfterEndClientId;\n\t\t} else if ( navigateOut ) {\n\t\t\tfocusedBlockUid =\n\t\t\t\tgetBlockRootClientId( selectedBlockClientId ) ??\n\t\t\t\tselectedBlockClientId;\n\t\t} else if ( navigateIn ) {\n\t\t\tfocusedBlockUid =\n\t\t\t\tgetClientIdsOfDescendants( [ selectedBlockClientId ] )[ 0 ] ??\n\t\t\t\tselectedBlockClientId;\n\t\t}\n\t\tconst startingBlockClientId = hasBlockMovingClientId();\n\t\tif ( isEscape && startingBlockClientId && ! event.defaultPrevented ) {\n\t\t\tsetBlockMovingClientId( null );\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tif ( ( isEnter || isSpace ) && startingBlockClientId ) {\n\t\t\tconst sourceRoot = getBlockRootClientId( startingBlockClientId );\n\t\t\tconst destRoot = getBlockRootClientId( selectedBlockClientId );\n\t\t\tconst sourceBlockIndex = getBlockIndex( startingBlockClientId );\n\t\t\tlet destinationBlockIndex = getBlockIndex( selectedBlockClientId );\n\t\t\tif (\n\t\t\t\tsourceBlockIndex < destinationBlockIndex &&\n\t\t\t\tsourceRoot === destRoot\n\t\t\t) {\n\t\t\t\tdestinationBlockIndex -= 1;\n\t\t\t}\n\t\t\tmoveBlockToPosition(\n\t\t\t\tstartingBlockClientId,\n\t\t\t\tsourceRoot,\n\t\t\t\tdestRoot,\n\t\t\t\tdestinationBlockIndex\n\t\t\t);\n\t\t\tselectBlock( startingBlockClientId );\n\t\t\tsetBlockMovingClientId( null );\n\t\t}\n\t\tif ( navigateDown || navigateUp || navigateOut || navigateIn ) {\n\t\t\tif ( focusedBlockUid ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectBlock( focusedBlockUid );\n\t\t\t} else if ( isTab && selectedBlockClientId ) {\n\t\t\t\tlet nextTabbable;\n\n\t\t\t\tif ( navigateDown ) {\n\t\t\t\t\tnextTabbable = blockElement;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tnextTabbable = focus.tabbable.findNext( nextTabbable );\n\t\t\t\t\t} while (\n\t\t\t\t\t\tnextTabbable &&\n\t\t\t\t\t\tblockElement.contains( nextTabbable )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! nextTabbable ) {\n\t\t\t\t\t\tnextTabbable =\n\t\t\t\t\t\t\tblockElement.ownerDocument.defaultView.frameElement;\n\t\t\t\t\t\tnextTabbable = focus.tabbable.findNext( nextTabbable );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnextTabbable = focus.tabbable.findPrevious( blockElement );\n\t\t\t\t}\n\n\t\t\t\tif ( nextTabbable ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnextTabbable.focus();\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst classNames = classnames(\n\t\t'block-editor-block-list__block-selection-button',\n\t\t{\n\t\t\t'is-block-moving-mode': !! blockMovingMode,\n\t\t}\n\t);\n\n\tconst dragHandleLabel = __( 'Drag' );\n\n\treturn (\n\t\t<div className={ classNames }>\n\t\t\t<Flex\n\t\t\t\tjustify=\"center\"\n\t\t\t\tclassName=\"block-editor-block-list__block-selection-button__content\"\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<BlockIcon icon={ blockInformation?.icon } showColors />\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t{ editorMode === 'zoom-out' && (\n\t\t\t\t\t\t<BlockMover clientIds={ [ clientId ] } hideDragHandle />\n\t\t\t\t\t) }\n\t\t\t\t\t{ editorMode === 'navigation' && (\n\t\t\t\t\t\t<BlockDraggable clientIds={ [ clientId ] }>\n\t\t\t\t\t\t\t{ ( draggableProps ) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ticon={ dragHandle }\n\t\t\t\t\t\t\t\t\tclassName=\"block-selection-button_drag-handle\"\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\tlabel={ dragHandleLabel }\n\t\t\t\t\t\t\t\t\t// Should not be able to tab to drag handle as this\n\t\t\t\t\t\t\t\t\t// button can only be used with a pointer device.\n\t\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t\t{ ...draggableProps }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</BlockDraggable>\n\t\t\t\t\t) }\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\teditorMode === 'navigation'\n\t\t\t\t\t\t\t\t? () => setNavigationMode( false )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tshowTooltip={ false }\n\t\t\t\t\t\tclassName=\"block-selection-button_select-button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</div>\n\t);\n}\n\nexport default BlockSelectionButton;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_icons","_components","_data","_keycodes","_blocks","_a11y","_dom","_i18n","_blockTitle","_blockIcon","_store","_blockDraggable","_useBlockDisplayInformation","_useBlockRefs","_blockMover","BlockSelectionButton","clientId","rootClientId","blockInformation","useBlockDisplayInformation","selected","useSelect","select","getBlock","getBlockIndex","hasBlockMovingClientId","getBlockListSettings","__unstableGetEditorMode","blockEditorStore","index","name","attributes","blockMovingMode","orientation","editorMode","setNavigationMode","removeBlock","useDispatch","ref","useRef","blockType","getBlockType","label","getAccessibleBlockLabel","useEffect","current","focus","speak","blockElement","useBlockElement","getBlockRootClientId","getClientIdsOfDescendants","getSelectedBlockClientId","getMultiSelectedBlocksEndClientId","getPreviousBlockClientId","getNextBlockClientId","selectBlock","clearSelectedBlock","setBlockMovingClientId","moveBlockToPosition","onKeyDown","event","keyCode","isUp","UP","isDown","DOWN","isLeft","LEFT","isRight","RIGHT","isTab","TAB","isEscape","ESCAPE","isEnter","ENTER","isSpace","SPACE","isShift","shiftKey","BACKSPACE","DELETE","preventDefault","selectedBlockClientId","selectionEndClientId","selectionBeforeEndClientId","selectionAfterEndClientId","navigateUp","navigateDown","navigateOut","navigateIn","focusedBlockUid","_getBlockRootClientId","_getClientIdsOfDescen","startingBlockClientId","defaultPrevented","sourceRoot","destRoot","sourceBlockIndex","destinationBlockIndex","nextTabbable","tabbable","findNext","contains","ownerDocument","defaultView","frameElement","findPrevious","classNames","classnames","dragHandleLabel","__","createElement","className","Flex","justify","FlexItem","default","icon","showColors","clientIds","hideDragHandle","draggableProps","Button","dragHandle","tabIndex","onClick","undefined","showTooltip","maximumLength","_default","exports"],"sources":["@wordpress/block-editor/src/components/block-tools/block-selection-button.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { dragHandle } from '@wordpress/icons';\nimport { Button, Flex, FlexItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tBACKSPACE,\n\tDELETE,\n\tUP,\n\tDOWN,\n\tLEFT,\n\tRIGHT,\n\tTAB,\n\tESCAPE,\n\tENTER,\n\tSPACE,\n} from '@wordpress/keycodes';\nimport {\n\tgetBlockType,\n\t__experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel,\n} from '@wordpress/blocks';\nimport { speak } from '@wordpress/a11y';\nimport { focus } from '@wordpress/dom';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockTitle from '../block-title';\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\nimport BlockDraggable from '../block-draggable';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport BlockMover from '../block-mover';\n\n/**\n * Block selection button component, displaying the label of the block. If the block\n * descends from a root block, a button is displayed enabling the user to select\n * the root block.\n *\n * @param {string} props Component props.\n * @param {string} props.clientId Client ID of block.\n *\n * @return {WPComponent} The component to be rendered.\n */\nfunction BlockSelectionButton( { clientId, rootClientId } ) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockIndex,\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tgetBlockListSettings,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tconst { name, attributes } = getBlock( clientId );\n\t\t\tconst blockMovingMode = hasBlockMovingClientId();\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tname,\n\t\t\t\tattributes,\n\t\t\t\tblockMovingMode,\n\t\t\t\torientation: getBlockListSettings( rootClientId )?.orientation,\n\t\t\t\teditorMode: __unstableGetEditorMode(),\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\tconst {\n\t\tindex,\n\t\tname,\n\t\tattributes,\n\t\tblockMovingMode,\n\t\torientation,\n\t\teditorMode,\n\t} = selected;\n\tconst { setNavigationMode, removeBlock } = useDispatch( blockEditorStore );\n\tconst ref = useRef();\n\n\tconst blockType = getBlockType( name );\n\tconst label = getAccessibleBlockLabel(\n\t\tblockType,\n\t\tattributes,\n\t\tindex + 1,\n\t\torientation\n\t);\n\n\t// Focus the breadcrumb in navigation mode.\n\tuseEffect( () => {\n\t\tref.current.focus();\n\n\t\tspeak( label );\n\t}, [ label ] );\n\tconst blockElement = useBlockElement( clientId );\n\n\tconst {\n\t\thasBlockMovingClientId,\n\t\tgetBlockIndex,\n\t\tgetBlockRootClientId,\n\t\tgetClientIdsOfDescendants,\n\t\tgetSelectedBlockClientId,\n\t\tgetMultiSelectedBlocksEndClientId,\n\t\tgetPreviousBlockClientId,\n\t\tgetNextBlockClientId,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tselectBlock,\n\t\tclearSelectedBlock,\n\t\tsetBlockMovingClientId,\n\t\tmoveBlockToPosition,\n\t} = useDispatch( blockEditorStore );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\t\tconst isUp = keyCode === UP;\n\t\tconst isDown = keyCode === DOWN;\n\t\tconst isLeft = keyCode === LEFT;\n\t\tconst isRight = keyCode === RIGHT;\n\t\tconst isTab = keyCode === TAB;\n\t\tconst isEscape = keyCode === ESCAPE;\n\t\tconst isEnter = keyCode === ENTER;\n\t\tconst isSpace = keyCode === SPACE;\n\t\tconst isShift = event.shiftKey;\n\n\t\tif ( keyCode === BACKSPACE || keyCode === DELETE ) {\n\t\t\tremoveBlock( clientId );\n\t\t\tevent.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst selectionEndClientId = getMultiSelectedBlocksEndClientId();\n\t\tconst selectionBeforeEndClientId = getPreviousBlockClientId(\n\t\t\tselectionEndClientId || selectedBlockClientId\n\t\t);\n\t\tconst selectionAfterEndClientId = getNextBlockClientId(\n\t\t\tselectionEndClientId || selectedBlockClientId\n\t\t);\n\n\t\tconst navigateUp = ( isTab && isShift ) || isUp;\n\t\tconst navigateDown = ( isTab && ! isShift ) || isDown;\n\t\t// Move out of current nesting level (no effect if at root level).\n\t\tconst navigateOut = isLeft;\n\t\t// Move into next nesting level (no effect if the current block has no innerBlocks).\n\t\tconst navigateIn = isRight;\n\n\t\tlet focusedBlockUid;\n\t\tif ( navigateUp ) {\n\t\t\tfocusedBlockUid = selectionBeforeEndClientId;\n\t\t} else if ( navigateDown ) {\n\t\t\tfocusedBlockUid = selectionAfterEndClientId;\n\t\t} else if ( navigateOut ) {\n\t\t\tfocusedBlockUid =\n\t\t\t\tgetBlockRootClientId( selectedBlockClientId ) ??\n\t\t\t\tselectedBlockClientId;\n\t\t} else if ( navigateIn ) {\n\t\t\tfocusedBlockUid =\n\t\t\t\tgetClientIdsOfDescendants( selectedBlockClientId )[ 0 ] ??\n\t\t\t\tselectedBlockClientId;\n\t\t}\n\t\tconst startingBlockClientId = hasBlockMovingClientId();\n\t\tif ( isEscape && startingBlockClientId && ! event.defaultPrevented ) {\n\t\t\tsetBlockMovingClientId( null );\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tif ( ( isEnter || isSpace ) && startingBlockClientId ) {\n\t\t\tconst sourceRoot = getBlockRootClientId( startingBlockClientId );\n\t\t\tconst destRoot = getBlockRootClientId( selectedBlockClientId );\n\t\t\tconst sourceBlockIndex = getBlockIndex( startingBlockClientId );\n\t\t\tlet destinationBlockIndex = getBlockIndex( selectedBlockClientId );\n\t\t\tif (\n\t\t\t\tsourceBlockIndex < destinationBlockIndex &&\n\t\t\t\tsourceRoot === destRoot\n\t\t\t) {\n\t\t\t\tdestinationBlockIndex -= 1;\n\t\t\t}\n\t\t\tmoveBlockToPosition(\n\t\t\t\tstartingBlockClientId,\n\t\t\t\tsourceRoot,\n\t\t\t\tdestRoot,\n\t\t\t\tdestinationBlockIndex\n\t\t\t);\n\t\t\tselectBlock( startingBlockClientId );\n\t\t\tsetBlockMovingClientId( null );\n\t\t}\n\t\t// Prevent the block from being moved into itself.\n\t\tif (\n\t\t\tstartingBlockClientId &&\n\t\t\tselectedBlockClientId === startingBlockClientId &&\n\t\t\tnavigateIn\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tif ( navigateDown || navigateUp || navigateOut || navigateIn ) {\n\t\t\tif ( focusedBlockUid ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectBlock( focusedBlockUid );\n\t\t\t} else if ( isTab && selectedBlockClientId ) {\n\t\t\t\tlet nextTabbable;\n\n\t\t\t\tif ( navigateDown ) {\n\t\t\t\t\tnextTabbable = blockElement;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tnextTabbable = focus.tabbable.findNext( nextTabbable );\n\t\t\t\t\t} while (\n\t\t\t\t\t\tnextTabbable &&\n\t\t\t\t\t\tblockElement.contains( nextTabbable )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! nextTabbable ) {\n\t\t\t\t\t\tnextTabbable =\n\t\t\t\t\t\t\tblockElement.ownerDocument.defaultView.frameElement;\n\t\t\t\t\t\tnextTabbable = focus.tabbable.findNext( nextTabbable );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnextTabbable = focus.tabbable.findPrevious( blockElement );\n\t\t\t\t}\n\n\t\t\t\tif ( nextTabbable ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tnextTabbable.focus();\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst classNames = classnames(\n\t\t'block-editor-block-list__block-selection-button',\n\t\t{\n\t\t\t'is-block-moving-mode': !! blockMovingMode,\n\t\t}\n\t);\n\n\tconst dragHandleLabel = __( 'Drag' );\n\n\treturn (\n\t\t<div className={ classNames }>\n\t\t\t<Flex\n\t\t\t\tjustify=\"center\"\n\t\t\t\tclassName=\"block-editor-block-list__block-selection-button__content\"\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<BlockIcon icon={ blockInformation?.icon } showColors />\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t{ editorMode === 'zoom-out' && (\n\t\t\t\t\t\t<BlockMover clientIds={ [ clientId ] } hideDragHandle />\n\t\t\t\t\t) }\n\t\t\t\t\t{ editorMode === 'navigation' && (\n\t\t\t\t\t\t<BlockDraggable clientIds={ [ clientId ] }>\n\t\t\t\t\t\t\t{ ( draggableProps ) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ticon={ dragHandle }\n\t\t\t\t\t\t\t\t\tclassName=\"block-selection-button_drag-handle\"\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\tlabel={ dragHandleLabel }\n\t\t\t\t\t\t\t\t\t// Should not be able to tab to drag handle as this\n\t\t\t\t\t\t\t\t\t// button can only be used with a pointer device.\n\t\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t\t{ ...draggableProps }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</BlockDraggable>\n\t\t\t\t\t) }\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\teditorMode === 'navigation'\n\t\t\t\t\t\t\t\t? () => setNavigationMode( false )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tshowTooltip={ false }\n\t\t\t\t\t\tclassName=\"block-selection-button_select-button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</div>\n\t);\n}\n\nexport default BlockSelectionButton;\n"],"mappings":"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"}
@@ -63,7 +63,7 @@ function BoxInputControls({
63
63
  const computedUnit = values[corner] ? parsedUnit : selectedUnits[corner] || selectedUnits.flat;
64
64
  return (0, _element.createElement)(_components.Tooltip, {
65
65
  text: label,
66
- position: "top",
66
+ placement: "top",
67
67
  key: corner
68
68
  }, (0, _element.createElement)("div", {
69
69
  className: "components-border-radius-control__tooltip-wrapper"
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","CORNERS","topLeft","__","topRight","bottomLeft","bottomRight","BoxInputControls","onChange","selectedUnits","setSelectedUnits","values","valuesProp","props","createHandleOnChange","corner","next","isNumeric","isNaN","parseFloat","nextValue","undefined","createHandleOnUnitChange","side","newUnits","_element","createElement","className","Object","entries","map","label","parsedQuantity","parsedUnit","parseQuantityAndUnitFromRawValue","computedUnit","flat","Tooltip","text","position","key","__experimentalUnitControl","value","join","onUnitChange","size"],"sources":["@wordpress/block-editor/src/components/border-radius-control/input-controls.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalUnitControl as UnitControl,\n\tTooltip,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nconst CORNERS = {\n\ttopLeft: __( 'Top left' ),\n\ttopRight: __( 'Top right' ),\n\tbottomLeft: __( 'Bottom left' ),\n\tbottomRight: __( 'Bottom right' ),\n};\n\nexport default function BoxInputControls( {\n\tonChange,\n\tselectedUnits,\n\tsetSelectedUnits,\n\tvalues: valuesProp,\n\t...props\n} ) {\n\tconst createHandleOnChange = ( corner ) => ( next ) => {\n\t\tif ( ! onChange ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Filter out CSS-unit-only values to prevent invalid styles.\n\t\tconst isNumeric = ! isNaN( parseFloat( next ) );\n\t\tconst nextValue = isNumeric ? next : undefined;\n\n\t\tonChange( {\n\t\t\t...values,\n\t\t\t[ corner ]: nextValue,\n\t\t} );\n\t};\n\n\tconst createHandleOnUnitChange = ( side ) => ( next ) => {\n\t\tconst newUnits = { ...selectedUnits };\n\t\tnewUnits[ side ] = next;\n\t\tsetSelectedUnits( newUnits );\n\t};\n\n\t// For shorthand style & backwards compatibility, handle flat string value.\n\tconst values =\n\t\ttypeof valuesProp !== 'string'\n\t\t\t? valuesProp\n\t\t\t: {\n\t\t\t\t\ttopLeft: valuesProp,\n\t\t\t\t\ttopRight: valuesProp,\n\t\t\t\t\tbottomLeft: valuesProp,\n\t\t\t\t\tbottomRight: valuesProp,\n\t\t\t };\n\n\t// Controls are wrapped in tooltips as visible labels aren't desired here.\n\t// Tooltip rendering also requires the UnitControl to be wrapped. See:\n\t// https://github.com/WordPress/gutenberg/pull/24966#issuecomment-685875026\n\treturn (\n\t\t<div className=\"components-border-radius-control__input-controls-wrapper\">\n\t\t\t{ Object.entries( CORNERS ).map( ( [ corner, label ] ) => {\n\t\t\t\tconst [ parsedQuantity, parsedUnit ] =\n\t\t\t\t\tparseQuantityAndUnitFromRawValue( values[ corner ] );\n\n\t\t\t\tconst computedUnit = values[ corner ]\n\t\t\t\t\t? parsedUnit\n\t\t\t\t\t: selectedUnits[ corner ] || selectedUnits.flat;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Tooltip text={ label } position=\"top\" key={ corner }>\n\t\t\t\t\t\t<div className=\"components-border-radius-control__tooltip-wrapper\">\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\t\t\tvalue={ [ parsedQuantity, computedUnit ].join(\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\tonChange={ createHandleOnChange( corner ) }\n\t\t\t\t\t\t\t\tonUnitChange={ createHandleOnUnitChange(\n\t\t\t\t\t\t\t\t\tcorner\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AARA;AACA;AACA;;AAQA,MAAME,OAAO,GAAG;EACfC,OAAO,EAAE,IAAAC,QAAE,EAAE,UAAW,CAAC;EACzBC,QAAQ,EAAE,IAAAD,QAAE,EAAE,WAAY,CAAC;EAC3BE,UAAU,EAAE,IAAAF,QAAE,EAAE,aAAc,CAAC;EAC/BG,WAAW,EAAE,IAAAH,QAAE,EAAE,cAAe;AACjC,CAAC;AAEc,SAASI,gBAAgBA,CAAE;EACzCC,QAAQ;EACRC,aAAa;EACbC,gBAAgB;EAChBC,MAAM,EAAEC,UAAU;EAClB,GAAGC;AACJ,CAAC,EAAG;EACH,MAAMC,oBAAoB,GAAKC,MAAM,IAAQC,IAAI,IAAM;IACtD,IAAK,CAAER,QAAQ,EAAG;MACjB;IACD;;IAEA;IACA,MAAMS,SAAS,GAAG,CAAEC,KAAK,CAAEC,UAAU,CAAEH,IAAK,CAAE,CAAC;IAC/C,MAAMI,SAAS,GAAGH,SAAS,GAAGD,IAAI,GAAGK,SAAS;IAE9Cb,QAAQ,CAAE;MACT,GAAGG,MAAM;MACT,CAAEI,MAAM,GAAIK;IACb,CAAE,CAAC;EACJ,CAAC;EAED,MAAME,wBAAwB,GAAKC,IAAI,IAAQP,IAAI,IAAM;IACxD,MAAMQ,QAAQ,GAAG;MAAE,GAAGf;IAAc,CAAC;IACrCe,QAAQ,CAAED,IAAI,CAAE,GAAGP,IAAI;IACvBN,gBAAgB,CAAEc,QAAS,CAAC;EAC7B,CAAC;;EAED;EACA,MAAMb,MAAM,GACX,OAAOC,UAAU,KAAK,QAAQ,GAC3BA,UAAU,GACV;IACAV,OAAO,EAAEU,UAAU;IACnBR,QAAQ,EAAEQ,UAAU;IACpBP,UAAU,EAAEO,UAAU;IACtBN,WAAW,EAAEM;EACb,CAAC;;EAEL;EACA;EACA;EACA,OACC,IAAAa,QAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAA0D,GACtEC,MAAM,CAACC,OAAO,CAAE5B,OAAQ,CAAC,CAAC6B,GAAG,CAAE,CAAE,CAAEf,MAAM,EAAEgB,KAAK,CAAE,KAAM;IACzD,MAAM,CAAEC,cAAc,EAAEC,UAAU,CAAE,GACnC,IAAAC,0DAAgC,EAAEvB,MAAM,CAAEI,MAAM,CAAG,CAAC;IAErD,MAAMoB,YAAY,GAAGxB,MAAM,CAAEI,MAAM,CAAE,GAClCkB,UAAU,GACVxB,aAAa,CAAEM,MAAM,CAAE,IAAIN,aAAa,CAAC2B,IAAI;IAEhD,OACC,IAAAX,QAAA,CAAAC,aAAA,EAAC5B,WAAA,CAAAuC,OAAO;MAACC,IAAI,EAAGP,KAAO;MAACQ,QAAQ,EAAC,KAAK;MAACC,GAAG,EAAGzB;IAAQ,GACpD,IAAAU,QAAA,CAAAC,aAAA;MAAKC,SAAS,EAAC;IAAmD,GACjE,IAAAF,QAAA,CAAAC,aAAA,EAAC5B,WAAA,CAAA2C,yBAAW;MAAA,GACN5B,KAAK;MACV,cAAakB,KAAO;MACpBW,KAAK,EAAG,CAAEV,cAAc,EAAEG,YAAY,CAAE,CAACQ,IAAI,CAC5C,EACD,CAAG;MACHnC,QAAQ,EAAGM,oBAAoB,CAAEC,MAAO,CAAG;MAC3C6B,YAAY,EAAGtB,wBAAwB,CACtCP,MACD,CAAG;MACH8B,IAAI,EAAG;IAAoB,CAC3B,CACG,CACG,CAAC;EAEZ,CAAE,CACE,CAAC;AAER"}
1
+ {"version":3,"names":["_components","require","_i18n","CORNERS","topLeft","__","topRight","bottomLeft","bottomRight","BoxInputControls","onChange","selectedUnits","setSelectedUnits","values","valuesProp","props","createHandleOnChange","corner","next","isNumeric","isNaN","parseFloat","nextValue","undefined","createHandleOnUnitChange","side","newUnits","_element","createElement","className","Object","entries","map","label","parsedQuantity","parsedUnit","parseQuantityAndUnitFromRawValue","computedUnit","flat","Tooltip","text","placement","key","__experimentalUnitControl","value","join","onUnitChange","size"],"sources":["@wordpress/block-editor/src/components/border-radius-control/input-controls.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalUnitControl as UnitControl,\n\tTooltip,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nconst CORNERS = {\n\ttopLeft: __( 'Top left' ),\n\ttopRight: __( 'Top right' ),\n\tbottomLeft: __( 'Bottom left' ),\n\tbottomRight: __( 'Bottom right' ),\n};\n\nexport default function BoxInputControls( {\n\tonChange,\n\tselectedUnits,\n\tsetSelectedUnits,\n\tvalues: valuesProp,\n\t...props\n} ) {\n\tconst createHandleOnChange = ( corner ) => ( next ) => {\n\t\tif ( ! onChange ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Filter out CSS-unit-only values to prevent invalid styles.\n\t\tconst isNumeric = ! isNaN( parseFloat( next ) );\n\t\tconst nextValue = isNumeric ? next : undefined;\n\n\t\tonChange( {\n\t\t\t...values,\n\t\t\t[ corner ]: nextValue,\n\t\t} );\n\t};\n\n\tconst createHandleOnUnitChange = ( side ) => ( next ) => {\n\t\tconst newUnits = { ...selectedUnits };\n\t\tnewUnits[ side ] = next;\n\t\tsetSelectedUnits( newUnits );\n\t};\n\n\t// For shorthand style & backwards compatibility, handle flat string value.\n\tconst values =\n\t\ttypeof valuesProp !== 'string'\n\t\t\t? valuesProp\n\t\t\t: {\n\t\t\t\t\ttopLeft: valuesProp,\n\t\t\t\t\ttopRight: valuesProp,\n\t\t\t\t\tbottomLeft: valuesProp,\n\t\t\t\t\tbottomRight: valuesProp,\n\t\t\t };\n\n\t// Controls are wrapped in tooltips as visible labels aren't desired here.\n\t// Tooltip rendering also requires the UnitControl to be wrapped. See:\n\t// https://github.com/WordPress/gutenberg/pull/24966#issuecomment-685875026\n\treturn (\n\t\t<div className=\"components-border-radius-control__input-controls-wrapper\">\n\t\t\t{ Object.entries( CORNERS ).map( ( [ corner, label ] ) => {\n\t\t\t\tconst [ parsedQuantity, parsedUnit ] =\n\t\t\t\t\tparseQuantityAndUnitFromRawValue( values[ corner ] );\n\n\t\t\t\tconst computedUnit = values[ corner ]\n\t\t\t\t\t? parsedUnit\n\t\t\t\t\t: selectedUnits[ corner ] || selectedUnits.flat;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Tooltip text={ label } placement=\"top\" key={ corner }>\n\t\t\t\t\t\t<div className=\"components-border-radius-control__tooltip-wrapper\">\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\t\t\tvalue={ [ parsedQuantity, computedUnit ].join(\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\tonChange={ createHandleOnChange( corner ) }\n\t\t\t\t\t\t\t\tonUnitChange={ createHandleOnUnitChange(\n\t\t\t\t\t\t\t\t\tcorner\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AARA;AACA;AACA;;AAQA,MAAME,OAAO,GAAG;EACfC,OAAO,EAAE,IAAAC,QAAE,EAAE,UAAW,CAAC;EACzBC,QAAQ,EAAE,IAAAD,QAAE,EAAE,WAAY,CAAC;EAC3BE,UAAU,EAAE,IAAAF,QAAE,EAAE,aAAc,CAAC;EAC/BG,WAAW,EAAE,IAAAH,QAAE,EAAE,cAAe;AACjC,CAAC;AAEc,SAASI,gBAAgBA,CAAE;EACzCC,QAAQ;EACRC,aAAa;EACbC,gBAAgB;EAChBC,MAAM,EAAEC,UAAU;EAClB,GAAGC;AACJ,CAAC,EAAG;EACH,MAAMC,oBAAoB,GAAKC,MAAM,IAAQC,IAAI,IAAM;IACtD,IAAK,CAAER,QAAQ,EAAG;MACjB;IACD;;IAEA;IACA,MAAMS,SAAS,GAAG,CAAEC,KAAK,CAAEC,UAAU,CAAEH,IAAK,CAAE,CAAC;IAC/C,MAAMI,SAAS,GAAGH,SAAS,GAAGD,IAAI,GAAGK,SAAS;IAE9Cb,QAAQ,CAAE;MACT,GAAGG,MAAM;MACT,CAAEI,MAAM,GAAIK;IACb,CAAE,CAAC;EACJ,CAAC;EAED,MAAME,wBAAwB,GAAKC,IAAI,IAAQP,IAAI,IAAM;IACxD,MAAMQ,QAAQ,GAAG;MAAE,GAAGf;IAAc,CAAC;IACrCe,QAAQ,CAAED,IAAI,CAAE,GAAGP,IAAI;IACvBN,gBAAgB,CAAEc,QAAS,CAAC;EAC7B,CAAC;;EAED;EACA,MAAMb,MAAM,GACX,OAAOC,UAAU,KAAK,QAAQ,GAC3BA,UAAU,GACV;IACAV,OAAO,EAAEU,UAAU;IACnBR,QAAQ,EAAEQ,UAAU;IACpBP,UAAU,EAAEO,UAAU;IACtBN,WAAW,EAAEM;EACb,CAAC;;EAEL;EACA;EACA;EACA,OACC,IAAAa,QAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAA0D,GACtEC,MAAM,CAACC,OAAO,CAAE5B,OAAQ,CAAC,CAAC6B,GAAG,CAAE,CAAE,CAAEf,MAAM,EAAEgB,KAAK,CAAE,KAAM;IACzD,MAAM,CAAEC,cAAc,EAAEC,UAAU,CAAE,GACnC,IAAAC,0DAAgC,EAAEvB,MAAM,CAAEI,MAAM,CAAG,CAAC;IAErD,MAAMoB,YAAY,GAAGxB,MAAM,CAAEI,MAAM,CAAE,GAClCkB,UAAU,GACVxB,aAAa,CAAEM,MAAM,CAAE,IAAIN,aAAa,CAAC2B,IAAI;IAEhD,OACC,IAAAX,QAAA,CAAAC,aAAA,EAAC5B,WAAA,CAAAuC,OAAO;MAACC,IAAI,EAAGP,KAAO;MAACQ,SAAS,EAAC,KAAK;MAACC,GAAG,EAAGzB;IAAQ,GACrD,IAAAU,QAAA,CAAAC,aAAA;MAAKC,SAAS,EAAC;IAAmD,GACjE,IAAAF,QAAA,CAAAC,aAAA,EAAC5B,WAAA,CAAA2C,yBAAW;MAAA,GACN5B,KAAK;MACV,cAAakB,KAAO;MACpBW,KAAK,EAAG,CAAEV,cAAc,EAAEG,YAAY,CAAE,CAACQ,IAAI,CAC5C,EACD,CAAG;MACHnC,QAAQ,EAAGM,oBAAoB,CAAEC,MAAO,CAAG;MAC3C6B,YAAY,EAAGtB,wBAAwB,CACtCP,MACD,CAAG;MACH8B,IAAI,EAAG;IAAoB,CAC3B,CACG,CACG,CAAC;EAEZ,CAAE,CACE,CAAC;AAER"}
@@ -17,17 +17,15 @@ function LinkedButton({
17
17
  ...props
18
18
  }) {
19
19
  const label = isLinked ? (0, _i18n.__)('Unlink radii') : (0, _i18n.__)('Link radii');
20
-
21
- // TODO: Remove span after merging https://github.com/WordPress/gutenberg/pull/44198
22
20
  return (0, _element.createElement)(_components.Tooltip, {
23
21
  text: label
24
- }, (0, _element.createElement)("span", null, (0, _element.createElement)(_components.Button, {
22
+ }, (0, _element.createElement)(_components.Button, {
25
23
  ...props,
26
24
  className: "component-border-radius-control__linked-button",
27
25
  isSmall: true,
28
26
  icon: isLinked ? _icons.link : _icons.linkOff,
29
27
  iconSize: 24,
30
28
  "aria-label": label
31
- })));
29
+ }));
32
30
  }
33
31
  //# sourceMappingURL=linked-button.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_icons","_i18n","LinkedButton","isLinked","props","label","__","_element","createElement","Tooltip","text","Button","className","isSmall","icon","link","linkOff","iconSize"],"sources":["@wordpress/block-editor/src/components/border-radius-control/linked-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button, Tooltip } from '@wordpress/components';\nimport { link, linkOff } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\nexport default function LinkedButton( { isLinked, ...props } ) {\n\tconst label = isLinked ? __( 'Unlink radii' ) : __( 'Link radii' );\n\n\t// TODO: Remove span after merging https://github.com/WordPress/gutenberg/pull/44198\n\treturn (\n\t\t<Tooltip text={ label }>\n\t\t\t<span>\n\t\t\t\t<Button\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tclassName=\"component-border-radius-control__linked-button\"\n\t\t\t\t\tisSmall\n\t\t\t\t\ticon={ isLinked ? link : linkOff }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\taria-label={ label }\n\t\t\t\t/>\n\t\t\t</span>\n\t\t</Tooltip>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AALA;AACA;AACA;;AAKe,SAASG,YAAYA,CAAE;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAG;EAC9D,MAAMC,KAAK,GAAGF,QAAQ,GAAG,IAAAG,QAAE,EAAE,cAAe,CAAC,GAAG,IAAAA,QAAE,EAAE,YAAa,CAAC;;EAElE;EACA,OACC,IAAAC,QAAA,CAAAC,aAAA,EAACV,WAAA,CAAAW,OAAO;IAACC,IAAI,EAAGL;EAAO,GACtB,IAAAE,QAAA,CAAAC,aAAA,gBACC,IAAAD,QAAA,CAAAC,aAAA,EAACV,WAAA,CAAAa,MAAM;IAAA,GACDP,KAAK;IACVQ,SAAS,EAAC,gDAAgD;IAC1DC,OAAO;IACPC,IAAI,EAAGX,QAAQ,GAAGY,WAAI,GAAGC,cAAS;IAClCC,QAAQ,EAAG,EAAI;IACf,cAAaZ;EAAO,CACpB,CACI,CACE,CAAC;AAEZ"}
1
+ {"version":3,"names":["_components","require","_icons","_i18n","LinkedButton","isLinked","props","label","__","_element","createElement","Tooltip","text","Button","className","isSmall","icon","link","linkOff","iconSize"],"sources":["@wordpress/block-editor/src/components/border-radius-control/linked-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button, Tooltip } from '@wordpress/components';\nimport { link, linkOff } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\nexport default function LinkedButton( { isLinked, ...props } ) {\n\tconst label = isLinked ? __( 'Unlink radii' ) : __( 'Link radii' );\n\n\treturn (\n\t\t<Tooltip text={ label }>\n\t\t\t<Button\n\t\t\t\t{ ...props }\n\t\t\t\tclassName=\"component-border-radius-control__linked-button\"\n\t\t\t\tisSmall\n\t\t\t\ticon={ isLinked ? link : linkOff }\n\t\t\t\ticonSize={ 24 }\n\t\t\t\taria-label={ label }\n\t\t\t/>\n\t\t</Tooltip>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AALA;AACA;AACA;;AAKe,SAASG,YAAYA,CAAE;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAG;EAC9D,MAAMC,KAAK,GAAGF,QAAQ,GAAG,IAAAG,QAAE,EAAE,cAAe,CAAC,GAAG,IAAAA,QAAE,EAAE,YAAa,CAAC;EAElE,OACC,IAAAC,QAAA,CAAAC,aAAA,EAACV,WAAA,CAAAW,OAAO;IAACC,IAAI,EAAGL;EAAO,GACtB,IAAAE,QAAA,CAAAC,aAAA,EAACV,WAAA,CAAAa,MAAM;IAAA,GACDP,KAAK;IACVQ,SAAS,EAAC,gDAAgD;IAC1DC,OAAO;IACPC,IAAI,EAAGX,QAAQ,GAAGY,WAAI,GAAGC,cAAS;IAClCC,QAAQ,EAAG,EAAI;IACf,cAAaZ;EAAO,CACpB,CACO,CAAC;AAEZ"}
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_compose","_utils","_useSetting","_interopRequireDefault","_object","upperFirst","firstLetter","rest","toUpperCase","join","withCustomColorPalette","colorsArray","createHigherOrderComponent","WrappedComponent","props","createElement","colors","withEditorColorPalette","userPalette","useSetting","themePalette","defaultPalette","allColors","useMemo","createColorHOC","colorTypes","withColorPalette","colorMap","reduce","colorObject","colorType","kebabCase","compose","Component","constructor","setters","createSetters","colorUtils","getMostReadableColor","bind","state","colorValue","Object","keys","settersAccumulator","colorAttributeName","upperFirstColorAttributeName","customColorAttributeName","createSetColor","getColorObjectByColorValue","setAttributes","slug","undefined","getDerivedStateFromProps","attributes","previousState","entries","newState","colorContext","getColorObjectByAttributeValues","previousColorObject","previousColor","color","class","getColorClassName","render","createCustomColorsHOC","withColors"],"sources":["@wordpress/block-editor/src/components/colors/with-colors.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, Component } from '@wordpress/element';\nimport { compose, createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n\tgetMostReadableColor,\n} from './utils';\nimport useSetting from '../use-setting';\nimport { kebabCase } from '../../utils/object';\n\n/**\n * Capitalizes the first letter in a string.\n *\n * @param {string} str The string whose first letter the function will capitalize.\n *\n * @return {string} Capitalized string.\n */\nconst upperFirst = ( [ firstLetter, ...rest ] ) =>\n\tfirstLetter.toUpperCase() + rest.join( '' );\n\n/**\n * Higher order component factory for injecting the `colorsArray` argument as\n * the colors prop in the `withCustomColors` HOC.\n *\n * @param {Array} colorsArray An array of color objects.\n *\n * @return {Function} The higher order component.\n */\nconst withCustomColorPalette = ( colorsArray ) =>\n\tcreateHigherOrderComponent(\n\t\t( WrappedComponent ) => ( props ) =>\n\t\t\t<WrappedComponent { ...props } colors={ colorsArray } />,\n\t\t'withCustomColorPalette'\n\t);\n\n/**\n * Higher order component factory for injecting the editor colors as the\n * `colors` prop in the `withColors` HOC.\n *\n * @return {Function} The higher order component.\n */\nconst withEditorColorPalette = () =>\n\tcreateHigherOrderComponent(\n\t\t( WrappedComponent ) => ( props ) => {\n\t\t\t// Some color settings have a special handling for deprecated flags in `useSetting`,\n\t\t\t// so we can't unwrap them by doing const { ... } = useSetting('color')\n\t\t\t// until https://github.com/WordPress/gutenberg/issues/37094 is fixed.\n\t\t\tconst userPalette = useSetting( 'color.palette.custom' );\n\t\t\tconst themePalette = useSetting( 'color.palette.theme' );\n\t\t\tconst defaultPalette = useSetting( 'color.palette.default' );\n\t\t\tconst allColors = useMemo(\n\t\t\t\t() => [\n\t\t\t\t\t...( userPalette || [] ),\n\t\t\t\t\t...( themePalette || [] ),\n\t\t\t\t\t...( defaultPalette || [] ),\n\t\t\t\t],\n\t\t\t\t[ userPalette, themePalette, defaultPalette ]\n\t\t\t);\n\t\t\treturn <WrappedComponent { ...props } colors={ allColors } />;\n\t\t},\n\t\t'withEditorColorPalette'\n\t);\n\n/**\n * Helper function used with `createHigherOrderComponent` to create\n * higher order components for managing color logic.\n *\n * @param {Array} colorTypes An array of color types (e.g. 'backgroundColor, borderColor).\n * @param {Function} withColorPalette A HOC for injecting the 'colors' prop into the WrappedComponent.\n *\n * @return {WPComponent} The component that can be used as a HOC.\n */\nfunction createColorHOC( colorTypes, withColorPalette ) {\n\tconst colorMap = colorTypes.reduce( ( colorObject, colorType ) => {\n\t\treturn {\n\t\t\t...colorObject,\n\t\t\t...( typeof colorType === 'string'\n\t\t\t\t? { [ colorType ]: kebabCase( colorType ) }\n\t\t\t\t: colorType ),\n\t\t};\n\t}, {} );\n\n\treturn compose( [\n\t\twithColorPalette,\n\t\t( WrappedComponent ) => {\n\t\t\treturn class extends Component {\n\t\t\t\tconstructor( props ) {\n\t\t\t\t\tsuper( props );\n\n\t\t\t\t\tthis.setters = this.createSetters();\n\t\t\t\t\tthis.colorUtils = {\n\t\t\t\t\t\tgetMostReadableColor:\n\t\t\t\t\t\t\tthis.getMostReadableColor.bind( this ),\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.state = {};\n\t\t\t\t}\n\n\t\t\t\tgetMostReadableColor( colorValue ) {\n\t\t\t\t\tconst { colors } = this.props;\n\t\t\t\t\treturn getMostReadableColor( colors, colorValue );\n\t\t\t\t}\n\n\t\t\t\tcreateSetters() {\n\t\t\t\t\treturn Object.keys( colorMap ).reduce(\n\t\t\t\t\t\t( settersAccumulator, colorAttributeName ) => {\n\t\t\t\t\t\t\tconst upperFirstColorAttributeName =\n\t\t\t\t\t\t\t\tupperFirst( colorAttributeName );\n\t\t\t\t\t\t\tconst customColorAttributeName = `custom${ upperFirstColorAttributeName }`;\n\t\t\t\t\t\t\tsettersAccumulator[\n\t\t\t\t\t\t\t\t`set${ upperFirstColorAttributeName }`\n\t\t\t\t\t\t\t] = this.createSetColor(\n\t\t\t\t\t\t\t\tcolorAttributeName,\n\t\t\t\t\t\t\t\tcustomColorAttributeName\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn settersAccumulator;\n\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\tcreateSetColor( colorAttributeName, customColorAttributeName ) {\n\t\t\t\t\treturn ( colorValue ) => {\n\t\t\t\t\t\tconst colorObject = getColorObjectByColorValue(\n\t\t\t\t\t\t\tthis.props.colors,\n\t\t\t\t\t\t\tcolorValue\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.props.setAttributes( {\n\t\t\t\t\t\t\t[ colorAttributeName ]:\n\t\t\t\t\t\t\t\tcolorObject && colorObject.slug\n\t\t\t\t\t\t\t\t\t? colorObject.slug\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t[ customColorAttributeName ]:\n\t\t\t\t\t\t\t\tcolorObject && colorObject.slug\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: colorValue,\n\t\t\t\t\t\t} );\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tstatic getDerivedStateFromProps(\n\t\t\t\t\t{ attributes, colors },\n\t\t\t\t\tpreviousState\n\t\t\t\t) {\n\t\t\t\t\treturn Object.entries( colorMap ).reduce(\n\t\t\t\t\t\t( newState, [ colorAttributeName, colorContext ] ) => {\n\t\t\t\t\t\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\t\t\t\t\t\tcolors,\n\t\t\t\t\t\t\t\tattributes[ colorAttributeName ],\n\t\t\t\t\t\t\t\tattributes[\n\t\t\t\t\t\t\t\t\t`custom${ upperFirst(\n\t\t\t\t\t\t\t\t\t\tcolorAttributeName\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\n\t\t\t\t\t\t\tconst previousColorObject =\n\t\t\t\t\t\t\t\tpreviousState[ colorAttributeName ];\n\t\t\t\t\t\t\tconst previousColor = previousColorObject?.color;\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * The \"and previousColorObject\" condition checks that a previous color object was already computed.\n\t\t\t\t\t\t\t * At the start previousColorObject and colorValue are both equal to undefined\n\t\t\t\t\t\t\t * bus as previousColorObject does not exist we should compute the object.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tpreviousColor === colorObject.color &&\n\t\t\t\t\t\t\t\tpreviousColorObject\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnewState[ colorAttributeName ] =\n\t\t\t\t\t\t\t\t\tpreviousColorObject;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnewState[ colorAttributeName ] = {\n\t\t\t\t\t\t\t\t\t...colorObject,\n\t\t\t\t\t\t\t\t\tclass: getColorClassName(\n\t\t\t\t\t\t\t\t\t\tcolorContext,\n\t\t\t\t\t\t\t\t\t\tcolorObject.slug\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\treturn newState;\n\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\trender() {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<WrappedComponent\n\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t...this.props,\n\t\t\t\t\t\t\t\tcolors: undefined,\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t...this.setters,\n\t\t\t\t\t\t\t\tcolorUtils: this.colorUtils,\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\t\t},\n\t] );\n}\n\n/**\n * A higher-order component factory for creating a 'withCustomColors' HOC, which handles color logic\n * for class generation color value, retrieval and color attribute setting.\n *\n * Use this higher-order component to work with a custom set of colors.\n *\n * @example\n *\n * ```jsx\n * const CUSTOM_COLORS = [ { name: 'Red', slug: 'red', color: '#ff0000' }, { name: 'Blue', slug: 'blue', color: '#0000ff' } ];\n * const withCustomColors = createCustomColorsHOC( CUSTOM_COLORS );\n * // ...\n * export default compose(\n * withCustomColors( 'backgroundColor', 'borderColor' ),\n * MyColorfulComponent,\n * );\n * ```\n *\n * @param {Array} colorsArray The array of color objects (name, slug, color, etc... ).\n *\n * @return {Function} Higher-order component.\n */\nexport function createCustomColorsHOC( colorsArray ) {\n\treturn ( ...colorTypes ) => {\n\t\tconst withColorPalette = withCustomColorPalette( colorsArray );\n\t\treturn createHigherOrderComponent(\n\t\t\tcreateColorHOC( colorTypes, withColorPalette ),\n\t\t\t'withCustomColors'\n\t\t);\n\t};\n}\n\n/**\n * A higher-order component, which handles color logic for class generation color value, retrieval and color attribute setting.\n *\n * For use with the default editor/theme color palette.\n *\n * @example\n *\n * ```jsx\n * export default compose(\n * withColors( 'backgroundColor', { textColor: 'color' } ),\n * MyColorfulComponent,\n * );\n * ```\n *\n * @param {...(Object|string)} colorTypes The arguments can be strings or objects. If the argument is an object,\n * it should contain the color attribute name as key and the color context as value.\n * If the argument is a string the value should be the color attribute name,\n * the color context is computed by applying a kebab case transform to the value.\n * Color context represents the context/place where the color is going to be used.\n * The class name of the color is generated using 'has' followed by the color name\n * and ending with the color context all in kebab case e.g: has-green-background-color.\n *\n * @return {Function} Higher-order component.\n */\nexport default function withColors( ...colorTypes ) {\n\tconst withColorPalette = withEditorColorPalette();\n\treturn createHigherOrderComponent(\n\t\tcreateColorHOC( colorTypes, withColorPalette ),\n\t\t'withColors'\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_compose","_utils","_useSetting","_interopRequireDefault","_object","upperFirst","firstLetter","rest","toUpperCase","join","withCustomColorPalette","colorsArray","createHigherOrderComponent","WrappedComponent","props","createElement","colors","withEditorColorPalette","userPalette","useSetting","themePalette","defaultPalette","allColors","useMemo","createColorHOC","colorTypes","withColorPalette","colorMap","reduce","colorObject","colorType","kebabCase","compose","Component","constructor","setters","createSetters","colorUtils","getMostReadableColor","bind","state","colorValue","Object","keys","settersAccumulator","colorAttributeName","upperFirstColorAttributeName","customColorAttributeName","createSetColor","getColorObjectByColorValue","setAttributes","slug","undefined","getDerivedStateFromProps","attributes","previousState","entries","newState","colorContext","getColorObjectByAttributeValues","previousColorObject","previousColor","color","class","getColorClassName","render","createCustomColorsHOC","withColors"],"sources":["@wordpress/block-editor/src/components/colors/with-colors.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, Component } from '@wordpress/element';\nimport { compose, createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n\tgetMostReadableColor,\n} from './utils';\nimport useSetting from '../use-setting';\nimport { kebabCase } from '../../utils/object';\n\n/**\n * Capitalizes the first letter in a string.\n *\n * @param {string} str The string whose first letter the function will capitalize.\n *\n * @return {string} Capitalized string.\n */\nconst upperFirst = ( [ firstLetter, ...rest ] ) =>\n\tfirstLetter.toUpperCase() + rest.join( '' );\n\n/**\n * Higher order component factory for injecting the `colorsArray` argument as\n * the colors prop in the `withCustomColors` HOC.\n *\n * @param {Array} colorsArray An array of color objects.\n *\n * @return {Function} The higher order component.\n */\nconst withCustomColorPalette = ( colorsArray ) =>\n\tcreateHigherOrderComponent(\n\t\t( WrappedComponent ) => ( props ) => (\n\t\t\t<WrappedComponent { ...props } colors={ colorsArray } />\n\t\t),\n\t\t'withCustomColorPalette'\n\t);\n\n/**\n * Higher order component factory for injecting the editor colors as the\n * `colors` prop in the `withColors` HOC.\n *\n * @return {Function} The higher order component.\n */\nconst withEditorColorPalette = () =>\n\tcreateHigherOrderComponent(\n\t\t( WrappedComponent ) => ( props ) => {\n\t\t\t// Some color settings have a special handling for deprecated flags in `useSetting`,\n\t\t\t// so we can't unwrap them by doing const { ... } = useSetting('color')\n\t\t\t// until https://github.com/WordPress/gutenberg/issues/37094 is fixed.\n\t\t\tconst userPalette = useSetting( 'color.palette.custom' );\n\t\t\tconst themePalette = useSetting( 'color.palette.theme' );\n\t\t\tconst defaultPalette = useSetting( 'color.palette.default' );\n\t\t\tconst allColors = useMemo(\n\t\t\t\t() => [\n\t\t\t\t\t...( userPalette || [] ),\n\t\t\t\t\t...( themePalette || [] ),\n\t\t\t\t\t...( defaultPalette || [] ),\n\t\t\t\t],\n\t\t\t\t[ userPalette, themePalette, defaultPalette ]\n\t\t\t);\n\t\t\treturn <WrappedComponent { ...props } colors={ allColors } />;\n\t\t},\n\t\t'withEditorColorPalette'\n\t);\n\n/**\n * Helper function used with `createHigherOrderComponent` to create\n * higher order components for managing color logic.\n *\n * @param {Array} colorTypes An array of color types (e.g. 'backgroundColor, borderColor).\n * @param {Function} withColorPalette A HOC for injecting the 'colors' prop into the WrappedComponent.\n *\n * @return {WPComponent} The component that can be used as a HOC.\n */\nfunction createColorHOC( colorTypes, withColorPalette ) {\n\tconst colorMap = colorTypes.reduce( ( colorObject, colorType ) => {\n\t\treturn {\n\t\t\t...colorObject,\n\t\t\t...( typeof colorType === 'string'\n\t\t\t\t? { [ colorType ]: kebabCase( colorType ) }\n\t\t\t\t: colorType ),\n\t\t};\n\t}, {} );\n\n\treturn compose( [\n\t\twithColorPalette,\n\t\t( WrappedComponent ) => {\n\t\t\treturn class extends Component {\n\t\t\t\tconstructor( props ) {\n\t\t\t\t\tsuper( props );\n\n\t\t\t\t\tthis.setters = this.createSetters();\n\t\t\t\t\tthis.colorUtils = {\n\t\t\t\t\t\tgetMostReadableColor:\n\t\t\t\t\t\t\tthis.getMostReadableColor.bind( this ),\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.state = {};\n\t\t\t\t}\n\n\t\t\t\tgetMostReadableColor( colorValue ) {\n\t\t\t\t\tconst { colors } = this.props;\n\t\t\t\t\treturn getMostReadableColor( colors, colorValue );\n\t\t\t\t}\n\n\t\t\t\tcreateSetters() {\n\t\t\t\t\treturn Object.keys( colorMap ).reduce(\n\t\t\t\t\t\t( settersAccumulator, colorAttributeName ) => {\n\t\t\t\t\t\t\tconst upperFirstColorAttributeName =\n\t\t\t\t\t\t\t\tupperFirst( colorAttributeName );\n\t\t\t\t\t\t\tconst customColorAttributeName = `custom${ upperFirstColorAttributeName }`;\n\t\t\t\t\t\t\tsettersAccumulator[\n\t\t\t\t\t\t\t\t`set${ upperFirstColorAttributeName }`\n\t\t\t\t\t\t\t] = this.createSetColor(\n\t\t\t\t\t\t\t\tcolorAttributeName,\n\t\t\t\t\t\t\t\tcustomColorAttributeName\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn settersAccumulator;\n\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\tcreateSetColor( colorAttributeName, customColorAttributeName ) {\n\t\t\t\t\treturn ( colorValue ) => {\n\t\t\t\t\t\tconst colorObject = getColorObjectByColorValue(\n\t\t\t\t\t\t\tthis.props.colors,\n\t\t\t\t\t\t\tcolorValue\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.props.setAttributes( {\n\t\t\t\t\t\t\t[ colorAttributeName ]:\n\t\t\t\t\t\t\t\tcolorObject && colorObject.slug\n\t\t\t\t\t\t\t\t\t? colorObject.slug\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t[ customColorAttributeName ]:\n\t\t\t\t\t\t\t\tcolorObject && colorObject.slug\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: colorValue,\n\t\t\t\t\t\t} );\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tstatic getDerivedStateFromProps(\n\t\t\t\t\t{ attributes, colors },\n\t\t\t\t\tpreviousState\n\t\t\t\t) {\n\t\t\t\t\treturn Object.entries( colorMap ).reduce(\n\t\t\t\t\t\t( newState, [ colorAttributeName, colorContext ] ) => {\n\t\t\t\t\t\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\t\t\t\t\t\tcolors,\n\t\t\t\t\t\t\t\tattributes[ colorAttributeName ],\n\t\t\t\t\t\t\t\tattributes[\n\t\t\t\t\t\t\t\t\t`custom${ upperFirst(\n\t\t\t\t\t\t\t\t\t\tcolorAttributeName\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\n\t\t\t\t\t\t\tconst previousColorObject =\n\t\t\t\t\t\t\t\tpreviousState[ colorAttributeName ];\n\t\t\t\t\t\t\tconst previousColor = previousColorObject?.color;\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * The \"and previousColorObject\" condition checks that a previous color object was already computed.\n\t\t\t\t\t\t\t * At the start previousColorObject and colorValue are both equal to undefined\n\t\t\t\t\t\t\t * bus as previousColorObject does not exist we should compute the object.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tpreviousColor === colorObject.color &&\n\t\t\t\t\t\t\t\tpreviousColorObject\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnewState[ colorAttributeName ] =\n\t\t\t\t\t\t\t\t\tpreviousColorObject;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnewState[ colorAttributeName ] = {\n\t\t\t\t\t\t\t\t\t...colorObject,\n\t\t\t\t\t\t\t\t\tclass: getColorClassName(\n\t\t\t\t\t\t\t\t\t\tcolorContext,\n\t\t\t\t\t\t\t\t\t\tcolorObject.slug\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\treturn newState;\n\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\trender() {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<WrappedComponent\n\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t...this.props,\n\t\t\t\t\t\t\t\tcolors: undefined,\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t...this.setters,\n\t\t\t\t\t\t\t\tcolorUtils: this.colorUtils,\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\t\t},\n\t] );\n}\n\n/**\n * A higher-order component factory for creating a 'withCustomColors' HOC, which handles color logic\n * for class generation color value, retrieval and color attribute setting.\n *\n * Use this higher-order component to work with a custom set of colors.\n *\n * @example\n *\n * ```jsx\n * const CUSTOM_COLORS = [ { name: 'Red', slug: 'red', color: '#ff0000' }, { name: 'Blue', slug: 'blue', color: '#0000ff' } ];\n * const withCustomColors = createCustomColorsHOC( CUSTOM_COLORS );\n * // ...\n * export default compose(\n * withCustomColors( 'backgroundColor', 'borderColor' ),\n * MyColorfulComponent,\n * );\n * ```\n *\n * @param {Array} colorsArray The array of color objects (name, slug, color, etc... ).\n *\n * @return {Function} Higher-order component.\n */\nexport function createCustomColorsHOC( colorsArray ) {\n\treturn ( ...colorTypes ) => {\n\t\tconst withColorPalette = withCustomColorPalette( colorsArray );\n\t\treturn createHigherOrderComponent(\n\t\t\tcreateColorHOC( colorTypes, withColorPalette ),\n\t\t\t'withCustomColors'\n\t\t);\n\t};\n}\n\n/**\n * A higher-order component, which handles color logic for class generation color value, retrieval and color attribute setting.\n *\n * For use with the default editor/theme color palette.\n *\n * @example\n *\n * ```jsx\n * export default compose(\n * withColors( 'backgroundColor', { textColor: 'color' } ),\n * MyColorfulComponent,\n * );\n * ```\n *\n * @param {...(Object|string)} colorTypes The arguments can be strings or objects. If the argument is an object,\n * it should contain the color attribute name as key and the color context as value.\n * If the argument is a string the value should be the color attribute name,\n * the color context is computed by applying a kebab case transform to the value.\n * Color context represents the context/place where the color is going to be used.\n * The class name of the color is generated using 'has' followed by the color name\n * and ending with the color context all in kebab case e.g: has-green-background-color.\n *\n * @return {Function} Higher-order component.\n */\nexport default function withColors( ...colorTypes ) {\n\tconst withColorPalette = withEditorColorPalette();\n\treturn createHigherOrderComponent(\n\t\tcreateColorHOC( colorTypes, withColorPalette ),\n\t\t'withColors'\n\t);\n}\n"],"mappings":"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"}
@@ -39,39 +39,26 @@ var _store = require("../../store");
39
39
  function useConvertToGroupButtonProps(selectedClientIds) {
40
40
  return (0, _data.useSelect)(select => {
41
41
  const {
42
- getBlockRootClientId,
43
42
  getBlocksByClientId,
44
- canInsertBlockType,
45
- getSelectedBlockClientIds
43
+ getSelectedBlockClientIds,
44
+ isUngroupable,
45
+ isGroupable
46
46
  } = select(_store.store);
47
47
  const {
48
48
  getGroupingBlockName,
49
49
  getBlockType
50
50
  } = select(_blocks.store);
51
51
  const clientIds = selectedClientIds?.length ? selectedClientIds : getSelectedBlockClientIds();
52
- const groupingBlockName = getGroupingBlockName();
53
- const rootClientId = clientIds?.length ? getBlockRootClientId(clientIds[0]) : undefined;
54
- const groupingBlockAvailable = canInsertBlockType(groupingBlockName, rootClientId);
55
52
  const blocksSelection = getBlocksByClientId(clientIds);
56
- const isSingleBlockSelected = blocksSelection.length === 1;
57
53
  const [firstSelectedBlock] = blocksSelection;
58
- // A block is ungroupable if it is a single grouping block with inner blocks.
59
- // If a block has an `ungroup` transform, it is also ungroupable, without the
60
- // requirement of being the default grouping block.
61
- // Do we have a single grouping Block selected and does that group have inner blocks?
62
- const isUngroupable = isSingleBlockSelected && (firstSelectedBlock.name === groupingBlockName || getBlockType(firstSelectedBlock.name)?.transforms?.ungroup) && !!firstSelectedBlock.innerBlocks.length;
63
-
64
- // Do we have
65
- // 1. Grouping block available to be inserted?
66
- // 2. One or more blocks selected
67
- const isGroupable = groupingBlockAvailable && blocksSelection.length;
54
+ const _isUngroupable = clientIds.length === 1 && isUngroupable(clientIds[0]);
68
55
  return {
69
56
  clientIds,
70
- isGroupable,
71
- isUngroupable,
57
+ isGroupable: isGroupable(clientIds),
58
+ isUngroupable: _isUngroupable,
72
59
  blocksSelection,
73
- groupingBlockName,
74
- onUngroup: isUngroupable && getBlockType(firstSelectedBlock.name)?.transforms?.ungroup
60
+ groupingBlockName: getGroupingBlockName(),
61
+ onUngroup: _isUngroupable && getBlockType(firstSelectedBlock.name)?.transforms?.ungroup
75
62
  };
76
63
  }, [selectedClientIds]);
77
64
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_blocks","require","_data","_store","useConvertToGroupButtonProps","selectedClientIds","useSelect","select","getBlockRootClientId","getBlocksByClientId","canInsertBlockType","getSelectedBlockClientIds","blockEditorStore","getGroupingBlockName","getBlockType","blocksStore","clientIds","length","groupingBlockName","rootClientId","undefined","groupingBlockAvailable","blocksSelection","isSingleBlockSelected","firstSelectedBlock","isUngroupable","name","transforms","ungroup","innerBlocks","isGroupable","onUngroup"],"sources":["@wordpress/block-editor/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Contains the properties `ConvertToGroupButton` component needs.\n *\n * @typedef {Object} ConvertToGroupButtonProps\n * @property {string[]} clientIds An array of the selected client ids.\n * @property {boolean} isGroupable Indicates if the selected blocks can be grouped.\n * @property {boolean} isUngroupable Indicates if the selected blocks can be ungrouped.\n * @property {WPBlock[]} blocksSelection An array of the selected blocks.\n * @property {string} groupingBlockName The name of block used for handling grouping interactions.\n */\n\n/**\n * Returns the properties `ConvertToGroupButton` component needs to work properly.\n * It is used in `BlockSettingsMenuControls` to know if `ConvertToGroupButton`\n * should be rendered, to avoid ending up with an empty MenuGroup.\n *\n * @param {?string[]} selectedClientIds An optional array of clientIds to group. The selected blocks\n * from the block editor store are used if this is not provided.\n *\n * @return {ConvertToGroupButtonProps} Returns the properties needed by `ConvertToGroupButton`.\n */\nexport default function useConvertToGroupButtonProps( selectedClientIds ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getGroupingBlockName, getBlockType } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst clientIds = selectedClientIds?.length\n\t\t\t\t? selectedClientIds\n\t\t\t\t: getSelectedBlockClientIds();\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t\tconst rootClientId = clientIds?.length\n\t\t\t\t? getBlockRootClientId( clientIds[ 0 ] )\n\t\t\t\t: undefined;\n\n\t\t\tconst groupingBlockAvailable = canInsertBlockType(\n\t\t\t\tgroupingBlockName,\n\t\t\t\trootClientId\n\t\t\t);\n\n\t\t\tconst blocksSelection = getBlocksByClientId( clientIds );\n\t\t\tconst isSingleBlockSelected = blocksSelection.length === 1;\n\t\t\tconst [ firstSelectedBlock ] = blocksSelection;\n\t\t\t// A block is ungroupable if it is a single grouping block with inner blocks.\n\t\t\t// If a block has an `ungroup` transform, it is also ungroupable, without the\n\t\t\t// requirement of being the default grouping block.\n\t\t\t// Do we have a single grouping Block selected and does that group have inner blocks?\n\t\t\tconst isUngroupable =\n\t\t\t\tisSingleBlockSelected &&\n\t\t\t\t( firstSelectedBlock.name === groupingBlockName ||\n\t\t\t\t\tgetBlockType( firstSelectedBlock.name )?.transforms\n\t\t\t\t\t\t?.ungroup ) &&\n\t\t\t\t!! firstSelectedBlock.innerBlocks.length;\n\n\t\t\t// Do we have\n\t\t\t// 1. Grouping block available to be inserted?\n\t\t\t// 2. One or more blocks selected\n\t\t\tconst isGroupable =\n\t\t\t\tgroupingBlockAvailable && blocksSelection.length;\n\n\t\t\treturn {\n\t\t\t\tclientIds,\n\t\t\t\tisGroupable,\n\t\t\t\tisUngroupable,\n\t\t\t\tblocksSelection,\n\t\t\t\tgroupingBlockName,\n\t\t\t\tonUngroup:\n\t\t\t\t\tisUngroupable &&\n\t\t\t\t\tgetBlockType( firstSelectedBlock.name )?.transforms\n\t\t\t\t\t\t?.ungroup,\n\t\t\t};\n\t\t},\n\t\t[ selectedClientIds ]\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AATA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASG,4BAA4BA,CAAEC,iBAAiB,EAAG;EACzE,OAAO,IAAAC,eAAS,EACbC,MAAM,IAAM;IACb,MAAM;MACLC,oBAAoB;MACpBC,mBAAmB;MACnBC,kBAAkB;MAClBC;IACD,CAAC,GAAGJ,MAAM,CAAEK,YAAiB,CAAC;IAC9B,MAAM;MAAEC,oBAAoB;MAAEC;IAAa,CAAC,GAC3CP,MAAM,CAAEQ,aAAY,CAAC;IACtB,MAAMC,SAAS,GAAGX,iBAAiB,EAAEY,MAAM,GACxCZ,iBAAiB,GACjBM,yBAAyB,CAAC,CAAC;IAC9B,MAAMO,iBAAiB,GAAGL,oBAAoB,CAAC,CAAC;IAEhD,MAAMM,YAAY,GAAGH,SAAS,EAAEC,MAAM,GACnCT,oBAAoB,CAAEQ,SAAS,CAAE,CAAC,CAAG,CAAC,GACtCI,SAAS;IAEZ,MAAMC,sBAAsB,GAAGX,kBAAkB,CAChDQ,iBAAiB,EACjBC,YACD,CAAC;IAED,MAAMG,eAAe,GAAGb,mBAAmB,CAAEO,SAAU,CAAC;IACxD,MAAMO,qBAAqB,GAAGD,eAAe,CAACL,MAAM,KAAK,CAAC;IAC1D,MAAM,CAAEO,kBAAkB,CAAE,GAAGF,eAAe;IAC9C;IACA;IACA;IACA;IACA,MAAMG,aAAa,GAClBF,qBAAqB,KACnBC,kBAAkB,CAACE,IAAI,KAAKR,iBAAiB,IAC9CJ,YAAY,CAAEU,kBAAkB,CAACE,IAAK,CAAC,EAAEC,UAAU,EAChDC,OAAO,CAAE,IACb,CAAC,CAAEJ,kBAAkB,CAACK,WAAW,CAACZ,MAAM;;IAEzC;IACA;IACA;IACA,MAAMa,WAAW,GAChBT,sBAAsB,IAAIC,eAAe,CAACL,MAAM;IAEjD,OAAO;MACND,SAAS;MACTc,WAAW;MACXL,aAAa;MACbH,eAAe;MACfJ,iBAAiB;MACjBa,SAAS,EACRN,aAAa,IACbX,YAAY,CAAEU,kBAAkB,CAACE,IAAK,CAAC,EAAEC,UAAU,EAChDC;IACL,CAAC;EACF,CAAC,EACD,CAAEvB,iBAAiB,CACpB,CAAC;AACF"}
1
+ {"version":3,"names":["_blocks","require","_data","_store","useConvertToGroupButtonProps","selectedClientIds","useSelect","select","getBlocksByClientId","getSelectedBlockClientIds","isUngroupable","isGroupable","blockEditorStore","getGroupingBlockName","getBlockType","blocksStore","clientIds","length","blocksSelection","firstSelectedBlock","_isUngroupable","groupingBlockName","onUngroup","name","transforms","ungroup"],"sources":["@wordpress/block-editor/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Contains the properties `ConvertToGroupButton` component needs.\n *\n * @typedef {Object} ConvertToGroupButtonProps\n * @property {string[]} clientIds An array of the selected client ids.\n * @property {boolean} isGroupable Indicates if the selected blocks can be grouped.\n * @property {boolean} isUngroupable Indicates if the selected blocks can be ungrouped.\n * @property {WPBlock[]} blocksSelection An array of the selected blocks.\n * @property {string} groupingBlockName The name of block used for handling grouping interactions.\n */\n\n/**\n * Returns the properties `ConvertToGroupButton` component needs to work properly.\n * It is used in `BlockSettingsMenuControls` to know if `ConvertToGroupButton`\n * should be rendered, to avoid ending up with an empty MenuGroup.\n *\n * @param {?string[]} selectedClientIds An optional array of clientIds to group. The selected blocks\n * from the block editor store are used if this is not provided.\n *\n * @return {ConvertToGroupButtonProps} Returns the properties needed by `ConvertToGroupButton`.\n */\nexport default function useConvertToGroupButtonProps( selectedClientIds ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tisUngroupable,\n\t\t\t\tisGroupable,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getGroupingBlockName, getBlockType } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst clientIds = selectedClientIds?.length\n\t\t\t\t? selectedClientIds\n\t\t\t\t: getSelectedBlockClientIds();\n\t\t\tconst blocksSelection = getBlocksByClientId( clientIds );\n\t\t\tconst [ firstSelectedBlock ] = blocksSelection;\n\t\t\tconst _isUngroupable =\n\t\t\t\tclientIds.length === 1 && isUngroupable( clientIds[ 0 ] );\n\t\t\treturn {\n\t\t\t\tclientIds,\n\t\t\t\tisGroupable: isGroupable( clientIds ),\n\t\t\t\tisUngroupable: _isUngroupable,\n\t\t\t\tblocksSelection,\n\t\t\t\tgroupingBlockName: getGroupingBlockName(),\n\t\t\t\tonUngroup:\n\t\t\t\t\t_isUngroupable &&\n\t\t\t\t\tgetBlockType( firstSelectedBlock.name )?.transforms\n\t\t\t\t\t\t?.ungroup,\n\t\t\t};\n\t\t},\n\t\t[ selectedClientIds ]\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AATA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASG,4BAA4BA,CAAEC,iBAAiB,EAAG;EACzE,OAAO,IAAAC,eAAS,EACbC,MAAM,IAAM;IACb,MAAM;MACLC,mBAAmB;MACnBC,yBAAyB;MACzBC,aAAa;MACbC;IACD,CAAC,GAAGJ,MAAM,CAAEK,YAAiB,CAAC;IAC9B,MAAM;MAAEC,oBAAoB;MAAEC;IAAa,CAAC,GAC3CP,MAAM,CAAEQ,aAAY,CAAC;IACtB,MAAMC,SAAS,GAAGX,iBAAiB,EAAEY,MAAM,GACxCZ,iBAAiB,GACjBI,yBAAyB,CAAC,CAAC;IAC9B,MAAMS,eAAe,GAAGV,mBAAmB,CAAEQ,SAAU,CAAC;IACxD,MAAM,CAAEG,kBAAkB,CAAE,GAAGD,eAAe;IAC9C,MAAME,cAAc,GACnBJ,SAAS,CAACC,MAAM,KAAK,CAAC,IAAIP,aAAa,CAAEM,SAAS,CAAE,CAAC,CAAG,CAAC;IAC1D,OAAO;MACNA,SAAS;MACTL,WAAW,EAAEA,WAAW,CAAEK,SAAU,CAAC;MACrCN,aAAa,EAAEU,cAAc;MAC7BF,eAAe;MACfG,iBAAiB,EAAER,oBAAoB,CAAC,CAAC;MACzCS,SAAS,EACRF,cAAc,IACdN,YAAY,CAAEK,kBAAkB,CAACI,IAAK,CAAC,EAAEC,UAAU,EAChDC;IACL,CAAC;EACF,CAAC,EACD,CAAEpB,iBAAiB,CACpB,CAAC;AACF"}
@@ -37,6 +37,7 @@ const hitSlop = {
37
37
  };
38
38
  const noop = () => {};
39
39
  function DefaultBlockAppender({
40
+ baseGlobalStyles,
40
41
  isLocked,
41
42
  isVisible,
42
43
  onAppend,
@@ -47,6 +48,19 @@ function DefaultBlockAppender({
47
48
  if (isLocked || !isVisible) {
48
49
  return null;
49
50
  }
51
+ const blockGlobalStyles = baseGlobalStyles?.blocks?.['core/paragraph'];
52
+ const {
53
+ fontSize,
54
+ lineHeight
55
+ } = blockGlobalStyles?.typography || {};
56
+ const textStyles = blockGlobalStyles?.typography ? {
57
+ ...(fontSize && {
58
+ fontSize
59
+ }),
60
+ ...(lineHeight && {
61
+ lineHeight
62
+ })
63
+ } : undefined;
50
64
  const value = typeof placeholder === 'string' ? (0, _htmlEntities.decodeEntities)(placeholder) : (0, _i18n.__)('Start writing…');
51
65
  const appenderStyles = [_style.default.blockHolder, showSeparator && containerStyle];
52
66
  return (0, _element.createElement)(_reactNative.Pressable, {
@@ -57,20 +71,25 @@ function DefaultBlockAppender({
57
71
  pointerEvents: "box-only"
58
72
  }, showSeparator ? (0, _element.createElement)(_insertionPoint.default, null) : (0, _element.createElement)(_blockEditor.RichText, {
59
73
  placeholder: value,
60
- onChange: noop
74
+ onChange: noop,
75
+ tagName: "p",
76
+ style: textStyles
61
77
  })));
62
78
  }
63
79
  var _default = (0, _compose.compose)((0, _data.withSelect)((select, ownProps) => {
64
80
  const {
65
81
  getBlockCount,
66
82
  getBlockName,
83
+ getSettings,
67
84
  isBlockValid,
68
85
  getTemplateLock
69
86
  } = select(_store.store);
70
87
  const isEmpty = !getBlockCount(ownProps.rootClientId);
71
88
  const isLastBlockDefault = getBlockName(ownProps.lastBlockClientId) === (0, _blocks.getDefaultBlockName)();
72
89
  const isLastBlockValid = isBlockValid(ownProps.lastBlockClientId);
90
+ const globalStylesBaseStyles = getSettings()?.__experimentalGlobalStylesBaseStyles;
73
91
  return {
92
+ baseGlobalStyles: globalStylesBaseStyles,
74
93
  isVisible: isEmpty || !isLastBlockDefault || !isLastBlockValid,
75
94
  isLocked: !!getTemplateLock(ownProps.rootClientId)
76
95
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_i18n","_blockEditor","_compose","_htmlEntities","_data","_blocks","_insertionPoint","_interopRequireDefault","_style","_store","hitSlop","top","bottom","left","right","noop","DefaultBlockAppender","isLocked","isVisible","onAppend","placeholder","containerStyle","showSeparator","value","decodeEntities","__","appenderStyles","styles","blockHolder","_element","createElement","Pressable","onPress","View","style","pointerEvents","default","RichText","onChange","_default","compose","withSelect","select","ownProps","getBlockCount","getBlockName","isBlockValid","getTemplateLock","blockEditorStore","isEmpty","rootClientId","isLastBlockDefault","lastBlockClientId","getDefaultBlockName","isLastBlockValid","withDispatch","dispatch","insertDefaultBlock","startTyping","undefined","exports"],"sources":["@wordpress/block-editor/src/components/default-block-appender/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Pressable, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { RichText } from '@wordpress/block-editor';\nimport { compose } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport BlockInsertionPoint from '../block-list/insertion-point';\nimport styles from './style.scss';\nimport { store as blockEditorStore } from '../../store';\n\nconst hitSlop = { top: 22, bottom: 22, left: 22, right: 22 };\nconst noop = () => {};\n\nexport function DefaultBlockAppender( {\n\tisLocked,\n\tisVisible,\n\tonAppend,\n\tplaceholder,\n\tcontainerStyle,\n\tshowSeparator,\n} ) {\n\tif ( isLocked || ! isVisible ) {\n\t\treturn null;\n\t}\n\n\tconst value =\n\t\ttypeof placeholder === 'string'\n\t\t\t? decodeEntities( placeholder )\n\t\t\t: __( 'Start writing…' );\n\n\tconst appenderStyles = [\n\t\tstyles.blockHolder,\n\t\tshowSeparator && containerStyle,\n\t];\n\n\treturn (\n\t\t<Pressable onPress={ onAppend } hitSlop={ hitSlop }>\n\t\t\t<View style={ appenderStyles } pointerEvents=\"box-only\">\n\t\t\t\t{ showSeparator ? (\n\t\t\t\t\t<BlockInsertionPoint />\n\t\t\t\t) : (\n\t\t\t\t\t<RichText placeholder={ value } onChange={ noop } />\n\t\t\t\t) }\n\t\t\t</View>\n\t\t</Pressable>\n\t);\n}\n\nexport default compose(\n\twithSelect( ( select, ownProps ) => {\n\t\tconst { getBlockCount, getBlockName, isBlockValid, getTemplateLock } =\n\t\t\tselect( blockEditorStore );\n\n\t\tconst isEmpty = ! getBlockCount( ownProps.rootClientId );\n\t\tconst isLastBlockDefault =\n\t\t\tgetBlockName( ownProps.lastBlockClientId ) ===\n\t\t\tgetDefaultBlockName();\n\t\tconst isLastBlockValid = isBlockValid( ownProps.lastBlockClientId );\n\n\t\treturn {\n\t\t\tisVisible: isEmpty || ! isLastBlockDefault || ! isLastBlockValid,\n\t\t\tisLocked: !! getTemplateLock( ownProps.rootClientId ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, ownProps ) => {\n\t\tconst { insertDefaultBlock, startTyping } =\n\t\t\tdispatch( blockEditorStore );\n\n\t\treturn {\n\t\t\tonAppend() {\n\t\t\t\tconst { rootClientId } = ownProps;\n\n\t\t\t\tinsertDefaultBlock( undefined, rootClientId );\n\t\t\t\tstartTyping();\n\t\t\t},\n\t\t};\n\t} )\n)( DefaultBlockAppender );\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_i18n","_blockEditor","_compose","_htmlEntities","_data","_blocks","_insertionPoint","_interopRequireDefault","_style","_store","hitSlop","top","bottom","left","right","noop","DefaultBlockAppender","baseGlobalStyles","isLocked","isVisible","onAppend","placeholder","containerStyle","showSeparator","blockGlobalStyles","blocks","fontSize","lineHeight","typography","textStyles","undefined","value","decodeEntities","__","appenderStyles","styles","blockHolder","_element","createElement","Pressable","onPress","View","style","pointerEvents","default","RichText","onChange","tagName","_default","compose","withSelect","select","ownProps","getBlockCount","getBlockName","getSettings","isBlockValid","getTemplateLock","blockEditorStore","isEmpty","rootClientId","isLastBlockDefault","lastBlockClientId","getDefaultBlockName","isLastBlockValid","globalStylesBaseStyles","__experimentalGlobalStylesBaseStyles","withDispatch","dispatch","insertDefaultBlock","startTyping","exports"],"sources":["@wordpress/block-editor/src/components/default-block-appender/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Pressable, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { RichText } from '@wordpress/block-editor';\nimport { compose } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport BlockInsertionPoint from '../block-list/insertion-point';\nimport styles from './style.scss';\nimport { store as blockEditorStore } from '../../store';\n\nconst hitSlop = { top: 22, bottom: 22, left: 22, right: 22 };\nconst noop = () => {};\n\nexport function DefaultBlockAppender( {\n\tbaseGlobalStyles,\n\tisLocked,\n\tisVisible,\n\tonAppend,\n\tplaceholder,\n\tcontainerStyle,\n\tshowSeparator,\n} ) {\n\tif ( isLocked || ! isVisible ) {\n\t\treturn null;\n\t}\n\tconst blockGlobalStyles = baseGlobalStyles?.blocks?.[ 'core/paragraph' ];\n\tconst { fontSize, lineHeight } = blockGlobalStyles?.typography || {};\n\n\tconst textStyles = blockGlobalStyles?.typography\n\t\t? {\n\t\t\t\t...( fontSize && { fontSize } ),\n\t\t\t\t...( lineHeight && { lineHeight } ),\n\t\t }\n\t\t: undefined;\n\n\tconst value =\n\t\ttypeof placeholder === 'string'\n\t\t\t? decodeEntities( placeholder )\n\t\t\t: __( 'Start writing…' );\n\n\tconst appenderStyles = [\n\t\tstyles.blockHolder,\n\t\tshowSeparator && containerStyle,\n\t];\n\n\treturn (\n\t\t<Pressable onPress={ onAppend } hitSlop={ hitSlop }>\n\t\t\t<View style={ appenderStyles } pointerEvents=\"box-only\">\n\t\t\t\t{ showSeparator ? (\n\t\t\t\t\t<BlockInsertionPoint />\n\t\t\t\t) : (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tplaceholder={ value }\n\t\t\t\t\t\tonChange={ noop }\n\t\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\t\tstyle={ textStyles }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</View>\n\t\t</Pressable>\n\t);\n}\n\nexport default compose(\n\twithSelect( ( select, ownProps ) => {\n\t\tconst {\n\t\t\tgetBlockCount,\n\t\t\tgetBlockName,\n\t\t\tgetSettings,\n\t\t\tisBlockValid,\n\t\t\tgetTemplateLock,\n\t\t} = select( blockEditorStore );\n\n\t\tconst isEmpty = ! getBlockCount( ownProps.rootClientId );\n\t\tconst isLastBlockDefault =\n\t\t\tgetBlockName( ownProps.lastBlockClientId ) ===\n\t\t\tgetDefaultBlockName();\n\t\tconst isLastBlockValid = isBlockValid( ownProps.lastBlockClientId );\n\t\tconst globalStylesBaseStyles =\n\t\t\tgetSettings()?.__experimentalGlobalStylesBaseStyles;\n\n\t\treturn {\n\t\t\tbaseGlobalStyles: globalStylesBaseStyles,\n\t\t\tisVisible: isEmpty || ! isLastBlockDefault || ! isLastBlockValid,\n\t\t\tisLocked: !! getTemplateLock( ownProps.rootClientId ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, ownProps ) => {\n\t\tconst { insertDefaultBlock, startTyping } =\n\t\t\tdispatch( blockEditorStore );\n\n\t\treturn {\n\t\t\tonAppend() {\n\t\t\t\tconst { rootClientId } = ownProps;\n\n\t\t\t\tinsertDefaultBlock( undefined, rootClientId );\n\t\t\t\tstartTyping();\n\t\t\t},\n\t\t};\n\t} )\n)( DefaultBlockAppender );\n"],"mappings":"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"}
@@ -3,6 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.getDuotoneFilter = getDuotoneFilter;
7
+ exports.getDuotoneStylesheet = getDuotoneStylesheet;
8
+ exports.getDuotoneUnsetStylesheet = getDuotoneUnsetStylesheet;
6
9
  exports.getValuesFromColors = getValuesFromColors;
7
10
  var _colord = require("colord");
8
11
  /**
@@ -32,4 +35,69 @@ function getValuesFromColors(colors = []) {
32
35
  });
33
36
  return values;
34
37
  }
38
+
39
+ /**
40
+ * Stylesheet for disabling a global styles duotone filter.
41
+ *
42
+ * @param {string} selector Selector to disable the filter for.
43
+ *
44
+ * @return {string} Filter none style.
45
+ */
46
+ function getDuotoneUnsetStylesheet(selector) {
47
+ return `${selector}{filter:none}`;
48
+ }
49
+
50
+ /**
51
+ * SVG and stylesheet needed for rendering the duotone filter.
52
+ *
53
+ * @param {string} selector Selector to apply the filter to.
54
+ * @param {string} id Unique id for this duotone filter.
55
+ *
56
+ * @return {string} Duotone filter style.
57
+ */
58
+ function getDuotoneStylesheet(selector, id) {
59
+ return `${selector}{filter:url(#${id})}`;
60
+ }
61
+
62
+ /**
63
+ * The SVG part of the duotone filter.
64
+ *
65
+ * @param {string} id Unique id for this duotone filter.
66
+ * @param {string[]} colors Color strings from dark to light.
67
+ *
68
+ * @return {string} Duotone SVG.
69
+ */
70
+ function getDuotoneFilter(id, colors) {
71
+ const values = getValuesFromColors(colors);
72
+ return `
73
+ <svg
74
+ xmlns:xlink="http://www.w3.org/1999/xlink"
75
+ viewBox="0 0 0 0"
76
+ width="0"
77
+ height="0"
78
+ focusable="false"
79
+ role="none"
80
+ aria-hidden="true"
81
+ style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;"
82
+ >
83
+ <defs>
84
+ <filter id="${id}">
85
+ <!--
86
+ Use sRGB instead of linearRGB so transparency looks correct.
87
+ Use perceptual brightness to convert to grayscale.
88
+ -->
89
+ <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 "></feColorMatrix>
90
+ <!-- Use sRGB instead of linearRGB to be consistent with how CSS gradients work. -->
91
+ <feComponentTransfer color-interpolation-filters="sRGB">
92
+ <feFuncR type="table" tableValues="${values.r.join(' ')}"></feFuncR>
93
+ <feFuncG type="table" tableValues="${values.g.join(' ')}"></feFuncG>
94
+ <feFuncB type="table" tableValues="${values.b.join(' ')}"></feFuncB>
95
+ <feFuncA type="table" tableValues="${values.a.join(' ')}"></feFuncA>
96
+ </feComponentTransfer>
97
+ <!-- Re-mask the image with the original transparency since the feColorMatrix above loses that information. -->
98
+ <feComposite in2="SourceGraphic" operator="in"></feComposite>
99
+ </filter>
100
+ </defs>
101
+ </svg>`;
102
+ }
35
103
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_colord","require","getValuesFromColors","colors","values","r","g","b","a","forEach","color","rgbColor","colord","toRgb","push"],"sources":["@wordpress/block-editor/src/components/duotone/utils.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { colord } from 'colord';\n\n/**\n * Convert a list of colors to an object of R, G, and B values.\n *\n * @param {string[]} colors Array of RBG color strings.\n *\n * @return {Object} R, G, and B values.\n */\nexport function getValuesFromColors( colors = [] ) {\n\tconst values = { r: [], g: [], b: [], a: [] };\n\n\tcolors.forEach( ( color ) => {\n\t\tconst rgbColor = colord( color ).toRgb();\n\t\tvalues.r.push( rgbColor.r / 255 );\n\t\tvalues.g.push( rgbColor.g / 255 );\n\t\tvalues.b.push( rgbColor.b / 255 );\n\t\tvalues.a.push( rgbColor.a );\n\t} );\n\n\treturn values;\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAAEC,MAAM,GAAG,EAAE,EAAG;EAClD,MAAMC,MAAM,GAAG;IAAEC,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE;EAAG,CAAC;EAE7CL,MAAM,CAACM,OAAO,CAAIC,KAAK,IAAM;IAC5B,MAAMC,QAAQ,GAAG,IAAAC,cAAM,EAAEF,KAAM,CAAC,CAACG,KAAK,CAAC,CAAC;IACxCT,MAAM,CAACC,CAAC,CAACS,IAAI,CAAEH,QAAQ,CAACN,CAAC,GAAG,GAAI,CAAC;IACjCD,MAAM,CAACE,CAAC,CAACQ,IAAI,CAAEH,QAAQ,CAACL,CAAC,GAAG,GAAI,CAAC;IACjCF,MAAM,CAACG,CAAC,CAACO,IAAI,CAAEH,QAAQ,CAACJ,CAAC,GAAG,GAAI,CAAC;IACjCH,MAAM,CAACI,CAAC,CAACM,IAAI,CAAEH,QAAQ,CAACH,CAAE,CAAC;EAC5B,CAAE,CAAC;EAEH,OAAOJ,MAAM;AACd"}
1
+ {"version":3,"names":["_colord","require","getValuesFromColors","colors","values","r","g","b","a","forEach","color","rgbColor","colord","toRgb","push","getDuotoneUnsetStylesheet","selector","getDuotoneStylesheet","id","getDuotoneFilter","join"],"sources":["@wordpress/block-editor/src/components/duotone/utils.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { colord } from 'colord';\n\n/**\n * Convert a list of colors to an object of R, G, and B values.\n *\n * @param {string[]} colors Array of RBG color strings.\n *\n * @return {Object} R, G, and B values.\n */\nexport function getValuesFromColors( colors = [] ) {\n\tconst values = { r: [], g: [], b: [], a: [] };\n\n\tcolors.forEach( ( color ) => {\n\t\tconst rgbColor = colord( color ).toRgb();\n\t\tvalues.r.push( rgbColor.r / 255 );\n\t\tvalues.g.push( rgbColor.g / 255 );\n\t\tvalues.b.push( rgbColor.b / 255 );\n\t\tvalues.a.push( rgbColor.a );\n\t} );\n\n\treturn values;\n}\n\n/**\n * Stylesheet for disabling a global styles duotone filter.\n *\n * @param {string} selector Selector to disable the filter for.\n *\n * @return {string} Filter none style.\n */\nexport function getDuotoneUnsetStylesheet( selector ) {\n\treturn `${ selector }{filter:none}`;\n}\n\n/**\n * SVG and stylesheet needed for rendering the duotone filter.\n *\n * @param {string} selector Selector to apply the filter to.\n * @param {string} id Unique id for this duotone filter.\n *\n * @return {string} Duotone filter style.\n */\nexport function getDuotoneStylesheet( selector, id ) {\n\treturn `${ selector }{filter:url(#${ id })}`;\n}\n\n/**\n * The SVG part of the duotone filter.\n *\n * @param {string} id Unique id for this duotone filter.\n * @param {string[]} colors Color strings from dark to light.\n *\n * @return {string} Duotone SVG.\n */\nexport function getDuotoneFilter( id, colors ) {\n\tconst values = getValuesFromColors( colors );\n\treturn `\n<svg\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\tviewBox=\"0 0 0 0\"\n\twidth=\"0\"\n\theight=\"0\"\n\tfocusable=\"false\"\n\trole=\"none\"\n\taria-hidden=\"true\"\n\tstyle=\"visibility: hidden; position: absolute; left: -9999px; overflow: hidden;\"\n>\n\t<defs>\n\t\t<filter id=\"${ id }\">\n\t\t\t<!--\n\t\t\t\tUse sRGB instead of linearRGB so transparency looks correct.\n\t\t\t\tUse perceptual brightness to convert to grayscale.\n\t\t\t-->\n\t\t\t<feColorMatrix color-interpolation-filters=\"sRGB\" type=\"matrix\" values=\" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 \"></feColorMatrix>\n\t\t\t<!-- Use sRGB instead of linearRGB to be consistent with how CSS gradients work. -->\n\t\t\t<feComponentTransfer color-interpolation-filters=\"sRGB\">\n\t\t\t\t<feFuncR type=\"table\" tableValues=\"${ values.r.join( ' ' ) }\"></feFuncR>\n\t\t\t\t<feFuncG type=\"table\" tableValues=\"${ values.g.join( ' ' ) }\"></feFuncG>\n\t\t\t\t<feFuncB type=\"table\" tableValues=\"${ values.b.join( ' ' ) }\"></feFuncB>\n\t\t\t\t<feFuncA type=\"table\" tableValues=\"${ values.a.join( ' ' ) }\"></feFuncA>\n\t\t\t</feComponentTransfer>\n\t\t\t<!-- Re-mask the image with the original transparency since the feColorMatrix above loses that information. -->\n\t\t\t<feComposite in2=\"SourceGraphic\" operator=\"in\"></feComposite>\n\t\t</filter>\n\t</defs>\n</svg>`;\n}\n"],"mappings":";;;;;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAAEC,MAAM,GAAG,EAAE,EAAG;EAClD,MAAMC,MAAM,GAAG;IAAEC,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE;EAAG,CAAC;EAE7CL,MAAM,CAACM,OAAO,CAAIC,KAAK,IAAM;IAC5B,MAAMC,QAAQ,GAAG,IAAAC,cAAM,EAAEF,KAAM,CAAC,CAACG,KAAK,CAAC,CAAC;IACxCT,MAAM,CAACC,CAAC,CAACS,IAAI,CAAEH,QAAQ,CAACN,CAAC,GAAG,GAAI,CAAC;IACjCD,MAAM,CAACE,CAAC,CAACQ,IAAI,CAAEH,QAAQ,CAACL,CAAC,GAAG,GAAI,CAAC;IACjCF,MAAM,CAACG,CAAC,CAACO,IAAI,CAAEH,QAAQ,CAACJ,CAAC,GAAG,GAAI,CAAC;IACjCH,MAAM,CAACI,CAAC,CAACM,IAAI,CAAEH,QAAQ,CAACH,CAAE,CAAC;EAC5B,CAAE,CAAC;EAEH,OAAOJ,MAAM;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASW,yBAAyBA,CAAEC,QAAQ,EAAG;EACrD,OAAQ,GAAGA,QAAU,eAAc;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAAED,QAAQ,EAAEE,EAAE,EAAG;EACpD,OAAQ,GAAGF,QAAU,gBAAgBE,EAAI,IAAG;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAAED,EAAE,EAAEf,MAAM,EAAG;EAC9C,MAAMC,MAAM,GAAGF,mBAAmB,CAAEC,MAAO,CAAC;EAC5C,OAAQ;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAiBe,EAAI;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAA0Cd,MAAM,CAACC,CAAC,CAACe,IAAI,CAAE,GAAI,CAAG;AAChE,yCAA0ChB,MAAM,CAACE,CAAC,CAACc,IAAI,CAAE,GAAI,CAAG;AAChE,yCAA0ChB,MAAM,CAACG,CAAC,CAACa,IAAI,CAAE,GAAI,CAAG;AAChE,yCAA0ChB,MAAM,CAACI,CAAC,CAACY,IAAI,CAAE,GAAI,CAAG;AAChE;AACA;AACA;AACA;AACA;AACA,OAAO;AACP"}
@@ -10,7 +10,10 @@ var _colord = require("colord");
10
10
  var _names = _interopRequireDefault(require("colord/plugins/names"));
11
11
  var _a11y = _interopRequireDefault(require("colord/plugins/a11y"));
12
12
  var _components = require("@wordpress/components");
13
+ var _data = require("@wordpress/data");
13
14
  var _transformStyles = _interopRequireDefault(require("../../utils/transform-styles"));
15
+ var _store = require("../../store");
16
+ var _lockUnlock = require("../../lock-unlock");
14
17
  /**
15
18
  * External dependencies
16
19
  */
@@ -23,9 +26,8 @@ var _transformStyles = _interopRequireDefault(require("../../utils/transform-sty
23
26
  * Internal dependencies
24
27
  */
25
28
 
26
- const EDITOR_STYLES_SELECTOR = '.editor-styles-wrapper';
27
29
  (0, _colord.extend)([_names.default, _a11y.default]);
28
- function useDarkThemeBodyClassName(styles) {
30
+ function useDarkThemeBodyClassName(styles, scope) {
29
31
  return (0, _element.useCallback)(node => {
30
32
  if (!node) {
31
33
  return;
@@ -37,7 +39,7 @@ function useDarkThemeBodyClassName(styles) {
37
39
  defaultView,
38
40
  body
39
41
  } = ownerDocument;
40
- const canvas = ownerDocument.querySelector(EDITOR_STYLES_SELECTOR);
42
+ const canvas = scope ? ownerDocument.querySelector(scope) : body;
41
43
  let backgroundColor;
42
44
  if (!canvas) {
43
45
  // The real .editor-styles-wrapper element might not exist in the
@@ -58,16 +60,33 @@ function useDarkThemeBodyClassName(styles) {
58
60
  } else {
59
61
  body.classList.add('is-dark-theme');
60
62
  }
61
- }, [styles]);
63
+ }, [styles, scope]);
62
64
  }
63
65
  function EditorStyles({
64
- styles
66
+ styles,
67
+ scope
65
68
  }) {
66
- const stylesArray = (0, _element.useMemo)(() => Object.values(styles !== null && styles !== void 0 ? styles : []), [styles]);
67
- const transformedStyles = (0, _element.useMemo)(() => (0, _transformStyles.default)(stylesArray.filter(style => style?.css), EDITOR_STYLES_SELECTOR), [stylesArray]);
68
- const transformedSvgs = (0, _element.useMemo)(() => stylesArray.filter(style => style.__unstableType === 'svgs').map(style => style.assets).join(''), [stylesArray]);
69
+ const overrides = (0, _data.useSelect)(select => (0, _lockUnlock.unlock)(select(_store.store)).getStyleOverrides(), []);
70
+ const [transformedStyles, transformedSvgs] = (0, _element.useMemo)(() => {
71
+ const _styles = Object.values(styles !== null && styles !== void 0 ? styles : []);
72
+ for (const [id, override] of overrides) {
73
+ const index = _styles.findIndex(({
74
+ id: _id
75
+ }) => id === _id);
76
+ const overrideWithId = {
77
+ ...override,
78
+ id
79
+ };
80
+ if (index === -1) {
81
+ _styles.push(overrideWithId);
82
+ } else {
83
+ _styles[index] = overrideWithId;
84
+ }
85
+ }
86
+ return [(0, _transformStyles.default)(_styles.filter(style => style?.css), scope), _styles.filter(style => style.__unstableType === 'svgs').map(style => style.assets).join('')];
87
+ }, [styles, overrides, scope]);
69
88
  return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)("style", {
70
- ref: useDarkThemeBodyClassName(stylesArray)
89
+ ref: useDarkThemeBodyClassName(transformedStyles, scope)
71
90
  }), transformedStyles.map((css, index) => (0, _element.createElement)("style", {
72
91
  key: index
73
92
  }, css)), (0, _element.createElement)(_components.SVG, {