@wordpress/block-editor 9.7.0 → 9.7.1-next.d6164808d3.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 (279) hide show
  1. package/build/components/block-alignment-control/use-available-alignments.js +1 -1
  2. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  3. package/build/components/block-edit-visually-button/index.js +46 -0
  4. package/build/components/block-edit-visually-button/index.js.map +1 -0
  5. package/build/components/block-popover/inbetween.js +4 -2
  6. package/build/components/block-popover/inbetween.js.map +1 -1
  7. package/build/components/block-settings-menu/index.js +2 -6
  8. package/build/components/block-settings-menu/index.js.map +1 -1
  9. package/build/components/block-switcher/index.js +10 -16
  10. package/build/components/block-switcher/index.js.map +1 -1
  11. package/build/components/block-toolbar/index.js +5 -1
  12. package/build/components/block-toolbar/index.js.map +1 -1
  13. package/build/components/border-radius-control/all-input-control.js +31 -3
  14. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  15. package/build/components/border-radius-control/index.js +20 -6
  16. package/build/components/border-radius-control/index.js.map +1 -1
  17. package/build/components/border-radius-control/input-controls.js +21 -6
  18. package/build/components/border-radius-control/input-controls.js.map +1 -1
  19. package/build/components/border-radius-control/utils.js +13 -16
  20. package/build/components/border-radius-control/utils.js.map +1 -1
  21. package/build/components/colors/with-colors.js +17 -4
  22. package/build/components/colors/with-colors.js.map +1 -1
  23. package/build/components/copy-handler/index.js +6 -0
  24. package/build/components/copy-handler/index.js.map +1 -1
  25. package/build/components/date-format-picker/index.js +2 -7
  26. package/build/components/date-format-picker/index.js.map +1 -1
  27. package/build/components/duotone/components.js +5 -5
  28. package/build/components/duotone/components.js.map +1 -1
  29. package/build/components/font-family/index.js +1 -1
  30. package/build/components/font-family/index.js.map +1 -1
  31. package/build/components/font-sizes/with-font-sizes.js +17 -4
  32. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  33. package/build/components/index.js +9 -0
  34. package/build/components/index.js.map +1 -1
  35. package/build/components/inserter/search-items.js +22 -4
  36. package/build/components/inserter/search-items.js.map +1 -1
  37. package/build/components/link-control/link-preview.js +0 -1
  38. package/build/components/link-control/link-preview.js.map +1 -1
  39. package/build/components/list-view/block-select-button.js +5 -2
  40. package/build/components/list-view/block-select-button.js.map +1 -1
  41. package/build/components/list-view/use-block-selection.js +1 -7
  42. package/build/components/list-view/use-block-selection.js.map +1 -1
  43. package/build/components/rich-text/use-enter.js +0 -4
  44. package/build/components/rich-text/use-enter.js.map +1 -1
  45. package/build/components/rich-text/use-format-types.js +8 -11
  46. package/build/components/rich-text/use-format-types.js.map +1 -1
  47. package/build/components/spacing-sizes-control/all-input-control.js +53 -0
  48. package/build/components/spacing-sizes-control/all-input-control.js.map +1 -0
  49. package/build/components/spacing-sizes-control/axial-input-controls.js +69 -0
  50. package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
  51. package/build/components/spacing-sizes-control/index.js +100 -0
  52. package/build/components/spacing-sizes-control/index.js.map +1 -0
  53. package/build/components/spacing-sizes-control/input-controls.js +52 -0
  54. package/build/components/spacing-sizes-control/input-controls.js.map +1 -0
  55. package/build/components/spacing-sizes-control/linked-button.js +38 -0
  56. package/build/components/spacing-sizes-control/linked-button.js.map +1 -0
  57. package/build/components/spacing-sizes-control/spacing-input-control.js +208 -0
  58. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
  59. package/build/components/spacing-sizes-control/utils.js +202 -0
  60. package/build/components/spacing-sizes-control/utils.js.map +1 -0
  61. package/build/components/url-input/index.js +1 -1
  62. package/build/components/url-input/index.js.map +1 -1
  63. package/build/components/writing-flow/use-multi-selection.js +4 -2
  64. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  65. package/build/components/writing-flow/use-selection-observer.js +10 -2
  66. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  67. package/build/hooks/border-radius.js +2 -7
  68. package/build/hooks/border-radius.js.map +1 -1
  69. package/build/hooks/border.js +2 -2
  70. package/build/hooks/border.js.map +1 -1
  71. package/build/hooks/color.js +4 -1
  72. package/build/hooks/color.js.map +1 -1
  73. package/build/hooks/dimensions.js +15 -0
  74. package/build/hooks/dimensions.js.map +1 -1
  75. package/build/hooks/duotone.js +4 -4
  76. package/build/hooks/duotone.js.map +1 -1
  77. package/build/hooks/gap.js +6 -4
  78. package/build/hooks/gap.js.map +1 -1
  79. package/build/hooks/generated-class-name.js +1 -7
  80. package/build/hooks/generated-class-name.js.map +1 -1
  81. package/build/hooks/layout.js +20 -12
  82. package/build/hooks/layout.js.map +1 -1
  83. package/build/hooks/margin.js +28 -12
  84. package/build/hooks/margin.js.map +1 -1
  85. package/build/hooks/padding.js +19 -8
  86. package/build/hooks/padding.js.map +1 -1
  87. package/build/hooks/style.js +4 -50
  88. package/build/hooks/style.js.map +1 -1
  89. package/build/layouts/constrained.js +215 -0
  90. package/build/layouts/constrained.js.map +1 -0
  91. package/build/layouts/flex.js +1 -1
  92. package/build/layouts/flex.js.map +1 -1
  93. package/build/layouts/flow.js +7 -169
  94. package/build/layouts/flow.js.map +1 -1
  95. package/build/layouts/index.js +3 -1
  96. package/build/layouts/index.js.map +1 -1
  97. package/build/layouts/utils.js +43 -0
  98. package/build/layouts/utils.js.map +1 -1
  99. package/build/store/actions.js +25 -3
  100. package/build/store/actions.js.map +1 -1
  101. package/build/store/selectors.js +4 -6
  102. package/build/store/selectors.js.map +1 -1
  103. package/build-module/components/block-alignment-control/use-available-alignments.js +1 -1
  104. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  105. package/build-module/components/block-edit-visually-button/index.js +35 -0
  106. package/build-module/components/block-edit-visually-button/index.js.map +1 -0
  107. package/build-module/components/block-popover/inbetween.js +4 -2
  108. package/build-module/components/block-popover/inbetween.js.map +1 -1
  109. package/build-module/components/block-settings-menu/index.js +3 -6
  110. package/build-module/components/block-settings-menu/index.js.map +1 -1
  111. package/build-module/components/block-switcher/index.js +10 -16
  112. package/build-module/components/block-switcher/index.js.map +1 -1
  113. package/build-module/components/block-toolbar/index.js +4 -1
  114. package/build-module/components/block-toolbar/index.js.map +1 -1
  115. package/build-module/components/border-radius-control/all-input-control.js +32 -4
  116. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  117. package/build-module/components/border-radius-control/index.js +20 -6
  118. package/build-module/components/border-radius-control/index.js.map +1 -1
  119. package/build-module/components/border-radius-control/input-controls.js +22 -7
  120. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  121. package/build-module/components/border-radius-control/utils.js +13 -16
  122. package/build-module/components/border-radius-control/utils.js.map +1 -1
  123. package/build-module/components/colors/with-colors.js +16 -3
  124. package/build-module/components/colors/with-colors.js.map +1 -1
  125. package/build-module/components/copy-handler/index.js +7 -1
  126. package/build-module/components/copy-handler/index.js.map +1 -1
  127. package/build-module/components/date-format-picker/index.js +2 -6
  128. package/build-module/components/date-format-picker/index.js.map +1 -1
  129. package/build-module/components/duotone/components.js +5 -5
  130. package/build-module/components/duotone/components.js.map +1 -1
  131. package/build-module/components/font-family/index.js +1 -1
  132. package/build-module/components/font-family/index.js.map +1 -1
  133. package/build-module/components/font-sizes/with-font-sizes.js +16 -3
  134. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  135. package/build-module/components/index.js +1 -0
  136. package/build-module/components/index.js.map +1 -1
  137. package/build-module/components/inserter/search-items.js +19 -5
  138. package/build-module/components/inserter/search-items.js.map +1 -1
  139. package/build-module/components/link-control/link-preview.js +0 -1
  140. package/build-module/components/link-control/link-preview.js.map +1 -1
  141. package/build-module/components/list-view/block-select-button.js +5 -2
  142. package/build-module/components/list-view/block-select-button.js.map +1 -1
  143. package/build-module/components/list-view/use-block-selection.js +1 -6
  144. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  145. package/build-module/components/rich-text/use-enter.js +0 -4
  146. package/build-module/components/rich-text/use-enter.js.map +1 -1
  147. package/build-module/components/rich-text/use-format-types.js +8 -10
  148. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  149. package/build-module/components/spacing-sizes-control/all-input-control.js +41 -0
  150. package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -0
  151. package/build-module/components/spacing-sizes-control/axial-input-controls.js +57 -0
  152. package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
  153. package/build-module/components/spacing-sizes-control/index.js +83 -0
  154. package/build-module/components/spacing-sizes-control/index.js.map +1 -0
  155. package/build-module/components/spacing-sizes-control/input-controls.js +41 -0
  156. package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -0
  157. package/build-module/components/spacing-sizes-control/linked-button.js +28 -0
  158. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -0
  159. package/build-module/components/spacing-sizes-control/spacing-input-control.js +192 -0
  160. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
  161. package/build-module/components/spacing-sizes-control/utils.js +174 -0
  162. package/build-module/components/spacing-sizes-control/utils.js.map +1 -0
  163. package/build-module/components/url-input/index.js +1 -1
  164. package/build-module/components/url-input/index.js.map +1 -1
  165. package/build-module/components/writing-flow/use-multi-selection.js +4 -2
  166. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  167. package/build-module/components/writing-flow/use-selection-observer.js +10 -2
  168. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  169. package/build-module/hooks/border-radius.js +2 -7
  170. package/build-module/hooks/border-radius.js.map +1 -1
  171. package/build-module/hooks/border.js +2 -2
  172. package/build-module/hooks/border.js.map +1 -1
  173. package/build-module/hooks/color.js +4 -1
  174. package/build-module/hooks/color.js.map +1 -1
  175. package/build-module/hooks/dimensions.js +13 -0
  176. package/build-module/hooks/dimensions.js.map +1 -1
  177. package/build-module/hooks/duotone.js +4 -4
  178. package/build-module/hooks/duotone.js.map +1 -1
  179. package/build-module/hooks/gap.js +3 -2
  180. package/build-module/hooks/gap.js.map +1 -1
  181. package/build-module/hooks/generated-class-name.js +1 -6
  182. package/build-module/hooks/generated-class-name.js.map +1 -1
  183. package/build-module/hooks/layout.js +20 -12
  184. package/build-module/hooks/layout.js.map +1 -1
  185. package/build-module/hooks/margin.js +26 -12
  186. package/build-module/hooks/margin.js.map +1 -1
  187. package/build-module/hooks/padding.js +17 -8
  188. package/build-module/hooks/padding.js.map +1 -1
  189. package/build-module/hooks/style.js +7 -53
  190. package/build-module/hooks/style.js.map +1 -1
  191. package/build-module/layouts/constrained.js +197 -0
  192. package/build-module/layouts/constrained.js.map +1 -0
  193. package/build-module/layouts/flex.js +1 -1
  194. package/build-module/layouts/flex.js.map +1 -1
  195. package/build-module/layouts/flow.js +8 -163
  196. package/build-module/layouts/flow.js.map +1 -1
  197. package/build-module/layouts/index.js +2 -1
  198. package/build-module/layouts/index.js.map +1 -1
  199. package/build-module/layouts/utils.js +40 -0
  200. package/build-module/layouts/utils.js.map +1 -1
  201. package/build-module/store/actions.js +25 -3
  202. package/build-module/store/actions.js.map +1 -1
  203. package/build-module/store/selectors.js +5 -7
  204. package/build-module/store/selectors.js.map +1 -1
  205. package/build-style/style-rtl.css +115 -20
  206. package/build-style/style.css +115 -20
  207. package/package.json +30 -28
  208. package/src/components/block-alignment-control/use-available-alignments.js +1 -1
  209. package/src/components/block-edit-visually-button/index.js +39 -0
  210. package/src/components/block-popover/inbetween.js +4 -1
  211. package/src/components/block-settings-menu/index.js +11 -15
  212. package/src/components/block-switcher/index.js +9 -13
  213. package/src/components/block-switcher/test/index.js +1 -0
  214. package/src/components/block-toolbar/index.js +2 -0
  215. package/src/components/border-radius-control/all-input-control.js +41 -4
  216. package/src/components/border-radius-control/index.js +25 -5
  217. package/src/components/border-radius-control/input-controls.js +40 -13
  218. package/src/components/border-radius-control/test/utils.js +22 -60
  219. package/src/components/border-radius-control/utils.js +12 -16
  220. package/src/components/colors/with-colors.js +11 -1
  221. package/src/components/copy-handler/index.js +18 -0
  222. package/src/components/date-format-picker/index.js +12 -14
  223. package/src/components/date-format-picker/style.scss +0 -4
  224. package/src/components/duotone/components.js +5 -5
  225. package/src/components/duotone-control/style.scss +0 -4
  226. package/src/components/font-appearance-control/style.scss +0 -2
  227. package/src/components/font-family/index.js +1 -1
  228. package/src/components/font-sizes/with-font-sizes.js +11 -1
  229. package/src/components/index.js +1 -0
  230. package/src/components/inserter/search-items.js +17 -5
  231. package/src/components/link-control/link-preview.js +0 -1
  232. package/src/components/link-control/test/index.js +540 -893
  233. package/src/components/list-view/block-select-button.js +7 -2
  234. package/src/components/list-view/style.scss +11 -4
  235. package/src/components/list-view/use-block-selection.js +2 -8
  236. package/src/components/media-replace-flow/style.scss +1 -0
  237. package/src/components/rich-text/use-enter.js +0 -3
  238. package/src/components/rich-text/use-format-types.js +6 -6
  239. package/src/components/spacing-sizes-control/all-input-control.js +40 -0
  240. package/src/components/spacing-sizes-control/axial-input-controls.js +62 -0
  241. package/src/components/spacing-sizes-control/index.js +91 -0
  242. package/src/components/spacing-sizes-control/input-controls.js +46 -0
  243. package/src/components/spacing-sizes-control/linked-button.js +25 -0
  244. package/src/components/spacing-sizes-control/spacing-input-control.js +280 -0
  245. package/src/components/spacing-sizes-control/style.scss +122 -0
  246. package/src/components/spacing-sizes-control/test/utils.js +156 -0
  247. package/src/components/spacing-sizes-control/utils.js +195 -0
  248. package/src/components/url-input/index.js +1 -1
  249. package/src/components/url-input/style.scss +2 -2
  250. package/src/components/url-popover/style.scss +0 -3
  251. package/src/components/writing-flow/use-multi-selection.js +4 -1
  252. package/src/components/writing-flow/use-selection-observer.js +10 -2
  253. package/src/hooks/border-radius.js +2 -6
  254. package/src/hooks/border.js +2 -2
  255. package/src/hooks/color.js +13 -3
  256. package/src/hooks/dimensions.js +15 -0
  257. package/src/hooks/duotone.js +4 -4
  258. package/src/hooks/gap.js +7 -2
  259. package/src/hooks/generated-class-name.js +6 -9
  260. package/src/hooks/layout.js +45 -14
  261. package/src/hooks/margin.js +49 -17
  262. package/src/hooks/padding.js +41 -14
  263. package/src/hooks/style.js +5 -56
  264. package/src/hooks/test/gap.js +22 -0
  265. package/src/hooks/typography.scss +0 -1
  266. package/src/layouts/constrained.js +217 -0
  267. package/src/layouts/flex.js +1 -1
  268. package/src/layouts/flow.js +6 -173
  269. package/src/layouts/index.js +2 -1
  270. package/src/layouts/test/constrained.js +21 -0
  271. package/src/layouts/utils.js +34 -0
  272. package/src/store/actions.js +32 -4
  273. package/src/store/selectors.js +5 -4
  274. package/src/style.scss +1 -0
  275. package/build/components/block-settings-menu/block-edit-visually-button.js +0 -70
  276. package/build/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
  277. package/build-module/components/block-settings-menu/block-edit-visually-button.js +0 -56
  278. package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
  279. package/src/components/block-settings-menu/block-edit-visually-button.js +0 -52
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/gap.js"],"names":["__","Platform","getBlockSupport","__experimentalUseCustomUnits","useCustomUnits","__experimentalBoxControl","BoxControl","__experimentalUnitControl","UnitControl","__unstableUseBlockRef","useBlockRef","useSetting","AXIAL_SIDES","SPACING_SUPPORT_KEY","useCustomSides","cleanEmptyObject","hasGapSupport","blockType","support","blockGap","hasGapValue","props","attributes","style","spacing","undefined","getGapBoxControlValueFromStyle","blockGapValue","isValueString","top","left","getGapCSSValue","defaultValue","blockGapBoxControlValue","row","column","resetGap","setAttributes","useIsGapDisabled","name","blockName","isDisabled","GapEdit","clientId","units","availableUnits","sides","ref","splitOnAxis","some","side","includes","onChange","next","newStyle","isSafari","window","navigator","userAgent","current","parentNode","replaceChild","gapValue","boxControlGapValue","right","bottom","select","web","native"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Platform } from '@wordpress/element';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalBoxControl as BoxControl,\n\t__experimentalUnitControl as UnitControl,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { __unstableUseBlockRef as useBlockRef } from '../components/block-list/use-block-props/use-block-refs';\nimport useSetting from '../components/use-setting';\nimport { AXIAL_SIDES, SPACING_SUPPORT_KEY, useCustomSides } from './dimensions';\nimport { cleanEmptyObject } from './utils';\n\n/**\n * Determines if there is gap support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n * @return {boolean} Whether there is support.\n */\nexport function hasGapSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, SPACING_SUPPORT_KEY );\n\treturn !! ( true === support || support?.blockGap );\n}\n\n/**\n * Checks if there is a current value in the gap block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a gap value set.\n */\nexport function hasGapValue( props ) {\n\treturn props.attributes.style?.spacing?.blockGap !== undefined;\n}\n\n/**\n * Returns a BoxControl object value from a given blockGap style value.\n * The string check is for backwards compatibility before Gutenberg supported\n * split gap values (row and column) and the value was a string n + unit.\n *\n * @param {string? | Object?} blockGapValue A block gap string or axial object value, e.g., '10px' or { top: '10px', left: '10px'}.\n * @return {Object|null} A value to pass to the BoxControl component.\n */\nexport function getGapBoxControlValueFromStyle( blockGapValue ) {\n\tif ( ! blockGapValue ) {\n\t\treturn null;\n\t}\n\n\tconst isValueString = typeof blockGapValue === 'string';\n\treturn {\n\t\ttop: isValueString ? blockGapValue : blockGapValue?.top,\n\t\tleft: isValueString ? blockGapValue : blockGapValue?.left,\n\t};\n}\n\n/**\n * Returns a CSS value for the `gap` property from a given blockGap style.\n *\n * @param {string? | Object?} blockGapValue A block gap string or axial object value, e.g., '10px' or { top: '10px', left: '10px'}.\n * @param {string?} defaultValue A default gap value.\n * @return {string|null} The concatenated gap value (row and column).\n */\nexport function getGapCSSValue( blockGapValue, defaultValue = '0' ) {\n\tconst blockGapBoxControlValue =\n\t\tgetGapBoxControlValueFromStyle( blockGapValue );\n\tif ( ! blockGapBoxControlValue ) {\n\t\treturn null;\n\t}\n\n\tconst row = blockGapBoxControlValue?.top || defaultValue;\n\tconst column = blockGapBoxControlValue?.left || defaultValue;\n\n\treturn row === column ? row : `${ row } ${ column }`;\n}\n\n/**\n * Resets the gap block support attribute. This can be used when disabling\n * the gap support controls for a block via a progressive 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 resetGap( { attributes = {}, setAttributes } ) {\n\tconst { style } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t},\n\t} );\n}\n\n/**\n * Custom hook that checks if gap settings have been disabled.\n *\n * @param {string} name The name of the block.\n * @return {boolean} Whether the gap setting is disabled.\n */\nexport function useIsGapDisabled( { name: blockName } = {} ) {\n\tconst isDisabled = ! useSetting( 'spacing.blockGap' );\n\treturn ! hasGapSupport( blockName ) || isDisabled;\n}\n\n/**\n * Inspector control panel containing the gap related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Gap edit element.\n */\nexport function GapEdit( props ) {\n\tconst {\n\t\tclientId,\n\t\tattributes: { style },\n\t\tname: blockName,\n\t\tsetAttributes,\n\t} = props;\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, 'blockGap' );\n\tconst ref = useBlockRef( clientId );\n\n\tif ( useIsGapDisabled( props ) ) {\n\t\treturn null;\n\t}\n\n\tconst splitOnAxis =\n\t\tsides && sides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tconst onChange = ( next ) => {\n\t\tlet blockGap = next;\n\n\t\t// If splitOnAxis activated we need to return a BoxControl object to the BoxControl component.\n\t\tif ( !! next && splitOnAxis ) {\n\t\t\tblockGap = { ...getGapBoxControlValueFromStyle( next ) };\n\t\t}\n\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tblockGap,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t} );\n\n\t\t// In Safari, changing the `gap` CSS value on its own will not trigger the layout\n\t\t// to be recalculated / re-rendered. To force the updated gap to re-render, here\n\t\t// we replace the block's node with itself.\n\t\tconst isSafari =\n\t\t\twindow?.navigator.userAgent &&\n\t\t\twindow.navigator.userAgent.includes( 'Safari' ) &&\n\t\t\t! window.navigator.userAgent.includes( 'Chrome ' ) &&\n\t\t\t! window.navigator.userAgent.includes( 'Chromium ' );\n\n\t\tif ( ref.current && isSafari ) {\n\t\t\tref.current.parentNode?.replaceChild( ref.current, ref.current );\n\t\t}\n\t};\n\n\tconst gapValue = getGapBoxControlValueFromStyle( style?.spacing?.blockGap );\n\n\t// The BoxControl component expects a full complement of side values.\n\t// Gap row and column values translate to top/bottom and left/right respectively.\n\tconst boxControlGapValue = splitOnAxis\n\t\t? {\n\t\t\t\t...gapValue,\n\t\t\t\tright: gapValue?.left,\n\t\t\t\tbottom: gapValue?.top,\n\t\t }\n\t\t: gapValue?.top;\n\n\treturn Platform.select( {\n\t\tweb: (\n\t\t\t<>\n\t\t\t\t{ splitOnAxis ? (\n\t\t\t\t\t<BoxControl\n\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tvalues={ boxControlGapValue }\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\t<UnitControl\n\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t// Default to `row` for combined values.\n\t\t\t\t\t\tvalue={ boxControlGapValue }\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"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/gap.js"],"names":["__","Platform","getBlockSupport","__experimentalUseCustomUnits","useCustomUnits","__experimentalBoxControl","BoxControl","__experimentalUnitControl","UnitControl","__unstableUseBlockRef","useBlockRef","getSpacingPresetCssVar","useSetting","AXIAL_SIDES","SPACING_SUPPORT_KEY","useCustomSides","cleanEmptyObject","hasGapSupport","blockType","support","blockGap","hasGapValue","props","attributes","style","spacing","undefined","getGapBoxControlValueFromStyle","blockGapValue","isValueString","top","left","getGapCSSValue","defaultValue","blockGapBoxControlValue","row","column","resetGap","setAttributes","useIsGapDisabled","name","blockName","isDisabled","GapEdit","clientId","units","availableUnits","sides","ref","splitOnAxis","some","side","includes","onChange","next","newStyle","isSafari","window","navigator","userAgent","current","parentNode","replaceChild","gapValue","boxControlGapValue","right","bottom","select","web","native"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Platform } from '@wordpress/element';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalBoxControl as BoxControl,\n\t__experimentalUnitControl as UnitControl,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { __unstableUseBlockRef as useBlockRef } from '../components/block-list/use-block-props/use-block-refs';\nimport { getSpacingPresetCssVar } from '../components/spacing-sizes-control/utils';\nimport useSetting from '../components/use-setting';\nimport { AXIAL_SIDES, SPACING_SUPPORT_KEY, useCustomSides } from './dimensions';\nimport { cleanEmptyObject } from './utils';\n\n/**\n * Determines if there is gap support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n * @return {boolean} Whether there is support.\n */\nexport function hasGapSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, SPACING_SUPPORT_KEY );\n\treturn !! ( true === support || support?.blockGap );\n}\n\n/**\n * Checks if there is a current value in the gap block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a gap value set.\n */\nexport function hasGapValue( props ) {\n\treturn props.attributes.style?.spacing?.blockGap !== undefined;\n}\n\n/**\n * Returns a BoxControl object value from a given blockGap style value.\n * The string check is for backwards compatibility before Gutenberg supported\n * split gap values (row and column) and the value was a string n + unit.\n *\n * @param {string? | Object?} blockGapValue A block gap string or axial object value, e.g., '10px' or { top: '10px', left: '10px'}.\n * @return {Object|null} A value to pass to the BoxControl component.\n */\nexport function getGapBoxControlValueFromStyle( blockGapValue ) {\n\tif ( ! blockGapValue ) {\n\t\treturn null;\n\t}\n\n\tconst isValueString = typeof blockGapValue === 'string';\n\treturn {\n\t\ttop: isValueString\n\t\t\t? getSpacingPresetCssVar( blockGapValue )\n\t\t\t: getSpacingPresetCssVar( blockGapValue?.top ),\n\t\tleft: isValueString\n\t\t\t? getSpacingPresetCssVar( blockGapValue )\n\t\t\t: getSpacingPresetCssVar( blockGapValue?.left ),\n\t};\n}\n\n/**\n * Returns a CSS value for the `gap` property from a given blockGap style.\n *\n * @param {string? | Object?} blockGapValue A block gap string or axial object value, e.g., '10px' or { top: '10px', left: '10px'}.\n * @param {string?} defaultValue A default gap value.\n * @return {string|null} The concatenated gap value (row and column).\n */\nexport function getGapCSSValue( blockGapValue, defaultValue = '0' ) {\n\tconst blockGapBoxControlValue =\n\t\tgetGapBoxControlValueFromStyle( blockGapValue );\n\tif ( ! blockGapBoxControlValue ) {\n\t\treturn null;\n\t}\n\n\tconst row = blockGapBoxControlValue?.top || defaultValue;\n\tconst column = blockGapBoxControlValue?.left || defaultValue;\n\n\treturn row === column ? row : `${ row } ${ column }`;\n}\n\n/**\n * Resets the gap block support attribute. This can be used when disabling\n * the gap support controls for a block via a progressive 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 resetGap( { attributes = {}, setAttributes } ) {\n\tconst { style } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t},\n\t} );\n}\n\n/**\n * Custom hook that checks if gap settings have been disabled.\n *\n * @param {string} name The name of the block.\n * @return {boolean} Whether the gap setting is disabled.\n */\nexport function useIsGapDisabled( { name: blockName } = {} ) {\n\tconst isDisabled = ! useSetting( 'spacing.blockGap' );\n\treturn ! hasGapSupport( blockName ) || isDisabled;\n}\n\n/**\n * Inspector control panel containing the gap related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Gap edit element.\n */\nexport function GapEdit( props ) {\n\tconst {\n\t\tclientId,\n\t\tattributes: { style },\n\t\tname: blockName,\n\t\tsetAttributes,\n\t} = props;\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, 'blockGap' );\n\tconst ref = useBlockRef( clientId );\n\n\tif ( useIsGapDisabled( props ) ) {\n\t\treturn null;\n\t}\n\n\tconst splitOnAxis =\n\t\tsides && sides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tconst onChange = ( next ) => {\n\t\tlet blockGap = next;\n\n\t\t// If splitOnAxis activated we need to return a BoxControl object to the BoxControl component.\n\t\tif ( !! next && splitOnAxis ) {\n\t\t\tblockGap = { ...getGapBoxControlValueFromStyle( next ) };\n\t\t}\n\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tblockGap,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t} );\n\n\t\t// In Safari, changing the `gap` CSS value on its own will not trigger the layout\n\t\t// to be recalculated / re-rendered. To force the updated gap to re-render, here\n\t\t// we replace the block's node with itself.\n\t\tconst isSafari =\n\t\t\twindow?.navigator.userAgent &&\n\t\t\twindow.navigator.userAgent.includes( 'Safari' ) &&\n\t\t\t! window.navigator.userAgent.includes( 'Chrome ' ) &&\n\t\t\t! window.navigator.userAgent.includes( 'Chromium ' );\n\n\t\tif ( ref.current && isSafari ) {\n\t\t\tref.current.parentNode?.replaceChild( ref.current, ref.current );\n\t\t}\n\t};\n\n\tconst gapValue = getGapBoxControlValueFromStyle( style?.spacing?.blockGap );\n\n\t// The BoxControl component expects a full complement of side values.\n\t// Gap row and column values translate to top/bottom and left/right respectively.\n\tconst boxControlGapValue = splitOnAxis\n\t\t? {\n\t\t\t\t...gapValue,\n\t\t\t\tright: gapValue?.left,\n\t\t\t\tbottom: gapValue?.top,\n\t\t }\n\t\t: gapValue?.top;\n\n\treturn Platform.select( {\n\t\tweb: (\n\t\t\t<>\n\t\t\t\t{ splitOnAxis ? (\n\t\t\t\t\t<BoxControl\n\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tvalues={ boxControlGapValue }\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\t<UnitControl\n\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t// Default to `row` for combined values.\n\t\t\t\t\t\tvalue={ boxControlGapValue }\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"]}
@@ -1,11 +1,6 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { uniq } from 'lodash';
5
1
  /**
6
2
  * WordPress dependencies
7
3
  */
8
-
9
4
  import { addFilter } from '@wordpress/hooks';
10
5
  import { hasBlockSupport, getBlockDefaultClassName } from '@wordpress/blocks';
11
6
  /**
@@ -25,7 +20,7 @@ export function addGeneratedClassName(extraProps, blockType) {
25
20
  if (typeof extraProps.className === 'string') {
26
21
  // We have some extra classes and want to add the default classname
27
22
  // We use uniq to prevent duplicate classnames.
28
- extraProps.className = uniq([getBlockDefaultClassName(blockType.name), ...extraProps.className.split(' ')]).join(' ').trim();
23
+ extraProps.className = [...new Set([getBlockDefaultClassName(blockType.name), ...extraProps.className.split(' ')])].join(' ').trim();
29
24
  } else {
30
25
  // There is no string in the className variable,
31
26
  // so we just dump the default name in there.
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/generated-class-name.js"],"names":["uniq","addFilter","hasBlockSupport","getBlockDefaultClassName","addGeneratedClassName","extraProps","blockType","className","name","split","join","trim"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,IAAT,QAAqB,QAArB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,kBAA1B;AACA,SAASC,eAAT,EAA0BC,wBAA1B,QAA0D,mBAA1D;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,qBAAT,CAAgCC,UAAhC,EAA4CC,SAA5C,EAAwD;AAC9D;AACA,MAAKJ,eAAe,CAAEI,SAAF,EAAa,WAAb,EAA0B,IAA1B,CAApB,EAAuD;AACtD,QAAK,OAAOD,UAAU,CAACE,SAAlB,KAAgC,QAArC,EAAgD;AAC/C;AACA;AAEAF,MAAAA,UAAU,CAACE,SAAX,GAAuBP,IAAI,CAAE,CAC5BG,wBAAwB,CAAEG,SAAS,CAACE,IAAZ,CADI,EAE5B,GAAGH,UAAU,CAACE,SAAX,CAAqBE,KAArB,CAA4B,GAA5B,CAFyB,CAAF,CAAJ,CAIrBC,IAJqB,CAIf,GAJe,EAKrBC,IALqB,EAAvB;AAMA,KAVD,MAUO;AACN;AACA;AACAN,MAAAA,UAAU,CAACE,SAAX,GAAuBJ,wBAAwB,CAAEG,SAAS,CAACE,IAAZ,CAA/C;AACA;AACD;;AACD,SAAOH,UAAP;AACA;AAEDJ,SAAS,CACR,kCADQ,EAER,sCAFQ,EAGRG,qBAHQ,CAAT","sourcesContent":["/**\n * External dependencies\n */\nimport { uniq } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { hasBlockSupport, getBlockDefaultClassName } from '@wordpress/blocks';\n\n/**\n * Override props assigned to save component to inject generated className if\n * block supports it. This is only applied if the block's save result is an\n * element and not a markup string.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType Block type.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addGeneratedClassName( extraProps, blockType ) {\n\t// Adding the generated className.\n\tif ( hasBlockSupport( blockType, 'className', true ) ) {\n\t\tif ( typeof extraProps.className === 'string' ) {\n\t\t\t// We have some extra classes and want to add the default classname\n\t\t\t// We use uniq to prevent duplicate classnames.\n\n\t\t\textraProps.className = uniq( [\n\t\t\t\tgetBlockDefaultClassName( blockType.name ),\n\t\t\t\t...extraProps.className.split( ' ' ),\n\t\t\t] )\n\t\t\t\t.join( ' ' )\n\t\t\t\t.trim();\n\t\t} else {\n\t\t\t// There is no string in the className variable,\n\t\t\t// so we just dump the default name in there.\n\t\t\textraProps.className = getBlockDefaultClassName( blockType.name );\n\t\t}\n\t}\n\treturn extraProps;\n}\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/generated-class-name/save-props',\n\taddGeneratedClassName\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/generated-class-name.js"],"names":["addFilter","hasBlockSupport","getBlockDefaultClassName","addGeneratedClassName","extraProps","blockType","className","Set","name","split","join","trim"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,kBAA1B;AACA,SAASC,eAAT,EAA0BC,wBAA1B,QAA0D,mBAA1D;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,qBAAT,CAAgCC,UAAhC,EAA4CC,SAA5C,EAAwD;AAC9D;AACA,MAAKJ,eAAe,CAAEI,SAAF,EAAa,WAAb,EAA0B,IAA1B,CAApB,EAAuD;AACtD,QAAK,OAAOD,UAAU,CAACE,SAAlB,KAAgC,QAArC,EAAgD;AAC/C;AACA;AAEAF,MAAAA,UAAU,CAACE,SAAX,GAAuB,CACtB,GAAG,IAAIC,GAAJ,CAAS,CACXL,wBAAwB,CAAEG,SAAS,CAACG,IAAZ,CADb,EAEX,GAAGJ,UAAU,CAACE,SAAX,CAAqBG,KAArB,CAA4B,GAA5B,CAFQ,CAAT,CADmB,EAMrBC,IANqB,CAMf,GANe,EAOrBC,IAPqB,EAAvB;AAQA,KAZD,MAYO;AACN;AACA;AACAP,MAAAA,UAAU,CAACE,SAAX,GAAuBJ,wBAAwB,CAAEG,SAAS,CAACG,IAAZ,CAA/C;AACA;AACD;;AACD,SAAOJ,UAAP;AACA;AAEDJ,SAAS,CACR,kCADQ,EAER,sCAFQ,EAGRG,qBAHQ,CAAT","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { hasBlockSupport, getBlockDefaultClassName } from '@wordpress/blocks';\n\n/**\n * Override props assigned to save component to inject generated className if\n * block supports it. This is only applied if the block's save result is an\n * element and not a markup string.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType Block type.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addGeneratedClassName( extraProps, blockType ) {\n\t// Adding the generated className.\n\tif ( hasBlockSupport( blockType, 'className', true ) ) {\n\t\tif ( typeof extraProps.className === 'string' ) {\n\t\t\t// We have some extra classes and want to add the default classname\n\t\t\t// We use uniq to prevent duplicate classnames.\n\n\t\t\textraProps.className = [\n\t\t\t\t...new Set( [\n\t\t\t\t\tgetBlockDefaultClassName( blockType.name ),\n\t\t\t\t\t...extraProps.className.split( ' ' ),\n\t\t\t\t] ),\n\t\t\t]\n\t\t\t\t.join( ' ' )\n\t\t\t\t.trim();\n\t\t} else {\n\t\t\t// There is no string in the className variable,\n\t\t\t// so we just dump the default name in there.\n\t\t\textraProps.className = getBlockDefaultClassName( blockType.name );\n\t\t}\n\t}\n\treturn extraProps;\n}\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/generated-class-name/save-props',\n\taddGeneratedClassName\n);\n"]}
@@ -108,26 +108,28 @@ function LayoutPanel(_ref) {
108
108
  return null;
109
109
  } // Only show the inherit toggle if it's supported,
110
110
  // a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),
111
- // and that the default / flow layout type is in use, as this is the only one that supports inheritance.
111
+ // and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.
112
112
 
113
113
 
114
- const showInheritToggle = !!(allowInheriting && !!defaultThemeLayout && (!(layout !== null && layout !== void 0 && layout.type) || (layout === null || layout === void 0 ? void 0 : layout.type) === 'default' || layout !== null && layout !== void 0 && layout.inherit));
114
+ const showInheritToggle = !!(allowInheriting && !!defaultThemeLayout && (!(layout !== null && layout !== void 0 && layout.type) || (layout === null || layout === void 0 ? void 0 : layout.type) === 'default' || (layout === null || layout === void 0 ? void 0 : layout.type) === 'constrained' || layout !== null && layout !== void 0 && layout.inherit));
115
115
  const usedLayout = layout || defaultBlockLayout || {};
116
116
  const {
117
117
  inherit = false,
118
- type = 'default'
118
+ type = 'default',
119
+ contentSize = null
119
120
  } = usedLayout;
120
121
  /**
121
- * `themeSupportsLayout` is only relevant to the `default/flow`
122
- * layout and it should not be taken into account when other
122
+ * `themeSupportsLayout` is only relevant to the `default/flow` or
123
+ * `constrained` layouts and it should not be taken into account when other
123
124
  * `layout` types are used.
124
125
  */
125
126
 
126
- if (type === 'default' && !themeSupportsLayout) {
127
+ if ((type === 'default' || type === 'constrained') && !themeSupportsLayout) {
127
128
  return null;
128
129
  }
129
130
 
130
131
  const layoutType = getLayoutType(type);
132
+ const constrainedType = getLayoutType('constrained');
131
133
 
132
134
  const onChangeType = newType => setAttributes({
133
135
  layout: {
@@ -142,19 +144,23 @@ function LayoutPanel(_ref) {
142
144
  return createElement(Fragment, null, createElement(InspectorControls, null, createElement(PanelBody, {
143
145
  title: __('Layout')
144
146
  }, showInheritToggle && createElement(Fragment, null, createElement(ToggleControl, {
145
- label: __('Inner blocks use full width'),
146
- checked: !inherit,
147
+ label: __('Inner blocks respect content width'),
148
+ checked: (layoutType === null || layoutType === void 0 ? void 0 : layoutType.name) === 'constrained' || !!inherit || !!contentSize,
147
149
  onChange: () => setAttributes({
148
150
  layout: {
149
- inherit: !inherit
151
+ type: (layoutType === null || layoutType === void 0 ? void 0 : layoutType.name) === 'constrained' ? 'default' : 'constrained'
150
152
  }
151
153
  })
152
154
  }), createElement("p", {
153
155
  className: "block-editor-hooks__layout-controls-helptext"
154
- }, !!inherit ? __('Nested blocks use theme content width with options for full and wide widths.') : __('Nested blocks will fill the width of this container.'))), !inherit && allowSwitching && createElement(LayoutTypeSwitcher, {
156
+ }, !!inherit || (layoutType === null || layoutType === void 0 ? void 0 : layoutType.name) === 'constrained' ? __('Nested blocks use theme content width with options for full and wide widths.') : __('Nested blocks will fill the width of this container.'))), !inherit && allowSwitching && createElement(LayoutTypeSwitcher, {
155
157
  type: type,
156
158
  onChange: onChangeType
157
- }), !inherit && layoutType && createElement(layoutType.inspectorControls, {
159
+ }), layoutType && layoutType.name !== 'default' && createElement(layoutType.inspectorControls, {
160
+ layout: usedLayout,
161
+ onChange: onChangeLayout,
162
+ layoutBlockSupport: layoutBlockSupport
163
+ }), constrainedType && !!contentSize && createElement(constrainedType.inspectorControls, {
158
164
  layout: usedLayout,
159
165
  onChange: onChangeLayout,
160
166
  layoutBlockSupport: layoutBlockSupport
@@ -255,7 +261,9 @@ export const withLayoutStyles = createHigherOrderComponent(BlockListBlock => pro
255
261
  const {
256
262
  default: defaultBlockLayout
257
263
  } = getBlockSupport(name, layoutBlockSupportKey) || {};
258
- const usedLayout = layout !== null && layout !== void 0 && layout.inherit ? defaultThemeLayout : layout || defaultBlockLayout || {};
264
+ const usedLayout = layout !== null && layout !== void 0 && layout.inherit || layout !== null && layout !== void 0 && layout.contentSize || layout !== null && layout !== void 0 && layout.wideSize ? { ...layout,
265
+ type: 'constrained'
266
+ } : layout || defaultBlockLayout || {};
259
267
  const layoutClasses = hasLayoutBlockSupport ? useLayoutClasses(usedLayout, defaultThemeLayout === null || defaultThemeLayout === void 0 ? void 0 : defaultThemeLayout.definitions) : null;
260
268
  const selector = `.${getBlockDefaultClassName(name)}.wp-container-${id}`;
261
269
  const blockGapSupport = useSetting('spacing.blockGap');
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/layout.js"],"names":["classnames","has","kebabCase","createHigherOrderComponent","useInstanceId","addFilter","getBlockDefaultClassName","getBlockSupport","hasBlockSupport","useSelect","Button","ButtonGroup","ToggleControl","PanelBody","__","useContext","createPortal","store","blockEditorStore","InspectorControls","useSetting","LayoutStyle","BlockList","getLayoutType","getLayoutTypes","layoutBlockSupportKey","useLayoutClasses","layout","layoutDefinitions","rootPaddingAlignment","select","getSettings","__experimentalFeatures","useRootPaddingAwareAlignments","layoutClassnames","type","className","push","inherit","contentSize","orientation","justifyContent","flexWrap","LayoutPanel","setAttributes","attributes","name","blockName","defaultThemeLayout","themeSupportsLayout","supportsLayout","layoutBlockSupport","allowSwitching","allowEditing","allowInheriting","default","defaultBlockLayout","showInheritToggle","usedLayout","layoutType","onChangeType","newType","onChangeLayout","newLayout","LayoutTypeSwitcher","onChange","map","label","addAttribute","settings","withInspectorControls","BlockEdit","props","supportLayout","withLayoutStyles","BlockListBlock","hasLayoutBlockSupport","disableLayoutStyles","shouldRenderLayoutStyles","id","element","__unstableElementContext","layoutClasses","definitions","selector","blockGapSupport","hasBlockGapSupport","css","fullLayoutType","getLayoutStyle","style"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { has, 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 blocks layout attributes.\n * This method was primarily added to reintroduce classnames that were removed\n * in the 5.9 release (https://github.com/WordPress/gutenberg/issues/38719), rather\n * than providing an extensive list of all possible layout classes. The plan is to\n * have the style engine generate a more extensive list of utility classnames which\n * will then replace this method.\n *\n * @param { Object } layout Layout object.\n * @param { Object } layoutDefinitions An object containing layout definitions, stored in theme.json.\n *\n * @return { Array } Array of CSS classname strings.\n */\nfunction useLayoutClasses( layout, layoutDefinitions ) {\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 layoutClassnames = [];\n\n\tif ( layoutDefinitions?.[ layout?.type || 'default' ]?.className ) {\n\t\tlayoutClassnames.push(\n\t\t\tlayoutDefinitions?.[ layout?.type || 'default' ]?.className\n\t\t);\n\t}\n\n\tif ( ( layout?.inherit || layout?.contentSize ) && rootPaddingAlignment ) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( layout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( layout.orientation ) }` );\n\t}\n\n\tif ( layout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase( layout.justifyContent ) }`\n\t\t);\n\t}\n\n\tif ( layout?.flexWrap && layout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\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 that the default / flow layout type is in use, as this is the only one that supports inheritance.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t!! defaultThemeLayout &&\n\t\t( ! layout?.type || layout?.type === 'default' || layout?.inherit )\n\t);\n\n\tconst usedLayout = layout || defaultBlockLayout || {};\n\tconst { inherit = false, type = 'default' } = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow`\n\t * layout and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif ( type === 'default' && ! themeSupportsLayout ) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( type );\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\tlabel={ __( 'Inner blocks use full width' ) }\n\t\t\t\t\t\t\t\tchecked={ ! inherit }\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\tinherit: ! inherit,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p className=\"block-editor-hooks__layout-controls-helptext\">\n\t\t\t\t\t\t\t\t{ !! inherit\n\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use theme content width with options for full and wide widths.'\n\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\t\t\t'Nested blocks will fill the width of this container.'\n\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t</p>\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{ ! inherit && layoutType && (\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</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 ( has( settings.attributes, [ 'layout', 'type' ] ) ) {\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 } = 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 = layout?.inherit\n\t\t\t? defaultThemeLayout\n\t\t\t: layout || defaultBlockLayout || {};\n\t\tconst layoutClasses = hasLayoutBlockSupport\n\t\t\t? useLayoutClasses( usedLayout, defaultThemeLayout?.definitions )\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":["classnames","has","kebabCase","createHigherOrderComponent","useInstanceId","addFilter","getBlockDefaultClassName","getBlockSupport","hasBlockSupport","useSelect","Button","ButtonGroup","ToggleControl","PanelBody","__","useContext","createPortal","store","blockEditorStore","InspectorControls","useSetting","LayoutStyle","BlockList","getLayoutType","getLayoutTypes","layoutBlockSupportKey","useLayoutClasses","layout","layoutDefinitions","rootPaddingAlignment","select","getSettings","__experimentalFeatures","useRootPaddingAwareAlignments","layoutClassnames","type","className","push","inherit","contentSize","orientation","justifyContent","flexWrap","LayoutPanel","setAttributes","attributes","name","blockName","defaultThemeLayout","themeSupportsLayout","supportsLayout","layoutBlockSupport","allowSwitching","allowEditing","allowInheriting","default","defaultBlockLayout","showInheritToggle","usedLayout","layoutType","constrainedType","onChangeType","newType","onChangeLayout","newLayout","LayoutTypeSwitcher","onChange","map","label","addAttribute","settings","withInspectorControls","BlockEdit","props","supportLayout","withLayoutStyles","BlockListBlock","hasLayoutBlockSupport","disableLayoutStyles","shouldRenderLayoutStyles","id","element","__unstableElementContext","wideSize","layoutClasses","definitions","selector","blockGapSupport","hasBlockGapSupport","css","fullLayoutType","getLayoutStyle","style"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { has, 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 blocks layout attributes.\n * This method was primarily added to reintroduce classnames that were removed\n * in the 5.9 release (https://github.com/WordPress/gutenberg/issues/38719), rather\n * than providing an extensive list of all possible layout classes. The plan is to\n * have the style engine generate a more extensive list of utility classnames which\n * will then replace this method.\n *\n * @param { Object } layout Layout object.\n * @param { Object } layoutDefinitions An object containing layout definitions, stored in theme.json.\n *\n * @return { Array } Array of CSS classname strings.\n */\nfunction useLayoutClasses( layout, layoutDefinitions ) {\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 layoutClassnames = [];\n\n\tif ( layoutDefinitions?.[ layout?.type || 'default' ]?.className ) {\n\t\tlayoutClassnames.push(\n\t\t\tlayoutDefinitions?.[ layout?.type || 'default' ]?.className\n\t\t);\n\t}\n\n\tif ( ( layout?.inherit || layout?.contentSize ) && rootPaddingAlignment ) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( layout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( layout.orientation ) }` );\n\t}\n\n\tif ( layout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase( layout.justifyContent ) }`\n\t\t);\n\t}\n\n\tif ( layout?.flexWrap && layout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\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\n\tconst constrainedType = getLayoutType( 'constrained' );\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\tlabel={ __(\n\t\t\t\t\t\t\t\t\t'Inner blocks respect content width'\n\t\t\t\t\t\t\t\t) }\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\t!! inherit ||\n\t\t\t\t\t\t\t\t\t!! contentSize\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'constrained'\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/>\n\t\t\t\t\t\t\t<p className=\"block-editor-hooks__layout-controls-helptext\">\n\t\t\t\t\t\t\t\t{ !! inherit ||\n\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained'\n\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use theme content width with options for full and wide widths.'\n\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\t\t\t'Nested blocks will fill the width of this container.'\n\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t</p>\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 && !! contentSize && (\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 ( has( settings.attributes, [ 'layout', 'type' ] ) ) {\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 } = 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( usedLayout, defaultThemeLayout?.definitions )\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"]}
@@ -16,6 +16,8 @@ import useSetting from '../components/use-setting';
16
16
  import { AXIAL_SIDES, SPACING_SUPPORT_KEY, useCustomSides, useIsDimensionsSupportValid } from './dimensions';
17
17
  import { cleanEmptyObject } from './utils';
18
18
  import BlockPopover from '../components/block-popover';
19
+ import SpacingSizesControl from '../components/spacing-sizes-control';
20
+ import { getCustomValueFromPreset } from '../components/spacing-sizes-control/utils';
19
21
  /**
20
22
  * Determines if there is margin support.
21
23
  *
@@ -90,7 +92,7 @@ export function useIsMarginDisabled() {
90
92
  */
91
93
 
92
94
  export function MarginEdit(props) {
93
- var _style$spacing;
95
+ var _style$spacing, _style$spacing2;
94
96
 
95
97
  const {
96
98
  name: blockName,
@@ -99,6 +101,7 @@ export function MarginEdit(props) {
99
101
  },
100
102
  setAttributes
101
103
  } = props;
104
+ const spacingSizes = useSetting('spacing.spacingSizes');
102
105
  const units = useCustomUnits({
103
106
  availableUnits: useSetting('spacing.units') || ['%', 'px', 'em', 'rem', 'vw']
104
107
  });
@@ -121,7 +124,7 @@ export function MarginEdit(props) {
121
124
  };
122
125
 
123
126
  return Platform.select({
124
- web: createElement(Fragment, null, createElement(BoxControl, {
127
+ web: createElement(Fragment, null, (!spacingSizes || (spacingSizes === null || spacingSizes === void 0 ? void 0 : spacingSizes.length) === 0) && createElement(BoxControl, {
125
128
  values: style === null || style === void 0 ? void 0 : (_style$spacing = style.spacing) === null || _style$spacing === void 0 ? void 0 : _style$spacing.margin,
126
129
  onChange: onChange,
127
130
  label: __('Margin'),
@@ -129,6 +132,14 @@ export function MarginEdit(props) {
129
132
  units: units,
130
133
  allowReset: false,
131
134
  splitOnAxis: splitOnAxis
135
+ }), (spacingSizes === null || spacingSizes === void 0 ? void 0 : spacingSizes.length) > 0 && createElement(SpacingSizesControl, {
136
+ values: style === null || style === void 0 ? void 0 : (_style$spacing2 = style.spacing) === null || _style$spacing2 === void 0 ? void 0 : _style$spacing2.margin,
137
+ onChange: onChange,
138
+ label: __('Margin'),
139
+ sides: sides,
140
+ units: units,
141
+ allowReset: false,
142
+ splitOnAxis: false
132
143
  })),
133
144
  native: null
134
145
  });
@@ -141,18 +152,21 @@ export function MarginVisualizer(_ref2) {
141
152
  attributes
142
153
  } = _ref2;
143
154
  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;
155
+ const spacingSizes = useSetting('spacing.spacingSizes');
144
156
  const style = useMemo(() => {
145
- var _margin$top, _margin$right, _margin$bottom, _margin$left;
146
-
157
+ const marginTop = margin !== null && margin !== void 0 && margin.top ? getCustomValueFromPreset(margin === null || margin === void 0 ? void 0 : margin.top, spacingSizes) : 0;
158
+ const marginRight = margin !== null && margin !== void 0 && margin.right ? getCustomValueFromPreset(margin === null || margin === void 0 ? void 0 : margin.right, spacingSizes) : 0;
159
+ const marginBottom = margin !== null && margin !== void 0 && margin.bottom ? getCustomValueFromPreset(margin === null || margin === void 0 ? void 0 : margin.bottom, spacingSizes) : 0;
160
+ const marginLeft = margin !== null && margin !== void 0 && margin.left ? getCustomValueFromPreset(margin === null || margin === void 0 ? void 0 : margin.left, spacingSizes) : 0;
147
161
  return {
148
- borderTopWidth: (_margin$top = margin === null || margin === void 0 ? void 0 : margin.top) !== null && _margin$top !== void 0 ? _margin$top : 0,
149
- borderRightWidth: (_margin$right = margin === null || margin === void 0 ? void 0 : margin.right) !== null && _margin$right !== void 0 ? _margin$right : 0,
150
- borderBottomWidth: (_margin$bottom = margin === null || margin === void 0 ? void 0 : margin.bottom) !== null && _margin$bottom !== void 0 ? _margin$bottom : 0,
151
- borderLeftWidth: (_margin$left = margin === null || margin === void 0 ? void 0 : margin.left) !== null && _margin$left !== void 0 ? _margin$left : 0,
152
- top: margin !== null && margin !== void 0 && margin.top ? `-${margin.top}` : 0,
153
- right: margin !== null && margin !== void 0 && margin.right ? `-${margin.right}` : 0,
154
- bottom: margin !== null && margin !== void 0 && margin.bottom ? `-${margin.bottom}` : 0,
155
- left: margin !== null && margin !== void 0 && margin.left ? `-${margin.left}` : 0
162
+ borderTopWidth: marginTop,
163
+ borderRightWidth: marginRight,
164
+ borderBottomWidth: marginBottom,
165
+ borderLeftWidth: marginLeft,
166
+ top: marginTop !== 0 ? `-${marginTop}` : 0,
167
+ right: marginRight !== 0 ? `-${marginRight}` : 0,
168
+ bottom: marginBottom !== 0 ? `-${marginBottom}` : 0,
169
+ left: marginLeft !== 0 ? `-${marginLeft}` : 0
156
170
  };
157
171
  }, [margin]);
158
172
  const [isActive, setIsActive] = useState(false);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/margin.js"],"names":["__","Platform","useMemo","useRef","useState","useEffect","getBlockSupport","__experimentalUseCustomUnits","useCustomUnits","__experimentalBoxControl","BoxControl","isShallowEqual","useSetting","AXIAL_SIDES","SPACING_SUPPORT_KEY","useCustomSides","useIsDimensionsSupportValid","cleanEmptyObject","BlockPopover","hasMarginSupport","blockType","support","margin","hasMarginValue","props","attributes","style","spacing","undefined","resetMargin","setAttributes","useIsMarginDisabled","name","blockName","isDisabled","isInvalid","MarginEdit","units","availableUnits","sides","splitOnAxis","some","side","includes","onChange","next","newStyle","select","web","native","MarginVisualizer","clientId","borderTopWidth","top","borderRightWidth","right","borderBottomWidth","bottom","borderLeftWidth","left","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';\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 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<BoxControl\n\t\t\t\t\tvalues={ style?.spacing?.margin }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\tsides={ sides }\n\t\t\t\t\tunits={ units }\n\t\t\t\t\tallowReset={ false }\n\t\t\t\t\tsplitOnAxis={ splitOnAxis }\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 style = useMemo( () => {\n\t\treturn {\n\t\t\tborderTopWidth: margin?.top ?? 0,\n\t\t\tborderRightWidth: margin?.right ?? 0,\n\t\t\tborderBottomWidth: margin?.bottom ?? 0,\n\t\t\tborderLeftWidth: margin?.left ?? 0,\n\t\t\ttop: margin?.top ? `-${ margin.top }` : 0,\n\t\t\tright: margin?.right ? `-${ margin.right }` : 0,\n\t\t\tbottom: margin?.bottom ? `-${ margin.bottom }` : 0,\n\t\t\tleft: margin?.left ? `-${ margin.left }` : 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":["__","Platform","useMemo","useRef","useState","useEffect","getBlockSupport","__experimentalUseCustomUnits","useCustomUnits","__experimentalBoxControl","BoxControl","isShallowEqual","useSetting","AXIAL_SIDES","SPACING_SUPPORT_KEY","useCustomSides","useIsDimensionsSupportValid","cleanEmptyObject","BlockPopover","SpacingSizesControl","getCustomValueFromPreset","hasMarginSupport","blockType","support","margin","hasMarginValue","props","attributes","style","spacing","undefined","resetMargin","setAttributes","useIsMarginDisabled","name","blockName","isDisabled","isInvalid","MarginEdit","spacingSizes","units","availableUnits","sides","splitOnAxis","some","side","includes","onChange","next","newStyle","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":";;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SACCC,QADD,EAECC,OAFD,EAGCC,MAHD,EAICC,QAJD,EAKCC,SALD,QAMO,oBANP;AAOA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SACCC,4BAA4B,IAAIC,cADjC,EAECC,wBAAwB,IAAIC,UAF7B,QAGO,uBAHP;AAIA,OAAOC,cAAP,MAA2B,6BAA3B;AAEA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,2BAAvB;AACA,SACCC,WADD,EAECC,mBAFD,EAGCC,cAHD,EAICC,2BAJD,QAKO,cALP;AAMA,SAASC,gBAAT,QAAiC,SAAjC;AACA,OAAOC,YAAP,MAAyB,6BAAzB;AACA,OAAOC,mBAAP,MAAgC,qCAAhC;AACA,SAASC,wBAAT,QAAyC,2CAAzC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,gBAAT,CAA2BC,SAA3B,EAAuC;AAC7C,QAAMC,OAAO,GAAGjB,eAAe,CAAEgB,SAAF,EAAaR,mBAAb,CAA/B;AACA,SAAO,CAAC,EAAI,SAASS,OAAT,IAAoBA,OAApB,aAAoBA,OAApB,eAAoBA,OAAO,CAAEC,MAAjC,CAAR;AACA;AAED;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,cAAT,CAAyBC,KAAzB,EAAiC;AAAA;;AACvC,SAAO,0BAAAA,KAAK,CAACC,UAAN,CAAiBC,KAAjB,0GAAwBC,OAAxB,kFAAiCL,MAAjC,MAA4CM,SAAnD;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,WAAT,OAA2D;AAAA,MAArC;AAAEJ,IAAAA,UAAU,GAAG,EAAf;AAAmBK,IAAAA;AAAnB,GAAqC;AACjE,QAAM;AAAEJ,IAAAA;AAAF,MAAYD,UAAlB;AAEAK,EAAAA,aAAa,CAAE;AACdJ,IAAAA,KAAK,EAAEX,gBAAgB,CAAE,EACxB,GAAGW,KADqB;AAExBC,MAAAA,OAAO,EAAE,EACR,IAAGD,KAAH,aAAGA,KAAH,uBAAGA,KAAK,CAAEC,OAAV,CADQ;AAERL,QAAAA,MAAM,EAAEM;AAFA;AAFe,KAAF;AADT,GAAF,CAAb;AASA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASG,mBAAT,GAAyD;AAAA,MAA3B;AAAEC,IAAAA,IAAI,EAAEC;AAAR,GAA2B,uEAAL,EAAK;AAC/D,QAAMC,UAAU,GAAG,CAAExB,UAAU,CAAE,gBAAF,CAA/B;AACA,QAAMyB,SAAS,GAAG,CAAErB,2BAA2B,CAAEmB,SAAF,EAAa,QAAb,CAA/C;AAEA,SAAO,CAAEd,gBAAgB,CAAEc,SAAF,CAAlB,IAAmCC,UAAnC,IAAiDC,SAAxD;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,UAAT,CAAqBZ,KAArB,EAA6B;AAAA;;AACnC,QAAM;AACLQ,IAAAA,IAAI,EAAEC,SADD;AAELR,IAAAA,UAAU,EAAE;AAAEC,MAAAA;AAAF,KAFP;AAGLI,IAAAA;AAHK,MAIFN,KAJJ;AAMA,QAAMa,YAAY,GAAG3B,UAAU,CAAE,sBAAF,CAA/B;AAEA,QAAM4B,KAAK,GAAGhC,cAAc,CAAE;AAC7BiC,IAAAA,cAAc,EAAE7B,UAAU,CAAE,eAAF,CAAV,IAAiC,CAChD,GADgD,EAEhD,IAFgD,EAGhD,IAHgD,EAIhD,KAJgD,EAKhD,IALgD;AADpB,GAAF,CAA5B;AASA,QAAM8B,KAAK,GAAG3B,cAAc,CAAEoB,SAAF,EAAa,QAAb,CAA5B;AACA,QAAMQ,WAAW,GAChBD,KAAK,IAAIA,KAAK,CAACE,IAAN,CAAcC,IAAF,IAAYhC,WAAW,CAACiC,QAAZ,CAAsBD,IAAtB,CAAxB,CADV;;AAGA,MAAKZ,mBAAmB,CAAEP,KAAF,CAAxB,EAAoC;AACnC,WAAO,IAAP;AACA;;AAED,QAAMqB,QAAQ,GAAKC,IAAF,IAAY;AAC5B,UAAMC,QAAQ,GAAG,EAChB,GAAGrB,KADa;AAEhBC,MAAAA,OAAO,EAAE,EACR,IAAGD,KAAH,aAAGA,KAAH,uBAAGA,KAAK,CAAEC,OAAV,CADQ;AAERL,QAAAA,MAAM,EAAEwB;AAFA;AAFO,KAAjB;AAQAhB,IAAAA,aAAa,CAAE;AACdJ,MAAAA,KAAK,EAAEX,gBAAgB,CAAEgC,QAAF;AADT,KAAF,CAAb;AAGA,GAZD;;AAcA,SAAOhD,QAAQ,CAACiD,MAAT,CAAiB;AACvBC,IAAAA,GAAG,EACF,8BACG,CAAE,CAAEZ,YAAF,IAAkB,CAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAEa,MAAd,MAAyB,CAA7C,KACD,cAAC,UAAD;AACC,MAAA,MAAM,EAAGxB,KAAH,aAAGA,KAAH,yCAAGA,KAAK,CAAEC,OAAV,mDAAG,eAAgBL,MAD1B;AAEC,MAAA,QAAQ,EAAGuB,QAFZ;AAGC,MAAA,KAAK,EAAG/C,EAAE,CAAE,QAAF,CAHX;AAIC,MAAA,KAAK,EAAG0C,KAJT;AAKC,MAAA,KAAK,EAAGF,KALT;AAMC,MAAA,UAAU,EAAG,KANd;AAOC,MAAA,WAAW,EAAGG;AAPf,MAFF,EAYG,CAAAJ,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAEa,MAAd,IAAuB,CAAvB,IACD,cAAC,mBAAD;AACC,MAAA,MAAM,EAAGxB,KAAH,aAAGA,KAAH,0CAAGA,KAAK,CAAEC,OAAV,oDAAG,gBAAgBL,MAD1B;AAEC,MAAA,QAAQ,EAAGuB,QAFZ;AAGC,MAAA,KAAK,EAAG/C,EAAE,CAAE,QAAF,CAHX;AAIC,MAAA,KAAK,EAAG0C,KAJT;AAKC,MAAA,KAAK,EAAGF,KALT;AAMC,MAAA,UAAU,EAAG,KANd;AAOC,MAAA,WAAW,EAAG;AAPf,MAbF,CAFsB;AA2BvBa,IAAAA,MAAM,EAAE;AA3Be,GAAjB,CAAP;AA6BA;AAED,OAAO,SAASC,gBAAT,QAAsD;AAAA;;AAAA,MAA3B;AAAEC,IAAAA,QAAF;AAAY5B,IAAAA;AAAZ,GAA2B;AAC5D,QAAMH,MAAM,GAAGG,UAAH,aAAGA,UAAH,4CAAGA,UAAU,CAAEC,KAAf,+EAAG,kBAAmBC,OAAtB,0DAAG,sBAA4BL,MAA3C;AACA,QAAMe,YAAY,GAAG3B,UAAU,CAAE,sBAAF,CAA/B;AAEA,QAAMgB,KAAK,GAAG1B,OAAO,CAAE,MAAM;AAC5B,UAAMsD,SAAS,GAAGhC,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAEiC,GAAR,GACfrC,wBAAwB,CAAEI,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEiC,GAAV,EAAelB,YAAf,CADT,GAEf,CAFH;AAGA,UAAMmB,WAAW,GAAGlC,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAEmC,KAAR,GACjBvC,wBAAwB,CAAEI,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEmC,KAAV,EAAiBpB,YAAjB,CADP,GAEjB,CAFH;AAGA,UAAMqB,YAAY,GAAGpC,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAEqC,MAAR,GAClBzC,wBAAwB,CAAEI,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEqC,MAAV,EAAkBtB,YAAlB,CADN,GAElB,CAFH;AAGA,UAAMuB,UAAU,GAAGtC,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAEuC,IAAR,GAChB3C,wBAAwB,CAAEI,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEuC,IAAV,EAAgBxB,YAAhB,CADR,GAEhB,CAFH;AAIA,WAAO;AACNyB,MAAAA,cAAc,EAAER,SADV;AAENS,MAAAA,gBAAgB,EAAEP,WAFZ;AAGNQ,MAAAA,iBAAiB,EAAEN,YAHb;AAINO,MAAAA,eAAe,EAAEL,UAJX;AAKNL,MAAAA,GAAG,EAAED,SAAS,KAAK,CAAd,GAAmB,IAAIA,SAAW,EAAlC,GAAsC,CALrC;AAMNG,MAAAA,KAAK,EAAED,WAAW,KAAK,CAAhB,GAAqB,IAAIA,WAAa,EAAtC,GAA0C,CAN3C;AAONG,MAAAA,MAAM,EAAED,YAAY,KAAK,CAAjB,GAAsB,IAAIA,YAAc,EAAxC,GAA4C,CAP9C;AAQNG,MAAAA,IAAI,EAAED,UAAU,KAAK,CAAf,GAAoB,IAAIA,UAAY,EAApC,GAAwC;AARxC,KAAP;AAUA,GAxBoB,EAwBlB,CAAEtC,MAAF,CAxBkB,CAArB;AA0BA,QAAM,CAAE4C,QAAF,EAAYC,WAAZ,IAA4BjE,QAAQ,CAAE,KAAF,CAA1C;AACA,QAAMkE,QAAQ,GAAGnE,MAAM,CAAEqB,MAAF,CAAvB;AACA,QAAM+C,UAAU,GAAGpE,MAAM,EAAzB;;AAEA,QAAMqE,UAAU,GAAG,MAAM;AACxB,QAAKD,UAAU,CAACE,OAAhB,EAA0B;AACzBC,MAAAA,MAAM,CAACC,YAAP,CAAqBJ,UAAU,CAACE,OAAhC;AACA;AACD,GAJD;;AAMApE,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAK,CAAEM,cAAc,CAAEa,MAAF,EAAU8C,QAAQ,CAACG,OAAnB,CAArB,EAAoD;AACnDJ,MAAAA,WAAW,CAAE,IAAF,CAAX;AACAC,MAAAA,QAAQ,CAACG,OAAT,GAAmBjD,MAAnB;AAEAgD,MAAAA,UAAU;AAEVD,MAAAA,UAAU,CAACE,OAAX,GAAqBG,UAAU,CAAE,MAAM;AACtCP,QAAAA,WAAW,CAAE,KAAF,CAAX;AACA,OAF8B,EAE5B,GAF4B,CAA/B;AAGA;;AAED,WAAO,MAAMG,UAAU,EAAvB;AACA,GAbQ,EAaN,CAAEhD,MAAF,CAbM,CAAT;;AAeA,MAAK,CAAE4C,QAAP,EAAkB;AACjB,WAAO,IAAP;AACA;;AAED,SACC,cAAC,YAAD;AACC,IAAA,QAAQ,EAAGb,QADZ;AAEC,IAAA,qBAAqB,MAFtB;AAGC,IAAA,qBAAqB,EAAG/B;AAHzB,KAKC;AAAK,IAAA,SAAS,EAAC,kCAAf;AAAkD,IAAA,KAAK,EAAGI;AAA1D,IALD,CADD;AASA","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"]}
@@ -16,6 +16,8 @@ import useSetting from '../components/use-setting';
16
16
  import { AXIAL_SIDES, SPACING_SUPPORT_KEY, useCustomSides, useIsDimensionsSupportValid } from './dimensions';
17
17
  import { cleanEmptyObject } from './utils';
18
18
  import BlockPopover from '../components/block-popover';
19
+ import SpacingSizesControl from '../components/spacing-sizes-control';
20
+ import { getSpacingPresetCssVar, isValueSpacingPreset } from '../components/spacing-sizes-control/utils';
19
21
  /**
20
22
  * Determines if there is padding support.
21
23
  *
@@ -90,7 +92,7 @@ export function useIsPaddingDisabled() {
90
92
  */
91
93
 
92
94
  export function PaddingEdit(props) {
93
- var _style$spacing;
95
+ var _style$spacing, _style$spacing2;
94
96
 
95
97
  const {
96
98
  name: blockName,
@@ -99,6 +101,7 @@ export function PaddingEdit(props) {
99
101
  },
100
102
  setAttributes
101
103
  } = props;
104
+ const spacingSizes = useSetting('spacing.spacingSizes');
102
105
  const units = useCustomUnits({
103
106
  availableUnits: useSetting('spacing.units') || ['%', 'px', 'em', 'rem', 'vw']
104
107
  });
@@ -121,7 +124,7 @@ export function PaddingEdit(props) {
121
124
  };
122
125
 
123
126
  return Platform.select({
124
- web: createElement(Fragment, null, createElement(BoxControl, {
127
+ web: createElement(Fragment, null, (!spacingSizes || (spacingSizes === null || spacingSizes === void 0 ? void 0 : spacingSizes.length) === 0) && createElement(BoxControl, {
125
128
  values: style === null || style === void 0 ? void 0 : (_style$spacing = style.spacing) === null || _style$spacing === void 0 ? void 0 : _style$spacing.padding,
126
129
  onChange: onChange,
127
130
  label: __('Padding'),
@@ -129,6 +132,14 @@ export function PaddingEdit(props) {
129
132
  units: units,
130
133
  allowReset: false,
131
134
  splitOnAxis: splitOnAxis
135
+ }), (spacingSizes === null || spacingSizes === void 0 ? void 0 : spacingSizes.length) > 0 && createElement(SpacingSizesControl, {
136
+ values: style === null || style === void 0 ? void 0 : (_style$spacing2 = style.spacing) === null || _style$spacing2 === void 0 ? void 0 : _style$spacing2.padding,
137
+ onChange: onChange,
138
+ label: __('Padding'),
139
+ sides: sides,
140
+ units: units,
141
+ allowReset: false,
142
+ splitOnAxis: splitOnAxis
132
143
  })),
133
144
  native: null
134
145
  });
@@ -142,13 +153,11 @@ export function PaddingVisualizer(_ref2) {
142
153
  } = _ref2;
143
154
  const padding = 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.padding;
144
155
  const style = useMemo(() => {
145
- var _padding$top, _padding$right, _padding$bottom, _padding$left;
146
-
147
156
  return {
148
- borderTopWidth: (_padding$top = padding === null || padding === void 0 ? void 0 : padding.top) !== null && _padding$top !== void 0 ? _padding$top : 0,
149
- borderRightWidth: (_padding$right = padding === null || padding === void 0 ? void 0 : padding.right) !== null && _padding$right !== void 0 ? _padding$right : 0,
150
- borderBottomWidth: (_padding$bottom = padding === null || padding === void 0 ? void 0 : padding.bottom) !== null && _padding$bottom !== void 0 ? _padding$bottom : 0,
151
- borderLeftWidth: (_padding$left = padding === null || padding === void 0 ? void 0 : padding.left) !== null && _padding$left !== void 0 ? _padding$left : 0
157
+ borderTopWidth: isValueSpacingPreset(padding === null || padding === void 0 ? void 0 : padding.top) ? getSpacingPresetCssVar(padding === null || padding === void 0 ? void 0 : padding.top) : padding === null || padding === void 0 ? void 0 : padding.top,
158
+ borderRightWidth: isValueSpacingPreset(padding === null || padding === void 0 ? void 0 : padding.right) ? getSpacingPresetCssVar(padding === null || padding === void 0 ? void 0 : padding.right) : padding === null || padding === void 0 ? void 0 : padding.right,
159
+ borderBottomWidth: isValueSpacingPreset(padding === null || padding === void 0 ? void 0 : padding.bottom) ? getSpacingPresetCssVar(padding === null || padding === void 0 ? void 0 : padding.bottom) : padding === null || padding === void 0 ? void 0 : padding.bottom,
160
+ borderLeftWidth: isValueSpacingPreset(padding === null || padding === void 0 ? void 0 : padding.left) ? getSpacingPresetCssVar(padding === null || padding === void 0 ? void 0 : padding.left) : padding === null || padding === void 0 ? void 0 : padding.left
152
161
  };
153
162
  }, [padding]);
154
163
  const [isActive, setIsActive] = useState(false);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/padding.js"],"names":["__","Platform","useState","useRef","useEffect","useMemo","getBlockSupport","__experimentalUseCustomUnits","useCustomUnits","__experimentalBoxControl","BoxControl","isShallowEqual","useSetting","AXIAL_SIDES","SPACING_SUPPORT_KEY","useCustomSides","useIsDimensionsSupportValid","cleanEmptyObject","BlockPopover","hasPaddingSupport","blockType","support","padding","hasPaddingValue","props","attributes","style","spacing","undefined","resetPadding","setAttributes","useIsPaddingDisabled","name","blockName","isDisabled","isInvalid","PaddingEdit","units","availableUnits","sides","splitOnAxis","some","side","includes","onChange","next","newStyle","select","web","native","PaddingVisualizer","clientId","borderTopWidth","top","borderRightWidth","right","borderBottomWidth","bottom","borderLeftWidth","left","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\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseMemo,\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';\n\n/**\n * Determines if there is padding support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasPaddingSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, SPACING_SUPPORT_KEY );\n\treturn !! ( true === support || support?.padding );\n}\n\n/**\n * Checks if there is a current value in the padding block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a padding value set.\n */\nexport function hasPaddingValue( props ) {\n\treturn props.attributes.style?.spacing?.padding !== undefined;\n}\n\n/**\n * Resets the padding block support attributes. This can be used when disabling\n * the padding 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 resetPadding( { 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\tpadding: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if padding settings have been disabled.\n *\n * @param {string} name The name of the block.\n *\n * @return {boolean} Whether padding setting is disabled.\n */\nexport function useIsPaddingDisabled( { name: blockName } = {} ) {\n\tconst isDisabled = ! useSetting( 'spacing.padding' );\n\tconst isInvalid = ! useIsDimensionsSupportValid( blockName, 'padding' );\n\n\treturn ! hasPaddingSupport( blockName ) || isDisabled || isInvalid;\n}\n\n/**\n * Inspector control panel containing the padding related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Padding edit element.\n */\nexport function PaddingEdit( props ) {\n\tconst {\n\t\tname: blockName,\n\t\tattributes: { style },\n\t\tsetAttributes,\n\t} = props;\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, 'padding' );\n\tconst splitOnAxis =\n\t\tsides && sides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tif ( useIsPaddingDisabled( 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\tpadding: 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<BoxControl\n\t\t\t\t\tvalues={ style?.spacing?.padding }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\tsides={ sides }\n\t\t\t\t\tunits={ units }\n\t\t\t\t\tallowReset={ false }\n\t\t\t\t\tsplitOnAxis={ splitOnAxis }\n\t\t\t\t/>\n\t\t\t</>\n\t\t),\n\t\tnative: null,\n\t} );\n}\n\nexport function PaddingVisualizer( { clientId, attributes } ) {\n\tconst padding = attributes?.style?.spacing?.padding;\n\tconst style = useMemo( () => {\n\t\treturn {\n\t\t\tborderTopWidth: padding?.top ?? 0,\n\t\t\tborderRightWidth: padding?.right ?? 0,\n\t\t\tborderBottomWidth: padding?.bottom ?? 0,\n\t\t\tborderLeftWidth: padding?.left ?? 0,\n\t\t};\n\t}, [ padding ] );\n\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst valueRef = useRef( padding );\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( padding, valueRef.current ) ) {\n\t\t\tsetIsActive( true );\n\t\t\tvalueRef.current = padding;\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}, [ padding ] );\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={ padding }\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/padding.js"],"names":["__","Platform","useState","useRef","useEffect","useMemo","getBlockSupport","__experimentalUseCustomUnits","useCustomUnits","__experimentalBoxControl","BoxControl","isShallowEqual","useSetting","AXIAL_SIDES","SPACING_SUPPORT_KEY","useCustomSides","useIsDimensionsSupportValid","cleanEmptyObject","BlockPopover","SpacingSizesControl","getSpacingPresetCssVar","isValueSpacingPreset","hasPaddingSupport","blockType","support","padding","hasPaddingValue","props","attributes","style","spacing","undefined","resetPadding","setAttributes","useIsPaddingDisabled","name","blockName","isDisabled","isInvalid","PaddingEdit","spacingSizes","units","availableUnits","sides","splitOnAxis","some","side","includes","onChange","next","newStyle","select","web","length","native","PaddingVisualizer","clientId","borderTopWidth","top","borderRightWidth","right","borderBottomWidth","bottom","borderLeftWidth","left","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\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseMemo,\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 {\n\tgetSpacingPresetCssVar,\n\tisValueSpacingPreset,\n} from '../components/spacing-sizes-control/utils';\n/**\n * Determines if there is padding support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasPaddingSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, SPACING_SUPPORT_KEY );\n\treturn !! ( true === support || support?.padding );\n}\n\n/**\n * Checks if there is a current value in the padding block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a padding value set.\n */\nexport function hasPaddingValue( props ) {\n\treturn props.attributes.style?.spacing?.padding !== undefined;\n}\n\n/**\n * Resets the padding block support attributes. This can be used when disabling\n * the padding 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 resetPadding( { 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\tpadding: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if padding settings have been disabled.\n *\n * @param {string} name The name of the block.\n *\n * @return {boolean} Whether padding setting is disabled.\n */\nexport function useIsPaddingDisabled( { name: blockName } = {} ) {\n\tconst isDisabled = ! useSetting( 'spacing.padding' );\n\tconst isInvalid = ! useIsDimensionsSupportValid( blockName, 'padding' );\n\n\treturn ! hasPaddingSupport( blockName ) || isDisabled || isInvalid;\n}\n\n/**\n * Inspector control panel containing the padding related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Padding edit element.\n */\nexport function PaddingEdit( 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, 'padding' );\n\tconst splitOnAxis =\n\t\tsides && sides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tif ( useIsPaddingDisabled( 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\tpadding: 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?.padding }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabel={ __( 'Padding' ) }\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?.padding }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabel={ __( 'Padding' ) }\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</>\n\t\t),\n\t\tnative: null,\n\t} );\n}\n\nexport function PaddingVisualizer( { clientId, attributes } ) {\n\tconst padding = attributes?.style?.spacing?.padding;\n\tconst style = useMemo( () => {\n\t\treturn {\n\t\t\tborderTopWidth: isValueSpacingPreset( padding?.top )\n\t\t\t\t? getSpacingPresetCssVar( padding?.top )\n\t\t\t\t: padding?.top,\n\t\t\tborderRightWidth: isValueSpacingPreset( padding?.right )\n\t\t\t\t? getSpacingPresetCssVar( padding?.right )\n\t\t\t\t: padding?.right,\n\t\t\tborderBottomWidth: isValueSpacingPreset( padding?.bottom )\n\t\t\t\t? getSpacingPresetCssVar( padding?.bottom )\n\t\t\t\t: padding?.bottom,\n\t\t\tborderLeftWidth: isValueSpacingPreset( padding?.left )\n\t\t\t\t? getSpacingPresetCssVar( padding?.left )\n\t\t\t\t: padding?.left,\n\t\t};\n\t}, [ padding ] );\n\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst valueRef = useRef( padding );\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( padding, valueRef.current ) ) {\n\t\t\tsetIsActive( true );\n\t\t\tvalueRef.current = padding;\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}, [ padding ] );\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={ padding }\n\t\t>\n\t\t\t<div className=\"block-editor__padding-visualizer\" style={ style } />\n\t\t</BlockPopover>\n\t);\n}\n"]}