@wordpress/block-editor 10.3.0 → 10.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +0 -1
  3. package/build/components/alignment-control/ui.js +1 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-alignment-control/constants.js +1 -1
  6. package/build/components/block-alignment-control/constants.js.map +1 -1
  7. package/build/components/block-alignment-matrix-control/index.js +1 -1
  8. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  9. package/build/components/block-compare/index.js +1 -3
  10. package/build/components/block-compare/index.js.map +1 -1
  11. package/build/components/block-edit/index.js +4 -2
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-list/block.js +3 -1
  14. package/build/components/block-list/block.js.map +1 -1
  15. package/build/components/block-lock/menu-item.js +1 -1
  16. package/build/components/block-lock/menu-item.js.map +1 -1
  17. package/build/components/block-lock/modal.js +16 -9
  18. package/build/components/block-lock/modal.js.map +1 -1
  19. package/build/components/block-popover/inbetween.js +2 -1
  20. package/build/components/block-popover/inbetween.js.map +1 -1
  21. package/build/components/block-popover/index.js +2 -1
  22. package/build/components/block-popover/index.js.map +1 -1
  23. package/build/components/block-preview/index.js +2 -4
  24. package/build/components/block-preview/index.js.map +1 -1
  25. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -8
  26. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  27. package/build/components/block-styles/utils.js +3 -3
  28. package/build/components/block-styles/utils.js.map +1 -1
  29. package/build/components/block-switcher/index.js +21 -12
  30. package/build/components/block-switcher/index.js.map +1 -1
  31. package/build/components/block-switcher/preview-block-popover.js +1 -1
  32. package/build/components/block-switcher/preview-block-popover.js.map +1 -1
  33. package/build/components/block-tools/insertion-point.js +12 -2
  34. package/build/components/block-tools/insertion-point.js.map +1 -1
  35. package/build/components/block-tools/selected-block-popover.js +27 -4
  36. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  37. package/build/components/block-vertical-alignment-control/ui.js +1 -1
  38. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  39. package/build/components/border-radius-control/all-input-control.js +2 -1
  40. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  41. package/build/components/border-radius-control/index.js +2 -1
  42. package/build/components/border-radius-control/index.js.map +1 -1
  43. package/build/components/border-radius-control/input-controls.js +2 -1
  44. package/build/components/border-radius-control/input-controls.js.map +1 -1
  45. package/build/components/colors/with-colors.js +4 -3
  46. package/build/components/colors/with-colors.js.map +1 -1
  47. package/build/components/duotone-control/index.js +1 -1
  48. package/build/components/duotone-control/index.js.map +1 -1
  49. package/build/components/font-sizes/fluid-utils.js +24 -40
  50. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  51. package/build/components/font-sizes/with-font-sizes.js +8 -6
  52. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  53. package/build/components/iframe/index.js +1 -1
  54. package/build/components/iframe/index.js.map +1 -1
  55. package/build/components/image-editor/constants.js +1 -1
  56. package/build/components/image-editor/constants.js.map +1 -1
  57. package/build/components/index.js +9 -0
  58. package/build/components/index.js.map +1 -1
  59. package/build/components/inner-blocks/index.js +10 -4
  60. package/build/components/inner-blocks/index.js.map +1 -1
  61. package/build/components/inserter/hooks/use-insertion-point.js +2 -7
  62. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  63. package/build/components/inserter/reusable-blocks-tab.js +4 -1
  64. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  65. package/build/components/inserter/search-items.js +23 -2
  66. package/build/components/inserter/search-items.js.map +1 -1
  67. package/build/components/line-height-control/index.js +2 -1
  68. package/build/components/line-height-control/index.js.map +1 -1
  69. package/build/components/link-control/index.js +18 -34
  70. package/build/components/link-control/index.js.map +1 -1
  71. package/build/components/link-control/search-input.js +1 -1
  72. package/build/components/link-control/search-input.js.map +1 -1
  73. package/build/components/link-control/use-internal-input-value.js +26 -0
  74. package/build/components/link-control/use-internal-input-value.js.map +1 -0
  75. package/build/components/list-view/block.js +5 -3
  76. package/build/components/list-view/block.js.map +1 -1
  77. package/build/components/list-view/branch.js +9 -3
  78. package/build/components/list-view/branch.js.map +1 -1
  79. package/build/components/list-view/drop-indicator.js +2 -1
  80. package/build/components/list-view/drop-indicator.js.map +1 -1
  81. package/build/components/media-replace-flow/index.js +1 -1
  82. package/build/components/media-replace-flow/index.js.map +1 -1
  83. package/build/components/off-canvas-editor/block-contents.js +100 -0
  84. package/build/components/off-canvas-editor/block-contents.js.map +1 -0
  85. package/build/components/off-canvas-editor/block-select-button.js +119 -0
  86. package/build/components/off-canvas-editor/block-select-button.js.map +1 -0
  87. package/build/components/off-canvas-editor/block.js +292 -0
  88. package/build/components/off-canvas-editor/block.js.map +1 -0
  89. package/build/components/off-canvas-editor/branch.js +181 -0
  90. package/build/components/off-canvas-editor/branch.js.map +1 -0
  91. package/build/components/off-canvas-editor/context.js +19 -0
  92. package/build/components/off-canvas-editor/context.js.map +1 -0
  93. package/build/components/off-canvas-editor/drop-indicator.js +118 -0
  94. package/build/components/off-canvas-editor/drop-indicator.js.map +1 -0
  95. package/build/components/off-canvas-editor/expander.js +41 -0
  96. package/build/components/off-canvas-editor/expander.js.map +1 -0
  97. package/build/components/off-canvas-editor/index.js +204 -0
  98. package/build/components/off-canvas-editor/index.js.map +1 -0
  99. package/build/components/off-canvas-editor/leaf.js +60 -0
  100. package/build/components/off-canvas-editor/leaf.js.map +1 -0
  101. package/build/components/off-canvas-editor/use-block-selection.js +139 -0
  102. package/build/components/off-canvas-editor/use-block-selection.js.map +1 -0
  103. package/build/components/off-canvas-editor/use-list-view-client-ids.js +33 -0
  104. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  105. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +235 -0
  106. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  107. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +60 -0
  108. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  109. package/build/components/off-canvas-editor/utils.js +60 -0
  110. package/build/components/off-canvas-editor/utils.js.map +1 -0
  111. package/build/components/rich-text/format-toolbar/index.js +1 -1
  112. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  113. package/build/components/rich-text/format-toolbar-container.js +1 -1
  114. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  115. package/build/components/rich-text/use-paste-handler.js +1 -1
  116. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  117. package/build/components/spacing-sizes-control/all-input-control.js +6 -2
  118. package/build/components/spacing-sizes-control/all-input-control.js.map +1 -1
  119. package/build/components/spacing-sizes-control/axial-input-controls.js +6 -2
  120. package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
  121. package/build/components/spacing-sizes-control/index.js +6 -2
  122. package/build/components/spacing-sizes-control/index.js.map +1 -1
  123. package/build/components/spacing-sizes-control/input-controls.js +6 -2
  124. package/build/components/spacing-sizes-control/input-controls.js.map +1 -1
  125. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -5
  126. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  127. package/build/components/url-input/index.js +1 -1
  128. package/build/components/url-input/index.js.map +1 -1
  129. package/build/components/url-popover/index.js +31 -2
  130. package/build/components/url-popover/index.js.map +1 -1
  131. package/build/components/use-setting/index.js +1 -1
  132. package/build/components/use-setting/index.js.map +1 -1
  133. package/build/hooks/border.js +1 -0
  134. package/build/hooks/border.js.map +1 -1
  135. package/build/hooks/color-panel.js +17 -1
  136. package/build/hooks/color-panel.js.map +1 -1
  137. package/build/hooks/color.js +1 -1
  138. package/build/hooks/color.js.map +1 -1
  139. package/build/hooks/content-lock-ui.js +13 -6
  140. package/build/hooks/content-lock-ui.js.map +1 -1
  141. package/build/hooks/dimensions.js +72 -13
  142. package/build/hooks/dimensions.js.map +1 -1
  143. package/build/hooks/font-size.js +1 -0
  144. package/build/hooks/font-size.js.map +1 -1
  145. package/build/hooks/layout.js +5 -4
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/margin.js +26 -18
  148. package/build/hooks/margin.js.map +1 -1
  149. package/build/hooks/min-height.js +145 -0
  150. package/build/hooks/min-height.js.map +1 -0
  151. package/build/hooks/padding.js +22 -13
  152. package/build/hooks/padding.js.map +1 -1
  153. package/build/hooks/style.js +3 -2
  154. package/build/hooks/style.js.map +1 -1
  155. package/build/hooks/utils.js +7 -6
  156. package/build/hooks/utils.js.map +1 -1
  157. package/build/layouts/constrained.js +0 -1
  158. package/build/layouts/constrained.js.map +1 -1
  159. package/build/layouts/flex.js +23 -22
  160. package/build/layouts/flex.js.map +1 -1
  161. package/build/store/actions.js +30 -0
  162. package/build/store/actions.js.map +1 -1
  163. package/build/store/array.js +1 -7
  164. package/build/store/array.js.map +1 -1
  165. package/build/store/reducer.js +46 -14
  166. package/build/store/reducer.js.map +1 -1
  167. package/build/store/selectors.js +62 -31
  168. package/build/store/selectors.js.map +1 -1
  169. package/build-module/components/alignment-control/ui.js +1 -1
  170. package/build-module/components/alignment-control/ui.js.map +1 -1
  171. package/build-module/components/block-alignment-control/constants.js +1 -1
  172. package/build-module/components/block-alignment-control/constants.js.map +1 -1
  173. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  174. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  175. package/build-module/components/block-compare/index.js +2 -3
  176. package/build-module/components/block-compare/index.js.map +1 -1
  177. package/build-module/components/block-edit/index.js +4 -2
  178. package/build-module/components/block-edit/index.js.map +1 -1
  179. package/build-module/components/block-list/block.js +3 -1
  180. package/build-module/components/block-list/block.js.map +1 -1
  181. package/build-module/components/block-lock/menu-item.js +2 -2
  182. package/build-module/components/block-lock/menu-item.js.map +1 -1
  183. package/build-module/components/block-lock/modal.js +17 -10
  184. package/build-module/components/block-lock/modal.js.map +1 -1
  185. package/build-module/components/block-popover/inbetween.js +2 -1
  186. package/build-module/components/block-popover/inbetween.js.map +1 -1
  187. package/build-module/components/block-popover/index.js +2 -1
  188. package/build-module/components/block-popover/index.js.map +1 -1
  189. package/build-module/components/block-preview/index.js +2 -3
  190. package/build-module/components/block-preview/index.js.map +1 -1
  191. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -7
  192. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  193. package/build-module/components/block-styles/utils.js +3 -3
  194. package/build-module/components/block-styles/utils.js.map +1 -1
  195. package/build-module/components/block-switcher/index.js +21 -11
  196. package/build-module/components/block-switcher/index.js.map +1 -1
  197. package/build-module/components/block-switcher/preview-block-popover.js +1 -1
  198. package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
  199. package/build-module/components/block-tools/insertion-point.js +12 -2
  200. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  201. package/build-module/components/block-tools/selected-block-popover.js +27 -5
  202. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  203. package/build-module/components/block-vertical-alignment-control/ui.js +1 -1
  204. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  205. package/build-module/components/border-radius-control/all-input-control.js +2 -1
  206. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  207. package/build-module/components/border-radius-control/index.js +2 -1
  208. package/build-module/components/border-radius-control/index.js.map +1 -1
  209. package/build-module/components/border-radius-control/input-controls.js +2 -1
  210. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  211. package/build-module/components/colors/with-colors.js +5 -4
  212. package/build-module/components/colors/with-colors.js.map +1 -1
  213. package/build-module/components/duotone-control/index.js +1 -1
  214. package/build-module/components/duotone-control/index.js.map +1 -1
  215. package/build-module/components/font-sizes/fluid-utils.js +24 -40
  216. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  217. package/build-module/components/font-sizes/with-font-sizes.js +9 -7
  218. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  219. package/build-module/components/iframe/index.js +1 -1
  220. package/build-module/components/iframe/index.js.map +1 -1
  221. package/build-module/components/image-editor/constants.js +1 -1
  222. package/build-module/components/image-editor/constants.js.map +1 -1
  223. package/build-module/components/index.js +1 -0
  224. package/build-module/components/index.js.map +1 -1
  225. package/build-module/components/inner-blocks/index.js +10 -4
  226. package/build-module/components/inner-blocks/index.js.map +1 -1
  227. package/build-module/components/inserter/hooks/use-insertion-point.js +2 -6
  228. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  229. package/build-module/components/inserter/reusable-blocks-tab.js +3 -1
  230. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  231. package/build-module/components/inserter/search-items.js +23 -3
  232. package/build-module/components/inserter/search-items.js.map +1 -1
  233. package/build-module/components/line-height-control/index.js +2 -1
  234. package/build-module/components/line-height-control/index.js.map +1 -1
  235. package/build-module/components/link-control/index.js +17 -34
  236. package/build-module/components/link-control/index.js.map +1 -1
  237. package/build-module/components/link-control/search-input.js +1 -1
  238. package/build-module/components/link-control/search-input.js.map +1 -1
  239. package/build-module/components/link-control/use-internal-input-value.js +18 -0
  240. package/build-module/components/link-control/use-internal-input-value.js.map +1 -0
  241. package/build-module/components/list-view/block.js +5 -3
  242. package/build-module/components/list-view/block.js.map +1 -1
  243. package/build-module/components/list-view/branch.js +9 -3
  244. package/build-module/components/list-view/branch.js.map +1 -1
  245. package/build-module/components/list-view/drop-indicator.js +2 -1
  246. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  247. package/build-module/components/media-replace-flow/index.js +1 -1
  248. package/build-module/components/media-replace-flow/index.js.map +1 -1
  249. package/build-module/components/off-canvas-editor/block-contents.js +85 -0
  250. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -0
  251. package/build-module/components/off-canvas-editor/block-select-button.js +101 -0
  252. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -0
  253. package/build-module/components/off-canvas-editor/block.js +268 -0
  254. package/build-module/components/off-canvas-editor/block.js.map +1 -0
  255. package/build-module/components/off-canvas-editor/branch.js +165 -0
  256. package/build-module/components/off-canvas-editor/branch.js.map +1 -0
  257. package/build-module/components/off-canvas-editor/context.js +7 -0
  258. package/build-module/components/off-canvas-editor/context.js.map +1 -0
  259. package/build-module/components/off-canvas-editor/drop-indicator.js +111 -0
  260. package/build-module/components/off-canvas-editor/drop-indicator.js.map +1 -0
  261. package/build-module/components/off-canvas-editor/expander.js +32 -0
  262. package/build-module/components/off-canvas-editor/expander.js.map +1 -0
  263. package/build-module/components/off-canvas-editor/index.js +181 -0
  264. package/build-module/components/off-canvas-editor/index.js.map +1 -0
  265. package/build-module/components/off-canvas-editor/leaf.js +45 -0
  266. package/build-module/components/off-canvas-editor/leaf.js.map +1 -0
  267. package/build-module/components/off-canvas-editor/use-block-selection.js +124 -0
  268. package/build-module/components/off-canvas-editor/use-block-selection.js.map +1 -0
  269. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +24 -0
  270. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  271. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +220 -0
  272. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  273. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +50 -0
  274. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  275. package/build-module/components/off-canvas-editor/utils.js +44 -0
  276. package/build-module/components/off-canvas-editor/utils.js.map +1 -0
  277. package/build-module/components/rich-text/format-toolbar/index.js +1 -1
  278. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  279. package/build-module/components/rich-text/format-toolbar-container.js +1 -1
  280. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  281. package/build-module/components/rich-text/use-paste-handler.js +1 -1
  282. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  283. package/build-module/components/spacing-sizes-control/all-input-control.js +6 -2
  284. package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -1
  285. package/build-module/components/spacing-sizes-control/axial-input-controls.js +6 -2
  286. package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
  287. package/build-module/components/spacing-sizes-control/index.js +6 -2
  288. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  289. package/build-module/components/spacing-sizes-control/input-controls.js +6 -2
  290. package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -1
  291. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -5
  292. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  293. package/build-module/components/url-input/index.js +1 -1
  294. package/build-module/components/url-input/index.js.map +1 -1
  295. package/build-module/components/url-popover/index.js +30 -3
  296. package/build-module/components/url-popover/index.js.map +1 -1
  297. package/build-module/components/use-setting/index.js +1 -1
  298. package/build-module/components/use-setting/index.js.map +1 -1
  299. package/build-module/hooks/border.js +1 -0
  300. package/build-module/hooks/border.js.map +1 -1
  301. package/build-module/hooks/color-panel.js +17 -1
  302. package/build-module/hooks/color-panel.js.map +1 -1
  303. package/build-module/hooks/color.js +1 -1
  304. package/build-module/hooks/color.js.map +1 -1
  305. package/build-module/hooks/content-lock-ui.js +15 -8
  306. package/build-module/hooks/content-lock-ui.js.map +1 -1
  307. package/build-module/hooks/dimensions.js +67 -12
  308. package/build-module/hooks/dimensions.js.map +1 -1
  309. package/build-module/hooks/font-size.js +1 -0
  310. package/build-module/hooks/font-size.js.map +1 -1
  311. package/build-module/hooks/layout.js +6 -5
  312. package/build-module/hooks/layout.js.map +1 -1
  313. package/build-module/hooks/margin.js +27 -19
  314. package/build-module/hooks/margin.js.map +1 -1
  315. package/build-module/hooks/min-height.js +122 -0
  316. package/build-module/hooks/min-height.js.map +1 -0
  317. package/build-module/hooks/padding.js +23 -14
  318. package/build-module/hooks/padding.js.map +1 -1
  319. package/build-module/hooks/style.js +4 -3
  320. package/build-module/hooks/style.js.map +1 -1
  321. package/build-module/hooks/utils.js +7 -7
  322. package/build-module/hooks/utils.js.map +1 -1
  323. package/build-module/layouts/constrained.js +0 -1
  324. package/build-module/layouts/constrained.js.map +1 -1
  325. package/build-module/layouts/flex.js +24 -23
  326. package/build-module/layouts/flex.js.map +1 -1
  327. package/build-module/store/actions.js +26 -0
  328. package/build-module/store/actions.js.map +1 -1
  329. package/build-module/store/array.js +1 -6
  330. package/build-module/store/array.js.map +1 -1
  331. package/build-module/store/reducer.js +44 -14
  332. package/build-module/store/reducer.js.map +1 -1
  333. package/build-module/store/selectors.js +59 -31
  334. package/build-module/store/selectors.js.map +1 -1
  335. package/build-style/style-rtl.css +88 -88
  336. package/build-style/style.css +84 -84
  337. package/package.json +29 -28
  338. package/src/components/alignment-control/README.md +1 -1
  339. package/src/components/alignment-control/ui.js +1 -1
  340. package/src/components/block-alignment-control/constants.js +1 -1
  341. package/src/components/block-alignment-control/test/index.native.js +4 -4
  342. package/src/components/block-alignment-matrix-control/index.js +1 -1
  343. package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +13 -11
  344. package/src/components/block-breadcrumb/test/index.js +1 -1
  345. package/src/components/block-compare/index.js +3 -2
  346. package/src/components/block-draggable/test/helpers.native.js +3 -3
  347. package/src/components/block-draggable/test/index.native.js +27 -27
  348. package/src/components/block-edit/index.js +2 -1
  349. package/src/components/block-list/block.js +2 -0
  350. package/src/components/block-list/style.scss +11 -6
  351. package/src/components/block-lock/menu-item.js +5 -2
  352. package/src/components/block-lock/modal.js +19 -36
  353. package/src/components/block-lock/style.scss +8 -17
  354. package/src/components/block-mover/stories/index.js +1 -1
  355. package/src/components/block-mover/style.scss +35 -1
  356. package/src/components/block-popover/inbetween.js +1 -0
  357. package/src/components/block-popover/index.js +1 -0
  358. package/src/components/block-popover/style.scss +1 -5
  359. package/src/components/block-preview/index.js +8 -3
  360. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -7
  361. package/src/components/block-styles/utils.js +3 -3
  362. package/src/components/block-switcher/index.js +21 -11
  363. package/src/components/block-switcher/preview-block-popover.js +1 -1
  364. package/src/components/block-tools/insertion-point.js +10 -1
  365. package/src/components/block-tools/selected-block-popover.js +80 -34
  366. package/src/components/block-tools/style.scss +15 -0
  367. package/src/components/block-variation-picker/README.md +1 -1
  368. package/src/components/block-vertical-alignment-control/ui.js +1 -1
  369. package/src/components/border-radius-control/all-input-control.js +1 -0
  370. package/src/components/border-radius-control/index.js +1 -0
  371. package/src/components/border-radius-control/input-controls.js +1 -0
  372. package/src/components/border-radius-control/style.scss +15 -24
  373. package/src/components/color-palette/test/__snapshots__/control.js.snap +85 -83
  374. package/src/components/color-palette/test/control.js +1 -1
  375. package/src/components/colors/with-colors.js +13 -23
  376. package/src/components/default-block-appender/style.scss +1 -0
  377. package/src/components/duotone-control/index.js +1 -1
  378. package/src/components/font-sizes/fluid-utils.js +37 -64
  379. package/src/components/font-sizes/test/fluid-utils.js +5 -5
  380. package/src/components/font-sizes/with-font-sizes.js +15 -13
  381. package/src/components/iframe/index.js +1 -1
  382. package/src/components/image-editor/constants.js +1 -1
  383. package/src/components/index.js +1 -0
  384. package/src/components/inner-blocks/index.js +11 -4
  385. package/src/components/inner-blocks/test/index.js +4 -0
  386. package/src/components/inserter/hooks/use-insertion-point.js +3 -11
  387. package/src/components/inserter/reusable-blocks-tab.js +4 -2
  388. package/src/components/inserter/search-items.js +23 -3
  389. package/src/components/inserter/style.scss +8 -7
  390. package/src/components/inserter/test/reusable-blocks-tab.js +14 -57
  391. package/src/components/inserter/test/search-items.js +6 -0
  392. package/src/components/inserter-list-item/style.scss +2 -0
  393. package/src/components/letter-spacing-control/README.md +55 -0
  394. package/src/components/line-height-control/index.js +1 -0
  395. package/src/components/link-control/README.md +3 -3
  396. package/src/components/link-control/index.js +23 -39
  397. package/src/components/link-control/search-input.js +1 -1
  398. package/src/components/link-control/test/index.js +272 -241
  399. package/src/components/link-control/use-internal-input-value.js +22 -0
  400. package/src/components/list-view/block.js +4 -3
  401. package/src/components/list-view/branch.js +11 -6
  402. package/src/components/list-view/drop-indicator.js +1 -0
  403. package/src/components/list-view/style.scss +1 -36
  404. package/src/components/media-replace-flow/index.js +1 -1
  405. package/src/components/media-replace-flow/test/index.js +69 -51
  406. package/src/components/off-canvas-editor/README.md +5 -0
  407. package/src/components/off-canvas-editor/block-contents.js +89 -0
  408. package/src/components/off-canvas-editor/block-select-button.js +113 -0
  409. package/src/components/off-canvas-editor/block.js +335 -0
  410. package/src/components/off-canvas-editor/branch.js +210 -0
  411. package/src/components/off-canvas-editor/context.js +8 -0
  412. package/src/components/off-canvas-editor/drop-indicator.js +126 -0
  413. package/src/components/off-canvas-editor/expander.js +26 -0
  414. package/src/components/off-canvas-editor/index.js +216 -0
  415. package/src/components/off-canvas-editor/leaf.js +48 -0
  416. package/src/components/off-canvas-editor/style.scss +397 -0
  417. package/src/components/off-canvas-editor/test/utils.js +50 -0
  418. package/src/components/off-canvas-editor/use-block-selection.js +169 -0
  419. package/src/components/off-canvas-editor/use-list-view-client-ids.js +29 -0
  420. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +260 -0
  421. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +58 -0
  422. package/src/components/off-canvas-editor/utils.js +58 -0
  423. package/src/components/responsive-block-control/test/index.js +69 -92
  424. package/src/components/rich-text/format-toolbar/index.js +1 -1
  425. package/src/components/rich-text/format-toolbar-container.js +1 -1
  426. package/src/components/rich-text/use-paste-handler.js +1 -1
  427. package/src/components/spacing-sizes-control/all-input-control.js +4 -0
  428. package/src/components/spacing-sizes-control/axial-input-controls.js +4 -0
  429. package/src/components/spacing-sizes-control/index.js +4 -0
  430. package/src/components/spacing-sizes-control/input-controls.js +4 -0
  431. package/src/components/spacing-sizes-control/spacing-input-control.js +10 -1
  432. package/src/components/spacing-sizes-control/style.scss +1 -0
  433. package/src/components/url-input/index.js +1 -1
  434. package/src/components/url-popover/README.md +12 -3
  435. package/src/components/url-popover/index.js +33 -3
  436. package/src/components/use-setting/index.js +7 -1
  437. package/src/hooks/border.js +1 -0
  438. package/src/hooks/color-panel.js +13 -1
  439. package/src/hooks/color.js +2 -0
  440. package/src/hooks/content-lock-ui.js +46 -34
  441. package/src/hooks/dimensions.js +106 -19
  442. package/src/hooks/font-size.js +1 -0
  443. package/src/hooks/layout.js +8 -11
  444. package/src/hooks/margin.js +23 -17
  445. package/src/hooks/min-height.js +121 -0
  446. package/src/hooks/padding.js +23 -19
  447. package/src/hooks/style.js +10 -2
  448. package/src/hooks/test/align.js +96 -72
  449. package/src/hooks/test/style.js +4 -0
  450. package/src/hooks/test/use-typography-props.js +1 -1
  451. package/src/hooks/utils.js +5 -6
  452. package/src/layouts/constrained.js +0 -1
  453. package/src/layouts/flex.js +44 -39
  454. package/src/store/actions.js +26 -0
  455. package/src/store/array.js +1 -6
  456. package/src/store/reducer.js +50 -40
  457. package/src/store/selectors.js +43 -29
  458. package/src/store/test/actions.js +18 -0
  459. package/src/store/test/reducer.js +40 -0
  460. package/src/store/test/selectors.js +20 -1
@@ -31,7 +31,9 @@ export default function SpacingSizesControl(_ref) {
31
31
  sides,
32
32
  splitOnAxis = false,
33
33
  useSelect,
34
- minimumCustomValue = 0
34
+ minimumCustomValue = 0,
35
+ onMouseOver,
36
+ onMouseOut
35
37
  } = _ref;
36
38
  const spacingSizes = [{
37
39
  name: 0,
@@ -71,7 +73,9 @@ export default function SpacingSizesControl(_ref) {
71
73
  spacingSizes,
72
74
  useSelect,
73
75
  type: label,
74
- minimumCustomValue
76
+ minimumCustomValue,
77
+ onMouseOver,
78
+ onMouseOut
75
79
  };
76
80
  return createElement("fieldset", {
77
81
  role: "region",
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/index.js"],"names":["classnames","useState","__","BaseControl","AllInputControl","InputControls","AxialInputControls","LinkedButton","DEFAULT_VALUES","isValuesMixed","isValuesDefined","useSetting","SpacingSizesControl","inputProps","onChange","label","values","sides","splitOnAxis","useSelect","minimumCustomValue","spacingSizes","name","slug","size","length","unshift","undefined","inputValues","hasInitialValue","hasOneSide","isLinked","setIsLinked","toggleLinked","handleOnChange","nextValue","newValues","inputControlProps","type"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { BaseControl } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport AllInputControl from './all-input-control';\nimport InputControls from './input-controls';\nimport AxialInputControls from './axial-input-controls';\nimport LinkedButton from './linked-button';\nimport { DEFAULT_VALUES, isValuesMixed, isValuesDefined } from './utils';\nimport useSetting from '../use-setting';\n\nexport default function SpacingSizesControl( {\n\tinputProps,\n\tonChange,\n\tlabel = __( 'Spacing Control' ),\n\tvalues,\n\tsides,\n\tsplitOnAxis = false,\n\tuseSelect,\n\tminimumCustomValue = 0,\n} ) {\n\tconst spacingSizes = [\n\t\t{ name: 0, slug: '0', size: 0 },\n\t\t...( useSetting( 'spacing.spacingSizes' ) || [] ),\n\t];\n\n\tif ( spacingSizes.length > 8 ) {\n\t\tspacingSizes.unshift( {\n\t\t\tname: __( 'Default' ),\n\t\t\tslug: 'default',\n\t\t\tsize: undefined,\n\t\t} );\n\t}\n\n\tconst inputValues = values || DEFAULT_VALUES;\n\tconst hasInitialValue = isValuesDefined( values );\n\tconst hasOneSide = sides?.length === 1;\n\n\tconst [ isLinked, setIsLinked ] = useState(\n\t\t! hasInitialValue || ! isValuesMixed( inputValues, sides ) || hasOneSide\n\t);\n\n\tconst toggleLinked = () => {\n\t\tsetIsLinked( ! isLinked );\n\t};\n\n\tconst handleOnChange = ( nextValue ) => {\n\t\tconst newValues = { ...values, ...nextValue };\n\t\tonChange( newValues );\n\t};\n\n\tconst inputControlProps = {\n\t\t...inputProps,\n\t\tonChange: handleOnChange,\n\t\tisLinked,\n\t\tsides,\n\t\tvalues: inputValues,\n\t\tspacingSizes,\n\t\tuseSelect,\n\t\ttype: label,\n\t\tminimumCustomValue,\n\t};\n\n\treturn (\n\t\t<fieldset\n\t\t\trole=\"region\"\n\t\t\tclassName={ classnames( 'component-spacing-sizes-control', {\n\t\t\t\t'is-unlinked': ! isLinked,\n\t\t\t} ) }\n\t\t>\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ label }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t{ ! hasOneSide && (\n\t\t\t\t<LinkedButton onClick={ toggleLinked } isLinked={ isLinked } />\n\t\t\t) }\n\t\t\t{ isLinked && (\n\t\t\t\t<AllInputControl\n\t\t\t\t\taria-label={ label }\n\t\t\t\t\t{ ...inputControlProps }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! isLinked && splitOnAxis && (\n\t\t\t\t<AxialInputControls { ...inputControlProps } />\n\t\t\t) }\n\t\t\t{ ! isLinked && ! splitOnAxis && (\n\t\t\t\t<InputControls { ...inputControlProps } />\n\t\t\t) }\n\t\t</fieldset>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/index.js"],"names":["classnames","useState","__","BaseControl","AllInputControl","InputControls","AxialInputControls","LinkedButton","DEFAULT_VALUES","isValuesMixed","isValuesDefined","useSetting","SpacingSizesControl","inputProps","onChange","label","values","sides","splitOnAxis","useSelect","minimumCustomValue","onMouseOver","onMouseOut","spacingSizes","name","slug","size","length","unshift","undefined","inputValues","hasInitialValue","hasOneSide","isLinked","setIsLinked","toggleLinked","handleOnChange","nextValue","newValues","inputControlProps","type"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { BaseControl } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport AllInputControl from './all-input-control';\nimport InputControls from './input-controls';\nimport AxialInputControls from './axial-input-controls';\nimport LinkedButton from './linked-button';\nimport { DEFAULT_VALUES, isValuesMixed, isValuesDefined } from './utils';\nimport useSetting from '../use-setting';\n\nexport default function SpacingSizesControl( {\n\tinputProps,\n\tonChange,\n\tlabel = __( 'Spacing Control' ),\n\tvalues,\n\tsides,\n\tsplitOnAxis = false,\n\tuseSelect,\n\tminimumCustomValue = 0,\n\tonMouseOver,\n\tonMouseOut,\n} ) {\n\tconst spacingSizes = [\n\t\t{ name: 0, slug: '0', size: 0 },\n\t\t...( useSetting( 'spacing.spacingSizes' ) || [] ),\n\t];\n\n\tif ( spacingSizes.length > 8 ) {\n\t\tspacingSizes.unshift( {\n\t\t\tname: __( 'Default' ),\n\t\t\tslug: 'default',\n\t\t\tsize: undefined,\n\t\t} );\n\t}\n\n\tconst inputValues = values || DEFAULT_VALUES;\n\tconst hasInitialValue = isValuesDefined( values );\n\tconst hasOneSide = sides?.length === 1;\n\n\tconst [ isLinked, setIsLinked ] = useState(\n\t\t! hasInitialValue || ! isValuesMixed( inputValues, sides ) || hasOneSide\n\t);\n\n\tconst toggleLinked = () => {\n\t\tsetIsLinked( ! isLinked );\n\t};\n\n\tconst handleOnChange = ( nextValue ) => {\n\t\tconst newValues = { ...values, ...nextValue };\n\t\tonChange( newValues );\n\t};\n\n\tconst inputControlProps = {\n\t\t...inputProps,\n\t\tonChange: handleOnChange,\n\t\tisLinked,\n\t\tsides,\n\t\tvalues: inputValues,\n\t\tspacingSizes,\n\t\tuseSelect,\n\t\ttype: label,\n\t\tminimumCustomValue,\n\t\tonMouseOver,\n\t\tonMouseOut,\n\t};\n\n\treturn (\n\t\t<fieldset\n\t\t\trole=\"region\"\n\t\t\tclassName={ classnames( 'component-spacing-sizes-control', {\n\t\t\t\t'is-unlinked': ! isLinked,\n\t\t\t} ) }\n\t\t>\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ label }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t{ ! hasOneSide && (\n\t\t\t\t<LinkedButton onClick={ toggleLinked } isLinked={ isLinked } />\n\t\t\t) }\n\t\t\t{ isLinked && (\n\t\t\t\t<AllInputControl\n\t\t\t\t\taria-label={ label }\n\t\t\t\t\t{ ...inputControlProps }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! isLinked && splitOnAxis && (\n\t\t\t\t<AxialInputControls { ...inputControlProps } />\n\t\t\t) }\n\t\t\t{ ! isLinked && ! splitOnAxis && (\n\t\t\t\t<InputControls { ...inputControlProps } />\n\t\t\t) }\n\t\t</fieldset>\n\t);\n}\n"]}
@@ -12,7 +12,9 @@ export default function BoxInputControls(_ref) {
12
12
  onChange,
13
13
  spacingSizes,
14
14
  type,
15
- minimumCustomValue
15
+ minimumCustomValue,
16
+ onMouseOver,
17
+ onMouseOut
16
18
  } = _ref;
17
19
  // Filter sides if custom configuration provided, maintaining default order.
18
20
  const filteredSides = sides !== null && sides !== void 0 && sides.length ? ALL_SIDES.filter(side => sides.includes(side)) : ALL_SIDES;
@@ -34,7 +36,9 @@ export default function BoxInputControls(_ref) {
34
36
  onChange: createHandleOnChange(side),
35
37
  spacingSizes: spacingSizes,
36
38
  type: type,
37
- minimumCustomValue: minimumCustomValue
39
+ minimumCustomValue: minimumCustomValue,
40
+ onMouseOver: onMouseOver,
41
+ onMouseOut: onMouseOut
38
42
  });
39
43
  }));
40
44
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/input-controls.js"],"names":["SpacingInputControl","ALL_SIDES","LABELS","BoxInputControls","values","sides","onChange","spacingSizes","type","minimumCustomValue","filteredSides","length","filter","side","includes","createHandleOnChange","next","nextValues","map"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,mBAAP,MAAgC,yBAAhC;AACA,SAASC,SAAT,EAAoBC,MAApB,QAAkC,SAAlC;AAEA,eAAe,SAASC,gBAAT,OAOX;AAAA,MAPsC;AACzCC,IAAAA,MADyC;AAEzCC,IAAAA,KAFyC;AAGzCC,IAAAA,QAHyC;AAIzCC,IAAAA,YAJyC;AAKzCC,IAAAA,IALyC;AAMzCC,IAAAA;AANyC,GAOtC;AACH;AACA,QAAMC,aAAa,GAAGL,KAAK,SAAL,IAAAA,KAAK,WAAL,IAAAA,KAAK,CAAEM,MAAP,GACnBV,SAAS,CAACW,MAAV,CAAoBC,IAAF,IAAYR,KAAK,CAACS,QAAN,CAAgBD,IAAhB,CAA9B,CADmB,GAEnBZ,SAFH;;AAIA,QAAMc,oBAAoB,GAAKF,IAAF,IAAcG,IAAF,IAAY;AACpD,UAAMC,UAAU,GAAG,EAAE,GAAGb;AAAL,KAAnB;AACAa,IAAAA,UAAU,CAAEJ,IAAF,CAAV,GAAqBG,IAArB;AAEAV,IAAAA,QAAQ,CAAEW,UAAF,CAAR;AACA,GALD;;AAOA,SACC,8BACGP,aAAa,CAACQ,GAAd,CAAqBL,IAAF,IAAY;AAChC,WACC,cAAC,mBAAD;AACC,MAAA,KAAK,EAAGT,MAAM,CAAES,IAAF,CADf;AAEC,MAAA,KAAK,EAAGX,MAAM,CAAEW,IAAF,CAFf;AAGC,MAAA,GAAG,EAAI,yBAAyBA,IAAM,EAHvC;AAIC,MAAA,cAAc,EAAG,KAJlB;AAKC,MAAA,IAAI,EAAGA,IALR;AAMC,MAAA,QAAQ,EAAGE,oBAAoB,CAAEF,IAAF,CANhC;AAOC,MAAA,YAAY,EAAGN,YAPhB;AAQC,MAAA,IAAI,EAAGC,IARR;AASC,MAAA,kBAAkB,EAAGC;AATtB,MADD;AAaA,GAdC,CADH,CADD;AAmBA","sourcesContent":["/**\n * Internal dependencies\n */\nimport SpacingInputControl from './spacing-input-control';\nimport { ALL_SIDES, LABELS } from './utils';\n\nexport default function BoxInputControls( {\n\tvalues,\n\tsides,\n\tonChange,\n\tspacingSizes,\n\ttype,\n\tminimumCustomValue,\n} ) {\n\t// Filter sides if custom configuration provided, maintaining default order.\n\tconst filteredSides = sides?.length\n\t\t? ALL_SIDES.filter( ( side ) => sides.includes( side ) )\n\t\t: ALL_SIDES;\n\n\tconst createHandleOnChange = ( side ) => ( next ) => {\n\t\tconst nextValues = { ...values };\n\t\tnextValues[ side ] = next;\n\n\t\tonChange( nextValues );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ filteredSides.map( ( side ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<SpacingInputControl\n\t\t\t\t\t\tvalue={ values[ side ] }\n\t\t\t\t\t\tlabel={ LABELS[ side ] }\n\t\t\t\t\t\tkey={ `spacing-sizes-control-${ side }` }\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tside={ side }\n\t\t\t\t\t\tonChange={ createHandleOnChange( side ) }\n\t\t\t\t\t\tspacingSizes={ spacingSizes }\n\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\tminimumCustomValue={ minimumCustomValue }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/input-controls.js"],"names":["SpacingInputControl","ALL_SIDES","LABELS","BoxInputControls","values","sides","onChange","spacingSizes","type","minimumCustomValue","onMouseOver","onMouseOut","filteredSides","length","filter","side","includes","createHandleOnChange","next","nextValues","map"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,mBAAP,MAAgC,yBAAhC;AACA,SAASC,SAAT,EAAoBC,MAApB,QAAkC,SAAlC;AAEA,eAAe,SAASC,gBAAT,OASX;AAAA,MATsC;AACzCC,IAAAA,MADyC;AAEzCC,IAAAA,KAFyC;AAGzCC,IAAAA,QAHyC;AAIzCC,IAAAA,YAJyC;AAKzCC,IAAAA,IALyC;AAMzCC,IAAAA,kBANyC;AAOzCC,IAAAA,WAPyC;AAQzCC,IAAAA;AARyC,GAStC;AACH;AACA,QAAMC,aAAa,GAAGP,KAAK,SAAL,IAAAA,KAAK,WAAL,IAAAA,KAAK,CAAEQ,MAAP,GACnBZ,SAAS,CAACa,MAAV,CAAoBC,IAAF,IAAYV,KAAK,CAACW,QAAN,CAAgBD,IAAhB,CAA9B,CADmB,GAEnBd,SAFH;;AAIA,QAAMgB,oBAAoB,GAAKF,IAAF,IAAcG,IAAF,IAAY;AACpD,UAAMC,UAAU,GAAG,EAAE,GAAGf;AAAL,KAAnB;AACAe,IAAAA,UAAU,CAAEJ,IAAF,CAAV,GAAqBG,IAArB;AAEAZ,IAAAA,QAAQ,CAAEa,UAAF,CAAR;AACA,GALD;;AAOA,SACC,8BACGP,aAAa,CAACQ,GAAd,CAAqBL,IAAF,IAAY;AAChC,WACC,cAAC,mBAAD;AACC,MAAA,KAAK,EAAGX,MAAM,CAAEW,IAAF,CADf;AAEC,MAAA,KAAK,EAAGb,MAAM,CAAEa,IAAF,CAFf;AAGC,MAAA,GAAG,EAAI,yBAAyBA,IAAM,EAHvC;AAIC,MAAA,cAAc,EAAG,KAJlB;AAKC,MAAA,IAAI,EAAGA,IALR;AAMC,MAAA,QAAQ,EAAGE,oBAAoB,CAAEF,IAAF,CANhC;AAOC,MAAA,YAAY,EAAGR,YAPhB;AAQC,MAAA,IAAI,EAAGC,IARR;AASC,MAAA,kBAAkB,EAAGC,kBATtB;AAUC,MAAA,WAAW,EAAGC,WAVf;AAWC,MAAA,UAAU,EAAGC;AAXd,MADD;AAeA,GAhBC,CADH,CADD;AAqBA","sourcesContent":["/**\n * Internal dependencies\n */\nimport SpacingInputControl from './spacing-input-control';\nimport { ALL_SIDES, LABELS } from './utils';\n\nexport default function BoxInputControls( {\n\tvalues,\n\tsides,\n\tonChange,\n\tspacingSizes,\n\ttype,\n\tminimumCustomValue,\n\tonMouseOver,\n\tonMouseOut,\n} ) {\n\t// Filter sides if custom configuration provided, maintaining default order.\n\tconst filteredSides = sides?.length\n\t\t? ALL_SIDES.filter( ( side ) => sides.includes( side ) )\n\t\t: ALL_SIDES;\n\n\tconst createHandleOnChange = ( side ) => ( next ) => {\n\t\tconst nextValues = { ...values };\n\t\tnextValues[ side ] = next;\n\n\t\tonChange( nextValues );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ filteredSides.map( ( side ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<SpacingInputControl\n\t\t\t\t\t\tvalue={ values[ side ] }\n\t\t\t\t\t\tlabel={ LABELS[ side ] }\n\t\t\t\t\t\tkey={ `spacing-sizes-control-${ side }` }\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tside={ side }\n\t\t\t\t\t\tonChange={ createHandleOnChange( side ) }\n\t\t\t\t\t\tspacingSizes={ spacingSizes }\n\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\tminimumCustomValue={ minimumCustomValue }\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n"]}
@@ -56,7 +56,9 @@ export default function SpacingInputControl(_ref) {
56
56
  onChange,
57
57
  isMixed = false,
58
58
  type,
59
- minimumCustomValue
59
+ minimumCustomValue,
60
+ onMouseOver,
61
+ onMouseOut
60
62
  } = _ref;
61
63
  // Treat value as a preset value if the passed in value matches the value of one of the spacingSizes.
62
64
  value = getPresetValueFromCustomValue(value, spacingSizes);
@@ -166,6 +168,8 @@ export default function SpacingInputControl(_ref) {
166
168
  }),
167
169
  iconSize: 24
168
170
  }), showCustomValueControl && createElement(Fragment, null, createElement(UnitControl, {
171
+ onMouseOver: onMouseOver,
172
+ onMouseOut: onMouseOut,
169
173
  onChange: newSize => onChange(getNewCustomValue(newSize)),
170
174
  value: currentValue,
171
175
  units: units,
@@ -175,11 +179,10 @@ export default function SpacingInputControl(_ref) {
175
179
  label: ariaLabel,
176
180
  hideLabelFromVision: true,
177
181
  className: "components-spacing-sizes-control__custom-value-input",
178
- style: {
179
- gridColumn: '1'
180
- },
181
182
  size: '__unstable-large'
182
183
  }), createElement(RangeControl, {
184
+ onMouseOver: onMouseOver,
185
+ onMouseOut: onMouseOut,
183
186
  value: customRangeValue,
184
187
  min: 0,
185
188
  max: (_CUSTOM_VALUE_SETTING = (_CUSTOM_VALUE_SETTING2 = CUSTOM_VALUE_SETTINGS[selectedUnit]) === null || _CUSTOM_VALUE_SETTING2 === void 0 ? void 0 : _CUSTOM_VALUE_SETTING2.max) !== null && _CUSTOM_VALUE_SETTING !== void 0 ? _CUSTOM_VALUE_SETTING : 10,
@@ -188,6 +191,8 @@ export default function SpacingInputControl(_ref) {
188
191
  onChange: handleCustomValueSliderChange,
189
192
  className: "components-spacing-sizes-control__custom-value-range"
190
193
  })), showRangeControl && !showCustomValueControl && createElement(RangeControl, {
194
+ onMouseOver: onMouseOver,
195
+ onMouseOut: onMouseOut,
191
196
  className: "components-spacing-sizes-control__range-control",
192
197
  value: currentValue,
193
198
  onChange: newSize => onChange(getNewPresetValue(newSize)),
@@ -221,7 +226,9 @@ export default function SpacingInputControl(_ref) {
221
226
  label: ariaLabel,
222
227
  hideLabelFromVision: true,
223
228
  __nextUnconstrainedWidth: true,
224
- size: '__unstable-large'
229
+ size: '__unstable-large',
230
+ onMouseOver: onMouseOver,
231
+ onMouseOut: onMouseOut
225
232
  }));
226
233
  }
227
234
  //# sourceMappingURL=spacing-input-control.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/spacing-input-control.js"],"names":["classnames","useState","useMemo","useSelect","BaseControl","Button","RangeControl","CustomSelectControl","__experimentalUnitControl","UnitControl","__experimentalHStack","HStack","__experimentalUseCustomUnits","useCustomUnits","__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","__","sprintf","settings","useSetting","store","blockEditorStore","LABELS","getSliderValueFromPreset","getCustomValueFromPreset","getPresetValueFromCustomValue","isValueSpacingPreset","CUSTOM_VALUE_SETTINGS","px","max","steps","vw","vh","em","rm","SpacingInputControl","spacingSizes","value","side","onChange","isMixed","type","minimumCustomValue","selectListSizes","showRangeControl","length","disableCustomSpacingSizes","select","editorSettings","getSettings","showCustomValueControl","setShowCustomValueControl","undefined","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","currentValueHint","options","map","index","key","marks","label","ariaLabel","toLowerCase","showHint","gridColumn","event","nativeEvent","offsetX","find","option","selection","selectedItem"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBaseControl,\n\tButton,\n\tRangeControl,\n\tCustomSelectControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalHStack as HStack,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\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\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};\n\nexport default function SpacingInputControl( {\n\tspacingSizes,\n\tvalue,\n\tside,\n\tonChange,\n\tisMixed = false,\n\ttype,\n\tminimumCustomValue,\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 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 currentValueHint = ! isMixed\n\t\t? customTooltipContent( currentValue )\n\t\t: __( 'Mixed' );\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 ariaLabel = sprintf(\n\t\t// translators: 1: The side of the block being modified (top, bottom, left, etc.). 2. Type of spacing being modified (Padding, margin, etc)\n\t\t__( '%1$s %2$s' ),\n\t\tLABELS[ side ],\n\t\ttype?.toLowerCase()\n\t);\n\n\tconst showHint =\n\t\tshowRangeControl &&\n\t\t! showCustomValueControl &&\n\t\tcurrentValueHint !== undefined;\n\n\treturn (\n\t\t<>\n\t\t\t{ side !== 'all' && (\n\t\t\t\t<HStack className=\"components-spacing-sizes-control__side-labels\">\n\t\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__side-label\">\n\t\t\t\t\t\t{ LABELS[ side ] }\n\t\t\t\t\t</BaseControl.VisualLabel>\n\n\t\t\t\t\t{ showHint && (\n\t\t\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__hint-single\">\n\t\t\t\t\t\t\t{ currentValueHint }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t{ side === 'all' && showHint && (\n\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__hint-all\">\n\t\t\t\t\t{ currentValueHint }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t) }\n\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={ classnames( {\n\t\t\t\t\t\t'components-spacing-sizes-control__custom-toggle-all':\n\t\t\t\t\t\t\tside === 'all',\n\t\t\t\t\t\t'components-spacing-sizes-control__custom-toggle-single':\n\t\t\t\t\t\t\tside !== 'all',\n\t\t\t\t\t} ) }\n\t\t\t\t\ticonSize={ 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\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=\"components-spacing-sizes-control__custom-value-input\"\n\t\t\t\t\t\tstyle={ { gridColumn: '1' } }\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<RangeControl\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=\"components-spacing-sizes-control__custom-value-range\"\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\tclassName=\"components-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/>\n\t\t\t) }\n\t\t\t{ ! showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<CustomSelectControl\n\t\t\t\t\tclassName=\"components-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/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/spacing-input-control.js"],"names":["classnames","useState","useMemo","useSelect","BaseControl","Button","RangeControl","CustomSelectControl","__experimentalUnitControl","UnitControl","__experimentalHStack","HStack","__experimentalUseCustomUnits","useCustomUnits","__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","__","sprintf","settings","useSetting","store","blockEditorStore","LABELS","getSliderValueFromPreset","getCustomValueFromPreset","getPresetValueFromCustomValue","isValueSpacingPreset","CUSTOM_VALUE_SETTINGS","px","max","steps","vw","vh","em","rm","SpacingInputControl","spacingSizes","value","side","onChange","isMixed","type","minimumCustomValue","onMouseOver","onMouseOut","selectListSizes","showRangeControl","length","disableCustomSpacingSizes","select","editorSettings","getSettings","showCustomValueControl","setShowCustomValueControl","undefined","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","currentValueHint","options","map","index","key","marks","label","ariaLabel","toLowerCase","showHint","event","nativeEvent","offsetX","find","option","selection","selectedItem"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBaseControl,\n\tButton,\n\tRangeControl,\n\tCustomSelectControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalHStack as HStack,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\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\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};\n\nexport default function SpacingInputControl( {\n\tspacingSizes,\n\tvalue,\n\tside,\n\tonChange,\n\tisMixed = false,\n\ttype,\n\tminimumCustomValue,\n\tonMouseOver,\n\tonMouseOut,\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 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 currentValueHint = ! isMixed\n\t\t? customTooltipContent( currentValue )\n\t\t: __( 'Mixed' );\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 ariaLabel = sprintf(\n\t\t// translators: 1: The side of the block being modified (top, bottom, left, etc.). 2. Type of spacing being modified (Padding, margin, etc)\n\t\t__( '%1$s %2$s' ),\n\t\tLABELS[ side ],\n\t\ttype?.toLowerCase()\n\t);\n\n\tconst showHint =\n\t\tshowRangeControl &&\n\t\t! showCustomValueControl &&\n\t\tcurrentValueHint !== undefined;\n\n\treturn (\n\t\t<>\n\t\t\t{ side !== 'all' && (\n\t\t\t\t<HStack className=\"components-spacing-sizes-control__side-labels\">\n\t\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__side-label\">\n\t\t\t\t\t\t{ LABELS[ side ] }\n\t\t\t\t\t</BaseControl.VisualLabel>\n\n\t\t\t\t\t{ showHint && (\n\t\t\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__hint-single\">\n\t\t\t\t\t\t\t{ currentValueHint }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t{ side === 'all' && showHint && (\n\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__hint-all\">\n\t\t\t\t\t{ currentValueHint }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t) }\n\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={ classnames( {\n\t\t\t\t\t\t'components-spacing-sizes-control__custom-toggle-all':\n\t\t\t\t\t\t\tside === 'all',\n\t\t\t\t\t\t'components-spacing-sizes-control__custom-toggle-single':\n\t\t\t\t\t\t\tside !== 'all',\n\t\t\t\t\t} ) }\n\t\t\t\t\ticonSize={ 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\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=\"components-spacing-sizes-control__custom-value-input\"\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t/>\n\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\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=\"components-spacing-sizes-control__custom-value-range\"\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=\"components-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/>\n\t\t\t) }\n\t\t\t{ ! showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<CustomSelectControl\n\t\t\t\t\tclassName=\"components-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/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
@@ -475,7 +475,7 @@ class URLInput extends Component {
475
475
 
476
476
  if (!isFunction(renderSuggestions) && showSuggestions && !!suggestions.length) {
477
477
  return createElement(Popover, {
478
- position: "bottom",
478
+ placement: "bottom",
479
479
  focusOnMount: false
480
480
  }, createElement("div", _extends({}, suggestionsListProps, {
481
481
  className: classnames('block-editor-url-input__suggestions', `${className}__suggestions`)
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/url-input/index.js"],"names":["classnames","scrollIntoView","__","sprintf","_n","Component","createRef","UP","DOWN","ENTER","TAB","BaseControl","Button","Spinner","withSpokenMessages","Popover","compose","debounce","withInstanceId","withSafeTimeout","withSelect","isURL","store","blockEditorStore","isFunction","maybeFunc","URLInput","constructor","props","onChange","bind","onFocus","onKeyDown","selectLink","handleOnClick","bindSuggestionNode","autocompleteRef","inputRef","updateSuggestions","suggestionNodes","isUpdatingSuggestions","state","suggestions","showSuggestions","selectedSuggestion","suggestionsListboxId","suggestionOptionIdPrefix","componentDidUpdate","prevProps","value","__experimentalShowInitialSuggestions","scrollingIntoView","current","onlyScrollIfNeeded","setTimeout","disableSuggestions","length","componentDidMount","shouldShowInitialSuggestions","componentWillUnmount","suggestionsRequest","cancel","index","ref","__experimentalFetchLinkSuggestions","fetchLinkSuggestions","__experimentalHandleURLSuggestions","handleURLSuggestions","isInitialSuggestions","trim","setState","loading","request","then","debouncedSpeak","catch","event","inputValue","target","keyCode","selectionStart","preventDefault","setSelectionRange","onSubmit","suggestion","previousIndex","nextIndex","speak","url","focus","getDerivedStateFromProps","instanceId","shouldShowSuggestions","hasValue","render","renderControl","renderSuggestions","label","className","isFullWidth","placeholder","__experimentalRenderControl","inputId","controlProps","id","inputProps","required","type","role","undefined","__experimentalRenderSuggestions","suggestionsListProps","buildSuggestionItemProps","tabIndex","isLoading","handleSuggestionClick","map","title","select","getSettings"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport scrollIntoView from 'dom-scroll-into-view';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { Component, createRef } from '@wordpress/element';\nimport { UP, DOWN, ENTER, TAB } from '@wordpress/keycodes';\nimport {\n\tBaseControl,\n\tButton,\n\tSpinner,\n\twithSpokenMessages,\n\tPopover,\n} from '@wordpress/components';\nimport {\n\tcompose,\n\tdebounce,\n\twithInstanceId,\n\twithSafeTimeout,\n} from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Whether the argument is a function.\n *\n * @param {*} maybeFunc The argument to check.\n * @return {boolean} True if the argument is a function, false otherwise.\n */\nfunction isFunction( maybeFunc ) {\n\treturn typeof maybeFunc === 'function';\n}\n\nclass URLInput extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.onChange = this.onChange.bind( this );\n\t\tthis.onFocus = this.onFocus.bind( this );\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.selectLink = this.selectLink.bind( this );\n\t\tthis.handleOnClick = this.handleOnClick.bind( this );\n\t\tthis.bindSuggestionNode = this.bindSuggestionNode.bind( this );\n\t\tthis.autocompleteRef = props.autocompleteRef || createRef();\n\t\tthis.inputRef = createRef();\n\t\tthis.updateSuggestions = debounce(\n\t\t\tthis.updateSuggestions.bind( this ),\n\t\t\t200\n\t\t);\n\n\t\tthis.suggestionNodes = [];\n\n\t\tthis.isUpdatingSuggestions = false;\n\n\t\tthis.state = {\n\t\t\tsuggestions: [],\n\t\t\tshowSuggestions: false,\n\t\t\tselectedSuggestion: null,\n\n\t\t\tsuggestionsListboxId: '',\n\t\t\tsuggestionOptionIdPrefix: '',\n\t\t};\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tconst { showSuggestions, selectedSuggestion } = this.state;\n\t\tconst { value, __experimentalShowInitialSuggestions = false } =\n\t\t\tthis.props;\n\n\t\t// Only have to worry about scrolling selected suggestion into view\n\t\t// when already expanded.\n\t\tif (\n\t\t\tshowSuggestions &&\n\t\t\tselectedSuggestion !== null &&\n\t\t\tthis.suggestionNodes[ selectedSuggestion ] &&\n\t\t\t! this.scrollingIntoView\n\t\t) {\n\t\t\tthis.scrollingIntoView = true;\n\t\t\tscrollIntoView(\n\t\t\t\tthis.suggestionNodes[ selectedSuggestion ],\n\t\t\t\tthis.autocompleteRef.current,\n\t\t\t\t{\n\t\t\t\t\tonlyScrollIfNeeded: true,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tthis.props.setTimeout( () => {\n\t\t\t\tthis.scrollingIntoView = false;\n\t\t\t}, 100 );\n\t\t}\n\n\t\t// Update suggestions when the value changes.\n\t\tif (\n\t\t\tprevProps.value !== value &&\n\t\t\t! this.props.disableSuggestions &&\n\t\t\t! this.isUpdatingSuggestions\n\t\t) {\n\t\t\tif ( value?.length ) {\n\t\t\t\t// If the new value is not empty we need to update with suggestions for it.\n\t\t\t\tthis.updateSuggestions( value );\n\t\t\t} else if ( __experimentalShowInitialSuggestions ) {\n\t\t\t\t// If the new value is empty and we can show initial suggestions, then show initial suggestions.\n\t\t\t\tthis.updateSuggestions();\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.shouldShowInitialSuggestions() ) {\n\t\t\tthis.updateSuggestions();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.suggestionsRequest?.cancel?.();\n\t\tdelete this.suggestionsRequest;\n\t}\n\n\tbindSuggestionNode( index ) {\n\t\treturn ( ref ) => {\n\t\t\tthis.suggestionNodes[ index ] = ref;\n\t\t};\n\t}\n\n\tshouldShowInitialSuggestions() {\n\t\tconst { suggestions } = this.state;\n\t\tconst { __experimentalShowInitialSuggestions = false, value } =\n\t\t\tthis.props;\n\t\treturn (\n\t\t\t! this.isUpdatingSuggestions &&\n\t\t\t__experimentalShowInitialSuggestions &&\n\t\t\t! ( value && value.length ) &&\n\t\t\t! ( suggestions && suggestions.length )\n\t\t);\n\t}\n\n\tupdateSuggestions( value = '' ) {\n\t\tconst {\n\t\t\t__experimentalFetchLinkSuggestions: fetchLinkSuggestions,\n\t\t\t__experimentalHandleURLSuggestions: handleURLSuggestions,\n\t\t} = this.props;\n\n\t\tif ( ! fetchLinkSuggestions ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Initial suggestions may only show if there is no value\n\t\t// (note: this includes whitespace).\n\t\tconst isInitialSuggestions = ! value?.length;\n\n\t\t// Trim only now we've determined whether or not it originally had a \"length\"\n\t\t// (even if that value was all whitespace).\n\t\tvalue = value.trim();\n\n\t\t// Allow a suggestions request if:\n\t\t// - there are at least 2 characters in the search input (except manual searches where\n\t\t// search input length is not required to trigger a fetch)\n\t\t// - this is a direct entry (eg: a URL)\n\t\tif (\n\t\t\t! isInitialSuggestions &&\n\t\t\t( value.length < 2 || ( ! handleURLSuggestions && isURL( value ) ) )\n\t\t) {\n\t\t\tthis.setState( {\n\t\t\t\tshowSuggestions: false,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: false,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isUpdatingSuggestions = true;\n\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tloading: true,\n\t\t} );\n\n\t\tconst request = fetchLinkSuggestions( value, {\n\t\t\tisInitialSuggestions,\n\t\t} );\n\n\t\trequest\n\t\t\t.then( ( suggestions ) => {\n\t\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setState( {\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tloading: false,\n\t\t\t\t\tshowSuggestions: !! suggestions.length,\n\t\t\t\t} );\n\n\t\t\t\tif ( !! suggestions.length ) {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t/* translators: %s: number of results. */\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\t__( 'No results.' ),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthis.isUpdatingSuggestions = false;\n\t\t\t} )\n\t\t\t.catch( () => {\n\t\t\t\tif ( this.suggestionsRequest === request ) {\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tloading: false,\n\t\t\t\t\t} );\n\t\t\t\t\tthis.isUpdatingSuggestions = false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t// Note that this assignment is handled *before* the async search request\n\t\t// as a Promise always resolves on the next tick of the event loop.\n\t\tthis.suggestionsRequest = request;\n\t}\n\n\tonChange( event ) {\n\t\tconst inputValue = event.target.value;\n\n\t\tthis.props.onChange( inputValue );\n\t\tif ( ! this.props.disableSuggestions ) {\n\t\t\tthis.updateSuggestions( inputValue );\n\t\t}\n\t}\n\n\tonFocus() {\n\t\tconst { suggestions } = this.state;\n\t\tconst { disableSuggestions, value } = this.props;\n\n\t\t// When opening the link editor, if there's a value present, we want to load the suggestions pane with the results for this input search value\n\t\t// Don't re-run the suggestions on focus if there are already suggestions present (prevents searching again when tabbing between the input and buttons)\n\t\tif (\n\t\t\tvalue &&\n\t\t\t! disableSuggestions &&\n\t\t\t! this.isUpdatingSuggestions &&\n\t\t\t! ( suggestions && suggestions.length )\n\t\t) {\n\t\t\t// Ensure the suggestions are updated with the current input value.\n\t\t\tthis.updateSuggestions( value );\n\t\t}\n\t}\n\n\tonKeyDown( event ) {\n\t\tconst { showSuggestions, selectedSuggestion, suggestions, loading } =\n\t\t\tthis.state;\n\n\t\t// If the suggestions are not shown or loading, we shouldn't handle the arrow keys\n\t\t// We shouldn't preventDefault to allow block arrow keys navigation.\n\t\tif ( ! showSuggestions || ! suggestions.length || loading ) {\n\t\t\t// In the Windows version of Firefox the up and down arrows don't move the caret\n\t\t\t// within an input field like they do for Mac Firefox/Chrome/Safari. This causes\n\t\t\t// a form of focus trapping that is disruptive to the user experience. This disruption\n\t\t\t// only happens if the caret is not in the first or last position in the text input.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t// When UP is pressed, if the caret is at the start of the text, move it to the 0\n\t\t\t\t// position.\n\t\t\t\tcase UP: {\n\t\t\t\t\tif ( 0 !== event.target.selectionStart ) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to position 0.\n\t\t\t\t\t\tevent.target.setSelectionRange( 0, 0 );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// When DOWN is pressed, if the caret is not at the end of the text, move it to the\n\t\t\t\t// last position.\n\t\t\t\tcase DOWN: {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.props.value.length !== event.target.selectionStart\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to the last position.\n\t\t\t\t\t\tevent.target.setSelectionRange(\n\t\t\t\t\t\t\tthis.props.value.length,\n\t\t\t\t\t\t\tthis.props.value.length\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// Submitting while loading should trigger onSubmit.\n\t\t\t\tcase ENTER: {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst suggestion =\n\t\t\tthis.state.suggestions[ this.state.selectedSuggestion ];\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase UP: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst previousIndex = ! selectedSuggestion\n\t\t\t\t\t? suggestions.length - 1\n\t\t\t\t\t: selectedSuggestion - 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: previousIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase DOWN: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex =\n\t\t\t\t\tselectedSuggestion === null ||\n\t\t\t\t\tselectedSuggestion === suggestions.length - 1\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: selectedSuggestion + 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: nextIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TAB: {\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\t\t\t\t\t// Announce a link has been selected when tabbing away from the input field.\n\t\t\t\t\tthis.props.speak( __( 'Link selected.' ) );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ENTER: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tthis.props.onSubmit( suggestion, event );\n\t\t\t\t\t}\n\t\t\t\t} else if ( this.props.onSubmit ) {\n\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tselectLink( suggestion ) {\n\t\tthis.props.onChange( suggestion.url, suggestion );\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tshowSuggestions: false,\n\t\t} );\n\t}\n\n\thandleOnClick( suggestion ) {\n\t\tthis.selectLink( suggestion );\n\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\tthis.inputRef.current.focus();\n\t}\n\n\tstatic getDerivedStateFromProps(\n\t\t{\n\t\t\tvalue,\n\t\t\tinstanceId,\n\t\t\tdisableSuggestions,\n\t\t\t__experimentalShowInitialSuggestions = false,\n\t\t},\n\t\t{ showSuggestions }\n\t) {\n\t\tlet shouldShowSuggestions = showSuggestions;\n\n\t\tconst hasValue = value && value.length;\n\n\t\tif ( ! __experimentalShowInitialSuggestions && ! hasValue ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\tif ( disableSuggestions === true ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\treturn {\n\t\t\tshowSuggestions: shouldShowSuggestions,\n\t\t\tsuggestionsListboxId: `block-editor-url-input-suggestions-${ instanceId }`,\n\t\t\tsuggestionOptionIdPrefix: `block-editor-url-input-suggestion-${ instanceId }`,\n\t\t};\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ this.renderControl() }\n\t\t\t\t{ this.renderSuggestions() }\n\t\t\t</>\n\t\t);\n\t}\n\n\trenderControl() {\n\t\tconst {\n\t\t\tlabel = null,\n\t\t\tclassName,\n\t\t\tisFullWidth,\n\t\t\tinstanceId,\n\t\t\tplaceholder = __( 'Paste URL or type to search' ),\n\t\t\t__experimentalRenderControl: renderControl,\n\t\t\tvalue = '',\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tloading,\n\t\t\tshowSuggestions,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t} = this.state;\n\n\t\tconst inputId = `url-input-control-${ instanceId }`;\n\n\t\tconst controlProps = {\n\t\t\tid: inputId, // Passes attribute to label for the for attribute\n\t\t\tlabel,\n\t\t\tclassName: classnames( 'block-editor-url-input', className, {\n\t\t\t\t'is-full-width': isFullWidth,\n\t\t\t} ),\n\t\t};\n\n\t\tconst inputProps = {\n\t\t\tid: inputId,\n\t\t\tvalue,\n\t\t\trequired: true,\n\t\t\tclassName: 'block-editor-url-input__input',\n\t\t\ttype: 'text',\n\t\t\tonChange: this.onChange,\n\t\t\tonFocus: this.onFocus,\n\t\t\tplaceholder,\n\t\t\tonKeyDown: this.onKeyDown,\n\t\t\trole: 'combobox',\n\t\t\t'aria-label': label ? undefined : __( 'URL' ), // Ensure input always has an accessible label\n\t\t\t'aria-expanded': showSuggestions,\n\t\t\t'aria-autocomplete': 'list',\n\t\t\t'aria-controls': suggestionsListboxId,\n\t\t\t'aria-activedescendant':\n\t\t\t\tselectedSuggestion !== null\n\t\t\t\t\t? `${ suggestionOptionIdPrefix }-${ selectedSuggestion }`\n\t\t\t\t\t: undefined,\n\t\t\tref: this.inputRef,\n\t\t};\n\n\t\tif ( renderControl ) {\n\t\t\treturn renderControl( controlProps, inputProps, loading );\n\t\t}\n\n\t\treturn (\n\t\t\t<BaseControl { ...controlProps }>\n\t\t\t\t<input { ...inputProps } />\n\t\t\t\t{ loading && <Spinner /> }\n\t\t\t</BaseControl>\n\t\t);\n\t}\n\n\trenderSuggestions() {\n\t\tconst {\n\t\t\tclassName,\n\t\t\t__experimentalRenderSuggestions: renderSuggestions,\n\t\t\tvalue = '',\n\t\t\t__experimentalShowInitialSuggestions = false,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tshowSuggestions,\n\t\t\tsuggestions,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t\tloading,\n\t\t} = this.state;\n\n\t\tconst suggestionsListProps = {\n\t\t\tid: suggestionsListboxId,\n\t\t\tref: this.autocompleteRef,\n\t\t\trole: 'listbox',\n\t\t};\n\n\t\tconst buildSuggestionItemProps = ( suggestion, index ) => {\n\t\t\treturn {\n\t\t\t\trole: 'option',\n\t\t\t\ttabIndex: '-1',\n\t\t\t\tid: `${ suggestionOptionIdPrefix }-${ index }`,\n\t\t\t\tref: this.bindSuggestionNode( index ),\n\t\t\t\t'aria-selected': index === selectedSuggestion,\n\t\t\t};\n\t\t};\n\n\t\tif (\n\t\t\tisFunction( renderSuggestions ) &&\n\t\t\tshowSuggestions &&\n\t\t\t!! suggestions.length\n\t\t) {\n\t\t\treturn renderSuggestions( {\n\t\t\t\tsuggestions,\n\t\t\t\tselectedSuggestion,\n\t\t\t\tsuggestionsListProps,\n\t\t\t\tbuildSuggestionItemProps,\n\t\t\t\tisLoading: loading,\n\t\t\t\thandleSuggestionClick: this.handleOnClick,\n\t\t\t\tisInitialSuggestions:\n\t\t\t\t\t__experimentalShowInitialSuggestions &&\n\t\t\t\t\t! ( value && value.length ),\n\t\t\t} );\n\t\t}\n\n\t\tif (\n\t\t\t! isFunction( renderSuggestions ) &&\n\t\t\tshowSuggestions &&\n\t\t\t!! suggestions.length\n\t\t) {\n\t\t\treturn (\n\t\t\t\t<Popover position=\"bottom\" focusOnMount={ false }>\n\t\t\t\t\t<div\n\t\t\t\t\t\t{ ...suggestionsListProps }\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-url-input__suggestions',\n\t\t\t\t\t\t\t`${ className }__suggestions`\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ suggestions.map( ( suggestion, index ) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t{ ...buildSuggestionItemProps(\n\t\t\t\t\t\t\t\t\tsuggestion,\n\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tkey={ suggestion.id }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'block-editor-url-input__suggestion',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'is-selected':\n\t\t\t\t\t\t\t\t\t\t\tindex === selectedSuggestion,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tthis.handleOnClick( suggestion )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ suggestion.title }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</div>\n\t\t\t\t</Popover>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-input/README.md\n */\nexport default compose(\n\twithSafeTimeout,\n\twithSpokenMessages,\n\twithInstanceId,\n\twithSelect( ( select, props ) => {\n\t\t// If a link suggestions handler is already provided then\n\t\t// bail.\n\t\tif ( isFunction( props.__experimentalFetchLinkSuggestions ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\t__experimentalFetchLinkSuggestions:\n\t\t\t\tgetSettings().__experimentalFetchLinkSuggestions,\n\t\t};\n\t} )\n)( URLInput );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/url-input/index.js"],"names":["classnames","scrollIntoView","__","sprintf","_n","Component","createRef","UP","DOWN","ENTER","TAB","BaseControl","Button","Spinner","withSpokenMessages","Popover","compose","debounce","withInstanceId","withSafeTimeout","withSelect","isURL","store","blockEditorStore","isFunction","maybeFunc","URLInput","constructor","props","onChange","bind","onFocus","onKeyDown","selectLink","handleOnClick","bindSuggestionNode","autocompleteRef","inputRef","updateSuggestions","suggestionNodes","isUpdatingSuggestions","state","suggestions","showSuggestions","selectedSuggestion","suggestionsListboxId","suggestionOptionIdPrefix","componentDidUpdate","prevProps","value","__experimentalShowInitialSuggestions","scrollingIntoView","current","onlyScrollIfNeeded","setTimeout","disableSuggestions","length","componentDidMount","shouldShowInitialSuggestions","componentWillUnmount","suggestionsRequest","cancel","index","ref","__experimentalFetchLinkSuggestions","fetchLinkSuggestions","__experimentalHandleURLSuggestions","handleURLSuggestions","isInitialSuggestions","trim","setState","loading","request","then","debouncedSpeak","catch","event","inputValue","target","keyCode","selectionStart","preventDefault","setSelectionRange","onSubmit","suggestion","previousIndex","nextIndex","speak","url","focus","getDerivedStateFromProps","instanceId","shouldShowSuggestions","hasValue","render","renderControl","renderSuggestions","label","className","isFullWidth","placeholder","__experimentalRenderControl","inputId","controlProps","id","inputProps","required","type","role","undefined","__experimentalRenderSuggestions","suggestionsListProps","buildSuggestionItemProps","tabIndex","isLoading","handleSuggestionClick","map","title","select","getSettings"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport scrollIntoView from 'dom-scroll-into-view';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { Component, createRef } from '@wordpress/element';\nimport { UP, DOWN, ENTER, TAB } from '@wordpress/keycodes';\nimport {\n\tBaseControl,\n\tButton,\n\tSpinner,\n\twithSpokenMessages,\n\tPopover,\n} from '@wordpress/components';\nimport {\n\tcompose,\n\tdebounce,\n\twithInstanceId,\n\twithSafeTimeout,\n} from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Whether the argument is a function.\n *\n * @param {*} maybeFunc The argument to check.\n * @return {boolean} True if the argument is a function, false otherwise.\n */\nfunction isFunction( maybeFunc ) {\n\treturn typeof maybeFunc === 'function';\n}\n\nclass URLInput extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.onChange = this.onChange.bind( this );\n\t\tthis.onFocus = this.onFocus.bind( this );\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.selectLink = this.selectLink.bind( this );\n\t\tthis.handleOnClick = this.handleOnClick.bind( this );\n\t\tthis.bindSuggestionNode = this.bindSuggestionNode.bind( this );\n\t\tthis.autocompleteRef = props.autocompleteRef || createRef();\n\t\tthis.inputRef = createRef();\n\t\tthis.updateSuggestions = debounce(\n\t\t\tthis.updateSuggestions.bind( this ),\n\t\t\t200\n\t\t);\n\n\t\tthis.suggestionNodes = [];\n\n\t\tthis.isUpdatingSuggestions = false;\n\n\t\tthis.state = {\n\t\t\tsuggestions: [],\n\t\t\tshowSuggestions: false,\n\t\t\tselectedSuggestion: null,\n\n\t\t\tsuggestionsListboxId: '',\n\t\t\tsuggestionOptionIdPrefix: '',\n\t\t};\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tconst { showSuggestions, selectedSuggestion } = this.state;\n\t\tconst { value, __experimentalShowInitialSuggestions = false } =\n\t\t\tthis.props;\n\n\t\t// Only have to worry about scrolling selected suggestion into view\n\t\t// when already expanded.\n\t\tif (\n\t\t\tshowSuggestions &&\n\t\t\tselectedSuggestion !== null &&\n\t\t\tthis.suggestionNodes[ selectedSuggestion ] &&\n\t\t\t! this.scrollingIntoView\n\t\t) {\n\t\t\tthis.scrollingIntoView = true;\n\t\t\tscrollIntoView(\n\t\t\t\tthis.suggestionNodes[ selectedSuggestion ],\n\t\t\t\tthis.autocompleteRef.current,\n\t\t\t\t{\n\t\t\t\t\tonlyScrollIfNeeded: true,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tthis.props.setTimeout( () => {\n\t\t\t\tthis.scrollingIntoView = false;\n\t\t\t}, 100 );\n\t\t}\n\n\t\t// Update suggestions when the value changes.\n\t\tif (\n\t\t\tprevProps.value !== value &&\n\t\t\t! this.props.disableSuggestions &&\n\t\t\t! this.isUpdatingSuggestions\n\t\t) {\n\t\t\tif ( value?.length ) {\n\t\t\t\t// If the new value is not empty we need to update with suggestions for it.\n\t\t\t\tthis.updateSuggestions( value );\n\t\t\t} else if ( __experimentalShowInitialSuggestions ) {\n\t\t\t\t// If the new value is empty and we can show initial suggestions, then show initial suggestions.\n\t\t\t\tthis.updateSuggestions();\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.shouldShowInitialSuggestions() ) {\n\t\t\tthis.updateSuggestions();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.suggestionsRequest?.cancel?.();\n\t\tdelete this.suggestionsRequest;\n\t}\n\n\tbindSuggestionNode( index ) {\n\t\treturn ( ref ) => {\n\t\t\tthis.suggestionNodes[ index ] = ref;\n\t\t};\n\t}\n\n\tshouldShowInitialSuggestions() {\n\t\tconst { suggestions } = this.state;\n\t\tconst { __experimentalShowInitialSuggestions = false, value } =\n\t\t\tthis.props;\n\t\treturn (\n\t\t\t! this.isUpdatingSuggestions &&\n\t\t\t__experimentalShowInitialSuggestions &&\n\t\t\t! ( value && value.length ) &&\n\t\t\t! ( suggestions && suggestions.length )\n\t\t);\n\t}\n\n\tupdateSuggestions( value = '' ) {\n\t\tconst {\n\t\t\t__experimentalFetchLinkSuggestions: fetchLinkSuggestions,\n\t\t\t__experimentalHandleURLSuggestions: handleURLSuggestions,\n\t\t} = this.props;\n\n\t\tif ( ! fetchLinkSuggestions ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Initial suggestions may only show if there is no value\n\t\t// (note: this includes whitespace).\n\t\tconst isInitialSuggestions = ! value?.length;\n\n\t\t// Trim only now we've determined whether or not it originally had a \"length\"\n\t\t// (even if that value was all whitespace).\n\t\tvalue = value.trim();\n\n\t\t// Allow a suggestions request if:\n\t\t// - there are at least 2 characters in the search input (except manual searches where\n\t\t// search input length is not required to trigger a fetch)\n\t\t// - this is a direct entry (eg: a URL)\n\t\tif (\n\t\t\t! isInitialSuggestions &&\n\t\t\t( value.length < 2 || ( ! handleURLSuggestions && isURL( value ) ) )\n\t\t) {\n\t\t\tthis.setState( {\n\t\t\t\tshowSuggestions: false,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: false,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isUpdatingSuggestions = true;\n\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tloading: true,\n\t\t} );\n\n\t\tconst request = fetchLinkSuggestions( value, {\n\t\t\tisInitialSuggestions,\n\t\t} );\n\n\t\trequest\n\t\t\t.then( ( suggestions ) => {\n\t\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setState( {\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tloading: false,\n\t\t\t\t\tshowSuggestions: !! suggestions.length,\n\t\t\t\t} );\n\n\t\t\t\tif ( !! suggestions.length ) {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t/* translators: %s: number of results. */\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\t__( 'No results.' ),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthis.isUpdatingSuggestions = false;\n\t\t\t} )\n\t\t\t.catch( () => {\n\t\t\t\tif ( this.suggestionsRequest === request ) {\n\t\t\t\t\tthis.setState( {\n\t\t\t\t\t\tloading: false,\n\t\t\t\t\t} );\n\t\t\t\t\tthis.isUpdatingSuggestions = false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t// Note that this assignment is handled *before* the async search request\n\t\t// as a Promise always resolves on the next tick of the event loop.\n\t\tthis.suggestionsRequest = request;\n\t}\n\n\tonChange( event ) {\n\t\tconst inputValue = event.target.value;\n\n\t\tthis.props.onChange( inputValue );\n\t\tif ( ! this.props.disableSuggestions ) {\n\t\t\tthis.updateSuggestions( inputValue );\n\t\t}\n\t}\n\n\tonFocus() {\n\t\tconst { suggestions } = this.state;\n\t\tconst { disableSuggestions, value } = this.props;\n\n\t\t// When opening the link editor, if there's a value present, we want to load the suggestions pane with the results for this input search value\n\t\t// Don't re-run the suggestions on focus if there are already suggestions present (prevents searching again when tabbing between the input and buttons)\n\t\tif (\n\t\t\tvalue &&\n\t\t\t! disableSuggestions &&\n\t\t\t! this.isUpdatingSuggestions &&\n\t\t\t! ( suggestions && suggestions.length )\n\t\t) {\n\t\t\t// Ensure the suggestions are updated with the current input value.\n\t\t\tthis.updateSuggestions( value );\n\t\t}\n\t}\n\n\tonKeyDown( event ) {\n\t\tconst { showSuggestions, selectedSuggestion, suggestions, loading } =\n\t\t\tthis.state;\n\n\t\t// If the suggestions are not shown or loading, we shouldn't handle the arrow keys\n\t\t// We shouldn't preventDefault to allow block arrow keys navigation.\n\t\tif ( ! showSuggestions || ! suggestions.length || loading ) {\n\t\t\t// In the Windows version of Firefox the up and down arrows don't move the caret\n\t\t\t// within an input field like they do for Mac Firefox/Chrome/Safari. This causes\n\t\t\t// a form of focus trapping that is disruptive to the user experience. This disruption\n\t\t\t// only happens if the caret is not in the first or last position in the text input.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t// When UP is pressed, if the caret is at the start of the text, move it to the 0\n\t\t\t\t// position.\n\t\t\t\tcase UP: {\n\t\t\t\t\tif ( 0 !== event.target.selectionStart ) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to position 0.\n\t\t\t\t\t\tevent.target.setSelectionRange( 0, 0 );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// When DOWN is pressed, if the caret is not at the end of the text, move it to the\n\t\t\t\t// last position.\n\t\t\t\tcase DOWN: {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.props.value.length !== event.target.selectionStart\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to the last position.\n\t\t\t\t\t\tevent.target.setSelectionRange(\n\t\t\t\t\t\t\tthis.props.value.length,\n\t\t\t\t\t\t\tthis.props.value.length\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// Submitting while loading should trigger onSubmit.\n\t\t\t\tcase ENTER: {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst suggestion =\n\t\t\tthis.state.suggestions[ this.state.selectedSuggestion ];\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase UP: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst previousIndex = ! selectedSuggestion\n\t\t\t\t\t? suggestions.length - 1\n\t\t\t\t\t: selectedSuggestion - 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: previousIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase DOWN: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex =\n\t\t\t\t\tselectedSuggestion === null ||\n\t\t\t\t\tselectedSuggestion === suggestions.length - 1\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: selectedSuggestion + 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: nextIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TAB: {\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\t\t\t\t\t// Announce a link has been selected when tabbing away from the input field.\n\t\t\t\t\tthis.props.speak( __( 'Link selected.' ) );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ENTER: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tthis.props.onSubmit( suggestion, event );\n\t\t\t\t\t}\n\t\t\t\t} else if ( this.props.onSubmit ) {\n\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tselectLink( suggestion ) {\n\t\tthis.props.onChange( suggestion.url, suggestion );\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tshowSuggestions: false,\n\t\t} );\n\t}\n\n\thandleOnClick( suggestion ) {\n\t\tthis.selectLink( suggestion );\n\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\tthis.inputRef.current.focus();\n\t}\n\n\tstatic getDerivedStateFromProps(\n\t\t{\n\t\t\tvalue,\n\t\t\tinstanceId,\n\t\t\tdisableSuggestions,\n\t\t\t__experimentalShowInitialSuggestions = false,\n\t\t},\n\t\t{ showSuggestions }\n\t) {\n\t\tlet shouldShowSuggestions = showSuggestions;\n\n\t\tconst hasValue = value && value.length;\n\n\t\tif ( ! __experimentalShowInitialSuggestions && ! hasValue ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\tif ( disableSuggestions === true ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\treturn {\n\t\t\tshowSuggestions: shouldShowSuggestions,\n\t\t\tsuggestionsListboxId: `block-editor-url-input-suggestions-${ instanceId }`,\n\t\t\tsuggestionOptionIdPrefix: `block-editor-url-input-suggestion-${ instanceId }`,\n\t\t};\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ this.renderControl() }\n\t\t\t\t{ this.renderSuggestions() }\n\t\t\t</>\n\t\t);\n\t}\n\n\trenderControl() {\n\t\tconst {\n\t\t\tlabel = null,\n\t\t\tclassName,\n\t\t\tisFullWidth,\n\t\t\tinstanceId,\n\t\t\tplaceholder = __( 'Paste URL or type to search' ),\n\t\t\t__experimentalRenderControl: renderControl,\n\t\t\tvalue = '',\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tloading,\n\t\t\tshowSuggestions,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t} = this.state;\n\n\t\tconst inputId = `url-input-control-${ instanceId }`;\n\n\t\tconst controlProps = {\n\t\t\tid: inputId, // Passes attribute to label for the for attribute\n\t\t\tlabel,\n\t\t\tclassName: classnames( 'block-editor-url-input', className, {\n\t\t\t\t'is-full-width': isFullWidth,\n\t\t\t} ),\n\t\t};\n\n\t\tconst inputProps = {\n\t\t\tid: inputId,\n\t\t\tvalue,\n\t\t\trequired: true,\n\t\t\tclassName: 'block-editor-url-input__input',\n\t\t\ttype: 'text',\n\t\t\tonChange: this.onChange,\n\t\t\tonFocus: this.onFocus,\n\t\t\tplaceholder,\n\t\t\tonKeyDown: this.onKeyDown,\n\t\t\trole: 'combobox',\n\t\t\t'aria-label': label ? undefined : __( 'URL' ), // Ensure input always has an accessible label\n\t\t\t'aria-expanded': showSuggestions,\n\t\t\t'aria-autocomplete': 'list',\n\t\t\t'aria-controls': suggestionsListboxId,\n\t\t\t'aria-activedescendant':\n\t\t\t\tselectedSuggestion !== null\n\t\t\t\t\t? `${ suggestionOptionIdPrefix }-${ selectedSuggestion }`\n\t\t\t\t\t: undefined,\n\t\t\tref: this.inputRef,\n\t\t};\n\n\t\tif ( renderControl ) {\n\t\t\treturn renderControl( controlProps, inputProps, loading );\n\t\t}\n\n\t\treturn (\n\t\t\t<BaseControl { ...controlProps }>\n\t\t\t\t<input { ...inputProps } />\n\t\t\t\t{ loading && <Spinner /> }\n\t\t\t</BaseControl>\n\t\t);\n\t}\n\n\trenderSuggestions() {\n\t\tconst {\n\t\t\tclassName,\n\t\t\t__experimentalRenderSuggestions: renderSuggestions,\n\t\t\tvalue = '',\n\t\t\t__experimentalShowInitialSuggestions = false,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tshowSuggestions,\n\t\t\tsuggestions,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t\tloading,\n\t\t} = this.state;\n\n\t\tconst suggestionsListProps = {\n\t\t\tid: suggestionsListboxId,\n\t\t\tref: this.autocompleteRef,\n\t\t\trole: 'listbox',\n\t\t};\n\n\t\tconst buildSuggestionItemProps = ( suggestion, index ) => {\n\t\t\treturn {\n\t\t\t\trole: 'option',\n\t\t\t\ttabIndex: '-1',\n\t\t\t\tid: `${ suggestionOptionIdPrefix }-${ index }`,\n\t\t\t\tref: this.bindSuggestionNode( index ),\n\t\t\t\t'aria-selected': index === selectedSuggestion,\n\t\t\t};\n\t\t};\n\n\t\tif (\n\t\t\tisFunction( renderSuggestions ) &&\n\t\t\tshowSuggestions &&\n\t\t\t!! suggestions.length\n\t\t) {\n\t\t\treturn renderSuggestions( {\n\t\t\t\tsuggestions,\n\t\t\t\tselectedSuggestion,\n\t\t\t\tsuggestionsListProps,\n\t\t\t\tbuildSuggestionItemProps,\n\t\t\t\tisLoading: loading,\n\t\t\t\thandleSuggestionClick: this.handleOnClick,\n\t\t\t\tisInitialSuggestions:\n\t\t\t\t\t__experimentalShowInitialSuggestions &&\n\t\t\t\t\t! ( value && value.length ),\n\t\t\t} );\n\t\t}\n\n\t\tif (\n\t\t\t! isFunction( renderSuggestions ) &&\n\t\t\tshowSuggestions &&\n\t\t\t!! suggestions.length\n\t\t) {\n\t\t\treturn (\n\t\t\t\t<Popover placement=\"bottom\" focusOnMount={ false }>\n\t\t\t\t\t<div\n\t\t\t\t\t\t{ ...suggestionsListProps }\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-url-input__suggestions',\n\t\t\t\t\t\t\t`${ className }__suggestions`\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ suggestions.map( ( suggestion, index ) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t{ ...buildSuggestionItemProps(\n\t\t\t\t\t\t\t\t\tsuggestion,\n\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tkey={ suggestion.id }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'block-editor-url-input__suggestion',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'is-selected':\n\t\t\t\t\t\t\t\t\t\t\tindex === selectedSuggestion,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tthis.handleOnClick( suggestion )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ suggestion.title }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</div>\n\t\t\t\t</Popover>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-input/README.md\n */\nexport default compose(\n\twithSafeTimeout,\n\twithSpokenMessages,\n\twithInstanceId,\n\twithSelect( ( select, props ) => {\n\t\t// If a link suggestions handler is already provided then\n\t\t// bail.\n\t\tif ( isFunction( props.__experimentalFetchLinkSuggestions ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\t__experimentalFetchLinkSuggestions:\n\t\t\t\tgetSettings().__experimentalFetchLinkSuggestions,\n\t\t};\n\t} )\n)( URLInput );\n"]}
@@ -6,24 +6,51 @@ import { createElement } from "@wordpress/element";
6
6
  */
7
7
  import { __ } from '@wordpress/i18n';
8
8
  import { useState } from '@wordpress/element';
9
- import { Button, Popover } from '@wordpress/components';
9
+ import { Button, Popover, __experimentalPopoverPositionToPlacement as positionToPlacement } from '@wordpress/components';
10
10
  import { chevronDown } from '@wordpress/icons';
11
+ import deprecated from '@wordpress/deprecated';
11
12
  /**
12
13
  * Internal dependencies
13
14
  */
14
15
 
15
16
  import LinkViewer from './link-viewer';
16
17
  import LinkEditor from './link-editor';
18
+ const DEFAULT_PLACEMENT = 'bottom';
17
19
 
18
20
  function URLPopover(_ref) {
19
21
  let {
20
22
  additionalControls,
21
23
  children,
22
24
  renderSettings,
23
- position = 'bottom center',
25
+ // The DEFAULT_PLACEMENT value is assigned inside the function's body
26
+ placement,
24
27
  focusOnMount = 'firstElement',
28
+ // Deprecated
29
+ position,
30
+ // Rest
25
31
  ...popoverProps
26
32
  } = _ref;
33
+
34
+ if (position !== undefined) {
35
+ deprecated('`position` prop in wp.blockEditor.URLPopover', {
36
+ since: '6.2',
37
+ alternative: '`placement` prop'
38
+ });
39
+ } // Compute popover's placement:
40
+ // - give priority to `placement` prop, if defined
41
+ // - otherwise, compute it from the legacy `position` prop (if defined)
42
+ // - finally, fallback to the DEFAULT_PLACEMENT.
43
+
44
+
45
+ let computedPlacement;
46
+
47
+ if (placement !== undefined) {
48
+ computedPlacement = placement;
49
+ } else if (position !== undefined) {
50
+ computedPlacement = positionToPlacement(position);
51
+ }
52
+
53
+ computedPlacement = computedPlacement || DEFAULT_PLACEMENT;
27
54
  const [isSettingsExpanded, setIsSettingsExpanded] = useState(false);
28
55
  const showSettings = !!renderSettings && isSettingsExpanded;
29
56
 
@@ -34,7 +61,7 @@ function URLPopover(_ref) {
34
61
  return createElement(Popover, _extends({
35
62
  className: "block-editor-url-popover",
36
63
  focusOnMount: focusOnMount,
37
- position: position,
64
+ placement: computedPlacement,
38
65
  shift: true
39
66
  }, popoverProps), createElement("div", {
40
67
  className: "block-editor-url-popover__input-container"
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/url-popover/index.js"],"names":["__","useState","Button","Popover","chevronDown","LinkViewer","LinkEditor","URLPopover","additionalControls","children","renderSettings","position","focusOnMount","popoverProps","isSettingsExpanded","setIsSettingsExpanded","showSettings","toggleSettingsVisibility"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,MAAT,EAAiBC,OAAjB,QAAgC,uBAAhC;AACA,SAASC,WAAT,QAA4B,kBAA5B;AAEA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,eAAvB;AACA,OAAOC,UAAP,MAAuB,eAAvB;;AAEA,SAASC,UAAT,OAOI;AAAA,MAPiB;AACpBC,IAAAA,kBADoB;AAEpBC,IAAAA,QAFoB;AAGpBC,IAAAA,cAHoB;AAIpBC,IAAAA,QAAQ,GAAG,eAJS;AAKpBC,IAAAA,YAAY,GAAG,cALK;AAMpB,OAAGC;AANiB,GAOjB;AACH,QAAM,CAAEC,kBAAF,EAAsBC,qBAAtB,IAAgDd,QAAQ,CAAE,KAAF,CAA9D;AAEA,QAAMe,YAAY,GAAG,CAAC,CAAEN,cAAH,IAAqBI,kBAA1C;;AAEA,QAAMG,wBAAwB,GAAG,MAAM;AACtCF,IAAAA,qBAAqB,CAAE,CAAED,kBAAJ,CAArB;AACA,GAFD;;AAIA,SACC,cAAC,OAAD;AACC,IAAA,SAAS,EAAC,0BADX;AAEC,IAAA,YAAY,EAAGF,YAFhB;AAGC,IAAA,QAAQ,EAAGD,QAHZ;AAIC,IAAA,KAAK;AAJN,KAKME,YALN,GAOC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGJ,QADH,EAEG,CAAC,CAAEC,cAAH,IACD,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,2CADX;AAEC,IAAA,IAAI,EAAGN,WAFR;AAGC,IAAA,KAAK,EAAGJ,EAAE,CAAE,eAAF,CAHX;AAIC,IAAA,OAAO,EAAGiB,wBAJX;AAKC,qBAAgBH;AALjB,IAHF,CADD,EAaGE,YAAY,IACb;AAAK,IAAA,SAAS,EAAC;AAAf,KACGN,cAAc,EADjB,CAdF,CAPD,EA0BGF,kBAAkB,IAAI,CAAEQ,YAAxB,IACD;AAAK,IAAA,SAAS,EAAC;AAAf,KACGR,kBADH,CA3BF,CADD;AAkCA;;AAEDD,UAAU,CAACD,UAAX,GAAwBA,UAAxB;AAEAC,UAAU,CAACF,UAAX,GAAwBA,UAAxB;AAEA;AACA;AACA;;AACA,eAAeE,UAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { Button, Popover } from '@wordpress/components';\nimport { chevronDown } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport LinkViewer from './link-viewer';\nimport LinkEditor from './link-editor';\n\nfunction URLPopover( {\n\tadditionalControls,\n\tchildren,\n\trenderSettings,\n\tposition = 'bottom center',\n\tfocusOnMount = 'firstElement',\n\t...popoverProps\n} ) {\n\tconst [ isSettingsExpanded, setIsSettingsExpanded ] = useState( false );\n\n\tconst showSettings = !! renderSettings && isSettingsExpanded;\n\n\tconst toggleSettingsVisibility = () => {\n\t\tsetIsSettingsExpanded( ! isSettingsExpanded );\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tclassName=\"block-editor-url-popover\"\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\tposition={ position }\n\t\t\tshift\n\t\t\t{ ...popoverProps }\n\t\t>\n\t\t\t<div className=\"block-editor-url-popover__input-container\">\n\t\t\t\t<div className=\"block-editor-url-popover__row\">\n\t\t\t\t\t{ children }\n\t\t\t\t\t{ !! renderSettings && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"block-editor-url-popover__settings-toggle\"\n\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\tlabel={ __( 'Link settings' ) }\n\t\t\t\t\t\t\tonClick={ toggleSettingsVisibility }\n\t\t\t\t\t\t\taria-expanded={ isSettingsExpanded }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t{ showSettings && (\n\t\t\t\t\t<div className=\"block-editor-url-popover__row block-editor-url-popover__settings\">\n\t\t\t\t\t\t{ renderSettings() }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ additionalControls && ! showSettings && (\n\t\t\t\t<div className=\"block-editor-url-popover__additional-controls\">\n\t\t\t\t\t{ additionalControls }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Popover>\n\t);\n}\n\nURLPopover.LinkEditor = LinkEditor;\n\nURLPopover.LinkViewer = LinkViewer;\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-popover/README.md\n */\nexport default URLPopover;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/url-popover/index.js"],"names":["__","useState","Button","Popover","__experimentalPopoverPositionToPlacement","positionToPlacement","chevronDown","deprecated","LinkViewer","LinkEditor","DEFAULT_PLACEMENT","URLPopover","additionalControls","children","renderSettings","placement","focusOnMount","position","popoverProps","undefined","since","alternative","computedPlacement","isSettingsExpanded","setIsSettingsExpanded","showSettings","toggleSettingsVisibility"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SACCC,MADD,EAECC,OAFD,EAGCC,wCAAwC,IAAIC,mBAH7C,QAIO,uBAJP;AAKA,SAASC,WAAT,QAA4B,kBAA5B;AACA,OAAOC,UAAP,MAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,eAAvB;AACA,OAAOC,UAAP,MAAuB,eAAvB;AAEA,MAAMC,iBAAiB,GAAG,QAA1B;;AAEA,SAASC,UAAT,OAWI;AAAA,MAXiB;AACpBC,IAAAA,kBADoB;AAEpBC,IAAAA,QAFoB;AAGpBC,IAAAA,cAHoB;AAIpB;AACAC,IAAAA,SALoB;AAMpBC,IAAAA,YAAY,GAAG,cANK;AAOpB;AACAC,IAAAA,QARoB;AASpB;AACA,OAAGC;AAViB,GAWjB;;AACH,MAAKD,QAAQ,KAAKE,SAAlB,EAA8B;AAC7BZ,IAAAA,UAAU,CAAE,8CAAF,EAAkD;AAC3Da,MAAAA,KAAK,EAAE,KADoD;AAE3DC,MAAAA,WAAW,EAAE;AAF8C,KAAlD,CAAV;AAIA,GANE,CAQH;AACA;AACA;AACA;;;AACA,MAAIC,iBAAJ;;AACA,MAAKP,SAAS,KAAKI,SAAnB,EAA+B;AAC9BG,IAAAA,iBAAiB,GAAGP,SAApB;AACA,GAFD,MAEO,IAAKE,QAAQ,KAAKE,SAAlB,EAA8B;AACpCG,IAAAA,iBAAiB,GAAGjB,mBAAmB,CAAEY,QAAF,CAAvC;AACA;;AACDK,EAAAA,iBAAiB,GAAGA,iBAAiB,IAAIZ,iBAAzC;AAEA,QAAM,CAAEa,kBAAF,EAAsBC,qBAAtB,IAAgDvB,QAAQ,CAAE,KAAF,CAA9D;AAEA,QAAMwB,YAAY,GAAG,CAAC,CAAEX,cAAH,IAAqBS,kBAA1C;;AAEA,QAAMG,wBAAwB,GAAG,MAAM;AACtCF,IAAAA,qBAAqB,CAAE,CAAED,kBAAJ,CAArB;AACA,GAFD;;AAIA,SACC,cAAC,OAAD;AACC,IAAA,SAAS,EAAC,0BADX;AAEC,IAAA,YAAY,EAAGP,YAFhB;AAGC,IAAA,SAAS,EAAGM,iBAHb;AAIC,IAAA,KAAK;AAJN,KAKMJ,YALN,GAOC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGL,QADH,EAEG,CAAC,CAAEC,cAAH,IACD,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,2CADX;AAEC,IAAA,IAAI,EAAGR,WAFR;AAGC,IAAA,KAAK,EAAGN,EAAE,CAAE,eAAF,CAHX;AAIC,IAAA,OAAO,EAAG0B,wBAJX;AAKC,qBAAgBH;AALjB,IAHF,CADD,EAaGE,YAAY,IACb;AAAK,IAAA,SAAS,EAAC;AAAf,KACGX,cAAc,EADjB,CAdF,CAPD,EA0BGF,kBAAkB,IAAI,CAAEa,YAAxB,IACD;AAAK,IAAA,SAAS,EAAC;AAAf,KACGb,kBADH,CA3BF,CADD;AAkCA;;AAEDD,UAAU,CAACF,UAAX,GAAwBA,UAAxB;AAEAE,UAAU,CAACH,UAAX,GAAwBA,UAAxB;AAEA;AACA;AACA;;AACA,eAAeG,UAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport {\n\tButton,\n\tPopover,\n\t__experimentalPopoverPositionToPlacement as positionToPlacement,\n} from '@wordpress/components';\nimport { chevronDown } from '@wordpress/icons';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport LinkViewer from './link-viewer';\nimport LinkEditor from './link-editor';\n\nconst DEFAULT_PLACEMENT = 'bottom';\n\nfunction URLPopover( {\n\tadditionalControls,\n\tchildren,\n\trenderSettings,\n\t// The DEFAULT_PLACEMENT value is assigned inside the function's body\n\tplacement,\n\tfocusOnMount = 'firstElement',\n\t// Deprecated\n\tposition,\n\t// Rest\n\t...popoverProps\n} ) {\n\tif ( position !== undefined ) {\n\t\tdeprecated( '`position` prop in wp.blockEditor.URLPopover', {\n\t\t\tsince: '6.2',\n\t\t\talternative: '`placement` prop',\n\t\t} );\n\t}\n\n\t// Compute popover's placement:\n\t// - give priority to `placement` prop, if defined\n\t// - otherwise, compute it from the legacy `position` prop (if defined)\n\t// - finally, fallback to the DEFAULT_PLACEMENT.\n\tlet computedPlacement;\n\tif ( placement !== undefined ) {\n\t\tcomputedPlacement = placement;\n\t} else if ( position !== undefined ) {\n\t\tcomputedPlacement = positionToPlacement( position );\n\t}\n\tcomputedPlacement = computedPlacement || DEFAULT_PLACEMENT;\n\n\tconst [ isSettingsExpanded, setIsSettingsExpanded ] = useState( false );\n\n\tconst showSettings = !! renderSettings && isSettingsExpanded;\n\n\tconst toggleSettingsVisibility = () => {\n\t\tsetIsSettingsExpanded( ! isSettingsExpanded );\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tclassName=\"block-editor-url-popover\"\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\tplacement={ computedPlacement }\n\t\t\tshift\n\t\t\t{ ...popoverProps }\n\t\t>\n\t\t\t<div className=\"block-editor-url-popover__input-container\">\n\t\t\t\t<div className=\"block-editor-url-popover__row\">\n\t\t\t\t\t{ children }\n\t\t\t\t\t{ !! renderSettings && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"block-editor-url-popover__settings-toggle\"\n\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\tlabel={ __( 'Link settings' ) }\n\t\t\t\t\t\t\tonClick={ toggleSettingsVisibility }\n\t\t\t\t\t\t\taria-expanded={ isSettingsExpanded }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t{ showSettings && (\n\t\t\t\t\t<div className=\"block-editor-url-popover__row block-editor-url-popover__settings\">\n\t\t\t\t\t\t{ renderSettings() }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ additionalControls && ! showSettings && (\n\t\t\t\t<div className=\"block-editor-url-popover__additional-controls\">\n\t\t\t\t\t{ additionalControls }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Popover>\n\t);\n}\n\nURLPopover.LinkEditor = LinkEditor;\n\nURLPopover.LinkViewer = LinkViewer;\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-popover/README.md\n */\nexport default URLPopover;\n"]}
@@ -14,7 +14,7 @@ import { __EXPERIMENTAL_PATHS_WITH_MERGE as PATHS_WITH_MERGE, hasBlockSupport }
14
14
 
15
15
  import { useBlockEditContext } from '../block-edit';
16
16
  import { store as blockEditorStore } from '../../store';
17
- const blockedPaths = ['color', 'border', 'typography', 'spacing'];
17
+ const blockedPaths = ['color', 'border', 'dimensions', 'typography', 'spacing'];
18
18
  const deprecatedFlags = {
19
19
  'color.palette': settings => settings.colors,
20
20
  'color.gradients': settings => settings.gradients,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/use-setting/index.js"],"names":["get","useSelect","__EXPERIMENTAL_PATHS_WITH_MERGE","PATHS_WITH_MERGE","hasBlockSupport","useBlockEditContext","store","blockEditorStore","blockedPaths","deprecatedFlags","settings","colors","gradients","disableCustomColors","undefined","disableCustomGradients","fontSizes","disableCustomFontSizes","enableCustomLineHeight","enableCustomUnits","enableCustomSpacing","prefixedFlags","removeCustomPrefixes","path","useSetting","name","blockName","clientId","select","includes","console","warn","result","normalizedPath","candidates","getBlockParents","candidateClientId","candidateBlockName","getBlockName","candidateAtts","getBlockAttributes","getSettings","defaultsPath","blockPath","custom","theme","default","deprecatedSettingsValue"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\t__EXPERIMENTAL_PATHS_WITH_MERGE as PATHS_WITH_MERGE,\n\thasBlockSupport,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditContext } from '../block-edit';\nimport { store as blockEditorStore } from '../../store';\n\nconst blockedPaths = [ 'color', 'border', 'typography', 'spacing' ];\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 * Hook that retrieves the given setting for the block instance in use.\n *\n * It looks up the settings first in the block instance hierarchy.\n * If none is found, it'll look it up in the block editor store.\n *\n * @param {string} path The path to the setting.\n * @return {any} Returns the value defined for the setting.\n * @example\n * ```js\n * const isEnabled = useSetting( 'typography.dropCap' );\n * ```\n */\nexport default function useSetting( path ) {\n\tconst { name: blockName, clientId } = useBlockEditContext();\n\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tif ( blockedPaths.includes( path ) ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(\n\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);\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tlet result;\n\n\t\t\tconst normalizedPath = removeCustomPrefixes( path );\n\n\t\t\t// 1. Take settings from the block instance or its ancestors.\n\t\t\t// Start from the current block and work our way up the ancestors.\n\t\t\tconst candidates = [\n\t\t\t\tclientId,\n\t\t\t\t...select( blockEditorStore ).getBlockParents(\n\t\t\t\t\tclientId,\n\t\t\t\t\t/* ascending */ true\n\t\t\t\t),\n\t\t\t];\n\n\t\t\tfor ( const candidateClientId of candidates ) {\n\t\t\t\tconst candidateBlockName =\n\t\t\t\t\tselect( blockEditorStore ).getBlockName(\n\t\t\t\t\t\tcandidateClientId\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\tcandidateBlockName,\n\t\t\t\t\t\t'__experimentalSettings',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t)\n\t\t\t\t) {\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\tget(\n\t\t\t\t\t\t\tcandidateAtts,\n\t\t\t\t\t\t\t`settings.blocks.${ blockName }.${ normalizedPath }`\n\t\t\t\t\t\t) ??\n\t\t\t\t\t\tget( candidateAtts, `settings.${ normalizedPath }` );\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\t\t\t}\n\n\t\t\t// 2. Fall back to the settings from the block editor store (__experimentalFeatures).\n\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\t\tif ( result === undefined ) {\n\t\t\t\tconst defaultsPath = `__experimentalFeatures.${ normalizedPath }`;\n\t\t\t\tconst blockPath = `__experimentalFeatures.blocks.${ blockName }.${ normalizedPath }`;\n\t\t\t\tresult =\n\t\t\t\t\tget( settings, blockPath ) ?? get( settings, defaultsPath );\n\t\t\t}\n\n\t\t\t// Return if the setting was found in either the block instance or the store.\n\t\t\tif ( result !== undefined ) {\n\t\t\t\tif ( PATHS_WITH_MERGE[ normalizedPath ] ) {\n\t\t\t\t\treturn result.custom ?? result.theme ?? result.default;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t// 3. Otherwise, use deprecated settings.\n\t\t\tconst deprecatedSettingsValue = deprecatedFlags[ normalizedPath ]\n\t\t\t\t? deprecatedFlags[ normalizedPath ]( settings )\n\t\t\t\t: undefined;\n\t\t\tif ( deprecatedSettingsValue !== undefined ) {\n\t\t\t\treturn deprecatedSettingsValue;\n\t\t\t}\n\n\t\t\t// 4. Fallback for typography.dropCap:\n\t\t\t// This is only necessary to support typography.dropCap.\n\t\t\t// when __experimentalFeatures are not present (core without plugin).\n\t\t\t// To remove when __experimentalFeatures are ported to core.\n\t\t\treturn normalizedPath === 'typography.dropCap' ? true : undefined;\n\t\t},\n\t\t[ blockName, clientId, path ]\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/use-setting/index.js"],"names":["get","useSelect","__EXPERIMENTAL_PATHS_WITH_MERGE","PATHS_WITH_MERGE","hasBlockSupport","useBlockEditContext","store","blockEditorStore","blockedPaths","deprecatedFlags","settings","colors","gradients","disableCustomColors","undefined","disableCustomGradients","fontSizes","disableCustomFontSizes","enableCustomLineHeight","enableCustomUnits","enableCustomSpacing","prefixedFlags","removeCustomPrefixes","path","useSetting","name","blockName","clientId","select","includes","console","warn","result","normalizedPath","candidates","getBlockParents","candidateClientId","candidateBlockName","getBlockName","candidateAtts","getBlockAttributes","getSettings","defaultsPath","blockPath","custom","theme","default","deprecatedSettingsValue"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\t__EXPERIMENTAL_PATHS_WITH_MERGE as PATHS_WITH_MERGE,\n\thasBlockSupport,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditContext } from '../block-edit';\nimport { store as blockEditorStore } from '../../store';\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 * Hook that retrieves the given setting for the block instance in use.\n *\n * It looks up the settings first in the block instance hierarchy.\n * If none is found, it'll look it up in the block editor store.\n *\n * @param {string} path The path to the setting.\n * @return {any} Returns the value defined for the setting.\n * @example\n * ```js\n * const isEnabled = useSetting( 'typography.dropCap' );\n * ```\n */\nexport default function useSetting( path ) {\n\tconst { name: blockName, clientId } = useBlockEditContext();\n\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tif ( blockedPaths.includes( path ) ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(\n\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);\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tlet result;\n\n\t\t\tconst normalizedPath = removeCustomPrefixes( path );\n\n\t\t\t// 1. Take settings from the block instance or its ancestors.\n\t\t\t// Start from the current block and work our way up the ancestors.\n\t\t\tconst candidates = [\n\t\t\t\tclientId,\n\t\t\t\t...select( blockEditorStore ).getBlockParents(\n\t\t\t\t\tclientId,\n\t\t\t\t\t/* ascending */ true\n\t\t\t\t),\n\t\t\t];\n\n\t\t\tfor ( const candidateClientId of candidates ) {\n\t\t\t\tconst candidateBlockName =\n\t\t\t\t\tselect( blockEditorStore ).getBlockName(\n\t\t\t\t\t\tcandidateClientId\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\tcandidateBlockName,\n\t\t\t\t\t\t'__experimentalSettings',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t)\n\t\t\t\t) {\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\tget(\n\t\t\t\t\t\t\tcandidateAtts,\n\t\t\t\t\t\t\t`settings.blocks.${ blockName }.${ normalizedPath }`\n\t\t\t\t\t\t) ??\n\t\t\t\t\t\tget( candidateAtts, `settings.${ normalizedPath }` );\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\t\t\t}\n\n\t\t\t// 2. Fall back to the settings from the block editor store (__experimentalFeatures).\n\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\t\tif ( result === undefined ) {\n\t\t\t\tconst defaultsPath = `__experimentalFeatures.${ normalizedPath }`;\n\t\t\t\tconst blockPath = `__experimentalFeatures.blocks.${ blockName }.${ normalizedPath }`;\n\t\t\t\tresult =\n\t\t\t\t\tget( settings, blockPath ) ?? get( settings, defaultsPath );\n\t\t\t}\n\n\t\t\t// Return if the setting was found in either the block instance or the store.\n\t\t\tif ( result !== undefined ) {\n\t\t\t\tif ( PATHS_WITH_MERGE[ normalizedPath ] ) {\n\t\t\t\t\treturn result.custom ?? result.theme ?? result.default;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t// 3. Otherwise, use deprecated settings.\n\t\t\tconst deprecatedSettingsValue = deprecatedFlags[ normalizedPath ]\n\t\t\t\t? deprecatedFlags[ normalizedPath ]( settings )\n\t\t\t\t: undefined;\n\t\t\tif ( deprecatedSettingsValue !== undefined ) {\n\t\t\t\treturn deprecatedSettingsValue;\n\t\t\t}\n\n\t\t\t// 4. Fallback for typography.dropCap:\n\t\t\t// This is only necessary to support typography.dropCap.\n\t\t\t// when __experimentalFeatures are not present (core without plugin).\n\t\t\t// To remove when __experimentalFeatures are ported to core.\n\t\t\treturn normalizedPath === 'typography.dropCap' ? true : undefined;\n\t\t},\n\t\t[ blockName, clientId, path ]\n\t);\n}\n"]}
@@ -293,6 +293,7 @@ export function BorderPanel(props) {
293
293
  onChange: onBorderChange,
294
294
  popoverOffset: 40,
295
295
  popoverPlacement: "left-start",
296
+ size: "__unstable-large",
296
297
  value: hydratedBorder,
297
298
  __experimentalHasMultipleOrigins: true,
298
299
  __experimentalIsRenderedInSidebar: true