@wordpress/block-editor 12.11.1 → 12.12.2-next.f8d8eceb.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. package/CHANGELOG.md +14 -10
  2. package/README.md +35 -3
  3. package/build/components/block-alignment-control/use-available-alignments.js +30 -28
  4. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  5. package/build/components/block-controls/hook.js +4 -1
  6. package/build/components/block-controls/hook.js.map +1 -1
  7. package/build/components/block-list/block-outline.native.js +1 -1
  8. package/build/components/block-list/block-outline.native.js.map +1 -1
  9. package/build/components/block-list/block.js +2 -0
  10. package/build/components/block-list/block.js.map +1 -1
  11. package/build/components/block-list/block.native.js +4 -4
  12. package/build/components/block-list/block.native.js.map +1 -1
  13. package/build/components/block-list/layout.js +2 -3
  14. package/build/components/block-list/layout.js.map +1 -1
  15. package/build/components/block-preview/index.js +4 -1
  16. package/build/components/block-preview/index.js.map +1 -1
  17. package/build/components/block-styles/index.js +1 -2
  18. package/build/components/block-styles/index.js.map +1 -1
  19. package/build/components/block-switcher/pattern-transformations-menu.js +2 -4
  20. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  21. package/build/components/block-tools/block-contextual-toolbar.js +1 -0
  22. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  23. package/build/components/border-radius-control/index.js +3 -2
  24. package/build/components/border-radius-control/index.js.map +1 -1
  25. package/build/components/color-palette/with-color-context.js +6 -6
  26. package/build/components/color-palette/with-color-context.js.map +1 -1
  27. package/build/components/colors/with-colors.js +2 -8
  28. package/build/components/colors/with-colors.js.map +1 -1
  29. package/build/components/colors-gradients/control.js +6 -7
  30. package/build/components/colors-gradients/control.js.map +1 -1
  31. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +5 -13
  32. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  33. package/build/components/dimensions-tool/index.js +22 -22
  34. package/build/components/dimensions-tool/index.js.map +1 -1
  35. package/build/components/dimensions-tool/scale-tool.js +1 -1
  36. package/build/components/dimensions-tool/scale-tool.js.map +1 -1
  37. package/build/components/font-family/index.js +2 -3
  38. package/build/components/font-family/index.js.map +1 -1
  39. package/build/components/font-sizes/font-size-picker.js +3 -5
  40. package/build/components/font-sizes/font-size-picker.js.map +1 -1
  41. package/build/components/font-sizes/with-font-sizes.js +3 -4
  42. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  43. package/build/components/global-styles/filters-panel.js +7 -8
  44. package/build/components/global-styles/filters-panel.js.map +1 -1
  45. package/build/components/global-styles/image-settings-panel.js +2 -2
  46. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  47. package/build/components/global-styles/typography-panel.js +1 -1
  48. package/build/components/global-styles/typography-panel.js.map +1 -1
  49. package/build/components/gradients/use-gradient.js +2 -5
  50. package/build/components/gradients/use-gradient.js.map +1 -1
  51. package/build/components/height-control/index.js +93 -5
  52. package/build/components/height-control/index.js.map +1 -1
  53. package/build/components/iframe/index.js +9 -1
  54. package/build/components/iframe/index.js.map +1 -1
  55. package/build/components/image-editor/aspect-ratio-dropdown.js +0 -6
  56. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  57. package/build/components/index.js +9 -2
  58. package/build/components/index.js.map +1 -1
  59. package/build/components/index.native.js +17 -2
  60. package/build/components/index.native.js.map +1 -1
  61. package/build/components/inner-blocks/index.js +2 -2
  62. package/build/components/inner-blocks/index.js.map +1 -1
  63. package/build/components/letter-spacing-control/index.js +3 -3
  64. package/build/components/letter-spacing-control/index.js.map +1 -1
  65. package/build/components/link-control/link-preview.js +5 -2
  66. package/build/components/link-control/link-preview.js.map +1 -1
  67. package/build/components/link-control/search-item.js +11 -0
  68. package/build/components/link-control/search-item.js.map +1 -1
  69. package/build/components/link-control/search-results.js +2 -1
  70. package/build/components/link-control/search-results.js.map +1 -1
  71. package/build/components/link-control/use-internal-value.js +14 -8
  72. package/build/components/link-control/use-internal-value.js.map +1 -1
  73. package/build/components/link-control/use-search-handler.js +10 -5
  74. package/build/components/link-control/use-search-handler.js.map +1 -1
  75. package/build/components/list-view/index.js +6 -5
  76. package/build/components/list-view/index.js.map +1 -1
  77. package/build/components/media-replace-flow/index.js +2 -4
  78. package/build/components/media-replace-flow/index.js.map +1 -1
  79. package/build/components/provider/use-block-sync.js +2 -2
  80. package/build/components/provider/use-block-sync.js.map +1 -1
  81. package/build/components/rich-text/index.js +1 -1
  82. package/build/components/rich-text/index.js.map +1 -1
  83. package/build/components/rich-text/index.native.js +14 -3
  84. package/build/components/rich-text/index.native.js.map +1 -1
  85. package/build/components/rich-text/use-delete.js +1 -1
  86. package/build/components/rich-text/use-delete.js.map +1 -1
  87. package/build/components/rich-text/use-paste-handler.js +25 -22
  88. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  89. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +6 -3
  90. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  91. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +91 -3
  92. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  93. package/build/components/tool-selector/index.js +1 -2
  94. package/build/components/tool-selector/index.js.map +1 -1
  95. package/build/components/unit-control/index.js +3 -3
  96. package/build/components/unit-control/index.js.map +1 -1
  97. package/build/components/use-block-commands/index.js +96 -47
  98. package/build/components/use-block-commands/index.js.map +1 -1
  99. package/build/components/use-settings/index.js +212 -0
  100. package/build/components/use-settings/index.js.map +1 -0
  101. package/build/components/writing-flow/use-arrow-nav.js +4 -0
  102. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  103. package/build/hooks/align.js +51 -35
  104. package/build/hooks/align.js.map +1 -1
  105. package/build/hooks/anchor.js +37 -32
  106. package/build/hooks/anchor.js.map +1 -1
  107. package/build/hooks/background.js +4 -4
  108. package/build/hooks/background.js.map +1 -1
  109. package/build/hooks/block-rename-ui.js +5 -5
  110. package/build/hooks/block-rename-ui.js.map +1 -1
  111. package/build/hooks/{metadata-name.js → block-renaming.js} +3 -7
  112. package/build/hooks/block-renaming.js.map +1 -0
  113. package/build/hooks/color.js +2 -4
  114. package/build/hooks/color.js.map +1 -1
  115. package/build/hooks/custom-class-name.js +28 -21
  116. package/build/hooks/custom-class-name.js.map +1 -1
  117. package/build/hooks/duotone.js +33 -8
  118. package/build/hooks/duotone.js.map +1 -1
  119. package/build/hooks/font-size.js +4 -4
  120. package/build/hooks/font-size.js.map +1 -1
  121. package/build/hooks/index.js +1 -1
  122. package/build/hooks/index.js.map +1 -1
  123. package/build/hooks/layout.js +16 -17
  124. package/build/hooks/layout.js.map +1 -1
  125. package/build/hooks/line-height.js +3 -3
  126. package/build/hooks/line-height.js.map +1 -1
  127. package/build/hooks/metadata.js +6 -27
  128. package/build/hooks/metadata.js.map +1 -1
  129. package/build/hooks/position.js +2 -3
  130. package/build/hooks/position.js.map +1 -1
  131. package/build/hooks/use-color-props.js +3 -11
  132. package/build/hooks/use-color-props.js.map +1 -1
  133. package/build/hooks/utils.js +2 -43
  134. package/build/hooks/utils.js.map +1 -1
  135. package/build/layouts/constrained.js +3 -3
  136. package/build/layouts/constrained.js.map +1 -1
  137. package/build/layouts/grid.js +25 -3
  138. package/build/layouts/grid.js.map +1 -1
  139. package/build/layouts/utils.js +1 -1
  140. package/build/layouts/utils.js.map +1 -1
  141. package/build/lock-unlock.js +1 -1
  142. package/build/lock-unlock.js.map +1 -1
  143. package/build/store/actions.js +13 -5
  144. package/build/store/actions.js.map +1 -1
  145. package/build/utils/object.js +4 -1
  146. package/build/utils/object.js.map +1 -1
  147. package/build/utils/parse-css-unit-to-px.js +20 -0
  148. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  149. package/build/utils/pasting.js +1 -1
  150. package/build/utils/pasting.js.map +1 -1
  151. package/build/utils/transform-styles/index.js +19 -24
  152. package/build/utils/transform-styles/index.js.map +1 -1
  153. package/build-module/components/block-alignment-control/use-available-alignments.js +30 -28
  154. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  155. package/build-module/components/block-controls/hook.js +4 -1
  156. package/build-module/components/block-controls/hook.js.map +1 -1
  157. package/build-module/components/block-list/block-outline.native.js +1 -1
  158. package/build-module/components/block-list/block-outline.native.js.map +1 -1
  159. package/build-module/components/block-list/block.js +2 -0
  160. package/build-module/components/block-list/block.js.map +1 -1
  161. package/build-module/components/block-list/block.native.js +4 -4
  162. package/build-module/components/block-list/block.native.js.map +1 -1
  163. package/build-module/components/block-list/layout.js +2 -2
  164. package/build-module/components/block-list/layout.js.map +1 -1
  165. package/build-module/components/block-preview/index.js +4 -1
  166. package/build-module/components/block-preview/index.js.map +1 -1
  167. package/build-module/components/block-styles/index.js +1 -2
  168. package/build-module/components/block-styles/index.js.map +1 -1
  169. package/build-module/components/block-switcher/pattern-transformations-menu.js +2 -4
  170. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  171. package/build-module/components/block-tools/block-contextual-toolbar.js +1 -0
  172. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  173. package/build-module/components/border-radius-control/index.js +3 -2
  174. package/build-module/components/border-radius-control/index.js.map +1 -1
  175. package/build-module/components/color-palette/with-color-context.js +6 -5
  176. package/build-module/components/color-palette/with-color-context.js.map +1 -1
  177. package/build-module/components/colors/with-colors.js +2 -7
  178. package/build-module/components/colors/with-colors.js.map +1 -1
  179. package/build-module/components/colors-gradients/control.js +6 -7
  180. package/build-module/components/colors-gradients/control.js.map +1 -1
  181. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +5 -12
  182. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  183. package/build-module/components/dimensions-tool/index.js +22 -22
  184. package/build-module/components/dimensions-tool/index.js.map +1 -1
  185. package/build-module/components/dimensions-tool/scale-tool.js +1 -1
  186. package/build-module/components/dimensions-tool/scale-tool.js.map +1 -1
  187. package/build-module/components/font-family/index.js +2 -2
  188. package/build-module/components/font-family/index.js.map +1 -1
  189. package/build-module/components/font-sizes/font-size-picker.js +3 -4
  190. package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
  191. package/build-module/components/font-sizes/with-font-sizes.js +3 -3
  192. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  193. package/build-module/components/global-styles/filters-panel.js +7 -8
  194. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  195. package/build-module/components/global-styles/image-settings-panel.js +2 -2
  196. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  197. package/build-module/components/global-styles/typography-panel.js +1 -1
  198. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  199. package/build-module/components/gradients/use-gradient.js +2 -4
  200. package/build-module/components/gradients/use-gradient.js.map +1 -1
  201. package/build-module/components/height-control/index.js +93 -4
  202. package/build-module/components/height-control/index.js.map +1 -1
  203. package/build-module/components/iframe/index.js +9 -1
  204. package/build-module/components/iframe/index.js.map +1 -1
  205. package/build-module/components/image-editor/aspect-ratio-dropdown.js +0 -6
  206. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  207. package/build-module/components/index.js +1 -1
  208. package/build-module/components/index.js.map +1 -1
  209. package/build-module/components/index.native.js +2 -1
  210. package/build-module/components/index.native.js.map +1 -1
  211. package/build-module/components/inner-blocks/index.js +2 -2
  212. package/build-module/components/inner-blocks/index.js.map +1 -1
  213. package/build-module/components/letter-spacing-control/index.js +3 -2
  214. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  215. package/build-module/components/link-control/link-preview.js +6 -3
  216. package/build-module/components/link-control/link-preview.js.map +1 -1
  217. package/build-module/components/link-control/search-item.js +12 -1
  218. package/build-module/components/link-control/search-item.js.map +1 -1
  219. package/build-module/components/link-control/search-results.js +2 -1
  220. package/build-module/components/link-control/search-results.js.map +1 -1
  221. package/build-module/components/link-control/use-internal-value.js +14 -9
  222. package/build-module/components/link-control/use-internal-value.js.map +1 -1
  223. package/build-module/components/link-control/use-search-handler.js +10 -5
  224. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  225. package/build-module/components/list-view/index.js +7 -6
  226. package/build-module/components/list-view/index.js.map +1 -1
  227. package/build-module/components/media-replace-flow/index.js +3 -5
  228. package/build-module/components/media-replace-flow/index.js.map +1 -1
  229. package/build-module/components/provider/use-block-sync.js +2 -2
  230. package/build-module/components/provider/use-block-sync.js.map +1 -1
  231. package/build-module/components/rich-text/index.js +1 -1
  232. package/build-module/components/rich-text/index.js.map +1 -1
  233. package/build-module/components/rich-text/index.native.js +15 -4
  234. package/build-module/components/rich-text/index.native.js.map +1 -1
  235. package/build-module/components/rich-text/use-delete.js +1 -1
  236. package/build-module/components/rich-text/use-delete.js.map +1 -1
  237. package/build-module/components/rich-text/use-paste-handler.js +25 -22
  238. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  239. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +6 -2
  240. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  241. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +91 -2
  242. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  243. package/build-module/components/tool-selector/index.js +1 -2
  244. package/build-module/components/tool-selector/index.js.map +1 -1
  245. package/build-module/components/unit-control/index.js +3 -2
  246. package/build-module/components/unit-control/index.js.map +1 -1
  247. package/build-module/components/use-block-commands/index.js +95 -47
  248. package/build-module/components/use-block-commands/index.js.map +1 -1
  249. package/build-module/components/use-settings/index.js +203 -0
  250. package/build-module/components/use-settings/index.js.map +1 -0
  251. package/build-module/components/writing-flow/use-arrow-nav.js +4 -0
  252. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  253. package/build-module/hooks/align.js +51 -35
  254. package/build-module/hooks/align.js.map +1 -1
  255. package/build-module/hooks/anchor.js +37 -32
  256. package/build-module/hooks/anchor.js.map +1 -1
  257. package/build-module/hooks/background.js +4 -4
  258. package/build-module/hooks/background.js.map +1 -1
  259. package/build-module/hooks/block-rename-ui.js +6 -6
  260. package/build-module/hooks/block-rename-ui.js.map +1 -1
  261. package/build-module/hooks/{metadata-name.js → block-renaming.js} +3 -6
  262. package/build-module/hooks/block-renaming.js.map +1 -0
  263. package/build-module/hooks/color.js +2 -4
  264. package/build-module/hooks/color.js.map +1 -1
  265. package/build-module/hooks/custom-class-name.js +28 -21
  266. package/build-module/hooks/custom-class-name.js.map +1 -1
  267. package/build-module/hooks/duotone.js +34 -9
  268. package/build-module/hooks/duotone.js.map +1 -1
  269. package/build-module/hooks/font-size.js +4 -4
  270. package/build-module/hooks/font-size.js.map +1 -1
  271. package/build-module/hooks/index.js +1 -1
  272. package/build-module/hooks/index.js.map +1 -1
  273. package/build-module/hooks/layout.js +16 -17
  274. package/build-module/hooks/layout.js.map +1 -1
  275. package/build-module/hooks/line-height.js +3 -3
  276. package/build-module/hooks/line-height.js.map +1 -1
  277. package/build-module/hooks/metadata.js +6 -25
  278. package/build-module/hooks/metadata.js.map +1 -1
  279. package/build-module/hooks/position.js +2 -3
  280. package/build-module/hooks/position.js.map +1 -1
  281. package/build-module/hooks/use-color-props.js +3 -11
  282. package/build-module/hooks/use-color-props.js.map +1 -1
  283. package/build-module/hooks/utils.js +3 -44
  284. package/build-module/hooks/utils.js.map +1 -1
  285. package/build-module/layouts/constrained.js +3 -2
  286. package/build-module/layouts/constrained.js.map +1 -1
  287. package/build-module/layouts/grid.js +25 -3
  288. package/build-module/layouts/grid.js.map +1 -1
  289. package/build-module/layouts/utils.js +1 -1
  290. package/build-module/layouts/utils.js.map +1 -1
  291. package/build-module/lock-unlock.js +1 -1
  292. package/build-module/lock-unlock.js.map +1 -1
  293. package/build-module/store/actions.js +14 -6
  294. package/build-module/store/actions.js.map +1 -1
  295. package/build-module/utils/object.js +3 -1
  296. package/build-module/utils/object.js.map +1 -1
  297. package/build-module/utils/parse-css-unit-to-px.js +20 -0
  298. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  299. package/build-module/utils/pasting.js +1 -1
  300. package/build-module/utils/pasting.js.map +1 -1
  301. package/build-module/utils/transform-styles/index.js +20 -24
  302. package/build-module/utils/transform-styles/index.js.map +1 -1
  303. package/build-style/style-rtl.css +24 -12
  304. package/build-style/style.css +24 -12
  305. package/package.json +36 -34
  306. package/src/components/block-alignment-control/use-available-alignments.js +49 -34
  307. package/src/components/block-controls/hook.js +6 -3
  308. package/src/components/block-list/block-outline.native.js +1 -1
  309. package/src/components/block-list/block.js +2 -0
  310. package/src/components/block-list/block.native.js +4 -4
  311. package/src/components/block-list/layout.js +2 -2
  312. package/src/components/block-preview/index.js +7 -1
  313. package/src/components/block-styles/index.js +1 -4
  314. package/src/components/block-styles/style.scss +1 -1
  315. package/src/components/block-switcher/pattern-transformations-menu.js +1 -4
  316. package/src/components/block-switcher/style.scss +6 -0
  317. package/src/components/block-tools/block-contextual-toolbar.js +1 -0
  318. package/src/components/block-tools/style.scss +0 -1
  319. package/src/components/border-radius-control/index.js +3 -2
  320. package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -1
  321. package/src/components/color-palette/with-color-context.js +9 -9
  322. package/src/components/colors/with-colors.js +6 -7
  323. package/src/components/colors-gradients/control.js +10 -7
  324. package/src/components/colors-gradients/style.scss +4 -2
  325. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +29 -15
  326. package/src/components/dimensions-tool/index.js +25 -25
  327. package/src/components/dimensions-tool/scale-tool.js +1 -1
  328. package/src/components/font-family/index.js +2 -2
  329. package/src/components/font-sizes/font-size-picker.js +6 -4
  330. package/src/components/font-sizes/with-font-sizes.js +3 -5
  331. package/src/components/global-styles/filters-panel.js +9 -15
  332. package/src/components/global-styles/image-settings-panel.js +2 -2
  333. package/src/components/global-styles/typography-panel.js +1 -1
  334. package/src/components/gradients/use-gradient.js +10 -4
  335. package/src/components/height-control/index.js +53 -4
  336. package/src/components/iframe/index.js +8 -1
  337. package/src/components/image-editor/aspect-ratio-dropdown.js +0 -8
  338. package/src/components/index.js +1 -1
  339. package/src/components/index.native.js +2 -1
  340. package/src/components/inner-blocks/index.js +2 -2
  341. package/src/components/inserter/style.scss +9 -1
  342. package/src/components/letter-spacing-control/index.js +3 -2
  343. package/src/components/link-control/README.md +43 -0
  344. package/src/components/link-control/link-preview.js +11 -5
  345. package/src/components/link-control/search-item.js +14 -0
  346. package/src/components/link-control/search-results.js +1 -0
  347. package/src/components/link-control/style.scss +3 -3
  348. package/src/components/link-control/test/index.js +19 -0
  349. package/src/components/link-control/use-internal-value.js +14 -10
  350. package/src/components/link-control/use-search-handler.js +22 -15
  351. package/src/components/list-view/index.js +13 -3
  352. package/src/components/media-replace-flow/index.js +9 -14
  353. package/src/components/provider/test/use-block-sync.js +1 -1
  354. package/src/components/provider/use-block-sync.js +2 -2
  355. package/src/components/rich-text/index.js +1 -1
  356. package/src/components/rich-text/index.native.js +19 -3
  357. package/src/components/rich-text/use-delete.js +1 -1
  358. package/src/components/rich-text/use-paste-handler.js +27 -24
  359. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +7 -5
  360. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +25 -2
  361. package/src/components/tool-selector/index.js +1 -1
  362. package/src/components/unit-control/index.js +3 -8
  363. package/src/components/use-block-commands/index.js +93 -47
  364. package/src/components/{use-setting → use-settings}/README.md +9 -10
  365. package/src/components/use-settings/index.js +272 -0
  366. package/src/components/{use-setting → use-settings}/test/index.js +47 -5
  367. package/src/components/writing-flow/use-arrow-nav.js +4 -0
  368. package/src/hooks/align.js +79 -54
  369. package/src/hooks/anchor.js +75 -65
  370. package/src/hooks/background.js +7 -9
  371. package/src/hooks/block-rename-ui.js +5 -14
  372. package/src/hooks/{metadata-name.js → block-renaming.js} +4 -7
  373. package/src/hooks/color.js +7 -4
  374. package/src/hooks/custom-class-name.js +36 -31
  375. package/src/hooks/duotone.js +51 -14
  376. package/src/hooks/font-size.js +4 -4
  377. package/src/hooks/index.js +1 -1
  378. package/src/hooks/layout.js +17 -17
  379. package/src/hooks/line-height.js +3 -3
  380. package/src/hooks/metadata.js +6 -38
  381. package/src/hooks/position.js +5 -3
  382. package/src/hooks/use-color-props.js +21 -14
  383. package/src/hooks/utils.js +90 -43
  384. package/src/layouts/constrained.js +3 -8
  385. package/src/layouts/grid.js +50 -2
  386. package/src/layouts/utils.js +2 -1
  387. package/src/lock-unlock.js +1 -1
  388. package/src/store/actions.js +25 -8
  389. package/src/utils/object.js +4 -1
  390. package/src/utils/parse-css-unit-to-px.js +20 -0
  391. package/src/utils/pasting.js +1 -4
  392. package/src/utils/test/__snapshots__/transform-styles.js.snap +103 -0
  393. package/src/utils/test/pasting.js +12 -19
  394. package/src/utils/test/transform-styles.js +217 -0
  395. package/src/utils/transform-styles/index.js +25 -25
  396. package/build/components/use-setting/index.js +0 -159
  397. package/build/components/use-setting/index.js.map +0 -1
  398. package/build/hooks/metadata-name.js.map +0 -1
  399. package/build/utils/transform-styles/ast/index.js +0 -21
  400. package/build/utils/transform-styles/ast/index.js.map +0 -1
  401. package/build/utils/transform-styles/ast/parse.js +0 -660
  402. package/build/utils/transform-styles/ast/parse.js.map +0 -1
  403. package/build/utils/transform-styles/ast/stringify/compiler.js +0 -52
  404. package/build/utils/transform-styles/ast/stringify/compiler.js.map +0 -1
  405. package/build/utils/transform-styles/ast/stringify/compress.js +0 -178
  406. package/build/utils/transform-styles/ast/stringify/compress.js.map +0 -1
  407. package/build/utils/transform-styles/ast/stringify/identity.js +0 -207
  408. package/build/utils/transform-styles/ast/stringify/identity.js.map +0 -1
  409. package/build/utils/transform-styles/ast/stringify/index.js +0 -36
  410. package/build/utils/transform-styles/ast/stringify/index.js.map +0 -1
  411. package/build/utils/transform-styles/transforms/url-rewrite.js +0 -130
  412. package/build/utils/transform-styles/transforms/url-rewrite.js.map +0 -1
  413. package/build/utils/transform-styles/transforms/wrap.js +0 -59
  414. package/build/utils/transform-styles/transforms/wrap.js.map +0 -1
  415. package/build/utils/transform-styles/traverse.js +0 -37
  416. package/build/utils/transform-styles/traverse.js.map +0 -1
  417. package/build-module/components/use-setting/index.js +0 -152
  418. package/build-module/components/use-setting/index.js.map +0 -1
  419. package/build-module/hooks/metadata-name.js.map +0 -1
  420. package/build-module/utils/transform-styles/ast/index.js +0 -6
  421. package/build-module/utils/transform-styles/ast/index.js.map +0 -1
  422. package/build-module/utils/transform-styles/ast/parse.js +0 -654
  423. package/build-module/utils/transform-styles/ast/parse.js.map +0 -1
  424. package/build-module/utils/transform-styles/ast/stringify/compiler.js +0 -49
  425. package/build-module/utils/transform-styles/ast/stringify/compiler.js.map +0 -1
  426. package/build-module/utils/transform-styles/ast/stringify/compress.js +0 -176
  427. package/build-module/utils/transform-styles/ast/stringify/compress.js.map +0 -1
  428. package/build-module/utils/transform-styles/ast/stringify/identity.js +0 -206
  429. package/build-module/utils/transform-styles/ast/stringify/identity.js.map +0 -1
  430. package/build-module/utils/transform-styles/ast/stringify/index.js +0 -29
  431. package/build-module/utils/transform-styles/ast/stringify/index.js.map +0 -1
  432. package/build-module/utils/transform-styles/transforms/url-rewrite.js +0 -123
  433. package/build-module/utils/transform-styles/transforms/url-rewrite.js.map +0 -1
  434. package/build-module/utils/transform-styles/transforms/wrap.js +0 -52
  435. package/build-module/utils/transform-styles/transforms/wrap.js.map +0 -1
  436. package/build-module/utils/transform-styles/traverse.js +0 -28
  437. package/build-module/utils/transform-styles/traverse.js.map +0 -1
  438. package/src/components/use-setting/index.js +0 -213
  439. package/src/utils/transform-styles/ast/index.js +0 -5
  440. package/src/utils/transform-styles/ast/parse.js +0 -732
  441. package/src/utils/transform-styles/ast/stringify/compiler.js +0 -50
  442. package/src/utils/transform-styles/ast/stringify/compress.js +0 -238
  443. package/src/utils/transform-styles/ast/stringify/identity.js +0 -286
  444. package/src/utils/transform-styles/ast/stringify/index.js +0 -32
  445. package/src/utils/transform-styles/test/__snapshots__/traverse.js.snap +0 -7
  446. package/src/utils/transform-styles/test/traverse.js +0 -24
  447. package/src/utils/transform-styles/transforms/test/__snapshots__/url-rewrite.js.snap +0 -25
  448. package/src/utils/transform-styles/transforms/test/__snapshots__/wrap.js.snap +0 -64
  449. package/src/utils/transform-styles/transforms/test/url-rewrite.js +0 -39
  450. package/src/utils/transform-styles/transforms/test/wrap.js +0 -95
  451. package/src/utils/transform-styles/transforms/url-rewrite.js +0 -139
  452. package/src/utils/transform-styles/transforms/wrap.js +0 -56
  453. package/src/utils/transform-styles/traverse.js +0 -32
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","__","Button","ExternalLink","__experimentalText","Text","filterURLForDisplay","safeDecodeURI","Icon","globe","info","linkOff","edit","__unstableStripHTML","stripHTML","ViewerSlot","useRichUrlData","LinkPreview","value","onEditClick","hasRichPreviews","hasUnlinkControl","onRemove","additionalControls","showRichPreviews","url","richData","isFetching","hasRichData","Object","keys","length","displayURL","isEmptyURL","displayTitle","title","icon","createElement","src","alt","size","className","Fragment","href","label","onClick","iconSize","fillProps","image","description","truncate","numberOfLines"],"sources":["@wordpress/block-editor/src/components/link-control/link-preview.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tExternalLink,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { filterURLForDisplay, safeDecodeURI } from '@wordpress/url';\nimport { Icon, globe, info, linkOff, edit } from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { ViewerSlot } from './viewer-slot';\n\nimport useRichUrlData from './use-rich-url-data';\n\nexport default function LinkPreview( {\n\tvalue,\n\tonEditClick,\n\thasRichPreviews = false,\n\thasUnlinkControl = false,\n\tonRemove,\n\tadditionalControls,\n} ) {\n\t// Avoid fetching if rich previews are not desired.\n\tconst showRichPreviews = hasRichPreviews ? value?.url : null;\n\n\tconst { richData, isFetching } = useRichUrlData( showRichPreviews );\n\n\t// Rich data may be an empty object so test for that.\n\tconst hasRichData = richData && Object.keys( richData ).length;\n\n\tconst displayURL =\n\t\t( value && filterURLForDisplay( safeDecodeURI( value.url ), 16 ) ) ||\n\t\t'';\n\n\t// url can be undefined if the href attribute is unset\n\tconst isEmptyURL = ! value?.url?.length;\n\n\tconst displayTitle =\n\t\t! isEmptyURL &&\n\t\tstripHTML( richData?.title || value?.title || displayURL );\n\n\tlet icon;\n\n\tif ( richData?.icon ) {\n\t\ticon = <img src={ richData?.icon } alt=\"\" />;\n\t} else if ( isEmptyURL ) {\n\t\ticon = <Icon icon={ info } size={ 32 } />;\n\t} else {\n\t\ticon = <Icon icon={ globe } />;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\taria-label={ __( 'Currently selected' ) }\n\t\t\tclassName={ classnames( 'block-editor-link-control__search-item', {\n\t\t\t\t'is-current': true,\n\t\t\t\t'is-rich': hasRichData,\n\t\t\t\t'is-fetching': !! isFetching,\n\t\t\t\t'is-preview': true,\n\t\t\t\t'is-error': isEmptyURL,\n\t\t\t\t'is-url-title': displayTitle === displayURL,\n\t\t\t} ) }\n\t\t>\n\t\t\t<div className=\"block-editor-link-control__search-item-top\">\n\t\t\t\t<span className=\"block-editor-link-control__search-item-header\">\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-link-control__search-item-icon',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'is-image': richData?.icon,\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\t\t{ icon }\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"block-editor-link-control__search-item-details\">\n\t\t\t\t\t\t{ ! isEmptyURL ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-link-control__search-item-title\"\n\t\t\t\t\t\t\t\t\thref={ value.url }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ displayTitle }\n\t\t\t\t\t\t\t\t</ExternalLink>\n\n\t\t\t\t\t\t\t\t{ value?.url && displayTitle !== displayURL && (\n\t\t\t\t\t\t\t\t\t<span className=\"block-editor-link-control__search-item-info\">\n\t\t\t\t\t\t\t\t\t\t{ displayURL }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className=\"block-editor-link-control__search-item-error-notice\">\n\t\t\t\t\t\t\t\t{ __( 'Link is empty' ) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\n\t\t\t\t<Button\n\t\t\t\t\ticon={ edit }\n\t\t\t\t\tlabel={ __( 'Edit' ) }\n\t\t\t\t\tclassName=\"block-editor-link-control__search-item-action\"\n\t\t\t\t\tonClick={ onEditClick }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t\t{ hasUnlinkControl && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Unlink' ) }\n\t\t\t\t\t\tclassName=\"block-editor-link-control__search-item-action block-editor-link-control__unlink\"\n\t\t\t\t\t\tonClick={ onRemove }\n\t\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<ViewerSlot fillProps={ value } />\n\t\t\t</div>\n\n\t\t\t{ !! (\n\t\t\t\t( hasRichData &&\n\t\t\t\t\t( richData?.image || richData?.description ) ) ||\n\t\t\t\tisFetching\n\t\t\t) && (\n\t\t\t\t<div className=\"block-editor-link-control__search-item-bottom\">\n\t\t\t\t\t{ ( richData?.image || isFetching ) && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\taria-hidden={ ! richData?.image }\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'block-editor-link-control__search-item-image',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'is-placeholder': ! richData?.image,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ richData?.image && (\n\t\t\t\t\t\t\t\t<img src={ richData?.image } alt=\"\" />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ( richData?.description || isFetching ) && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\taria-hidden={ ! richData?.description }\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'block-editor-link-control__search-item-description',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'is-placeholder': ! richData?.description,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ richData?.description && (\n\t\t\t\t\t\t\t\t<Text truncate numberOfLines=\"2\">\n\t\t\t\t\t\t\t\t\t{ richData.description }\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ additionalControls && additionalControls() }\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SACCC,MAAM,EACNC,YAAY,EACZC,kBAAkB,IAAIC,IAAI,QACpB,uBAAuB;AAC9B,SAASC,mBAAmB,EAAEC,aAAa,QAAQ,gBAAgB;AACnE,SAASC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI,QAAQ,kBAAkB;AACnE,SAASC,mBAAmB,IAAIC,SAAS,QAAQ,gBAAgB;;AAEjE;AACA;AACA;AACA,SAASC,UAAU,QAAQ,eAAe;AAE1C,OAAOC,cAAc,MAAM,qBAAqB;AAEhD,eAAe,SAASC,WAAWA,CAAE;EACpCC,KAAK;EACLC,WAAW;EACXC,eAAe,GAAG,KAAK;EACvBC,gBAAgB,GAAG,KAAK;EACxBC,QAAQ;EACRC;AACD,CAAC,EAAG;EACH;EACA,MAAMC,gBAAgB,GAAGJ,eAAe,GAAGF,KAAK,EAAEO,GAAG,GAAG,IAAI;EAE5D,MAAM;IAAEC,QAAQ;IAAEC;EAAW,CAAC,GAAGX,cAAc,CAAEQ,gBAAiB,CAAC;;EAEnE;EACA,MAAMI,WAAW,GAAGF,QAAQ,IAAIG,MAAM,CAACC,IAAI,CAAEJ,QAAS,CAAC,CAACK,MAAM;EAE9D,MAAMC,UAAU,GACbd,KAAK,IAAIZ,mBAAmB,CAAEC,aAAa,CAAEW,KAAK,CAACO,GAAI,CAAC,EAAE,EAAG,CAAC,IAChE,EAAE;;EAEH;EACA,MAAMQ,UAAU,GAAG,CAAEf,KAAK,EAAEO,GAAG,EAAEM,MAAM;EAEvC,MAAMG,YAAY,GACjB,CAAED,UAAU,IACZnB,SAAS,CAAEY,QAAQ,EAAES,KAAK,IAAIjB,KAAK,EAAEiB,KAAK,IAAIH,UAAW,CAAC;EAE3D,IAAII,IAAI;EAER,IAAKV,QAAQ,EAAEU,IAAI,EAAG;IACrBA,IAAI,GAAGC,aAAA;MAAKC,GAAG,EAAGZ,QAAQ,EAAEU,IAAM;MAACG,GAAG,EAAC;IAAE,CAAE,CAAC;EAC7C,CAAC,MAAM,IAAKN,UAAU,EAAG;IACxBG,IAAI,GAAGC,aAAA,CAAC7B,IAAI;MAAC4B,IAAI,EAAG1B,IAAM;MAAC8B,IAAI,EAAG;IAAI,CAAE,CAAC;EAC1C,CAAC,MAAM;IACNJ,IAAI,GAAGC,aAAA,CAAC7B,IAAI;MAAC4B,IAAI,EAAG3B;IAAO,CAAE,CAAC;EAC/B;EAEA,OACC4B,aAAA;IACC,cAAapC,EAAE,CAAE,oBAAqB,CAAG;IACzCwC,SAAS,EAAGzC,UAAU,CAAE,wCAAwC,EAAE;MACjE,YAAY,EAAE,IAAI;MAClB,SAAS,EAAE4B,WAAW;MACtB,aAAa,EAAE,CAAC,CAAED,UAAU;MAC5B,YAAY,EAAE,IAAI;MAClB,UAAU,EAAEM,UAAU;MACtB,cAAc,EAAEC,YAAY,KAAKF;IAClC,CAAE;EAAG,GAELK,aAAA;IAAKI,SAAS,EAAC;EAA4C,GAC1DJ,aAAA;IAAMI,SAAS,EAAC;EAA+C,GAC9DJ,aAAA;IACCI,SAAS,EAAGzC,UAAU,CACrB,6CAA6C,EAC7C;MACC,UAAU,EAAE0B,QAAQ,EAAEU;IACvB,CACD;EAAG,GAEDA,IACG,CAAC,EACPC,aAAA;IAAMI,SAAS,EAAC;EAAgD,GAC7D,CAAER,UAAU,GACbI,aAAA,CAAAK,QAAA,QACCL,aAAA,CAAClC,YAAY;IACZsC,SAAS,EAAC,8CAA8C;IACxDE,IAAI,EAAGzB,KAAK,CAACO;EAAK,GAEhBS,YACW,CAAC,EAEbhB,KAAK,EAAEO,GAAG,IAAIS,YAAY,KAAKF,UAAU,IAC1CK,aAAA;IAAMI,SAAS,EAAC;EAA6C,GAC1DT,UACG,CAEN,CAAC,GAEHK,aAAA;IAAMI,SAAS,EAAC;EAAqD,GAClExC,EAAE,CAAE,eAAgB,CACjB,CAEF,CACD,CAAC,EAEPoC,aAAA,CAACnC,MAAM;IACNkC,IAAI,EAAGxB,IAAM;IACbgC,KAAK,EAAG3C,EAAE,CAAE,MAAO,CAAG;IACtBwC,SAAS,EAAC,+CAA+C;IACzDI,OAAO,EAAG1B,WAAa;IACvB2B,QAAQ,EAAG;EAAI,CACf,CAAC,EACAzB,gBAAgB,IACjBgB,aAAA,CAACnC,MAAM;IACNkC,IAAI,EAAGzB,OAAS;IAChBiC,KAAK,EAAG3C,EAAE,CAAE,QAAS,CAAG;IACxBwC,SAAS,EAAC,iFAAiF;IAC3FI,OAAO,EAAGvB,QAAU;IACpBwB,QAAQ,EAAG;EAAI,CACf,CACD,EACDT,aAAA,CAACtB,UAAU;IAACgC,SAAS,EAAG7B;EAAO,CAAE,CAC7B,CAAC,EAEJ,CAAC,EACAU,WAAW,KACVF,QAAQ,EAAEsB,KAAK,IAAItB,QAAQ,EAAEuB,WAAW,CAAE,IAC7CtB,UAAU,CACV,IACAU,aAAA;IAAKI,SAAS,EAAC;EAA+C,GAC3D,CAAEf,QAAQ,EAAEsB,KAAK,IAAIrB,UAAU,KAChCU,aAAA;IACC,eAAc,CAAEX,QAAQ,EAAEsB,KAAO;IACjCP,SAAS,EAAGzC,UAAU,CACrB,8CAA8C,EAC9C;MACC,gBAAgB,EAAE,CAAE0B,QAAQ,EAAEsB;IAC/B,CACD;EAAG,GAEDtB,QAAQ,EAAEsB,KAAK,IAChBX,aAAA;IAAKC,GAAG,EAAGZ,QAAQ,EAAEsB,KAAO;IAACT,GAAG,EAAC;EAAE,CAAE,CAElC,CACL,EAEC,CAAEb,QAAQ,EAAEuB,WAAW,IAAItB,UAAU,KACtCU,aAAA;IACC,eAAc,CAAEX,QAAQ,EAAEuB,WAAa;IACvCR,SAAS,EAAGzC,UAAU,CACrB,oDAAoD,EACpD;MACC,gBAAgB,EAAE,CAAE0B,QAAQ,EAAEuB;IAC/B,CACD;EAAG,GAEDvB,QAAQ,EAAEuB,WAAW,IACtBZ,aAAA,CAAChC,IAAI;IAAC6C,QAAQ;IAACC,aAAa,EAAC;EAAG,GAC7BzB,QAAQ,CAACuB,WACN,CAEH,CAEF,CACL,EAEC1B,kBAAkB,IAAIA,kBAAkB,CAAC,CACvC,CAAC;AAER"}
1
+ {"version":3,"names":["classnames","__","Button","ExternalLink","__experimentalText","Text","Tooltip","filterURLForDisplay","safeDecodeURI","Icon","globe","info","linkOff","edit","__unstableStripHTML","stripHTML","ViewerSlot","useRichUrlData","LinkPreview","value","onEditClick","hasRichPreviews","hasUnlinkControl","onRemove","additionalControls","showRichPreviews","url","richData","isFetching","hasRichData","Object","keys","length","displayURL","isEmptyURL","displayTitle","title","icon","createElement","src","alt","size","className","Fragment","text","placement","href","label","onClick","iconSize","fillProps","image","description","truncate","numberOfLines"],"sources":["@wordpress/block-editor/src/components/link-control/link-preview.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tExternalLink,\n\t__experimentalText as Text,\n\tTooltip,\n} from '@wordpress/components';\nimport { filterURLForDisplay, safeDecodeURI } from '@wordpress/url';\nimport { Icon, globe, info, linkOff, edit } from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { ViewerSlot } from './viewer-slot';\n\nimport useRichUrlData from './use-rich-url-data';\n\nexport default function LinkPreview( {\n\tvalue,\n\tonEditClick,\n\thasRichPreviews = false,\n\thasUnlinkControl = false,\n\tonRemove,\n\tadditionalControls,\n} ) {\n\t// Avoid fetching if rich previews are not desired.\n\tconst showRichPreviews = hasRichPreviews ? value?.url : null;\n\n\tconst { richData, isFetching } = useRichUrlData( showRichPreviews );\n\n\t// Rich data may be an empty object so test for that.\n\tconst hasRichData = richData && Object.keys( richData ).length;\n\n\tconst displayURL =\n\t\t( value && filterURLForDisplay( safeDecodeURI( value.url ), 16 ) ) ||\n\t\t'';\n\n\t// url can be undefined if the href attribute is unset\n\tconst isEmptyURL = ! value?.url?.length;\n\n\tconst displayTitle =\n\t\t! isEmptyURL &&\n\t\tstripHTML( richData?.title || value?.title || displayURL );\n\n\tlet icon;\n\n\tif ( richData?.icon ) {\n\t\ticon = <img src={ richData?.icon } alt=\"\" />;\n\t} else if ( isEmptyURL ) {\n\t\ticon = <Icon icon={ info } size={ 32 } />;\n\t} else {\n\t\ticon = <Icon icon={ globe } />;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\taria-label={ __( 'Currently selected' ) }\n\t\t\tclassName={ classnames( 'block-editor-link-control__search-item', {\n\t\t\t\t'is-current': true,\n\t\t\t\t'is-rich': hasRichData,\n\t\t\t\t'is-fetching': !! isFetching,\n\t\t\t\t'is-preview': true,\n\t\t\t\t'is-error': isEmptyURL,\n\t\t\t\t'is-url-title': displayTitle === displayURL,\n\t\t\t} ) }\n\t\t>\n\t\t\t<div className=\"block-editor-link-control__search-item-top\">\n\t\t\t\t<span className=\"block-editor-link-control__search-item-header\">\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-link-control__search-item-icon',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'is-image': richData?.icon,\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\t\t{ icon }\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"block-editor-link-control__search-item-details\">\n\t\t\t\t\t\t{ ! isEmptyURL ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\t\ttext={ value.url }\n\t\t\t\t\t\t\t\t\tplacement=\"bottom-start\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-link-control__search-item-title\"\n\t\t\t\t\t\t\t\t\t\thref={ value.url }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ displayTitle }\n\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t</Tooltip>\n\n\t\t\t\t\t\t\t\t{ value?.url && displayTitle !== displayURL && (\n\t\t\t\t\t\t\t\t\t<span className=\"block-editor-link-control__search-item-info\">\n\t\t\t\t\t\t\t\t\t\t{ displayURL }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className=\"block-editor-link-control__search-item-error-notice\">\n\t\t\t\t\t\t\t\t{ __( 'Link is empty' ) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\n\t\t\t\t<Button\n\t\t\t\t\ticon={ edit }\n\t\t\t\t\tlabel={ __( 'Edit' ) }\n\t\t\t\t\tclassName=\"block-editor-link-control__search-item-action\"\n\t\t\t\t\tonClick={ onEditClick }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t\t{ hasUnlinkControl && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Unlink' ) }\n\t\t\t\t\t\tclassName=\"block-editor-link-control__search-item-action block-editor-link-control__unlink\"\n\t\t\t\t\t\tonClick={ onRemove }\n\t\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<ViewerSlot fillProps={ value } />\n\t\t\t</div>\n\n\t\t\t{ !! (\n\t\t\t\t( hasRichData &&\n\t\t\t\t\t( richData?.image || richData?.description ) ) ||\n\t\t\t\tisFetching\n\t\t\t) && (\n\t\t\t\t<div className=\"block-editor-link-control__search-item-bottom\">\n\t\t\t\t\t{ ( richData?.image || isFetching ) && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\taria-hidden={ ! richData?.image }\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'block-editor-link-control__search-item-image',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'is-placeholder': ! richData?.image,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ richData?.image && (\n\t\t\t\t\t\t\t\t<img src={ richData?.image } alt=\"\" />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ( richData?.description || isFetching ) && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\taria-hidden={ ! richData?.description }\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'block-editor-link-control__search-item-description',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'is-placeholder': ! richData?.description,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ richData?.description && (\n\t\t\t\t\t\t\t\t<Text truncate numberOfLines=\"2\">\n\t\t\t\t\t\t\t\t\t{ richData.description }\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ additionalControls && additionalControls() }\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { createElement } from "react";
4
4
  */
5
5
  import { __ } from '@wordpress/i18n';
6
6
  import { MenuItem, TextHighlight } from '@wordpress/components';
7
- import { Icon, globe, page, tag, postList, category, file } from '@wordpress/icons';
7
+ import { Icon, globe, page, tag, postList, category, file, home, verse } from '@wordpress/icons';
8
8
  import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
9
9
  import { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';
10
10
  import { pipe } from '@wordpress/compose';
@@ -24,6 +24,14 @@ function SearchItemIcon({
24
24
  icon = globe;
25
25
  } else if (suggestion.type in ICONS_MAP) {
26
26
  icon = ICONS_MAP[suggestion.type];
27
+ if (suggestion.type === 'page') {
28
+ if (suggestion.isFrontPage) {
29
+ icon = home;
30
+ }
31
+ if (suggestion.isBlogHome) {
32
+ icon = verse;
33
+ }
34
+ }
27
35
  }
28
36
  if (icon) {
29
37
  return createElement(Icon, {
@@ -98,6 +106,9 @@ function getVisualTypeName(suggestion) {
98
106
  if (suggestion.isFrontPage) {
99
107
  return 'front page';
100
108
  }
109
+ if (suggestion.isBlogHome) {
110
+ return 'blog home';
111
+ }
101
112
 
102
113
  // Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.
103
114
  return suggestion.type === 'post_tag' ? 'tag' : suggestion.type;
@@ -1 +1 @@
1
- {"version":3,"names":["__","MenuItem","TextHighlight","Icon","globe","page","tag","postList","category","file","__unstableStripHTML","stripHTML","safeDecodeURI","filterURLForDisplay","getPath","pipe","ICONS_MAP","post","post_tag","attachment","SearchItemIcon","isURL","suggestion","icon","type","createElement","className","addLeadingSlash","url","trimmedURL","trim","length","replace","removeTrailingSlash","partialRight","fn","partialArgs","args","defaultTo","d","v","undefined","getURLForDisplay","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","iconPosition","shortcut","getVisualTypeName","text","title","highlight","isFrontPage"],"sources":["@wordpress/block-editor/src/components/link-control/search-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';\nimport { pipe } from '@wordpress/compose';\n\nconst ICONS_MAP = {\n\tpost: postList,\n\tpage,\n\tpost_tag: tag,\n\tcategory,\n\tattachment: file,\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in ICONS_MAP ) {\n\t\ticon = ICONS_MAP[ suggestion.type ];\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Adds a leading slash to a url if it doesn't already have one.\n * @param {string} url the url to add a leading slash to.\n * @return {string} the url with a leading slash.\n */\nfunction addLeadingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) return url;\n\n\treturn url?.replace( /^\\/?/, '/' );\n}\n\nfunction removeTrailingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) return url;\n\n\treturn url?.replace( /\\/$/, '' );\n}\n\nconst partialRight =\n\t( fn, ...partialArgs ) =>\n\t( ...args ) =>\n\t\tfn( ...args, ...partialArgs );\n\nconst defaultTo = ( d ) => ( v ) => {\n\treturn v === null || v === undefined || v !== v ? d : v;\n};\n\n/**\n * Prepares a URL for display in the UI.\n * - decodes the URL.\n * - filters it (removes protocol, www, etc.).\n * - truncates it if necessary.\n * - adds a leading slash.\n * @param {string} url the url.\n * @return {string} the processed url to display.\n */\nfunction getURLForDisplay( url ) {\n\tif ( ! url ) return url;\n\n\treturn pipe(\n\t\tsafeDecodeURI,\n\t\tgetPath,\n\t\tdefaultTo( '' ),\n\t\tpartialRight( filterURLForDisplay, 24 ),\n\t\tremoveTrailingSlash,\n\t\taddLeadingSlash\n\t)( url );\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: getURLForDisplay( suggestion.url );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn 'front page';\n\t}\n\n\t// Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.\n\treturn suggestion.type === 'post_tag' ? 'tag' : suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n"],"mappings":"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"}
1
+ {"version":3,"names":["__","MenuItem","TextHighlight","Icon","globe","page","tag","postList","category","file","home","verse","__unstableStripHTML","stripHTML","safeDecodeURI","filterURLForDisplay","getPath","pipe","ICONS_MAP","post","post_tag","attachment","SearchItemIcon","isURL","suggestion","icon","type","isFrontPage","isBlogHome","createElement","className","addLeadingSlash","url","trimmedURL","trim","length","replace","removeTrailingSlash","partialRight","fn","partialArgs","args","defaultTo","d","v","undefined","getURLForDisplay","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","iconPosition","shortcut","getVisualTypeName","text","title","highlight"],"sources":["@wordpress/block-editor/src/components/link-control/search-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n\thome,\n\tverse,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';\nimport { pipe } from '@wordpress/compose';\n\nconst ICONS_MAP = {\n\tpost: postList,\n\tpage,\n\tpost_tag: tag,\n\tcategory,\n\tattachment: file,\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in ICONS_MAP ) {\n\t\ticon = ICONS_MAP[ suggestion.type ];\n\t\tif ( suggestion.type === 'page' ) {\n\t\t\tif ( suggestion.isFrontPage ) {\n\t\t\t\ticon = home;\n\t\t\t}\n\t\t\tif ( suggestion.isBlogHome ) {\n\t\t\t\ticon = verse;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Adds a leading slash to a url if it doesn't already have one.\n * @param {string} url the url to add a leading slash to.\n * @return {string} the url with a leading slash.\n */\nfunction addLeadingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) return url;\n\n\treturn url?.replace( /^\\/?/, '/' );\n}\n\nfunction removeTrailingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) return url;\n\n\treturn url?.replace( /\\/$/, '' );\n}\n\nconst partialRight =\n\t( fn, ...partialArgs ) =>\n\t( ...args ) =>\n\t\tfn( ...args, ...partialArgs );\n\nconst defaultTo = ( d ) => ( v ) => {\n\treturn v === null || v === undefined || v !== v ? d : v;\n};\n\n/**\n * Prepares a URL for display in the UI.\n * - decodes the URL.\n * - filters it (removes protocol, www, etc.).\n * - truncates it if necessary.\n * - adds a leading slash.\n * @param {string} url the url.\n * @return {string} the processed url to display.\n */\nfunction getURLForDisplay( url ) {\n\tif ( ! url ) return url;\n\n\treturn pipe(\n\t\tsafeDecodeURI,\n\t\tgetPath,\n\t\tdefaultTo( '' ),\n\t\tpartialRight( filterURLForDisplay, 24 ),\n\t\tremoveTrailingSlash,\n\t\taddLeadingSlash\n\t)( url );\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: getURLForDisplay( suggestion.url );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn 'front page';\n\t}\n\n\tif ( suggestion.isBlogHome ) {\n\t\treturn 'blog home';\n\t}\n\n\t// Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.\n\treturn suggestion.type === 'post_tag' ? 'tag' : suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n"],"mappings":"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"}
@@ -86,7 +86,8 @@ export default function LinkControlSearchResults({
86
86
  isURL: LINK_ENTRY_TYPES.includes(suggestion.type),
87
87
  searchTerm: currentInputValue,
88
88
  shouldShowType: shouldShowSuggestionsTypes,
89
- isFrontPage: suggestion?.isFrontPage
89
+ isFrontPage: suggestion?.isFrontPage,
90
+ isBlogHome: suggestion?.isBlogHome
90
91
  });
91
92
  }))));
92
93
  }
@@ -1 +1 @@
1
- {"version":3,"names":["__","sprintf","VisuallyHidden","MenuGroup","classnames","LinkControlSearchCreate","LinkControlSearchItem","CREATE_TYPE","LINK_ENTRY_TYPES","LinkControlSearchResults","instanceId","withCreateSuggestion","currentInputValue","handleSuggestionClick","suggestionsListProps","buildSuggestionItemProps","suggestions","selectedSuggestion","isLoading","isInitialSuggestions","createSuggestionButtonText","suggestionsQuery","resultsListClasses","isSingleDirectEntryResult","length","includes","type","shouldShowCreateSuggestion","shouldShowSuggestionsTypes","searchResultsLabelId","labelText","searchResultsLabel","createElement","id","className","map","suggestion","index","searchTerm","buttonText","onClick","key","itemProps","isSelected","isURL","shouldShowType","isFrontPage"],"sources":["@wordpress/block-editor/src/components/link-control/search-results.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { VisuallyHidden, MenuGroup } from '@wordpress/components';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * Internal dependencies\n */\nimport LinkControlSearchCreate from './search-create-button';\nimport LinkControlSearchItem from './search-item';\nimport { CREATE_TYPE, LINK_ENTRY_TYPES } from './constants';\n\nexport default function LinkControlSearchResults( {\n\tinstanceId,\n\twithCreateSuggestion,\n\tcurrentInputValue,\n\thandleSuggestionClick,\n\tsuggestionsListProps,\n\tbuildSuggestionItemProps,\n\tsuggestions,\n\tselectedSuggestion,\n\tisLoading,\n\tisInitialSuggestions,\n\tcreateSuggestionButtonText,\n\tsuggestionsQuery,\n} ) {\n\tconst resultsListClasses = classnames(\n\t\t'block-editor-link-control__search-results',\n\t\t{\n\t\t\t'is-loading': isLoading,\n\t\t}\n\t);\n\n\tconst isSingleDirectEntryResult =\n\t\tsuggestions.length === 1 &&\n\t\tLINK_ENTRY_TYPES.includes( suggestions[ 0 ].type );\n\tconst shouldShowCreateSuggestion =\n\t\twithCreateSuggestion &&\n\t\t! isSingleDirectEntryResult &&\n\t\t! isInitialSuggestions;\n\t// If the query has a specified type, then we can skip showing them in the result. See #24839.\n\tconst shouldShowSuggestionsTypes = ! suggestionsQuery?.type;\n\n\t// According to guidelines aria-label should be added if the label\n\t// itself is not visible.\n\t// See: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role\n\tconst searchResultsLabelId = `block-editor-link-control-search-results-label-${ instanceId }`;\n\tconst labelText = isInitialSuggestions\n\t\t? __( 'Suggestions' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t__( 'Search results for \"%s\"' ),\n\t\t\t\tcurrentInputValue\n\t\t );\n\tconst searchResultsLabel = (\n\t\t<VisuallyHidden id={ searchResultsLabelId }>\n\t\t\t{ labelText }\n\t\t</VisuallyHidden>\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-link-control__search-results-wrapper\">\n\t\t\t{ searchResultsLabel }\n\t\t\t<div\n\t\t\t\t{ ...suggestionsListProps }\n\t\t\t\tclassName={ resultsListClasses }\n\t\t\t\taria-labelledby={ searchResultsLabelId }\n\t\t\t>\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t{ suggestions.map( ( suggestion, index ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tshouldShowCreateSuggestion &&\n\t\t\t\t\t\t\tCREATE_TYPE === suggestion.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<LinkControlSearchCreate\n\t\t\t\t\t\t\t\t\tsearchTerm={ currentInputValue }\n\t\t\t\t\t\t\t\t\tbuttonText={ createSuggestionButtonText }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\thandleSuggestionClick( suggestion )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Intentionally only using `type` here as\n\t\t\t\t\t\t\t\t\t// the constant is enough to uniquely\n\t\t\t\t\t\t\t\t\t// identify the single \"CREATE\" suggestion.\n\t\t\t\t\t\t\t\t\tkey={ suggestion.type }\n\t\t\t\t\t\t\t\t\titemProps={ buildSuggestionItemProps(\n\t\t\t\t\t\t\t\t\t\tsuggestion,\n\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tisSelected={ index === selectedSuggestion }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If we're not handling \"Create\" suggestions above then\n\t\t\t\t\t\t// we don't want them in the main results so exit early.\n\t\t\t\t\t\tif ( CREATE_TYPE === suggestion.type ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<LinkControlSearchItem\n\t\t\t\t\t\t\t\tkey={ `${ suggestion.id }-${ suggestion.type }` }\n\t\t\t\t\t\t\t\titemProps={ 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\tsuggestion={ suggestion }\n\t\t\t\t\t\t\t\tindex={ index }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\thandleSuggestionClick( suggestion );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tisSelected={ index === selectedSuggestion }\n\t\t\t\t\t\t\t\tisURL={ LINK_ENTRY_TYPES.includes(\n\t\t\t\t\t\t\t\t\tsuggestion.type\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tsearchTerm={ currentInputValue }\n\t\t\t\t\t\t\t\tshouldShowType={ shouldShowSuggestionsTypes }\n\t\t\t\t\t\t\t\tisFrontPage={ suggestion?.isFrontPage }\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</MenuGroup>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["__","sprintf","VisuallyHidden","MenuGroup","classnames","LinkControlSearchCreate","LinkControlSearchItem","CREATE_TYPE","LINK_ENTRY_TYPES","LinkControlSearchResults","instanceId","withCreateSuggestion","currentInputValue","handleSuggestionClick","suggestionsListProps","buildSuggestionItemProps","suggestions","selectedSuggestion","isLoading","isInitialSuggestions","createSuggestionButtonText","suggestionsQuery","resultsListClasses","isSingleDirectEntryResult","length","includes","type","shouldShowCreateSuggestion","shouldShowSuggestionsTypes","searchResultsLabelId","labelText","searchResultsLabel","createElement","id","className","map","suggestion","index","searchTerm","buttonText","onClick","key","itemProps","isSelected","isURL","shouldShowType","isFrontPage","isBlogHome"],"sources":["@wordpress/block-editor/src/components/link-control/search-results.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { VisuallyHidden, MenuGroup } from '@wordpress/components';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * Internal dependencies\n */\nimport LinkControlSearchCreate from './search-create-button';\nimport LinkControlSearchItem from './search-item';\nimport { CREATE_TYPE, LINK_ENTRY_TYPES } from './constants';\n\nexport default function LinkControlSearchResults( {\n\tinstanceId,\n\twithCreateSuggestion,\n\tcurrentInputValue,\n\thandleSuggestionClick,\n\tsuggestionsListProps,\n\tbuildSuggestionItemProps,\n\tsuggestions,\n\tselectedSuggestion,\n\tisLoading,\n\tisInitialSuggestions,\n\tcreateSuggestionButtonText,\n\tsuggestionsQuery,\n} ) {\n\tconst resultsListClasses = classnames(\n\t\t'block-editor-link-control__search-results',\n\t\t{\n\t\t\t'is-loading': isLoading,\n\t\t}\n\t);\n\n\tconst isSingleDirectEntryResult =\n\t\tsuggestions.length === 1 &&\n\t\tLINK_ENTRY_TYPES.includes( suggestions[ 0 ].type );\n\tconst shouldShowCreateSuggestion =\n\t\twithCreateSuggestion &&\n\t\t! isSingleDirectEntryResult &&\n\t\t! isInitialSuggestions;\n\t// If the query has a specified type, then we can skip showing them in the result. See #24839.\n\tconst shouldShowSuggestionsTypes = ! suggestionsQuery?.type;\n\n\t// According to guidelines aria-label should be added if the label\n\t// itself is not visible.\n\t// See: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role\n\tconst searchResultsLabelId = `block-editor-link-control-search-results-label-${ instanceId }`;\n\tconst labelText = isInitialSuggestions\n\t\t? __( 'Suggestions' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t__( 'Search results for \"%s\"' ),\n\t\t\t\tcurrentInputValue\n\t\t );\n\tconst searchResultsLabel = (\n\t\t<VisuallyHidden id={ searchResultsLabelId }>\n\t\t\t{ labelText }\n\t\t</VisuallyHidden>\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-link-control__search-results-wrapper\">\n\t\t\t{ searchResultsLabel }\n\t\t\t<div\n\t\t\t\t{ ...suggestionsListProps }\n\t\t\t\tclassName={ resultsListClasses }\n\t\t\t\taria-labelledby={ searchResultsLabelId }\n\t\t\t>\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t{ suggestions.map( ( suggestion, index ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tshouldShowCreateSuggestion &&\n\t\t\t\t\t\t\tCREATE_TYPE === suggestion.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<LinkControlSearchCreate\n\t\t\t\t\t\t\t\t\tsearchTerm={ currentInputValue }\n\t\t\t\t\t\t\t\t\tbuttonText={ createSuggestionButtonText }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\thandleSuggestionClick( suggestion )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Intentionally only using `type` here as\n\t\t\t\t\t\t\t\t\t// the constant is enough to uniquely\n\t\t\t\t\t\t\t\t\t// identify the single \"CREATE\" suggestion.\n\t\t\t\t\t\t\t\t\tkey={ suggestion.type }\n\t\t\t\t\t\t\t\t\titemProps={ buildSuggestionItemProps(\n\t\t\t\t\t\t\t\t\t\tsuggestion,\n\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tisSelected={ index === selectedSuggestion }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If we're not handling \"Create\" suggestions above then\n\t\t\t\t\t\t// we don't want them in the main results so exit early.\n\t\t\t\t\t\tif ( CREATE_TYPE === suggestion.type ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<LinkControlSearchItem\n\t\t\t\t\t\t\t\tkey={ `${ suggestion.id }-${ suggestion.type }` }\n\t\t\t\t\t\t\t\titemProps={ 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\tsuggestion={ suggestion }\n\t\t\t\t\t\t\t\tindex={ index }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\thandleSuggestionClick( suggestion );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tisSelected={ index === selectedSuggestion }\n\t\t\t\t\t\t\t\tisURL={ LINK_ENTRY_TYPES.includes(\n\t\t\t\t\t\t\t\t\tsuggestion.type\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tsearchTerm={ currentInputValue }\n\t\t\t\t\t\t\t\tshouldShowType={ shouldShowSuggestionsTypes }\n\t\t\t\t\t\t\t\tisFrontPage={ suggestion?.isFrontPage }\n\t\t\t\t\t\t\t\tisBlogHome={ suggestion?.isBlogHome }\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</MenuGroup>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -1,19 +1,24 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useState, useEffect } from '@wordpress/element';
4
+ import { useState } from '@wordpress/element';
5
+
6
+ /**
7
+ * External dependencies
8
+ */
9
+ import fastDeepEqual from 'fast-deep-equal';
5
10
  export default function useInternalValue(value) {
6
11
  const [internalValue, setInternalValue] = useState(value || {});
12
+ const [previousValue, setPreviousValue] = useState(value);
7
13
 
8
14
  // If the value prop changes, update the internal state.
9
- useEffect(() => {
10
- setInternalValue(prevValue => {
11
- if (value && value !== prevValue) {
12
- return value;
13
- }
14
- return prevValue;
15
- });
16
- }, [value]);
15
+ // See:
16
+ // - https://github.com/WordPress/gutenberg/pull/51387#issuecomment-1722927384.
17
+ // - https://react.dev/reference/react/useState#storing-information-from-previous-renders.
18
+ if (!fastDeepEqual(value, previousValue)) {
19
+ setPreviousValue(value);
20
+ setInternalValue(value);
21
+ }
17
22
  const setInternalURLInputValue = nextValue => {
18
23
  setInternalValue({
19
24
  ...internalValue,
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useEffect","useInternalValue","value","internalValue","setInternalValue","prevValue","setInternalURLInputValue","nextValue","url","setInternalTextInputValue","title","createSetInternalSettingValueHandler","settingsKeys","settingsUpdates","Object","keys","reduce","acc","key","includes"],"sources":["@wordpress/block-editor/src/components/link-control/use-internal-value.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\n\nexport default function useInternalValue( value ) {\n\tconst [ internalValue, setInternalValue ] = useState( value || {} );\n\n\t// If the value prop changes, update the internal state.\n\tuseEffect( () => {\n\t\tsetInternalValue( ( prevValue ) => {\n\t\t\tif ( value && value !== prevValue ) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\treturn prevValue;\n\t\t} );\n\t}, [ value ] );\n\n\tconst setInternalURLInputValue = ( nextValue ) => {\n\t\tsetInternalValue( {\n\t\t\t...internalValue,\n\t\t\turl: nextValue,\n\t\t} );\n\t};\n\n\tconst setInternalTextInputValue = ( nextValue ) => {\n\t\tsetInternalValue( {\n\t\t\t...internalValue,\n\t\t\ttitle: nextValue,\n\t\t} );\n\t};\n\n\tconst createSetInternalSettingValueHandler =\n\t\t( settingsKeys ) => ( nextValue ) => {\n\t\t\t// Only apply settings values which are defined in the settings prop.\n\t\t\tconst settingsUpdates = Object.keys( nextValue ).reduce(\n\t\t\t\t( acc, key ) => {\n\t\t\t\t\tif ( settingsKeys.includes( key ) ) {\n\t\t\t\t\t\tacc[ key ] = nextValue[ key ];\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\tsetInternalValue( {\n\t\t\t\t...internalValue,\n\t\t\t\t...settingsUpdates,\n\t\t\t} );\n\t\t};\n\n\treturn [\n\t\tinternalValue,\n\t\tsetInternalValue,\n\t\tsetInternalURLInputValue,\n\t\tsetInternalTextInputValue,\n\t\tcreateSetInternalSettingValueHandler,\n\t];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,EAAEC,SAAS,QAAQ,oBAAoB;AAExD,eAAe,SAASC,gBAAgBA,CAAEC,KAAK,EAAG;EACjD,MAAM,CAAEC,aAAa,EAAEC,gBAAgB,CAAE,GAAGL,QAAQ,CAAEG,KAAK,IAAI,CAAC,CAAE,CAAC;;EAEnE;EACAF,SAAS,CAAE,MAAM;IAChBI,gBAAgB,CAAIC,SAAS,IAAM;MAClC,IAAKH,KAAK,IAAIA,KAAK,KAAKG,SAAS,EAAG;QACnC,OAAOH,KAAK;MACb;MAEA,OAAOG,SAAS;IACjB,CAAE,CAAC;EACJ,CAAC,EAAE,CAAEH,KAAK,CAAG,CAAC;EAEd,MAAMI,wBAAwB,GAAKC,SAAS,IAAM;IACjDH,gBAAgB,CAAE;MACjB,GAAGD,aAAa;MAChBK,GAAG,EAAED;IACN,CAAE,CAAC;EACJ,CAAC;EAED,MAAME,yBAAyB,GAAKF,SAAS,IAAM;IAClDH,gBAAgB,CAAE;MACjB,GAAGD,aAAa;MAChBO,KAAK,EAAEH;IACR,CAAE,CAAC;EACJ,CAAC;EAED,MAAMI,oCAAoC,GACvCC,YAAY,IAAQL,SAAS,IAAM;IACpC;IACA,MAAMM,eAAe,GAAGC,MAAM,CAACC,IAAI,CAAER,SAAU,CAAC,CAACS,MAAM,CACtD,CAAEC,GAAG,EAAEC,GAAG,KAAM;MACf,IAAKN,YAAY,CAACO,QAAQ,CAAED,GAAI,CAAC,EAAG;QACnCD,GAAG,CAAEC,GAAG,CAAE,GAAGX,SAAS,CAAEW,GAAG,CAAE;MAC9B;MACA,OAAOD,GAAG;IACX,CAAC,EACD,CAAC,CACF,CAAC;IAEDb,gBAAgB,CAAE;MACjB,GAAGD,aAAa;MAChB,GAAGU;IACJ,CAAE,CAAC;EACJ,CAAC;EAEF,OAAO,CACNV,aAAa,EACbC,gBAAgB,EAChBE,wBAAwB,EACxBG,yBAAyB,EACzBE,oCAAoC,CACpC;AACF"}
1
+ {"version":3,"names":["useState","fastDeepEqual","useInternalValue","value","internalValue","setInternalValue","previousValue","setPreviousValue","setInternalURLInputValue","nextValue","url","setInternalTextInputValue","title","createSetInternalSettingValueHandler","settingsKeys","settingsUpdates","Object","keys","reduce","acc","key","includes"],"sources":["@wordpress/block-editor/src/components/link-control/use-internal-value.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\n\n/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal';\n\nexport default function useInternalValue( value ) {\n\tconst [ internalValue, setInternalValue ] = useState( value || {} );\n\tconst [ previousValue, setPreviousValue ] = useState( value );\n\n\t// If the value prop changes, update the internal state.\n\t// See:\n\t// - https://github.com/WordPress/gutenberg/pull/51387#issuecomment-1722927384.\n\t// - https://react.dev/reference/react/useState#storing-information-from-previous-renders.\n\tif ( ! fastDeepEqual( value, previousValue ) ) {\n\t\tsetPreviousValue( value );\n\t\tsetInternalValue( value );\n\t}\n\n\tconst setInternalURLInputValue = ( nextValue ) => {\n\t\tsetInternalValue( {\n\t\t\t...internalValue,\n\t\t\turl: nextValue,\n\t\t} );\n\t};\n\n\tconst setInternalTextInputValue = ( nextValue ) => {\n\t\tsetInternalValue( {\n\t\t\t...internalValue,\n\t\t\ttitle: nextValue,\n\t\t} );\n\t};\n\n\tconst createSetInternalSettingValueHandler =\n\t\t( settingsKeys ) => ( nextValue ) => {\n\t\t\t// Only apply settings values which are defined in the settings prop.\n\t\t\tconst settingsUpdates = Object.keys( nextValue ).reduce(\n\t\t\t\t( acc, key ) => {\n\t\t\t\t\tif ( settingsKeys.includes( key ) ) {\n\t\t\t\t\t\tacc[ key ] = nextValue[ key ];\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\tsetInternalValue( {\n\t\t\t\t...internalValue,\n\t\t\t\t...settingsUpdates,\n\t\t\t} );\n\t\t};\n\n\treturn [\n\t\tinternalValue,\n\t\tsetInternalValue,\n\t\tsetInternalURLInputValue,\n\t\tsetInternalTextInputValue,\n\t\tcreateSetInternalSettingValueHandler,\n\t];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,oBAAoB;;AAE7C;AACA;AACA;AACA,OAAOC,aAAa,MAAM,iBAAiB;AAE3C,eAAe,SAASC,gBAAgBA,CAAEC,KAAK,EAAG;EACjD,MAAM,CAAEC,aAAa,EAAEC,gBAAgB,CAAE,GAAGL,QAAQ,CAAEG,KAAK,IAAI,CAAC,CAAE,CAAC;EACnE,MAAM,CAAEG,aAAa,EAAEC,gBAAgB,CAAE,GAAGP,QAAQ,CAAEG,KAAM,CAAC;;EAE7D;EACA;EACA;EACA;EACA,IAAK,CAAEF,aAAa,CAAEE,KAAK,EAAEG,aAAc,CAAC,EAAG;IAC9CC,gBAAgB,CAAEJ,KAAM,CAAC;IACzBE,gBAAgB,CAAEF,KAAM,CAAC;EAC1B;EAEA,MAAMK,wBAAwB,GAAKC,SAAS,IAAM;IACjDJ,gBAAgB,CAAE;MACjB,GAAGD,aAAa;MAChBM,GAAG,EAAED;IACN,CAAE,CAAC;EACJ,CAAC;EAED,MAAME,yBAAyB,GAAKF,SAAS,IAAM;IAClDJ,gBAAgB,CAAE;MACjB,GAAGD,aAAa;MAChBQ,KAAK,EAAEH;IACR,CAAE,CAAC;EACJ,CAAC;EAED,MAAMI,oCAAoC,GACvCC,YAAY,IAAQL,SAAS,IAAM;IACpC;IACA,MAAMM,eAAe,GAAGC,MAAM,CAACC,IAAI,CAAER,SAAU,CAAC,CAACS,MAAM,CACtD,CAAEC,GAAG,EAAEC,GAAG,KAAM;MACf,IAAKN,YAAY,CAACO,QAAQ,CAAED,GAAI,CAAC,EAAG;QACnCD,GAAG,CAAEC,GAAG,CAAE,GAAGX,SAAS,CAAEW,GAAG,CAAE;MAC9B;MACA,OAAOD,GAAG;IACX,CAAC,EACD,CAAC,CACF,CAAC;IAEDd,gBAAgB,CAAE;MACjB,GAAGD,aAAa;MAChB,GAAGW;IACJ,CAAE,CAAC;EACJ,CAAC;EAEF,OAAO,CACNX,aAAa,EACbC,gBAAgB,EAChBG,wBAAwB,EACxBG,yBAAyB,EACzBE,oCAAoC,CACpC;AACF"}
@@ -31,7 +31,7 @@ export const handleDirectEntry = val => {
31
31
  type
32
32
  }]);
33
33
  };
34
- const handleEntitySearch = async (val, suggestionsQuery, fetchSearchSuggestions, withCreateSuggestion, pageOnFront) => {
34
+ const handleEntitySearch = async (val, suggestionsQuery, fetchSearchSuggestions, withCreateSuggestion, pageOnFront, pageForPosts) => {
35
35
  const {
36
36
  isInitialSuggestions
37
37
  } = suggestionsQuery;
@@ -42,6 +42,9 @@ const handleEntitySearch = async (val, suggestionsQuery, fetchSearchSuggestions,
42
42
  if (Number(result.id) === pageOnFront) {
43
43
  result.isFrontPage = true;
44
44
  return result;
45
+ } else if (Number(result.id) === pageForPosts) {
46
+ result.isBlogHome = true;
47
+ return result;
45
48
  }
46
49
  return result;
47
50
  });
@@ -76,16 +79,18 @@ const handleEntitySearch = async (val, suggestionsQuery, fetchSearchSuggestions,
76
79
  type: CREATE_TYPE
77
80
  });
78
81
  };
79
- export default function useSearchHandler(suggestionsQuery, allowDirectEntry, withCreateSuggestion, withURLSuggestion) {
82
+ export default function useSearchHandler(suggestionsQuery, allowDirectEntry, withCreateSuggestion) {
80
83
  const {
81
84
  fetchSearchSuggestions,
82
- pageOnFront
85
+ pageOnFront,
86
+ pageForPosts
83
87
  } = useSelect(select => {
84
88
  const {
85
89
  getSettings
86
90
  } = select(blockEditorStore);
87
91
  return {
88
92
  pageOnFront: getSettings().pageOnFront,
93
+ pageForPosts: getSettings().pageForPosts,
89
94
  fetchSearchSuggestions: getSettings().__experimentalFetchLinkSuggestions
90
95
  };
91
96
  }, []);
@@ -98,7 +103,7 @@ export default function useSearchHandler(suggestionsQuery, allowDirectEntry, wit
98
103
  }) : handleEntitySearch(val, {
99
104
  ...suggestionsQuery,
100
105
  isInitialSuggestions
101
- }, fetchSearchSuggestions, withCreateSuggestion, withURLSuggestion, pageOnFront);
102
- }, [directEntryHandler, fetchSearchSuggestions, pageOnFront, suggestionsQuery, withCreateSuggestion, withURLSuggestion]);
106
+ }, fetchSearchSuggestions, withCreateSuggestion, pageOnFront, pageForPosts);
107
+ }, [directEntryHandler, fetchSearchSuggestions, pageOnFront, pageForPosts, suggestionsQuery, withCreateSuggestion]);
103
108
  }
104
109
  //# sourceMappingURL=use-search-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getProtocol","prependHTTP","useCallback","useSelect","isURLLike","CREATE_TYPE","TEL_TYPE","MAILTO_TYPE","INTERNAL_TYPE","URL_TYPE","store","blockEditorStore","handleNoop","Promise","resolve","handleDirectEntry","val","type","protocol","includes","startsWith","id","title","url","handleEntitySearch","suggestionsQuery","fetchSearchSuggestions","withCreateSuggestion","pageOnFront","isInitialSuggestions","results","map","result","Number","isFrontPage","concat","useSearchHandler","allowDirectEntry","withURLSuggestion","select","getSettings","__experimentalFetchLinkSuggestions","directEntryHandler"],"sources":["@wordpress/block-editor/src/components/link-control/use-search-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getProtocol, prependHTTP } from '@wordpress/url';\nimport { useCallback } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport isURLLike from './is-url-like';\nimport {\n\tCREATE_TYPE,\n\tTEL_TYPE,\n\tMAILTO_TYPE,\n\tINTERNAL_TYPE,\n\tURL_TYPE,\n} from './constants';\nimport { store as blockEditorStore } from '../../store';\n\nexport const handleNoop = () => Promise.resolve( [] );\n\nexport const handleDirectEntry = ( val ) => {\n\tlet type = URL_TYPE;\n\n\tconst protocol = getProtocol( val ) || '';\n\n\tif ( protocol.includes( 'mailto' ) ) {\n\t\ttype = MAILTO_TYPE;\n\t}\n\n\tif ( protocol.includes( 'tel' ) ) {\n\t\ttype = TEL_TYPE;\n\t}\n\n\tif ( val?.startsWith( '#' ) ) {\n\t\ttype = INTERNAL_TYPE;\n\t}\n\n\treturn Promise.resolve( [\n\t\t{\n\t\t\tid: val,\n\t\t\ttitle: val,\n\t\t\turl: type === 'URL' ? prependHTTP( val ) : val,\n\t\t\ttype,\n\t\t},\n\t] );\n};\n\nconst handleEntitySearch = async (\n\tval,\n\tsuggestionsQuery,\n\tfetchSearchSuggestions,\n\twithCreateSuggestion,\n\tpageOnFront\n) => {\n\tconst { isInitialSuggestions } = suggestionsQuery;\n\n\tconst results = await fetchSearchSuggestions( val, suggestionsQuery );\n\n\t// Identify front page and update type to match.\n\tresults.map( ( result ) => {\n\t\tif ( Number( result.id ) === pageOnFront ) {\n\t\t\tresult.isFrontPage = true;\n\t\t\treturn result;\n\t\t}\n\n\t\treturn result;\n\t} );\n\n\t// If displaying initial suggestions just return plain results.\n\tif ( isInitialSuggestions ) {\n\t\treturn results;\n\t}\n\n\t// Here we append a faux suggestion to represent a \"CREATE\" option. This\n\t// is detected in the rendering of the search results and handled as a\n\t// special case. This is currently necessary because the suggestions\n\t// dropdown will only appear if there are valid suggestions and\n\t// therefore unless the create option is a suggestion it will not\n\t// display in scenarios where there are no results returned from the\n\t// API. In addition promoting CREATE to a first class suggestion affords\n\t// the a11y benefits afforded by `URLInput` to all suggestions (eg:\n\t// keyboard handling, ARIA roles...etc).\n\t//\n\t// Note also that the value of the `title` and `url` properties must correspond\n\t// to the text value of the `<input>`. This is because `title` is used\n\t// when creating the suggestion. Similarly `url` is used when using keyboard to select\n\t// the suggestion (the <form> `onSubmit` handler falls-back to `url`).\n\treturn isURLLike( val ) || ! withCreateSuggestion\n\t\t? results\n\t\t: results.concat( {\n\t\t\t\t// the `id` prop is intentionally ommitted here because it\n\t\t\t\t// is never exposed as part of the component's public API.\n\t\t\t\t// see: https://github.com/WordPress/gutenberg/pull/19775#discussion_r378931316.\n\t\t\t\ttitle: val, // Must match the existing `<input>`s text value.\n\t\t\t\turl: val, // Must match the existing `<input>`s text value.\n\t\t\t\ttype: CREATE_TYPE,\n\t\t } );\n};\n\nexport default function useSearchHandler(\n\tsuggestionsQuery,\n\tallowDirectEntry,\n\twithCreateSuggestion,\n\twithURLSuggestion\n) {\n\tconst { fetchSearchSuggestions, pageOnFront } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\n\t\treturn {\n\t\t\tpageOnFront: getSettings().pageOnFront,\n\t\t\tfetchSearchSuggestions:\n\t\t\t\tgetSettings().__experimentalFetchLinkSuggestions,\n\t\t};\n\t}, [] );\n\n\tconst directEntryHandler = allowDirectEntry\n\t\t? handleDirectEntry\n\t\t: handleNoop;\n\n\treturn useCallback(\n\t\t( val, { isInitialSuggestions } ) => {\n\t\t\treturn isURLLike( val )\n\t\t\t\t? directEntryHandler( val, { isInitialSuggestions } )\n\t\t\t\t: handleEntitySearch(\n\t\t\t\t\t\tval,\n\t\t\t\t\t\t{ ...suggestionsQuery, isInitialSuggestions },\n\t\t\t\t\t\tfetchSearchSuggestions,\n\t\t\t\t\t\twithCreateSuggestion,\n\t\t\t\t\t\twithURLSuggestion,\n\t\t\t\t\t\tpageOnFront\n\t\t\t\t );\n\t\t},\n\t\t[\n\t\t\tdirectEntryHandler,\n\t\t\tfetchSearchSuggestions,\n\t\t\tpageOnFront,\n\t\t\tsuggestionsQuery,\n\t\t\twithCreateSuggestion,\n\t\t\twithURLSuggestion,\n\t\t]\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,WAAW,QAAQ,gBAAgB;AACzD,SAASC,WAAW,QAAQ,oBAAoB;AAChD,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,SAAS,MAAM,eAAe;AACrC,SACCC,WAAW,EACXC,QAAQ,EACRC,WAAW,EACXC,aAAa,EACbC,QAAQ,QACF,aAAa;AACpB,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAEvD,OAAO,MAAMC,UAAU,GAAGA,CAAA,KAAMC,OAAO,CAACC,OAAO,CAAE,EAAG,CAAC;AAErD,OAAO,MAAMC,iBAAiB,GAAKC,GAAG,IAAM;EAC3C,IAAIC,IAAI,GAAGR,QAAQ;EAEnB,MAAMS,QAAQ,GAAGlB,WAAW,CAAEgB,GAAI,CAAC,IAAI,EAAE;EAEzC,IAAKE,QAAQ,CAACC,QAAQ,CAAE,QAAS,CAAC,EAAG;IACpCF,IAAI,GAAGV,WAAW;EACnB;EAEA,IAAKW,QAAQ,CAACC,QAAQ,CAAE,KAAM,CAAC,EAAG;IACjCF,IAAI,GAAGX,QAAQ;EAChB;EAEA,IAAKU,GAAG,EAAEI,UAAU,CAAE,GAAI,CAAC,EAAG;IAC7BH,IAAI,GAAGT,aAAa;EACrB;EAEA,OAAOK,OAAO,CAACC,OAAO,CAAE,CACvB;IACCO,EAAE,EAAEL,GAAG;IACPM,KAAK,EAAEN,GAAG;IACVO,GAAG,EAAEN,IAAI,KAAK,KAAK,GAAGhB,WAAW,CAAEe,GAAI,CAAC,GAAGA,GAAG;IAC9CC;EACD,CAAC,CACA,CAAC;AACJ,CAAC;AAED,MAAMO,kBAAkB,GAAG,MAAAA,CAC1BR,GAAG,EACHS,gBAAgB,EAChBC,sBAAsB,EACtBC,oBAAoB,EACpBC,WAAW,KACP;EACJ,MAAM;IAAEC;EAAqB,CAAC,GAAGJ,gBAAgB;EAEjD,MAAMK,OAAO,GAAG,MAAMJ,sBAAsB,CAAEV,GAAG,EAAES,gBAAiB,CAAC;;EAErE;EACAK,OAAO,CAACC,GAAG,CAAIC,MAAM,IAAM;IAC1B,IAAKC,MAAM,CAAED,MAAM,CAACX,EAAG,CAAC,KAAKO,WAAW,EAAG;MAC1CI,MAAM,CAACE,WAAW,GAAG,IAAI;MACzB,OAAOF,MAAM;IACd;IAEA,OAAOA,MAAM;EACd,CAAE,CAAC;;EAEH;EACA,IAAKH,oBAAoB,EAAG;IAC3B,OAAOC,OAAO;EACf;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO1B,SAAS,CAAEY,GAAI,CAAC,IAAI,CAAEW,oBAAoB,GAC9CG,OAAO,GACPA,OAAO,CAACK,MAAM,CAAE;IAChB;IACA;IACA;IACAb,KAAK,EAAEN,GAAG;IAAE;IACZO,GAAG,EAAEP,GAAG;IAAE;IACVC,IAAI,EAAEZ;EACN,CAAE,CAAC;AACP,CAAC;AAED,eAAe,SAAS+B,gBAAgBA,CACvCX,gBAAgB,EAChBY,gBAAgB,EAChBV,oBAAoB,EACpBW,iBAAiB,EAChB;EACD,MAAM;IAAEZ,sBAAsB;IAAEE;EAAY,CAAC,GAAGzB,SAAS,CAAIoC,MAAM,IAAM;IACxE,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAE5B,gBAAiB,CAAC;IAElD,OAAO;MACNiB,WAAW,EAAEY,WAAW,CAAC,CAAC,CAACZ,WAAW;MACtCF,sBAAsB,EACrBc,WAAW,CAAC,CAAC,CAACC;IAChB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMC,kBAAkB,GAAGL,gBAAgB,GACxCtB,iBAAiB,GACjBH,UAAU;EAEb,OAAOV,WAAW,CACjB,CAAEc,GAAG,EAAE;IAAEa;EAAqB,CAAC,KAAM;IACpC,OAAOzB,SAAS,CAAEY,GAAI,CAAC,GACpB0B,kBAAkB,CAAE1B,GAAG,EAAE;MAAEa;IAAqB,CAAE,CAAC,GACnDL,kBAAkB,CAClBR,GAAG,EACH;MAAE,GAAGS,gBAAgB;MAAEI;IAAqB,CAAC,EAC7CH,sBAAsB,EACtBC,oBAAoB,EACpBW,iBAAiB,EACjBV,WACA,CAAC;EACL,CAAC,EACD,CACCc,kBAAkB,EAClBhB,sBAAsB,EACtBE,WAAW,EACXH,gBAAgB,EAChBE,oBAAoB,EACpBW,iBAAiB,CAEnB,CAAC;AACF"}
1
+ {"version":3,"names":["getProtocol","prependHTTP","useCallback","useSelect","isURLLike","CREATE_TYPE","TEL_TYPE","MAILTO_TYPE","INTERNAL_TYPE","URL_TYPE","store","blockEditorStore","handleNoop","Promise","resolve","handleDirectEntry","val","type","protocol","includes","startsWith","id","title","url","handleEntitySearch","suggestionsQuery","fetchSearchSuggestions","withCreateSuggestion","pageOnFront","pageForPosts","isInitialSuggestions","results","map","result","Number","isFrontPage","isBlogHome","concat","useSearchHandler","allowDirectEntry","select","getSettings","__experimentalFetchLinkSuggestions","directEntryHandler"],"sources":["@wordpress/block-editor/src/components/link-control/use-search-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getProtocol, prependHTTP } from '@wordpress/url';\nimport { useCallback } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport isURLLike from './is-url-like';\nimport {\n\tCREATE_TYPE,\n\tTEL_TYPE,\n\tMAILTO_TYPE,\n\tINTERNAL_TYPE,\n\tURL_TYPE,\n} from './constants';\nimport { store as blockEditorStore } from '../../store';\n\nexport const handleNoop = () => Promise.resolve( [] );\n\nexport const handleDirectEntry = ( val ) => {\n\tlet type = URL_TYPE;\n\n\tconst protocol = getProtocol( val ) || '';\n\n\tif ( protocol.includes( 'mailto' ) ) {\n\t\ttype = MAILTO_TYPE;\n\t}\n\n\tif ( protocol.includes( 'tel' ) ) {\n\t\ttype = TEL_TYPE;\n\t}\n\n\tif ( val?.startsWith( '#' ) ) {\n\t\ttype = INTERNAL_TYPE;\n\t}\n\n\treturn Promise.resolve( [\n\t\t{\n\t\t\tid: val,\n\t\t\ttitle: val,\n\t\t\turl: type === 'URL' ? prependHTTP( val ) : val,\n\t\t\ttype,\n\t\t},\n\t] );\n};\n\nconst handleEntitySearch = async (\n\tval,\n\tsuggestionsQuery,\n\tfetchSearchSuggestions,\n\twithCreateSuggestion,\n\tpageOnFront,\n\tpageForPosts\n) => {\n\tconst { isInitialSuggestions } = suggestionsQuery;\n\n\tconst results = await fetchSearchSuggestions( val, suggestionsQuery );\n\n\t// Identify front page and update type to match.\n\tresults.map( ( result ) => {\n\t\tif ( Number( result.id ) === pageOnFront ) {\n\t\t\tresult.isFrontPage = true;\n\t\t\treturn result;\n\t\t} else if ( Number( result.id ) === pageForPosts ) {\n\t\t\tresult.isBlogHome = true;\n\t\t\treturn result;\n\t\t}\n\n\t\treturn result;\n\t} );\n\n\t// If displaying initial suggestions just return plain results.\n\tif ( isInitialSuggestions ) {\n\t\treturn results;\n\t}\n\n\t// Here we append a faux suggestion to represent a \"CREATE\" option. This\n\t// is detected in the rendering of the search results and handled as a\n\t// special case. This is currently necessary because the suggestions\n\t// dropdown will only appear if there are valid suggestions and\n\t// therefore unless the create option is a suggestion it will not\n\t// display in scenarios where there are no results returned from the\n\t// API. In addition promoting CREATE to a first class suggestion affords\n\t// the a11y benefits afforded by `URLInput` to all suggestions (eg:\n\t// keyboard handling, ARIA roles...etc).\n\t//\n\t// Note also that the value of the `title` and `url` properties must correspond\n\t// to the text value of the `<input>`. This is because `title` is used\n\t// when creating the suggestion. Similarly `url` is used when using keyboard to select\n\t// the suggestion (the <form> `onSubmit` handler falls-back to `url`).\n\treturn isURLLike( val ) || ! withCreateSuggestion\n\t\t? results\n\t\t: results.concat( {\n\t\t\t\t// the `id` prop is intentionally ommitted here because it\n\t\t\t\t// is never exposed as part of the component's public API.\n\t\t\t\t// see: https://github.com/WordPress/gutenberg/pull/19775#discussion_r378931316.\n\t\t\t\ttitle: val, // Must match the existing `<input>`s text value.\n\t\t\t\turl: val, // Must match the existing `<input>`s text value.\n\t\t\t\ttype: CREATE_TYPE,\n\t\t } );\n};\n\nexport default function useSearchHandler(\n\tsuggestionsQuery,\n\tallowDirectEntry,\n\twithCreateSuggestion\n) {\n\tconst { fetchSearchSuggestions, pageOnFront, pageForPosts } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tpageOnFront: getSettings().pageOnFront,\n\t\t\t\tpageForPosts: getSettings().pageForPosts,\n\t\t\t\tfetchSearchSuggestions:\n\t\t\t\t\tgetSettings().__experimentalFetchLinkSuggestions,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst directEntryHandler = allowDirectEntry\n\t\t? handleDirectEntry\n\t\t: handleNoop;\n\n\treturn useCallback(\n\t\t( val, { isInitialSuggestions } ) => {\n\t\t\treturn isURLLike( val )\n\t\t\t\t? directEntryHandler( val, { isInitialSuggestions } )\n\t\t\t\t: handleEntitySearch(\n\t\t\t\t\t\tval,\n\t\t\t\t\t\t{ ...suggestionsQuery, isInitialSuggestions },\n\t\t\t\t\t\tfetchSearchSuggestions,\n\t\t\t\t\t\twithCreateSuggestion,\n\t\t\t\t\t\tpageOnFront,\n\t\t\t\t\t\tpageForPosts\n\t\t\t\t );\n\t\t},\n\t\t[\n\t\t\tdirectEntryHandler,\n\t\t\tfetchSearchSuggestions,\n\t\t\tpageOnFront,\n\t\t\tpageForPosts,\n\t\t\tsuggestionsQuery,\n\t\t\twithCreateSuggestion,\n\t\t]\n\t);\n}\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { createElement } from "react";
3
3
  * WordPress dependencies
4
4
  */
5
5
  import { useInstanceId, useMergeRefs, __experimentalUseFixedWindowList as useFixedWindowList } from '@wordpress/compose';
6
- import { __experimentalTreeGrid as TreeGrid } from '@wordpress/components';
6
+ import { __experimentalTreeGrid as TreeGrid, VisuallyHidden } from '@wordpress/components';
7
7
  import { AsyncModeProvider, useSelect } from '@wordpress/data';
8
8
  import deprecated from '@wordpress/deprecated';
9
9
  import { useCallback, useEffect, useMemo, useRef, useReducer, forwardRef, useState } from '@wordpress/element';
@@ -204,12 +204,15 @@ function ListViewComponent({
204
204
  if (!clientIdsTree.length && !showAppender) {
205
205
  return null;
206
206
  }
207
+ const describedById = description && `block-editor-list-view-description-${instanceId}`;
207
208
  return createElement(AsyncModeProvider, {
208
209
  value: true
209
210
  }, createElement(ListViewDropIndicator, {
210
211
  listViewRef: elementRef,
211
212
  blockDropTarget: blockDropTarget
212
- }), createElement(TreeGrid, {
213
+ }), description && createElement(VisuallyHidden, {
214
+ id: describedById
215
+ }, description), createElement(TreeGrid, {
213
216
  id: id,
214
217
  className: "block-editor-list-view-tree",
215
218
  "aria-label": __('Block navigation structure'),
@@ -217,10 +220,8 @@ function ListViewComponent({
217
220
  onCollapseRow: collapseRow,
218
221
  onExpandRow: expandRow,
219
222
  onFocusRow: focusRow,
220
- applicationAriaLabel: __('Block navigation structure')
221
- // eslint-disable-next-line jsx-a11y/aria-props
222
- ,
223
- "aria-description": description
223
+ applicationAriaLabel: __('Block navigation structure'),
224
+ "aria-describedby": describedById
224
225
  }, createElement(ListViewContext.Provider, {
225
226
  value: contextValue
226
227
  }, createElement(ListViewBranch, {
@@ -1 +1 @@
1
- {"version":3,"names":["useInstanceId","useMergeRefs","__experimentalUseFixedWindowList","useFixedWindowList","__experimentalTreeGrid","TreeGrid","AsyncModeProvider","useSelect","deprecated","useCallback","useEffect","useMemo","useRef","useReducer","forwardRef","useState","__","ListViewBranch","ListViewContext","ListViewDropIndicator","useBlockSelection","useListViewClientIds","useListViewDropZone","useListViewExpandSelectedItem","store","blockEditorStore","BlockSettingsDropdown","focusListItem","expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","ListViewComponent","blocks","dropZoneElement","showBlockMovers","isExpanded","showAppender","blockSettingsMenu","BlockSettingsMenu","rootClientId","description","onSelect","additionalBlockContent","AdditionalBlockContent","ref","since","alternative","instanceId","clientIdsTree","draggedClientIds","selectedClientIds","getBlock","visibleBlockCount","shouldShowInnerBlocks","select","getGlobalBlockCount","getClientIdsOfDescendants","__unstableGetEditorMode","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","dropZoneRef","target","blockDropTarget","elementRef","treeGridRef","insertedBlock","setInsertedBlock","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","blockClientId","focusPosition","expand","clientId","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","contextValue","listViewInstanceId","treeGridElementRef","fixedListWindow","useWindowing","windowOverscan","createElement","value","listViewRef","className","onCollapseRow","onExpandRow","onFocusRow","applicationAriaLabel","Provider","parentId","selectBlock","PrivateListView","props","undefined"],"sources":["@wordpress/block-editor/src/components/list-view/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseInstanceId,\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport { __experimentalTreeGrid as TreeGrid } from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicator from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\nimport { BlockSettingsDropdown } from '../block-settings-menu/block-settings-dropdown';\nimport { focusListItem } from './utils';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/** @typedef {import('react').ComponentType} ComponentType */\n/** @typedef {import('react').Ref<HTMLElement>} Ref */\n\n/**\n * Show a hierarchical list of blocks.\n *\n * @param {Object} props Components props.\n * @param {string} props.id An HTML element id for the root element of ListView.\n * @param {Array} props.blocks _deprecated_ Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {?HTMLElement} props.dropZoneElement Optional element to be used as the drop zone.\n * @param {?boolean} props.showBlockMovers Flag to enable block movers. Defaults to `false`.\n * @param {?boolean} props.isExpanded Flag to determine whether nested levels are expanded by default. Defaults to `false`.\n * @param {?boolean} props.showAppender Flag to show or hide the block appender. Defaults to `false`.\n * @param {?ComponentType} props.blockSettingsMenu Optional more menu substitution. Defaults to the standard `BlockSettingsDropdown` component.\n * @param {string} props.rootClientId The client id of the root block from which we determine the blocks to show in the list.\n * @param {string} props.description Optional accessible description for the tree grid component.\n * @param {?Function} props.onSelect Optional callback to be invoked when a block is selected. Receives the block object that was selected.\n * @param {?ComponentType} props.additionalBlockContent Component that renders additional block content UI.\n * @param {Ref} ref Forwarded ref\n */\nfunction ListViewComponent(\n\t{\n\t\tid,\n\t\tblocks,\n\t\tdropZoneElement,\n\t\tshowBlockMovers = false,\n\t\tisExpanded = false,\n\t\tshowAppender = false,\n\t\tblockSettingsMenu: BlockSettingsMenu = BlockSettingsDropdown,\n\t\trootClientId,\n\t\tdescription,\n\t\tonSelect,\n\t\tadditionalBlockContent: AdditionalBlockContent,\n\t},\n\tref\n) {\n\t// This can be removed once we no longer need to support the blocks prop.\n\tif ( blocks ) {\n\t\tdeprecated(\n\t\t\t'`blocks` property in `wp.blockEditor.__experimentalListView`',\n\t\t\t{\n\t\t\t\tsince: '6.3',\n\t\t\t\talternative: '`rootClientId` property',\n\t\t\t}\n\t\t);\n\t}\n\n\tconst instanceId = useInstanceId( ListViewComponent );\n\tconst { clientIdsTree, draggedClientIds, selectedClientIds } =\n\t\tuseListViewClientIds( { blocks, rootClientId } );\n\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst { visibleBlockCount, shouldShowInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t\tshouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone( {\n\t\tdropZoneElement,\n\t} );\n\tconst elementRef = useRef();\n\tconst treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );\n\n\tconst [ insertedBlock, setInsertedBlock ] = useState( null );\n\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t/**\n\t\t * @param {MouseEvent | KeyboardEvent | undefined} event\n\t\t * @param {string} blockClientId\n\t\t * @param {null | undefined | -1 | 1} focusPosition\n\t\t */\n\t\t( event, blockClientId, focusPosition ) => {\n\t\t\tupdateBlockSelection( event, blockClientId, null, focusPosition );\n\t\t\tsetSelectedTreeId( blockClientId );\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( getBlock( blockClientId ) );\n\t\t\t}\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]\n\t);\n\tuseEffect( () => {\n\t\t// If a blocks are already selected when the list view is initially\n\t\t// mounted, shift focus to the first selected block.\n\t\tif ( selectedClientIds?.length ) {\n\t\t\tfocusListItem( selectedClientIds[ 0 ], elementRef );\n\t\t}\n\t\t// Disable reason: Only focus on the selected item when the list view is mounted.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\tconst expand = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'expand', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'collapse', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tBlockSettingsMenu,\n\t\t\tlistViewInstanceId: instanceId,\n\t\t\tAdditionalBlockContent,\n\t\t\tinsertedBlock,\n\t\t\tsetInsertedBlock,\n\t\t\ttreeGridElementRef: elementRef,\n\t\t} ),\n\t\t[\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tBlockSettingsMenu,\n\t\t\tinstanceId,\n\t\t\tAdditionalBlockContent,\n\t\t\tinsertedBlock,\n\t\t\tsetInsertedBlock,\n\t\t]\n\t);\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\t// Ensure that the windowing logic is recalculated when the expanded state changes.\n\t\t\t// This is necessary because expanding a collapsed block in a short list view can\n\t\t\t// switch the list view to a tall list view with a scrollbar, and vice versa.\n\t\t\t// When this happens, the windowing logic needs to be recalculated to ensure that\n\t\t\t// the correct number of blocks are rendered, by rechecking for a scroll container.\n\t\t\texpandedState,\n\t\t\tuseWindowing: true,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\t// If there are no blocks to show and we're not showing the appender, do not render the list view.\n\tif ( ! clientIdsTree.length && ! showAppender ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<AsyncModeProvider value={ true }>\n\t\t\t<ListViewDropIndicator\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t<TreeGrid\n\t\t\t\tid={ id }\n\t\t\t\tclassName=\"block-editor-list-view-tree\"\n\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\tref={ treeGridRef }\n\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\tonFocusRow={ focusRow }\n\t\t\t\tapplicationAriaLabel={ __( 'Block navigation structure' ) }\n\t\t\t\t// eslint-disable-next-line jsx-a11y/aria-props\n\t\t\t\taria-description={ description }\n\t\t\t>\n\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\tparentId={ rootClientId }\n\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\tshouldShowInnerBlocks={ shouldShowInnerBlocks }\n\t\t\t\t\t\tshowAppender={ showAppender }\n\t\t\t\t\t/>\n\t\t\t\t</ListViewContext.Provider>\n\t\t\t</TreeGrid>\n\t\t</AsyncModeProvider>\n\t);\n}\n\n// This is the private API for the ListView component.\n// It allows access to all props, not just the public ones.\nexport const PrivateListView = forwardRef( ListViewComponent );\n\n// This is the public API for the ListView component.\n// We wrap the PrivateListView component to hide some props from the public API.\nexport default forwardRef( ( props, ref ) => {\n\treturn (\n\t\t<PrivateListView\n\t\t\tref={ ref }\n\t\t\t{ ...props }\n\t\t\tshowAppender={ false }\n\t\t\trootClientId={ null }\n\t\t\tonSelect={ null }\n\t\t\tadditionalBlockContent={ null }\n\t\t\tblockSettingsMenu={ undefined }\n\t\t/>\n\t);\n} );\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,aAAa,EACbC,YAAY,EACZC,gCAAgC,IAAIC,kBAAkB,QAChD,oBAAoB;AAC3B,SAASC,sBAAsB,IAAIC,QAAQ,QAAQ,uBAAuB;AAC1E,SAASC,iBAAiB,EAAEC,SAAS,QAAQ,iBAAiB;AAC9D,OAAOC,UAAU,MAAM,uBAAuB;AAC9C,SACCC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,UAAU,EACVC,UAAU,EACVC,QAAQ,QACF,oBAAoB;AAC3B,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAOC,cAAc,MAAM,UAAU;AACrC,SAASC,eAAe,QAAQ,WAAW;AAC3C,OAAOC,qBAAqB,MAAM,kBAAkB;AACpD,OAAOC,iBAAiB,MAAM,uBAAuB;AACrD,OAAOC,oBAAoB,MAAM,4BAA4B;AAC7D,OAAOC,mBAAmB,MAAM,2BAA2B;AAC3D,OAAOC,6BAA6B,MAAM,sCAAsC;AAChF,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,qBAAqB,QAAQ,gDAAgD;AACtF,SAASC,aAAa,QAAQ,SAAS;AAEvC,MAAMC,QAAQ,GAAGA,CAAEC,KAAK,EAAEC,MAAM,KAAM;EACrC,IAAKC,KAAK,CAACC,OAAO,CAAEF,MAAM,CAACG,SAAU,CAAC,EAAG;IACxC,OAAO;MACN,GAAGJ,KAAK;MACR,GAAGC,MAAM,CAACG,SAAS,CAACC,MAAM,CACzB,CAAEC,QAAQ,EAAEC,EAAE,MAAQ;QACrB,GAAGD,QAAQ;QACX,CAAEC,EAAE,GAAIN,MAAM,CAACO,IAAI,KAAK;MACzB,CAAC,CAAE,EACH,CAAC,CACF;IACD,CAAC;EACF;EACA,OAAOR,KAAK;AACb,CAAC;AAED,OAAO,MAAMS,sBAAsB,GAAG,EAAE;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CACzB;EACCH,EAAE;EACFI,MAAM;EACNC,eAAe;EACfC,eAAe,GAAG,KAAK;EACvBC,UAAU,GAAG,KAAK;EAClBC,YAAY,GAAG,KAAK;EACpBC,iBAAiB,EAAEC,iBAAiB,GAAGpB,qBAAqB;EAC5DqB,YAAY;EACZC,WAAW;EACXC,QAAQ;EACRC,sBAAsB,EAAEC;AACzB,CAAC,EACDC,GAAG,EACF;EACD;EACA,IAAKZ,MAAM,EAAG;IACbhC,UAAU,CACT,8DAA8D,EAC9D;MACC6C,KAAK,EAAE,KAAK;MACZC,WAAW,EAAE;IACd,CACD,CAAC;EACF;EAEA,MAAMC,UAAU,GAAGvD,aAAa,CAAEuC,iBAAkB,CAAC;EACrD,MAAM;IAAEiB,aAAa;IAAEC,gBAAgB;IAAEC;EAAkB,CAAC,GAC3DrC,oBAAoB,CAAE;IAAEmB,MAAM;IAAEO;EAAa,CAAE,CAAC;EAEjD,MAAM;IAAEY;EAAS,CAAC,GAAGpD,SAAS,CAAEkB,gBAAiB,CAAC;EAClD,MAAM;IAAEmC,iBAAiB;IAAEC;EAAsB,CAAC,GAAGtD,SAAS,CAC3DuD,MAAM,IAAM;IACb,MAAM;MACLC,mBAAmB;MACnBC,yBAAyB;MACzBC;IACD,CAAC,GAAGH,MAAM,CAAErC,gBAAiB,CAAC;IAC9B,MAAMyC,iBAAiB,GACtBT,gBAAgB,EAAEU,MAAM,GAAG,CAAC,GACzBH,yBAAyB,CAAEP,gBAAiB,CAAC,CAACU,MAAM,GAAG,CAAC,GACxD,CAAC;IACL,OAAO;MACNP,iBAAiB,EAAEG,mBAAmB,CAAC,CAAC,GAAGG,iBAAiB;MAC5DL,qBAAqB,EAAEI,uBAAuB,CAAC,CAAC,KAAK;IACtD,CAAC;EACF,CAAC,EACD,CAAER,gBAAgB,CACnB,CAAC;EAED,MAAM;IAAEW;EAAqB,CAAC,GAAGhD,iBAAiB,CAAC,CAAC;EAEpD,MAAM,CAAEiD,aAAa,EAAEC,gBAAgB,CAAE,GAAGzD,UAAU,CAAEe,QAAQ,EAAE,CAAC,CAAE,CAAC;EAEtE,MAAM;IAAEwB,GAAG,EAAEmB,WAAW;IAAEC,MAAM,EAAEC;EAAgB,CAAC,GAAGnD,mBAAmB,CAAE;IAC1EmB;EACD,CAAE,CAAC;EACH,MAAMiC,UAAU,GAAG9D,MAAM,CAAC,CAAC;EAC3B,MAAM+D,WAAW,GAAG1E,YAAY,CAAE,CAAEyE,UAAU,EAAEH,WAAW,EAAEnB,GAAG,CAAG,CAAC;EAEpE,MAAM,CAAEwB,aAAa,EAAEC,gBAAgB,CAAE,GAAG9D,QAAQ,CAAE,IAAK,CAAC;EAE5D,MAAM;IAAE+D;EAAkB,CAAC,GAAGvD,6BAA6B,CAAE;IAC5DwD,0BAA0B,EAAErB,iBAAiB,CAAE,CAAC,CAAE;IAClDY;EACD,CAAE,CAAC;EACH,MAAMU,iBAAiB,GAAGvE,WAAW;EACpC;AACF;AACA;AACA;AACA;EACE,CAAEwE,KAAK,EAAEC,aAAa,EAAEC,aAAa,KAAM;IAC1Cf,oBAAoB,CAAEa,KAAK,EAAEC,aAAa,EAAE,IAAI,EAAEC,aAAc,CAAC;IACjEL,iBAAiB,CAAEI,aAAc,CAAC;IAClC,IAAKjC,QAAQ,EAAG;MACfA,QAAQ,CAAEU,QAAQ,CAAEuB,aAAc,CAAE,CAAC;IACtC;EACD,CAAC,EACD,CAAEJ,iBAAiB,EAAEV,oBAAoB,EAAEnB,QAAQ,EAAEU,QAAQ,CAC9D,CAAC;EACDjD,SAAS,CAAE,MAAM;IAChB;IACA;IACA,IAAKgD,iBAAiB,EAAES,MAAM,EAAG;MAChCxC,aAAa,CAAE+B,iBAAiB,CAAE,CAAC,CAAE,EAAEgB,UAAW,CAAC;IACpD;IACA;IACA;EACD,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMU,MAAM,GAAG3E,WAAW,CACvB4E,QAAQ,IAAM;IACf,IAAK,CAAEA,QAAQ,EAAG;MACjB;IACD;IACAf,gBAAgB,CAAE;MAAEjC,IAAI,EAAE,QAAQ;MAAEJ,SAAS,EAAE,CAAEoD,QAAQ;IAAG,CAAE,CAAC;EAChE,CAAC,EACD,CAAEf,gBAAgB,CACnB,CAAC;EACD,MAAMgB,QAAQ,GAAG7E,WAAW,CACzB4E,QAAQ,IAAM;IACf,IAAK,CAAEA,QAAQ,EAAG;MACjB;IACD;IACAf,gBAAgB,CAAE;MAAEjC,IAAI,EAAE,UAAU;MAAEJ,SAAS,EAAE,CAAEoD,QAAQ;IAAG,CAAE,CAAC;EAClE,CAAC,EACD,CAAEf,gBAAgB,CACnB,CAAC;EACD,MAAMiB,SAAS,GAAG9E,WAAW,CAC1B+E,GAAG,IAAM;IACVJ,MAAM,CAAEI,GAAG,EAAEC,OAAO,EAAEC,KAAM,CAAC;EAC9B,CAAC,EACD,CAAEN,MAAM,CACT,CAAC;EACD,MAAMO,WAAW,GAAGlF,WAAW,CAC5B+E,GAAG,IAAM;IACVF,QAAQ,CAAEE,GAAG,EAAEC,OAAO,EAAEC,KAAM,CAAC;EAChC,CAAC,EACD,CAAEJ,QAAQ,CACX,CAAC;EACD,MAAMM,QAAQ,GAAGnF,WAAW,CAC3B,CAAEwE,KAAK,EAAEY,QAAQ,EAAEC,MAAM,KAAM;IAC9B,IAAKb,KAAK,CAACc,QAAQ,EAAG;MACrB3B,oBAAoB,CACnBa,KAAK,EACLY,QAAQ,EAAEJ,OAAO,EAAEC,KAAK,EACxBI,MAAM,EAAEL,OAAO,EAAEC,KAClB,CAAC;IACF;EACD,CAAC,EACD,CAAEtB,oBAAoB,CACvB,CAAC;EAED,MAAM4B,YAAY,GAAGrF,OAAO,CAC3B,OAAQ;IACP8C,gBAAgB;IAChBY,aAAa;IACbe,MAAM;IACNE,QAAQ;IACRxC,iBAAiB;IACjBmD,kBAAkB,EAAE1C,UAAU;IAC9BJ,sBAAsB;IACtByB,aAAa;IACbC,gBAAgB;IAChBqB,kBAAkB,EAAExB;EACrB,CAAC,CAAE,EACH,CACCjB,gBAAgB,EAChBY,aAAa,EACbe,MAAM,EACNE,QAAQ,EACRxC,iBAAiB,EACjBS,UAAU,EACVJ,sBAAsB,EACtByB,aAAa,EACbC,gBAAgB,CAElB,CAAC;;EAED;EACA;EACA;EACA,MAAM,CAAEsB,eAAe,CAAE,GAAGhG,kBAAkB,CAC7CuE,UAAU,EACVpC,sBAAsB,EACtBsB,iBAAiB,EACjB;IACC;IACA;IACA;IACA;IACA;IACAS,aAAa;IACb+B,YAAY,EAAE,IAAI;IAClBC,cAAc,EAAE;EACjB,CACD,CAAC;;EAED;EACA,IAAK,CAAE7C,aAAa,CAACW,MAAM,IAAI,CAAEvB,YAAY,EAAG;IAC/C,OAAO,IAAI;EACZ;EAEA,OACC0D,aAAA,CAAChG,iBAAiB;IAACiG,KAAK,EAAG;EAAM,GAChCD,aAAA,CAACnF,qBAAqB;IACrBqF,WAAW,EAAG9B,UAAY;IAC1BD,eAAe,EAAGA;EAAiB,CACnC,CAAC,EACF6B,aAAA,CAACjG,QAAQ;IACR+B,EAAE,EAAGA,EAAI;IACTqE,SAAS,EAAC,6BAA6B;IACvC,cAAazF,EAAE,CAAE,4BAA6B,CAAG;IACjDoC,GAAG,EAAGuB,WAAa;IACnB+B,aAAa,EAAGf,WAAa;IAC7BgB,WAAW,EAAGpB,SAAW;IACzBqB,UAAU,EAAGhB,QAAU;IACvBiB,oBAAoB,EAAG7F,EAAE,CAAE,4BAA6B;IACxD;IAAA;IACA,oBAAmBgC;EAAa,GAEhCsD,aAAA,CAACpF,eAAe,CAAC4F,QAAQ;IAACP,KAAK,EAAGP;EAAc,GAC/CM,aAAA,CAACrF,cAAc;IACduB,MAAM,EAAGgB,aAAe;IACxBuD,QAAQ,EAAGhE,YAAc;IACzBiE,WAAW,EAAGhC,iBAAmB;IACjCtC,eAAe,EAAGA,eAAiB;IACnCyD,eAAe,EAAGA,eAAiB;IACnCzC,iBAAiB,EAAGA,iBAAmB;IACvCf,UAAU,EAAGA,UAAY;IACzBkB,qBAAqB,EAAGA,qBAAuB;IAC/CjB,YAAY,EAAGA;EAAc,CAC7B,CACwB,CACjB,CACQ,CAAC;AAEtB;;AAEA;AACA;AACA,OAAO,MAAMqE,eAAe,GAAGnG,UAAU,CAAEyB,iBAAkB,CAAC;;AAE9D;AACA;AACA,eAAezB,UAAU,CAAE,CAAEoG,KAAK,EAAE9D,GAAG,KAAM;EAC5C,OACCkD,aAAA,CAACW,eAAe;IACf7D,GAAG,EAAGA,GAAK;IAAA,GACN8D,KAAK;IACVtE,YAAY,EAAG,KAAO;IACtBG,YAAY,EAAG,IAAM;IACrBE,QAAQ,EAAG,IAAM;IACjBC,sBAAsB,EAAG,IAAM;IAC/BL,iBAAiB,EAAGsE;EAAW,CAC/B,CAAC;AAEJ,CAAE,CAAC"}
1
+ {"version":3,"names":["useInstanceId","useMergeRefs","__experimentalUseFixedWindowList","useFixedWindowList","__experimentalTreeGrid","TreeGrid","VisuallyHidden","AsyncModeProvider","useSelect","deprecated","useCallback","useEffect","useMemo","useRef","useReducer","forwardRef","useState","__","ListViewBranch","ListViewContext","ListViewDropIndicator","useBlockSelection","useListViewClientIds","useListViewDropZone","useListViewExpandSelectedItem","store","blockEditorStore","BlockSettingsDropdown","focusListItem","expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","ListViewComponent","blocks","dropZoneElement","showBlockMovers","isExpanded","showAppender","blockSettingsMenu","BlockSettingsMenu","rootClientId","description","onSelect","additionalBlockContent","AdditionalBlockContent","ref","since","alternative","instanceId","clientIdsTree","draggedClientIds","selectedClientIds","getBlock","visibleBlockCount","shouldShowInnerBlocks","select","getGlobalBlockCount","getClientIdsOfDescendants","__unstableGetEditorMode","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","dropZoneRef","target","blockDropTarget","elementRef","treeGridRef","insertedBlock","setInsertedBlock","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","blockClientId","focusPosition","expand","clientId","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","contextValue","listViewInstanceId","treeGridElementRef","fixedListWindow","useWindowing","windowOverscan","describedById","createElement","value","listViewRef","className","onCollapseRow","onExpandRow","onFocusRow","applicationAriaLabel","Provider","parentId","selectBlock","PrivateListView","props","undefined"],"sources":["@wordpress/block-editor/src/components/list-view/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseInstanceId,\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport {\n\t__experimentalTreeGrid as TreeGrid,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicator from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\nimport { BlockSettingsDropdown } from '../block-settings-menu/block-settings-dropdown';\nimport { focusListItem } from './utils';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/** @typedef {import('react').ComponentType} ComponentType */\n/** @typedef {import('react').Ref<HTMLElement>} Ref */\n\n/**\n * Show a hierarchical list of blocks.\n *\n * @param {Object} props Components props.\n * @param {string} props.id An HTML element id for the root element of ListView.\n * @param {Array} props.blocks _deprecated_ Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {?HTMLElement} props.dropZoneElement Optional element to be used as the drop zone.\n * @param {?boolean} props.showBlockMovers Flag to enable block movers. Defaults to `false`.\n * @param {?boolean} props.isExpanded Flag to determine whether nested levels are expanded by default. Defaults to `false`.\n * @param {?boolean} props.showAppender Flag to show or hide the block appender. Defaults to `false`.\n * @param {?ComponentType} props.blockSettingsMenu Optional more menu substitution. Defaults to the standard `BlockSettingsDropdown` component.\n * @param {string} props.rootClientId The client id of the root block from which we determine the blocks to show in the list.\n * @param {string} props.description Optional accessible description for the tree grid component.\n * @param {?Function} props.onSelect Optional callback to be invoked when a block is selected. Receives the block object that was selected.\n * @param {?ComponentType} props.additionalBlockContent Component that renders additional block content UI.\n * @param {Ref} ref Forwarded ref\n */\nfunction ListViewComponent(\n\t{\n\t\tid,\n\t\tblocks,\n\t\tdropZoneElement,\n\t\tshowBlockMovers = false,\n\t\tisExpanded = false,\n\t\tshowAppender = false,\n\t\tblockSettingsMenu: BlockSettingsMenu = BlockSettingsDropdown,\n\t\trootClientId,\n\t\tdescription,\n\t\tonSelect,\n\t\tadditionalBlockContent: AdditionalBlockContent,\n\t},\n\tref\n) {\n\t// This can be removed once we no longer need to support the blocks prop.\n\tif ( blocks ) {\n\t\tdeprecated(\n\t\t\t'`blocks` property in `wp.blockEditor.__experimentalListView`',\n\t\t\t{\n\t\t\t\tsince: '6.3',\n\t\t\t\talternative: '`rootClientId` property',\n\t\t\t}\n\t\t);\n\t}\n\n\tconst instanceId = useInstanceId( ListViewComponent );\n\tconst { clientIdsTree, draggedClientIds, selectedClientIds } =\n\t\tuseListViewClientIds( { blocks, rootClientId } );\n\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst { visibleBlockCount, shouldShowInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t\tshouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone( {\n\t\tdropZoneElement,\n\t} );\n\tconst elementRef = useRef();\n\tconst treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );\n\n\tconst [ insertedBlock, setInsertedBlock ] = useState( null );\n\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t/**\n\t\t * @param {MouseEvent | KeyboardEvent | undefined} event\n\t\t * @param {string} blockClientId\n\t\t * @param {null | undefined | -1 | 1} focusPosition\n\t\t */\n\t\t( event, blockClientId, focusPosition ) => {\n\t\t\tupdateBlockSelection( event, blockClientId, null, focusPosition );\n\t\t\tsetSelectedTreeId( blockClientId );\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( getBlock( blockClientId ) );\n\t\t\t}\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]\n\t);\n\tuseEffect( () => {\n\t\t// If a blocks are already selected when the list view is initially\n\t\t// mounted, shift focus to the first selected block.\n\t\tif ( selectedClientIds?.length ) {\n\t\t\tfocusListItem( selectedClientIds[ 0 ], elementRef );\n\t\t}\n\t\t// Disable reason: Only focus on the selected item when the list view is mounted.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\tconst expand = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'expand', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'collapse', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tBlockSettingsMenu,\n\t\t\tlistViewInstanceId: instanceId,\n\t\t\tAdditionalBlockContent,\n\t\t\tinsertedBlock,\n\t\t\tsetInsertedBlock,\n\t\t\ttreeGridElementRef: elementRef,\n\t\t} ),\n\t\t[\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tBlockSettingsMenu,\n\t\t\tinstanceId,\n\t\t\tAdditionalBlockContent,\n\t\t\tinsertedBlock,\n\t\t\tsetInsertedBlock,\n\t\t]\n\t);\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\t// Ensure that the windowing logic is recalculated when the expanded state changes.\n\t\t\t// This is necessary because expanding a collapsed block in a short list view can\n\t\t\t// switch the list view to a tall list view with a scrollbar, and vice versa.\n\t\t\t// When this happens, the windowing logic needs to be recalculated to ensure that\n\t\t\t// the correct number of blocks are rendered, by rechecking for a scroll container.\n\t\t\texpandedState,\n\t\t\tuseWindowing: true,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\t// If there are no blocks to show and we're not showing the appender, do not render the list view.\n\tif ( ! clientIdsTree.length && ! showAppender ) {\n\t\treturn null;\n\t}\n\n\tconst describedById =\n\t\tdescription && `block-editor-list-view-description-${ instanceId }`;\n\n\treturn (\n\t\t<AsyncModeProvider value={ true }>\n\t\t\t<ListViewDropIndicator\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t{ description && (\n\t\t\t\t<VisuallyHidden id={ describedById }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t\t<TreeGrid\n\t\t\t\tid={ id }\n\t\t\t\tclassName=\"block-editor-list-view-tree\"\n\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\tref={ treeGridRef }\n\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\tonFocusRow={ focusRow }\n\t\t\t\tapplicationAriaLabel={ __( 'Block navigation structure' ) }\n\t\t\t\taria-describedby={ describedById }\n\t\t\t>\n\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\tparentId={ rootClientId }\n\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\tshouldShowInnerBlocks={ shouldShowInnerBlocks }\n\t\t\t\t\t\tshowAppender={ showAppender }\n\t\t\t\t\t/>\n\t\t\t\t</ListViewContext.Provider>\n\t\t\t</TreeGrid>\n\t\t</AsyncModeProvider>\n\t);\n}\n\n// This is the private API for the ListView component.\n// It allows access to all props, not just the public ones.\nexport const PrivateListView = forwardRef( ListViewComponent );\n\n// This is the public API for the ListView component.\n// We wrap the PrivateListView component to hide some props from the public API.\nexport default forwardRef( ( props, ref ) => {\n\treturn (\n\t\t<PrivateListView\n\t\t\tref={ ref }\n\t\t\t{ ...props }\n\t\t\tshowAppender={ false }\n\t\t\trootClientId={ null }\n\t\t\tonSelect={ null }\n\t\t\tadditionalBlockContent={ null }\n\t\t\tblockSettingsMenu={ undefined }\n\t\t/>\n\t);\n} );\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ import classnames from 'classnames';
10
10
  import { useRef } from '@wordpress/element';
11
11
  import { __ } from '@wordpress/i18n';
12
12
  import { speak } from '@wordpress/a11y';
13
- import { FormFileUpload, NavigableMenu, MenuItem, ToolbarButton, Dropdown, withFilters, Tooltip } from '@wordpress/components';
13
+ import { FormFileUpload, NavigableMenu, MenuItem, ToolbarButton, Dropdown, withFilters } from '@wordpress/components';
14
14
  import { useSelect, withDispatch } from '@wordpress/data';
15
15
  import { DOWN } from '@wordpress/keycodes';
16
16
  import { postFeaturedImage, upload, media as mediaIcon } from '@wordpress/icons';
@@ -171,9 +171,7 @@ const MediaReplaceFlow = ({
171
171
  })
172
172
  }, createElement("span", {
173
173
  className: "block-editor-media-replace-flow__image-url-label"
174
- }, __('Current media URL:')), createElement(Tooltip, {
175
- text: mediaURL
176
- }, createElement("div", null, createElement(LinkControl, {
174
+ }, __('Current media URL:')), createElement(LinkControl, {
177
175
  value: {
178
176
  url: mediaURL
179
177
  },
@@ -185,7 +183,7 @@ const MediaReplaceFlow = ({
185
183
  onSelectURL(url);
186
184
  editMediaButtonRef.current.focus();
187
185
  }
188
- })))))
186
+ })))
189
187
  });
190
188
  };
191
189
 
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useRef","__","speak","FormFileUpload","NavigableMenu","MenuItem","ToolbarButton","Dropdown","withFilters","Tooltip","useSelect","withDispatch","DOWN","postFeaturedImage","upload","media","mediaIcon","compose","__unstableStripHTML","stripHTML","store","noticesStore","MediaUpload","MediaUploadCheck","LinkControl","blockEditorStore","noop","uniqueId","MediaReplaceFlow","mediaURL","mediaId","mediaIds","allowedTypes","accept","onError","onSelect","onSelectURL","onToggleFeaturedImage","useFeaturedImage","onFilesUpload","name","createNotice","removeNotice","children","multiple","addToGallery","handleUpload","popoverProps","mediaUpload","select","getSettings","canUpload","editMediaButtonRef","errorNoticeID","onUploadError","message","safeMessage","setTimeout","id","isDismissible","selectMedia","closeMenu","uploadFiles","event","files","target","filesList","onFileChange","openOnArrowDown","keyCode","preventDefault","click","onlyAllowsImages","length","every","allowedType","startsWith","gallery","createElement","contentClassName","renderToggle","isOpen","onToggle","ref","onClick","onKeyDown","renderContent","onClose","Fragment","className","value","render","open","icon","onChange","openFileDialog","isPressed","text","url","settings","showSuggestions","current","focus","dispatch"],"sources":["@wordpress/block-editor/src/components/media-replace-flow/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport {\n\tFormFileUpload,\n\tNavigableMenu,\n\tMenuItem,\n\tToolbarButton,\n\tDropdown,\n\twithFilters,\n\tTooltip,\n} from '@wordpress/components';\nimport { useSelect, withDispatch } from '@wordpress/data';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tpostFeaturedImage,\n\tupload,\n\tmedia as mediaIcon,\n} from '@wordpress/icons';\nimport { compose } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport LinkControl from '../link-control';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\nlet uniqueId = 0;\n\nconst MediaReplaceFlow = ( {\n\tmediaURL,\n\tmediaId,\n\tmediaIds,\n\tallowedTypes,\n\taccept,\n\tonError,\n\tonSelect,\n\tonSelectURL,\n\tonToggleFeaturedImage,\n\tuseFeaturedImage,\n\tonFilesUpload = noop,\n\tname = __( 'Replace' ),\n\tcreateNotice,\n\tremoveNotice,\n\tchildren,\n\tmultiple = false,\n\taddToGallery,\n\thandleUpload = true,\n\tpopoverProps,\n} ) => {\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings().mediaUpload;\n\t}, [] );\n\tconst canUpload = !! mediaUpload;\n\tconst editMediaButtonRef = useRef();\n\tconst errorNoticeID = `block-editor/media-replace-flow/error-notice/${ ++uniqueId }`;\n\n\tconst onUploadError = ( message ) => {\n\t\tconst safeMessage = stripHTML( message );\n\t\tif ( onError ) {\n\t\t\tonError( safeMessage );\n\t\t\treturn;\n\t\t}\n\t\t// We need to set a timeout for showing the notice\n\t\t// so that VoiceOver and possibly other screen readers\n\t\t// can announce the error afer the toolbar button\n\t\t// regains focus once the upload dialog closes.\n\t\t// Otherwise VO simply skips over the notice and announces\n\t\t// the focused element and the open menu.\n\t\tsetTimeout( () => {\n\t\t\tcreateNotice( 'error', safeMessage, {\n\t\t\t\tspeak: true,\n\t\t\t\tid: errorNoticeID,\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t}, 1000 );\n\t};\n\n\tconst selectMedia = ( media, closeMenu ) => {\n\t\tif ( useFeaturedImage && onToggleFeaturedImage ) {\n\t\t\tonToggleFeaturedImage();\n\t\t}\n\t\tcloseMenu();\n\t\t// Calling `onSelect` after the state update since it might unmount the component.\n\t\tonSelect( media );\n\t\tspeak( __( 'The media file has been replaced' ) );\n\t\tremoveNotice( errorNoticeID );\n\t};\n\n\tconst uploadFiles = ( event, closeMenu ) => {\n\t\tconst files = event.target.files;\n\t\tif ( ! handleUpload ) {\n\t\t\tcloseMenu();\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesUpload( files );\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tselectMedia( media, closeMenu );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst openOnArrowDown = ( event ) => {\n\t\tif ( event.keyCode === DOWN ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.target.click();\n\t\t}\n\t};\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst gallery = multiple && onlyAllowsImages();\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tcontentClassName=\"block-editor-media-replace-flow__options\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tref={ editMediaButtonRef }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t>\n\t\t\t\t\t{ name }\n\t\t\t\t</ToolbarButton>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<NavigableMenu className=\"block-editor-media-replace-flow__media-upload-menu\">\n\t\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\tgallery={ gallery }\n\t\t\t\t\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\tvalue={ multiple ? mediaIds : mediaId }\n\t\t\t\t\t\t\t\tonSelect={ ( media ) =>\n\t\t\t\t\t\t\t\t\tselectMedia( media, onClose )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\ticon={ mediaIcon }\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\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<FormFileUpload\n\t\t\t\t\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\t\t\t\t\tuploadFiles( event, onClose );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\t\t\tmultiple={ !! multiple }\n\t\t\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\topenFileDialog();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t\t\t{ onToggleFeaturedImage && (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ postFeaturedImage }\n\t\t\t\t\t\t\t\tonClick={ onToggleFeaturedImage }\n\t\t\t\t\t\t\t\tisPressed={ useFeaturedImage }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Use featured image' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t{ onSelectURL && (\n\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n\t\t\t\t\t\t<form\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'block-editor-media-flow__url-input',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'has-siblings':\n\t\t\t\t\t\t\t\t\t\tcanUpload || onToggleFeaturedImage,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"block-editor-media-replace-flow__image-url-label\">\n\t\t\t\t\t\t\t\t{ __( 'Current media URL:' ) }\n\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t<Tooltip text={ mediaURL }>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\t\t\tvalue={ { url: mediaURL } }\n\t\t\t\t\t\t\t\t\t\tsettings={ [] }\n\t\t\t\t\t\t\t\t\t\tshowSuggestions={ false }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( { url } ) => {\n\t\t\t\t\t\t\t\t\t\t\tonSelectURL( url );\n\t\t\t\t\t\t\t\t\t\t\teditMediaButtonRef.current.focus();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-replace-flow/README.md\n */\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createNotice, removeNotice } = dispatch( noticesStore );\n\t\treturn {\n\t\t\tcreateNotice,\n\t\t\tremoveNotice,\n\t\t};\n\t} ),\n\twithFilters( 'editor.MediaReplaceFlow' ),\n] )( MediaReplaceFlow );\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,QAAQ,iBAAiB;AACvC,SACCC,cAAc,EACdC,aAAa,EACbC,QAAQ,EACRC,aAAa,EACbC,QAAQ,EACRC,WAAW,EACXC,OAAO,QACD,uBAAuB;AAC9B,SAASC,SAAS,EAAEC,YAAY,QAAQ,iBAAiB;AACzD,SAASC,IAAI,QAAQ,qBAAqB;AAC1C,SACCC,iBAAiB,EACjBC,MAAM,EACNC,KAAK,IAAIC,SAAS,QACZ,kBAAkB;AACzB,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,mBAAmB,IAAIC,SAAS,QAAQ,gBAAgB;AACjE,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,OAAOC,WAAW,MAAM,iBAAiB;AACzC,OAAOC,gBAAgB,MAAM,uBAAuB;AACpD,OAAOC,WAAW,MAAM,iBAAiB;AACzC,SAASJ,KAAK,IAAIK,gBAAgB,QAAQ,aAAa;AAEvD,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AACrB,IAAIC,QAAQ,GAAG,CAAC;AAEhB,MAAMC,gBAAgB,GAAGA,CAAE;EAC1BC,QAAQ;EACRC,OAAO;EACPC,QAAQ;EACRC,YAAY;EACZC,MAAM;EACNC,OAAO;EACPC,QAAQ;EACRC,WAAW;EACXC,qBAAqB;EACrBC,gBAAgB;EAChBC,aAAa,GAAGb,IAAI;EACpBc,IAAI,GAAGvC,EAAE,CAAE,SAAU,CAAC;EACtBwC,YAAY;EACZC,YAAY;EACZC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,YAAY;EACZC,YAAY,GAAG,IAAI;EACnBC;AACD,CAAC,KAAM;EACN,MAAMC,WAAW,GAAGtC,SAAS,CAAIuC,MAAM,IAAM;IAC5C,OAAOA,MAAM,CAAExB,gBAAiB,CAAC,CAACyB,WAAW,CAAC,CAAC,CAACF,WAAW;EAC5D,CAAC,EAAE,EAAG,CAAC;EACP,MAAMG,SAAS,GAAG,CAAC,CAAEH,WAAW;EAChC,MAAMI,kBAAkB,GAAGpD,MAAM,CAAC,CAAC;EACnC,MAAMqD,aAAa,GAAI,gDAAgD,EAAE1B,QAAU,EAAC;EAEpF,MAAM2B,aAAa,GAAKC,OAAO,IAAM;IACpC,MAAMC,WAAW,GAAGrC,SAAS,CAAEoC,OAAQ,CAAC;IACxC,IAAKrB,OAAO,EAAG;MACdA,OAAO,CAAEsB,WAAY,CAAC;MACtB;IACD;IACA;IACA;IACA;IACA;IACA;IACA;IACAC,UAAU,CAAE,MAAM;MACjBhB,YAAY,CAAE,OAAO,EAAEe,WAAW,EAAE;QACnCtD,KAAK,EAAE,IAAI;QACXwD,EAAE,EAAEL,aAAa;QACjBM,aAAa,EAAE;MAChB,CAAE,CAAC;IACJ,CAAC,EAAE,IAAK,CAAC;EACV,CAAC;EAED,MAAMC,WAAW,GAAGA,CAAE7C,KAAK,EAAE8C,SAAS,KAAM;IAC3C,IAAKvB,gBAAgB,IAAID,qBAAqB,EAAG;MAChDA,qBAAqB,CAAC,CAAC;IACxB;IACAwB,SAAS,CAAC,CAAC;IACX;IACA1B,QAAQ,CAAEpB,KAAM,CAAC;IACjBb,KAAK,CAAED,EAAE,CAAE,kCAAmC,CAAE,CAAC;IACjDyC,YAAY,CAAEW,aAAc,CAAC;EAC9B,CAAC;EAED,MAAMS,WAAW,GAAGA,CAAEC,KAAK,EAAEF,SAAS,KAAM;IAC3C,MAAMG,KAAK,GAAGD,KAAK,CAACE,MAAM,CAACD,KAAK;IAChC,IAAK,CAAElB,YAAY,EAAG;MACrBe,SAAS,CAAC,CAAC;MACX,OAAO1B,QAAQ,CAAE6B,KAAM,CAAC;IACzB;IACAzB,aAAa,CAAEyB,KAAM,CAAC;IACtBhB,WAAW,CAAE;MACZhB,YAAY;MACZkC,SAAS,EAAEF,KAAK;MAChBG,YAAY,EAAEA,CAAE,CAAEpD,KAAK,CAAE,KAAM;QAC9B6C,WAAW,CAAE7C,KAAK,EAAE8C,SAAU,CAAC;MAChC,CAAC;MACD3B,OAAO,EAAEoB;IACV,CAAE,CAAC;EACJ,CAAC;EAED,MAAMc,eAAe,GAAKL,KAAK,IAAM;IACpC,IAAKA,KAAK,CAACM,OAAO,KAAKzD,IAAI,EAAG;MAC7BmD,KAAK,CAACO,cAAc,CAAC,CAAC;MACtBP,KAAK,CAACE,MAAM,CAACM,KAAK,CAAC,CAAC;IACrB;EACD,CAAC;EAED,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;IAC9B,IAAK,CAAExC,YAAY,IAAIA,YAAY,CAACyC,MAAM,KAAK,CAAC,EAAG;MAClD,OAAO,KAAK;IACb;IAEA,OAAOzC,YAAY,CAAC0C,KAAK,CACtBC,WAAW,IACZA,WAAW,KAAK,OAAO,IAAIA,WAAW,CAACC,UAAU,CAAE,QAAS,CAC9D,CAAC;EACF,CAAC;EAED,MAAMC,OAAO,GAAGjC,QAAQ,IAAI4B,gBAAgB,CAAC,CAAC;EAE9C,OACCM,aAAA,CAACvE,QAAQ;IACRwC,YAAY,EAAGA,YAAc;IAC7BgC,gBAAgB,EAAC,0CAA0C;IAC3DC,YAAY,EAAGA,CAAE;MAAEC,MAAM;MAAEC;IAAS,CAAC,KACpCJ,aAAA,CAACxE,aAAa;MACb6E,GAAG,EAAG/B,kBAAoB;MAC1B,iBAAgB6B,MAAQ;MACxB,iBAAc,MAAM;MACpBG,OAAO,EAAGF,QAAU;MACpBG,SAAS,EAAGjB;IAAiB,GAE3B5B,IACY,CACb;IACH8C,aAAa,EAAGA,CAAE;MAAEC;IAAQ,CAAC,KAC5BT,aAAA,CAAAU,QAAA,QACCV,aAAA,CAAC1E,aAAa;MAACqF,SAAS,EAAC;IAAoD,GAC5EX,aAAA,CAACvD,gBAAgB,QAChBuD,aAAA,CAACxD,WAAW;MACXuD,OAAO,EAAGA,OAAS;MACnBhC,YAAY,EAAGA,YAAc;MAC7BD,QAAQ,EAAGA,QAAU;MACrB8C,KAAK,EAAG9C,QAAQ,GAAGb,QAAQ,GAAGD,OAAS;MACvCK,QAAQ,EAAKpB,KAAK,IACjB6C,WAAW,CAAE7C,KAAK,EAAEwE,OAAQ,CAC5B;MACDvD,YAAY,EAAGA,YAAc;MAC7B2D,MAAM,EAAGA,CAAE;QAAEC;MAAK,CAAC,KAClBd,aAAA,CAACzE,QAAQ;QACRwF,IAAI,EAAG7E,SAAW;QAClBoE,OAAO,EAAGQ;MAAM,GAEd3F,EAAE,CAAE,oBAAqB,CAClB;IACR,CACH,CAAC,EACF6E,aAAA,CAAC3E,cAAc;MACd2F,QAAQ,EAAK/B,KAAK,IAAM;QACvBD,WAAW,CAAEC,KAAK,EAAEwB,OAAQ,CAAC;MAC9B,CAAG;MACHtD,MAAM,EAAGA,MAAQ;MACjBW,QAAQ,EAAG,CAAC,CAAEA,QAAU;MACxB+C,MAAM,EAAGA,CAAE;QAAEI;MAAe,CAAC,KAAM;QAClC,OACCjB,aAAA,CAACzE,QAAQ;UACRwF,IAAI,EAAG/E,MAAQ;UACfsE,OAAO,EAAGA,CAAA,KAAM;YACfW,cAAc,CAAC,CAAC;UACjB;QAAG,GAED9F,EAAE,CAAE,QAAS,CACN,CAAC;MAEb;IAAG,CACH,CACgB,CAAC,EACjBoC,qBAAqB,IACtByC,aAAA,CAACzE,QAAQ;MACRwF,IAAI,EAAGhF,iBAAmB;MAC1BuE,OAAO,EAAG/C,qBAAuB;MACjC2D,SAAS,EAAG1D;IAAkB,GAE5BrC,EAAE,CAAE,oBAAqB,CAClB,CACV,EACC0C,QACY,CAAC,EACdP,WAAW;IACZ;IACA0C,aAAA;MACCW,SAAS,EAAG1F,UAAU,CACrB,oCAAoC,EACpC;QACC,cAAc,EACboD,SAAS,IAAId;MACf,CACD;IAAG,GAEHyC,aAAA;MAAMW,SAAS,EAAC;IAAkD,GAC/DxF,EAAE,CAAE,oBAAqB,CACtB,CAAC,EAEP6E,aAAA,CAACrE,OAAO;MAACwF,IAAI,EAAGpE;IAAU,GACzBiD,aAAA,cACCA,aAAA,CAACtD,WAAW;MACXkE,KAAK,EAAG;QAAEQ,GAAG,EAAErE;MAAS,CAAG;MAC3BsE,QAAQ,EAAG,EAAI;MACfC,eAAe,EAAG,KAAO;MACzBN,QAAQ,EAAGA,CAAE;QAAEI;MAAI,CAAC,KAAM;QACzB9D,WAAW,CAAE8D,GAAI,CAAC;QAClB9C,kBAAkB,CAACiD,OAAO,CAACC,KAAK,CAAC,CAAC;MACnC;IAAG,CACH,CACG,CACG,CACJ,CAEN;EACA,CACH,CAAC;AAEJ,CAAC;;AAED;AACA;AACA;AACA,eAAerF,OAAO,CAAE,CACvBN,YAAY,CAAI4F,QAAQ,IAAM;EAC7B,MAAM;IAAE9D,YAAY;IAAEC;EAAa,CAAC,GAAG6D,QAAQ,CAAElF,YAAa,CAAC;EAC/D,OAAO;IACNoB,YAAY;IACZC;EACD,CAAC;AACF,CAAE,CAAC,EACHlC,WAAW,CAAE,yBAA0B,CAAC,CACvC,CAAC,CAAEoB,gBAAiB,CAAC"}
1
+ {"version":3,"names":["classnames","useRef","__","speak","FormFileUpload","NavigableMenu","MenuItem","ToolbarButton","Dropdown","withFilters","useSelect","withDispatch","DOWN","postFeaturedImage","upload","media","mediaIcon","compose","__unstableStripHTML","stripHTML","store","noticesStore","MediaUpload","MediaUploadCheck","LinkControl","blockEditorStore","noop","uniqueId","MediaReplaceFlow","mediaURL","mediaId","mediaIds","allowedTypes","accept","onError","onSelect","onSelectURL","onToggleFeaturedImage","useFeaturedImage","onFilesUpload","name","createNotice","removeNotice","children","multiple","addToGallery","handleUpload","popoverProps","mediaUpload","select","getSettings","canUpload","editMediaButtonRef","errorNoticeID","onUploadError","message","safeMessage","setTimeout","id","isDismissible","selectMedia","closeMenu","uploadFiles","event","files","target","filesList","onFileChange","openOnArrowDown","keyCode","preventDefault","click","onlyAllowsImages","length","every","allowedType","startsWith","gallery","createElement","contentClassName","renderToggle","isOpen","onToggle","ref","onClick","onKeyDown","renderContent","onClose","Fragment","className","value","render","open","icon","onChange","openFileDialog","isPressed","url","settings","showSuggestions","current","focus","dispatch"],"sources":["@wordpress/block-editor/src/components/media-replace-flow/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport {\n\tFormFileUpload,\n\tNavigableMenu,\n\tMenuItem,\n\tToolbarButton,\n\tDropdown,\n\twithFilters,\n} from '@wordpress/components';\nimport { useSelect, withDispatch } from '@wordpress/data';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tpostFeaturedImage,\n\tupload,\n\tmedia as mediaIcon,\n} from '@wordpress/icons';\nimport { compose } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport LinkControl from '../link-control';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\nlet uniqueId = 0;\n\nconst MediaReplaceFlow = ( {\n\tmediaURL,\n\tmediaId,\n\tmediaIds,\n\tallowedTypes,\n\taccept,\n\tonError,\n\tonSelect,\n\tonSelectURL,\n\tonToggleFeaturedImage,\n\tuseFeaturedImage,\n\tonFilesUpload = noop,\n\tname = __( 'Replace' ),\n\tcreateNotice,\n\tremoveNotice,\n\tchildren,\n\tmultiple = false,\n\taddToGallery,\n\thandleUpload = true,\n\tpopoverProps,\n} ) => {\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings().mediaUpload;\n\t}, [] );\n\tconst canUpload = !! mediaUpload;\n\tconst editMediaButtonRef = useRef();\n\tconst errorNoticeID = `block-editor/media-replace-flow/error-notice/${ ++uniqueId }`;\n\n\tconst onUploadError = ( message ) => {\n\t\tconst safeMessage = stripHTML( message );\n\t\tif ( onError ) {\n\t\t\tonError( safeMessage );\n\t\t\treturn;\n\t\t}\n\t\t// We need to set a timeout for showing the notice\n\t\t// so that VoiceOver and possibly other screen readers\n\t\t// can announce the error afer the toolbar button\n\t\t// regains focus once the upload dialog closes.\n\t\t// Otherwise VO simply skips over the notice and announces\n\t\t// the focused element and the open menu.\n\t\tsetTimeout( () => {\n\t\t\tcreateNotice( 'error', safeMessage, {\n\t\t\t\tspeak: true,\n\t\t\t\tid: errorNoticeID,\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t}, 1000 );\n\t};\n\n\tconst selectMedia = ( media, closeMenu ) => {\n\t\tif ( useFeaturedImage && onToggleFeaturedImage ) {\n\t\t\tonToggleFeaturedImage();\n\t\t}\n\t\tcloseMenu();\n\t\t// Calling `onSelect` after the state update since it might unmount the component.\n\t\tonSelect( media );\n\t\tspeak( __( 'The media file has been replaced' ) );\n\t\tremoveNotice( errorNoticeID );\n\t};\n\n\tconst uploadFiles = ( event, closeMenu ) => {\n\t\tconst files = event.target.files;\n\t\tif ( ! handleUpload ) {\n\t\t\tcloseMenu();\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesUpload( files );\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tselectMedia( media, closeMenu );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst openOnArrowDown = ( event ) => {\n\t\tif ( event.keyCode === DOWN ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.target.click();\n\t\t}\n\t};\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst gallery = multiple && onlyAllowsImages();\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tcontentClassName=\"block-editor-media-replace-flow__options\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tref={ editMediaButtonRef }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t>\n\t\t\t\t\t{ name }\n\t\t\t\t</ToolbarButton>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<NavigableMenu className=\"block-editor-media-replace-flow__media-upload-menu\">\n\t\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\tgallery={ gallery }\n\t\t\t\t\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\tvalue={ multiple ? mediaIds : mediaId }\n\t\t\t\t\t\t\t\tonSelect={ ( media ) =>\n\t\t\t\t\t\t\t\t\tselectMedia( media, onClose )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\ticon={ mediaIcon }\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\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<FormFileUpload\n\t\t\t\t\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\t\t\t\t\tuploadFiles( event, onClose );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\t\t\tmultiple={ !! multiple }\n\t\t\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\topenFileDialog();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t\t\t{ onToggleFeaturedImage && (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ postFeaturedImage }\n\t\t\t\t\t\t\t\tonClick={ onToggleFeaturedImage }\n\t\t\t\t\t\t\t\tisPressed={ useFeaturedImage }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Use featured image' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t{ onSelectURL && (\n\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n\t\t\t\t\t\t<form\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'block-editor-media-flow__url-input',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'has-siblings':\n\t\t\t\t\t\t\t\t\t\tcanUpload || onToggleFeaturedImage,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"block-editor-media-replace-flow__image-url-label\">\n\t\t\t\t\t\t\t\t{ __( 'Current media URL:' ) }\n\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\tvalue={ { url: mediaURL } }\n\t\t\t\t\t\t\t\tsettings={ [] }\n\t\t\t\t\t\t\t\tshowSuggestions={ false }\n\t\t\t\t\t\t\t\tonChange={ ( { url } ) => {\n\t\t\t\t\t\t\t\t\tonSelectURL( url );\n\t\t\t\t\t\t\t\t\teditMediaButtonRef.current.focus();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-replace-flow/README.md\n */\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createNotice, removeNotice } = dispatch( noticesStore );\n\t\treturn {\n\t\t\tcreateNotice,\n\t\t\tremoveNotice,\n\t\t};\n\t} ),\n\twithFilters( 'editor.MediaReplaceFlow' ),\n] )( MediaReplaceFlow );\n"],"mappings":"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"}
@@ -167,7 +167,7 @@ export default function useBlockSync({
167
167
  // bound sync, unset the outbound value to avoid considering it in
168
168
  // subsequent renders.
169
169
  pendingChanges.current.outgoing = [];
170
- const hadSelecton = hasSelectedBlock();
170
+ const hadSelection = hasSelectedBlock();
171
171
  const selectionAnchor = getSelectionStart();
172
172
  const selectionFocus = getSelectionEnd();
173
173
  setControlledBlocks();
@@ -175,7 +175,7 @@ export default function useBlockSync({
175
175
  resetSelection(controlledSelection.selectionStart, controlledSelection.selectionEnd, controlledSelection.initialPosition);
176
176
  } else {
177
177
  const selectionStillExists = getBlock(selectionAnchor.clientId);
178
- if (hadSelecton && !selectionStillExists) {
178
+ if (hadSelection && !selectionStillExists) {
179
179
  selectBlock(clientId);
180
180
  } else {
181
181
  resetSelection(selectionAnchor, selectionFocus);