@wordpress/block-editor 12.12.0 → 12.12.2-next.f8d8eceb.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 (282) 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/rich-text/index.js +1 -1
  50. package/build/components/rich-text/index.js.map +1 -1
  51. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +6 -3
  52. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  53. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -3
  54. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  55. package/build/components/unit-control/index.js +3 -3
  56. package/build/components/unit-control/index.js.map +1 -1
  57. package/build/components/use-block-commands/index.js +6 -1
  58. package/build/components/use-block-commands/index.js.map +1 -1
  59. package/build/components/use-settings/index.js +212 -0
  60. package/build/components/use-settings/index.js.map +1 -0
  61. package/build/hooks/align.js +51 -35
  62. package/build/hooks/align.js.map +1 -1
  63. package/build/hooks/anchor.js +37 -32
  64. package/build/hooks/anchor.js.map +1 -1
  65. package/build/hooks/background.js +4 -4
  66. package/build/hooks/background.js.map +1 -1
  67. package/build/hooks/color.js +2 -4
  68. package/build/hooks/color.js.map +1 -1
  69. package/build/hooks/duotone.js +5 -7
  70. package/build/hooks/duotone.js.map +1 -1
  71. package/build/hooks/font-size.js +4 -4
  72. package/build/hooks/font-size.js.map +1 -1
  73. package/build/hooks/layout.js +10 -11
  74. package/build/hooks/layout.js.map +1 -1
  75. package/build/hooks/line-height.js +3 -3
  76. package/build/hooks/line-height.js.map +1 -1
  77. package/build/hooks/position.js +2 -3
  78. package/build/hooks/position.js.map +1 -1
  79. package/build/hooks/use-color-props.js +3 -11
  80. package/build/hooks/use-color-props.js.map +1 -1
  81. package/build/hooks/utils.js +1 -42
  82. package/build/hooks/utils.js.map +1 -1
  83. package/build/layouts/constrained.js +3 -3
  84. package/build/layouts/constrained.js.map +1 -1
  85. package/build/utils/object.js +4 -1
  86. package/build/utils/object.js.map +1 -1
  87. package/build/utils/transform-styles/index.js +19 -24
  88. package/build/utils/transform-styles/index.js.map +1 -1
  89. package/build-module/components/block-alignment-control/use-available-alignments.js +30 -28
  90. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  91. package/build-module/components/block-list/block.native.js +4 -4
  92. package/build-module/components/block-list/block.native.js.map +1 -1
  93. package/build-module/components/block-list/layout.js +2 -2
  94. package/build-module/components/block-list/layout.js.map +1 -1
  95. package/build-module/components/border-radius-control/index.js +3 -2
  96. package/build-module/components/border-radius-control/index.js.map +1 -1
  97. package/build-module/components/color-palette/with-color-context.js +6 -5
  98. package/build-module/components/color-palette/with-color-context.js.map +1 -1
  99. package/build-module/components/colors/with-colors.js +2 -7
  100. package/build-module/components/colors/with-colors.js.map +1 -1
  101. package/build-module/components/colors-gradients/control.js +6 -7
  102. package/build-module/components/colors-gradients/control.js.map +1 -1
  103. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +5 -12
  104. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  105. package/build-module/components/font-family/index.js +2 -2
  106. package/build-module/components/font-family/index.js.map +1 -1
  107. package/build-module/components/font-sizes/font-size-picker.js +3 -4
  108. package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
  109. package/build-module/components/font-sizes/with-font-sizes.js +3 -3
  110. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  111. package/build-module/components/global-styles/filters-panel.js +7 -8
  112. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  113. package/build-module/components/global-styles/image-settings-panel.js +2 -2
  114. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  115. package/build-module/components/global-styles/typography-panel.js +1 -1
  116. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  117. package/build-module/components/gradients/use-gradient.js +2 -4
  118. package/build-module/components/gradients/use-gradient.js.map +1 -1
  119. package/build-module/components/height-control/index.js +3 -2
  120. package/build-module/components/height-control/index.js.map +1 -1
  121. package/build-module/components/index.js +1 -1
  122. package/build-module/components/index.js.map +1 -1
  123. package/build-module/components/index.native.js +1 -1
  124. package/build-module/components/index.native.js.map +1 -1
  125. package/build-module/components/inner-blocks/index.js +2 -2
  126. package/build-module/components/inner-blocks/index.js.map +1 -1
  127. package/build-module/components/letter-spacing-control/index.js +3 -2
  128. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  129. package/build-module/components/link-control/search-item.js +12 -1
  130. package/build-module/components/link-control/search-item.js.map +1 -1
  131. package/build-module/components/link-control/search-results.js +2 -1
  132. package/build-module/components/link-control/search-results.js.map +1 -1
  133. package/build-module/components/link-control/use-search-handler.js +10 -5
  134. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  135. package/build-module/components/rich-text/index.js +1 -1
  136. package/build-module/components/rich-text/index.js.map +1 -1
  137. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +6 -2
  138. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  139. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -2
  140. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  141. package/build-module/components/unit-control/index.js +3 -2
  142. package/build-module/components/unit-control/index.js.map +1 -1
  143. package/build-module/components/use-block-commands/index.js +5 -1
  144. package/build-module/components/use-block-commands/index.js.map +1 -1
  145. package/build-module/components/use-settings/index.js +203 -0
  146. package/build-module/components/use-settings/index.js.map +1 -0
  147. package/build-module/hooks/align.js +51 -35
  148. package/build-module/hooks/align.js.map +1 -1
  149. package/build-module/hooks/anchor.js +37 -32
  150. package/build-module/hooks/anchor.js.map +1 -1
  151. package/build-module/hooks/background.js +4 -4
  152. package/build-module/hooks/background.js.map +1 -1
  153. package/build-module/hooks/color.js +2 -4
  154. package/build-module/hooks/color.js.map +1 -1
  155. package/build-module/hooks/duotone.js +6 -8
  156. package/build-module/hooks/duotone.js.map +1 -1
  157. package/build-module/hooks/font-size.js +4 -4
  158. package/build-module/hooks/font-size.js.map +1 -1
  159. package/build-module/hooks/layout.js +10 -11
  160. package/build-module/hooks/layout.js.map +1 -1
  161. package/build-module/hooks/line-height.js +3 -3
  162. package/build-module/hooks/line-height.js.map +1 -1
  163. package/build-module/hooks/position.js +2 -3
  164. package/build-module/hooks/position.js.map +1 -1
  165. package/build-module/hooks/use-color-props.js +3 -11
  166. package/build-module/hooks/use-color-props.js.map +1 -1
  167. package/build-module/hooks/utils.js +2 -43
  168. package/build-module/hooks/utils.js.map +1 -1
  169. package/build-module/layouts/constrained.js +3 -2
  170. package/build-module/layouts/constrained.js.map +1 -1
  171. package/build-module/utils/object.js +3 -1
  172. package/build-module/utils/object.js.map +1 -1
  173. package/build-module/utils/transform-styles/index.js +20 -24
  174. package/build-module/utils/transform-styles/index.js.map +1 -1
  175. package/build-style/style-rtl.css +13 -6
  176. package/build-style/style.css +13 -6
  177. package/package.json +36 -34
  178. package/src/components/block-alignment-control/use-available-alignments.js +49 -34
  179. package/src/components/block-list/block.native.js +4 -4
  180. package/src/components/block-list/layout.js +2 -2
  181. package/src/components/block-styles/style.scss +1 -1
  182. package/src/components/border-radius-control/index.js +3 -2
  183. package/src/components/color-palette/with-color-context.js +9 -9
  184. package/src/components/colors/with-colors.js +6 -7
  185. package/src/components/colors-gradients/control.js +10 -7
  186. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +29 -15
  187. package/src/components/font-family/index.js +2 -2
  188. package/src/components/font-sizes/font-size-picker.js +6 -4
  189. package/src/components/font-sizes/with-font-sizes.js +3 -5
  190. package/src/components/global-styles/filters-panel.js +9 -15
  191. package/src/components/global-styles/image-settings-panel.js +2 -2
  192. package/src/components/global-styles/typography-panel.js +1 -1
  193. package/src/components/gradients/use-gradient.js +10 -4
  194. package/src/components/height-control/index.js +3 -2
  195. package/src/components/index.js +1 -1
  196. package/src/components/index.native.js +1 -1
  197. package/src/components/inner-blocks/index.js +2 -2
  198. package/src/components/inserter/style.scss +9 -1
  199. package/src/components/letter-spacing-control/index.js +3 -2
  200. package/src/components/link-control/search-item.js +14 -0
  201. package/src/components/link-control/search-results.js +1 -0
  202. package/src/components/link-control/use-search-handler.js +22 -15
  203. package/src/components/rich-text/index.js +1 -1
  204. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +7 -5
  205. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -2
  206. package/src/components/unit-control/index.js +3 -8
  207. package/src/components/use-block-commands/index.js +2 -1
  208. package/src/components/{use-setting → use-settings}/README.md +9 -10
  209. package/src/components/use-settings/index.js +272 -0
  210. package/src/components/{use-setting → use-settings}/test/index.js +47 -5
  211. package/src/hooks/align.js +79 -54
  212. package/src/hooks/anchor.js +75 -65
  213. package/src/hooks/background.js +7 -9
  214. package/src/hooks/color.js +7 -4
  215. package/src/hooks/duotone.js +18 -14
  216. package/src/hooks/font-size.js +4 -4
  217. package/src/hooks/layout.js +11 -11
  218. package/src/hooks/line-height.js +3 -3
  219. package/src/hooks/position.js +5 -3
  220. package/src/hooks/use-color-props.js +21 -14
  221. package/src/hooks/utils.js +88 -43
  222. package/src/layouts/constrained.js +3 -8
  223. package/src/utils/object.js +4 -1
  224. package/src/utils/test/__snapshots__/transform-styles.js.snap +103 -0
  225. package/src/utils/test/transform-styles.js +217 -0
  226. package/src/utils/transform-styles/index.js +25 -25
  227. package/build/components/use-setting/index.js +0 -161
  228. package/build/components/use-setting/index.js.map +0 -1
  229. package/build/utils/transform-styles/ast/index.js +0 -21
  230. package/build/utils/transform-styles/ast/index.js.map +0 -1
  231. package/build/utils/transform-styles/ast/parse.js +0 -660
  232. package/build/utils/transform-styles/ast/parse.js.map +0 -1
  233. package/build/utils/transform-styles/ast/stringify/compiler.js +0 -52
  234. package/build/utils/transform-styles/ast/stringify/compiler.js.map +0 -1
  235. package/build/utils/transform-styles/ast/stringify/compress.js +0 -178
  236. package/build/utils/transform-styles/ast/stringify/compress.js.map +0 -1
  237. package/build/utils/transform-styles/ast/stringify/identity.js +0 -207
  238. package/build/utils/transform-styles/ast/stringify/identity.js.map +0 -1
  239. package/build/utils/transform-styles/ast/stringify/index.js +0 -36
  240. package/build/utils/transform-styles/ast/stringify/index.js.map +0 -1
  241. package/build/utils/transform-styles/transforms/url-rewrite.js +0 -130
  242. package/build/utils/transform-styles/transforms/url-rewrite.js.map +0 -1
  243. package/build/utils/transform-styles/transforms/wrap.js +0 -59
  244. package/build/utils/transform-styles/transforms/wrap.js.map +0 -1
  245. package/build/utils/transform-styles/traverse.js +0 -37
  246. package/build/utils/transform-styles/traverse.js.map +0 -1
  247. package/build-module/components/use-setting/index.js +0 -154
  248. package/build-module/components/use-setting/index.js.map +0 -1
  249. package/build-module/utils/transform-styles/ast/index.js +0 -6
  250. package/build-module/utils/transform-styles/ast/index.js.map +0 -1
  251. package/build-module/utils/transform-styles/ast/parse.js +0 -654
  252. package/build-module/utils/transform-styles/ast/parse.js.map +0 -1
  253. package/build-module/utils/transform-styles/ast/stringify/compiler.js +0 -49
  254. package/build-module/utils/transform-styles/ast/stringify/compiler.js.map +0 -1
  255. package/build-module/utils/transform-styles/ast/stringify/compress.js +0 -176
  256. package/build-module/utils/transform-styles/ast/stringify/compress.js.map +0 -1
  257. package/build-module/utils/transform-styles/ast/stringify/identity.js +0 -206
  258. package/build-module/utils/transform-styles/ast/stringify/identity.js.map +0 -1
  259. package/build-module/utils/transform-styles/ast/stringify/index.js +0 -29
  260. package/build-module/utils/transform-styles/ast/stringify/index.js.map +0 -1
  261. package/build-module/utils/transform-styles/transforms/url-rewrite.js +0 -123
  262. package/build-module/utils/transform-styles/transforms/url-rewrite.js.map +0 -1
  263. package/build-module/utils/transform-styles/transforms/wrap.js +0 -52
  264. package/build-module/utils/transform-styles/transforms/wrap.js.map +0 -1
  265. package/build-module/utils/transform-styles/traverse.js +0 -28
  266. package/build-module/utils/transform-styles/traverse.js.map +0 -1
  267. package/src/components/use-setting/index.js +0 -218
  268. package/src/utils/transform-styles/ast/index.js +0 -5
  269. package/src/utils/transform-styles/ast/parse.js +0 -732
  270. package/src/utils/transform-styles/ast/stringify/compiler.js +0 -50
  271. package/src/utils/transform-styles/ast/stringify/compress.js +0 -238
  272. package/src/utils/transform-styles/ast/stringify/identity.js +0 -286
  273. package/src/utils/transform-styles/ast/stringify/index.js +0 -32
  274. package/src/utils/transform-styles/test/__snapshots__/traverse.js.snap +0 -7
  275. package/src/utils/transform-styles/test/traverse.js +0 -24
  276. package/src/utils/transform-styles/transforms/test/__snapshots__/url-rewrite.js.snap +0 -25
  277. package/src/utils/transform-styles/transforms/test/__snapshots__/wrap.js.snap +0 -64
  278. package/src/utils/transform-styles/transforms/test/url-rewrite.js +0 -39
  279. package/src/utils/transform-styles/transforms/test/wrap.js +0 -95
  280. package/src/utils/transform-styles/transforms/url-rewrite.js +0 -139
  281. package/src/utils/transform-styles/transforms/wrap.js +0 -56
  282. package/src/utils/transform-styles/traverse.js +0 -32
@@ -1 +1 @@
1
- {"version":3,"names":["Button","CustomSelectControl","Icon","RangeControl","__experimentalHStack","HStack","__experimentalUnitControl","UnitControl","__experimentalUseCustomUnits","useCustomUnits","__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","useSelect","useState","useMemo","usePrevious","__","sprintf","settings","useSetting","store","blockEditorStore","ALL_SIDES","LABELS","getSliderValueFromPreset","getCustomValueFromPreset","getPresetValueFromCustomValue","isValueSpacingPreset","CUSTOM_VALUE_SETTINGS","px","max","steps","vw","vh","em","rm","svw","lvw","dvw","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","SpacingInputControl","icon","isMixed","minimumCustomValue","onChange","onMouseOut","onMouseOver","showSideInLabel","side","spacingSizes","type","value","_CUSTOM_VALUE_SETTING","_CUSTOM_VALUE_SETTING2","selectListSizes","showRangeControl","length","disableCustomSpacingSizes","select","editorSettings","getSettings","showCustomValueControl","setShowCustomValueControl","undefined","previousValue","units","availableUnits","currentValue","showCustomValueInSelectList","name","slug","size","selectedUnit","setInitialValue","customTooltipContent","newValue","customRangeValue","parseFloat","getNewCustomValue","newSize","isNumeric","isNaN","nextValue","getNewPresetValue","controlType","parseInt","handleCustomValueSliderChange","next","join","allPlaceholder","options","map","index","key","marks","_newValue","label","sideLabel","includes","typeLabel","toLowerCase","ariaLabel","trim","createElement","className","Fragment","onFocus","onBlur","min","placeholder","disableUnits","hideLabelFromVision","step","withInputField","__nextHasNoMarginBottom","onMouseDown","event","nativeEvent","offsetX","renderTooltipContent","find","option","selection","selectedItem","__nextUnconstrainedWidth","onClick","isPressed","isSmall","iconSize"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/input-controls/spacing-input-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tCustomSelectControl,\n\tIcon,\n\tRangeControl,\n\t__experimentalHStack as HStack,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { settings } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport useSetting from '../../use-setting';\nimport { store as blockEditorStore } from '../../../store';\nimport {\n\tALL_SIDES,\n\tLABELS,\n\tgetSliderValueFromPreset,\n\tgetCustomValueFromPreset,\n\tgetPresetValueFromCustomValue,\n\tisValueSpacingPreset,\n} from '../utils';\n\nconst CUSTOM_VALUE_SETTINGS = {\n\tpx: { max: 300, steps: 1 },\n\t'%': { max: 100, steps: 1 },\n\tvw: { max: 100, steps: 1 },\n\tvh: { max: 100, steps: 1 },\n\tem: { max: 10, steps: 0.1 },\n\trm: { max: 10, steps: 0.1 },\n\tsvw: { max: 100, steps: 1 },\n\tlvw: { max: 100, steps: 1 },\n\tdvw: { max: 100, steps: 1 },\n\tsvh: { max: 100, steps: 1 },\n\tlvh: { max: 100, steps: 1 },\n\tdvh: { max: 100, steps: 1 },\n\tvi: { max: 100, steps: 1 },\n\tsvi: { max: 100, steps: 1 },\n\tlvi: { max: 100, steps: 1 },\n\tdvi: { max: 100, steps: 1 },\n\tvb: { max: 100, steps: 1 },\n\tsvb: { max: 100, steps: 1 },\n\tlvb: { max: 100, steps: 1 },\n\tdvb: { max: 100, steps: 1 },\n\tvmin: { max: 100, steps: 1 },\n\tsvmin: { max: 100, steps: 1 },\n\tlvmin: { max: 100, steps: 1 },\n\tdvmin: { max: 100, steps: 1 },\n\tvmax: { max: 100, steps: 1 },\n\tsvmax: { max: 100, steps: 1 },\n\tlvmax: { max: 100, steps: 1 },\n\tdvmax: { max: 100, steps: 1 },\n};\n\nexport default function SpacingInputControl( {\n\ticon,\n\tisMixed = false,\n\tminimumCustomValue,\n\tonChange,\n\tonMouseOut,\n\tonMouseOver,\n\tshowSideInLabel = true,\n\tside,\n\tspacingSizes,\n\ttype,\n\tvalue,\n} ) {\n\t// Treat value as a preset value if the passed in value matches the value of one of the spacingSizes.\n\tvalue = getPresetValueFromCustomValue( value, spacingSizes );\n\n\tlet selectListSizes = spacingSizes;\n\tconst showRangeControl = spacingSizes.length <= 8;\n\n\tconst disableCustomSpacingSizes = useSelect( ( select ) => {\n\t\tconst editorSettings = select( blockEditorStore ).getSettings();\n\t\treturn editorSettings?.disableCustomSpacingSizes;\n\t} );\n\n\tconst [ showCustomValueControl, setShowCustomValueControl ] = useState(\n\t\t! disableCustomSpacingSizes &&\n\t\t\tvalue !== undefined &&\n\t\t\t! isValueSpacingPreset( value )\n\t);\n\n\tconst previousValue = usePrevious( value );\n\tif (\n\t\t!! value &&\n\t\tpreviousValue !== value &&\n\t\t! isValueSpacingPreset( value ) &&\n\t\tshowCustomValueControl !== true\n\t) {\n\t\tsetShowCustomValueControl( true );\n\t}\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [ 'px', 'em', 'rem' ],\n\t} );\n\n\tlet currentValue = null;\n\n\tconst showCustomValueInSelectList =\n\t\t! showRangeControl &&\n\t\t! showCustomValueControl &&\n\t\tvalue !== undefined &&\n\t\t( ! isValueSpacingPreset( value ) ||\n\t\t\t( isValueSpacingPreset( value ) && isMixed ) );\n\n\tif ( showCustomValueInSelectList ) {\n\t\tselectListSizes = [\n\t\t\t...spacingSizes,\n\t\t\t{\n\t\t\t\tname: ! isMixed\n\t\t\t\t\t? // translators: A custom measurement, eg. a number followed by a unit like 12px.\n\t\t\t\t\t sprintf( __( 'Custom (%s)' ), value )\n\t\t\t\t\t: __( 'Mixed' ),\n\t\t\t\tslug: 'custom',\n\t\t\t\tsize: value,\n\t\t\t},\n\t\t];\n\t\tcurrentValue = selectListSizes.length - 1;\n\t} else if ( ! isMixed ) {\n\t\tcurrentValue = ! showCustomValueControl\n\t\t\t? getSliderValueFromPreset( value, spacingSizes )\n\t\t\t: getCustomValueFromPreset( value, spacingSizes );\n\t}\n\n\tconst selectedUnit =\n\t\tuseMemo(\n\t\t\t() => parseQuantityAndUnitFromRawValue( currentValue ),\n\t\t\t[ currentValue ]\n\t\t)[ 1 ] || units[ 0 ].value;\n\n\tconst setInitialValue = () => {\n\t\tif ( value === undefined ) {\n\t\t\tonChange( '0' );\n\t\t}\n\t};\n\n\tconst customTooltipContent = ( newValue ) =>\n\t\tvalue === undefined ? undefined : spacingSizes[ newValue ]?.name;\n\n\tconst customRangeValue = parseFloat( currentValue, 10 );\n\n\tconst getNewCustomValue = ( newSize ) => {\n\t\tconst isNumeric = ! isNaN( parseFloat( newSize ) );\n\t\tconst nextValue = isNumeric ? newSize : undefined;\n\t\treturn nextValue;\n\t};\n\n\tconst getNewPresetValue = ( newSize, controlType ) => {\n\t\tconst size = parseInt( newSize, 10 );\n\n\t\tif ( controlType === 'selectList' ) {\n\t\t\tif ( size === 0 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif ( size === 1 ) {\n\t\t\t\treturn '0';\n\t\t\t}\n\t\t} else if ( size === 0 ) {\n\t\t\treturn '0';\n\t\t}\n\t\treturn `var:preset|spacing|${ spacingSizes[ newSize ]?.slug }`;\n\t};\n\n\tconst handleCustomValueSliderChange = ( next ) => {\n\t\tonChange( [ next, selectedUnit ].join( '' ) );\n\t};\n\n\tconst allPlaceholder = isMixed ? __( 'Mixed' ) : null;\n\n\tconst options = selectListSizes.map( ( size, index ) => ( {\n\t\tkey: index,\n\t\tname: size.name,\n\t} ) );\n\n\tconst marks = spacingSizes.map( ( _newValue, index ) => ( {\n\t\tvalue: index,\n\t\tlabel: undefined,\n\t} ) );\n\n\tconst sideLabel =\n\t\tALL_SIDES.includes( side ) && showSideInLabel ? LABELS[ side ] : '';\n\tconst typeLabel = showSideInLabel ? type?.toLowerCase() : type;\n\n\tconst ariaLabel = sprintf(\n\t\t// translators: 1: The side of the block being modified (top, bottom, left, All sides etc.). 2. Type of spacing being modified (Padding, margin, etc)\n\t\t__( '%1$s %2$s' ),\n\t\tsideLabel,\n\t\ttypeLabel\n\t).trim();\n\n\treturn (\n\t\t<HStack className=\"spacing-sizes-control__wrapper\">\n\t\t\t{ icon && (\n\t\t\t\t<Icon\n\t\t\t\t\tclassName=\"spacing-sizes-control__icon\"\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tsize={ 24 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showCustomValueControl && (\n\t\t\t\t<>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t\t\tonChange={ ( newSize ) =>\n\t\t\t\t\t\t\tonChange( getNewCustomValue( newSize ) )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ currentValue }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ minimumCustomValue }\n\t\t\t\t\t\tplaceholder={ allPlaceholder }\n\t\t\t\t\t\tdisableUnits={ isMixed }\n\t\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t\tclassName=\"spacing-sizes-control__custom-value-input\"\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t/>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t\t\tvalue={ customRangeValue }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ CUSTOM_VALUE_SETTINGS[ selectedUnit ]?.max ?? 10 }\n\t\t\t\t\t\tstep={\n\t\t\t\t\t\t\tCUSTOM_VALUE_SETTINGS[ selectedUnit ]?.steps ?? 0.1\n\t\t\t\t\t\t}\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tonChange={ handleCustomValueSliderChange }\n\t\t\t\t\t\tclassName=\"spacing-sizes-control__custom-value-range\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<RangeControl\n\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\tclassName=\"spacing-sizes-control__range-control\"\n\t\t\t\t\tvalue={ currentValue }\n\t\t\t\t\tonChange={ ( newSize ) =>\n\t\t\t\t\t\tonChange( getNewPresetValue( newSize ) )\n\t\t\t\t\t}\n\t\t\t\t\tonMouseDown={ ( event ) => {\n\t\t\t\t\t\t// If mouse down is near start of range set initial value to 0, which\n\t\t\t\t\t\t// prevents the user have to drag right then left to get 0 setting.\n\t\t\t\t\t\tif ( event?.nativeEvent?.offsetX < 35 ) {\n\t\t\t\t\t\t\tsetInitialValue();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\twithInputField={ false }\n\t\t\t\t\taria-valuenow={ currentValue }\n\t\t\t\t\taria-valuetext={ spacingSizes[ currentValue ]?.name }\n\t\t\t\t\trenderTooltipContent={ customTooltipContent }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tmax={ spacingSizes.length - 1 }\n\t\t\t\t\tmarks={ marks }\n\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t__nextHasNoMarginBottom={ true }\n\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<CustomSelectControl\n\t\t\t\t\tclassName=\"spacing-sizes-control__custom-select-control\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\toptions.find(\n\t\t\t\t\t\t\t( option ) => option.key === currentValue\n\t\t\t\t\t\t) || '' // passing undefined here causes a downshift controlled/uncontrolled warning\n\t\t\t\t\t}\n\t\t\t\t\tonChange={ ( selection ) => {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tgetNewPresetValue(\n\t\t\t\t\t\t\t\tselection.selectedItem.key,\n\t\t\t\t\t\t\t\t'selectList'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t__nextUnconstrainedWidth={ true }\n\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! disableCustomSpacingSizes && (\n\t\t\t\t<Button\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tshowCustomValueControl\n\t\t\t\t\t\t\t? __( 'Use size preset' )\n\t\t\t\t\t\t\t: __( 'Set custom size' )\n\t\t\t\t\t}\n\t\t\t\t\ticon={ settings }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetShowCustomValueControl( ! showCustomValueControl );\n\t\t\t\t\t} }\n\t\t\t\t\tisPressed={ showCustomValueControl }\n\t\t\t\t\tisSmall\n\t\t\t\t\tclassName=\"spacing-sizes-control__custom-toggle\"\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</HStack>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Button","CustomSelectControl","Icon","RangeControl","__experimentalHStack","HStack","__experimentalUnitControl","UnitControl","__experimentalUseCustomUnits","useCustomUnits","__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","useSelect","useState","useMemo","usePrevious","__","sprintf","settings","useSettings","store","blockEditorStore","ALL_SIDES","LABELS","getSliderValueFromPreset","getCustomValueFromPreset","getPresetValueFromCustomValue","isValueSpacingPreset","CUSTOM_VALUE_SETTINGS","px","max","steps","vw","vh","em","rm","svw","lvw","dvw","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","SpacingInputControl","icon","isMixed","minimumCustomValue","onChange","onMouseOut","onMouseOver","showSideInLabel","side","spacingSizes","type","value","_CUSTOM_VALUE_SETTING","_CUSTOM_VALUE_SETTING2","selectListSizes","showRangeControl","length","disableCustomSpacingSizes","select","editorSettings","getSettings","showCustomValueControl","setShowCustomValueControl","undefined","previousValue","availableUnits","units","currentValue","showCustomValueInSelectList","name","slug","size","selectedUnit","setInitialValue","customTooltipContent","newValue","customRangeValue","parseFloat","getNewCustomValue","newSize","isNumeric","isNaN","nextValue","getNewPresetValue","controlType","parseInt","handleCustomValueSliderChange","next","join","allPlaceholder","options","map","index","key","marks","_newValue","label","sideLabel","includes","typeLabel","toLowerCase","ariaLabel","trim","createElement","className","Fragment","onFocus","onBlur","min","placeholder","disableUnits","hideLabelFromVision","step","withInputField","__nextHasNoMarginBottom","onMouseDown","event","nativeEvent","offsetX","renderTooltipContent","find","option","selection","selectedItem","__nextUnconstrainedWidth","onClick","isPressed","isSmall","iconSize"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/input-controls/spacing-input-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tCustomSelectControl,\n\tIcon,\n\tRangeControl,\n\t__experimentalHStack as HStack,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { settings } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { useSettings } from '../../use-settings';\nimport { store as blockEditorStore } from '../../../store';\nimport {\n\tALL_SIDES,\n\tLABELS,\n\tgetSliderValueFromPreset,\n\tgetCustomValueFromPreset,\n\tgetPresetValueFromCustomValue,\n\tisValueSpacingPreset,\n} from '../utils';\n\nconst CUSTOM_VALUE_SETTINGS = {\n\tpx: { max: 300, steps: 1 },\n\t'%': { max: 100, steps: 1 },\n\tvw: { max: 100, steps: 1 },\n\tvh: { max: 100, steps: 1 },\n\tem: { max: 10, steps: 0.1 },\n\trm: { max: 10, steps: 0.1 },\n\tsvw: { max: 100, steps: 1 },\n\tlvw: { max: 100, steps: 1 },\n\tdvw: { max: 100, steps: 1 },\n\tsvh: { max: 100, steps: 1 },\n\tlvh: { max: 100, steps: 1 },\n\tdvh: { max: 100, steps: 1 },\n\tvi: { max: 100, steps: 1 },\n\tsvi: { max: 100, steps: 1 },\n\tlvi: { max: 100, steps: 1 },\n\tdvi: { max: 100, steps: 1 },\n\tvb: { max: 100, steps: 1 },\n\tsvb: { max: 100, steps: 1 },\n\tlvb: { max: 100, steps: 1 },\n\tdvb: { max: 100, steps: 1 },\n\tvmin: { max: 100, steps: 1 },\n\tsvmin: { max: 100, steps: 1 },\n\tlvmin: { max: 100, steps: 1 },\n\tdvmin: { max: 100, steps: 1 },\n\tvmax: { max: 100, steps: 1 },\n\tsvmax: { max: 100, steps: 1 },\n\tlvmax: { max: 100, steps: 1 },\n\tdvmax: { max: 100, steps: 1 },\n};\n\nexport default function SpacingInputControl( {\n\ticon,\n\tisMixed = false,\n\tminimumCustomValue,\n\tonChange,\n\tonMouseOut,\n\tonMouseOver,\n\tshowSideInLabel = true,\n\tside,\n\tspacingSizes,\n\ttype,\n\tvalue,\n} ) {\n\t// Treat value as a preset value if the passed in value matches the value of one of the spacingSizes.\n\tvalue = getPresetValueFromCustomValue( value, spacingSizes );\n\n\tlet selectListSizes = spacingSizes;\n\tconst showRangeControl = spacingSizes.length <= 8;\n\n\tconst disableCustomSpacingSizes = useSelect( ( select ) => {\n\t\tconst editorSettings = select( blockEditorStore ).getSettings();\n\t\treturn editorSettings?.disableCustomSpacingSizes;\n\t} );\n\n\tconst [ showCustomValueControl, setShowCustomValueControl ] = useState(\n\t\t! disableCustomSpacingSizes &&\n\t\t\tvalue !== undefined &&\n\t\t\t! isValueSpacingPreset( value )\n\t);\n\n\tconst previousValue = usePrevious( value );\n\tif (\n\t\t!! value &&\n\t\tpreviousValue !== value &&\n\t\t! isValueSpacingPreset( value ) &&\n\t\tshowCustomValueControl !== true\n\t) {\n\t\tsetShowCustomValueControl( true );\n\t}\n\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [ 'px', 'em', 'rem' ],\n\t} );\n\n\tlet currentValue = null;\n\n\tconst showCustomValueInSelectList =\n\t\t! showRangeControl &&\n\t\t! showCustomValueControl &&\n\t\tvalue !== undefined &&\n\t\t( ! isValueSpacingPreset( value ) ||\n\t\t\t( isValueSpacingPreset( value ) && isMixed ) );\n\n\tif ( showCustomValueInSelectList ) {\n\t\tselectListSizes = [\n\t\t\t...spacingSizes,\n\t\t\t{\n\t\t\t\tname: ! isMixed\n\t\t\t\t\t? // translators: A custom measurement, eg. a number followed by a unit like 12px.\n\t\t\t\t\t sprintf( __( 'Custom (%s)' ), value )\n\t\t\t\t\t: __( 'Mixed' ),\n\t\t\t\tslug: 'custom',\n\t\t\t\tsize: value,\n\t\t\t},\n\t\t];\n\t\tcurrentValue = selectListSizes.length - 1;\n\t} else if ( ! isMixed ) {\n\t\tcurrentValue = ! showCustomValueControl\n\t\t\t? getSliderValueFromPreset( value, spacingSizes )\n\t\t\t: getCustomValueFromPreset( value, spacingSizes );\n\t}\n\n\tconst selectedUnit =\n\t\tuseMemo(\n\t\t\t() => parseQuantityAndUnitFromRawValue( currentValue ),\n\t\t\t[ currentValue ]\n\t\t)[ 1 ] || units[ 0 ].value;\n\n\tconst setInitialValue = () => {\n\t\tif ( value === undefined ) {\n\t\t\tonChange( '0' );\n\t\t}\n\t};\n\n\tconst customTooltipContent = ( newValue ) =>\n\t\tvalue === undefined ? undefined : spacingSizes[ newValue ]?.name;\n\n\tconst customRangeValue = parseFloat( currentValue, 10 );\n\n\tconst getNewCustomValue = ( newSize ) => {\n\t\tconst isNumeric = ! isNaN( parseFloat( newSize ) );\n\t\tconst nextValue = isNumeric ? newSize : undefined;\n\t\treturn nextValue;\n\t};\n\n\tconst getNewPresetValue = ( newSize, controlType ) => {\n\t\tconst size = parseInt( newSize, 10 );\n\n\t\tif ( controlType === 'selectList' ) {\n\t\t\tif ( size === 0 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif ( size === 1 ) {\n\t\t\t\treturn '0';\n\t\t\t}\n\t\t} else if ( size === 0 ) {\n\t\t\treturn '0';\n\t\t}\n\t\treturn `var:preset|spacing|${ spacingSizes[ newSize ]?.slug }`;\n\t};\n\n\tconst handleCustomValueSliderChange = ( next ) => {\n\t\tonChange( [ next, selectedUnit ].join( '' ) );\n\t};\n\n\tconst allPlaceholder = isMixed ? __( 'Mixed' ) : null;\n\n\tconst options = selectListSizes.map( ( size, index ) => ( {\n\t\tkey: index,\n\t\tname: size.name,\n\t} ) );\n\n\tconst marks = spacingSizes.map( ( _newValue, index ) => ( {\n\t\tvalue: index,\n\t\tlabel: undefined,\n\t} ) );\n\n\tconst sideLabel =\n\t\tALL_SIDES.includes( side ) && showSideInLabel ? LABELS[ side ] : '';\n\tconst typeLabel = showSideInLabel ? type?.toLowerCase() : type;\n\n\tconst ariaLabel = sprintf(\n\t\t// translators: 1: The side of the block being modified (top, bottom, left, All sides etc.). 2. Type of spacing being modified (Padding, margin, etc)\n\t\t__( '%1$s %2$s' ),\n\t\tsideLabel,\n\t\ttypeLabel\n\t).trim();\n\n\treturn (\n\t\t<HStack className=\"spacing-sizes-control__wrapper\">\n\t\t\t{ icon && (\n\t\t\t\t<Icon\n\t\t\t\t\tclassName=\"spacing-sizes-control__icon\"\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tsize={ 24 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showCustomValueControl && (\n\t\t\t\t<>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t\t\tonChange={ ( newSize ) =>\n\t\t\t\t\t\t\tonChange( getNewCustomValue( newSize ) )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ currentValue }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ minimumCustomValue }\n\t\t\t\t\t\tplaceholder={ allPlaceholder }\n\t\t\t\t\t\tdisableUnits={ isMixed }\n\t\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t\tclassName=\"spacing-sizes-control__custom-value-input\"\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t/>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t\t\tvalue={ customRangeValue }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ CUSTOM_VALUE_SETTINGS[ selectedUnit ]?.max ?? 10 }\n\t\t\t\t\t\tstep={\n\t\t\t\t\t\t\tCUSTOM_VALUE_SETTINGS[ selectedUnit ]?.steps ?? 0.1\n\t\t\t\t\t\t}\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tonChange={ handleCustomValueSliderChange }\n\t\t\t\t\t\tclassName=\"spacing-sizes-control__custom-value-range\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<RangeControl\n\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\tclassName=\"spacing-sizes-control__range-control\"\n\t\t\t\t\tvalue={ currentValue }\n\t\t\t\t\tonChange={ ( newSize ) =>\n\t\t\t\t\t\tonChange( getNewPresetValue( newSize ) )\n\t\t\t\t\t}\n\t\t\t\t\tonMouseDown={ ( event ) => {\n\t\t\t\t\t\t// If mouse down is near start of range set initial value to 0, which\n\t\t\t\t\t\t// prevents the user have to drag right then left to get 0 setting.\n\t\t\t\t\t\tif ( event?.nativeEvent?.offsetX < 35 ) {\n\t\t\t\t\t\t\tsetInitialValue();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\twithInputField={ false }\n\t\t\t\t\taria-valuenow={ currentValue }\n\t\t\t\t\taria-valuetext={ spacingSizes[ currentValue ]?.name }\n\t\t\t\t\trenderTooltipContent={ customTooltipContent }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tmax={ spacingSizes.length - 1 }\n\t\t\t\t\tmarks={ marks }\n\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t__nextHasNoMarginBottom={ true }\n\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<CustomSelectControl\n\t\t\t\t\tclassName=\"spacing-sizes-control__custom-select-control\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\toptions.find(\n\t\t\t\t\t\t\t( option ) => option.key === currentValue\n\t\t\t\t\t\t) || '' // passing undefined here causes a downshift controlled/uncontrolled warning\n\t\t\t\t\t}\n\t\t\t\t\tonChange={ ( selection ) => {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tgetNewPresetValue(\n\t\t\t\t\t\t\t\tselection.selectedItem.key,\n\t\t\t\t\t\t\t\t'selectList'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t__nextUnconstrainedWidth={ true }\n\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! disableCustomSpacingSizes && (\n\t\t\t\t<Button\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tshowCustomValueControl\n\t\t\t\t\t\t\t? __( 'Use size preset' )\n\t\t\t\t\t\t\t: __( 'Set custom size' )\n\t\t\t\t\t}\n\t\t\t\t\ticon={ settings }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetShowCustomValueControl( ! showCustomValueControl );\n\t\t\t\t\t} }\n\t\t\t\t\tisPressed={ showCustomValueControl }\n\t\t\t\t\tisSmall\n\t\t\t\t\tclassName=\"spacing-sizes-control__custom-toggle\"\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</HStack>\n\t);\n}\n"],"mappings":"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"}
@@ -7,13 +7,14 @@ import { __experimentalUseCustomUnits as useCustomUnits, __experimentalUnitContr
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import useSetting from '../use-setting';
10
+ import { useSettings } from '../use-settings';
11
11
  export default function UnitControl({
12
12
  units: unitsProp,
13
13
  ...props
14
14
  }) {
15
+ const [availableUnits] = useSettings('spacing.units');
15
16
  const units = useCustomUnits({
16
- availableUnits: useSetting('spacing.units') || ['%', 'px', 'em', 'rem', 'vw'],
17
+ availableUnits: availableUnits || ['%', 'px', 'em', 'rem', 'vw'],
17
18
  units: unitsProp
18
19
  });
19
20
  return createElement(BaseUnitControl, {
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalUseCustomUnits","useCustomUnits","__experimentalUnitControl","BaseUnitControl","useSetting","UnitControl","units","unitsProp","props","availableUnits","createElement"],"sources":["@wordpress/block-editor/src/components/unit-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalUnitControl as BaseUnitControl,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport useSetting from '../use-setting';\n\nexport default function UnitControl( { units: unitsProp, ...props } ) {\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t\tunits: unitsProp,\n\t} );\n\n\treturn <BaseUnitControl units={ units } { ...props } />;\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,4BAA4B,IAAIC,cAAc,EAC9CC,yBAAyB,IAAIC,eAAe,QACtC,uBAAuB;;AAE9B;AACA;AACA;AACA,OAAOC,UAAU,MAAM,gBAAgB;AAEvC,eAAe,SAASC,WAAWA,CAAE;EAAEC,KAAK,EAAEC,SAAS;EAAE,GAAGC;AAAM,CAAC,EAAG;EACrE,MAAMF,KAAK,GAAGL,cAAc,CAAE;IAC7BQ,cAAc,EAAEL,UAAU,CAAE,eAAgB,CAAC,IAAI,CAChD,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,IAAI,CACJ;IACDE,KAAK,EAAEC;EACR,CAAE,CAAC;EAEH,OAAOG,aAAA,CAACP,eAAe;IAACG,KAAK,EAAGA,KAAO;IAAA,GAAME;EAAK,CAAI,CAAC;AACxD"}
1
+ {"version":3,"names":["__experimentalUseCustomUnits","useCustomUnits","__experimentalUnitControl","BaseUnitControl","useSettings","UnitControl","units","unitsProp","props","availableUnits","createElement"],"sources":["@wordpress/block-editor/src/components/unit-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalUnitControl as BaseUnitControl,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useSettings } from '../use-settings';\n\nexport default function UnitControl( { units: unitsProp, ...props } ) {\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [ '%', 'px', 'em', 'rem', 'vw' ],\n\t\tunits: unitsProp,\n\t} );\n\n\treturn <BaseUnitControl units={ units } { ...props } />;\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,4BAA4B,IAAIC,cAAc,EAC9CC,yBAAyB,IAAIC,eAAe,QACtC,uBAAuB;;AAE9B;AACA;AACA;AACA,SAASC,WAAW,QAAQ,iBAAiB;AAE7C,eAAe,SAASC,WAAWA,CAAE;EAAEC,KAAK,EAAEC,SAAS;EAAE,GAAGC;AAAM,CAAC,EAAG;EACrE,MAAM,CAAEC,cAAc,CAAE,GAAGL,WAAW,CAAE,eAAgB,CAAC;EACzD,MAAME,KAAK,GAAGL,cAAc,CAAE;IAC7BQ,cAAc,EAAEA,cAAc,IAAI,CAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAE;IAClEH,KAAK,EAAEC;EACR,CAAE,CAAC;EAEH,OAAOG,aAAA,CAACP,eAAe;IAACG,KAAK,EAAGA,KAAO;IAAA,GAAME;EAAK,CAAI,CAAC;AACxD"}
@@ -1,3 +1,4 @@
1
+ import { createElement } from "react";
1
2
  /**
2
3
  * WordPress dependencies
3
4
  */
@@ -10,6 +11,7 @@ import { copy, trash as remove, plus as add, group, ungroup, moveTo as move } fr
10
11
  /**
11
12
  * Internal dependencies
12
13
  */
14
+ import BlockIcon from '../block-icon';
13
15
  import { store as blockEditorStore } from '../../store';
14
16
  export const useTransformCommands = () => {
15
17
  const {
@@ -79,7 +81,9 @@ export const useTransformCommands = () => {
79
81
  name: 'core/block-editor/transform-to-' + name.replace('/', '-'),
80
82
  // translators: %s: block title/name.
81
83
  label: sprintf(__('Transform to %s'), title),
82
- icon: icon.src,
84
+ icon: createElement(BlockIcon, {
85
+ icon: icon
86
+ }),
83
87
  callback: ({
84
88
  close
85
89
  }) => {
@@ -1 +1 @@
1
- {"version":3,"names":["__","sprintf","hasBlockSupport","store","blocksStore","switchToBlockType","isTemplatePart","useSelect","useDispatch","useCommandLoader","copy","trash","remove","plus","add","group","ungroup","moveTo","move","blockEditorStore","useTransformCommands","clientIds","select","getSelectedBlockClientIds","selectedBlockClientIds","blocks","getBlocksByClientId","replaceBlocks","multiSelect","possibleBlockTransformations","canRemove","getBlockRootClientId","getBlockTransformItems","canRemoveBlocks","rootClientId","Array","isArray","isTemplate","length","selectForMultipleBlocks","insertedBlocks","clientId","onBlockTransform","name","newBlocks","hasPossibleBlockTransformations","isLoading","commands","map","transformation","title","icon","replace","label","src","callback","close","useActionsCommands","canMoveBlocks","getBlockCount","setBlockMovingClientId","setNavigationMode","selectBlock","canMove","push","command","useQuickActionsCommands","isUngroupable","isGroupable","_isUngroupable","_isGroupable","canInsertBlockType","getDefaultBlockName","getGroupingBlockName","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","onGroup","groupingBlockName","onUngroup","innerBlocks","canInsertDefaultBlock","canDuplicate","every","block","useBlockCommands","hook","context"],"sources":["@wordpress/block-editor/src/components/use-block-commands/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\thasBlockSupport,\n\tstore as blocksStore,\n\tswitchToBlockType,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCommandLoader } from '@wordpress/commands';\nimport {\n\tcopy,\n\ttrash as remove,\n\tplus as add,\n\tgroup,\n\tungroup,\n\tmoveTo as move,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport const useTransformCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, canRemove } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\n\tif (\n\t\t! clientIds ||\n\t\tclientIds.length < 1 ||\n\t\t! hasPossibleBlockTransformations\n\t) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst commands = possibleBlockTransformations.map( ( transformation ) => {\n\t\tconst { name, title, icon } = transformation;\n\t\treturn {\n\t\t\tname: 'core/block-editor/transform-to-' + name.replace( '/', '-' ),\n\t\t\t// translators: %s: block title/name.\n\t\t\tlabel: sprintf( __( 'Transform to %s' ), title ),\n\t\t\ticon: icon.src,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tonBlockTransform( name );\n\t\t\t\tclose();\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn { isLoading: false, commands };\n};\n\nconst useActionsCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\n\tconst { getBlockRootClientId, canMoveBlocks, getBlockCount } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst { setBlockMovingClientId, setNavigationMode, selectBlock } =\n\t\tuseDispatch( blockEditorStore );\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\n\tconst canMove =\n\t\tcanMoveBlocks( clientIds, rootClientId ) &&\n\t\tgetBlockCount( rootClientId ) !== 1;\n\n\tconst commands = [];\n\n\tif ( canMove ) {\n\t\tcommands.push( {\n\t\t\tname: 'move-to',\n\t\t\tlabel: __( 'Move to' ),\n\t\t\tcallback: () => {\n\t\t\t\tsetNavigationMode( true );\n\t\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t\t},\n\t\t\ticon: move,\n\t\t} );\n\t}\n\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nconst useQuickActionsCommands = () => {\n\tconst { clientIds, isUngroupable, isGroupable } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable,\n\t\t\tisGroupable: _isGroupable,\n\t\t} = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable(),\n\t\t\tisGroupable: _isGroupable(),\n\t\t};\n\t}, [] );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst onGroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\tif ( ! newBlocks ) {\n\t\t\treturn;\n\t\t}\n\t\treplaceBlocks( clientIds, newBlocks );\n\t};\n\tconst onUngroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\tif ( ! innerBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\treplaceBlocks( clientIds, innerBlocks );\n\t};\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\tconst canDuplicate = blocks.every( ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\n\tconst commands = [];\n\n\tif ( canDuplicate ) {\n\t\tcommands.push( {\n\t\t\tname: 'duplicate',\n\t\t\tlabel: __( 'Duplicate' ),\n\t\t\tcallback: () => duplicateBlocks( clientIds, true ),\n\t\t\ticon: copy,\n\t\t} );\n\t}\n\n\tif ( canInsertDefaultBlock ) {\n\t\tcommands.push(\n\t\t\t{\n\t\t\t\tname: 'add-before',\n\t\t\t\tlabel: __( 'Add before' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertBeforeBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'add-after',\n\t\t\t\tlabel: __( 'Add after' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t}\n\t\t);\n\t}\n\n\tif ( isGroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'Group',\n\t\t\tlabel: __( 'Group' ),\n\t\t\tcallback: onGroup,\n\t\t\ticon: group,\n\t\t} );\n\t}\n\n\tif ( isUngroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'ungroup',\n\t\t\tlabel: __( 'Ungroup' ),\n\t\t\tcallback: onUngroup,\n\t\t\ticon: ungroup,\n\t\t} );\n\t}\n\n\tif ( canRemove ) {\n\t\tcommands.push( {\n\t\t\tname: 'remove',\n\t\t\tlabel: __( 'Delete' ),\n\t\t\tcallback: () => removeBlocks( clientIds, true ),\n\t\t\ticon: remove,\n\t\t} );\n\t}\n\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nexport const useBlockCommands = () => {\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockTransforms',\n\t\thook: useTransformCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockActions',\n\t\thook: useActionsCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockQuickActions',\n\t\thook: useQuickActionsCommands,\n\t\tcontext: 'block-selection-edit',\n\t} );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["__","sprintf","hasBlockSupport","store","blocksStore","switchToBlockType","isTemplatePart","useSelect","useDispatch","useCommandLoader","copy","trash","remove","plus","add","group","ungroup","moveTo","move","BlockIcon","blockEditorStore","useTransformCommands","clientIds","select","getSelectedBlockClientIds","selectedBlockClientIds","blocks","getBlocksByClientId","replaceBlocks","multiSelect","possibleBlockTransformations","canRemove","getBlockRootClientId","getBlockTransformItems","canRemoveBlocks","rootClientId","Array","isArray","isTemplate","length","selectForMultipleBlocks","insertedBlocks","clientId","onBlockTransform","name","newBlocks","hasPossibleBlockTransformations","isLoading","commands","map","transformation","title","icon","replace","label","createElement","callback","close","useActionsCommands","canMoveBlocks","getBlockCount","setBlockMovingClientId","setNavigationMode","selectBlock","canMove","push","command","useQuickActionsCommands","isUngroupable","isGroupable","_isUngroupable","_isGroupable","canInsertBlockType","getDefaultBlockName","getGroupingBlockName","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","onGroup","groupingBlockName","onUngroup","innerBlocks","canInsertDefaultBlock","canDuplicate","every","block","useBlockCommands","hook","context"],"sources":["@wordpress/block-editor/src/components/use-block-commands/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\thasBlockSupport,\n\tstore as blocksStore,\n\tswitchToBlockType,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCommandLoader } from '@wordpress/commands';\nimport {\n\tcopy,\n\ttrash as remove,\n\tplus as add,\n\tgroup,\n\tungroup,\n\tmoveTo as move,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\n\nexport const useTransformCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, canRemove } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\n\tif (\n\t\t! clientIds ||\n\t\tclientIds.length < 1 ||\n\t\t! hasPossibleBlockTransformations\n\t) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst commands = possibleBlockTransformations.map( ( transformation ) => {\n\t\tconst { name, title, icon } = transformation;\n\t\treturn {\n\t\t\tname: 'core/block-editor/transform-to-' + name.replace( '/', '-' ),\n\t\t\t// translators: %s: block title/name.\n\t\t\tlabel: sprintf( __( 'Transform to %s' ), title ),\n\t\t\ticon: <BlockIcon icon={ icon } />,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tonBlockTransform( name );\n\t\t\t\tclose();\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn { isLoading: false, commands };\n};\n\nconst useActionsCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\n\tconst { getBlockRootClientId, canMoveBlocks, getBlockCount } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst { setBlockMovingClientId, setNavigationMode, selectBlock } =\n\t\tuseDispatch( blockEditorStore );\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\n\tconst canMove =\n\t\tcanMoveBlocks( clientIds, rootClientId ) &&\n\t\tgetBlockCount( rootClientId ) !== 1;\n\n\tconst commands = [];\n\n\tif ( canMove ) {\n\t\tcommands.push( {\n\t\t\tname: 'move-to',\n\t\t\tlabel: __( 'Move to' ),\n\t\t\tcallback: () => {\n\t\t\t\tsetNavigationMode( true );\n\t\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t\t},\n\t\t\ticon: move,\n\t\t} );\n\t}\n\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nconst useQuickActionsCommands = () => {\n\tconst { clientIds, isUngroupable, isGroupable } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable,\n\t\t\tisGroupable: _isGroupable,\n\t\t} = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable(),\n\t\t\tisGroupable: _isGroupable(),\n\t\t};\n\t}, [] );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst onGroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\tif ( ! newBlocks ) {\n\t\t\treturn;\n\t\t}\n\t\treplaceBlocks( clientIds, newBlocks );\n\t};\n\tconst onUngroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\tif ( ! innerBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\treplaceBlocks( clientIds, innerBlocks );\n\t};\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\tconst canDuplicate = blocks.every( ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\n\tconst commands = [];\n\n\tif ( canDuplicate ) {\n\t\tcommands.push( {\n\t\t\tname: 'duplicate',\n\t\t\tlabel: __( 'Duplicate' ),\n\t\t\tcallback: () => duplicateBlocks( clientIds, true ),\n\t\t\ticon: copy,\n\t\t} );\n\t}\n\n\tif ( canInsertDefaultBlock ) {\n\t\tcommands.push(\n\t\t\t{\n\t\t\t\tname: 'add-before',\n\t\t\t\tlabel: __( 'Add before' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertBeforeBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'add-after',\n\t\t\t\tlabel: __( 'Add after' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t}\n\t\t);\n\t}\n\n\tif ( isGroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'Group',\n\t\t\tlabel: __( 'Group' ),\n\t\t\tcallback: onGroup,\n\t\t\ticon: group,\n\t\t} );\n\t}\n\n\tif ( isUngroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'ungroup',\n\t\t\tlabel: __( 'Ungroup' ),\n\t\t\tcallback: onUngroup,\n\t\t\ticon: ungroup,\n\t\t} );\n\t}\n\n\tif ( canRemove ) {\n\t\tcommands.push( {\n\t\t\tname: 'remove',\n\t\t\tlabel: __( 'Delete' ),\n\t\t\tcallback: () => removeBlocks( clientIds, true ),\n\t\t\ticon: remove,\n\t\t} );\n\t}\n\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nexport const useBlockCommands = () => {\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockTransforms',\n\t\thook: useTransformCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockActions',\n\t\thook: useActionsCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockQuickActions',\n\t\thook: useQuickActionsCommands,\n\t\tcontext: 'block-selection-edit',\n\t} );\n};\n"],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __EXPERIMENTAL_PATHS_WITH_MERGE as PATHS_WITH_MERGE, hasBlockSupport } from '@wordpress/blocks';
5
+ import { useSelect } from '@wordpress/data';
6
+ import deprecated from '@wordpress/deprecated';
7
+ import { useMemo } from '@wordpress/element';
8
+ import { applyFilters } from '@wordpress/hooks';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { useBlockEditContext } from '../block-edit';
14
+ import { store as blockEditorStore } from '../../store';
15
+ import { getValueFromObjectPath } from '../../utils/object';
16
+ const blockedPaths = ['color', 'border', 'dimensions', 'typography', 'spacing'];
17
+ const deprecatedFlags = {
18
+ 'color.palette': settings => settings.colors,
19
+ 'color.gradients': settings => settings.gradients,
20
+ 'color.custom': settings => settings.disableCustomColors === undefined ? undefined : !settings.disableCustomColors,
21
+ 'color.customGradient': settings => settings.disableCustomGradients === undefined ? undefined : !settings.disableCustomGradients,
22
+ 'typography.fontSizes': settings => settings.fontSizes,
23
+ 'typography.customFontSize': settings => settings.disableCustomFontSizes === undefined ? undefined : !settings.disableCustomFontSizes,
24
+ 'typography.lineHeight': settings => settings.enableCustomLineHeight,
25
+ 'spacing.units': settings => {
26
+ if (settings.enableCustomUnits === undefined) {
27
+ return;
28
+ }
29
+ if (settings.enableCustomUnits === true) {
30
+ return ['px', 'em', 'rem', 'vh', 'vw', '%'];
31
+ }
32
+ return settings.enableCustomUnits;
33
+ },
34
+ 'spacing.padding': settings => settings.enableCustomSpacing
35
+ };
36
+ const prefixedFlags = {
37
+ /*
38
+ * These were only available in the plugin
39
+ * and can be removed when the minimum WordPress version
40
+ * for the plugin is 5.9.
41
+ */
42
+ 'border.customColor': 'border.color',
43
+ 'border.customStyle': 'border.style',
44
+ 'border.customWidth': 'border.width',
45
+ 'typography.customFontStyle': 'typography.fontStyle',
46
+ 'typography.customFontWeight': 'typography.fontWeight',
47
+ 'typography.customLetterSpacing': 'typography.letterSpacing',
48
+ 'typography.customTextDecorations': 'typography.textDecoration',
49
+ 'typography.customTextTransforms': 'typography.textTransform',
50
+ /*
51
+ * These were part of WordPress 5.8 and we need to keep them.
52
+ */
53
+ 'border.customRadius': 'border.radius',
54
+ 'spacing.customMargin': 'spacing.margin',
55
+ 'spacing.customPadding': 'spacing.padding',
56
+ 'typography.customLineHeight': 'typography.lineHeight'
57
+ };
58
+
59
+ /**
60
+ * Remove `custom` prefixes for flags that did not land in 5.8.
61
+ *
62
+ * This provides continued support for `custom` prefixed properties. It will
63
+ * be removed once third party devs have had sufficient time to update themes,
64
+ * plugins, etc.
65
+ *
66
+ * @see https://github.com/WordPress/gutenberg/pull/34485
67
+ *
68
+ * @param {string} path Path to desired value in settings.
69
+ * @return {string} The value for defined setting.
70
+ */
71
+ const removeCustomPrefixes = path => {
72
+ return prefixedFlags[path] || path;
73
+ };
74
+
75
+ /**
76
+ * For settings like `color.palette`, which have a value that is an object
77
+ * with `default`, `theme`, `custom`, with field values that are arrays of
78
+ * items, merge these three arrays into one and return it. The calculation
79
+ * is memoized so that identical input values produce identical output.
80
+ * @param {Object} value Object to merge
81
+ * @return {Array} Array of merged items
82
+ */
83
+ function mergeOrigins(value) {
84
+ let result = mergeCache.get(value);
85
+ if (!result) {
86
+ result = ['default', 'theme', 'custom'].flatMap(key => {
87
+ var _value$key;
88
+ return (_value$key = value[key]) !== null && _value$key !== void 0 ? _value$key : [];
89
+ });
90
+ mergeCache.set(value, result);
91
+ }
92
+ return result;
93
+ }
94
+ const mergeCache = new WeakMap();
95
+
96
+ /**
97
+ * Hook that retrieves the given settings for the block instance in use.
98
+ *
99
+ * It looks up the settings first in the block instance hierarchy.
100
+ * If none are found, it'll look them up in the block editor settings.
101
+ *
102
+ * @param {string[]} paths The paths to the settings.
103
+ * @return {any[]} Returns the values defined for the settings.
104
+ * @example
105
+ * ```js
106
+ * const [ fixed, sticky ] = useSettings( 'position.fixed', 'position.sticky' );
107
+ * ```
108
+ */
109
+ export function useSettings(...paths) {
110
+ const {
111
+ name: blockName,
112
+ clientId = null
113
+ } = useBlockEditContext();
114
+
115
+ // eslint-disable-next-line react-hooks/exhaustive-deps
116
+ paths = useMemo(() => paths, paths);
117
+ return useSelect(select => {
118
+ const candidates = clientId ? [clientId, ...select(blockEditorStore).getBlockParents(clientId, /* ascending */true)].filter(candidateClientId => {
119
+ const candidateBlockName = select(blockEditorStore).getBlockName(candidateClientId);
120
+ return hasBlockSupport(candidateBlockName, '__experimentalSettings', false);
121
+ }) : [];
122
+ return paths.map(path => {
123
+ if (blockedPaths.includes(path)) {
124
+ // eslint-disable-next-line no-console
125
+ console.warn('Top level useSetting paths are disabled. Please use a subpath to query the information needed.');
126
+ return undefined;
127
+ }
128
+
129
+ // 0. Allow third parties to filter the block's settings at runtime.
130
+ let result = applyFilters('blockEditor.useSetting.before', undefined, path, clientId, blockName);
131
+ if (undefined !== result) {
132
+ return result;
133
+ }
134
+ const normalizedPath = removeCustomPrefixes(path);
135
+
136
+ // 1. Take settings from the block instance or its ancestors.
137
+ // Start from the current block and work our way up the ancestors.
138
+ for (const candidateClientId of candidates) {
139
+ var _getValueFromObjectPa;
140
+ const candidateAtts = select(blockEditorStore).getBlockAttributes(candidateClientId);
141
+ result = (_getValueFromObjectPa = getValueFromObjectPath(candidateAtts.settings?.blocks?.[blockName], normalizedPath)) !== null && _getValueFromObjectPa !== void 0 ? _getValueFromObjectPa : getValueFromObjectPath(candidateAtts.settings, normalizedPath);
142
+ if (result !== undefined) {
143
+ // Stop the search for more distant ancestors and move on.
144
+ break;
145
+ }
146
+ }
147
+
148
+ // 2. Fall back to the settings from the block editor store (__experimentalFeatures).
149
+ const settings = select(blockEditorStore).getSettings();
150
+ if (result === undefined && blockName) {
151
+ result = getValueFromObjectPath(settings.__experimentalFeatures?.blocks?.[blockName], normalizedPath);
152
+ }
153
+ if (result === undefined) {
154
+ result = getValueFromObjectPath(settings.__experimentalFeatures, normalizedPath);
155
+ }
156
+
157
+ // Return if the setting was found in either the block instance or the store.
158
+ if (result !== undefined) {
159
+ if (PATHS_WITH_MERGE[normalizedPath]) {
160
+ return mergeOrigins(result);
161
+ }
162
+ return result;
163
+ }
164
+
165
+ // 3. Otherwise, use deprecated settings.
166
+ const deprecatedSettingsValue = deprecatedFlags[normalizedPath]?.(settings);
167
+ if (deprecatedSettingsValue !== undefined) {
168
+ return deprecatedSettingsValue;
169
+ }
170
+
171
+ // 4. Fallback for typography.dropCap:
172
+ // This is only necessary to support typography.dropCap.
173
+ // when __experimentalFeatures are not present (core without plugin).
174
+ // To remove when __experimentalFeatures are ported to core.
175
+ return normalizedPath === 'typography.dropCap' ? true : undefined;
176
+ });
177
+ }, [blockName, clientId, paths]);
178
+ }
179
+
180
+ /**
181
+ * Hook that retrieves the given setting for the block instance in use.
182
+ *
183
+ * It looks up the setting first in the block instance hierarchy.
184
+ * If none is found, it'll look it up in the block editor settings.
185
+ *
186
+ * @param {string} path The path to the setting.
187
+ * @return {any} Returns the value defined for the setting.
188
+ * @deprecated 6.4.0 Use useSettings instead.
189
+ * @example
190
+ * ```js
191
+ * const isEnabled = useSetting( 'typography.dropCap' );
192
+ * ```
193
+ */
194
+ export function useSetting(path) {
195
+ deprecated('wp.blockEditor.useSetting', {
196
+ since: '6.4',
197
+ alternative: 'wp.blockEditor.useSettings',
198
+ note: 'The new useSettings function can retrieve multiple settings at once, with better performance.'
199
+ });
200
+ const [value] = useSettings(path);
201
+ return value;
202
+ }
203
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__EXPERIMENTAL_PATHS_WITH_MERGE","PATHS_WITH_MERGE","hasBlockSupport","useSelect","deprecated","useMemo","applyFilters","useBlockEditContext","store","blockEditorStore","getValueFromObjectPath","blockedPaths","deprecatedFlags","settings","colors","gradients","disableCustomColors","undefined","disableCustomGradients","fontSizes","disableCustomFontSizes","enableCustomLineHeight","enableCustomUnits","enableCustomSpacing","prefixedFlags","removeCustomPrefixes","path","mergeOrigins","value","result","mergeCache","get","flatMap","key","_value$key","set","WeakMap","useSettings","paths","name","blockName","clientId","select","candidates","getBlockParents","filter","candidateClientId","candidateBlockName","getBlockName","map","includes","console","warn","normalizedPath","_getValueFromObjectPa","candidateAtts","getBlockAttributes","blocks","getSettings","__experimentalFeatures","deprecatedSettingsValue","useSetting","since","alternative","note"],"sources":["@wordpress/block-editor/src/components/use-settings/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__EXPERIMENTAL_PATHS_WITH_MERGE as PATHS_WITH_MERGE,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport { useMemo } from '@wordpress/element';\nimport { applyFilters } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditContext } from '../block-edit';\nimport { store as blockEditorStore } from '../../store';\nimport { getValueFromObjectPath } from '../../utils/object';\n\nconst blockedPaths = [\n\t'color',\n\t'border',\n\t'dimensions',\n\t'typography',\n\t'spacing',\n];\n\nconst deprecatedFlags = {\n\t'color.palette': ( settings ) => settings.colors,\n\t'color.gradients': ( settings ) => settings.gradients,\n\t'color.custom': ( settings ) =>\n\t\tsettings.disableCustomColors === undefined\n\t\t\t? undefined\n\t\t\t: ! settings.disableCustomColors,\n\t'color.customGradient': ( settings ) =>\n\t\tsettings.disableCustomGradients === undefined\n\t\t\t? undefined\n\t\t\t: ! settings.disableCustomGradients,\n\t'typography.fontSizes': ( settings ) => settings.fontSizes,\n\t'typography.customFontSize': ( settings ) =>\n\t\tsettings.disableCustomFontSizes === undefined\n\t\t\t? undefined\n\t\t\t: ! settings.disableCustomFontSizes,\n\t'typography.lineHeight': ( settings ) => settings.enableCustomLineHeight,\n\t'spacing.units': ( settings ) => {\n\t\tif ( settings.enableCustomUnits === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( settings.enableCustomUnits === true ) {\n\t\t\treturn [ 'px', 'em', 'rem', 'vh', 'vw', '%' ];\n\t\t}\n\n\t\treturn settings.enableCustomUnits;\n\t},\n\t'spacing.padding': ( settings ) => settings.enableCustomSpacing,\n};\n\nconst prefixedFlags = {\n\t/*\n\t * These were only available in the plugin\n\t * and can be removed when the minimum WordPress version\n\t * for the plugin is 5.9.\n\t */\n\t'border.customColor': 'border.color',\n\t'border.customStyle': 'border.style',\n\t'border.customWidth': 'border.width',\n\t'typography.customFontStyle': 'typography.fontStyle',\n\t'typography.customFontWeight': 'typography.fontWeight',\n\t'typography.customLetterSpacing': 'typography.letterSpacing',\n\t'typography.customTextDecorations': 'typography.textDecoration',\n\t'typography.customTextTransforms': 'typography.textTransform',\n\t/*\n\t * These were part of WordPress 5.8 and we need to keep them.\n\t */\n\t'border.customRadius': 'border.radius',\n\t'spacing.customMargin': 'spacing.margin',\n\t'spacing.customPadding': 'spacing.padding',\n\t'typography.customLineHeight': 'typography.lineHeight',\n};\n\n/**\n * Remove `custom` prefixes for flags that did not land in 5.8.\n *\n * This provides continued support for `custom` prefixed properties. It will\n * be removed once third party devs have had sufficient time to update themes,\n * plugins, etc.\n *\n * @see https://github.com/WordPress/gutenberg/pull/34485\n *\n * @param {string} path Path to desired value in settings.\n * @return {string} The value for defined setting.\n */\nconst removeCustomPrefixes = ( path ) => {\n\treturn prefixedFlags[ path ] || path;\n};\n\n/**\n * For settings like `color.palette`, which have a value that is an object\n * with `default`, `theme`, `custom`, with field values that are arrays of\n * items, merge these three arrays into one and return it. The calculation\n * is memoized so that identical input values produce identical output.\n * @param {Object} value Object to merge\n * @return {Array} Array of merged items\n */\nfunction mergeOrigins( value ) {\n\tlet result = mergeCache.get( value );\n\tif ( ! result ) {\n\t\tresult = [ 'default', 'theme', 'custom' ].flatMap(\n\t\t\t( key ) => value[ key ] ?? []\n\t\t);\n\t\tmergeCache.set( value, result );\n\t}\n\treturn result;\n}\nconst mergeCache = new WeakMap();\n\n/**\n * Hook that retrieves the given settings for the block instance in use.\n *\n * It looks up the settings first in the block instance hierarchy.\n * If none are found, it'll look them up in the block editor settings.\n *\n * @param {string[]} paths The paths to the settings.\n * @return {any[]} Returns the values defined for the settings.\n * @example\n * ```js\n * const [ fixed, sticky ] = useSettings( 'position.fixed', 'position.sticky' );\n * ```\n */\nexport function useSettings( ...paths ) {\n\tconst { name: blockName, clientId = null } = useBlockEditContext();\n\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tpaths = useMemo( () => paths, paths );\n\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst candidates = clientId\n\t\t\t\t? [\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t...select( blockEditorStore ).getBlockParents(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t/* ascending */ true\n\t\t\t\t\t\t),\n\t\t\t\t ].filter( ( candidateClientId ) => {\n\t\t\t\t\t\tconst candidateBlockName =\n\t\t\t\t\t\t\tselect( blockEditorStore ).getBlockName(\n\t\t\t\t\t\t\t\tcandidateClientId\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn hasBlockSupport(\n\t\t\t\t\t\t\tcandidateBlockName,\n\t\t\t\t\t\t\t'__experimentalSettings',\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t);\n\t\t\t\t } )\n\t\t\t\t: [];\n\n\t\t\treturn paths.map( ( path ) => {\n\t\t\t\tif ( blockedPaths.includes( path ) ) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'Top level useSetting paths are disabled. Please use a subpath to query the information needed.'\n\t\t\t\t\t);\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\t// 0. Allow third parties to filter the block's settings at runtime.\n\t\t\t\tlet result = applyFilters(\n\t\t\t\t\t'blockEditor.useSetting.before',\n\t\t\t\t\tundefined,\n\t\t\t\t\tpath,\n\t\t\t\t\tclientId,\n\t\t\t\t\tblockName\n\t\t\t\t);\n\n\t\t\t\tif ( undefined !== result ) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tconst normalizedPath = removeCustomPrefixes( path );\n\n\t\t\t\t// 1. Take settings from the block instance or its ancestors.\n\t\t\t\t// Start from the current block and work our way up the ancestors.\n\t\t\t\tfor ( const candidateClientId of candidates ) {\n\t\t\t\t\tconst candidateAtts =\n\t\t\t\t\t\tselect( blockEditorStore ).getBlockAttributes(\n\t\t\t\t\t\t\tcandidateClientId\n\t\t\t\t\t\t);\n\t\t\t\t\tresult =\n\t\t\t\t\t\tgetValueFromObjectPath(\n\t\t\t\t\t\t\tcandidateAtts.settings?.blocks?.[ blockName ],\n\t\t\t\t\t\t\tnormalizedPath\n\t\t\t\t\t\t) ??\n\t\t\t\t\t\tgetValueFromObjectPath(\n\t\t\t\t\t\t\tcandidateAtts.settings,\n\t\t\t\t\t\t\tnormalizedPath\n\t\t\t\t\t\t);\n\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t// Stop the search for more distant ancestors and move on.\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// 2. Fall back to the settings from the block editor store (__experimentalFeatures).\n\t\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\t\t\tif ( result === undefined && blockName ) {\n\t\t\t\t\tresult = getValueFromObjectPath(\n\t\t\t\t\t\tsettings.__experimentalFeatures?.blocks?.[ blockName ],\n\t\t\t\t\t\tnormalizedPath\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif ( result === undefined ) {\n\t\t\t\t\tresult = getValueFromObjectPath(\n\t\t\t\t\t\tsettings.__experimentalFeatures,\n\t\t\t\t\t\tnormalizedPath\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Return if the setting was found in either the block instance or the store.\n\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\tif ( PATHS_WITH_MERGE[ normalizedPath ] ) {\n\t\t\t\t\t\treturn mergeOrigins( result );\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// 3. Otherwise, use deprecated settings.\n\t\t\t\tconst deprecatedSettingsValue =\n\t\t\t\t\tdeprecatedFlags[ normalizedPath ]?.( settings );\n\t\t\t\tif ( deprecatedSettingsValue !== undefined ) {\n\t\t\t\t\treturn deprecatedSettingsValue;\n\t\t\t\t}\n\n\t\t\t\t// 4. Fallback for typography.dropCap:\n\t\t\t\t// This is only necessary to support typography.dropCap.\n\t\t\t\t// when __experimentalFeatures are not present (core without plugin).\n\t\t\t\t// To remove when __experimentalFeatures are ported to core.\n\t\t\t\treturn normalizedPath === 'typography.dropCap'\n\t\t\t\t\t? true\n\t\t\t\t\t: undefined;\n\t\t\t} );\n\t\t},\n\t\t[ blockName, clientId, paths ]\n\t);\n}\n\n/**\n * Hook that retrieves the given setting for the block instance in use.\n *\n * It looks up the setting first in the block instance hierarchy.\n * If none is found, it'll look it up in the block editor settings.\n *\n * @param {string} path The path to the setting.\n * @return {any} Returns the value defined for the setting.\n * @deprecated 6.4.0 Use useSettings instead.\n * @example\n * ```js\n * const isEnabled = useSetting( 'typography.dropCap' );\n * ```\n */\nexport function useSetting( path ) {\n\tdeprecated( 'wp.blockEditor.useSetting', {\n\t\tsince: '6.4',\n\t\talternative: 'wp.blockEditor.useSettings',\n\t\tnote: 'The new useSettings function can retrieve multiple settings at once, with better performance.',\n\t} );\n\n\tconst [ value ] = useSettings( path );\n\treturn value;\n}\n"],"mappings":"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"}
@@ -91,23 +91,11 @@ export function addAttribute(settings) {
91
91
  }
92
92
  return settings;
93
93
  }
94
-
95
- /**
96
- * Override the default edit UI to include new toolbar controls for block
97
- * alignment, if block defines support.
98
- *
99
- * @param {Function} BlockEdit Original component.
100
- *
101
- * @return {Function} Wrapped component.
102
- */
103
- export const withToolbarControls = createHigherOrderComponent(BlockEdit => props => {
104
- const blockEdit = createElement(BlockEdit, {
105
- key: "edit",
106
- ...props
107
- });
108
- const {
109
- name: blockName
110
- } = props;
94
+ function BlockEditAlignmentToolbarControls({
95
+ blockName,
96
+ attributes,
97
+ setAttributes
98
+ }) {
111
99
  // Compute the block valid alignments by taking into account,
112
100
  // if the theme supports wide alignments or not and the layout's
113
101
  // availble alignments. We do that for conditionally rendering
@@ -118,38 +106,53 @@ export const withToolbarControls = createHigherOrderComponent(BlockEdit => props
118
106
  }) => name);
119
107
  const blockEditingMode = useBlockEditingMode();
120
108
  if (!validAlignments.length || blockEditingMode !== 'default') {
121
- return blockEdit;
109
+ return null;
122
110
  }
123
111
  const updateAlignment = nextAlign => {
124
112
  if (!nextAlign) {
125
- const blockType = getBlockType(props.name);
113
+ const blockType = getBlockType(blockName);
126
114
  const blockDefaultAlign = blockType?.attributes?.align?.default;
127
115
  if (blockDefaultAlign) {
128
116
  nextAlign = '';
129
117
  }
130
118
  }
131
- props.setAttributes({
119
+ setAttributes({
132
120
  align: nextAlign
133
121
  });
134
122
  };
135
- return createElement(Fragment, null, createElement(BlockControls, {
123
+ return createElement(BlockControls, {
136
124
  group: "block",
137
125
  __experimentalShareWithChildBlocks: true
138
126
  }, createElement(BlockAlignmentControl, {
139
- value: props.attributes.align,
127
+ value: attributes.align,
140
128
  onChange: updateAlignment,
141
129
  controls: validAlignments
142
- })), blockEdit);
143
- }, 'withToolbarControls');
130
+ }));
131
+ }
144
132
 
145
133
  /**
146
- * Override the default block element to add alignment wrapper props.
134
+ * Override the default edit UI to include new toolbar controls for block
135
+ * alignment, if block defines support.
147
136
  *
148
- * @param {Function} BlockListBlock Original component.
137
+ * @param {Function} BlockEdit Original component.
149
138
  *
150
139
  * @return {Function} Wrapped component.
151
140
  */
152
- export const withDataAlign = createHigherOrderComponent(BlockListBlock => props => {
141
+ export const withToolbarControls = createHigherOrderComponent(BlockEdit => props => {
142
+ const hasAlignmentSupport = hasBlockSupport(props.name, 'align', false);
143
+ return createElement(Fragment, null, hasAlignmentSupport && createElement(BlockEditAlignmentToolbarControls, {
144
+ blockName: props.name,
145
+ attributes: props.attributes,
146
+ setAttributes: props.setAttributes
147
+ }), createElement(BlockEdit, {
148
+ key: "edit",
149
+ ...props
150
+ }));
151
+ }, 'withToolbarControls');
152
+ function BlockListBlockWithDataAlign({
153
+ block: BlockListBlock,
154
+ props
155
+ }) {
153
156
  const {
154
157
  name,
155
158
  attributes
@@ -159,14 +162,6 @@ export const withDataAlign = createHigherOrderComponent(BlockListBlock => props
159
162
  } = attributes;
160
163
  const blockAllowedAlignments = getValidAlignments(getBlockSupport(name, 'align'), hasBlockSupport(name, 'alignWide', true));
161
164
  const validAlignments = useAvailableAlignments(blockAllowedAlignments);
162
-
163
- // If an alignment is not assigned, there's no need to go through the
164
- // effort to validate or assign its value.
165
- if (align === undefined) {
166
- return createElement(BlockListBlock, {
167
- ...props
168
- });
169
- }
170
165
  let wrapperProps = props.wrapperProps;
171
166
  if (validAlignments.some(alignment => alignment.name === align)) {
172
167
  wrapperProps = {
@@ -178,6 +173,27 @@ export const withDataAlign = createHigherOrderComponent(BlockListBlock => props
178
173
  ...props,
179
174
  wrapperProps: wrapperProps
180
175
  });
176
+ }
177
+
178
+ /**
179
+ * Override the default block element to add alignment wrapper props.
180
+ *
181
+ * @param {Function} BlockListBlock Original component.
182
+ *
183
+ * @return {Function} Wrapped component.
184
+ */
185
+ export const withDataAlign = createHigherOrderComponent(BlockListBlock => props => {
186
+ // If an alignment is not assigned, there's no need to go through the
187
+ // effort to validate or assign its value.
188
+ if (props.attributes.align === undefined) {
189
+ return createElement(BlockListBlock, {
190
+ ...props
191
+ });
192
+ }
193
+ return createElement(BlockListBlockWithDataAlign, {
194
+ block: BlockListBlock,
195
+ props: props
196
+ });
181
197
  }, 'withDataAlign');
182
198
 
183
199
  /**