@wordpress/block-editor 9.4.0 → 9.5.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 (234) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -8
  3. package/build/components/block-list/block-invalid-warning.native.js +54 -6
  4. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  5. package/build/components/block-list/block.js +2 -2
  6. package/build/components/block-list/block.js.map +1 -1
  7. package/build/components/block-list/block.native.js +2 -1
  8. package/build/components/block-list/block.native.js.map +1 -1
  9. package/build/components/block-list/index.native.js +4 -3
  10. package/build/components/block-list/index.native.js.map +1 -1
  11. package/build/components/block-list/layout.js +20 -5
  12. package/build/components/block-list/layout.js.map +1 -1
  13. package/build/components/block-list/use-block-props/use-block-class-names.js +5 -2
  14. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  15. package/build/components/block-lock/modal.js +35 -5
  16. package/build/components/block-lock/modal.js.map +1 -1
  17. package/build/components/block-pattern-setup/index.js +5 -17
  18. package/build/components/block-pattern-setup/index.js.map +1 -1
  19. package/build/components/block-popover/inbetween.js +1 -1
  20. package/build/components/block-popover/inbetween.js.map +1 -1
  21. package/build/components/block-popover/index.js +1 -1
  22. package/build/components/block-popover/index.js.map +1 -1
  23. package/build/components/block-settings-menu/block-mode-toggle.js +1 -1
  24. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  25. package/build/components/block-settings-menu/block-settings-dropdown.js +4 -1
  26. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  27. package/build/components/block-styles/preview.native.js +3 -1
  28. package/build/components/block-styles/preview.native.js.map +1 -1
  29. package/build/components/block-switcher/index.js +7 -1
  30. package/build/components/block-switcher/index.js.map +1 -1
  31. package/build/components/block-title/index.js +8 -2
  32. package/build/components/block-title/index.js.map +1 -1
  33. package/build/components/block-title/use-block-display-title.js +12 -5
  34. package/build/components/block-title/use-block-display-title.js.map +1 -1
  35. package/build/components/block-tools/block-contextual-toolbar.js +1 -1
  36. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  37. package/build/components/border-radius-control/index.js +2 -0
  38. package/build/components/border-radius-control/index.js.map +1 -1
  39. package/build/components/colors/with-colors.js +1 -1
  40. package/build/components/colors/with-colors.js.map +1 -1
  41. package/build/components/colors-gradients/control.js +45 -39
  42. package/build/components/colors-gradients/control.js.map +1 -1
  43. package/build/components/date-format-picker/index.js +1 -1
  44. package/build/components/date-format-picker/index.js.map +1 -1
  45. package/build/components/iframe/index.js +19 -6
  46. package/build/components/iframe/index.js.map +1 -1
  47. package/build/components/link-control/index.js +1 -1
  48. package/build/components/link-control/index.js.map +1 -1
  49. package/build/components/list-view/block-select-button.js +15 -7
  50. package/build/components/list-view/block-select-button.js.map +1 -1
  51. package/build/components/list-view/drop-indicator.js +1 -1
  52. package/build/components/list-view/drop-indicator.js.map +1 -1
  53. package/build/components/media-placeholder/index.js +13 -2
  54. package/build/components/media-placeholder/index.js.map +1 -1
  55. package/build/components/media-replace-flow/index.js +3 -6
  56. package/build/components/media-replace-flow/index.js.map +1 -1
  57. package/build/components/url-popover/index.js +2 -1
  58. package/build/components/url-popover/index.js.map +1 -1
  59. package/build/components/writing-flow/use-arrow-nav.js +34 -2
  60. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  61. package/build/components/writing-flow/use-multi-selection.js +3 -47
  62. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  63. package/build/components/writing-flow/use-selection-observer.js +1 -3
  64. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  65. package/build/hooks/color.js +2 -4
  66. package/build/hooks/color.js.map +1 -1
  67. package/build/hooks/index.js +8 -0
  68. package/build/hooks/index.js.map +1 -1
  69. package/build/hooks/layout.js +41 -14
  70. package/build/hooks/layout.js.map +1 -1
  71. package/build/hooks/utils.js +5 -3
  72. package/build/hooks/utils.js.map +1 -1
  73. package/build/index.js +7 -0
  74. package/build/index.js.map +1 -1
  75. package/build/layouts/flex.js +40 -36
  76. package/build/layouts/flex.js.map +1 -1
  77. package/build/layouts/flow.js +10 -35
  78. package/build/layouts/flow.js.map +1 -1
  79. package/build/layouts/utils.js +35 -3
  80. package/build/layouts/utils.js.map +1 -1
  81. package/build/store/actions.js +15 -18
  82. package/build/store/actions.js.map +1 -1
  83. package/build/store/index.js +0 -4
  84. package/build/store/index.js.map +1 -1
  85. package/build/store/reducer.js +5 -3
  86. package/build/store/reducer.js.map +1 -1
  87. package/build/store/selectors.js +3 -3
  88. package/build/store/selectors.js.map +1 -1
  89. package/build-module/components/block-list/block-invalid-warning.native.js +50 -6
  90. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  91. package/build-module/components/block-list/block.js +2 -2
  92. package/build-module/components/block-list/block.js.map +1 -1
  93. package/build-module/components/block-list/block.native.js +2 -1
  94. package/build-module/components/block-list/block.native.js.map +1 -1
  95. package/build-module/components/block-list/index.native.js +3 -1
  96. package/build-module/components/block-list/index.native.js.map +1 -1
  97. package/build-module/components/block-list/layout.js +19 -4
  98. package/build-module/components/block-list/layout.js.map +1 -1
  99. package/build-module/components/block-list/use-block-props/use-block-class-names.js +5 -2
  100. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  101. package/build-module/components/block-lock/modal.js +37 -6
  102. package/build-module/components/block-lock/modal.js.map +1 -1
  103. package/build-module/components/block-pattern-setup/index.js +6 -18
  104. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  105. package/build-module/components/block-popover/inbetween.js +1 -1
  106. package/build-module/components/block-popover/inbetween.js.map +1 -1
  107. package/build-module/components/block-popover/index.js +1 -1
  108. package/build-module/components/block-popover/index.js.map +1 -1
  109. package/build-module/components/block-settings-menu/block-mode-toggle.js +1 -1
  110. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  111. package/build-module/components/block-settings-menu/block-settings-dropdown.js +4 -1
  112. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  113. package/build-module/components/block-styles/preview.native.js +3 -2
  114. package/build-module/components/block-styles/preview.native.js.map +1 -1
  115. package/build-module/components/block-switcher/index.js +7 -1
  116. package/build-module/components/block-switcher/index.js.map +1 -1
  117. package/build-module/components/block-title/index.js +8 -2
  118. package/build-module/components/block-title/index.js.map +1 -1
  119. package/build-module/components/block-title/use-block-display-title.js +12 -5
  120. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  121. package/build-module/components/block-tools/block-contextual-toolbar.js +1 -1
  122. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  123. package/build-module/components/border-radius-control/index.js +2 -0
  124. package/build-module/components/border-radius-control/index.js.map +1 -1
  125. package/build-module/components/colors/with-colors.js +2 -2
  126. package/build-module/components/colors/with-colors.js.map +1 -1
  127. package/build-module/components/colors-gradients/control.js +46 -40
  128. package/build-module/components/colors-gradients/control.js.map +1 -1
  129. package/build-module/components/date-format-picker/index.js +1 -1
  130. package/build-module/components/date-format-picker/index.js.map +1 -1
  131. package/build-module/components/iframe/index.js +19 -6
  132. package/build-module/components/iframe/index.js.map +1 -1
  133. package/build-module/components/link-control/index.js +1 -1
  134. package/build-module/components/link-control/index.js.map +1 -1
  135. package/build-module/components/list-view/block-select-button.js +16 -8
  136. package/build-module/components/list-view/block-select-button.js.map +1 -1
  137. package/build-module/components/list-view/drop-indicator.js +1 -1
  138. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  139. package/build-module/components/media-placeholder/index.js +13 -2
  140. package/build-module/components/media-placeholder/index.js.map +1 -1
  141. package/build-module/components/media-replace-flow/index.js +4 -7
  142. package/build-module/components/media-replace-flow/index.js.map +1 -1
  143. package/build-module/components/url-popover/index.js +2 -1
  144. package/build-module/components/url-popover/index.js.map +1 -1
  145. package/build-module/components/writing-flow/use-arrow-nav.js +35 -3
  146. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  147. package/build-module/components/writing-flow/use-multi-selection.js +3 -45
  148. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  149. package/build-module/components/writing-flow/use-selection-observer.js +1 -3
  150. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  151. package/build-module/hooks/color.js +2 -3
  152. package/build-module/hooks/color.js.map +1 -1
  153. package/build-module/hooks/index.js +1 -0
  154. package/build-module/hooks/index.js.map +1 -1
  155. package/build-module/hooks/layout.js +42 -15
  156. package/build-module/hooks/layout.js.map +1 -1
  157. package/build-module/hooks/utils.js +5 -2
  158. package/build-module/hooks/utils.js.map +1 -1
  159. package/build-module/index.js +1 -1
  160. package/build-module/index.js.map +1 -1
  161. package/build-module/layouts/flex.js +41 -33
  162. package/build-module/layouts/flex.js.map +1 -1
  163. package/build-module/layouts/flow.js +11 -36
  164. package/build-module/layouts/flow.js.map +1 -1
  165. package/build-module/layouts/utils.js +33 -3
  166. package/build-module/layouts/utils.js.map +1 -1
  167. package/build-module/store/actions.js +9 -10
  168. package/build-module/store/actions.js.map +1 -1
  169. package/build-module/store/index.js +0 -4
  170. package/build-module/store/index.js.map +1 -1
  171. package/build-module/store/reducer.js +5 -2
  172. package/build-module/store/reducer.js.map +1 -1
  173. package/build-module/store/selectors.js +4 -4
  174. package/build-module/store/selectors.js.map +1 -1
  175. package/build-style/style-rtl.css +36 -10
  176. package/build-style/style.css +36 -10
  177. package/package.json +28 -28
  178. package/src/components/block-list/block-invalid-warning.native.js +42 -7
  179. package/src/components/block-list/block.js +2 -2
  180. package/src/components/block-list/block.native.js +1 -0
  181. package/src/components/block-list/index.native.js +1 -1
  182. package/src/components/block-list/layout.js +15 -3
  183. package/src/components/block-list/style.scss +1 -1
  184. package/src/components/block-list/use-block-props/use-block-class-names.js +5 -1
  185. package/src/components/block-lock/modal.js +42 -4
  186. package/src/components/block-lock/style.scss +10 -0
  187. package/src/components/block-pattern-setup/index.js +3 -15
  188. package/src/components/block-pattern-setup/style.scss +4 -2
  189. package/src/components/block-popover/inbetween.js +1 -1
  190. package/src/components/block-popover/index.js +1 -1
  191. package/src/components/block-settings-menu/block-mode-toggle.js +1 -0
  192. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
  193. package/src/components/block-styles/preview.native.js +3 -2
  194. package/src/components/block-switcher/index.js +7 -1
  195. package/src/components/block-title/index.js +3 -2
  196. package/src/components/block-title/use-block-display-title.js +11 -5
  197. package/src/components/block-tools/block-contextual-toolbar.js +3 -1
  198. package/src/components/border-radius-control/index.js +2 -0
  199. package/src/components/colors/with-colors.js +2 -2
  200. package/src/components/colors-gradients/control.js +77 -65
  201. package/src/components/colors-gradients/style.scss +4 -0
  202. package/src/components/colors-gradients/test/control.js +16 -23
  203. package/src/components/date-format-picker/index.js +1 -0
  204. package/src/components/iframe/index.js +25 -6
  205. package/src/components/inserter/style.scss +1 -1
  206. package/src/components/link-control/index.js +1 -0
  207. package/src/components/link-control/test/index.js +6 -4
  208. package/src/components/list-view/block-select-button.js +29 -14
  209. package/src/components/list-view/drop-indicator.js +1 -1
  210. package/src/components/list-view/style.scss +18 -4
  211. package/src/components/media-placeholder/index.js +19 -0
  212. package/src/components/media-replace-flow/index.js +3 -6
  213. package/src/components/media-replace-flow/test/index.js +14 -4
  214. package/src/components/url-popover/index.js +1 -0
  215. package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -0
  216. package/src/components/writing-flow/use-arrow-nav.js +32 -1
  217. package/src/components/writing-flow/use-multi-selection.js +1 -48
  218. package/src/components/writing-flow/use-selection-observer.js +2 -3
  219. package/src/hooks/color.js +10 -3
  220. package/src/hooks/index.js +1 -0
  221. package/src/hooks/layout.js +46 -20
  222. package/src/hooks/utils.js +7 -3
  223. package/src/index.js +1 -0
  224. package/src/layouts/flex.js +47 -41
  225. package/src/layouts/flow.js +14 -35
  226. package/src/layouts/test/flex.js +21 -0
  227. package/src/layouts/test/flow.js +21 -0
  228. package/src/layouts/test/utils.js +138 -0
  229. package/src/layouts/utils.js +44 -3
  230. package/src/store/actions.js +10 -11
  231. package/src/store/index.js +0 -4
  232. package/src/store/reducer.js +3 -2
  233. package/src/store/selectors.js +3 -4
  234. package/tsconfig.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/color.js"],"names":["classnames","isObject","addFilter","getBlockSupport","__","useRef","useEffect","useMemo","Platform","createHigherOrderComponent","getColorClassName","getColorObjectByColorValue","getColorObjectByAttributeValues","__experimentalGetGradientClass","getGradientValueBySlug","getGradientSlugByValue","cleanEmptyObject","transformStyles","immutableSet","shouldSkipSerialization","ColorPanel","useSetting","COLOR_SUPPORT_KEY","hasColorSupport","blockType","colorSupport","link","gradient","background","text","hasLinkColorSupport","OS","hasGradientSupport","gradients","hasBackgroundColorSupport","hasTextColorSupport","clearColorFromStyles","path","style","undefined","resetAllTextFilter","attributes","textColor","resetAllLinkFilter","clearBackgroundAndGradient","backgroundColor","color","addAttributes","settings","Object","assign","type","addSaveProps","props","hasGradient","shouldSerialize","feature","textClass","gradientClass","backgroundClass","serializeHasBackground","hasBackground","newClassName","className","elements","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","getLinkColorFromAttributeValue","colors","value","attributeParsed","exec","ColorEdit","name","blockName","userPalette","themePalette","defaultPalette","allSolids","userGradientPalette","themeGradientPalette","defaultGradientPalette","allGradients","areCustomSolidsEnabled","areCustomGradientsEnabled","isBackgroundEnabled","isLinkEnabled","isTextEnabled","solidsEnabled","length","gradientsEnabled","localAttributes","current","hasLinkColor","hasTextColor","hasBackgroundColor","hasGradientColor","gradientValue","onChangeColor","colorObject","attributeName","newStyle","slug","newNamedColor","newAttributes","setAttributes","onChangeGradient","onChangeLinkColor","newLinkColorValue","enableContrastChecking","defaultColorControls","clientId","label","onColorChange","colorValue","isShownByDefault","resetAllFilter","onGradientChange","clearable","withColorPaletteStyles","BlockListBlock","extraStyles","wrapperProps","MIGRATION_PATHS","linkColor","addTransforms","result","source","index","results","destinationBlockType","activeSupports"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { isObject } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useEffect, useMemo, Platform } from '@wordpress/element';\nimport { createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n} from '../components/colors';\nimport {\n\t__experimentalGetGradientClass,\n\tgetGradientValueBySlug,\n\tgetGradientSlugByValue,\n} from '../components/gradients';\nimport {\n\tcleanEmptyObject,\n\ttransformStyles,\n\timmutableSet,\n\tshouldSkipSerialization,\n} from './utils';\nimport ColorPanel from './color-panel';\nimport useSetting from '../components/use-setting';\n\nexport const COLOR_SUPPORT_KEY = 'color';\n\nconst hasColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\treturn (\n\t\tcolorSupport &&\n\t\t( colorSupport.link === true ||\n\t\t\tcolorSupport.gradient === true ||\n\t\t\tcolorSupport.background !== false ||\n\t\t\tcolorSupport.text !== false )\n\t);\n};\n\nconst hasLinkColorSupport = ( blockType ) => {\n\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn isObject( colorSupport ) && !! colorSupport.link;\n};\n\nconst hasGradientSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn isObject( colorSupport ) && !! colorSupport.gradients;\n};\n\nconst hasBackgroundColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn colorSupport && colorSupport.background !== false;\n};\n\nconst hasTextColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn colorSupport && colorSupport.text !== false;\n};\n\n/**\n * Clears a single color property from a style object.\n *\n * @param {Array} path Path to color property to clear within styles object.\n * @param {Object} style Block attributes style object.\n * @return {Object} Styles with the color property omitted.\n */\nconst clearColorFromStyles = ( path, style ) =>\n\tcleanEmptyObject( immutableSet( style, path, undefined ) );\n\n/**\n * Clears text color related properties from supplied attributes.\n *\n * @param {Object} attributes Block attributes.\n * @return {Object} Update block attributes with text color properties omitted.\n */\nconst resetAllTextFilter = ( attributes ) => ( {\n\ttextColor: undefined,\n\tstyle: clearColorFromStyles( [ 'color', 'text' ], attributes.style ),\n} );\n\n/**\n * Clears link color related properties from supplied attributes.\n *\n * @param {Object} attributes Block attributes.\n * @return {Object} Update block attributes with link color properties omitted.\n */\nconst resetAllLinkFilter = ( attributes ) => ( {\n\tstyle: clearColorFromStyles(\n\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\tattributes.style\n\t),\n} );\n\n/**\n * Clears all background color related properties including gradients from\n * supplied block attributes.\n *\n * @param {Object} attributes Block attributes.\n * @return {Object} Block attributes with background and gradient omitted.\n */\nconst clearBackgroundAndGradient = ( attributes ) => ( {\n\tbackgroundColor: undefined,\n\tgradient: undefined,\n\tstyle: {\n\t\t...attributes.style,\n\t\tcolor: {\n\t\t\t...attributes.style?.color,\n\t\t\tbackground: undefined,\n\t\t\tgradient: undefined,\n\t\t},\n\t},\n} );\n\n/**\n * Filters registered block settings, extending attributes to include\n * `backgroundColor` and `textColor` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasColorSupport( settings ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( ! settings.attributes.backgroundColor ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\tif ( ! settings.attributes.textColor ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\tif ( hasGradientSupport( settings ) && ! settings.attributes.gradient ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tgradient: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override props assigned to save component to inject colors classnames.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps( props, blockType, attributes ) {\n\tif (\n\t\t! hasColorSupport( blockType ) ||\n\t\tshouldSkipSerialization( blockType, COLOR_SUPPORT_KEY )\n\t) {\n\t\treturn props;\n\t}\n\n\tconst hasGradient = hasGradientSupport( blockType );\n\n\t// I'd have preferred to avoid the \"style\" attribute usage here\n\tconst { backgroundColor, textColor, gradient, style } = attributes;\n\n\tconst shouldSerialize = ( feature ) =>\n\t\t! shouldSkipSerialization( blockType, COLOR_SUPPORT_KEY, feature );\n\n\t// Primary color classes must come before the `has-text-color`,\n\t// `has-background` and `has-link-color` classes to maintain backwards\n\t// compatibility and avoid block invalidations.\n\tconst textClass = shouldSerialize( 'text' )\n\t\t? getColorClassName( 'color', textColor )\n\t\t: undefined;\n\n\tconst gradientClass = shouldSerialize( 'gradients' )\n\t\t? __experimentalGetGradientClass( gradient )\n\t\t: undefined;\n\n\tconst backgroundClass = shouldSerialize( 'background' )\n\t\t? getColorClassName( 'background-color', backgroundColor )\n\t\t: undefined;\n\n\tconst serializeHasBackground =\n\t\tshouldSerialize( 'background' ) || shouldSerialize( 'gradients' );\n\tconst hasBackground =\n\t\tbackgroundColor ||\n\t\tstyle?.color?.background ||\n\t\t( hasGradient && ( gradient || style?.color?.gradient ) );\n\n\tconst newClassName = classnames(\n\t\tprops.className,\n\t\ttextClass,\n\t\tgradientClass,\n\t\t{\n\t\t\t// Don't apply the background class if there's a custom gradient.\n\t\t\t[ backgroundClass ]:\n\t\t\t\t( ! hasGradient || ! style?.color?.gradient ) &&\n\t\t\t\t!! backgroundClass,\n\t\t\t'has-text-color':\n\t\t\t\tshouldSerialize( 'text' ) &&\n\t\t\t\t( textColor || style?.color?.text ),\n\t\t\t'has-background': serializeHasBackground && hasBackground,\n\t\t\t'has-link-color':\n\t\t\t\tshouldSerialize( 'link' ) && style?.elements?.link?.color,\n\t\t}\n\t);\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to extend the block edit wrapper\n * to apply the desired styles and classnames properly.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addEditProps( settings ) {\n\tif (\n\t\t! hasColorSupport( settings ) ||\n\t\tshouldSkipSerialization( settings, COLOR_SUPPORT_KEY )\n\t) {\n\t\treturn settings;\n\t}\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\nconst getLinkColorFromAttributeValue = ( colors, value ) => {\n\tconst attributeParsed = /var:preset\\|color\\|(.+)/.exec( value );\n\tif ( attributeParsed && attributeParsed[ 1 ] ) {\n\t\treturn getColorObjectByAttributeValues( colors, attributeParsed[ 1 ] )\n\t\t\t.color;\n\t}\n\treturn value;\n};\n\n/**\n * Inspector control panel containing the color related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Color edit element.\n */\nexport function ColorEdit( props ) {\n\tconst { name: blockName, attributes } = props;\n\t// Some color settings have a special handling for deprecated flags in `useSetting`,\n\t// so we can't unwrap them by doing const { ... } = useSetting('color')\n\t// until https://github.com/WordPress/gutenberg/issues/37094 is fixed.\n\tconst userPalette = useSetting( 'color.palette.custom' );\n\tconst themePalette = useSetting( 'color.palette.theme' );\n\tconst defaultPalette = useSetting( 'color.palette.default' );\n\tconst allSolids = useMemo(\n\t\t() => [\n\t\t\t...( userPalette || [] ),\n\t\t\t...( themePalette || [] ),\n\t\t\t...( defaultPalette || [] ),\n\t\t],\n\t\t[ userPalette, themePalette, defaultPalette ]\n\t);\n\tconst userGradientPalette = useSetting( 'color.gradients.custom' );\n\tconst themeGradientPalette = useSetting( 'color.gradients.theme' );\n\tconst defaultGradientPalette = useSetting( 'color.gradients.default' );\n\tconst allGradients = useMemo(\n\t\t() => [\n\t\t\t...( userGradientPalette || [] ),\n\t\t\t...( themeGradientPalette || [] ),\n\t\t\t...( defaultGradientPalette || [] ),\n\t\t],\n\t\t[ userGradientPalette, themeGradientPalette, defaultGradientPalette ]\n\t);\n\tconst areCustomSolidsEnabled = useSetting( 'color.custom' );\n\tconst areCustomGradientsEnabled = useSetting( 'color.customGradient' );\n\tconst isBackgroundEnabled = useSetting( 'color.background' );\n\tconst isLinkEnabled = useSetting( 'color.link' );\n\tconst isTextEnabled = useSetting( 'color.text' );\n\n\tconst solidsEnabled =\n\t\tareCustomSolidsEnabled || ! themePalette || themePalette?.length > 0;\n\n\tconst gradientsEnabled =\n\t\tareCustomGradientsEnabled ||\n\t\t! themeGradientPalette ||\n\t\tthemeGradientPalette?.length > 0;\n\n\t// Shouldn't be needed but right now the ColorGradientsPanel\n\t// can trigger both onChangeColor and onChangeBackground\n\t// synchronously causing our two callbacks to override changes\n\t// from each other.\n\tconst localAttributes = useRef( attributes );\n\tuseEffect( () => {\n\t\tlocalAttributes.current = attributes;\n\t}, [ attributes ] );\n\n\tif ( ! hasColorSupport( blockName ) ) {\n\t\treturn null;\n\t}\n\n\tconst hasLinkColor =\n\t\thasLinkColorSupport( blockName ) && isLinkEnabled && solidsEnabled;\n\tconst hasTextColor =\n\t\thasTextColorSupport( blockName ) && isTextEnabled && solidsEnabled;\n\tconst hasBackgroundColor =\n\t\thasBackgroundColorSupport( blockName ) &&\n\t\tisBackgroundEnabled &&\n\t\tsolidsEnabled;\n\tconst hasGradientColor =\n\t\thasGradientSupport( blockName ) && gradientsEnabled;\n\n\tif (\n\t\t! hasLinkColor &&\n\t\t! hasTextColor &&\n\t\t! hasBackgroundColor &&\n\t\t! hasGradientColor\n\t) {\n\t\treturn null;\n\t}\n\n\tconst { style, textColor, backgroundColor, gradient } = attributes;\n\tlet gradientValue;\n\tif ( hasGradientColor && gradient ) {\n\t\tgradientValue = getGradientValueBySlug( allGradients, gradient );\n\t} else if ( hasGradientColor ) {\n\t\tgradientValue = style?.color?.gradient;\n\t}\n\n\tconst onChangeColor = ( name ) => ( value ) => {\n\t\tconst colorObject = getColorObjectByColorValue( allSolids, value );\n\t\tconst attributeName = name + 'Color';\n\t\tconst newStyle = {\n\t\t\t...localAttributes.current.style,\n\t\t\tcolor: {\n\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t[ name ]: colorObject?.slug ? undefined : value,\n\t\t\t},\n\t\t};\n\n\t\tconst newNamedColor = colorObject?.slug ? colorObject.slug : undefined;\n\t\tconst newAttributes = {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t[ attributeName ]: newNamedColor,\n\t\t};\n\n\t\tprops.setAttributes( newAttributes );\n\t\tlocalAttributes.current = {\n\t\t\t...localAttributes.current,\n\t\t\t...newAttributes,\n\t\t};\n\t};\n\n\tconst onChangeGradient = ( value ) => {\n\t\tconst slug = getGradientSlugByValue( allGradients, value );\n\t\tlet newAttributes;\n\t\tif ( slug ) {\n\t\t\tconst newStyle = {\n\t\t\t\t...localAttributes.current?.style,\n\t\t\t\tcolor: {\n\t\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t\tgradient: undefined,\n\t\t\t\t},\n\t\t\t};\n\t\t\tnewAttributes = {\n\t\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t\tgradient: slug,\n\t\t\t};\n\t\t} else {\n\t\t\tconst newStyle = {\n\t\t\t\t...localAttributes.current?.style,\n\t\t\t\tcolor: {\n\t\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t\tgradient: value,\n\t\t\t\t},\n\t\t\t};\n\t\t\tnewAttributes = {\n\t\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t\tgradient: undefined,\n\t\t\t};\n\t\t}\n\t\tprops.setAttributes( newAttributes );\n\t\tlocalAttributes.current = {\n\t\t\t...localAttributes.current,\n\t\t\t...newAttributes,\n\t\t};\n\t};\n\n\tconst onChangeLinkColor = ( value ) => {\n\t\tconst colorObject = getColorObjectByColorValue( allSolids, value );\n\t\tconst newLinkColorValue = colorObject?.slug\n\t\t\t? `var:preset|color|${ colorObject.slug }`\n\t\t\t: value;\n\n\t\tconst newStyle = cleanEmptyObject(\n\t\t\timmutableSet(\n\t\t\t\tlocalAttributes.current?.style,\n\t\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\t\tnewLinkColorValue\n\t\t\t)\n\t\t);\n\t\tprops.setAttributes( { style: newStyle } );\n\t\tlocalAttributes.current = {\n\t\t\t...localAttributes.current,\n\t\t\t...{ style: newStyle },\n\t\t};\n\t};\n\n\tconst enableContrastChecking =\n\t\tPlatform.OS === 'web' && ! gradient && ! style?.color?.gradient;\n\n\tconst defaultColorControls = getBlockSupport( props.name, [\n\t\tCOLOR_SUPPORT_KEY,\n\t\t'__experimentalDefaultControls',\n\t] );\n\n\treturn (\n\t\t<ColorPanel\n\t\t\tenableContrastChecking={ enableContrastChecking }\n\t\t\tclientId={ props.clientId }\n\t\t\tenableAlpha={ true }\n\t\t\tsettings={ [\n\t\t\t\t...( hasTextColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\t\t\t\tonColorChange: onChangeColor( 'text' ),\n\t\t\t\t\t\t\t\tcolorValue: getColorObjectByAttributeValues(\n\t\t\t\t\t\t\t\t\tallSolids,\n\t\t\t\t\t\t\t\t\ttextColor,\n\t\t\t\t\t\t\t\t\tstyle?.color?.text\n\t\t\t\t\t\t\t\t).color,\n\t\t\t\t\t\t\t\tisShownByDefault: defaultColorControls?.text,\n\t\t\t\t\t\t\t\tresetAllFilter: resetAllTextFilter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t\t...( hasBackgroundColor || hasGradientColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Background' ),\n\t\t\t\t\t\t\t\tonColorChange: hasBackgroundColor\n\t\t\t\t\t\t\t\t\t? onChangeColor( 'background' )\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\tcolorValue: getColorObjectByAttributeValues(\n\t\t\t\t\t\t\t\t\tallSolids,\n\t\t\t\t\t\t\t\t\tbackgroundColor,\n\t\t\t\t\t\t\t\t\tstyle?.color?.background\n\t\t\t\t\t\t\t\t).color,\n\t\t\t\t\t\t\t\tgradientValue,\n\t\t\t\t\t\t\t\tonGradientChange: hasGradientColor\n\t\t\t\t\t\t\t\t\t? onChangeGradient\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\tisShownByDefault:\n\t\t\t\t\t\t\t\t\tdefaultColorControls?.background,\n\t\t\t\t\t\t\t\tresetAllFilter: clearBackgroundAndGradient,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t\t...( hasLinkColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Link' ),\n\t\t\t\t\t\t\t\tonColorChange: onChangeLinkColor,\n\t\t\t\t\t\t\t\tcolorValue: getLinkColorFromAttributeValue(\n\t\t\t\t\t\t\t\t\tallSolids,\n\t\t\t\t\t\t\t\t\tstyle?.elements?.link?.color?.text\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tclearable:\n\t\t\t\t\t\t\t\t\t!! style?.elements?.link?.color?.text,\n\t\t\t\t\t\t\t\tisShownByDefault: defaultColorControls?.link,\n\t\t\t\t\t\t\t\tresetAllFilter: resetAllLinkFilter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t] }\n\t\t/>\n\t);\n}\n\n/**\n * This adds inline styles for color palette colors.\n * Ideally, this is not needed and themes should load their palettes on the editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withColorPaletteStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { backgroundColor, textColor } = attributes;\n\t\tconst userPalette = useSetting( 'color.palette.custom' ) || [];\n\t\tconst themePalette = useSetting( 'color.palette.theme' ) || [];\n\t\tconst defaultPalette = useSetting( 'color.palette.default' ) || [];\n\t\tconst colors = useMemo(\n\t\t\t() => [\n\t\t\t\t...( userPalette || [] ),\n\t\t\t\t...( themePalette || [] ),\n\t\t\t\t...( defaultPalette || [] ),\n\t\t\t],\n\t\t\t[ userPalette, themePalette, defaultPalette ]\n\t\t);\n\t\tif (\n\t\t\t! hasColorSupport( name ) ||\n\t\t\tshouldSkipSerialization( name, COLOR_SUPPORT_KEY )\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\t\tconst extraStyles = {};\n\n\t\tif (\n\t\t\ttextColor &&\n\t\t\t! shouldSkipSerialization( name, COLOR_SUPPORT_KEY, 'text' )\n\t\t) {\n\t\t\textraStyles.color = getColorObjectByAttributeValues(\n\t\t\t\tcolors,\n\t\t\t\ttextColor\n\t\t\t)?.color;\n\t\t}\n\t\tif (\n\t\t\tbackgroundColor &&\n\t\t\t! shouldSkipSerialization( name, COLOR_SUPPORT_KEY, 'background' )\n\t\t) {\n\t\t\textraStyles.backgroundColor = getColorObjectByAttributeValues(\n\t\t\t\tcolors,\n\t\t\t\tbackgroundColor\n\t\t\t)?.color;\n\t\t}\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\twrapperProps = {\n\t\t\t...props.wrapperProps,\n\t\t\tstyle: {\n\t\t\t\t...extraStyles,\n\t\t\t\t...props.wrapperProps?.style,\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\nconst MIGRATION_PATHS = {\n\tlinkColor: [ [ 'style', 'elements', 'link', 'color', 'text' ] ],\n\ttextColor: [ [ 'textColor' ], [ 'style', 'color', 'text' ] ],\n\tbackgroundColor: [\n\t\t[ 'backgroundColor' ],\n\t\t[ 'style', 'color', 'background' ],\n\t],\n\tgradient: [ [ 'gradient' ], [ 'style', 'color', 'gradient' ] ],\n};\n\nexport function addTransforms( result, source, index, results ) {\n\tconst destinationBlockType = result.name;\n\tconst activeSupports = {\n\t\tlinkColor: hasLinkColorSupport( destinationBlockType ),\n\t\ttextColor: hasTextColorSupport( destinationBlockType ),\n\t\tbackgroundColor: hasBackgroundColorSupport( destinationBlockType ),\n\t\tgradient: hasGradientSupport( destinationBlockType ),\n\t};\n\treturn transformStyles(\n\t\tactiveSupports,\n\t\tMIGRATION_PATHS,\n\t\tresult,\n\t\tsource,\n\t\tindex,\n\t\tresults\n\t);\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/color/addAttribute',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/color/addSaveProps',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/color/addEditProps',\n\taddEditProps\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/color/with-color-palette-styles',\n\twithColorPaletteStyles\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/color/addTransforms',\n\taddTransforms\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/color.js"],"names":["classnames","addFilter","getBlockSupport","__","useRef","useEffect","useMemo","Platform","createHigherOrderComponent","getColorClassName","getColorObjectByColorValue","getColorObjectByAttributeValues","__experimentalGetGradientClass","getGradientValueBySlug","getGradientSlugByValue","cleanEmptyObject","transformStyles","immutableSet","shouldSkipSerialization","ColorPanel","useSetting","COLOR_SUPPORT_KEY","hasColorSupport","blockType","colorSupport","link","gradient","background","text","hasLinkColorSupport","OS","hasGradientSupport","gradients","hasBackgroundColorSupport","hasTextColorSupport","clearColorFromStyles","path","style","undefined","resetAllTextFilter","attributes","textColor","resetAllLinkFilter","clearBackgroundAndGradient","backgroundColor","color","addAttributes","settings","Object","assign","type","addSaveProps","props","hasGradient","shouldSerialize","feature","textClass","gradientClass","backgroundClass","serializeHasBackground","hasBackground","newClassName","className","elements","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","getLinkColorFromAttributeValue","colors","value","attributeParsed","exec","ColorEdit","name","blockName","userPalette","themePalette","defaultPalette","allSolids","userGradientPalette","themeGradientPalette","defaultGradientPalette","allGradients","areCustomSolidsEnabled","areCustomGradientsEnabled","isBackgroundEnabled","isLinkEnabled","isTextEnabled","solidsEnabled","length","gradientsEnabled","localAttributes","current","hasLinkColor","hasTextColor","hasBackgroundColor","hasGradientColor","gradientValue","onChangeColor","colorObject","attributeName","newStyle","slug","newNamedColor","newAttributes","setAttributes","onChangeGradient","onChangeLinkColor","newLinkColorValue","enableContrastChecking","defaultColorControls","clientId","label","onColorChange","colorValue","isShownByDefault","resetAllFilter","onGradientChange","clearable","withColorPaletteStyles","BlockListBlock","extraStyles","wrapperProps","MIGRATION_PATHS","linkColor","addTransforms","result","source","index","results","destinationBlockType","activeSupports"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useEffect, useMemo, Platform } from '@wordpress/element';\nimport { createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n} from '../components/colors';\nimport {\n\t__experimentalGetGradientClass,\n\tgetGradientValueBySlug,\n\tgetGradientSlugByValue,\n} from '../components/gradients';\nimport {\n\tcleanEmptyObject,\n\ttransformStyles,\n\timmutableSet,\n\tshouldSkipSerialization,\n} from './utils';\nimport ColorPanel from './color-panel';\nimport useSetting from '../components/use-setting';\n\nexport const COLOR_SUPPORT_KEY = 'color';\n\nconst hasColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\treturn (\n\t\tcolorSupport &&\n\t\t( colorSupport.link === true ||\n\t\t\tcolorSupport.gradient === true ||\n\t\t\tcolorSupport.background !== false ||\n\t\t\tcolorSupport.text !== false )\n\t);\n};\n\nconst hasLinkColorSupport = ( blockType ) => {\n\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn (\n\t\tcolorSupport !== null &&\n\t\ttypeof colorSupport === 'object' &&\n\t\t!! colorSupport.link\n\t);\n};\n\nconst hasGradientSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn (\n\t\tcolorSupport !== null &&\n\t\ttypeof colorSupport === 'object' &&\n\t\t!! colorSupport.gradients\n\t);\n};\n\nconst hasBackgroundColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn colorSupport && colorSupport.background !== false;\n};\n\nconst hasTextColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn colorSupport && colorSupport.text !== false;\n};\n\n/**\n * Clears a single color property from a style object.\n *\n * @param {Array} path Path to color property to clear within styles object.\n * @param {Object} style Block attributes style object.\n * @return {Object} Styles with the color property omitted.\n */\nconst clearColorFromStyles = ( path, style ) =>\n\tcleanEmptyObject( immutableSet( style, path, undefined ) );\n\n/**\n * Clears text color related properties from supplied attributes.\n *\n * @param {Object} attributes Block attributes.\n * @return {Object} Update block attributes with text color properties omitted.\n */\nconst resetAllTextFilter = ( attributes ) => ( {\n\ttextColor: undefined,\n\tstyle: clearColorFromStyles( [ 'color', 'text' ], attributes.style ),\n} );\n\n/**\n * Clears link color related properties from supplied attributes.\n *\n * @param {Object} attributes Block attributes.\n * @return {Object} Update block attributes with link color properties omitted.\n */\nconst resetAllLinkFilter = ( attributes ) => ( {\n\tstyle: clearColorFromStyles(\n\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\tattributes.style\n\t),\n} );\n\n/**\n * Clears all background color related properties including gradients from\n * supplied block attributes.\n *\n * @param {Object} attributes Block attributes.\n * @return {Object} Block attributes with background and gradient omitted.\n */\nconst clearBackgroundAndGradient = ( attributes ) => ( {\n\tbackgroundColor: undefined,\n\tgradient: undefined,\n\tstyle: {\n\t\t...attributes.style,\n\t\tcolor: {\n\t\t\t...attributes.style?.color,\n\t\t\tbackground: undefined,\n\t\t\tgradient: undefined,\n\t\t},\n\t},\n} );\n\n/**\n * Filters registered block settings, extending attributes to include\n * `backgroundColor` and `textColor` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasColorSupport( settings ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( ! settings.attributes.backgroundColor ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\tif ( ! settings.attributes.textColor ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\tif ( hasGradientSupport( settings ) && ! settings.attributes.gradient ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tgradient: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override props assigned to save component to inject colors classnames.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps( props, blockType, attributes ) {\n\tif (\n\t\t! hasColorSupport( blockType ) ||\n\t\tshouldSkipSerialization( blockType, COLOR_SUPPORT_KEY )\n\t) {\n\t\treturn props;\n\t}\n\n\tconst hasGradient = hasGradientSupport( blockType );\n\n\t// I'd have preferred to avoid the \"style\" attribute usage here\n\tconst { backgroundColor, textColor, gradient, style } = attributes;\n\n\tconst shouldSerialize = ( feature ) =>\n\t\t! shouldSkipSerialization( blockType, COLOR_SUPPORT_KEY, feature );\n\n\t// Primary color classes must come before the `has-text-color`,\n\t// `has-background` and `has-link-color` classes to maintain backwards\n\t// compatibility and avoid block invalidations.\n\tconst textClass = shouldSerialize( 'text' )\n\t\t? getColorClassName( 'color', textColor )\n\t\t: undefined;\n\n\tconst gradientClass = shouldSerialize( 'gradients' )\n\t\t? __experimentalGetGradientClass( gradient )\n\t\t: undefined;\n\n\tconst backgroundClass = shouldSerialize( 'background' )\n\t\t? getColorClassName( 'background-color', backgroundColor )\n\t\t: undefined;\n\n\tconst serializeHasBackground =\n\t\tshouldSerialize( 'background' ) || shouldSerialize( 'gradients' );\n\tconst hasBackground =\n\t\tbackgroundColor ||\n\t\tstyle?.color?.background ||\n\t\t( hasGradient && ( gradient || style?.color?.gradient ) );\n\n\tconst newClassName = classnames(\n\t\tprops.className,\n\t\ttextClass,\n\t\tgradientClass,\n\t\t{\n\t\t\t// Don't apply the background class if there's a custom gradient.\n\t\t\t[ backgroundClass ]:\n\t\t\t\t( ! hasGradient || ! style?.color?.gradient ) &&\n\t\t\t\t!! backgroundClass,\n\t\t\t'has-text-color':\n\t\t\t\tshouldSerialize( 'text' ) &&\n\t\t\t\t( textColor || style?.color?.text ),\n\t\t\t'has-background': serializeHasBackground && hasBackground,\n\t\t\t'has-link-color':\n\t\t\t\tshouldSerialize( 'link' ) && style?.elements?.link?.color,\n\t\t}\n\t);\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to extend the block edit wrapper\n * to apply the desired styles and classnames properly.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addEditProps( settings ) {\n\tif (\n\t\t! hasColorSupport( settings ) ||\n\t\tshouldSkipSerialization( settings, COLOR_SUPPORT_KEY )\n\t) {\n\t\treturn settings;\n\t}\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\nconst getLinkColorFromAttributeValue = ( colors, value ) => {\n\tconst attributeParsed = /var:preset\\|color\\|(.+)/.exec( value );\n\tif ( attributeParsed && attributeParsed[ 1 ] ) {\n\t\treturn getColorObjectByAttributeValues( colors, attributeParsed[ 1 ] )\n\t\t\t.color;\n\t}\n\treturn value;\n};\n\n/**\n * Inspector control panel containing the color related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Color edit element.\n */\nexport function ColorEdit( props ) {\n\tconst { name: blockName, attributes } = props;\n\t// Some color settings have a special handling for deprecated flags in `useSetting`,\n\t// so we can't unwrap them by doing const { ... } = useSetting('color')\n\t// until https://github.com/WordPress/gutenberg/issues/37094 is fixed.\n\tconst userPalette = useSetting( 'color.palette.custom' );\n\tconst themePalette = useSetting( 'color.palette.theme' );\n\tconst defaultPalette = useSetting( 'color.palette.default' );\n\tconst allSolids = useMemo(\n\t\t() => [\n\t\t\t...( userPalette || [] ),\n\t\t\t...( themePalette || [] ),\n\t\t\t...( defaultPalette || [] ),\n\t\t],\n\t\t[ userPalette, themePalette, defaultPalette ]\n\t);\n\tconst userGradientPalette = useSetting( 'color.gradients.custom' );\n\tconst themeGradientPalette = useSetting( 'color.gradients.theme' );\n\tconst defaultGradientPalette = useSetting( 'color.gradients.default' );\n\tconst allGradients = useMemo(\n\t\t() => [\n\t\t\t...( userGradientPalette || [] ),\n\t\t\t...( themeGradientPalette || [] ),\n\t\t\t...( defaultGradientPalette || [] ),\n\t\t],\n\t\t[ userGradientPalette, themeGradientPalette, defaultGradientPalette ]\n\t);\n\tconst areCustomSolidsEnabled = useSetting( 'color.custom' );\n\tconst areCustomGradientsEnabled = useSetting( 'color.customGradient' );\n\tconst isBackgroundEnabled = useSetting( 'color.background' );\n\tconst isLinkEnabled = useSetting( 'color.link' );\n\tconst isTextEnabled = useSetting( 'color.text' );\n\n\tconst solidsEnabled =\n\t\tareCustomSolidsEnabled || ! themePalette || themePalette?.length > 0;\n\n\tconst gradientsEnabled =\n\t\tareCustomGradientsEnabled ||\n\t\t! themeGradientPalette ||\n\t\tthemeGradientPalette?.length > 0;\n\n\t// Shouldn't be needed but right now the ColorGradientsPanel\n\t// can trigger both onChangeColor and onChangeBackground\n\t// synchronously causing our two callbacks to override changes\n\t// from each other.\n\tconst localAttributes = useRef( attributes );\n\tuseEffect( () => {\n\t\tlocalAttributes.current = attributes;\n\t}, [ attributes ] );\n\n\tif ( ! hasColorSupport( blockName ) ) {\n\t\treturn null;\n\t}\n\n\tconst hasLinkColor =\n\t\thasLinkColorSupport( blockName ) && isLinkEnabled && solidsEnabled;\n\tconst hasTextColor =\n\t\thasTextColorSupport( blockName ) && isTextEnabled && solidsEnabled;\n\tconst hasBackgroundColor =\n\t\thasBackgroundColorSupport( blockName ) &&\n\t\tisBackgroundEnabled &&\n\t\tsolidsEnabled;\n\tconst hasGradientColor =\n\t\thasGradientSupport( blockName ) && gradientsEnabled;\n\n\tif (\n\t\t! hasLinkColor &&\n\t\t! hasTextColor &&\n\t\t! hasBackgroundColor &&\n\t\t! hasGradientColor\n\t) {\n\t\treturn null;\n\t}\n\n\tconst { style, textColor, backgroundColor, gradient } = attributes;\n\tlet gradientValue;\n\tif ( hasGradientColor && gradient ) {\n\t\tgradientValue = getGradientValueBySlug( allGradients, gradient );\n\t} else if ( hasGradientColor ) {\n\t\tgradientValue = style?.color?.gradient;\n\t}\n\n\tconst onChangeColor = ( name ) => ( value ) => {\n\t\tconst colorObject = getColorObjectByColorValue( allSolids, value );\n\t\tconst attributeName = name + 'Color';\n\t\tconst newStyle = {\n\t\t\t...localAttributes.current.style,\n\t\t\tcolor: {\n\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t[ name ]: colorObject?.slug ? undefined : value,\n\t\t\t},\n\t\t};\n\n\t\tconst newNamedColor = colorObject?.slug ? colorObject.slug : undefined;\n\t\tconst newAttributes = {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t[ attributeName ]: newNamedColor,\n\t\t};\n\n\t\tprops.setAttributes( newAttributes );\n\t\tlocalAttributes.current = {\n\t\t\t...localAttributes.current,\n\t\t\t...newAttributes,\n\t\t};\n\t};\n\n\tconst onChangeGradient = ( value ) => {\n\t\tconst slug = getGradientSlugByValue( allGradients, value );\n\t\tlet newAttributes;\n\t\tif ( slug ) {\n\t\t\tconst newStyle = {\n\t\t\t\t...localAttributes.current?.style,\n\t\t\t\tcolor: {\n\t\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t\tgradient: undefined,\n\t\t\t\t},\n\t\t\t};\n\t\t\tnewAttributes = {\n\t\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t\tgradient: slug,\n\t\t\t};\n\t\t} else {\n\t\t\tconst newStyle = {\n\t\t\t\t...localAttributes.current?.style,\n\t\t\t\tcolor: {\n\t\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t\tgradient: value,\n\t\t\t\t},\n\t\t\t};\n\t\t\tnewAttributes = {\n\t\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t\tgradient: undefined,\n\t\t\t};\n\t\t}\n\t\tprops.setAttributes( newAttributes );\n\t\tlocalAttributes.current = {\n\t\t\t...localAttributes.current,\n\t\t\t...newAttributes,\n\t\t};\n\t};\n\n\tconst onChangeLinkColor = ( value ) => {\n\t\tconst colorObject = getColorObjectByColorValue( allSolids, value );\n\t\tconst newLinkColorValue = colorObject?.slug\n\t\t\t? `var:preset|color|${ colorObject.slug }`\n\t\t\t: value;\n\n\t\tconst newStyle = cleanEmptyObject(\n\t\t\timmutableSet(\n\t\t\t\tlocalAttributes.current?.style,\n\t\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\t\tnewLinkColorValue\n\t\t\t)\n\t\t);\n\t\tprops.setAttributes( { style: newStyle } );\n\t\tlocalAttributes.current = {\n\t\t\t...localAttributes.current,\n\t\t\t...{ style: newStyle },\n\t\t};\n\t};\n\n\tconst enableContrastChecking =\n\t\tPlatform.OS === 'web' && ! gradient && ! style?.color?.gradient;\n\n\tconst defaultColorControls = getBlockSupport( props.name, [\n\t\tCOLOR_SUPPORT_KEY,\n\t\t'__experimentalDefaultControls',\n\t] );\n\n\treturn (\n\t\t<ColorPanel\n\t\t\tenableContrastChecking={ enableContrastChecking }\n\t\t\tclientId={ props.clientId }\n\t\t\tenableAlpha={ true }\n\t\t\tsettings={ [\n\t\t\t\t...( hasTextColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\t\t\t\tonColorChange: onChangeColor( 'text' ),\n\t\t\t\t\t\t\t\tcolorValue: getColorObjectByAttributeValues(\n\t\t\t\t\t\t\t\t\tallSolids,\n\t\t\t\t\t\t\t\t\ttextColor,\n\t\t\t\t\t\t\t\t\tstyle?.color?.text\n\t\t\t\t\t\t\t\t).color,\n\t\t\t\t\t\t\t\tisShownByDefault: defaultColorControls?.text,\n\t\t\t\t\t\t\t\tresetAllFilter: resetAllTextFilter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t\t...( hasBackgroundColor || hasGradientColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Background' ),\n\t\t\t\t\t\t\t\tonColorChange: hasBackgroundColor\n\t\t\t\t\t\t\t\t\t? onChangeColor( 'background' )\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\tcolorValue: getColorObjectByAttributeValues(\n\t\t\t\t\t\t\t\t\tallSolids,\n\t\t\t\t\t\t\t\t\tbackgroundColor,\n\t\t\t\t\t\t\t\t\tstyle?.color?.background\n\t\t\t\t\t\t\t\t).color,\n\t\t\t\t\t\t\t\tgradientValue,\n\t\t\t\t\t\t\t\tonGradientChange: hasGradientColor\n\t\t\t\t\t\t\t\t\t? onChangeGradient\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\tisShownByDefault:\n\t\t\t\t\t\t\t\t\tdefaultColorControls?.background,\n\t\t\t\t\t\t\t\tresetAllFilter: clearBackgroundAndGradient,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t\t...( hasLinkColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Link' ),\n\t\t\t\t\t\t\t\tonColorChange: onChangeLinkColor,\n\t\t\t\t\t\t\t\tcolorValue: getLinkColorFromAttributeValue(\n\t\t\t\t\t\t\t\t\tallSolids,\n\t\t\t\t\t\t\t\t\tstyle?.elements?.link?.color?.text\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tclearable:\n\t\t\t\t\t\t\t\t\t!! style?.elements?.link?.color?.text,\n\t\t\t\t\t\t\t\tisShownByDefault: defaultColorControls?.link,\n\t\t\t\t\t\t\t\tresetAllFilter: resetAllLinkFilter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t] }\n\t\t/>\n\t);\n}\n\n/**\n * This adds inline styles for color palette colors.\n * Ideally, this is not needed and themes should load their palettes on the editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withColorPaletteStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { backgroundColor, textColor } = attributes;\n\t\tconst userPalette = useSetting( 'color.palette.custom' ) || [];\n\t\tconst themePalette = useSetting( 'color.palette.theme' ) || [];\n\t\tconst defaultPalette = useSetting( 'color.palette.default' ) || [];\n\t\tconst colors = useMemo(\n\t\t\t() => [\n\t\t\t\t...( userPalette || [] ),\n\t\t\t\t...( themePalette || [] ),\n\t\t\t\t...( defaultPalette || [] ),\n\t\t\t],\n\t\t\t[ userPalette, themePalette, defaultPalette ]\n\t\t);\n\t\tif (\n\t\t\t! hasColorSupport( name ) ||\n\t\t\tshouldSkipSerialization( name, COLOR_SUPPORT_KEY )\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\t\tconst extraStyles = {};\n\n\t\tif (\n\t\t\ttextColor &&\n\t\t\t! shouldSkipSerialization( name, COLOR_SUPPORT_KEY, 'text' )\n\t\t) {\n\t\t\textraStyles.color = getColorObjectByAttributeValues(\n\t\t\t\tcolors,\n\t\t\t\ttextColor\n\t\t\t)?.color;\n\t\t}\n\t\tif (\n\t\t\tbackgroundColor &&\n\t\t\t! shouldSkipSerialization( name, COLOR_SUPPORT_KEY, 'background' )\n\t\t) {\n\t\t\textraStyles.backgroundColor = getColorObjectByAttributeValues(\n\t\t\t\tcolors,\n\t\t\t\tbackgroundColor\n\t\t\t)?.color;\n\t\t}\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\twrapperProps = {\n\t\t\t...props.wrapperProps,\n\t\t\tstyle: {\n\t\t\t\t...extraStyles,\n\t\t\t\t...props.wrapperProps?.style,\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\nconst MIGRATION_PATHS = {\n\tlinkColor: [ [ 'style', 'elements', 'link', 'color', 'text' ] ],\n\ttextColor: [ [ 'textColor' ], [ 'style', 'color', 'text' ] ],\n\tbackgroundColor: [\n\t\t[ 'backgroundColor' ],\n\t\t[ 'style', 'color', 'background' ],\n\t],\n\tgradient: [ [ 'gradient' ], [ 'style', 'color', 'gradient' ] ],\n};\n\nexport function addTransforms( result, source, index, results ) {\n\tconst destinationBlockType = result.name;\n\tconst activeSupports = {\n\t\tlinkColor: hasLinkColorSupport( destinationBlockType ),\n\t\ttextColor: hasTextColorSupport( destinationBlockType ),\n\t\tbackgroundColor: hasBackgroundColorSupport( destinationBlockType ),\n\t\tgradient: hasGradientSupport( destinationBlockType ),\n\t};\n\treturn transformStyles(\n\t\tactiveSupports,\n\t\tMIGRATION_PATHS,\n\t\tresult,\n\t\tsource,\n\t\tindex,\n\t\tresults\n\t);\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/color/addAttribute',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/color/addSaveProps',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/color/addEditProps',\n\taddEditProps\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/color/with-color-palette-styles',\n\twithColorPaletteStyles\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/color/addTransforms',\n\taddTransforms\n);\n"]}
@@ -19,5 +19,6 @@ export { useCustomSides } from './dimensions';
19
19
  export { getBorderClassesAndStyles, useBorderProps } from './use-border-props';
20
20
  export { getColorClassesAndStyles, useColorProps } from './use-color-props';
21
21
  export { getSpacingClassesAndStyles } from './use-spacing-props';
22
+ export { getGapCSSValue } from './gap';
22
23
  export { useCachedTruthy } from './use-cached-truthy';
23
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/index.js"],"names":["useCustomSides","getBorderClassesAndStyles","useBorderProps","getColorClassesAndStyles","useColorProps","getSpacingClassesAndStyles","useCachedTruthy"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,UAAP;AACA,OAAO,SAAP;AACA,OAAO,QAAP;AACA,OAAO,UAAP;AACA,OAAO,cAAP;AACA,OAAO,qBAAP;AACA,OAAO,wBAAP;AACA,OAAO,SAAP;AACA,OAAO,YAAP;AACA,OAAO,SAAP;AACA,OAAO,WAAP;AACA,OAAO,aAAP;AACA,OAAO,UAAP;AACA,OAAO,UAAP;AAEA,SAASA,cAAT,QAA+B,cAA/B;AACA,SAASC,yBAAT,EAAoCC,cAApC,QAA0D,oBAA1D;AACA,SAASC,wBAAT,EAAmCC,aAAnC,QAAwD,mBAAxD;AACA,SAASC,0BAAT,QAA2C,qBAA3C;AACA,SAASC,eAAT,QAAgC,qBAAhC","sourcesContent":["/**\n * Internal dependencies\n */\nimport './compat';\nimport './align';\nimport './lock';\nimport './anchor';\nimport './aria-label';\nimport './custom-class-name';\nimport './generated-class-name';\nimport './style';\nimport './settings';\nimport './color';\nimport './duotone';\nimport './font-size';\nimport './border';\nimport './layout';\n\nexport { useCustomSides } from './dimensions';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { useCachedTruthy } from './use-cached-truthy';\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/index.js"],"names":["useCustomSides","getBorderClassesAndStyles","useBorderProps","getColorClassesAndStyles","useColorProps","getSpacingClassesAndStyles","getGapCSSValue","useCachedTruthy"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,UAAP;AACA,OAAO,SAAP;AACA,OAAO,QAAP;AACA,OAAO,UAAP;AACA,OAAO,cAAP;AACA,OAAO,qBAAP;AACA,OAAO,wBAAP;AACA,OAAO,SAAP;AACA,OAAO,YAAP;AACA,OAAO,SAAP;AACA,OAAO,WAAP;AACA,OAAO,aAAP;AACA,OAAO,UAAP;AACA,OAAO,UAAP;AAEA,SAASA,cAAT,QAA+B,cAA/B;AACA,SAASC,yBAAT,EAAoCC,cAApC,QAA0D,oBAA1D;AACA,SAASC,wBAAT,EAAmCC,aAAnC,QAAwD,mBAAxD;AACA,SAASC,0BAAT,QAA2C,qBAA3C;AACA,SAASC,cAAT,QAA+B,OAA/B;AACA,SAASC,eAAT,QAAgC,qBAAhC","sourcesContent":["/**\n * Internal dependencies\n */\nimport './compat';\nimport './align';\nimport './lock';\nimport './anchor';\nimport './aria-label';\nimport './custom-class-name';\nimport './generated-class-name';\nimport './style';\nimport './settings';\nimport './color';\nimport './duotone';\nimport './font-size';\nimport './border';\nimport './layout';\n\nexport { useCustomSides } from './dimensions';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\n"]}
@@ -12,7 +12,7 @@ import { has, kebabCase } from 'lodash';
12
12
 
13
13
  import { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';
14
14
  import { addFilter } from '@wordpress/hooks';
15
- import { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';
15
+ import { getBlockDefaultClassName, getBlockSupport, hasBlockSupport } from '@wordpress/blocks';
16
16
  import { useSelect } from '@wordpress/data';
17
17
  import { Button, ButtonGroup, ToggleControl, PanelBody } from '@wordpress/components';
18
18
  import { __ } from '@wordpress/i18n';
@@ -36,29 +36,32 @@ const layoutBlockSupportKey = '__experimentalLayout';
36
36
  * have the style engine generate a more extensive list of utility classnames which
37
37
  * will then replace this method.
38
38
  *
39
- * @param { Array } attributes Array of block attributes.
39
+ * @param { Object } layout Layout object.
40
+ * @param { Object } layoutDefinitions An object containing layout definitions, stored in theme.json.
40
41
  *
41
42
  * @return { Array } Array of CSS classname strings.
42
43
  */
43
44
 
44
- function getLayoutClasses(attributes) {
45
- var _attributes$layout, _attributes$layout2, _attributes$layout3;
45
+ function getLayoutClasses(layout, layoutDefinitions) {
46
+ var _layoutDefinitions;
46
47
 
47
48
  const layoutClassnames = [];
48
49
 
49
- if (!attributes.layout) {
50
- return layoutClassnames;
50
+ if (layoutDefinitions !== null && layoutDefinitions !== void 0 && (_layoutDefinitions = layoutDefinitions[(layout === null || layout === void 0 ? void 0 : layout.type) || 'default']) !== null && _layoutDefinitions !== void 0 && _layoutDefinitions.className) {
51
+ var _layoutDefinitions2;
52
+
53
+ layoutClassnames.push(layoutDefinitions === null || layoutDefinitions === void 0 ? void 0 : (_layoutDefinitions2 = layoutDefinitions[(layout === null || layout === void 0 ? void 0 : layout.type) || 'default']) === null || _layoutDefinitions2 === void 0 ? void 0 : _layoutDefinitions2.className);
51
54
  }
52
55
 
53
- if (attributes !== null && attributes !== void 0 && (_attributes$layout = attributes.layout) !== null && _attributes$layout !== void 0 && _attributes$layout.orientation) {
54
- layoutClassnames.push(`is-${kebabCase(attributes.layout.orientation)}`);
56
+ if (layout !== null && layout !== void 0 && layout.orientation) {
57
+ layoutClassnames.push(`is-${kebabCase(layout.orientation)}`);
55
58
  }
56
59
 
57
- if (attributes !== null && attributes !== void 0 && (_attributes$layout2 = attributes.layout) !== null && _attributes$layout2 !== void 0 && _attributes$layout2.justifyContent) {
58
- layoutClassnames.push(`is-content-justification-${kebabCase(attributes.layout.justifyContent)}`);
60
+ if (layout !== null && layout !== void 0 && layout.justifyContent) {
61
+ layoutClassnames.push(`is-content-justification-${kebabCase(layout.justifyContent)}`);
59
62
  }
60
63
 
61
- if (attributes !== null && attributes !== void 0 && (_attributes$layout3 = attributes.layout) !== null && _attributes$layout3 !== void 0 && _attributes$layout3.flexWrap && attributes.layout.flexWrap === 'nowrap') {
64
+ if (layout !== null && layout !== void 0 && layout.flexWrap && layout.flexWrap === 'nowrap') {
62
65
  layoutClassnames.push('is-nowrap');
63
66
  }
64
67
 
@@ -234,13 +237,37 @@ export const withLayoutStyles = createHigherOrderComponent(BlockListBlock => pro
234
237
  default: defaultBlockLayout
235
238
  } = getBlockSupport(name, layoutBlockSupportKey) || {};
236
239
  const usedLayout = layout !== null && layout !== void 0 && layout.inherit ? defaultThemeLayout : layout || defaultBlockLayout || {};
237
- const layoutClasses = shouldRenderLayoutStyles ? getLayoutClasses(attributes) : null;
240
+ const layoutClasses = shouldRenderLayoutStyles ? getLayoutClasses(usedLayout, defaultThemeLayout === null || defaultThemeLayout === void 0 ? void 0 : defaultThemeLayout.definitions) : null;
241
+ const selector = `.${getBlockDefaultClassName(name)}.wp-container-${id}`;
242
+ const blockGapSupport = useSetting('spacing.blockGap');
243
+ const hasBlockGapSupport = blockGapSupport !== null; // Get CSS string for the current layout type.
244
+ // The CSS and `style` element is only output if it is not empty.
245
+
246
+ let css;
247
+
248
+ if (shouldRenderLayoutStyles) {
249
+ var _fullLayoutType$getLa;
250
+
251
+ const fullLayoutType = getLayoutType((usedLayout === null || usedLayout === void 0 ? void 0 : usedLayout.type) || 'default');
252
+ css = fullLayoutType === null || fullLayoutType === void 0 ? void 0 : (_fullLayoutType$getLa = fullLayoutType.getLayoutStyle) === null || _fullLayoutType$getLa === void 0 ? void 0 : _fullLayoutType$getLa.call(fullLayoutType, {
253
+ blockName: name,
254
+ selector,
255
+ layout: usedLayout,
256
+ layoutDefinitions: defaultThemeLayout === null || defaultThemeLayout === void 0 ? void 0 : defaultThemeLayout.definitions,
257
+ style: attributes === null || attributes === void 0 ? void 0 : attributes.style,
258
+ hasBlockGapSupport
259
+ });
260
+ } // Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.
261
+
262
+
238
263
  const className = classnames(props === null || props === void 0 ? void 0 : props.className, {
239
- [`wp-container-${id}`]: shouldRenderLayoutStyles
264
+ [`wp-container-${id}`]: shouldRenderLayoutStyles && !!css // Only attach a container class if there is generated CSS to be attached.
265
+
240
266
  }, layoutClasses);
241
- return createElement(Fragment, null, shouldRenderLayoutStyles && element && createPortal(createElement(LayoutStyle, {
267
+ return createElement(Fragment, null, shouldRenderLayoutStyles && element && !!css && createPortal(createElement(LayoutStyle, {
242
268
  blockName: name,
243
- selector: `.wp-container-${id}`,
269
+ selector: selector,
270
+ css: css,
244
271
  layout: usedLayout,
245
272
  style: attributes === null || attributes === void 0 ? void 0 : attributes.style
246
273
  }), element), createElement(BlockListBlock, _extends({}, props, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/layout.js"],"names":["classnames","has","kebabCase","createHigherOrderComponent","useInstanceId","addFilter","getBlockSupport","hasBlockSupport","useSelect","Button","ButtonGroup","ToggleControl","PanelBody","__","useContext","createPortal","store","blockEditorStore","InspectorControls","useSetting","LayoutStyle","BlockList","getLayoutType","getLayoutTypes","layoutBlockSupportKey","getLayoutClasses","attributes","layoutClassnames","layout","orientation","push","justifyContent","flexWrap","LayoutPanel","setAttributes","name","blockName","defaultThemeLayout","themeSupportsLayout","select","getSettings","supportsLayout","layoutBlockSupport","allowSwitching","allowEditing","allowInheriting","default","defaultBlockLayout","showInheritToggle","type","inherit","usedLayout","layoutType","onChangeType","newType","onChangeLayout","newLayout","LayoutTypeSwitcher","onChange","map","label","addAttribute","settings","withInspectorControls","BlockEdit","props","supportLayout","withLayoutStyles","BlockListBlock","shouldRenderLayoutStyles","id","element","__unstableElementContext","layoutClasses","className","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 { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tButton,\n\tButtonGroup,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext, createPortal } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport useSetting from '../components/use-setting';\nimport { LayoutStyle } from '../components/block-list/layout';\nimport BlockList from '../components/block-list';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\n\nconst layoutBlockSupportKey = '__experimentalLayout';\n\n/**\n * Generates the utility classnames for the given 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 { Array } attributes Array of block attributes.\n *\n * @return { Array } Array of CSS classname strings.\n */\nfunction getLayoutClasses( attributes ) {\n\tconst layoutClassnames = [];\n\n\tif ( ! attributes.layout ) {\n\t\treturn layoutClassnames;\n\t}\n\n\tif ( attributes?.layout?.orientation ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-${ kebabCase( attributes.layout.orientation ) }`\n\t\t);\n\t}\n\n\tif ( attributes?.layout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tattributes.layout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif (\n\t\tattributes?.layout?.flexWrap &&\n\t\tattributes.layout.flexWrap === 'nowrap'\n\t) {\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: { inherit: ! inherit },\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 shouldRenderLayoutStyles = hasBlockSupport(\n\t\t\tname,\n\t\t\tlayoutBlockSupportKey\n\t\t);\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 = shouldRenderLayoutStyles\n\t\t\t? getLayoutClasses( attributes )\n\t\t\t: null;\n\t\tconst className = classnames(\n\t\t\tprops?.className,\n\t\t\t{\n\t\t\t\t[ `wp-container-${ id }` ]: shouldRenderLayoutStyles,\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\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={ `.wp-container-${ id }` }\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","getLayoutClasses","layout","layoutDefinitions","layoutClassnames","type","className","push","orientation","justifyContent","flexWrap","LayoutPanel","setAttributes","attributes","name","blockName","defaultThemeLayout","themeSupportsLayout","select","getSettings","supportsLayout","layoutBlockSupport","allowSwitching","allowEditing","allowInheriting","default","defaultBlockLayout","showInheritToggle","inherit","usedLayout","layoutType","onChangeType","newType","onChangeLayout","newLayout","LayoutTypeSwitcher","onChange","map","label","addAttribute","settings","withInspectorControls","BlockEdit","props","supportLayout","withLayoutStyles","BlockListBlock","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 getLayoutClasses( layout, layoutDefinitions ) {\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?.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: { inherit: ! inherit },\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 shouldRenderLayoutStyles = hasBlockSupport(\n\t\t\tname,\n\t\t\tlayoutBlockSupportKey\n\t\t);\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 = shouldRenderLayoutStyles\n\t\t\t? getLayoutClasses( 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,12 +1,14 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { pickBy, isEmpty, isObject, identity, mapValues, forEach, get, setWith, clone, every } from 'lodash';
4
+ import { pickBy, isEmpty, mapValues, forEach, get, setWith, clone, every } from 'lodash';
5
5
  /**
6
6
  * WordPress dependencies
7
7
  */
8
8
 
9
9
  import { getBlockSupport } from '@wordpress/blocks';
10
+
11
+ const identity = x => x;
10
12
  /**
11
13
  * Removed falsy values from nested object.
12
14
  *
@@ -14,8 +16,9 @@ import { getBlockSupport } from '@wordpress/blocks';
14
16
  * @return {*} Object cleaned from falsy values
15
17
  */
16
18
 
19
+
17
20
  export const cleanEmptyObject = object => {
18
- if (!isObject(object) || Array.isArray(object)) {
21
+ if (object === null || typeof object !== 'object' || Array.isArray(object)) {
19
22
  return object;
20
23
  }
21
24
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/utils.js"],"names":["pickBy","isEmpty","isObject","identity","mapValues","forEach","get","setWith","clone","every","getBlockSupport","cleanEmptyObject","object","Array","isArray","cleanedNestedObjects","undefined","immutableSet","path","value","transformStyles","activeSupports","migrationPaths","result","source","index","results","isActive","length","innerBlocks","referenceBlockAttributes","attributes","returnBlock","support","styleValue","shouldSkipSerialization","blockType","featureSet","feature","skipSerialization","__experimentalSkipSerialization","includes"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tpickBy,\n\tisEmpty,\n\tisObject,\n\tidentity,\n\tmapValues,\n\tforEach,\n\tget,\n\tsetWith,\n\tclone,\n\tevery,\n} from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\n\n/**\n * Removed falsy values from nested object.\n *\n * @param {*} object\n * @return {*} Object cleaned from falsy values\n */\nexport const cleanEmptyObject = ( object ) => {\n\tif ( ! isObject( object ) || Array.isArray( object ) ) {\n\t\treturn object;\n\t}\n\tconst cleanedNestedObjects = pickBy(\n\t\tmapValues( object, cleanEmptyObject ),\n\t\tidentity\n\t);\n\treturn isEmpty( cleanedNestedObjects ) ? undefined : cleanedNestedObjects;\n};\n\nexport function immutableSet( object, path, value ) {\n\treturn setWith( object ? clone( object ) : {}, path, value, clone );\n}\n\nexport function transformStyles(\n\tactiveSupports,\n\tmigrationPaths,\n\tresult,\n\tsource,\n\tindex,\n\tresults\n) {\n\t// If there are no active supports return early.\n\tif ( every( activeSupports, ( isActive ) => ! isActive ) ) {\n\t\treturn result;\n\t}\n\t// If the condition verifies we are probably in the presence of a wrapping transform\n\t// e.g: nesting paragraphs in a group or columns and in that case the styles should not be transformed.\n\tif ( results.length === 1 && result.innerBlocks.length === source.length ) {\n\t\treturn result;\n\t}\n\t// For cases where we have a transform from one block to multiple blocks\n\t// or multiple blocks to one block we apply the styles of the first source block\n\t// to the result(s).\n\tlet referenceBlockAttributes = source[ 0 ]?.attributes;\n\t// If we are in presence of transform between more than one block in the source\n\t// that has more than one block in the result\n\t// we apply the styles on source N to the result N,\n\t// if source N does not exists we do nothing.\n\tif ( results.length > 1 && source.length > 1 ) {\n\t\tif ( source[ index ] ) {\n\t\t\treferenceBlockAttributes = source[ index ]?.attributes;\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n\tlet returnBlock = result;\n\tforEach( activeSupports, ( isActive, support ) => {\n\t\tif ( isActive ) {\n\t\t\tmigrationPaths[ support ].forEach( ( path ) => {\n\t\t\t\tconst styleValue = get( referenceBlockAttributes, path );\n\t\t\t\tif ( styleValue ) {\n\t\t\t\t\treturnBlock = {\n\t\t\t\t\t\t...returnBlock,\n\t\t\t\t\t\tattributes: immutableSet(\n\t\t\t\t\t\t\treturnBlock.attributes,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tstyleValue\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n\treturn returnBlock;\n}\n\n/**\n * Check whether serialization of specific block support feature or set should\n * be skipped.\n *\n * @param {string|Object} blockType Block name or block type object.\n * @param {string} featureSet Name of block support feature set.\n * @param {string} feature Name of the individual feature to check.\n *\n * @return {boolean} Whether serialization should occur.\n */\nexport function shouldSkipSerialization( blockType, featureSet, feature ) {\n\tconst support = getBlockSupport( blockType, featureSet );\n\tconst skipSerialization = support?.__experimentalSkipSerialization;\n\n\tif ( Array.isArray( skipSerialization ) ) {\n\t\treturn skipSerialization.includes( feature );\n\t}\n\n\treturn skipSerialization;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/utils.js"],"names":["pickBy","isEmpty","mapValues","forEach","get","setWith","clone","every","getBlockSupport","identity","x","cleanEmptyObject","object","Array","isArray","cleanedNestedObjects","undefined","immutableSet","path","value","transformStyles","activeSupports","migrationPaths","result","source","index","results","isActive","length","innerBlocks","referenceBlockAttributes","attributes","returnBlock","support","styleValue","shouldSkipSerialization","blockType","featureSet","feature","skipSerialization","__experimentalSkipSerialization","includes"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tpickBy,\n\tisEmpty,\n\tmapValues,\n\tforEach,\n\tget,\n\tsetWith,\n\tclone,\n\tevery,\n} from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\n\nconst identity = ( x ) => x;\n\n/**\n * Removed falsy values from nested object.\n *\n * @param {*} object\n * @return {*} Object cleaned from falsy values\n */\nexport const cleanEmptyObject = ( object ) => {\n\tif (\n\t\tobject === null ||\n\t\ttypeof object !== 'object' ||\n\t\tArray.isArray( object )\n\t) {\n\t\treturn object;\n\t}\n\tconst cleanedNestedObjects = pickBy(\n\t\tmapValues( object, cleanEmptyObject ),\n\t\tidentity\n\t);\n\treturn isEmpty( cleanedNestedObjects ) ? undefined : cleanedNestedObjects;\n};\n\nexport function immutableSet( object, path, value ) {\n\treturn setWith( object ? clone( object ) : {}, path, value, clone );\n}\n\nexport function transformStyles(\n\tactiveSupports,\n\tmigrationPaths,\n\tresult,\n\tsource,\n\tindex,\n\tresults\n) {\n\t// If there are no active supports return early.\n\tif ( every( activeSupports, ( isActive ) => ! isActive ) ) {\n\t\treturn result;\n\t}\n\t// If the condition verifies we are probably in the presence of a wrapping transform\n\t// e.g: nesting paragraphs in a group or columns and in that case the styles should not be transformed.\n\tif ( results.length === 1 && result.innerBlocks.length === source.length ) {\n\t\treturn result;\n\t}\n\t// For cases where we have a transform from one block to multiple blocks\n\t// or multiple blocks to one block we apply the styles of the first source block\n\t// to the result(s).\n\tlet referenceBlockAttributes = source[ 0 ]?.attributes;\n\t// If we are in presence of transform between more than one block in the source\n\t// that has more than one block in the result\n\t// we apply the styles on source N to the result N,\n\t// if source N does not exists we do nothing.\n\tif ( results.length > 1 && source.length > 1 ) {\n\t\tif ( source[ index ] ) {\n\t\t\treferenceBlockAttributes = source[ index ]?.attributes;\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n\tlet returnBlock = result;\n\tforEach( activeSupports, ( isActive, support ) => {\n\t\tif ( isActive ) {\n\t\t\tmigrationPaths[ support ].forEach( ( path ) => {\n\t\t\t\tconst styleValue = get( referenceBlockAttributes, path );\n\t\t\t\tif ( styleValue ) {\n\t\t\t\t\treturnBlock = {\n\t\t\t\t\t\t...returnBlock,\n\t\t\t\t\t\tattributes: immutableSet(\n\t\t\t\t\t\t\treturnBlock.attributes,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tstyleValue\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n\treturn returnBlock;\n}\n\n/**\n * Check whether serialization of specific block support feature or set should\n * be skipped.\n *\n * @param {string|Object} blockType Block name or block type object.\n * @param {string} featureSet Name of block support feature set.\n * @param {string} feature Name of the individual feature to check.\n *\n * @return {boolean} Whether serialization should occur.\n */\nexport function shouldSkipSerialization( blockType, featureSet, feature ) {\n\tconst support = getBlockSupport( blockType, featureSet );\n\tconst skipSerialization = support?.__experimentalSkipSerialization;\n\n\tif ( Array.isArray( skipSerialization ) ) {\n\t\treturn skipSerialization.includes( feature );\n\t}\n\n\treturn skipSerialization;\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * Internal dependencies
3
3
  */
4
4
  import './hooks';
5
- export { getBorderClassesAndStyles as __experimentalGetBorderClassesAndStyles, useBorderProps as __experimentalUseBorderProps, getColorClassesAndStyles as __experimentalGetColorClassesAndStyles, useColorProps as __experimentalUseColorProps, useCustomSides as __experimentalUseCustomSides, getSpacingClassesAndStyles as __experimentalGetSpacingClassesAndStyles, useCachedTruthy } from './hooks';
5
+ export { getBorderClassesAndStyles as __experimentalGetBorderClassesAndStyles, useBorderProps as __experimentalUseBorderProps, getColorClassesAndStyles as __experimentalGetColorClassesAndStyles, useColorProps as __experimentalUseColorProps, useCustomSides as __experimentalUseCustomSides, getSpacingClassesAndStyles as __experimentalGetSpacingClassesAndStyles, getGapCSSValue as __experimentalGetGapCSSValue, useCachedTruthy } from './hooks';
6
6
  export * from './components';
7
7
  export * from './elements';
8
8
  export * from './utils';
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/index.js"],"names":["getBorderClassesAndStyles","__experimentalGetBorderClassesAndStyles","useBorderProps","__experimentalUseBorderProps","getColorClassesAndStyles","__experimentalGetColorClassesAndStyles","useColorProps","__experimentalUseColorProps","useCustomSides","__experimentalUseCustomSides","getSpacingClassesAndStyles","__experimentalGetSpacingClassesAndStyles","useCachedTruthy","storeConfig","store","SETTINGS_DEFAULTS"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,SAAP;AACA,SACCA,yBAAyB,IAAIC,uCAD9B,EAECC,cAAc,IAAIC,4BAFnB,EAGCC,wBAAwB,IAAIC,sCAH7B,EAICC,aAAa,IAAIC,2BAJlB,EAKCC,cAAc,IAAIC,4BALnB,EAMCC,0BAA0B,IAAIC,wCAN/B,EAOCC,eAPD,QAQO,SARP;AASA,cAAc,cAAd;AACA,cAAc,YAAd;AACA,cAAc,SAAd;AACA,SAASC,WAAT,EAAsBC,KAAtB,QAAmC,SAAnC;AACA,SAASC,iBAAT,QAAkC,kBAAlC","sourcesContent":["/**\n * Internal dependencies\n */\nimport './hooks';\nexport {\n\tgetBorderClassesAndStyles as __experimentalGetBorderClassesAndStyles,\n\tuseBorderProps as __experimentalUseBorderProps,\n\tgetColorClassesAndStyles as __experimentalGetColorClassesAndStyles,\n\tuseColorProps as __experimentalUseColorProps,\n\tuseCustomSides as __experimentalUseCustomSides,\n\tgetSpacingClassesAndStyles as __experimentalGetSpacingClassesAndStyles,\n\tuseCachedTruthy,\n} from './hooks';\nexport * from './components';\nexport * from './elements';\nexport * from './utils';\nexport { storeConfig, store } from './store';\nexport { SETTINGS_DEFAULTS } from './store/defaults';\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/index.js"],"names":["getBorderClassesAndStyles","__experimentalGetBorderClassesAndStyles","useBorderProps","__experimentalUseBorderProps","getColorClassesAndStyles","__experimentalGetColorClassesAndStyles","useColorProps","__experimentalUseColorProps","useCustomSides","__experimentalUseCustomSides","getSpacingClassesAndStyles","__experimentalGetSpacingClassesAndStyles","getGapCSSValue","__experimentalGetGapCSSValue","useCachedTruthy","storeConfig","store","SETTINGS_DEFAULTS"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,SAAP;AACA,SACCA,yBAAyB,IAAIC,uCAD9B,EAECC,cAAc,IAAIC,4BAFnB,EAGCC,wBAAwB,IAAIC,sCAH7B,EAICC,aAAa,IAAIC,2BAJlB,EAKCC,cAAc,IAAIC,4BALnB,EAMCC,0BAA0B,IAAIC,wCAN/B,EAOCC,cAAc,IAAIC,4BAPnB,EAQCC,eARD,QASO,SATP;AAUA,cAAc,cAAd;AACA,cAAc,YAAd;AACA,cAAc,SAAd;AACA,SAASC,WAAT,EAAsBC,KAAtB,QAAmC,SAAnC;AACA,SAASC,iBAAT,QAAkC,kBAAlC","sourcesContent":["/**\n * Internal dependencies\n */\nimport './hooks';\nexport {\n\tgetBorderClassesAndStyles as __experimentalGetBorderClassesAndStyles,\n\tuseBorderProps as __experimentalUseBorderProps,\n\tgetColorClassesAndStyles as __experimentalGetColorClassesAndStyles,\n\tuseColorProps as __experimentalUseColorProps,\n\tuseCustomSides as __experimentalUseCustomSides,\n\tgetSpacingClassesAndStyles as __experimentalGetSpacingClassesAndStyles,\n\tgetGapCSSValue as __experimentalGetGapCSSValue,\n\tuseCachedTruthy,\n} from './hooks';\nexport * from './components';\nexport * from './elements';\nexport * from './utils';\nexport { storeConfig, store } from './store';\nexport { SETTINGS_DEFAULTS } from './store/defaults';\n"]}
@@ -6,14 +6,12 @@ import { createElement, Fragment } from "@wordpress/element";
6
6
  import { __ } from '@wordpress/i18n';
7
7
  import { justifyLeft, justifyCenter, justifyRight, justifySpaceBetween, arrowRight, arrowDown } from '@wordpress/icons';
8
8
  import { Button, ToggleControl, Flex, FlexItem } from '@wordpress/components';
9
- import { getBlockSupport } from '@wordpress/blocks';
10
9
  /**
11
10
  * Internal dependencies
12
11
  */
13
12
 
14
- import { appendSelectors } from './utils';
13
+ import { appendSelectors, getBlockGapCSS } from './utils';
15
14
  import { getGapCSSValue } from '../hooks/gap';
16
- import useSetting from '../components/use-setting';
17
15
  import { BlockControls, JustifyContentControl, BlockVerticalAlignmentControl } from '../components';
18
16
  import { shouldSkipSerialization } from '../hooks/utils'; // Used with the default, horizontal flex orientation.
19
17
 
@@ -85,49 +83,59 @@ export default {
85
83
  isToolbar: true
86
84
  }));
87
85
  },
88
- save: function FlexLayoutStyle(_ref3) {
86
+ getLayoutStyle: function getLayoutStyle(_ref3) {
89
87
  var _style$spacing, _style$spacing2;
90
88
 
91
89
  let {
92
90
  selector,
93
91
  layout,
94
92
  style,
95
- blockName
93
+ blockName,
94
+ hasBlockGapSupport,
95
+ layoutDefinitions
96
96
  } = _ref3;
97
97
  const {
98
98
  orientation = 'horizontal'
99
- } = layout;
100
- const blockGapSupport = useSetting('spacing.blockGap');
101
- const fallbackValue = getBlockSupport(blockName, ['spacing', 'blockGap', '__experimentalDefault']) || '0.5em';
102
- const hasBlockGapStylesSupport = blockGapSupport !== null; // If a block's block.json skips serialization for spacing or spacing.blockGap,
99
+ } = layout; // If a block's block.json skips serialization for spacing or spacing.blockGap,
103
100
  // don't apply the user-defined value to the styles.
104
101
 
105
- const blockGapValue = style !== null && style !== void 0 && (_style$spacing = style.spacing) !== null && _style$spacing !== void 0 && _style$spacing.blockGap && !shouldSkipSerialization(blockName, 'spacing', 'blockGap') ? getGapCSSValue(style === null || style === void 0 ? void 0 : (_style$spacing2 = style.spacing) === null || _style$spacing2 === void 0 ? void 0 : _style$spacing2.blockGap, fallbackValue) : `var( --wp--style--block-gap, ${fallbackValue} )`;
106
- const justifyContent = justifyContentMap[layout.justifyContent] || justifyContentMap.left;
102
+ const blockGapValue = style !== null && style !== void 0 && (_style$spacing = style.spacing) !== null && _style$spacing !== void 0 && _style$spacing.blockGap && !shouldSkipSerialization(blockName, 'spacing', 'blockGap') ? getGapCSSValue(style === null || style === void 0 ? void 0 : (_style$spacing2 = style.spacing) === null || _style$spacing2 === void 0 ? void 0 : _style$spacing2.blockGap) : undefined;
103
+ const justifyContent = justifyContentMap[layout.justifyContent];
107
104
  const flexWrap = flexWrapOptions.includes(layout.flexWrap) ? layout.flexWrap : 'wrap';
108
- const verticalAlignment = verticalAlignmentMap[layout.verticalAlignment] || verticalAlignmentMap.center;
109
- const rowOrientation = `
110
- flex-direction: row;
111
- align-items: ${verticalAlignment};
112
- justify-content: ${justifyContent};
113
- `;
105
+ const verticalAlignment = verticalAlignmentMap[layout.verticalAlignment];
114
106
  const alignItems = alignItemsMap[layout.justifyContent] || alignItemsMap.left;
115
- const columnOrientation = `
116
- flex-direction: column;
117
- align-items: ${alignItems};
118
- `;
119
- return createElement("style", null, `
120
- ${appendSelectors(selector)} {
121
- display: flex;
122
- flex-wrap: ${flexWrap};
123
- gap: ${hasBlockGapStylesSupport ? blockGapValue : fallbackValue};
124
- ${orientation === 'horizontal' ? rowOrientation : columnOrientation}
125
- }
126
-
127
- ${appendSelectors(selector, '> *')} {
128
- margin: 0;
129
- }
130
- `);
107
+ let output = '';
108
+ const rules = [];
109
+
110
+ if (flexWrap && flexWrap !== 'wrap') {
111
+ rules.push(`flex-wrap: ${flexWrap}`);
112
+ }
113
+
114
+ if (orientation === 'horizontal') {
115
+ if (verticalAlignment) {
116
+ rules.push(`align-items: ${verticalAlignment}`);
117
+ }
118
+
119
+ if (justifyContent) {
120
+ rules.push(`justify-content: ${justifyContent}`);
121
+ }
122
+ } else {
123
+ rules.push('flex-direction: column');
124
+ rules.push(`align-items: ${alignItems}`);
125
+ }
126
+
127
+ if (rules.length) {
128
+ output = `${appendSelectors(selector)} {
129
+ ${rules.join('; ')};
130
+ }`;
131
+ } // Output blockGap styles based on rules contained in layout definitions in theme.json.
132
+
133
+
134
+ if (hasBlockGapSupport && blockGapValue) {
135
+ output += getBlockGapCSS(selector, layoutDefinitions, 'flex', blockGapValue);
136
+ }
137
+
138
+ return output;
131
139
  },
132
140
 
133
141
  getOrientation(layout) {