@wordpress/block-editor 10.2.0 → 10.4.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 (482) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +41 -0
  3. package/build/components/alignment-control/ui.js +1 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-alignment-control/constants.js +1 -1
  6. package/build/components/block-alignment-control/constants.js.map +1 -1
  7. package/build/components/block-alignment-matrix-control/index.js +1 -1
  8. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  9. package/build/components/block-compare/index.js +1 -3
  10. package/build/components/block-compare/index.js.map +1 -1
  11. package/build/components/block-draggable/draggable-chip.js +4 -2
  12. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  13. package/build/components/block-edit/index.js +4 -2
  14. package/build/components/block-edit/index.js.map +1 -1
  15. package/build/components/block-inspector/index.js +4 -4
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/block-list-compact.native.js +1 -0
  18. package/build/components/block-list/block-list-compact.native.js.map +1 -1
  19. package/build/components/block-list/block.js +75 -15
  20. package/build/components/block-list/block.js.map +1 -1
  21. package/build/components/block-list/block.native.js +79 -12
  22. package/build/components/block-list/block.native.js.map +1 -1
  23. package/build/components/block-list/use-in-between-inserter.js +7 -23
  24. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  25. package/build/components/block-lock/modal.js +9 -6
  26. package/build/components/block-lock/modal.js.map +1 -1
  27. package/build/components/block-parent-selector/index.js +3 -3
  28. package/build/components/block-parent-selector/index.js.map +1 -1
  29. package/build/components/block-patterns-list/index.js +5 -4
  30. package/build/components/block-patterns-list/index.js.map +1 -1
  31. package/build/components/block-popover/drop-zone.js +85 -0
  32. package/build/components/block-popover/drop-zone.js.map +1 -0
  33. package/build/components/block-popover/inbetween.js +2 -1
  34. package/build/components/block-popover/inbetween.js.map +1 -1
  35. package/build/components/block-popover/index.js +4 -2
  36. package/build/components/block-popover/index.js.map +1 -1
  37. package/build/components/block-preview/auto.js +2 -2
  38. package/build/components/block-preview/auto.js.map +1 -1
  39. package/build/components/block-preview/index.js +8 -13
  40. package/build/components/block-preview/index.js.map +1 -1
  41. package/build/components/block-preview/live.js +3 -7
  42. package/build/components/block-preview/live.js.map +1 -1
  43. package/build/components/block-selection-clearer/index.js +9 -1
  44. package/build/components/block-selection-clearer/index.js.map +1 -1
  45. package/build/components/block-settings-menu/block-settings-dropdown.js +19 -19
  46. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  47. package/build/components/block-styles/index.js +18 -42
  48. package/build/components/block-styles/index.js.map +1 -1
  49. package/build/components/block-switcher/index.js +2 -8
  50. package/build/components/block-switcher/index.js.map +1 -1
  51. package/build/components/block-switcher/preview-block-popover.js +1 -1
  52. package/build/components/block-switcher/preview-block-popover.js.map +1 -1
  53. package/build/components/block-toolbar/index.js +4 -4
  54. package/build/components/block-toolbar/index.js.map +1 -1
  55. package/build/components/block-tools/back-compat.js +2 -1
  56. package/build/components/block-tools/back-compat.js.map +1 -1
  57. package/build/components/block-tools/insertion-point.js +56 -16
  58. package/build/components/block-tools/insertion-point.js.map +1 -1
  59. package/build/components/block-tools/selected-block-popover.js +15 -3
  60. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  61. package/build/components/block-vertical-alignment-control/ui.js +1 -1
  62. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  63. package/build/components/border-radius-control/all-input-control.js +2 -1
  64. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  65. package/build/components/border-radius-control/index.js +2 -1
  66. package/build/components/border-radius-control/index.js.map +1 -1
  67. package/build/components/border-radius-control/input-controls.js +2 -1
  68. package/build/components/border-radius-control/input-controls.js.map +1 -1
  69. package/build/components/colors-gradients/control.js +1 -1
  70. package/build/components/colors-gradients/control.js.map +1 -1
  71. package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -2
  72. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  73. package/build/components/duotone-control/index.js +1 -1
  74. package/build/components/duotone-control/index.js.map +1 -1
  75. package/build/components/font-sizes/fluid-utils.js +256 -0
  76. package/build/components/font-sizes/fluid-utils.js.map +1 -0
  77. package/build/components/font-sizes/index.js +8 -0
  78. package/build/components/font-sizes/index.js.map +1 -1
  79. package/build/components/font-sizes/with-font-sizes.js +1 -1
  80. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  81. package/build/components/iframe/index.js +1 -1
  82. package/build/components/iframe/index.js.map +1 -1
  83. package/build/components/image-editor/constants.js +1 -1
  84. package/build/components/image-editor/constants.js.map +1 -1
  85. package/build/components/index.js +0 -9
  86. package/build/components/index.js.map +1 -1
  87. package/build/components/inner-blocks/index.js +6 -2
  88. package/build/components/inner-blocks/index.js.map +1 -1
  89. package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  90. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  91. package/build/components/inserter/block-patterns-tab.js +151 -78
  92. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  93. package/build/components/inserter/hooks/use-insertion-point.js +2 -7
  94. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  95. package/build/components/inserter/menu.js +14 -3
  96. package/build/components/inserter/menu.js.map +1 -1
  97. package/build/components/inserter/search-items.js +23 -2
  98. package/build/components/inserter/search-items.js.map +1 -1
  99. package/build/components/inserter-draggable-blocks/index.js +4 -2
  100. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  101. package/build/components/line-height-control/index.js +2 -1
  102. package/build/components/line-height-control/index.js.map +1 -1
  103. package/build/components/list-view/drop-indicator.js +2 -1
  104. package/build/components/list-view/drop-indicator.js.map +1 -1
  105. package/build/components/list-view/use-list-view-drop-zone.js +1 -14
  106. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  107. package/build/components/media-replace-flow/index.js +1 -1
  108. package/build/components/media-replace-flow/index.js.map +1 -1
  109. package/build/components/preview-options/index.js +2 -3
  110. package/build/components/preview-options/index.js.map +1 -1
  111. package/build/components/rich-text/format-toolbar/index.js +1 -1
  112. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  113. package/build/components/rich-text/format-toolbar-container.js +1 -1
  114. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  115. package/build/components/rich-text/use-paste-handler.js +1 -1
  116. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  117. package/build/components/spacing-sizes-control/all-input-control.js +6 -2
  118. package/build/components/spacing-sizes-control/all-input-control.js.map +1 -1
  119. package/build/components/spacing-sizes-control/axial-input-controls.js +6 -2
  120. package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
  121. package/build/components/spacing-sizes-control/index.js +6 -2
  122. package/build/components/spacing-sizes-control/index.js.map +1 -1
  123. package/build/components/spacing-sizes-control/input-controls.js +6 -2
  124. package/build/components/spacing-sizes-control/input-controls.js.map +1 -1
  125. package/build/components/spacing-sizes-control/spacing-input-control.js +45 -8
  126. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  127. package/build/components/url-input/index.js +1 -1
  128. package/build/components/url-input/index.js.map +1 -1
  129. package/build/components/use-block-drop-zone/index.js +98 -57
  130. package/build/components/use-block-drop-zone/index.js.map +1 -1
  131. package/build/components/use-on-block-drop/index.js +12 -12
  132. package/build/components/use-on-block-drop/index.js.map +1 -1
  133. package/build/components/use-on-block-drop/types.js +6 -0
  134. package/build/components/use-on-block-drop/types.js.map +1 -0
  135. package/build/hooks/align.js +1 -3
  136. package/build/hooks/align.js.map +1 -1
  137. package/build/hooks/align.native.js +1 -7
  138. package/build/hooks/align.native.js.map +1 -1
  139. package/build/hooks/border.js +1 -0
  140. package/build/hooks/border.js.map +1 -1
  141. package/build/hooks/dimensions.js +32 -4
  142. package/build/hooks/dimensions.js.map +1 -1
  143. package/build/hooks/font-size.js +61 -0
  144. package/build/hooks/font-size.js.map +1 -1
  145. package/build/hooks/layout.js +4 -3
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/margin.js +24 -17
  148. package/build/hooks/margin.js.map +1 -1
  149. package/build/hooks/padding.js +20 -12
  150. package/build/hooks/padding.js.map +1 -1
  151. package/build/hooks/style.js +126 -4
  152. package/build/hooks/style.js.map +1 -1
  153. package/build/hooks/use-typography-props.js +17 -3
  154. package/build/hooks/use-typography-props.js.map +1 -1
  155. package/build/hooks/utils.js +8 -7
  156. package/build/hooks/utils.js.map +1 -1
  157. package/build/layouts/constrained.js +0 -1
  158. package/build/layouts/constrained.js.map +1 -1
  159. package/build/layouts/flex.js +1 -1
  160. package/build/layouts/flex.js.map +1 -1
  161. package/build/store/actions.js +63 -45
  162. package/build/store/actions.js.map +1 -1
  163. package/build/store/array.js +1 -7
  164. package/build/store/array.js.map +1 -1
  165. package/build/store/defaults.js +3 -0
  166. package/build/store/defaults.js.map +1 -1
  167. package/build/store/reducer.js +31 -15
  168. package/build/store/reducer.js.map +1 -1
  169. package/build/store/selectors.js +46 -29
  170. package/build/store/selectors.js.map +1 -1
  171. package/build/utils/math.js +14 -0
  172. package/build/utils/math.js.map +1 -1
  173. package/build/utils/pre-parse-patterns.js +19 -2
  174. package/build/utils/pre-parse-patterns.js.map +1 -1
  175. package/build-module/components/alignment-control/ui.js +1 -1
  176. package/build-module/components/alignment-control/ui.js.map +1 -1
  177. package/build-module/components/block-alignment-control/constants.js +1 -1
  178. package/build-module/components/block-alignment-control/constants.js.map +1 -1
  179. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  180. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  181. package/build-module/components/block-compare/index.js +2 -3
  182. package/build-module/components/block-compare/index.js.map +1 -1
  183. package/build-module/components/block-draggable/draggable-chip.js +7 -3
  184. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  185. package/build-module/components/block-edit/index.js +4 -2
  186. package/build-module/components/block-edit/index.js.map +1 -1
  187. package/build-module/components/block-inspector/index.js +4 -4
  188. package/build-module/components/block-inspector/index.js.map +1 -1
  189. package/build-module/components/block-list/block-list-compact.native.js +1 -0
  190. package/build-module/components/block-list/block-list-compact.native.js.map +1 -1
  191. package/build-module/components/block-list/block.js +75 -15
  192. package/build-module/components/block-list/block.js.map +1 -1
  193. package/build-module/components/block-list/block.native.js +80 -13
  194. package/build-module/components/block-list/block.native.js.map +1 -1
  195. package/build-module/components/block-list/use-in-between-inserter.js +8 -24
  196. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  197. package/build-module/components/block-lock/modal.js +10 -8
  198. package/build-module/components/block-lock/modal.js.map +1 -1
  199. package/build-module/components/block-parent-selector/index.js +3 -3
  200. package/build-module/components/block-parent-selector/index.js.map +1 -1
  201. package/build-module/components/block-patterns-list/index.js +5 -4
  202. package/build-module/components/block-patterns-list/index.js.map +1 -1
  203. package/build-module/components/block-popover/drop-zone.js +70 -0
  204. package/build-module/components/block-popover/drop-zone.js.map +1 -0
  205. package/build-module/components/block-popover/inbetween.js +2 -1
  206. package/build-module/components/block-popover/inbetween.js.map +1 -1
  207. package/build-module/components/block-popover/index.js +4 -2
  208. package/build-module/components/block-popover/index.js.map +1 -1
  209. package/build-module/components/block-preview/auto.js +1 -1
  210. package/build-module/components/block-preview/auto.js.map +1 -1
  211. package/build-module/components/block-preview/index.js +8 -12
  212. package/build-module/components/block-preview/index.js.map +1 -1
  213. package/build-module/components/block-preview/live.js +3 -6
  214. package/build-module/components/block-preview/live.js.map +1 -1
  215. package/build-module/components/block-selection-clearer/index.js +9 -1
  216. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  217. package/build-module/components/block-settings-menu/block-settings-dropdown.js +20 -19
  218. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  219. package/build-module/components/block-styles/index.js +19 -44
  220. package/build-module/components/block-styles/index.js.map +1 -1
  221. package/build-module/components/block-switcher/index.js +2 -7
  222. package/build-module/components/block-switcher/index.js.map +1 -1
  223. package/build-module/components/block-switcher/preview-block-popover.js +1 -1
  224. package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
  225. package/build-module/components/block-toolbar/index.js +4 -4
  226. package/build-module/components/block-toolbar/index.js.map +1 -1
  227. package/build-module/components/block-tools/back-compat.js +2 -1
  228. package/build-module/components/block-tools/back-compat.js.map +1 -1
  229. package/build-module/components/block-tools/insertion-point.js +54 -16
  230. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  231. package/build-module/components/block-tools/selected-block-popover.js +15 -3
  232. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  233. package/build-module/components/block-vertical-alignment-control/ui.js +1 -1
  234. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  235. package/build-module/components/border-radius-control/all-input-control.js +2 -1
  236. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  237. package/build-module/components/border-radius-control/index.js +2 -1
  238. package/build-module/components/border-radius-control/index.js.map +1 -1
  239. package/build-module/components/border-radius-control/input-controls.js +2 -1
  240. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  241. package/build-module/components/colors-gradients/control.js +2 -2
  242. package/build-module/components/colors-gradients/control.js.map +1 -1
  243. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +3 -3
  244. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  245. package/build-module/components/duotone-control/index.js +1 -1
  246. package/build-module/components/duotone-control/index.js.map +1 -1
  247. package/build-module/components/font-sizes/fluid-utils.js +245 -0
  248. package/build-module/components/font-sizes/fluid-utils.js.map +1 -0
  249. package/build-module/components/font-sizes/index.js +1 -0
  250. package/build-module/components/font-sizes/index.js.map +1 -1
  251. package/build-module/components/font-sizes/with-font-sizes.js +2 -2
  252. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  253. package/build-module/components/iframe/index.js +1 -1
  254. package/build-module/components/iframe/index.js.map +1 -1
  255. package/build-module/components/image-editor/constants.js +1 -1
  256. package/build-module/components/image-editor/constants.js.map +1 -1
  257. package/build-module/components/index.js +0 -1
  258. package/build-module/components/index.js.map +1 -1
  259. package/build-module/components/inner-blocks/index.js +6 -2
  260. package/build-module/components/inner-blocks/index.js.map +1 -1
  261. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  262. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  263. package/build-module/components/inserter/block-patterns-tab.js +148 -81
  264. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  265. package/build-module/components/inserter/hooks/use-insertion-point.js +2 -6
  266. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  267. package/build-module/components/inserter/menu.js +10 -3
  268. package/build-module/components/inserter/menu.js.map +1 -1
  269. package/build-module/components/inserter/search-items.js +23 -3
  270. package/build-module/components/inserter/search-items.js.map +1 -1
  271. package/build-module/components/inserter-draggable-blocks/index.js +4 -2
  272. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  273. package/build-module/components/line-height-control/index.js +2 -1
  274. package/build-module/components/line-height-control/index.js.map +1 -1
  275. package/build-module/components/list-view/drop-indicator.js +2 -1
  276. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  277. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -14
  278. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  279. package/build-module/components/media-replace-flow/index.js +1 -1
  280. package/build-module/components/media-replace-flow/index.js.map +1 -1
  281. package/build-module/components/preview-options/index.js +2 -3
  282. package/build-module/components/preview-options/index.js.map +1 -1
  283. package/build-module/components/rich-text/format-toolbar/index.js +1 -1
  284. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  285. package/build-module/components/rich-text/format-toolbar-container.js +1 -1
  286. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  287. package/build-module/components/rich-text/use-paste-handler.js +1 -1
  288. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  289. package/build-module/components/spacing-sizes-control/all-input-control.js +6 -2
  290. package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -1
  291. package/build-module/components/spacing-sizes-control/axial-input-controls.js +6 -2
  292. package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
  293. package/build-module/components/spacing-sizes-control/index.js +6 -2
  294. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  295. package/build-module/components/spacing-sizes-control/input-controls.js +6 -2
  296. package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -1
  297. package/build-module/components/spacing-sizes-control/spacing-input-control.js +44 -8
  298. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  299. package/build-module/components/url-input/index.js +1 -1
  300. package/build-module/components/url-input/index.js.map +1 -1
  301. package/build-module/components/use-block-drop-zone/index.js +98 -58
  302. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  303. package/build-module/components/use-on-block-drop/index.js +12 -12
  304. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  305. package/build-module/components/use-on-block-drop/types.js +2 -0
  306. package/build-module/components/use-on-block-drop/types.js.map +1 -0
  307. package/build-module/hooks/align.js +1 -2
  308. package/build-module/hooks/align.js.map +1 -1
  309. package/build-module/hooks/align.native.js +1 -6
  310. package/build-module/hooks/align.native.js.map +1 -1
  311. package/build-module/hooks/border.js +1 -0
  312. package/build-module/hooks/border.js.map +1 -1
  313. package/build-module/hooks/dimensions.js +32 -4
  314. package/build-module/hooks/dimensions.js.map +1 -1
  315. package/build-module/hooks/font-size.js +60 -1
  316. package/build-module/hooks/font-size.js.map +1 -1
  317. package/build-module/hooks/layout.js +5 -4
  318. package/build-module/hooks/layout.js.map +1 -1
  319. package/build-module/hooks/margin.js +25 -18
  320. package/build-module/hooks/margin.js.map +1 -1
  321. package/build-module/hooks/padding.js +21 -13
  322. package/build-module/hooks/padding.js.map +1 -1
  323. package/build-module/hooks/style.js +124 -3
  324. package/build-module/hooks/style.js.map +1 -1
  325. package/build-module/hooks/use-typography-props.js +17 -4
  326. package/build-module/hooks/use-typography-props.js.map +1 -1
  327. package/build-module/hooks/utils.js +8 -8
  328. package/build-module/hooks/utils.js.map +1 -1
  329. package/build-module/layouts/constrained.js +0 -1
  330. package/build-module/layouts/constrained.js.map +1 -1
  331. package/build-module/layouts/flex.js +1 -1
  332. package/build-module/layouts/flex.js.map +1 -1
  333. package/build-module/store/actions.js +59 -42
  334. package/build-module/store/actions.js.map +1 -1
  335. package/build-module/store/array.js +1 -6
  336. package/build-module/store/array.js.map +1 -1
  337. package/build-module/store/defaults.js +3 -0
  338. package/build-module/store/defaults.js.map +1 -1
  339. package/build-module/store/reducer.js +32 -16
  340. package/build-module/store/reducer.js.map +1 -1
  341. package/build-module/store/selectors.js +47 -30
  342. package/build-module/store/selectors.js.map +1 -1
  343. package/build-module/utils/math.js +12 -0
  344. package/build-module/utils/math.js.map +1 -1
  345. package/build-module/utils/pre-parse-patterns.js +19 -2
  346. package/build-module/utils/pre-parse-patterns.js.map +1 -1
  347. package/build-style/style-rtl.css +292 -206
  348. package/build-style/style.css +288 -202
  349. package/package.json +29 -28
  350. package/src/components/alignment-control/ui.js +1 -1
  351. package/src/components/block-alignment-control/constants.js +1 -1
  352. package/src/components/block-alignment-matrix-control/index.js +1 -1
  353. package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +13 -11
  354. package/src/components/block-breadcrumb/test/index.js +2 -2
  355. package/src/components/block-compare/index.js +3 -2
  356. package/src/components/block-draggable/draggable-chip.js +4 -2
  357. package/src/components/block-edit/index.js +2 -1
  358. package/src/components/block-inspector/index.js +8 -7
  359. package/src/components/block-list/block-list-compact.native.js +1 -0
  360. package/src/components/block-list/block.js +113 -7
  361. package/src/components/block-list/block.native.js +123 -9
  362. package/src/components/block-list/style.scss +93 -126
  363. package/src/components/block-list/use-in-between-inserter.js +8 -19
  364. package/src/components/block-lock/modal.js +12 -7
  365. package/src/components/block-mover/stories/index.js +1 -1
  366. package/src/components/block-mover/style.scss +35 -1
  367. package/src/components/block-parent-selector/index.js +3 -3
  368. package/src/components/block-patterns-list/index.js +9 -5
  369. package/src/components/block-patterns-list/style.scss +7 -3
  370. package/src/components/block-popover/README.md +8 -0
  371. package/src/components/block-popover/drop-zone.js +63 -0
  372. package/src/components/block-popover/inbetween.js +1 -0
  373. package/src/components/block-popover/index.js +3 -1
  374. package/src/components/block-popover/style.scss +17 -5
  375. package/src/components/block-preview/auto.js +1 -1
  376. package/src/components/block-preview/index.js +15 -11
  377. package/src/components/block-preview/live.js +2 -7
  378. package/src/components/block-preview/test/index.js +1 -7
  379. package/src/components/block-selection-clearer/index.js +7 -2
  380. package/src/components/block-selection-clearer/test/index.js +118 -0
  381. package/src/components/block-settings-menu/block-settings-dropdown.js +29 -18
  382. package/src/components/block-settings-menu/test/block-mode-toggle.js +17 -17
  383. package/src/components/block-styles/index.js +26 -49
  384. package/src/components/block-switcher/index.js +2 -7
  385. package/src/components/block-switcher/preview-block-popover.js +1 -1
  386. package/src/components/block-switcher/test/index.js +2 -2
  387. package/src/components/block-toolbar/index.js +4 -6
  388. package/src/components/block-toolbar/style.scss +38 -14
  389. package/src/components/block-tools/back-compat.js +1 -0
  390. package/src/components/block-tools/insertion-point.js +49 -15
  391. package/src/components/block-tools/selected-block-popover.js +14 -1
  392. package/src/components/block-variation-picker/README.md +1 -1
  393. package/src/components/block-vertical-alignment-control/ui.js +1 -1
  394. package/src/components/border-radius-control/all-input-control.js +1 -0
  395. package/src/components/border-radius-control/index.js +1 -0
  396. package/src/components/border-radius-control/input-controls.js +1 -0
  397. package/src/components/border-radius-control/style.scss +15 -24
  398. package/src/components/button-block-appender/style.scss +4 -2
  399. package/src/components/color-palette/test/__snapshots__/control.js.snap +86 -104
  400. package/src/components/color-palette/test/control.js +11 -15
  401. package/src/components/colors-gradients/control.js +2 -2
  402. package/src/components/colors-gradients/panel-color-gradient-settings.js +3 -4
  403. package/src/components/colors-gradients/test/control.js +49 -77
  404. package/src/components/duotone-control/index.js +1 -1
  405. package/src/components/font-sizes/fluid-utils.js +296 -0
  406. package/src/components/font-sizes/index.js +1 -0
  407. package/src/components/font-sizes/test/fluid-utils.js +168 -0
  408. package/src/components/font-sizes/with-font-sizes.js +2 -3
  409. package/src/components/iframe/index.js +1 -1
  410. package/src/components/image-editor/constants.js +1 -1
  411. package/src/components/image-size-control/test/index.js +47 -60
  412. package/src/components/index.js +0 -1
  413. package/src/components/inner-blocks/index.js +5 -1
  414. package/src/components/inner-blocks/test/index.js +4 -0
  415. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  416. package/src/components/inserter/block-patterns-tab.js +232 -98
  417. package/src/components/inserter/hooks/use-insertion-point.js +3 -11
  418. package/src/components/inserter/menu.js +15 -2
  419. package/src/components/inserter/search-items.js +23 -3
  420. package/src/components/inserter/style.scss +94 -9
  421. package/src/components/inserter/test/reusable-blocks-tab.js +6 -6
  422. package/src/components/inserter/test/search-items.js +6 -0
  423. package/src/components/inserter-draggable-blocks/index.js +12 -2
  424. package/src/components/inserter-list-item/style.scss +22 -1
  425. package/src/components/letter-spacing-control/README.md +55 -0
  426. package/src/components/line-height-control/index.js +1 -0
  427. package/src/components/link-control/README.md +3 -3
  428. package/src/components/link-control/test/index.js +1 -1
  429. package/src/components/list-view/drop-indicator.js +1 -0
  430. package/src/components/list-view/style.scss +1 -36
  431. package/src/components/list-view/use-list-view-drop-zone.js +4 -18
  432. package/src/components/media-replace-flow/index.js +1 -1
  433. package/src/components/media-replace-flow/test/index.js +69 -51
  434. package/src/components/panel-color-settings/test/index.js +4 -4
  435. package/src/components/preview-options/index.js +2 -2
  436. package/src/components/preview-options/style.scss +1 -1
  437. package/src/components/provider/test/use-block-sync.js +131 -165
  438. package/src/components/responsive-block-control/test/index.js +4 -4
  439. package/src/components/rich-text/format-toolbar/index.js +1 -1
  440. package/src/components/rich-text/format-toolbar-container.js +1 -1
  441. package/src/components/rich-text/use-paste-handler.js +1 -1
  442. package/src/components/spacing-sizes-control/all-input-control.js +4 -0
  443. package/src/components/spacing-sizes-control/axial-input-controls.js +4 -0
  444. package/src/components/spacing-sizes-control/index.js +4 -0
  445. package/src/components/spacing-sizes-control/input-controls.js +4 -0
  446. package/src/components/spacing-sizes-control/spacing-input-control.js +26 -3
  447. package/src/components/spacing-sizes-control/style.scss +27 -19
  448. package/src/components/url-input/index.js +1 -1
  449. package/src/components/use-block-drop-zone/index.js +136 -79
  450. package/src/components/use-block-drop-zone/test/index.js +333 -81
  451. package/src/components/use-on-block-drop/index.js +11 -12
  452. package/src/components/use-on-block-drop/types.ts +1 -0
  453. package/src/hooks/align.js +3 -2
  454. package/src/hooks/align.native.js +5 -8
  455. package/src/hooks/border.js +1 -0
  456. package/src/hooks/dimensions.js +32 -5
  457. package/src/hooks/font-size.js +76 -0
  458. package/src/hooks/layout.js +7 -9
  459. package/src/hooks/margin.js +20 -14
  460. package/src/hooks/padding.js +20 -16
  461. package/src/hooks/style.js +122 -3
  462. package/src/hooks/test/align.js +96 -72
  463. package/src/hooks/test/style.js +206 -1
  464. package/src/hooks/test/use-typography-props.js +22 -0
  465. package/src/hooks/use-typography-props.js +18 -3
  466. package/src/hooks/utils.js +10 -7
  467. package/src/layouts/constrained.js +0 -1
  468. package/src/layouts/flex.js +1 -1
  469. package/src/store/actions.js +24 -12
  470. package/src/store/array.js +1 -6
  471. package/src/store/defaults.js +3 -0
  472. package/src/store/reducer.js +31 -24
  473. package/src/store/selectors.js +28 -21
  474. package/src/store/test/actions.js +0 -9
  475. package/src/store/test/selectors.js +1 -1
  476. package/src/utils/math.js +17 -0
  477. package/src/utils/pre-parse-patterns.js +12 -7
  478. package/build/components/inserter/pattern-panel.js +0 -87
  479. package/build/components/inserter/pattern-panel.js.map +0 -1
  480. package/build-module/components/inserter/pattern-panel.js +0 -74
  481. package/build-module/components/inserter/pattern-panel.js.map +0 -1
  482. package/src/components/inserter/pattern-panel.js +0 -93
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/dimensions.js"],"names":["SPACING_SUPPORT_KEY","ALL_SIDES","AXIAL_SIDES","DimensionsPanel","props","isGapDisabled","isPaddingDisabled","isMarginDisabled","isDisabled","useIsDimensionsDisabled","isSupported","hasDimensionsSupport","name","spacingSizes","defaultSpacingControls","createResetAllFilter","attribute","newAttributes","style","spacing","undefined","spacingClassnames","length","padding","clientId","margin","blockGap","blockName","Platform","OS","gapDisabled","paddingDisabled","marginDisabled","useCustomSides","feature","support","Array","isArray","sides","useIsDimensionsSupportValid","some","side","includes","console","warn"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __experimentalToolsPanelItem as ToolsPanelItem } from '@wordpress/components';\nimport { Platform } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getBlockSupport } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport InspectorControls from '../components/inspector-controls';\nimport {\n\tGapEdit,\n\thasGapSupport,\n\thasGapValue,\n\tresetGap,\n\tuseIsGapDisabled,\n} from './gap';\nimport {\n\tMarginEdit,\n\tMarginVisualizer,\n\thasMarginSupport,\n\thasMarginValue,\n\tresetMargin,\n\tuseIsMarginDisabled,\n} from './margin';\nimport {\n\tPaddingEdit,\n\tPaddingVisualizer,\n\thasPaddingSupport,\n\thasPaddingValue,\n\tresetPadding,\n\tuseIsPaddingDisabled,\n} from './padding';\nimport useSetting from '../components/use-setting';\n\nexport const SPACING_SUPPORT_KEY = 'spacing';\nexport const ALL_SIDES = [ 'top', 'right', 'bottom', 'left' ];\nexport const AXIAL_SIDES = [ 'vertical', 'horizontal' ];\n\n/**\n * Inspector controls for dimensions support.\n *\n * @param {Object} props Block props.\n *\n * @return {WPElement} Inspector controls for spacing support features.\n */\nexport function DimensionsPanel( props ) {\n\tconst isGapDisabled = useIsGapDisabled( props );\n\tconst isPaddingDisabled = useIsPaddingDisabled( props );\n\tconst isMarginDisabled = useIsMarginDisabled( props );\n\tconst isDisabled = useIsDimensionsDisabled( props );\n\tconst isSupported = hasDimensionsSupport( props.name );\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\n\tif ( isDisabled || ! isSupported ) {\n\t\treturn null;\n\t}\n\n\tconst defaultSpacingControls = getBlockSupport( props.name, [\n\t\tSPACING_SUPPORT_KEY,\n\t\t'__experimentalDefaultControls',\n\t] );\n\n\tconst createResetAllFilter = ( attribute ) => ( newAttributes ) => ( {\n\t\t...newAttributes,\n\t\tstyle: {\n\t\t\t...newAttributes.style,\n\t\t\tspacing: {\n\t\t\t\t...newAttributes.style?.spacing,\n\t\t\t\t[ attribute ]: undefined,\n\t\t\t},\n\t\t},\n\t} );\n\n\tconst spacingClassnames = classnames( {\n\t\t'tools-panel-item-spacing': spacingSizes && spacingSizes.length > 0,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls __experimentalGroup=\"dimensions\">\n\t\t\t\t{ ! isPaddingDisabled && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tclassName={ spacingClassnames }\n\t\t\t\t\t\thasValue={ () => hasPaddingValue( props ) }\n\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\tonDeselect={ () => resetPadding( props ) }\n\t\t\t\t\t\tresetAllFilter={ createResetAllFilter( 'padding' ) }\n\t\t\t\t\t\tisShownByDefault={ defaultSpacingControls?.padding }\n\t\t\t\t\t\tpanelId={ props.clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<PaddingEdit { ...props } />\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\t\t\t\t{ ! isMarginDisabled && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tclassName={ spacingClassnames }\n\t\t\t\t\t\thasValue={ () => hasMarginValue( props ) }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tonDeselect={ () => resetMargin( props ) }\n\t\t\t\t\t\tresetAllFilter={ createResetAllFilter( 'margin' ) }\n\t\t\t\t\t\tisShownByDefault={ defaultSpacingControls?.margin }\n\t\t\t\t\t\tpanelId={ props.clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<MarginEdit { ...props } />\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\t\t\t\t{ ! isGapDisabled && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tclassName={ spacingClassnames }\n\t\t\t\t\t\thasValue={ () => hasGapValue( props ) }\n\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\tonDeselect={ () => resetGap( props ) }\n\t\t\t\t\t\tresetAllFilter={ createResetAllFilter( 'blockGap' ) }\n\t\t\t\t\t\tisShownByDefault={ defaultSpacingControls?.blockGap }\n\t\t\t\t\t\tpanelId={ props.clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<GapEdit { ...props } />\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t\t{ ! isPaddingDisabled && <PaddingVisualizer { ...props } /> }\n\t\t\t{ ! isMarginDisabled && <MarginVisualizer { ...props } /> }\n\t\t</>\n\t);\n}\n\n/**\n * Determine whether there is dimensions related block support.\n *\n * @param {string} blockName Block name.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasDimensionsSupport( blockName ) {\n\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\n\treturn (\n\t\thasGapSupport( blockName ) ||\n\t\thasPaddingSupport( blockName ) ||\n\t\thasMarginSupport( blockName )\n\t);\n}\n\n/**\n * Determines whether dimensions support has been disabled.\n *\n * @param {Object} props Block properties.\n *\n * @return {boolean} If spacing support is completely disabled.\n */\nconst useIsDimensionsDisabled = ( props = {} ) => {\n\tconst gapDisabled = useIsGapDisabled( props );\n\tconst paddingDisabled = useIsPaddingDisabled( props );\n\tconst marginDisabled = useIsMarginDisabled( props );\n\n\treturn gapDisabled && paddingDisabled && marginDisabled;\n};\n\n/**\n * Custom hook to retrieve which padding/margin/blockGap is supported\n * e.g. top, right, bottom or left.\n *\n * Sides are opted into by default. It is only if a specific side is set to\n * false that it is omitted.\n *\n * @param {string} blockName Block name.\n * @param {string} feature The feature custom sides relate to e.g. padding or margins.\n *\n * @return {?string[]} Strings representing the custom sides available.\n */\nexport function useCustomSides( blockName, feature ) {\n\tconst support = getBlockSupport( blockName, SPACING_SUPPORT_KEY );\n\n\t// Skip when setting is boolean as theme isn't setting arbitrary sides.\n\tif ( ! support || typeof support[ feature ] === 'boolean' ) {\n\t\treturn;\n\t}\n\n\t// Return if the setting is an array of sides (e.g. `[ 'top', 'bottom' ]`).\n\tif ( Array.isArray( support[ feature ] ) ) {\n\t\treturn support[ feature ];\n\t}\n\n\t// Finally, attempt to return `.sides` if the setting is an object.\n\tif ( support[ feature ]?.sides ) {\n\t\treturn support[ feature ].sides;\n\t}\n}\n\n/**\n * Custom hook to determine whether the sides configured in the\n * block support are valid. A dimension property cannot declare\n * support for a mix of axial and individual sides.\n *\n * @param {string} blockName Block name.\n * @param {string} feature The feature custom sides relate to e.g. padding or margins.\n *\n * @return {boolean} If the feature has a valid configuration of sides.\n */\nexport function useIsDimensionsSupportValid( blockName, feature ) {\n\tconst sides = useCustomSides( blockName, feature );\n\n\tif (\n\t\tsides &&\n\t\tsides.some( ( side ) => ALL_SIDES.includes( side ) ) &&\n\t\tsides.some( ( side ) => AXIAL_SIDES.includes( side ) )\n\t) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(\n\t\t\t`The ${ feature } support for the \"${ blockName }\" block can not be configured to support both axial and arbitrary sides.`\n\t\t);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/dimensions.js"],"names":["SPACING_SUPPORT_KEY","ALL_SIDES","AXIAL_SIDES","useVisualizerMouseOver","isMouseOver","setIsMouseOver","onMouseOver","onMouseOut","DimensionsPanel","props","isGapDisabled","isPaddingDisabled","isMarginDisabled","isDisabled","useIsDimensionsDisabled","isSupported","hasDimensionsSupport","name","spacingSizes","paddingMouseOver","marginMouseOver","defaultSpacingControls","createResetAllFilter","attribute","newAttributes","style","spacing","undefined","spacingClassnames","length","padding","clientId","margin","blockGap","blockName","Platform","OS","gapDisabled","paddingDisabled","marginDisabled","useCustomSides","feature","support","Array","isArray","sides","useIsDimensionsSupportValid","some","side","includes","console","warn"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __experimentalToolsPanelItem as ToolsPanelItem } from '@wordpress/components';\nimport { Platform, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getBlockSupport } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport InspectorControls from '../components/inspector-controls';\nimport {\n\tGapEdit,\n\thasGapSupport,\n\thasGapValue,\n\tresetGap,\n\tuseIsGapDisabled,\n} from './gap';\nimport {\n\tMarginEdit,\n\tMarginVisualizer,\n\thasMarginSupport,\n\thasMarginValue,\n\tresetMargin,\n\tuseIsMarginDisabled,\n} from './margin';\nimport {\n\tPaddingEdit,\n\tPaddingVisualizer,\n\thasPaddingSupport,\n\thasPaddingValue,\n\tresetPadding,\n\tuseIsPaddingDisabled,\n} from './padding';\nimport useSetting from '../components/use-setting';\n\nexport const SPACING_SUPPORT_KEY = 'spacing';\nexport const ALL_SIDES = [ 'top', 'right', 'bottom', 'left' ];\nexport const AXIAL_SIDES = [ 'vertical', 'horizontal' ];\n\nfunction useVisualizerMouseOver() {\n\tconst [ isMouseOver, setIsMouseOver ] = useState( false );\n\tconst onMouseOver = () => setIsMouseOver( true );\n\tconst onMouseOut = () => setIsMouseOver( false );\n\treturn { isMouseOver, onMouseOver, onMouseOut };\n}\n\n/**\n * Inspector controls for dimensions support.\n *\n * @param {Object} props Block props.\n *\n * @return {WPElement} Inspector controls for spacing support features.\n */\nexport function DimensionsPanel( props ) {\n\tconst isGapDisabled = useIsGapDisabled( props );\n\tconst isPaddingDisabled = useIsPaddingDisabled( props );\n\tconst isMarginDisabled = useIsMarginDisabled( props );\n\tconst isDisabled = useIsDimensionsDisabled( props );\n\tconst isSupported = hasDimensionsSupport( props.name );\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\tconst paddingMouseOver = useVisualizerMouseOver();\n\tconst marginMouseOver = useVisualizerMouseOver();\n\n\tif ( isDisabled || ! isSupported ) {\n\t\treturn null;\n\t}\n\n\tconst defaultSpacingControls = getBlockSupport( props.name, [\n\t\tSPACING_SUPPORT_KEY,\n\t\t'__experimentalDefaultControls',\n\t] );\n\n\tconst createResetAllFilter = ( attribute ) => ( newAttributes ) => ( {\n\t\t...newAttributes,\n\t\tstyle: {\n\t\t\t...newAttributes.style,\n\t\t\tspacing: {\n\t\t\t\t...newAttributes.style?.spacing,\n\t\t\t\t[ attribute ]: undefined,\n\t\t\t},\n\t\t},\n\t} );\n\n\tconst spacingClassnames = classnames( {\n\t\t'tools-panel-item-spacing': spacingSizes && spacingSizes.length > 0,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls __experimentalGroup=\"dimensions\">\n\t\t\t\t{ ! isPaddingDisabled && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tclassName={ spacingClassnames }\n\t\t\t\t\t\thasValue={ () => hasPaddingValue( props ) }\n\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\tonDeselect={ () => resetPadding( props ) }\n\t\t\t\t\t\tresetAllFilter={ createResetAllFilter( 'padding' ) }\n\t\t\t\t\t\tisShownByDefault={ defaultSpacingControls?.padding }\n\t\t\t\t\t\tpanelId={ props.clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<PaddingEdit\n\t\t\t\t\t\t\tonMouseOver={ paddingMouseOver.onMouseOver }\n\t\t\t\t\t\t\tonMouseOut={ paddingMouseOver.onMouseOut }\n\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\t\t\t\t{ ! isMarginDisabled && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tclassName={ spacingClassnames }\n\t\t\t\t\t\thasValue={ () => hasMarginValue( props ) }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tonDeselect={ () => resetMargin( props ) }\n\t\t\t\t\t\tresetAllFilter={ createResetAllFilter( 'margin' ) }\n\t\t\t\t\t\tisShownByDefault={ defaultSpacingControls?.margin }\n\t\t\t\t\t\tpanelId={ props.clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<MarginEdit\n\t\t\t\t\t\t\tonMouseOver={ marginMouseOver.onMouseOver }\n\t\t\t\t\t\t\tonMouseOut={ marginMouseOver.onMouseOut }\n\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\t\t\t\t{ ! isGapDisabled && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tclassName={ spacingClassnames }\n\t\t\t\t\t\thasValue={ () => hasGapValue( props ) }\n\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\tonDeselect={ () => resetGap( props ) }\n\t\t\t\t\t\tresetAllFilter={ createResetAllFilter( 'blockGap' ) }\n\t\t\t\t\t\tisShownByDefault={ defaultSpacingControls?.blockGap }\n\t\t\t\t\t\tpanelId={ props.clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<GapEdit { ...props } />\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t\t{ ! isPaddingDisabled && (\n\t\t\t\t<PaddingVisualizer\n\t\t\t\t\tforceShow={ paddingMouseOver.isMouseOver }\n\t\t\t\t\t{ ...props }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! isMarginDisabled && (\n\t\t\t\t<MarginVisualizer\n\t\t\t\t\tforceShow={ marginMouseOver.isMouseOver }\n\t\t\t\t\t{ ...props }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\n/**\n * Determine whether there is dimensions related block support.\n *\n * @param {string} blockName Block name.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasDimensionsSupport( blockName ) {\n\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\n\treturn (\n\t\thasGapSupport( blockName ) ||\n\t\thasPaddingSupport( blockName ) ||\n\t\thasMarginSupport( blockName )\n\t);\n}\n\n/**\n * Determines whether dimensions support has been disabled.\n *\n * @param {Object} props Block properties.\n *\n * @return {boolean} If spacing support is completely disabled.\n */\nconst useIsDimensionsDisabled = ( props = {} ) => {\n\tconst gapDisabled = useIsGapDisabled( props );\n\tconst paddingDisabled = useIsPaddingDisabled( props );\n\tconst marginDisabled = useIsMarginDisabled( props );\n\n\treturn gapDisabled && paddingDisabled && marginDisabled;\n};\n\n/**\n * Custom hook to retrieve which padding/margin/blockGap is supported\n * e.g. top, right, bottom or left.\n *\n * Sides are opted into by default. It is only if a specific side is set to\n * false that it is omitted.\n *\n * @param {string} blockName Block name.\n * @param {string} feature The feature custom sides relate to e.g. padding or margins.\n *\n * @return {?string[]} Strings representing the custom sides available.\n */\nexport function useCustomSides( blockName, feature ) {\n\tconst support = getBlockSupport( blockName, SPACING_SUPPORT_KEY );\n\n\t// Skip when setting is boolean as theme isn't setting arbitrary sides.\n\tif ( ! support || typeof support[ feature ] === 'boolean' ) {\n\t\treturn;\n\t}\n\n\t// Return if the setting is an array of sides (e.g. `[ 'top', 'bottom' ]`).\n\tif ( Array.isArray( support[ feature ] ) ) {\n\t\treturn support[ feature ];\n\t}\n\n\t// Finally, attempt to return `.sides` if the setting is an object.\n\tif ( support[ feature ]?.sides ) {\n\t\treturn support[ feature ].sides;\n\t}\n}\n\n/**\n * Custom hook to determine whether the sides configured in the\n * block support are valid. A dimension property cannot declare\n * support for a mix of axial and individual sides.\n *\n * @param {string} blockName Block name.\n * @param {string} feature The feature custom sides relate to e.g. padding or margins.\n *\n * @return {boolean} If the feature has a valid configuration of sides.\n */\nexport function useIsDimensionsSupportValid( blockName, feature ) {\n\tconst sides = useCustomSides( blockName, feature );\n\n\tif (\n\t\tsides &&\n\t\tsides.some( ( side ) => ALL_SIDES.includes( side ) ) &&\n\t\tsides.some( ( side ) => AXIAL_SIDES.includes( side ) )\n\t) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(\n\t\t\t`The ${ feature } support for the \"${ blockName }\" block can not be configured to support both axial and arbitrary sides.`\n\t\t);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n"]}
@@ -22,6 +22,8 @@ var _tokenList = _interopRequireDefault(require("@wordpress/token-list"));
22
22
 
23
23
  var _compose = require("@wordpress/compose");
24
24
 
25
+ var _data = require("@wordpress/data");
26
+
25
27
  var _fontSizes = require("../components/font-sizes");
26
28
 
27
29
  var _typography = require("./typography");
@@ -30,6 +32,8 @@ var _utils = require("./utils");
30
32
 
31
33
  var _useSetting = _interopRequireDefault(require("../components/use-setting"));
32
34
 
35
+ var _store = require("../store");
36
+
33
37
  /**
34
38
  * WordPress dependencies
35
39
  */
@@ -160,6 +164,7 @@ function FontSizeEdit(props) {
160
164
  onChange: onChange,
161
165
  value: fontSizeValue,
162
166
  withReset: false,
167
+ withSlider: true,
163
168
  size: "__unstable-large",
164
169
  __nextHasNoMarginBottom: true
165
170
  });
@@ -278,10 +283,66 @@ function addTransforms(result, source, index, results) {
278
283
  };
279
284
  return (0, _utils.transformStyles)(activeSupports, MIGRATION_PATHS, result, source, index, results);
280
285
  }
286
+ /**
287
+ * Allow custom font sizes to appear fluid when fluid typography is enabled at
288
+ * the theme level.
289
+ *
290
+ * Adds a custom getEditWrapperProps() callback to all block types that support
291
+ * font sizes. Then, if fluid typography is enabled, this callback will swap any
292
+ * custom font size in style.fontSize with a fluid font size (i.e. one that uses
293
+ * clamp()).
294
+ *
295
+ * It's important that this hook runs after 'core/style/addEditProps' sets
296
+ * style.fontSize as otherwise fontSize will be overwritten.
297
+ *
298
+ * @param {Object} blockType Block settings object.
299
+ */
300
+
301
+
302
+ function addEditPropsForFluidCustomFontSizes(blockType) {
303
+ if (!(0, _blocks.hasBlockSupport)(blockType, FONT_SIZE_SUPPORT_KEY) || (0, _utils.shouldSkipSerialization)(blockType, _typography.TYPOGRAPHY_SUPPORT_KEY, 'fontSize')) {
304
+ return blockType;
305
+ }
306
+
307
+ const existingGetEditWrapperProps = blockType.getEditWrapperProps;
308
+
309
+ blockType.getEditWrapperProps = attributes => {
310
+ var _wrapperProps$style, _select$getSettings$_, _select$getSettings$_2;
311
+
312
+ const wrapperProps = existingGetEditWrapperProps ? existingGetEditWrapperProps(attributes) : {};
313
+ const fontSize = wrapperProps === null || wrapperProps === void 0 ? void 0 : (_wrapperProps$style = wrapperProps.style) === null || _wrapperProps$style === void 0 ? void 0 : _wrapperProps$style.fontSize; // TODO: This sucks! We should be using useSetting( 'typography.fluid' )
314
+ // or even useSelect( blockEditorStore ). We can't do either here
315
+ // because getEditWrapperProps is a plain JavaScript function called by
316
+ // BlockListBlock and not a React component rendered within
317
+ // BlockListContext.Provider. If we set fontSize using editor.
318
+ // BlockListBlock instead of using getEditWrapperProps then the value is
319
+ // clobbered when the core/style/addEditProps filter runs.
320
+
321
+ const isFluidTypographyEnabled = !!((_select$getSettings$_ = (0, _data.select)(_store.store).getSettings().__experimentalFeatures) !== null && _select$getSettings$_ !== void 0 && (_select$getSettings$_2 = _select$getSettings$_.typography) !== null && _select$getSettings$_2 !== void 0 && _select$getSettings$_2.fluid);
322
+ const newFontSize = fontSize && isFluidTypographyEnabled ? (0, _fontSizes.getComputedFluidTypographyValue)({
323
+ fontSize
324
+ }) : null;
325
+
326
+ if (newFontSize === null) {
327
+ return wrapperProps;
328
+ }
329
+
330
+ return { ...wrapperProps,
331
+ style: { ...(wrapperProps === null || wrapperProps === void 0 ? void 0 : wrapperProps.style),
332
+ fontSize: newFontSize
333
+ }
334
+ };
335
+ };
336
+
337
+ return blockType;
338
+ }
281
339
 
282
340
  (0, _hooks.addFilter)('blocks.registerBlockType', 'core/font/addAttribute', addAttributes);
283
341
  (0, _hooks.addFilter)('blocks.getSaveContent.extraProps', 'core/font/addSaveProps', addSaveProps);
284
342
  (0, _hooks.addFilter)('blocks.registerBlockType', 'core/font/addEditProps', addEditProps);
285
343
  (0, _hooks.addFilter)('editor.BlockListBlock', 'core/font-size/with-font-size-inline-styles', withFontSizeInlineStyles);
286
344
  (0, _hooks.addFilter)('blocks.switchToBlockType.transformedBlock', 'core/font-size/addTransforms', addTransforms);
345
+ (0, _hooks.addFilter)('blocks.registerBlockType', 'core/font-size/addEditPropsForFluidCustomFontSizes', addEditPropsForFluidCustomFontSizes, // Run after 'core/style/addEditProps' so that the style object has already
346
+ // been translated into inline CSS.
347
+ 11);
287
348
  //# sourceMappingURL=font-size.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/font-size.js"],"names":["FONT_SIZE_SUPPORT_KEY","addAttributes","settings","attributes","fontSize","Object","assign","type","addSaveProps","props","blockType","TYPOGRAPHY_SUPPORT_KEY","classes","TokenList","className","add","newClassName","value","undefined","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","FontSizeEdit","style","setAttributes","fontSizes","onChange","fontSizeSlug","slug","typography","fontSizeObject","fontSizeValue","size","hasFontSizeValue","resetFontSize","useIsFontSizeDisabled","name","blockName","hasFontSizes","length","withFontSizeInlineStyles","BlockListBlock","wrapperProps","newProps","MIGRATION_PATHS","addTransforms","result","source","index","results","destinationBlockType","activeSupports"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport TokenList from '@wordpress/token-list';\nimport { createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetFontSize,\n\tgetFontSizeClass,\n\tgetFontSizeObjectByValue,\n\tFontSizePicker,\n} from '../components/font-sizes';\nimport { TYPOGRAPHY_SUPPORT_KEY } from './typography';\nimport {\n\tcleanEmptyObject,\n\ttransformStyles,\n\tshouldSkipSerialization,\n} from './utils';\nimport useSetting from '../components/use-setting';\n\nexport const FONT_SIZE_SUPPORT_KEY = 'typography.fontSize';\n\n/**\n * Filters registered block settings, extending attributes to include\n * `fontSize` and `fontWeight` attributes.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify a default value if needed.\n\tif ( ! settings.attributes.fontSize ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tfontSize: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override props assigned to save component to inject font size.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nfunction addSaveProps( props, blockType, attributes ) {\n\tif ( ! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn props;\n\t}\n\n\tif (\n\t\tshouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )\n\t) {\n\t\treturn props;\n\t}\n\n\t// Use TokenList to dedupe classes.\n\tconst classes = new TokenList( props.className );\n\tclasses.add( getFontSizeClass( attributes.fontSize ) );\n\tconst newClassName = classes.value;\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to expand the block edit wrapper\n * by applying the desired styles and classnames.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addEditProps( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\n/**\n * Inspector control panel containing the font size related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Font size edit element.\n */\nexport function FontSizeEdit( props ) {\n\tconst {\n\t\tattributes: { fontSize, style },\n\t\tsetAttributes,\n\t} = props;\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\n\tconst onChange = ( value ) => {\n\t\tconst fontSizeSlug = getFontSizeObjectByValue( fontSizes, value ).slug;\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t...style,\n\t\t\t\ttypography: {\n\t\t\t\t\t...style?.typography,\n\t\t\t\t\tfontSize: fontSizeSlug ? undefined : value,\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tfontSize: fontSizeSlug,\n\t\t} );\n\t};\n\n\tconst fontSizeObject = getFontSize(\n\t\tfontSizes,\n\t\tfontSize,\n\t\tstyle?.typography?.fontSize\n\t);\n\n\tconst fontSizeValue =\n\t\tfontSizeObject?.size || style?.typography?.fontSize || fontSize;\n\n\treturn (\n\t\t<FontSizePicker\n\t\t\tonChange={ onChange }\n\t\t\tvalue={ fontSizeValue }\n\t\t\twithReset={ false }\n\t\t\tsize=\"__unstable-large\"\n\t\t\t__nextHasNoMarginBottom\n\t\t/>\n\t);\n}\n\n/**\n * Checks if there is a current value set for the font size block support.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a font size value set.\n */\nexport function hasFontSizeValue( props ) {\n\tconst { fontSize, style } = props.attributes;\n\treturn !! fontSize || !! style?.typography?.fontSize;\n}\n\n/**\n * Resets the font size block support attribute. This can be used when\n * disabling the font size support controls for a block via a progressive\n * discovery panel.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetFontSize( { attributes = {}, setAttributes } ) {\n\tconst { style } = attributes;\n\n\tsetAttributes( {\n\t\tfontSize: undefined,\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\ttypography: {\n\t\t\t\t...style?.typography,\n\t\t\t\tfontSize: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if font-size settings have been disabled.\n *\n * @param {string} name The name of the block.\n * @return {boolean} Whether setting is disabled.\n */\nexport function useIsFontSizeDisabled( { name: blockName } = {} ) {\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\tconst hasFontSizes = !! fontSizes?.length;\n\n\treturn (\n\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) || ! hasFontSizes\n\t);\n}\n\n/**\n * Add inline styles for font sizes.\n * Ideally, this is not needed and themes load the font-size classes on the\n * editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withFontSizeInlineStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\t\tconst {\n\t\t\tname: blockName,\n\t\t\tattributes: { fontSize, style },\n\t\t\twrapperProps,\n\t\t} = props;\n\n\t\t// Only add inline styles if the block supports font sizes,\n\t\t// doesn't skip serialization of font sizes,\n\t\t// doesn't already have an inline font size,\n\t\t// and does have a class to extract the font size from.\n\t\tif (\n\t\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) ||\n\t\t\tshouldSkipSerialization(\n\t\t\t\tblockName,\n\t\t\t\tTYPOGRAPHY_SUPPORT_KEY,\n\t\t\t\t'fontSize'\n\t\t\t) ||\n\t\t\t! fontSize ||\n\t\t\tstyle?.typography?.fontSize\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst fontSizeValue = getFontSize(\n\t\t\tfontSizes,\n\t\t\tfontSize,\n\t\t\tstyle?.typography?.fontSize\n\t\t).size;\n\n\t\tconst newProps = {\n\t\t\t...props,\n\t\t\twrapperProps: {\n\t\t\t\t...wrapperProps,\n\t\t\t\tstyle: {\n\t\t\t\t\tfontSize: fontSizeValue,\n\t\t\t\t\t...wrapperProps?.style,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...newProps } />;\n\t},\n\t'withFontSizeInlineStyles'\n);\n\nconst MIGRATION_PATHS = {\n\tfontSize: [ [ 'fontSize' ], [ 'style', 'typography', 'fontSize' ] ],\n};\n\nexport function addTransforms( result, source, index, results ) {\n\tconst destinationBlockType = result.name;\n\tconst activeSupports = {\n\t\tfontSize: hasBlockSupport(\n\t\t\tdestinationBlockType,\n\t\t\tFONT_SIZE_SUPPORT_KEY\n\t\t),\n\t};\n\treturn transformStyles(\n\t\tactiveSupports,\n\t\tMIGRATION_PATHS,\n\t\tresult,\n\t\tsource,\n\t\tindex,\n\t\tresults\n\t);\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/font/addAttribute',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/font/addSaveProps',\n\taddSaveProps\n);\n\naddFilter( 'blocks.registerBlockType', 'core/font/addEditProps', addEditProps );\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/font-size/with-font-size-inline-styles',\n\twithFontSizeInlineStyles\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/font-size/addTransforms',\n\taddTransforms\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/font-size.js"],"names":["FONT_SIZE_SUPPORT_KEY","addAttributes","settings","attributes","fontSize","Object","assign","type","addSaveProps","props","blockType","TYPOGRAPHY_SUPPORT_KEY","classes","TokenList","className","add","newClassName","value","undefined","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","FontSizeEdit","style","setAttributes","fontSizes","onChange","fontSizeSlug","slug","typography","fontSizeObject","fontSizeValue","size","hasFontSizeValue","resetFontSize","useIsFontSizeDisabled","name","blockName","hasFontSizes","length","withFontSizeInlineStyles","BlockListBlock","wrapperProps","newProps","MIGRATION_PATHS","addTransforms","result","source","index","results","destinationBlockType","activeSupports","addEditPropsForFluidCustomFontSizes","isFluidTypographyEnabled","blockEditorStore","getSettings","__experimentalFeatures","fluid","newFontSize"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport TokenList from '@wordpress/token-list';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { select } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetFontSize,\n\tgetFontSizeClass,\n\tgetFontSizeObjectByValue,\n\tFontSizePicker,\n\tgetComputedFluidTypographyValue,\n} from '../components/font-sizes';\nimport { TYPOGRAPHY_SUPPORT_KEY } from './typography';\nimport {\n\tcleanEmptyObject,\n\ttransformStyles,\n\tshouldSkipSerialization,\n} from './utils';\nimport useSetting from '../components/use-setting';\nimport { store as blockEditorStore } from '../store';\n\nexport const FONT_SIZE_SUPPORT_KEY = 'typography.fontSize';\n\n/**\n * Filters registered block settings, extending attributes to include\n * `fontSize` and `fontWeight` attributes.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify a default value if needed.\n\tif ( ! settings.attributes.fontSize ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tfontSize: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override props assigned to save component to inject font size.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nfunction addSaveProps( props, blockType, attributes ) {\n\tif ( ! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn props;\n\t}\n\n\tif (\n\t\tshouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )\n\t) {\n\t\treturn props;\n\t}\n\n\t// Use TokenList to dedupe classes.\n\tconst classes = new TokenList( props.className );\n\tclasses.add( getFontSizeClass( attributes.fontSize ) );\n\tconst newClassName = classes.value;\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to expand the block edit wrapper\n * by applying the desired styles and classnames.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addEditProps( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\n/**\n * Inspector control panel containing the font size related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Font size edit element.\n */\nexport function FontSizeEdit( props ) {\n\tconst {\n\t\tattributes: { fontSize, style },\n\t\tsetAttributes,\n\t} = props;\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\n\tconst onChange = ( value ) => {\n\t\tconst fontSizeSlug = getFontSizeObjectByValue( fontSizes, value ).slug;\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t...style,\n\t\t\t\ttypography: {\n\t\t\t\t\t...style?.typography,\n\t\t\t\t\tfontSize: fontSizeSlug ? undefined : value,\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tfontSize: fontSizeSlug,\n\t\t} );\n\t};\n\n\tconst fontSizeObject = getFontSize(\n\t\tfontSizes,\n\t\tfontSize,\n\t\tstyle?.typography?.fontSize\n\t);\n\n\tconst fontSizeValue =\n\t\tfontSizeObject?.size || style?.typography?.fontSize || fontSize;\n\n\treturn (\n\t\t<FontSizePicker\n\t\t\tonChange={ onChange }\n\t\t\tvalue={ fontSizeValue }\n\t\t\twithReset={ false }\n\t\t\twithSlider\n\t\t\tsize=\"__unstable-large\"\n\t\t\t__nextHasNoMarginBottom\n\t\t/>\n\t);\n}\n\n/**\n * Checks if there is a current value set for the font size block support.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a font size value set.\n */\nexport function hasFontSizeValue( props ) {\n\tconst { fontSize, style } = props.attributes;\n\treturn !! fontSize || !! style?.typography?.fontSize;\n}\n\n/**\n * Resets the font size block support attribute. This can be used when\n * disabling the font size support controls for a block via a progressive\n * discovery panel.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetFontSize( { attributes = {}, setAttributes } ) {\n\tconst { style } = attributes;\n\n\tsetAttributes( {\n\t\tfontSize: undefined,\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\ttypography: {\n\t\t\t\t...style?.typography,\n\t\t\t\tfontSize: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if font-size settings have been disabled.\n *\n * @param {string} name The name of the block.\n * @return {boolean} Whether setting is disabled.\n */\nexport function useIsFontSizeDisabled( { name: blockName } = {} ) {\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\tconst hasFontSizes = !! fontSizes?.length;\n\n\treturn (\n\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) || ! hasFontSizes\n\t);\n}\n\n/**\n * Add inline styles for font sizes.\n * Ideally, this is not needed and themes load the font-size classes on the\n * editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withFontSizeInlineStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\t\tconst {\n\t\t\tname: blockName,\n\t\t\tattributes: { fontSize, style },\n\t\t\twrapperProps,\n\t\t} = props;\n\n\t\t// Only add inline styles if the block supports font sizes,\n\t\t// doesn't skip serialization of font sizes,\n\t\t// doesn't already have an inline font size,\n\t\t// and does have a class to extract the font size from.\n\t\tif (\n\t\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) ||\n\t\t\tshouldSkipSerialization(\n\t\t\t\tblockName,\n\t\t\t\tTYPOGRAPHY_SUPPORT_KEY,\n\t\t\t\t'fontSize'\n\t\t\t) ||\n\t\t\t! fontSize ||\n\t\t\tstyle?.typography?.fontSize\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst fontSizeValue = getFontSize(\n\t\t\tfontSizes,\n\t\t\tfontSize,\n\t\t\tstyle?.typography?.fontSize\n\t\t).size;\n\n\t\tconst newProps = {\n\t\t\t...props,\n\t\t\twrapperProps: {\n\t\t\t\t...wrapperProps,\n\t\t\t\tstyle: {\n\t\t\t\t\tfontSize: fontSizeValue,\n\t\t\t\t\t...wrapperProps?.style,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...newProps } />;\n\t},\n\t'withFontSizeInlineStyles'\n);\n\nconst MIGRATION_PATHS = {\n\tfontSize: [ [ 'fontSize' ], [ 'style', 'typography', 'fontSize' ] ],\n};\n\nexport function addTransforms( result, source, index, results ) {\n\tconst destinationBlockType = result.name;\n\tconst activeSupports = {\n\t\tfontSize: hasBlockSupport(\n\t\t\tdestinationBlockType,\n\t\t\tFONT_SIZE_SUPPORT_KEY\n\t\t),\n\t};\n\treturn transformStyles(\n\t\tactiveSupports,\n\t\tMIGRATION_PATHS,\n\t\tresult,\n\t\tsource,\n\t\tindex,\n\t\tresults\n\t);\n}\n\n/**\n * Allow custom font sizes to appear fluid when fluid typography is enabled at\n * the theme level.\n *\n * Adds a custom getEditWrapperProps() callback to all block types that support\n * font sizes. Then, if fluid typography is enabled, this callback will swap any\n * custom font size in style.fontSize with a fluid font size (i.e. one that uses\n * clamp()).\n *\n * It's important that this hook runs after 'core/style/addEditProps' sets\n * style.fontSize as otherwise fontSize will be overwritten.\n *\n * @param {Object} blockType Block settings object.\n */\nfunction addEditPropsForFluidCustomFontSizes( blockType ) {\n\tif (\n\t\t! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ||\n\t\tshouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )\n\t) {\n\t\treturn blockType;\n\t}\n\n\tconst existingGetEditWrapperProps = blockType.getEditWrapperProps;\n\n\tblockType.getEditWrapperProps = ( attributes ) => {\n\t\tconst wrapperProps = existingGetEditWrapperProps\n\t\t\t? existingGetEditWrapperProps( attributes )\n\t\t\t: {};\n\n\t\tconst fontSize = wrapperProps?.style?.fontSize;\n\n\t\t// TODO: This sucks! We should be using useSetting( 'typography.fluid' )\n\t\t// or even useSelect( blockEditorStore ). We can't do either here\n\t\t// because getEditWrapperProps is a plain JavaScript function called by\n\t\t// BlockListBlock and not a React component rendered within\n\t\t// BlockListContext.Provider. If we set fontSize using editor.\n\t\t// BlockListBlock instead of using getEditWrapperProps then the value is\n\t\t// clobbered when the core/style/addEditProps filter runs.\n\t\tconst isFluidTypographyEnabled =\n\t\t\t!! select( blockEditorStore ).getSettings().__experimentalFeatures\n\t\t\t\t?.typography?.fluid;\n\n\t\tconst newFontSize =\n\t\t\tfontSize && isFluidTypographyEnabled\n\t\t\t\t? getComputedFluidTypographyValue( { fontSize } )\n\t\t\t\t: null;\n\n\t\tif ( newFontSize === null ) {\n\t\t\treturn wrapperProps;\n\t\t}\n\n\t\treturn {\n\t\t\t...wrapperProps,\n\t\t\tstyle: {\n\t\t\t\t...wrapperProps?.style,\n\t\t\t\tfontSize: newFontSize,\n\t\t\t},\n\t\t};\n\t};\n\n\treturn blockType;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/font/addAttribute',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/font/addSaveProps',\n\taddSaveProps\n);\n\naddFilter( 'blocks.registerBlockType', 'core/font/addEditProps', addEditProps );\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/font-size/with-font-size-inline-styles',\n\twithFontSizeInlineStyles\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/font-size/addTransforms',\n\taddTransforms\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/font-size/addEditPropsForFluidCustomFontSizes',\n\taddEditPropsForFluidCustomFontSizes,\n\t// Run after 'core/style/addEditProps' so that the style object has already\n\t// been translated into inline CSS.\n\t11\n);\n"]}
@@ -347,8 +347,9 @@ const withLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockListBlock
347
347
  const usedLayout = layout !== null && layout !== void 0 && layout.inherit || layout !== null && layout !== void 0 && layout.contentSize || layout !== null && layout !== void 0 && layout.wideSize ? { ...layout,
348
348
  type: 'constrained'
349
349
  } : layout || defaultBlockLayout || {};
350
- const layoutClasses = hasLayoutBlockSupport ? useLayoutClasses(block) : null;
351
- const selector = `.${(0, _blocks.getBlockDefaultClassName)(name)}.wp-container-${id}`;
350
+ const layoutClasses = hasLayoutBlockSupport ? useLayoutClasses(block) : null; // Higher specificity to override defaults from theme.json.
351
+
352
+ const selector = `.wp-container-${id}.wp-container-${id}`;
352
353
  const blockGapSupport = (0, _useSetting.default)('spacing.blockGap');
353
354
  const hasBlockGapSupport = blockGapSupport !== null; // Get CSS string for the current layout type.
354
355
  // The CSS and `style` element is only output if it is not empty.
@@ -381,7 +382,7 @@ const withLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockListBlock
381
382
  layout: usedLayout,
382
383
  style: attributes === null || attributes === void 0 ? void 0 : attributes.style
383
384
  }), element), (0, _element.createElement)(BlockListBlock, (0, _extends2.default)({}, props, {
384
- className: className
385
+ __unstableLayoutClassNames: className
385
386
  })));
386
387
  });
387
388
  exports.withLayoutStyles = withLayoutStyles;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/layout.js"],"names":["layoutBlockSupportKey","useLayoutClasses","block","rootPaddingAlignment","select","getSettings","blockEditorStore","__experimentalFeatures","useRootPaddingAwareAlignments","globalLayoutSettings","attributes","name","layout","default","defaultBlockLayout","usedLayout","inherit","contentSize","wideSize","type","layoutClassnames","definitions","className","push","orientation","justifyContent","flexWrap","useLayoutStyles","selector","style","fullLayoutType","blockGapSupport","hasBlockGapSupport","css","getLayoutStyle","blockName","layoutDefinitions","LayoutPanel","setAttributes","defaultThemeLayout","themeSupportsLayout","supportsLayout","layoutBlockSupport","allowSwitching","allowEditing","allowInheriting","showInheritToggle","layoutType","constrainedType","displayControlsForLegacyLayouts","hasContentSizeOrLegacySettings","onChangeType","newType","onChangeLayout","newLayout","LayoutTypeSwitcher","onChange","map","label","addAttribute","settings","withInspectorControls","BlockEdit","props","supportLayout","withLayoutStyles","BlockListBlock","hasLayoutBlockSupport","disableLayoutStyles","shouldRenderLayoutStyles","id","element","BlockList","__unstableElementContext","layoutClasses"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { kebabCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockDefaultClassName,\n\tgetBlockSupport,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tButton,\n\tButtonGroup,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext, createPortal } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport useSetting from '../components/use-setting';\nimport { LayoutStyle } from '../components/block-list/layout';\nimport BlockList from '../components/block-list';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\n\nconst layoutBlockSupportKey = '__experimentalLayout';\n\n/**\n * Generates the utility classnames for the given block's layout attributes.\n *\n * @param { Object } block Block object.\n *\n * @return { Array } Array of CSS classname strings.\n */\nexport function useLayoutClasses( block = {} ) {\n\tconst rootPaddingAlignment = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().__experimentalFeatures\n\t\t\t?.useRootPaddingAwareAlignments;\n\t}, [] );\n\tconst globalLayoutSettings = useSetting( 'layout' ) || {};\n\n\tconst { attributes = {}, name } = block;\n\tconst { layout } = attributes;\n\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst layoutClassnames = [];\n\n\tif (\n\t\tglobalLayoutSettings?.definitions?.[ usedLayout?.type || 'default' ]\n\t\t\t?.className\n\t) {\n\t\tlayoutClassnames.push(\n\t\t\tglobalLayoutSettings?.definitions?.[ usedLayout?.type || 'default' ]\n\t\t\t\t?.className\n\t\t);\n\t}\n\n\tif (\n\t\t( usedLayout?.inherit ||\n\t\t\tusedLayout?.contentSize ||\n\t\t\tusedLayout?.type === 'constrained' ) &&\n\t\trootPaddingAlignment\n\t) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( usedLayout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( usedLayout.orientation ) }` );\n\t}\n\n\tif ( usedLayout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tusedLayout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif ( usedLayout?.flexWrap && usedLayout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\n}\n\n/**\n * Generates a CSS rule with the given block's layout styles.\n *\n * @param { Object } block Block object.\n * @param { string } selector A selector to use in generating the CSS rule.\n *\n * @return { string } CSS rule.\n */\nexport function useLayoutStyles( block = {}, selector ) {\n\tconst { attributes = {}, name } = block;\n\tconst { layout = {}, style = {} } = attributes;\n\t// Update type for blocks using legacy layouts.\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || {};\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst globalLayoutSettings = useSetting( 'layout' ) || {};\n\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\tconst css = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName: name,\n\t\tselector,\n\t\tlayout,\n\t\tlayoutDefinitions: globalLayoutSettings?.definitions,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n\treturn css;\n}\n\nfunction LayoutPanel( { setAttributes, attributes, name: blockName } ) {\n\tconst { layout } = attributes;\n\tconst defaultThemeLayout = useSetting( 'layout' );\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().supportsLayout;\n\t}, [] );\n\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = layoutBlockSupport;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t// Only show the inherit toggle if it's supported,\n\t// a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),\n\t// and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t!! defaultThemeLayout &&\n\t\t( ! layout?.type ||\n\t\t\tlayout?.type === 'default' ||\n\t\t\tlayout?.type === 'constrained' ||\n\t\t\tlayout?.inherit )\n\t);\n\n\tconst usedLayout = layout || defaultBlockLayout || {};\n\tconst {\n\t\tinherit = false,\n\t\ttype = 'default',\n\t\tcontentSize = null,\n\t} = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow` or\n\t * `constrained` layouts and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif (\n\t\t( type === 'default' || type === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( type );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\n\tconst onChangeType = ( newType ) =>\n\t\tsetAttributes( { layout: { type: newType } } );\n\tconst onChangeLayout = ( newLayout ) =>\n\t\tsetAttributes( { layout: newLayout } );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Layout' ) }>\n\t\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tclassName=\"block-editor-hooks__toggle-control\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutType?.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t'constrained' ||\n\t\t\t\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use content width with options for full and wide widths.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container. Toggle to constrain.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! inherit && allowSwitching && (\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ ! inherit && layoutType && (\n\t\t\t\t<layoutType.toolBarControls\n\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ButtonGroup>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tisPressed={ type === name }\n\t\t\t\t\t\tonClick={ () => onChange( name ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ButtonGroup>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include `layout`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( 'type' in ( settings.attributes?.layout ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, layoutBlockSupportKey ) ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include layout controls\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst supportLayout = hasBlockSupport(\n\t\t\tblockName,\n\t\t\tlayoutBlockSupportKey\n\t\t);\n\n\t\treturn [\n\t\t\tsupportLayout && <LayoutPanel key=\"layout\" { ...props } />,\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes, block } = props;\n\t\tconst hasLayoutBlockSupport = hasBlockSupport(\n\t\t\tname,\n\t\t\tlayoutBlockSupportKey\n\t\t);\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderLayoutStyles =\n\t\t\thasLayoutBlockSupport && ! disableLayoutStyles;\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst defaultThemeLayout = useSetting( 'layout' ) || {};\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\t\tconst { layout } = attributes;\n\t\tconst { default: defaultBlockLayout } =\n\t\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\t\tconst usedLayout =\n\t\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t\t: layout || defaultBlockLayout || {};\n\t\tconst layoutClasses = hasLayoutBlockSupport\n\t\t\t? useLayoutClasses( block )\n\t\t\t: null;\n\t\tconst selector = `.${ getBlockDefaultClassName(\n\t\t\tname\n\t\t) }.wp-container-${ id }`;\n\t\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\t\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t\t// Get CSS string for the current layout type.\n\t\t// The CSS and `style` element is only output if it is not empty.\n\t\tlet css;\n\t\tif ( shouldRenderLayoutStyles ) {\n\t\t\tconst fullLayoutType = getLayoutType(\n\t\t\t\tusedLayout?.type || 'default'\n\t\t\t);\n\t\t\tcss = fullLayoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName: name,\n\t\t\t\tselector,\n\t\t\t\tlayout: usedLayout,\n\t\t\t\tlayoutDefinitions: defaultThemeLayout?.definitions,\n\t\t\t\tstyle: attributes?.style,\n\t\t\t\thasBlockGapSupport,\n\t\t\t} );\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\t\tconst className = classnames(\n\t\t\tprops?.className,\n\t\t\t{\n\t\t\t\t[ `wp-container-${ id }` ]: shouldRenderLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t},\n\t\t\tlayoutClasses\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRenderLayoutStyles &&\n\t\t\t\t\telement &&\n\t\t\t\t\t!! css &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\tblockName={ name }\n\t\t\t\t\t\t\tselector={ selector }\n\t\t\t\t\t\t\tcss={ css }\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tstyle={ attributes?.style }\n\t\t\t\t\t\t/>,\n\t\t\t\t\t\telement\n\t\t\t\t\t) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t}\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/layout/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-layout-styles',\n\twithLayoutStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/layout/with-inspector-controls',\n\twithInspectorControls\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/layout.js"],"names":["layoutBlockSupportKey","useLayoutClasses","block","rootPaddingAlignment","select","getSettings","blockEditorStore","__experimentalFeatures","useRootPaddingAwareAlignments","globalLayoutSettings","attributes","name","layout","default","defaultBlockLayout","usedLayout","inherit","contentSize","wideSize","type","layoutClassnames","definitions","className","push","orientation","justifyContent","flexWrap","useLayoutStyles","selector","style","fullLayoutType","blockGapSupport","hasBlockGapSupport","css","getLayoutStyle","blockName","layoutDefinitions","LayoutPanel","setAttributes","defaultThemeLayout","themeSupportsLayout","supportsLayout","layoutBlockSupport","allowSwitching","allowEditing","allowInheriting","showInheritToggle","layoutType","constrainedType","displayControlsForLegacyLayouts","hasContentSizeOrLegacySettings","onChangeType","newType","onChangeLayout","newLayout","LayoutTypeSwitcher","onChange","map","label","addAttribute","settings","withInspectorControls","BlockEdit","props","supportLayout","withLayoutStyles","BlockListBlock","hasLayoutBlockSupport","disableLayoutStyles","shouldRenderLayoutStyles","id","element","BlockList","__unstableElementContext","layoutClasses"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { kebabCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tButton,\n\tButtonGroup,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext, createPortal } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport useSetting from '../components/use-setting';\nimport { LayoutStyle } from '../components/block-list/layout';\nimport BlockList from '../components/block-list';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\n\nconst layoutBlockSupportKey = '__experimentalLayout';\n\n/**\n * Generates the utility classnames for the given block's layout attributes.\n *\n * @param { Object } block Block object.\n *\n * @return { Array } Array of CSS classname strings.\n */\nexport function useLayoutClasses( block = {} ) {\n\tconst rootPaddingAlignment = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().__experimentalFeatures\n\t\t\t?.useRootPaddingAwareAlignments;\n\t}, [] );\n\tconst globalLayoutSettings = useSetting( 'layout' ) || {};\n\n\tconst { attributes = {}, name } = block;\n\tconst { layout } = attributes;\n\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst layoutClassnames = [];\n\n\tif (\n\t\tglobalLayoutSettings?.definitions?.[ usedLayout?.type || 'default' ]\n\t\t\t?.className\n\t) {\n\t\tlayoutClassnames.push(\n\t\t\tglobalLayoutSettings?.definitions?.[ usedLayout?.type || 'default' ]\n\t\t\t\t?.className\n\t\t);\n\t}\n\n\tif (\n\t\t( usedLayout?.inherit ||\n\t\t\tusedLayout?.contentSize ||\n\t\t\tusedLayout?.type === 'constrained' ) &&\n\t\trootPaddingAlignment\n\t) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( usedLayout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( usedLayout.orientation ) }` );\n\t}\n\n\tif ( usedLayout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tusedLayout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif ( usedLayout?.flexWrap && usedLayout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\n}\n\n/**\n * Generates a CSS rule with the given block's layout styles.\n *\n * @param { Object } block Block object.\n * @param { string } selector A selector to use in generating the CSS rule.\n *\n * @return { string } CSS rule.\n */\nexport function useLayoutStyles( block = {}, selector ) {\n\tconst { attributes = {}, name } = block;\n\tconst { layout = {}, style = {} } = attributes;\n\t// Update type for blocks using legacy layouts.\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || {};\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst globalLayoutSettings = useSetting( 'layout' ) || {};\n\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\tconst css = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName: name,\n\t\tselector,\n\t\tlayout,\n\t\tlayoutDefinitions: globalLayoutSettings?.definitions,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n\treturn css;\n}\n\nfunction LayoutPanel( { setAttributes, attributes, name: blockName } ) {\n\tconst { layout } = attributes;\n\tconst defaultThemeLayout = useSetting( 'layout' );\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().supportsLayout;\n\t}, [] );\n\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = layoutBlockSupport;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t// Only show the inherit toggle if it's supported,\n\t// a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),\n\t// and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t!! defaultThemeLayout &&\n\t\t( ! layout?.type ||\n\t\t\tlayout?.type === 'default' ||\n\t\t\tlayout?.type === 'constrained' ||\n\t\t\tlayout?.inherit )\n\t);\n\n\tconst usedLayout = layout || defaultBlockLayout || {};\n\tconst {\n\t\tinherit = false,\n\t\ttype = 'default',\n\t\tcontentSize = null,\n\t} = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow` or\n\t * `constrained` layouts and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif (\n\t\t( type === 'default' || type === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( type );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\n\tconst onChangeType = ( newType ) =>\n\t\tsetAttributes( { layout: { type: newType } } );\n\tconst onChangeLayout = ( newLayout ) =>\n\t\tsetAttributes( { layout: newLayout } );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Layout' ) }>\n\t\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tclassName=\"block-editor-hooks__toggle-control\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutType?.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t'constrained' ||\n\t\t\t\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use content width with options for full and wide widths.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container. Toggle to constrain.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! inherit && allowSwitching && (\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ ! inherit && layoutType && (\n\t\t\t\t<layoutType.toolBarControls\n\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ButtonGroup>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tisPressed={ type === name }\n\t\t\t\t\t\tonClick={ () => onChange( name ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ButtonGroup>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include `layout`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( 'type' in ( settings.attributes?.layout ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, layoutBlockSupportKey ) ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include layout controls\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst supportLayout = hasBlockSupport(\n\t\t\tblockName,\n\t\t\tlayoutBlockSupportKey\n\t\t);\n\n\t\treturn [\n\t\t\tsupportLayout && <LayoutPanel key=\"layout\" { ...props } />,\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes, block } = props;\n\t\tconst hasLayoutBlockSupport = hasBlockSupport(\n\t\t\tname,\n\t\t\tlayoutBlockSupportKey\n\t\t);\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderLayoutStyles =\n\t\t\thasLayoutBlockSupport && ! disableLayoutStyles;\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst defaultThemeLayout = useSetting( 'layout' ) || {};\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\t\tconst { layout } = attributes;\n\t\tconst { default: defaultBlockLayout } =\n\t\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\t\tconst usedLayout =\n\t\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t\t: layout || defaultBlockLayout || {};\n\t\tconst layoutClasses = hasLayoutBlockSupport\n\t\t\t? useLayoutClasses( block )\n\t\t\t: null;\n\t\t// Higher specificity to override defaults from theme.json.\n\t\tconst selector = `.wp-container-${ id }.wp-container-${ id }`;\n\t\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\t\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t\t// Get CSS string for the current layout type.\n\t\t// The CSS and `style` element is only output if it is not empty.\n\t\tlet css;\n\t\tif ( shouldRenderLayoutStyles ) {\n\t\t\tconst fullLayoutType = getLayoutType(\n\t\t\t\tusedLayout?.type || 'default'\n\t\t\t);\n\t\t\tcss = fullLayoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName: name,\n\t\t\t\tselector,\n\t\t\t\tlayout: usedLayout,\n\t\t\t\tlayoutDefinitions: defaultThemeLayout?.definitions,\n\t\t\t\tstyle: attributes?.style,\n\t\t\t\thasBlockGapSupport,\n\t\t\t} );\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\t\tconst className = classnames(\n\t\t\tprops?.className,\n\t\t\t{\n\t\t\t\t[ `wp-container-${ id }` ]: shouldRenderLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t},\n\t\t\tlayoutClasses\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRenderLayoutStyles &&\n\t\t\t\t\telement &&\n\t\t\t\t\t!! css &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\tblockName={ name }\n\t\t\t\t\t\t\tselector={ selector }\n\t\t\t\t\t\t\tcss={ css }\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tstyle={ attributes?.style }\n\t\t\t\t\t\t/>,\n\t\t\t\t\t\telement\n\t\t\t\t\t) }\n\t\t\t\t<BlockListBlock\n\t\t\t\t\t{ ...props }\n\t\t\t\t\t__unstableLayoutClassNames={ className }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t}\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/layout/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-layout-styles',\n\twithLayoutStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/layout/with-inspector-controls',\n\twithInspectorControls\n);\n"]}
@@ -126,7 +126,9 @@ function MarginEdit(props) {
126
126
  attributes: {
127
127
  style
128
128
  },
129
- setAttributes
129
+ setAttributes,
130
+ onMouseOver,
131
+ onMouseOut
130
132
  } = props;
131
133
  const spacingSizes = (0, _useSetting.default)('spacing.spacingSizes');
132
134
  const units = (0, _components.__experimentalUseCustomUnits)({
@@ -158,7 +160,9 @@ function MarginEdit(props) {
158
160
  sides: sides,
159
161
  units: units,
160
162
  allowReset: false,
161
- splitOnAxis: splitOnAxis
163
+ splitOnAxis: splitOnAxis,
164
+ onMouseOver: onMouseOver,
165
+ onMouseOut: onMouseOut
162
166
  }), (spacingSizes === null || spacingSizes === void 0 ? void 0 : spacingSizes.length) > 0 && (0, _element.createElement)(_spacingSizesControl.default, {
163
167
  values: style === null || style === void 0 ? void 0 : (_style$spacing2 = style.spacing) === null || _style$spacing2 === void 0 ? void 0 : _style$spacing2.margin,
164
168
  onChange: onChange,
@@ -166,7 +170,9 @@ function MarginEdit(props) {
166
170
  sides: sides,
167
171
  units: units,
168
172
  allowReset: false,
169
- splitOnAxis: false
173
+ splitOnAxis: false,
174
+ onMouseOver: onMouseOver,
175
+ onMouseOut: onMouseOut
170
176
  })),
171
177
  native: null
172
178
  });
@@ -177,24 +183,24 @@ function MarginVisualizer(_ref2) {
177
183
 
178
184
  let {
179
185
  clientId,
180
- attributes
186
+ attributes,
187
+ forceShow
181
188
  } = _ref2;
182
189
  const margin = attributes === null || attributes === void 0 ? void 0 : (_attributes$style = attributes.style) === null || _attributes$style === void 0 ? void 0 : (_attributes$style$spa = _attributes$style.spacing) === null || _attributes$style$spa === void 0 ? void 0 : _attributes$style$spa.margin;
183
- const spacingSizes = (0, _useSetting.default)('spacing.spacingSizes');
184
190
  const style = (0, _element.useMemo)(() => {
185
- const marginTop = margin !== null && margin !== void 0 && margin.top ? (0, _utils2.getCustomValueFromPreset)(margin === null || margin === void 0 ? void 0 : margin.top, spacingSizes) : 0;
186
- const marginRight = margin !== null && margin !== void 0 && margin.right ? (0, _utils2.getCustomValueFromPreset)(margin === null || margin === void 0 ? void 0 : margin.right, spacingSizes) : 0;
187
- const marginBottom = margin !== null && margin !== void 0 && margin.bottom ? (0, _utils2.getCustomValueFromPreset)(margin === null || margin === void 0 ? void 0 : margin.bottom, spacingSizes) : 0;
188
- const marginLeft = margin !== null && margin !== void 0 && margin.left ? (0, _utils2.getCustomValueFromPreset)(margin === null || margin === void 0 ? void 0 : margin.left, spacingSizes) : 0;
191
+ const marginTop = margin !== null && margin !== void 0 && margin.top ? (0, _utils2.getSpacingPresetCssVar)(margin === null || margin === void 0 ? void 0 : margin.top) : 0;
192
+ const marginRight = margin !== null && margin !== void 0 && margin.right ? (0, _utils2.getSpacingPresetCssVar)(margin === null || margin === void 0 ? void 0 : margin.right) : 0;
193
+ const marginBottom = margin !== null && margin !== void 0 && margin.bottom ? (0, _utils2.getSpacingPresetCssVar)(margin === null || margin === void 0 ? void 0 : margin.bottom) : 0;
194
+ const marginLeft = margin !== null && margin !== void 0 && margin.left ? (0, _utils2.getSpacingPresetCssVar)(margin === null || margin === void 0 ? void 0 : margin.left) : 0;
189
195
  return {
190
196
  borderTopWidth: marginTop,
191
197
  borderRightWidth: marginRight,
192
198
  borderBottomWidth: marginBottom,
193
199
  borderLeftWidth: marginLeft,
194
- top: marginTop !== 0 ? `-${marginTop}` : 0,
195
- right: marginRight !== 0 ? `-${marginRight}` : 0,
196
- bottom: marginBottom !== 0 ? `-${marginBottom}` : 0,
197
- left: marginLeft !== 0 ? `-${marginLeft}` : 0
200
+ top: marginTop ? `calc(${marginTop} * -1)` : 0,
201
+ right: marginRight ? `calc(${marginRight} * -1)` : 0,
202
+ bottom: marginBottom ? `calc(${marginBottom} * -1)` : 0,
203
+ left: marginLeft ? `calc(${marginLeft} * -1)` : 0
198
204
  };
199
205
  }, [margin]);
200
206
  const [isActive, setIsActive] = (0, _element.useState)(false);
@@ -208,7 +214,7 @@ function MarginVisualizer(_ref2) {
208
214
  };
209
215
 
210
216
  (0, _element.useEffect)(() => {
211
- if (!(0, _isShallowEqual.default)(margin, valueRef.current)) {
217
+ if (!(0, _isShallowEqual.default)(margin, valueRef.current) && !forceShow) {
212
218
  setIsActive(true);
213
219
  valueRef.current = margin;
214
220
  clearTimer();
@@ -218,16 +224,17 @@ function MarginVisualizer(_ref2) {
218
224
  }
219
225
 
220
226
  return () => clearTimer();
221
- }, [margin]);
227
+ }, [margin, forceShow]);
222
228
 
223
- if (!isActive) {
229
+ if (!isActive && !forceShow) {
224
230
  return null;
225
231
  }
226
232
 
227
233
  return (0, _element.createElement)(_blockPopover.default, {
228
234
  clientId: clientId,
229
235
  __unstableCoverTarget: true,
230
- __unstableRefreshSize: margin
236
+ __unstableRefreshSize: margin,
237
+ shift: false
231
238
  }, (0, _element.createElement)("div", {
232
239
  className: "block-editor__padding-visualizer",
233
240
  style: style
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/margin.js"],"names":["hasMarginSupport","blockType","support","SPACING_SUPPORT_KEY","margin","hasMarginValue","props","attributes","style","spacing","undefined","resetMargin","setAttributes","useIsMarginDisabled","name","blockName","isDisabled","isInvalid","MarginEdit","spacingSizes","units","availableUnits","sides","splitOnAxis","some","side","AXIAL_SIDES","includes","onChange","next","newStyle","Platform","select","web","length","native","MarginVisualizer","clientId","marginTop","top","marginRight","right","marginBottom","bottom","marginLeft","left","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","isActive","setIsActive","valueRef","timeoutRef","clearTimer","current","window","clearTimeout","setTimeout"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tPlatform,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n} from '@wordpress/element';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalBoxControl as BoxControl,\n} from '@wordpress/components';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport useSetting from '../components/use-setting';\nimport {\n\tAXIAL_SIDES,\n\tSPACING_SUPPORT_KEY,\n\tuseCustomSides,\n\tuseIsDimensionsSupportValid,\n} from './dimensions';\nimport { cleanEmptyObject } from './utils';\nimport BlockPopover from '../components/block-popover';\nimport SpacingSizesControl from '../components/spacing-sizes-control';\nimport { getCustomValueFromPreset } from '../components/spacing-sizes-control/utils';\n\n/**\n * Determines if there is margin support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasMarginSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, SPACING_SUPPORT_KEY );\n\treturn !! ( true === support || support?.margin );\n}\n\n/**\n * Checks if there is a current value in the margin block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a margin value set.\n */\nexport function hasMarginValue( props ) {\n\treturn props.attributes.style?.spacing?.margin !== undefined;\n}\n\n/**\n * Resets the margin block support attributes. This can be used when disabling\n * the margin support controls for a block via a `ToolsPanel`.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetMargin( { attributes = {}, setAttributes } ) {\n\tconst { style } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tmargin: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if margin settings have been disabled.\n *\n * @param {string} name The name of the block.\n *\n * @return {boolean} Whether margin setting is disabled.\n */\nexport function useIsMarginDisabled( { name: blockName } = {} ) {\n\tconst isDisabled = ! useSetting( 'spacing.margin' );\n\tconst isInvalid = ! useIsDimensionsSupportValid( blockName, 'margin' );\n\n\treturn ! hasMarginSupport( blockName ) || isDisabled || isInvalid;\n}\n\n/**\n * Inspector control panel containing the margin related configuration\n *\n * @param {Object} props Block props.\n *\n * @return {WPElement} Margin edit element.\n */\nexport function MarginEdit( props ) {\n\tconst {\n\t\tname: blockName,\n\t\tattributes: { style },\n\t\tsetAttributes,\n\t} = props;\n\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\tconst sides = useCustomSides( blockName, 'margin' );\n\tconst splitOnAxis =\n\t\tsides && sides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tif ( useIsMarginDisabled( props ) ) {\n\t\treturn null;\n\t}\n\n\tconst onChange = ( next ) => {\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tmargin: next,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t} );\n\t};\n\n\treturn Platform.select( {\n\t\tweb: (\n\t\t\t<>\n\t\t\t\t{ ( ! spacingSizes || spacingSizes?.length === 0 ) && (\n\t\t\t\t\t<BoxControl\n\t\t\t\t\t\tvalues={ style?.spacing?.margin }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ splitOnAxis }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ spacingSizes?.length > 0 && (\n\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\tvalues={ style?.spacing?.margin }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ false }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t),\n\t\tnative: null,\n\t} );\n}\n\nexport function MarginVisualizer( { clientId, attributes } ) {\n\tconst margin = attributes?.style?.spacing?.margin;\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\n\tconst style = useMemo( () => {\n\t\tconst marginTop = margin?.top\n\t\t\t? getCustomValueFromPreset( margin?.top, spacingSizes )\n\t\t\t: 0;\n\t\tconst marginRight = margin?.right\n\t\t\t? getCustomValueFromPreset( margin?.right, spacingSizes )\n\t\t\t: 0;\n\t\tconst marginBottom = margin?.bottom\n\t\t\t? getCustomValueFromPreset( margin?.bottom, spacingSizes )\n\t\t\t: 0;\n\t\tconst marginLeft = margin?.left\n\t\t\t? getCustomValueFromPreset( margin?.left, spacingSizes )\n\t\t\t: 0;\n\n\t\treturn {\n\t\t\tborderTopWidth: marginTop,\n\t\t\tborderRightWidth: marginRight,\n\t\t\tborderBottomWidth: marginBottom,\n\t\t\tborderLeftWidth: marginLeft,\n\t\t\ttop: marginTop !== 0 ? `-${ marginTop }` : 0,\n\t\t\tright: marginRight !== 0 ? `-${ marginRight }` : 0,\n\t\t\tbottom: marginBottom !== 0 ? `-${ marginBottom }` : 0,\n\t\t\tleft: marginLeft !== 0 ? `-${ marginLeft }` : 0,\n\t\t};\n\t}, [ margin ] );\n\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst valueRef = useRef( margin );\n\tconst timeoutRef = useRef();\n\n\tconst clearTimer = () => {\n\t\tif ( timeoutRef.current ) {\n\t\t\twindow.clearTimeout( timeoutRef.current );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tif ( ! isShallowEqual( margin, valueRef.current ) ) {\n\t\t\tsetIsActive( true );\n\t\t\tvalueRef.current = margin;\n\n\t\t\tclearTimer();\n\n\t\t\ttimeoutRef.current = setTimeout( () => {\n\t\t\t\tsetIsActive( false );\n\t\t\t}, 400 );\n\t\t}\n\n\t\treturn () => clearTimer();\n\t}, [ margin ] );\n\n\tif ( ! isActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPopover\n\t\t\tclientId={ clientId }\n\t\t\t__unstableCoverTarget\n\t\t\t__unstableRefreshSize={ margin }\n\t\t>\n\t\t\t<div className=\"block-editor__padding-visualizer\" style={ style } />\n\t\t</BlockPopover>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/margin.js"],"names":["hasMarginSupport","blockType","support","SPACING_SUPPORT_KEY","margin","hasMarginValue","props","attributes","style","spacing","undefined","resetMargin","setAttributes","useIsMarginDisabled","name","blockName","isDisabled","isInvalid","MarginEdit","onMouseOver","onMouseOut","spacingSizes","units","availableUnits","sides","splitOnAxis","some","side","AXIAL_SIDES","includes","onChange","next","newStyle","Platform","select","web","length","native","MarginVisualizer","clientId","forceShow","marginTop","top","marginRight","right","marginBottom","bottom","marginLeft","left","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","isActive","setIsActive","valueRef","timeoutRef","clearTimer","current","window","clearTimeout","setTimeout"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tPlatform,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n} from '@wordpress/element';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalBoxControl as BoxControl,\n} from '@wordpress/components';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport useSetting from '../components/use-setting';\nimport {\n\tAXIAL_SIDES,\n\tSPACING_SUPPORT_KEY,\n\tuseCustomSides,\n\tuseIsDimensionsSupportValid,\n} from './dimensions';\nimport { cleanEmptyObject } from './utils';\nimport BlockPopover from '../components/block-popover';\nimport SpacingSizesControl from '../components/spacing-sizes-control';\nimport { getSpacingPresetCssVar } from '../components/spacing-sizes-control/utils';\n\n/**\n * Determines if there is margin support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasMarginSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, SPACING_SUPPORT_KEY );\n\treturn !! ( true === support || support?.margin );\n}\n\n/**\n * Checks if there is a current value in the margin block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a margin value set.\n */\nexport function hasMarginValue( props ) {\n\treturn props.attributes.style?.spacing?.margin !== undefined;\n}\n\n/**\n * Resets the margin block support attributes. This can be used when disabling\n * the margin support controls for a block via a `ToolsPanel`.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetMargin( { attributes = {}, setAttributes } ) {\n\tconst { style } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tmargin: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if margin settings have been disabled.\n *\n * @param {string} name The name of the block.\n *\n * @return {boolean} Whether margin setting is disabled.\n */\nexport function useIsMarginDisabled( { name: blockName } = {} ) {\n\tconst isDisabled = ! useSetting( 'spacing.margin' );\n\tconst isInvalid = ! useIsDimensionsSupportValid( blockName, 'margin' );\n\n\treturn ! hasMarginSupport( blockName ) || isDisabled || isInvalid;\n}\n\n/**\n * Inspector control panel containing the margin related configuration\n *\n * @param {Object} props Block props.\n *\n * @return {WPElement} Margin edit element.\n */\nexport function MarginEdit( props ) {\n\tconst {\n\t\tname: blockName,\n\t\tattributes: { style },\n\t\tsetAttributes,\n\t\tonMouseOver,\n\t\tonMouseOut,\n\t} = props;\n\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\tconst sides = useCustomSides( blockName, 'margin' );\n\tconst splitOnAxis =\n\t\tsides && sides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tif ( useIsMarginDisabled( props ) ) {\n\t\treturn null;\n\t}\n\n\tconst onChange = ( next ) => {\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tmargin: next,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t} );\n\t};\n\n\treturn Platform.select( {\n\t\tweb: (\n\t\t\t<>\n\t\t\t\t{ ( ! spacingSizes || spacingSizes?.length === 0 ) && (\n\t\t\t\t\t<BoxControl\n\t\t\t\t\t\tvalues={ style?.spacing?.margin }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ splitOnAxis }\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ spacingSizes?.length > 0 && (\n\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\tvalues={ style?.spacing?.margin }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ false }\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t),\n\t\tnative: null,\n\t} );\n}\n\nexport function MarginVisualizer( { clientId, attributes, forceShow } ) {\n\tconst margin = attributes?.style?.spacing?.margin;\n\n\tconst style = useMemo( () => {\n\t\tconst marginTop = margin?.top\n\t\t\t? getSpacingPresetCssVar( margin?.top )\n\t\t\t: 0;\n\t\tconst marginRight = margin?.right\n\t\t\t? getSpacingPresetCssVar( margin?.right )\n\t\t\t: 0;\n\t\tconst marginBottom = margin?.bottom\n\t\t\t? getSpacingPresetCssVar( margin?.bottom )\n\t\t\t: 0;\n\t\tconst marginLeft = margin?.left\n\t\t\t? getSpacingPresetCssVar( margin?.left )\n\t\t\t: 0;\n\n\t\treturn {\n\t\t\tborderTopWidth: marginTop,\n\t\t\tborderRightWidth: marginRight,\n\t\t\tborderBottomWidth: marginBottom,\n\t\t\tborderLeftWidth: marginLeft,\n\t\t\ttop: marginTop ? `calc(${ marginTop } * -1)` : 0,\n\t\t\tright: marginRight ? `calc(${ marginRight } * -1)` : 0,\n\t\t\tbottom: marginBottom ? `calc(${ marginBottom } * -1)` : 0,\n\t\t\tleft: marginLeft ? `calc(${ marginLeft } * -1)` : 0,\n\t\t};\n\t}, [ margin ] );\n\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst valueRef = useRef( margin );\n\tconst timeoutRef = useRef();\n\n\tconst clearTimer = () => {\n\t\tif ( timeoutRef.current ) {\n\t\t\twindow.clearTimeout( timeoutRef.current );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tif ( ! isShallowEqual( margin, valueRef.current ) && ! forceShow ) {\n\t\t\tsetIsActive( true );\n\t\t\tvalueRef.current = margin;\n\n\t\t\tclearTimer();\n\n\t\t\ttimeoutRef.current = setTimeout( () => {\n\t\t\t\tsetIsActive( false );\n\t\t\t}, 400 );\n\t\t}\n\n\t\treturn () => clearTimer();\n\t}, [ margin, forceShow ] );\n\n\tif ( ! isActive && ! forceShow ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPopover\n\t\t\tclientId={ clientId }\n\t\t\t__unstableCoverTarget\n\t\t\t__unstableRefreshSize={ margin }\n\t\t\tshift={ false }\n\t\t>\n\t\t\t<div className=\"block-editor__padding-visualizer\" style={ style } />\n\t\t</BlockPopover>\n\t);\n}\n"]}