@wordpress/block-editor 12.12.0 → 12.13.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 (287) hide show
  1. package/CHANGELOG.md +12 -10
  2. package/README.md +35 -3
  3. package/build/components/block-alignment-control/use-available-alignments.js +30 -28
  4. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  5. package/build/components/block-list/block.native.js +4 -4
  6. package/build/components/block-list/block.native.js.map +1 -1
  7. package/build/components/block-list/layout.js +2 -3
  8. package/build/components/block-list/layout.js.map +1 -1
  9. package/build/components/border-radius-control/index.js +3 -2
  10. package/build/components/border-radius-control/index.js.map +1 -1
  11. package/build/components/color-palette/with-color-context.js +6 -6
  12. package/build/components/color-palette/with-color-context.js.map +1 -1
  13. package/build/components/colors/with-colors.js +2 -8
  14. package/build/components/colors/with-colors.js.map +1 -1
  15. package/build/components/colors-gradients/control.js +6 -7
  16. package/build/components/colors-gradients/control.js.map +1 -1
  17. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +5 -13
  18. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  19. package/build/components/font-family/index.js +2 -3
  20. package/build/components/font-family/index.js.map +1 -1
  21. package/build/components/font-sizes/font-size-picker.js +3 -5
  22. package/build/components/font-sizes/font-size-picker.js.map +1 -1
  23. package/build/components/font-sizes/with-font-sizes.js +3 -4
  24. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  25. package/build/components/global-styles/filters-panel.js +7 -8
  26. package/build/components/global-styles/filters-panel.js.map +1 -1
  27. package/build/components/global-styles/image-settings-panel.js +2 -2
  28. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  29. package/build/components/global-styles/typography-panel.js +1 -1
  30. package/build/components/global-styles/typography-panel.js.map +1 -1
  31. package/build/components/gradients/use-gradient.js +2 -5
  32. package/build/components/gradients/use-gradient.js.map +1 -1
  33. package/build/components/height-control/index.js +3 -3
  34. package/build/components/height-control/index.js.map +1 -1
  35. package/build/components/index.js +9 -2
  36. package/build/components/index.js.map +1 -1
  37. package/build/components/index.native.js +9 -2
  38. package/build/components/index.native.js.map +1 -1
  39. package/build/components/inner-blocks/index.js +2 -2
  40. package/build/components/inner-blocks/index.js.map +1 -1
  41. package/build/components/letter-spacing-control/index.js +3 -3
  42. package/build/components/letter-spacing-control/index.js.map +1 -1
  43. package/build/components/link-control/search-item.js +11 -0
  44. package/build/components/link-control/search-item.js.map +1 -1
  45. package/build/components/link-control/search-results.js +2 -1
  46. package/build/components/link-control/search-results.js.map +1 -1
  47. package/build/components/link-control/use-search-handler.js +10 -5
  48. package/build/components/link-control/use-search-handler.js.map +1 -1
  49. package/build/components/resizable-box-popover/index.js +1 -1
  50. package/build/components/resizable-box-popover/index.js.map +1 -1
  51. package/build/components/rich-text/index.js +1 -1
  52. package/build/components/rich-text/index.js.map +1 -1
  53. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +6 -3
  54. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  55. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -3
  56. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  57. package/build/components/unit-control/index.js +3 -3
  58. package/build/components/unit-control/index.js.map +1 -1
  59. package/build/components/use-block-commands/index.js +6 -1
  60. package/build/components/use-block-commands/index.js.map +1 -1
  61. package/build/components/use-settings/index.js +212 -0
  62. package/build/components/use-settings/index.js.map +1 -0
  63. package/build/hooks/align.js +51 -35
  64. package/build/hooks/align.js.map +1 -1
  65. package/build/hooks/anchor.js +37 -32
  66. package/build/hooks/anchor.js.map +1 -1
  67. package/build/hooks/background.js +4 -4
  68. package/build/hooks/background.js.map +1 -1
  69. package/build/hooks/color.js +2 -4
  70. package/build/hooks/color.js.map +1 -1
  71. package/build/hooks/duotone.js +10 -9
  72. package/build/hooks/duotone.js.map +1 -1
  73. package/build/hooks/font-size.js +4 -4
  74. package/build/hooks/font-size.js.map +1 -1
  75. package/build/hooks/layout.js +10 -11
  76. package/build/hooks/layout.js.map +1 -1
  77. package/build/hooks/line-height.js +3 -3
  78. package/build/hooks/line-height.js.map +1 -1
  79. package/build/hooks/position.js +2 -3
  80. package/build/hooks/position.js.map +1 -1
  81. package/build/hooks/use-color-props.js +3 -11
  82. package/build/hooks/use-color-props.js.map +1 -1
  83. package/build/hooks/utils.js +1 -42
  84. package/build/hooks/utils.js.map +1 -1
  85. package/build/layouts/constrained.js +3 -3
  86. package/build/layouts/constrained.js.map +1 -1
  87. package/build/utils/object.js +4 -1
  88. package/build/utils/object.js.map +1 -1
  89. package/build/utils/transform-styles/index.js +19 -24
  90. package/build/utils/transform-styles/index.js.map +1 -1
  91. package/build-module/components/block-alignment-control/use-available-alignments.js +30 -28
  92. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  93. package/build-module/components/block-list/block.native.js +4 -4
  94. package/build-module/components/block-list/block.native.js.map +1 -1
  95. package/build-module/components/block-list/layout.js +2 -2
  96. package/build-module/components/block-list/layout.js.map +1 -1
  97. package/build-module/components/border-radius-control/index.js +3 -2
  98. package/build-module/components/border-radius-control/index.js.map +1 -1
  99. package/build-module/components/color-palette/with-color-context.js +6 -5
  100. package/build-module/components/color-palette/with-color-context.js.map +1 -1
  101. package/build-module/components/colors/with-colors.js +2 -7
  102. package/build-module/components/colors/with-colors.js.map +1 -1
  103. package/build-module/components/colors-gradients/control.js +6 -7
  104. package/build-module/components/colors-gradients/control.js.map +1 -1
  105. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +5 -12
  106. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  107. package/build-module/components/font-family/index.js +2 -2
  108. package/build-module/components/font-family/index.js.map +1 -1
  109. package/build-module/components/font-sizes/font-size-picker.js +3 -4
  110. package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
  111. package/build-module/components/font-sizes/with-font-sizes.js +3 -3
  112. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  113. package/build-module/components/global-styles/filters-panel.js +7 -8
  114. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  115. package/build-module/components/global-styles/image-settings-panel.js +2 -2
  116. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  117. package/build-module/components/global-styles/typography-panel.js +1 -1
  118. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  119. package/build-module/components/gradients/use-gradient.js +2 -4
  120. package/build-module/components/gradients/use-gradient.js.map +1 -1
  121. package/build-module/components/height-control/index.js +3 -2
  122. package/build-module/components/height-control/index.js.map +1 -1
  123. package/build-module/components/index.js +1 -1
  124. package/build-module/components/index.js.map +1 -1
  125. package/build-module/components/index.native.js +1 -1
  126. package/build-module/components/index.native.js.map +1 -1
  127. package/build-module/components/inner-blocks/index.js +2 -2
  128. package/build-module/components/inner-blocks/index.js.map +1 -1
  129. package/build-module/components/letter-spacing-control/index.js +3 -2
  130. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  131. package/build-module/components/link-control/search-item.js +12 -1
  132. package/build-module/components/link-control/search-item.js.map +1 -1
  133. package/build-module/components/link-control/search-results.js +2 -1
  134. package/build-module/components/link-control/search-results.js.map +1 -1
  135. package/build-module/components/link-control/use-search-handler.js +10 -5
  136. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  137. package/build-module/components/resizable-box-popover/index.js +1 -1
  138. package/build-module/components/resizable-box-popover/index.js.map +1 -1
  139. package/build-module/components/rich-text/index.js +1 -1
  140. package/build-module/components/rich-text/index.js.map +1 -1
  141. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +6 -2
  142. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  143. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -2
  144. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  145. package/build-module/components/unit-control/index.js +3 -2
  146. package/build-module/components/unit-control/index.js.map +1 -1
  147. package/build-module/components/use-block-commands/index.js +5 -1
  148. package/build-module/components/use-block-commands/index.js.map +1 -1
  149. package/build-module/components/use-settings/index.js +203 -0
  150. package/build-module/components/use-settings/index.js.map +1 -0
  151. package/build-module/hooks/align.js +51 -35
  152. package/build-module/hooks/align.js.map +1 -1
  153. package/build-module/hooks/anchor.js +37 -32
  154. package/build-module/hooks/anchor.js.map +1 -1
  155. package/build-module/hooks/background.js +4 -4
  156. package/build-module/hooks/background.js.map +1 -1
  157. package/build-module/hooks/color.js +2 -4
  158. package/build-module/hooks/color.js.map +1 -1
  159. package/build-module/hooks/duotone.js +11 -10
  160. package/build-module/hooks/duotone.js.map +1 -1
  161. package/build-module/hooks/font-size.js +4 -4
  162. package/build-module/hooks/font-size.js.map +1 -1
  163. package/build-module/hooks/layout.js +10 -11
  164. package/build-module/hooks/layout.js.map +1 -1
  165. package/build-module/hooks/line-height.js +3 -3
  166. package/build-module/hooks/line-height.js.map +1 -1
  167. package/build-module/hooks/position.js +2 -3
  168. package/build-module/hooks/position.js.map +1 -1
  169. package/build-module/hooks/use-color-props.js +3 -11
  170. package/build-module/hooks/use-color-props.js.map +1 -1
  171. package/build-module/hooks/utils.js +2 -43
  172. package/build-module/hooks/utils.js.map +1 -1
  173. package/build-module/layouts/constrained.js +3 -2
  174. package/build-module/layouts/constrained.js.map +1 -1
  175. package/build-module/utils/object.js +3 -1
  176. package/build-module/utils/object.js.map +1 -1
  177. package/build-module/utils/transform-styles/index.js +20 -24
  178. package/build-module/utils/transform-styles/index.js.map +1 -1
  179. package/build-style/style-rtl.css +13 -6
  180. package/build-style/style.css +13 -6
  181. package/package.json +36 -34
  182. package/src/components/block-alignment-control/use-available-alignments.js +49 -34
  183. package/src/components/block-list/block.native.js +4 -4
  184. package/src/components/block-list/layout.js +2 -2
  185. package/src/components/block-styles/style.scss +1 -1
  186. package/src/components/border-radius-control/index.js +3 -2
  187. package/src/components/color-palette/with-color-context.js +9 -9
  188. package/src/components/colors/with-colors.js +6 -7
  189. package/src/components/colors-gradients/control.js +10 -7
  190. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +29 -15
  191. package/src/components/font-family/index.js +2 -2
  192. package/src/components/font-sizes/font-size-picker.js +6 -4
  193. package/src/components/font-sizes/with-font-sizes.js +3 -5
  194. package/src/components/global-styles/filters-panel.js +9 -15
  195. package/src/components/global-styles/image-settings-panel.js +2 -2
  196. package/src/components/global-styles/typography-panel.js +1 -1
  197. package/src/components/gradients/use-gradient.js +10 -4
  198. package/src/components/height-control/index.js +3 -2
  199. package/src/components/index.js +1 -1
  200. package/src/components/index.native.js +1 -1
  201. package/src/components/inner-blocks/index.js +2 -2
  202. package/src/components/inserter/style.scss +9 -1
  203. package/src/components/letter-spacing-control/index.js +3 -2
  204. package/src/components/link-control/search-item.js +14 -0
  205. package/src/components/link-control/search-results.js +1 -0
  206. package/src/components/link-control/use-search-handler.js +22 -15
  207. package/src/components/resizable-box-popover/index.js +1 -1
  208. package/src/components/rich-text/index.js +1 -1
  209. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +7 -5
  210. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -2
  211. package/src/components/unit-control/index.js +3 -8
  212. package/src/components/use-block-commands/index.js +2 -1
  213. package/src/components/{use-setting → use-settings}/README.md +9 -10
  214. package/src/components/use-settings/index.js +272 -0
  215. package/src/components/{use-setting → use-settings}/test/index.js +47 -5
  216. package/src/hooks/align.js +79 -54
  217. package/src/hooks/anchor.js +75 -65
  218. package/src/hooks/background.js +7 -9
  219. package/src/hooks/color.js +7 -4
  220. package/src/hooks/duotone.js +24 -19
  221. package/src/hooks/font-size.js +4 -4
  222. package/src/hooks/layout.js +11 -11
  223. package/src/hooks/line-height.js +3 -3
  224. package/src/hooks/position.js +5 -3
  225. package/src/hooks/use-color-props.js +21 -14
  226. package/src/hooks/utils.js +88 -43
  227. package/src/layouts/constrained.js +3 -8
  228. package/src/utils/object.js +4 -1
  229. package/src/utils/test/__snapshots__/transform-styles.js.snap +103 -0
  230. package/src/utils/test/transform-styles.js +217 -0
  231. package/src/utils/transform-styles/index.js +25 -25
  232. package/build/components/use-setting/index.js +0 -161
  233. package/build/components/use-setting/index.js.map +0 -1
  234. package/build/utils/transform-styles/ast/index.js +0 -21
  235. package/build/utils/transform-styles/ast/index.js.map +0 -1
  236. package/build/utils/transform-styles/ast/parse.js +0 -660
  237. package/build/utils/transform-styles/ast/parse.js.map +0 -1
  238. package/build/utils/transform-styles/ast/stringify/compiler.js +0 -52
  239. package/build/utils/transform-styles/ast/stringify/compiler.js.map +0 -1
  240. package/build/utils/transform-styles/ast/stringify/compress.js +0 -178
  241. package/build/utils/transform-styles/ast/stringify/compress.js.map +0 -1
  242. package/build/utils/transform-styles/ast/stringify/identity.js +0 -207
  243. package/build/utils/transform-styles/ast/stringify/identity.js.map +0 -1
  244. package/build/utils/transform-styles/ast/stringify/index.js +0 -36
  245. package/build/utils/transform-styles/ast/stringify/index.js.map +0 -1
  246. package/build/utils/transform-styles/transforms/url-rewrite.js +0 -130
  247. package/build/utils/transform-styles/transforms/url-rewrite.js.map +0 -1
  248. package/build/utils/transform-styles/transforms/wrap.js +0 -59
  249. package/build/utils/transform-styles/transforms/wrap.js.map +0 -1
  250. package/build/utils/transform-styles/traverse.js +0 -37
  251. package/build/utils/transform-styles/traverse.js.map +0 -1
  252. package/build-module/components/use-setting/index.js +0 -154
  253. package/build-module/components/use-setting/index.js.map +0 -1
  254. package/build-module/utils/transform-styles/ast/index.js +0 -6
  255. package/build-module/utils/transform-styles/ast/index.js.map +0 -1
  256. package/build-module/utils/transform-styles/ast/parse.js +0 -654
  257. package/build-module/utils/transform-styles/ast/parse.js.map +0 -1
  258. package/build-module/utils/transform-styles/ast/stringify/compiler.js +0 -49
  259. package/build-module/utils/transform-styles/ast/stringify/compiler.js.map +0 -1
  260. package/build-module/utils/transform-styles/ast/stringify/compress.js +0 -176
  261. package/build-module/utils/transform-styles/ast/stringify/compress.js.map +0 -1
  262. package/build-module/utils/transform-styles/ast/stringify/identity.js +0 -206
  263. package/build-module/utils/transform-styles/ast/stringify/identity.js.map +0 -1
  264. package/build-module/utils/transform-styles/ast/stringify/index.js +0 -29
  265. package/build-module/utils/transform-styles/ast/stringify/index.js.map +0 -1
  266. package/build-module/utils/transform-styles/transforms/url-rewrite.js +0 -123
  267. package/build-module/utils/transform-styles/transforms/url-rewrite.js.map +0 -1
  268. package/build-module/utils/transform-styles/transforms/wrap.js +0 -52
  269. package/build-module/utils/transform-styles/transforms/wrap.js.map +0 -1
  270. package/build-module/utils/transform-styles/traverse.js +0 -28
  271. package/build-module/utils/transform-styles/traverse.js.map +0 -1
  272. package/src/components/use-setting/index.js +0 -218
  273. package/src/utils/transform-styles/ast/index.js +0 -5
  274. package/src/utils/transform-styles/ast/parse.js +0 -732
  275. package/src/utils/transform-styles/ast/stringify/compiler.js +0 -50
  276. package/src/utils/transform-styles/ast/stringify/compress.js +0 -238
  277. package/src/utils/transform-styles/ast/stringify/identity.js +0 -286
  278. package/src/utils/transform-styles/ast/stringify/index.js +0 -32
  279. package/src/utils/transform-styles/test/__snapshots__/traverse.js.snap +0 -7
  280. package/src/utils/transform-styles/test/traverse.js +0 -24
  281. package/src/utils/transform-styles/transforms/test/__snapshots__/url-rewrite.js.snap +0 -25
  282. package/src/utils/transform-styles/transforms/test/__snapshots__/wrap.js.snap +0 -64
  283. package/src/utils/transform-styles/transforms/test/url-rewrite.js +0 -39
  284. package/src/utils/transform-styles/transforms/test/wrap.js +0 -95
  285. package/src/utils/transform-styles/transforms/url-rewrite.js +0 -139
  286. package/src/utils/transform-styles/transforms/wrap.js +0 -56
  287. package/src/utils/transform-styles/traverse.js +0 -32
@@ -54,13 +54,15 @@ function useMultiOriginColorPresets(
54
54
  }
55
55
 
56
56
  export function useHasFiltersPanel( settings ) {
57
- const hasDuotone = useHasDuotoneControl( settings );
58
-
59
- return hasDuotone;
57
+ return useHasDuotoneControl( settings );
60
58
  }
61
59
 
62
60
  function useHasDuotoneControl( settings ) {
63
- return settings.color.customDuotone || settings.color.defaultDuotone;
61
+ return (
62
+ settings.color.customDuotone ||
63
+ settings.color.defaultDuotone ||
64
+ settings.color.duotone.length > 0
65
+ );
64
66
  }
65
67
 
66
68
  function FiltersToolsPanel( {
@@ -148,11 +150,6 @@ export default function FiltersPanel( {
148
150
  const hasDuotone = () => !! value?.filter?.duotone;
149
151
  const resetDuotone = () => setDuotone( undefined );
150
152
 
151
- const disableCustomColors = ! settings?.color?.custom;
152
- const disableCustomDuotone =
153
- ! settings?.color?.customDuotone ||
154
- ( colorPalette?.length === 0 && disableCustomColors );
155
-
156
153
  const resetAllFilter = useCallback( ( previousValue ) => {
157
154
  return {
158
155
  ...previousValue,
@@ -210,12 +207,9 @@ export default function FiltersPanel( {
210
207
  <DuotonePicker
211
208
  colorPalette={ colorPalette }
212
209
  duotonePalette={ duotonePalette }
213
- disableCustomColors={
214
- disableCustomColors
215
- }
216
- disableCustomDuotone={
217
- disableCustomDuotone
218
- }
210
+ // TODO: Re-enable both when custom colors are supported for block-level styles.
211
+ disableCustomColors
212
+ disableCustomDuotone
219
213
  value={ duotone }
220
214
  onChange={ setDuotone }
221
215
  />
@@ -54,13 +54,13 @@ export default function ImageSettingsPanel( {
54
54
  // "RESET" button ONLY when the user has explicitly set a value in the
55
55
  // Global Styles.
56
56
  hasValue={ () => !! value?.lightbox }
57
- label={ __( 'Expand on Click' ) }
57
+ label={ __( 'Expand on click' ) }
58
58
  onDeselect={ resetLightbox }
59
59
  isShownByDefault={ true }
60
60
  panelId={ panelId }
61
61
  >
62
62
  <ToggleControl
63
- label={ __( 'Expand on Click' ) }
63
+ label={ __( 'Expand on click' ) }
64
64
  checked={ lightboxChecked }
65
65
  onChange={ onChangeLightbox }
66
66
  />
@@ -67,7 +67,7 @@ function useHasFontFamilyControl( settings ) {
67
67
  .concat( fontFamiliesPerOrigin?.theme ?? [] )
68
68
  .concat( fontFamiliesPerOrigin?.default ?? [] )
69
69
  .sort( ( a, b ) =>
70
- ( a?.name || a?.slug ).localeCompare( b?.name || a?.slug )
70
+ ( a?.name || a?.slug )?.localeCompare( b?.name || a?.slug )
71
71
  );
72
72
  return !! fontFamilies?.length;
73
73
  }
@@ -8,7 +8,7 @@ import { useSelect, useDispatch } from '@wordpress/data';
8
8
  * Internal dependencies
9
9
  */
10
10
  import { useBlockEditContext } from '../block-edit';
11
- import useSetting from '../use-setting';
11
+ import { useSettings } from '../use-settings';
12
12
  import { store as blockEditorStore } from '../../store';
13
13
 
14
14
  export function __experimentalGetGradientClass( gradientSlug ) {
@@ -60,9 +60,15 @@ export function __experimentalUseGradient( {
60
60
  } = {} ) {
61
61
  const { clientId } = useBlockEditContext();
62
62
 
63
- const userGradientPalette = useSetting( 'color.gradients.custom' );
64
- const themeGradientPalette = useSetting( 'color.gradients.theme' );
65
- const defaultGradientPalette = useSetting( 'color.gradients.default' );
63
+ const [
64
+ userGradientPalette,
65
+ themeGradientPalette,
66
+ defaultGradientPalette,
67
+ ] = useSettings(
68
+ 'color.gradients.custom',
69
+ 'color.gradients.theme',
70
+ 'color.gradients.default'
71
+ );
66
72
  const allGradients = useMemo(
67
73
  () => [
68
74
  ...( userGradientPalette || [] ),
@@ -17,7 +17,7 @@ import { __ } from '@wordpress/i18n';
17
17
  /**
18
18
  * Internal dependencies
19
19
  */
20
- import useSetting from '../use-setting';
20
+ import { useSettings } from '../use-settings';
21
21
 
22
22
  const RANGE_CONTROL_CUSTOM_SETTINGS = {
23
23
  px: { max: 1000, step: 1 },
@@ -69,8 +69,9 @@ export default function HeightControl( {
69
69
  } ) {
70
70
  const customRangeValue = parseFloat( value );
71
71
 
72
+ const [ availableUnits ] = useSettings( 'spacing.units' );
72
73
  const units = useCustomUnits( {
73
- availableUnits: useSetting( 'spacing.units' ) || [
74
+ availableUnits: availableUnits || [
74
75
  '%',
75
76
  'px',
76
77
  'em',
@@ -165,7 +165,7 @@ export { useBlockEditingMode } from './block-editing-mode';
165
165
  */
166
166
 
167
167
  export { default as BlockEditorProvider } from './provider';
168
- export { default as useSetting } from './use-setting';
168
+ export { useSettings, useSetting } from './use-settings';
169
169
  export { useBlockCommands } from './use-block-commands';
170
170
 
171
171
  /*
@@ -59,7 +59,7 @@ export { default as BlockCaption } from './block-caption';
59
59
  export { default as Caption } from './caption';
60
60
  export { default as PanelColorSettings } from './panel-color-settings';
61
61
  export { default as __experimentalPanelColorGradientSettings } from './colors-gradients/panel-color-gradient-settings';
62
- export { default as useSetting } from './use-setting';
62
+ export { useSettings, default as useSetting } from './use-settings';
63
63
  export {
64
64
  RecursionProvider as __experimentalRecursionProvider,
65
65
  useHasRecursion as __experimentalUseHasRecursion,
@@ -29,7 +29,7 @@ import { useBlockEditContext } from '../block-edit/context';
29
29
  import useBlockSync from '../provider/use-block-sync';
30
30
  import { store as blockEditorStore } from '../../store';
31
31
  import useBlockDropZone from '../use-block-drop-zone';
32
- import useSetting from '../use-setting';
32
+ import { useSettings } from '../use-settings';
33
33
 
34
34
  const EMPTY_OBJECT = {};
35
35
 
@@ -98,7 +98,7 @@ function UncontrolledInnerBlocks( props ) {
98
98
 
99
99
  const { allowSizingOnChildren = false } = defaultLayoutBlockSupport;
100
100
 
101
- const defaultLayout = useSetting( 'layout' ) || EMPTY_OBJECT;
101
+ const [ defaultLayout ] = useSettings( 'layout' );
102
102
 
103
103
  const usedLayout = layout || defaultLayoutBlockSupport;
104
104
 
@@ -292,6 +292,11 @@ $block-inserter-tabs-height: 44px;
292
292
  div[role="listitem"]:last-child {
293
293
  margin-top: auto;
294
294
  }
295
+
296
+ .block-editor-inserter__patterns-category {
297
+ // Account for the icon on the right so that it's visually balanced.
298
+ padding-right: $grid-unit-05;
299
+ }
295
300
  }
296
301
 
297
302
  .block-editor-inserter__patterns-category-dialog {
@@ -533,7 +538,10 @@ $block-inserter-tabs-height: 44px;
533
538
  margin-top: auto;
534
539
  }
535
540
 
536
- &__media-category {
541
+ .block-editor-inserter__media-tabs__media-category {
542
+ // Account for the icon on the right so that it's visually balanced.
543
+ padding-right: $grid-unit-05;
544
+
537
545
  &.is-selected {
538
546
  color: var(--wp-admin-theme-color);
539
547
  position: relative;
@@ -10,7 +10,7 @@ import { __ } from '@wordpress/i18n';
10
10
  /**
11
11
  * Internal dependencies
12
12
  */
13
- import useSetting from '../../components/use-setting';
13
+ import { useSettings } from '../../components/use-settings';
14
14
 
15
15
  /**
16
16
  * Control for letter-spacing.
@@ -28,8 +28,9 @@ export default function LetterSpacingControl( {
28
28
  __unstableInputWidth = '60px',
29
29
  ...otherProps
30
30
  } ) {
31
+ const [ availableUnits ] = useSettings( 'spacing.units' );
31
32
  const units = useCustomUnits( {
32
- availableUnits: useSetting( 'spacing.units' ) || [ 'px', 'em', 'rem' ],
33
+ availableUnits: availableUnits || [ 'px', 'em', 'rem' ],
33
34
  defaultValues: { px: 2, em: 0.2, rem: 0.2 },
34
35
  } );
35
36
  return (
@@ -11,6 +11,8 @@ import {
11
11
  postList,
12
12
  category,
13
13
  file,
14
+ home,
15
+ verse,
14
16
  } from '@wordpress/icons';
15
17
  import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
16
18
  import { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';
@@ -31,6 +33,14 @@ function SearchItemIcon( { isURL, suggestion } ) {
31
33
  icon = globe;
32
34
  } else if ( suggestion.type in ICONS_MAP ) {
33
35
  icon = ICONS_MAP[ suggestion.type ];
36
+ if ( suggestion.type === 'page' ) {
37
+ if ( suggestion.isFrontPage ) {
38
+ icon = home;
39
+ }
40
+ if ( suggestion.isBlogHome ) {
41
+ icon = verse;
42
+ }
43
+ }
34
44
  }
35
45
 
36
46
  if ( icon ) {
@@ -135,6 +145,10 @@ function getVisualTypeName( suggestion ) {
135
145
  return 'front page';
136
146
  }
137
147
 
148
+ if ( suggestion.isBlogHome ) {
149
+ return 'blog home';
150
+ }
151
+
138
152
  // Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.
139
153
  return suggestion.type === 'post_tag' ? 'tag' : suggestion.type;
140
154
  }
@@ -123,6 +123,7 @@ export default function LinkControlSearchResults( {
123
123
  searchTerm={ currentInputValue }
124
124
  shouldShowType={ shouldShowSuggestionsTypes }
125
125
  isFrontPage={ suggestion?.isFrontPage }
126
+ isBlogHome={ suggestion?.isBlogHome }
126
127
  />
127
128
  );
128
129
  } ) }
@@ -52,7 +52,8 @@ const handleEntitySearch = async (
52
52
  suggestionsQuery,
53
53
  fetchSearchSuggestions,
54
54
  withCreateSuggestion,
55
- pageOnFront
55
+ pageOnFront,
56
+ pageForPosts
56
57
  ) => {
57
58
  const { isInitialSuggestions } = suggestionsQuery;
58
59
 
@@ -63,6 +64,9 @@ const handleEntitySearch = async (
63
64
  if ( Number( result.id ) === pageOnFront ) {
64
65
  result.isFrontPage = true;
65
66
  return result;
67
+ } else if ( Number( result.id ) === pageForPosts ) {
68
+ result.isBlogHome = true;
69
+ return result;
66
70
  }
67
71
 
68
72
  return result;
@@ -102,18 +106,21 @@ const handleEntitySearch = async (
102
106
  export default function useSearchHandler(
103
107
  suggestionsQuery,
104
108
  allowDirectEntry,
105
- withCreateSuggestion,
106
- withURLSuggestion
109
+ withCreateSuggestion
107
110
  ) {
108
- const { fetchSearchSuggestions, pageOnFront } = useSelect( ( select ) => {
109
- const { getSettings } = select( blockEditorStore );
110
-
111
- return {
112
- pageOnFront: getSettings().pageOnFront,
113
- fetchSearchSuggestions:
114
- getSettings().__experimentalFetchLinkSuggestions,
115
- };
116
- }, [] );
111
+ const { fetchSearchSuggestions, pageOnFront, pageForPosts } = useSelect(
112
+ ( select ) => {
113
+ const { getSettings } = select( blockEditorStore );
114
+
115
+ return {
116
+ pageOnFront: getSettings().pageOnFront,
117
+ pageForPosts: getSettings().pageForPosts,
118
+ fetchSearchSuggestions:
119
+ getSettings().__experimentalFetchLinkSuggestions,
120
+ };
121
+ },
122
+ []
123
+ );
117
124
 
118
125
  const directEntryHandler = allowDirectEntry
119
126
  ? handleDirectEntry
@@ -128,17 +135,17 @@ export default function useSearchHandler(
128
135
  { ...suggestionsQuery, isInitialSuggestions },
129
136
  fetchSearchSuggestions,
130
137
  withCreateSuggestion,
131
- withURLSuggestion,
132
- pageOnFront
138
+ pageOnFront,
139
+ pageForPosts
133
140
  );
134
141
  },
135
142
  [
136
143
  directEntryHandler,
137
144
  fetchSearchSuggestions,
138
145
  pageOnFront,
146
+ pageForPosts,
139
147
  suggestionsQuery,
140
148
  withCreateSuggestion,
141
- withURLSuggestion,
142
149
  ]
143
150
  );
144
151
  }
@@ -17,7 +17,7 @@ export default function ResizableBoxPopover( {
17
17
  <BlockPopover
18
18
  clientId={ clientId }
19
19
  __unstableCoverTarget
20
- __unstablePopoverSlot="block-toolbar"
20
+ __unstablePopoverSlot="__unstable-block-tools-after"
21
21
  shift={ false }
22
22
  { ...props }
23
23
  >
@@ -141,7 +141,7 @@ export function RichTextWrapper(
141
141
  };
142
142
  };
143
143
  // This selector must run on every render so the right selection state is
144
- // retreived from the store on merge.
144
+ // retrieved from the store on merge.
145
145
  // To do: fix this somehow.
146
146
  const { selectionStart, selectionEnd, isSelected } = useSelect( selector );
147
147
  const { getSelectionStart, getSelectionEnd, getBlockRootClientId } =
@@ -6,13 +6,15 @@ import { __ } from '@wordpress/i18n';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import useSetting from '../../use-setting';
9
+ import { useSettings } from '../../use-settings';
10
10
 
11
11
  export default function useSpacingSizes() {
12
- const spacingSizes = [
13
- { name: 0, slug: '0', size: 0 },
14
- ...( useSetting( 'spacing.spacingSizes' ) || [] ),
15
- ];
12
+ const spacingSizes = [ { name: 0, slug: '0', size: 0 } ];
13
+
14
+ const [ settingsSizes ] = useSettings( 'spacing.spacingSizes' );
15
+ if ( settingsSizes ) {
16
+ spacingSizes.push( ...settingsSizes );
17
+ }
16
18
 
17
19
  if ( spacingSizes.length > 8 ) {
18
20
  spacingSizes.unshift( {
@@ -20,7 +20,7 @@ import { settings } from '@wordpress/icons';
20
20
  /**
21
21
  * Internal dependencies
22
22
  */
23
- import useSetting from '../../use-setting';
23
+ import { useSettings } from '../../use-settings';
24
24
  import { store as blockEditorStore } from '../../../store';
25
25
  import {
26
26
  ALL_SIDES,
@@ -102,8 +102,9 @@ export default function SpacingInputControl( {
102
102
  setShowCustomValueControl( true );
103
103
  }
104
104
 
105
+ const [ availableUnits ] = useSettings( 'spacing.units' );
105
106
  const units = useCustomUnits( {
106
- availableUnits: useSetting( 'spacing.units' ) || [ 'px', 'em', 'rem' ],
107
+ availableUnits: availableUnits || [ 'px', 'em', 'rem' ],
107
108
  } );
108
109
 
109
110
  let currentValue = null;
@@ -9,17 +9,12 @@ import {
9
9
  /**
10
10
  * Internal dependencies
11
11
  */
12
- import useSetting from '../use-setting';
12
+ import { useSettings } from '../use-settings';
13
13
 
14
14
  export default function UnitControl( { units: unitsProp, ...props } ) {
15
+ const [ availableUnits ] = useSettings( 'spacing.units' );
15
16
  const units = useCustomUnits( {
16
- availableUnits: useSetting( 'spacing.units' ) || [
17
- '%',
18
- 'px',
19
- 'em',
20
- 'rem',
21
- 'vw',
22
- ],
17
+ availableUnits: availableUnits || [ '%', 'px', 'em', 'rem', 'vw' ],
23
18
  units: unitsProp,
24
19
  } );
25
20
 
@@ -22,6 +22,7 @@ import {
22
22
  /**
23
23
  * Internal dependencies
24
24
  */
25
+ import BlockIcon from '../block-icon';
25
26
  import { store as blockEditorStore } from '../../store';
26
27
 
27
28
  export const useTransformCommands = () => {
@@ -100,7 +101,7 @@ export const useTransformCommands = () => {
100
101
  name: 'core/block-editor/transform-to-' + name.replace( '/', '-' ),
101
102
  // translators: %s: block title/name.
102
103
  label: sprintf( __( 'Transform to %s' ), title ),
103
- icon: icon.src,
104
+ icon: <BlockIcon icon={ icon } />,
104
105
  callback: ( { close } ) => {
105
106
  onBlockTransform( name );
106
107
  close();
@@ -1,8 +1,8 @@
1
- ## Use Setting
1
+ ## Use Settings
2
2
 
3
- `useSetting` is a hook that will retrive the setting for the block instance that's in use.
3
+ `useSettings` is a hook that will retrieve the settings for the block instance that's in use.
4
4
 
5
- It does the lookup of the setting in the following order:
5
+ It does the lookup of the settings in the following order:
6
6
 
7
7
  1. Third parties can provide the settings for the block using the filter `blockEditor.useSetting.before`.
8
8
  2. If no third parties have provided this setting, then it looks up in the block instance hierachy starting from the current block and working its way upwards to its ancestors.
@@ -20,20 +20,19 @@ It does the lookup of the setting in the following order:
20
20
  This will fetch the default color palette based on the block instance.
21
21
 
22
22
  ```jsx
23
- import { useSetting } from '@wordpress/block-editor';
23
+ import { useSettings } from '@wordpress/block-editor';
24
24
 
25
- const defaultColorPalette = useSetting( 'color.palette.default' );
25
+ const [ defaultColorPalette ] = useSettings( 'color.palette.default' );
26
26
  ```
27
27
 
28
28
  Refer [here](https://github.com/WordPress/gutenberg/blob/HEAD/docs/how-to-guides/curating-the-editor-experience.md?plain=1#L330) in order to understand how the filter mentioned above `blockEditor.useSetting.before` can be used.
29
29
 
30
30
  ### Props
31
31
 
32
- This hooks accepts the following props.
32
+ This hooks accepts the following arguments.
33
33
 
34
- #### `path`
34
+ #### `paths`
35
35
 
36
- - **Type:** `String`
37
- - **Default:** `undefined`
36
+ - **Type:** `Array<String>`
38
37
 
39
- The path to the setting that is to be used for a block. Ex: `typography.fontSizes`
38
+ Array of paths to the settings to be retrieved. E.g., `[ 'typography.fontSizes' ]`