@wordpress/block-editor 12.17.0 → 12.18.1

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 (421) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +32 -0
  3. package/build/components/block-draggable/index.js +11 -3
  4. package/build/components/block-draggable/index.js.map +1 -1
  5. package/build/components/block-edit/context.js +3 -1
  6. package/build/components/block-edit/context.js.map +1 -1
  7. package/build/components/block-edit/index.js +4 -2
  8. package/build/components/block-edit/index.js.map +1 -1
  9. package/build/components/block-editing-mode/index.js +6 -3
  10. package/build/components/block-editing-mode/index.js.map +1 -1
  11. package/build/components/block-inspector/index.js +5 -2
  12. package/build/components/block-inspector/index.js.map +1 -1
  13. package/build/components/block-list/block.js +4 -3
  14. package/build/components/block-list/block.js.map +1 -1
  15. package/build/components/block-list/block.native.js +9 -5
  16. package/build/components/block-list/block.native.js.map +1 -1
  17. package/build/components/block-list/index.js +30 -4
  18. package/build/components/block-list/index.js.map +1 -1
  19. package/build/components/block-list/private-block-context.js +1 -1
  20. package/build/components/block-list/private-block-context.js.map +1 -1
  21. package/build/components/block-list/use-in-between-inserter.js +1 -1
  22. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  23. package/build/components/block-lock/toolbar.js +8 -2
  24. package/build/components/block-lock/toolbar.js.map +1 -1
  25. package/build/components/block-popover/inbetween.js +15 -3
  26. package/build/components/block-popover/inbetween.js.map +1 -1
  27. package/build/components/block-preview/auto.js +1 -1
  28. package/build/components/block-preview/auto.js.map +1 -1
  29. package/build/components/block-removal-warning-modal/index.js +3 -2
  30. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -4
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/block-switcher/block-transformations-menu.js +12 -1
  34. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  35. package/build/components/block-switcher/index.js +119 -90
  36. package/build/components/block-switcher/index.js.map +1 -1
  37. package/build/components/block-tools/insertion-point.js +10 -3
  38. package/build/components/block-tools/insertion-point.js.map +1 -1
  39. package/build/components/dimensions-tool/aspect-ratio-tool.js +2 -1
  40. package/build/components/dimensions-tool/aspect-ratio-tool.js.map +1 -1
  41. package/build/components/font-sizes/fluid-utils.js +7 -1
  42. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  43. package/build/components/global-styles/border-panel.js +5 -14
  44. package/build/components/global-styles/border-panel.js.map +1 -1
  45. package/build/components/global-styles/dimensions-panel.js +30 -5
  46. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  47. package/build/components/global-styles/effects-panel.js +7 -1
  48. package/build/components/global-styles/effects-panel.js.map +1 -1
  49. package/build/components/global-styles/hooks.js +11 -8
  50. package/build/components/global-styles/hooks.js.map +1 -1
  51. package/build/components/global-styles/typography-panel.js +31 -14
  52. package/build/components/global-styles/typography-panel.js.map +1 -1
  53. package/build/components/global-styles/use-global-styles-output.js +6 -0
  54. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  55. package/build/components/iframe/get-compatibility-styles.js +99 -0
  56. package/build/components/iframe/get-compatibility-styles.js.map +1 -0
  57. package/build/components/iframe/index.js +2 -3
  58. package/build/components/iframe/index.js.map +1 -1
  59. package/build/components/index.js +16 -2
  60. package/build/components/index.js.map +1 -1
  61. package/build/components/index.native.js +16 -2
  62. package/build/components/index.native.js.map +1 -1
  63. package/build/components/inspector-controls/groups.js +2 -0
  64. package/build/components/inspector-controls/groups.js.map +1 -1
  65. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  66. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  67. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
  68. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  69. package/build/components/link-control/link-preview.js +30 -26
  70. package/build/components/link-control/link-preview.js.map +1 -1
  71. package/build/components/link-control/search-input.js +1 -9
  72. package/build/components/link-control/search-input.js.map +1 -1
  73. package/build/components/list-view/block-contents.js +3 -1
  74. package/build/components/list-view/block-contents.js.map +1 -1
  75. package/build/components/list-view/block.js +10 -1
  76. package/build/components/list-view/block.js.map +1 -1
  77. package/build/components/list-view/branch.js +29 -8
  78. package/build/components/list-view/branch.js.map +1 -1
  79. package/build/components/list-view/drop-indicator.js +100 -32
  80. package/build/components/list-view/drop-indicator.js.map +1 -1
  81. package/build/components/list-view/index.js +52 -4
  82. package/build/components/list-view/index.js.map +1 -1
  83. package/build/components/list-view/leaf.js +2 -2
  84. package/build/components/list-view/leaf.js.map +1 -1
  85. package/build/components/list-view/use-list-view-block-indexes.js +30 -0
  86. package/build/components/list-view/use-list-view-block-indexes.js.map +1 -0
  87. package/build/components/list-view/use-list-view-drop-zone.js +56 -5
  88. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  89. package/build/components/list-view/utils.js +92 -0
  90. package/build/components/list-view/utils.js.map +1 -1
  91. package/build/components/provider/index.js +1 -1
  92. package/build/components/provider/index.js.map +1 -1
  93. package/build/components/recursion-provider/index.js +21 -0
  94. package/build/components/recursion-provider/index.js.map +1 -1
  95. package/build/components/rich-text/index.js +30 -6
  96. package/build/components/rich-text/index.js.map +1 -1
  97. package/build/components/rich-text/native/index.native.js +9 -9
  98. package/build/components/rich-text/native/index.native.js.map +1 -1
  99. package/build/components/use-block-drop-zone/index.js +30 -7
  100. package/build/components/use-block-drop-zone/index.js.map +1 -1
  101. package/build/components/use-on-block-drop/index.js +50 -8
  102. package/build/components/use-on-block-drop/index.js.map +1 -1
  103. package/build/hooks/block-hooks.js +5 -14
  104. package/build/hooks/block-hooks.js.map +1 -1
  105. package/build/hooks/content-lock-ui.js +17 -42
  106. package/build/hooks/content-lock-ui.js.map +1 -1
  107. package/build/hooks/dimensions.js +71 -1
  108. package/build/hooks/dimensions.js.map +1 -1
  109. package/build/hooks/effects.js +66 -0
  110. package/build/hooks/effects.js.map +1 -0
  111. package/build/hooks/index.js +17 -4
  112. package/build/hooks/index.js.map +1 -1
  113. package/build/hooks/index.native.js +13 -0
  114. package/build/hooks/index.native.js.map +1 -1
  115. package/build/hooks/style.js +9 -2
  116. package/build/hooks/style.js.map +1 -1
  117. package/build/hooks/supports.js +2 -1
  118. package/build/hooks/supports.js.map +1 -1
  119. package/build/hooks/typography.native.js +2 -2
  120. package/build/hooks/typography.native.js.map +1 -1
  121. package/build/hooks/use-bindings-attributes.js +115 -0
  122. package/build/hooks/use-bindings-attributes.js.map +1 -0
  123. package/build/hooks/use-shadow-props.js +46 -0
  124. package/build/hooks/use-shadow-props.js.map +1 -0
  125. package/build/hooks/utils.js +12 -7
  126. package/build/hooks/utils.js.map +1 -1
  127. package/build/index.js +14 -0
  128. package/build/index.js.map +1 -1
  129. package/build/store/actions.js +10 -6
  130. package/build/store/actions.js.map +1 -1
  131. package/build/store/index.js +2 -0
  132. package/build/store/index.js.map +1 -1
  133. package/build/store/private-actions.js +37 -0
  134. package/build/store/private-actions.js.map +1 -1
  135. package/build/store/private-selectors.js +60 -9
  136. package/build/store/private-selectors.js.map +1 -1
  137. package/build/store/reducer.js +44 -3
  138. package/build/store/reducer.js.map +1 -1
  139. package/build/store/resolvers.js +27 -0
  140. package/build/store/resolvers.js.map +1 -0
  141. package/build/store/selectors.js +94 -56
  142. package/build/store/selectors.js.map +1 -1
  143. package/build/store/utils.js +5 -26
  144. package/build/store/utils.js.map +1 -1
  145. package/build/utils/index.js +0 -16
  146. package/build/utils/index.js.map +1 -1
  147. package/build/utils/math.js +13 -0
  148. package/build/utils/math.js.map +1 -1
  149. package/build/utils/object.js +17 -0
  150. package/build/utils/object.js.map +1 -1
  151. package/build/utils/transform-styles/index.js +37 -27
  152. package/build/utils/transform-styles/index.js.map +1 -1
  153. package/build-module/components/block-draggable/index.js +11 -3
  154. package/build-module/components/block-draggable/index.js.map +1 -1
  155. package/build-module/components/block-edit/context.js +1 -0
  156. package/build-module/components/block-edit/context.js.map +1 -1
  157. package/build-module/components/block-edit/index.js +5 -3
  158. package/build-module/components/block-edit/index.js.map +1 -1
  159. package/build-module/components/block-editing-mode/index.js +7 -4
  160. package/build-module/components/block-editing-mode/index.js.map +1 -1
  161. package/build-module/components/block-inspector/index.js +5 -2
  162. package/build-module/components/block-inspector/index.js.map +1 -1
  163. package/build-module/components/block-list/block.js +6 -5
  164. package/build-module/components/block-list/block.js.map +1 -1
  165. package/build-module/components/block-list/block.native.js +11 -7
  166. package/build-module/components/block-list/block.native.js.map +1 -1
  167. package/build-module/components/block-list/index.js +31 -5
  168. package/build-module/components/block-list/index.js.map +1 -1
  169. package/build-module/components/block-list/private-block-context.js +1 -1
  170. package/build-module/components/block-list/private-block-context.js.map +1 -1
  171. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  172. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  173. package/build-module/components/block-lock/toolbar.js +8 -2
  174. package/build-module/components/block-lock/toolbar.js.map +1 -1
  175. package/build-module/components/block-popover/inbetween.js +15 -3
  176. package/build-module/components/block-popover/inbetween.js.map +1 -1
  177. package/build-module/components/block-preview/auto.js +3 -3
  178. package/build-module/components/block-preview/auto.js.map +1 -1
  179. package/build-module/components/block-removal-warning-modal/index.js +3 -2
  180. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  181. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -4
  182. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  183. package/build-module/components/block-switcher/block-transformations-menu.js +12 -1
  184. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  185. package/build-module/components/block-switcher/index.js +116 -86
  186. package/build-module/components/block-switcher/index.js.map +1 -1
  187. package/build-module/components/block-tools/insertion-point.js +10 -3
  188. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  189. package/build-module/components/dimensions-tool/aspect-ratio-tool.js +2 -1
  190. package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +1 -1
  191. package/build-module/components/font-sizes/fluid-utils.js +7 -1
  192. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  193. package/build-module/components/global-styles/border-panel.js +5 -14
  194. package/build-module/components/global-styles/border-panel.js.map +1 -1
  195. package/build-module/components/global-styles/dimensions-panel.js +30 -5
  196. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  197. package/build-module/components/global-styles/effects-panel.js +7 -1
  198. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  199. package/build-module/components/global-styles/hooks.js +11 -8
  200. package/build-module/components/global-styles/hooks.js.map +1 -1
  201. package/build-module/components/global-styles/typography-panel.js +32 -15
  202. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  203. package/build-module/components/global-styles/use-global-styles-output.js +6 -0
  204. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  205. package/build-module/components/iframe/get-compatibility-styles.js +93 -0
  206. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -0
  207. package/build-module/components/iframe/index.js +2 -3
  208. package/build-module/components/iframe/index.js.map +1 -1
  209. package/build-module/components/index.js +1 -1
  210. package/build-module/components/index.js.map +1 -1
  211. package/build-module/components/index.native.js +1 -1
  212. package/build-module/components/index.native.js.map +1 -1
  213. package/build-module/components/inspector-controls/groups.js +2 -0
  214. package/build-module/components/inspector-controls/groups.js.map +1 -1
  215. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  216. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  217. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -2
  218. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  219. package/build-module/components/link-control/link-preview.js +32 -28
  220. package/build-module/components/link-control/link-preview.js.map +1 -1
  221. package/build-module/components/link-control/search-input.js +1 -8
  222. package/build-module/components/link-control/search-input.js.map +1 -1
  223. package/build-module/components/list-view/block-contents.js +3 -1
  224. package/build-module/components/list-view/block-contents.js.map +1 -1
  225. package/build-module/components/list-view/block.js +10 -1
  226. package/build-module/components/list-view/block.js.map +1 -1
  227. package/build-module/components/list-view/branch.js +30 -9
  228. package/build-module/components/list-view/branch.js.map +1 -1
  229. package/build-module/components/list-view/drop-indicator.js +99 -32
  230. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  231. package/build-module/components/list-view/index.js +54 -6
  232. package/build-module/components/list-view/index.js.map +1 -1
  233. package/build-module/components/list-view/leaf.js +2 -2
  234. package/build-module/components/list-view/leaf.js.map +1 -1
  235. package/build-module/components/list-view/use-list-view-block-indexes.js +23 -0
  236. package/build-module/components/list-view/use-list-view-block-indexes.js.map +1 -0
  237. package/build-module/components/list-view/use-list-view-drop-zone.js +58 -7
  238. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  239. package/build-module/components/list-view/utils.js +91 -0
  240. package/build-module/components/list-view/utils.js.map +1 -1
  241. package/build-module/components/provider/index.js +1 -1
  242. package/build-module/components/provider/index.js.map +1 -1
  243. package/build-module/components/recursion-provider/index.js +17 -0
  244. package/build-module/components/recursion-provider/index.js.map +1 -1
  245. package/build-module/components/rich-text/index.js +30 -6
  246. package/build-module/components/rich-text/index.js.map +1 -1
  247. package/build-module/components/rich-text/native/index.native.js +9 -9
  248. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  249. package/build-module/components/use-block-drop-zone/index.js +31 -8
  250. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  251. package/build-module/components/use-on-block-drop/index.js +51 -9
  252. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  253. package/build-module/hooks/block-hooks.js +5 -14
  254. package/build-module/hooks/block-hooks.js.map +1 -1
  255. package/build-module/hooks/content-lock-ui.js +19 -43
  256. package/build-module/hooks/content-lock-ui.js.map +1 -1
  257. package/build-module/hooks/dimensions.js +70 -2
  258. package/build-module/hooks/dimensions.js.map +1 -1
  259. package/build-module/hooks/effects.js +51 -0
  260. package/build-module/hooks/effects.js.map +1 -0
  261. package/build-module/hooks/index.js +5 -3
  262. package/build-module/hooks/index.js.map +1 -1
  263. package/build-module/hooks/index.native.js +1 -0
  264. package/build-module/hooks/index.native.js.map +1 -1
  265. package/build-module/hooks/style.js +9 -2
  266. package/build-module/hooks/style.js.map +1 -1
  267. package/build-module/hooks/supports.js +2 -1
  268. package/build-module/hooks/supports.js.map +1 -1
  269. package/build-module/hooks/typography.native.js +2 -2
  270. package/build-module/hooks/typography.native.js.map +1 -1
  271. package/build-module/hooks/use-bindings-attributes.js +112 -0
  272. package/build-module/hooks/use-bindings-attributes.js.map +1 -0
  273. package/build-module/hooks/use-shadow-props.js +39 -0
  274. package/build-module/hooks/use-shadow-props.js.map +1 -0
  275. package/build-module/hooks/utils.js +14 -9
  276. package/build-module/hooks/utils.js.map +1 -1
  277. package/build-module/index.js +1 -1
  278. package/build-module/index.js.map +1 -1
  279. package/build-module/store/actions.js +10 -6
  280. package/build-module/store/actions.js.map +1 -1
  281. package/build-module/store/index.js +2 -0
  282. package/build-module/store/index.js.map +1 -1
  283. package/build-module/store/private-actions.js +35 -0
  284. package/build-module/store/private-actions.js.map +1 -1
  285. package/build-module/store/private-selectors.js +53 -8
  286. package/build-module/store/private-selectors.js.map +1 -1
  287. package/build-module/store/reducer.js +43 -3
  288. package/build-module/store/reducer.js.map +1 -1
  289. package/build-module/store/resolvers.js +20 -0
  290. package/build-module/store/resolvers.js.map +1 -0
  291. package/build-module/store/selectors.js +89 -52
  292. package/build-module/store/selectors.js.map +1 -1
  293. package/build-module/store/utils.js +3 -23
  294. package/build-module/store/utils.js.map +1 -1
  295. package/build-module/utils/index.js +0 -1
  296. package/build-module/utils/index.js.map +1 -1
  297. package/build-module/utils/math.js +12 -0
  298. package/build-module/utils/math.js.map +1 -1
  299. package/build-module/utils/object.js +16 -0
  300. package/build-module/utils/object.js.map +1 -1
  301. package/build-module/utils/transform-styles/index.js +36 -27
  302. package/build-module/utils/transform-styles/index.js.map +1 -1
  303. package/build-style/content-rtl.css +33 -16
  304. package/build-style/content.css +33 -16
  305. package/build-style/default-editor-styles-rtl.css +1 -1
  306. package/build-style/default-editor-styles.css +1 -1
  307. package/build-style/style-rtl.css +169 -114
  308. package/build-style/style.css +169 -114
  309. package/package.json +31 -31
  310. package/src/components/block-canvas/style.scss +8 -1
  311. package/src/components/block-draggable/index.js +16 -5
  312. package/src/components/block-edit/context.js +1 -0
  313. package/src/components/block-edit/index.js +4 -0
  314. package/src/components/block-editing-mode/index.js +12 -7
  315. package/src/components/block-inspector/index.js +5 -2
  316. package/src/components/block-list/block.js +5 -4
  317. package/src/components/block-list/block.native.js +13 -3
  318. package/src/components/block-list/content.scss +34 -5
  319. package/src/components/block-list/index.js +52 -16
  320. package/src/components/block-list/private-block-context.js +1 -1
  321. package/src/components/block-list/use-in-between-inserter.js +1 -2
  322. package/src/components/block-lock/toolbar.js +10 -2
  323. package/src/components/block-popover/inbetween.js +22 -2
  324. package/src/components/block-preview/auto.js +3 -3
  325. package/src/components/block-removal-warning-modal/index.js +3 -2
  326. package/src/components/block-settings-menu/block-settings-dropdown.js +2 -7
  327. package/src/components/block-switcher/block-transformations-menu.js +18 -1
  328. package/src/components/block-switcher/index.js +133 -111
  329. package/src/components/block-switcher/style.scss +6 -4
  330. package/src/components/block-switcher/test/index.js +113 -230
  331. package/src/components/block-toolbar/style.scss +22 -18
  332. package/src/components/block-tools/insertion-point.js +15 -2
  333. package/src/components/block-tools/style.scss +8 -7
  334. package/src/components/dimensions-tool/aspect-ratio-tool.js +4 -1
  335. package/src/components/font-sizes/fluid-utils.js +8 -2
  336. package/src/components/font-sizes/test/fluid-utils.js +9 -0
  337. package/src/components/global-styles/border-panel.js +7 -17
  338. package/src/components/global-styles/dimensions-panel.js +50 -1
  339. package/src/components/global-styles/effects-panel.js +16 -1
  340. package/src/components/global-styles/hooks.js +11 -6
  341. package/src/components/global-styles/typography-panel.js +45 -13
  342. package/src/components/global-styles/use-global-styles-output.js +6 -0
  343. package/src/components/iframe/get-compatibility-styles.js +120 -0
  344. package/src/components/iframe/index.js +2 -3
  345. package/src/components/index.js +4 -2
  346. package/src/components/index.native.js +4 -2
  347. package/src/components/inspector-controls/groups.js +2 -0
  348. package/src/components/inspector-controls-tabs/styles-tab.js +1 -0
  349. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -0
  350. package/src/components/link-control/link-preview.js +31 -55
  351. package/src/components/link-control/search-input.js +1 -9
  352. package/src/components/link-control/style.scss +31 -85
  353. package/src/components/link-control/test/index.js +2 -1
  354. package/src/components/list-view/block-contents.js +5 -1
  355. package/src/components/list-view/block.js +9 -0
  356. package/src/components/list-view/branch.js +30 -10
  357. package/src/components/list-view/drop-indicator.js +139 -46
  358. package/src/components/list-view/index.js +74 -3
  359. package/src/components/list-view/leaf.js +2 -2
  360. package/src/components/list-view/style.scss +102 -13
  361. package/src/components/list-view/test/use-list-view-drop-zone.js +4 -0
  362. package/src/components/list-view/test/utils.js +218 -1
  363. package/src/components/list-view/use-list-view-block-indexes.js +29 -0
  364. package/src/components/list-view/use-list-view-drop-zone.js +78 -6
  365. package/src/components/list-view/utils.js +116 -0
  366. package/src/components/provider/index.js +3 -1
  367. package/src/components/recursion-provider/README.md +2 -2
  368. package/src/components/recursion-provider/index.js +17 -0
  369. package/src/components/rich-text/index.js +48 -10
  370. package/src/components/rich-text/native/index.native.js +10 -10
  371. package/src/components/use-block-drop-zone/index.js +60 -19
  372. package/src/components/use-block-drop-zone/test/index.js +32 -61
  373. package/src/components/use-on-block-drop/index.js +92 -11
  374. package/src/hooks/block-hooks.js +5 -17
  375. package/src/hooks/content-lock-ui.js +15 -55
  376. package/src/hooks/dimensions.js +74 -3
  377. package/src/hooks/effects.js +57 -0
  378. package/src/hooks/index.js +4 -2
  379. package/src/hooks/index.native.js +1 -0
  380. package/src/hooks/style.js +12 -0
  381. package/src/hooks/supports.js +2 -0
  382. package/src/hooks/test/effects.js +39 -0
  383. package/src/hooks/typography.native.js +2 -2
  384. package/src/hooks/use-bindings-attributes.js +148 -0
  385. package/src/hooks/use-shadow-props.js +37 -0
  386. package/src/hooks/utils.js +30 -10
  387. package/src/index.js +2 -0
  388. package/src/store/actions.js +9 -4
  389. package/src/store/index.js +2 -0
  390. package/src/store/private-actions.js +32 -0
  391. package/src/store/private-selectors.js +78 -21
  392. package/src/store/reducer.js +49 -2
  393. package/src/store/resolvers.js +17 -0
  394. package/src/store/selectors.js +169 -161
  395. package/src/store/test/registry-selectors.js +431 -0
  396. package/src/store/test/selectors.js +14 -400
  397. package/src/store/utils.js +10 -33
  398. package/src/style.scss +0 -1
  399. package/src/utils/index.js +0 -1
  400. package/src/utils/math.js +12 -0
  401. package/src/utils/object.js +16 -0
  402. package/src/utils/transform-styles/index.js +52 -37
  403. package/tsconfig.tsbuildinfo +1 -1
  404. package/build/components/iframe/use-compatibility-styles.js +0 -100
  405. package/build/components/iframe/use-compatibility-styles.js.map +0 -1
  406. package/build/hooks/custom-fields.js +0 -106
  407. package/build/hooks/custom-fields.js.map +0 -1
  408. package/build/utils/block-variation-transforms.js +0 -42
  409. package/build/utils/block-variation-transforms.js.map +0 -1
  410. package/build-module/components/iframe/use-compatibility-styles.js +0 -94
  411. package/build-module/components/iframe/use-compatibility-styles.js.map +0 -1
  412. package/build-module/hooks/custom-fields.js +0 -99
  413. package/build-module/hooks/custom-fields.js.map +0 -1
  414. package/build-module/utils/block-variation-transforms.js +0 -35
  415. package/build-module/utils/block-variation-transforms.js.map +0 -1
  416. package/src/components/block-switcher/test/__snapshots__/index.js.snap +0 -116
  417. package/src/components/contrast-checker/style.scss +0 -3
  418. package/src/components/iframe/use-compatibility-styles.js +0 -122
  419. package/src/hooks/custom-fields.js +0 -115
  420. package/src/utils/block-variation-transforms.js +0 -38
  421. package/src/utils/test/block-variation-transforms.js +0 -94
@@ -8,10 +8,13 @@ import classnames from 'classnames';
8
8
  * WordPress dependencies
9
9
  */
10
10
  import { __ } from '@wordpress/i18n';
11
- import { Button, ExternalLink, __experimentalText as Text, Tooltip } from '@wordpress/components';
11
+ import { Button, ExternalLink, __experimentalTruncate as Truncate, Tooltip } from '@wordpress/components';
12
+ import { useCopyToClipboard } from '@wordpress/compose';
12
13
  import { filterURLForDisplay, safeDecodeURI } from '@wordpress/url';
13
- import { Icon, globe, info, linkOff, edit } from '@wordpress/icons';
14
+ import { Icon, globe, info, linkOff, edit, copy } from '@wordpress/icons';
14
15
  import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
16
+ import { useDispatch } from '@wordpress/data';
17
+ import { store as noticesStore } from '@wordpress/notices';
15
18
 
16
19
  /**
17
20
  * Internal dependencies
@@ -35,7 +38,7 @@ export default function LinkPreview({
35
38
 
36
39
  // Rich data may be an empty object so test for that.
37
40
  const hasRichData = richData && Object.keys(richData).length;
38
- const displayURL = value && filterURLForDisplay(safeDecodeURI(value.url), 16) || '';
41
+ const displayURL = value && filterURLForDisplay(safeDecodeURI(value.url), 24) || '';
39
42
 
40
43
  // url can be undefined if the href attribute is unset
41
44
  const isEmptyURL = !value?.url?.length;
@@ -56,6 +59,15 @@ export default function LinkPreview({
56
59
  icon: globe
57
60
  });
58
61
  }
62
+ const {
63
+ createNotice
64
+ } = useDispatch(noticesStore);
65
+ const ref = useCopyToClipboard(value.url, () => {
66
+ createNotice('info', __('Copied URL to clipboard.'), {
67
+ isDismissible: true,
68
+ type: 'snackbar'
69
+ });
70
+ });
59
71
  return createElement("div", {
60
72
  "aria-label": __('Currently selected'),
61
73
  className: classnames('block-editor-link-control__search-item', {
@@ -77,47 +89,39 @@ export default function LinkPreview({
77
89
  }, icon), createElement("span", {
78
90
  className: "block-editor-link-control__search-item-details"
79
91
  }, !isEmptyURL ? createElement(Fragment, null, createElement(Tooltip, {
80
- text: value.url,
81
- placement: "bottom-start"
92
+ text: value.url
82
93
  }, createElement(ExternalLink, {
83
94
  className: "block-editor-link-control__search-item-title",
84
95
  href: value.url
85
- }, displayTitle)), value?.url && displayTitle !== displayURL && createElement("span", {
96
+ }, createElement(Truncate, {
97
+ numberOfLines: 1
98
+ }, displayTitle))), value?.url && displayTitle !== displayURL && createElement("span", {
86
99
  className: "block-editor-link-control__search-item-info"
87
- }, displayURL)) : createElement("span", {
100
+ }, createElement(Truncate, {
101
+ numberOfLines: 1
102
+ }, displayURL))) : createElement("span", {
88
103
  className: "block-editor-link-control__search-item-error-notice"
89
104
  }, __('Link is empty')))), createElement(Button, {
90
105
  icon: edit,
91
106
  label: __('Edit'),
92
107
  className: "block-editor-link-control__search-item-action",
93
108
  onClick: onEditClick,
94
- iconSize: 24
109
+ size: "compact"
95
110
  }), hasUnlinkControl && createElement(Button, {
96
111
  icon: linkOff,
97
112
  label: __('Unlink'),
98
113
  className: "block-editor-link-control__search-item-action block-editor-link-control__unlink",
99
114
  onClick: onRemove,
100
- iconSize: 24
115
+ size: "compact"
116
+ }), createElement(Button, {
117
+ icon: copy,
118
+ label: __('Copy URL'),
119
+ className: "block-editor-link-control__search-item-action block-editor-link-control__copy",
120
+ ref: ref,
121
+ disabled: isEmptyURL,
122
+ size: "compact"
101
123
  }), createElement(ViewerSlot, {
102
124
  fillProps: value
103
- })), !!(hasRichData && (richData?.image || richData?.description) || isFetching) && createElement("div", {
104
- className: "block-editor-link-control__search-item-bottom"
105
- }, (richData?.image || isFetching) && createElement("div", {
106
- "aria-hidden": !richData?.image,
107
- className: classnames('block-editor-link-control__search-item-image', {
108
- 'is-placeholder': !richData?.image
109
- })
110
- }, richData?.image && createElement("img", {
111
- src: richData?.image,
112
- alt: ""
113
- })), (richData?.description || isFetching) && createElement("div", {
114
- "aria-hidden": !richData?.description,
115
- className: classnames('block-editor-link-control__search-item-description', {
116
- 'is-placeholder': !richData?.description
117
- })
118
- }, richData?.description && createElement(Text, {
119
- truncate: true,
120
- numberOfLines: "2"
121
- }, richData.description))), additionalControls && additionalControls());
125
+ })), additionalControls && additionalControls());
122
126
  }
123
127
  //# sourceMappingURL=link-preview.js.map
@@ -1 +1 @@
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":";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,EAC1BC,OAAO,QACD,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,cAAarC,EAAE,CAAE,oBAAqB,CAAG;IACzCyC,SAAS,EAAG1C,UAAU,CAAE,wCAAwC,EAAE;MACjE,YAAY,EAAE,IAAI;MAClB,SAAS,EAAE6B,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,EAAG1C,UAAU,CACrB,6CAA6C,EAC7C;MACC,UAAU,EAAE2B,QAAQ,EAAEU;IACvB,CACD;EAAG,GAEDA,IACG,CAAC,EACPC,aAAA;IAAMI,SAAS,EAAC;EAAgD,GAC7D,CAAER,UAAU,GACbI,aAAA,CAAAK,QAAA,QACCL,aAAA,CAAChC,OAAO;IACPsC,IAAI,EAAGzB,KAAK,CAACO,GAAK;IAClBmB,SAAS,EAAC;EAAc,GAExBP,aAAA,CAACnC,YAAY;IACZuC,SAAS,EAAC,8CAA8C;IACxDI,IAAI,EAAG3B,KAAK,CAACO;EAAK,GAEhBS,YACW,CACN,CAAC,EAERhB,KAAK,EAAEO,GAAG,IAAIS,YAAY,KAAKF,UAAU,IAC1CK,aAAA;IAAMI,SAAS,EAAC;EAA6C,GAC1DT,UACG,CAEN,CAAC,GAEHK,aAAA;IAAMI,SAAS,EAAC;EAAqD,GAClEzC,EAAE,CAAE,eAAgB,CACjB,CAEF,CACD,CAAC,EAEPqC,aAAA,CAACpC,MAAM;IACNmC,IAAI,EAAGxB,IAAM;IACbkC,KAAK,EAAG9C,EAAE,CAAE,MAAO,CAAG;IACtByC,SAAS,EAAC,+CAA+C;IACzDM,OAAO,EAAG5B,WAAa;IACvB6B,QAAQ,EAAG;EAAI,CACf,CAAC,EACA3B,gBAAgB,IACjBgB,aAAA,CAACpC,MAAM;IACNmC,IAAI,EAAGzB,OAAS;IAChBmC,KAAK,EAAG9C,EAAE,CAAE,QAAS,CAAG;IACxByC,SAAS,EAAC,iFAAiF;IAC3FM,OAAO,EAAGzB,QAAU;IACpB0B,QAAQ,EAAG;EAAI,CACf,CACD,EACDX,aAAA,CAACtB,UAAU;IAACkC,SAAS,EAAG/B;EAAO,CAAE,CAC7B,CAAC,EAEJ,CAAC,EACAU,WAAW,KACVF,QAAQ,EAAEwB,KAAK,IAAIxB,QAAQ,EAAEyB,WAAW,CAAE,IAC7CxB,UAAU,CACV,IACAU,aAAA;IAAKI,SAAS,EAAC;EAA+C,GAC3D,CAAEf,QAAQ,EAAEwB,KAAK,IAAIvB,UAAU,KAChCU,aAAA;IACC,eAAc,CAAEX,QAAQ,EAAEwB,KAAO;IACjCT,SAAS,EAAG1C,UAAU,CACrB,8CAA8C,EAC9C;MACC,gBAAgB,EAAE,CAAE2B,QAAQ,EAAEwB;IAC/B,CACD;EAAG,GAEDxB,QAAQ,EAAEwB,KAAK,IAChBb,aAAA;IAAKC,GAAG,EAAGZ,QAAQ,EAAEwB,KAAO;IAACX,GAAG,EAAC;EAAE,CAAE,CAElC,CACL,EAEC,CAAEb,QAAQ,EAAEyB,WAAW,IAAIxB,UAAU,KACtCU,aAAA;IACC,eAAc,CAAEX,QAAQ,EAAEyB,WAAa;IACvCV,SAAS,EAAG1C,UAAU,CACrB,oDAAoD,EACpD;MACC,gBAAgB,EAAE,CAAE2B,QAAQ,EAAEyB;IAC/B,CACD;EAAG,GAEDzB,QAAQ,EAAEyB,WAAW,IACtBd,aAAA,CAACjC,IAAI;IAACgD,QAAQ;IAACC,aAAa,EAAC;EAAG,GAC7B3B,QAAQ,CAACyB,WACN,CAEH,CAEF,CACL,EAEC5B,kBAAkB,IAAIA,kBAAkB,CAAC,CACvC,CAAC;AAER"}
1
+ {"version":3,"names":["classnames","__","Button","ExternalLink","__experimentalTruncate","Truncate","Tooltip","useCopyToClipboard","filterURLForDisplay","safeDecodeURI","Icon","globe","info","linkOff","edit","copy","__unstableStripHTML","stripHTML","useDispatch","store","noticesStore","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","createNotice","ref","isDismissible","type","className","Fragment","text","href","numberOfLines","label","onClick","disabled","fillProps"],"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__experimentalTruncate as Truncate,\n\tTooltip,\n} from '@wordpress/components';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { filterURLForDisplay, safeDecodeURI } from '@wordpress/url';\nimport { Icon, globe, info, linkOff, edit, copy } from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\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 ), 24 ) ) ||\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\tconst { createNotice } = useDispatch( noticesStore );\n\tconst ref = useCopyToClipboard( value.url, () => {\n\t\tcreateNotice( 'info', __( 'Copied URL to clipboard.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\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 text={ value.url }>\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<Truncate numberOfLines={ 1 }>\n\t\t\t\t\t\t\t\t\t\t\t{ displayTitle }\n\t\t\t\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t</Tooltip>\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<Truncate numberOfLines={ 1 }>\n\t\t\t\t\t\t\t\t\t\t\t{ displayURL }\n\t\t\t\t\t\t\t\t\t\t</Truncate>\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\tsize=\"compact\"\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\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<Button\n\t\t\t\t\ticon={ copy }\n\t\t\t\t\tlabel={ __( 'Copy URL' ) }\n\t\t\t\t\tclassName=\"block-editor-link-control__search-item-action block-editor-link-control__copy\"\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tdisabled={ isEmptyURL }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t\t<ViewerSlot fillProps={ value } />\n\t\t\t</div>\n\t\t\t{ additionalControls && additionalControls() }\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -1,8 +1,4 @@
1
1
  import { createElement } from "react";
2
- /**
3
- * External dependencies
4
- */
5
- import classnames from 'classnames';
6
2
  /**
7
3
  * WordPress dependencies
8
4
  */
@@ -100,9 +96,6 @@ const LinkControlSearchInput = forwardRef(({
100
96
  }, suggestion);
101
97
  }
102
98
  };
103
- const inputClasses = classnames(className, {
104
- // 'has-no-label': ! hideLabelFromVision,
105
- });
106
99
  return createElement("div", {
107
100
  className: "block-editor-link-control__search-input-container"
108
101
  }, createElement(URLInput, {
@@ -110,7 +103,7 @@ const LinkControlSearchInput = forwardRef(({
110
103
  __nextHasNoMarginBottom: true,
111
104
  label: __('Link'),
112
105
  hideLabelFromVision: hideLabelFromVision,
113
- className: inputClasses,
106
+ className: className,
114
107
  value: value,
115
108
  onChange: onInputChange,
116
109
  placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : __('Search or type url'),
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useInstanceId","forwardRef","useState","__","URLInput","LinkControlSearchResults","CREATE_TYPE","useSearchHandler","noopSearchHandler","Promise","resolve","noop","LinkControlSearchInput","value","children","currentLink","className","placeholder","withCreateSuggestion","onCreateSuggestion","onChange","onSelect","showSuggestions","renderSuggestions","props","createElement","fetchSuggestions","allowDirectEntry","showInitialSuggestions","suggestionsQuery","withURLSuggestion","createSuggestionButtonText","hideLabelFromVision","ref","genericSearchHandler","searchHandler","instanceId","focusedSuggestion","setFocusedSuggestion","onInputChange","selection","suggestion","handleRenderSuggestions","handleSuggestionClick","onSuggestionSelected","selectedSuggestion","type","title","url","e","Object","keys","length","id","restLinkProps","inputClasses","disableSuggestions","__nextHasNoMarginBottom","label","__experimentalRenderSuggestions","__experimentalFetchLinkSuggestions","__experimentalHandleURLSuggestions","__experimentalShowInitialSuggestions","onSubmit","event","hasSuggestion","trim","preventDefault"],"sources":["@wordpress/block-editor/src/components/link-control/search-input.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { forwardRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { URLInput } from '../';\nimport LinkControlSearchResults from './search-results';\nimport { CREATE_TYPE } from './constants';\nimport useSearchHandler from './use-search-handler';\n\n// Must be a function as otherwise URLInput will default\n// to the fetchLinkSuggestions passed in block editor settings\n// which will cause an unintended http request.\nconst noopSearchHandler = () => Promise.resolve( [] );\n\nconst noop = () => {};\n\nconst LinkControlSearchInput = forwardRef(\n\t(\n\t\t{\n\t\t\tvalue,\n\t\t\tchildren,\n\t\t\tcurrentLink = {},\n\t\t\tclassName = null,\n\t\t\tplaceholder = null,\n\t\t\twithCreateSuggestion = false,\n\t\t\tonCreateSuggestion = noop,\n\t\t\tonChange = noop,\n\t\t\tonSelect = noop,\n\t\t\tshowSuggestions = true,\n\t\t\trenderSuggestions = ( props ) => (\n\t\t\t\t<LinkControlSearchResults { ...props } />\n\t\t\t),\n\t\t\tfetchSuggestions = null,\n\t\t\tallowDirectEntry = true,\n\t\t\tshowInitialSuggestions = false,\n\t\t\tsuggestionsQuery = {},\n\t\t\twithURLSuggestion = true,\n\t\t\tcreateSuggestionButtonText,\n\t\t\thideLabelFromVision = false,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst genericSearchHandler = useSearchHandler(\n\t\t\tsuggestionsQuery,\n\t\t\tallowDirectEntry,\n\t\t\twithCreateSuggestion,\n\t\t\twithURLSuggestion\n\t\t);\n\n\t\tconst searchHandler = showSuggestions\n\t\t\t? fetchSuggestions || genericSearchHandler\n\t\t\t: noopSearchHandler;\n\n\t\tconst instanceId = useInstanceId( LinkControlSearchInput );\n\t\tconst [ focusedSuggestion, setFocusedSuggestion ] = useState();\n\n\t\t/**\n\t\t * Handles the user moving between different suggestions. Does not handle\n\t\t * choosing an individual item.\n\t\t *\n\t\t * @param {string} selection the url of the selected suggestion.\n\t\t * @param {Object} suggestion the suggestion object.\n\t\t */\n\t\tconst onInputChange = ( selection, suggestion ) => {\n\t\t\tonChange( selection );\n\t\t\tsetFocusedSuggestion( suggestion );\n\t\t};\n\n\t\tconst handleRenderSuggestions = ( props ) =>\n\t\t\trenderSuggestions( {\n\t\t\t\t...props,\n\t\t\t\tinstanceId,\n\t\t\t\twithCreateSuggestion,\n\t\t\t\tcreateSuggestionButtonText,\n\t\t\t\tsuggestionsQuery,\n\t\t\t\thandleSuggestionClick: ( suggestion ) => {\n\t\t\t\t\tif ( props.handleSuggestionClick ) {\n\t\t\t\t\t\tprops.handleSuggestionClick( suggestion );\n\t\t\t\t\t}\n\t\t\t\t\tonSuggestionSelected( suggestion );\n\t\t\t\t},\n\t\t\t} );\n\n\t\tconst onSuggestionSelected = async ( selectedSuggestion ) => {\n\t\t\tlet suggestion = selectedSuggestion;\n\t\t\tif ( CREATE_TYPE === selectedSuggestion.type ) {\n\t\t\t\t// Create a new page and call onSelect with the output from the onCreateSuggestion callback.\n\t\t\t\ttry {\n\t\t\t\t\tsuggestion = await onCreateSuggestion(\n\t\t\t\t\t\tselectedSuggestion.title\n\t\t\t\t\t);\n\t\t\t\t\tif ( suggestion?.url ) {\n\t\t\t\t\t\tonSelect( suggestion );\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tallowDirectEntry ||\n\t\t\t\t( suggestion && Object.keys( suggestion ).length >= 1 )\n\t\t\t) {\n\t\t\t\tconst { id, url, ...restLinkProps } = currentLink ?? {};\n\t\t\t\tonSelect(\n\t\t\t\t\t// Some direct entries don't have types or IDs, and we still need to clear the previous ones.\n\t\t\t\t\t{ ...restLinkProps, ...suggestion },\n\t\t\t\t\tsuggestion\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tconst inputClasses = classnames( className, {\n\t\t\t// 'has-no-label': ! hideLabelFromVision,\n\t\t} );\n\n\t\treturn (\n\t\t\t<div className=\"block-editor-link-control__search-input-container\">\n\t\t\t\t<URLInput\n\t\t\t\t\tdisableSuggestions={ currentLink?.url === value }\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\tclassName={ inputClasses }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onInputChange }\n\t\t\t\t\tplaceholder={ placeholder ?? __( 'Search or type url' ) }\n\t\t\t\t\t__experimentalRenderSuggestions={\n\t\t\t\t\t\tshowSuggestions ? handleRenderSuggestions : null\n\t\t\t\t\t}\n\t\t\t\t\t__experimentalFetchLinkSuggestions={ searchHandler }\n\t\t\t\t\t__experimentalHandleURLSuggestions={ true }\n\t\t\t\t\t__experimentalShowInitialSuggestions={\n\t\t\t\t\t\tshowInitialSuggestions\n\t\t\t\t\t}\n\t\t\t\t\tonSubmit={ ( suggestion, event ) => {\n\t\t\t\t\t\tconst hasSuggestion = suggestion || focusedSuggestion;\n\n\t\t\t\t\t\t// If there is no suggestion and the value (ie: any manually entered URL) is empty\n\t\t\t\t\t\t// then don't allow submission otherwise we get empty links.\n\t\t\t\t\t\tif ( ! hasSuggestion && ! value?.trim()?.length ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tonSuggestionSelected(\n\t\t\t\t\t\t\t\thasSuggestion || { url: value }\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\tref={ ref }\n\t\t\t\t/>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nexport default LinkControlSearchInput;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useInstanceId","forwardRef","useState","__","URLInput","LinkControlSearchResults","CREATE_TYPE","useSearchHandler","noopSearchHandler","Promise","resolve","noop","LinkControlSearchInput","value","children","currentLink","className","placeholder","withCreateSuggestion","onCreateSuggestion","onChange","onSelect","showSuggestions","renderSuggestions","props","createElement","fetchSuggestions","allowDirectEntry","showInitialSuggestions","suggestionsQuery","withURLSuggestion","createSuggestionButtonText","hideLabelFromVision","ref","genericSearchHandler","searchHandler","instanceId","focusedSuggestion","setFocusedSuggestion","onInputChange","selection","suggestion","handleRenderSuggestions","handleSuggestionClick","onSuggestionSelected","selectedSuggestion","type","title","url","e","Object","keys","length","id","restLinkProps","disableSuggestions","__nextHasNoMarginBottom","label","__experimentalRenderSuggestions","__experimentalFetchLinkSuggestions","__experimentalHandleURLSuggestions","__experimentalShowInitialSuggestions","onSubmit","event","hasSuggestion","trim","preventDefault"],"sources":["@wordpress/block-editor/src/components/link-control/search-input.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { forwardRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { URLInput } from '../';\nimport LinkControlSearchResults from './search-results';\nimport { CREATE_TYPE } from './constants';\nimport useSearchHandler from './use-search-handler';\n\n// Must be a function as otherwise URLInput will default\n// to the fetchLinkSuggestions passed in block editor settings\n// which will cause an unintended http request.\nconst noopSearchHandler = () => Promise.resolve( [] );\n\nconst noop = () => {};\n\nconst LinkControlSearchInput = forwardRef(\n\t(\n\t\t{\n\t\t\tvalue,\n\t\t\tchildren,\n\t\t\tcurrentLink = {},\n\t\t\tclassName = null,\n\t\t\tplaceholder = null,\n\t\t\twithCreateSuggestion = false,\n\t\t\tonCreateSuggestion = noop,\n\t\t\tonChange = noop,\n\t\t\tonSelect = noop,\n\t\t\tshowSuggestions = true,\n\t\t\trenderSuggestions = ( props ) => (\n\t\t\t\t<LinkControlSearchResults { ...props } />\n\t\t\t),\n\t\t\tfetchSuggestions = null,\n\t\t\tallowDirectEntry = true,\n\t\t\tshowInitialSuggestions = false,\n\t\t\tsuggestionsQuery = {},\n\t\t\twithURLSuggestion = true,\n\t\t\tcreateSuggestionButtonText,\n\t\t\thideLabelFromVision = false,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst genericSearchHandler = useSearchHandler(\n\t\t\tsuggestionsQuery,\n\t\t\tallowDirectEntry,\n\t\t\twithCreateSuggestion,\n\t\t\twithURLSuggestion\n\t\t);\n\n\t\tconst searchHandler = showSuggestions\n\t\t\t? fetchSuggestions || genericSearchHandler\n\t\t\t: noopSearchHandler;\n\n\t\tconst instanceId = useInstanceId( LinkControlSearchInput );\n\t\tconst [ focusedSuggestion, setFocusedSuggestion ] = useState();\n\n\t\t/**\n\t\t * Handles the user moving between different suggestions. Does not handle\n\t\t * choosing an individual item.\n\t\t *\n\t\t * @param {string} selection the url of the selected suggestion.\n\t\t * @param {Object} suggestion the suggestion object.\n\t\t */\n\t\tconst onInputChange = ( selection, suggestion ) => {\n\t\t\tonChange( selection );\n\t\t\tsetFocusedSuggestion( suggestion );\n\t\t};\n\n\t\tconst handleRenderSuggestions = ( props ) =>\n\t\t\trenderSuggestions( {\n\t\t\t\t...props,\n\t\t\t\tinstanceId,\n\t\t\t\twithCreateSuggestion,\n\t\t\t\tcreateSuggestionButtonText,\n\t\t\t\tsuggestionsQuery,\n\t\t\t\thandleSuggestionClick: ( suggestion ) => {\n\t\t\t\t\tif ( props.handleSuggestionClick ) {\n\t\t\t\t\t\tprops.handleSuggestionClick( suggestion );\n\t\t\t\t\t}\n\t\t\t\t\tonSuggestionSelected( suggestion );\n\t\t\t\t},\n\t\t\t} );\n\n\t\tconst onSuggestionSelected = async ( selectedSuggestion ) => {\n\t\t\tlet suggestion = selectedSuggestion;\n\t\t\tif ( CREATE_TYPE === selectedSuggestion.type ) {\n\t\t\t\t// Create a new page and call onSelect with the output from the onCreateSuggestion callback.\n\t\t\t\ttry {\n\t\t\t\t\tsuggestion = await onCreateSuggestion(\n\t\t\t\t\t\tselectedSuggestion.title\n\t\t\t\t\t);\n\t\t\t\t\tif ( suggestion?.url ) {\n\t\t\t\t\t\tonSelect( suggestion );\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tallowDirectEntry ||\n\t\t\t\t( suggestion && Object.keys( suggestion ).length >= 1 )\n\t\t\t) {\n\t\t\t\tconst { id, url, ...restLinkProps } = currentLink ?? {};\n\t\t\t\tonSelect(\n\t\t\t\t\t// Some direct entries don't have types or IDs, and we still need to clear the previous ones.\n\t\t\t\t\t{ ...restLinkProps, ...suggestion },\n\t\t\t\t\tsuggestion\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<div className=\"block-editor-link-control__search-input-container\">\n\t\t\t\t<URLInput\n\t\t\t\t\tdisableSuggestions={ currentLink?.url === value }\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\tclassName={ className }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onInputChange }\n\t\t\t\t\tplaceholder={ placeholder ?? __( 'Search or type url' ) }\n\t\t\t\t\t__experimentalRenderSuggestions={\n\t\t\t\t\t\tshowSuggestions ? handleRenderSuggestions : null\n\t\t\t\t\t}\n\t\t\t\t\t__experimentalFetchLinkSuggestions={ searchHandler }\n\t\t\t\t\t__experimentalHandleURLSuggestions={ true }\n\t\t\t\t\t__experimentalShowInitialSuggestions={\n\t\t\t\t\t\tshowInitialSuggestions\n\t\t\t\t\t}\n\t\t\t\t\tonSubmit={ ( suggestion, event ) => {\n\t\t\t\t\t\tconst hasSuggestion = suggestion || focusedSuggestion;\n\n\t\t\t\t\t\t// If there is no suggestion and the value (ie: any manually entered URL) is empty\n\t\t\t\t\t\t// then don't allow submission otherwise we get empty links.\n\t\t\t\t\t\tif ( ! hasSuggestion && ! value?.trim()?.length ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tonSuggestionSelected(\n\t\t\t\t\t\t\t\thasSuggestion || { url: value }\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\tref={ ref }\n\t\t\t\t/>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nexport default LinkControlSearchInput;\n"],"mappings":"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"}
@@ -65,7 +65,9 @@ const ListViewBlockContents = forwardRef(({
65
65
  insertedBlock: insertedBlock,
66
66
  setInsertedBlock: setInsertedBlock
67
67
  }), createElement(BlockDraggable, {
68
- clientIds: draggableClientIds
68
+ appendToOwnerDocument: true,
69
+ clientIds: draggableClientIds,
70
+ cloneClassname: 'block-editor-list-view-draggable-chip'
69
71
  }, ({
70
72
  draggable,
71
73
  onDragStart,
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useSelect","forwardRef","ListViewBlockSelectButton","BlockDraggable","store","blockEditorStore","useListViewContext","ListViewBlockContents","onClick","onToggleExpanded","block","isSelected","position","siblingBlockCount","level","isExpanded","selectedClientIds","props","ref","clientId","blockMovingClientId","selectedBlockInBlockEditor","select","hasBlockMovingClientId","getSelectedBlockClientId","AdditionalBlockContent","insertedBlock","setInsertedBlock","isBlockMoveTarget","className","draggableClientIds","includes","createElement","Fragment","clientIds","draggable","onDragStart","onDragEnd"],"sources":["@wordpress/block-editor/src/components/list-view/block-contents.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport ListViewBlockSelectButton from './block-select-button';\nimport BlockDraggable from '../block-draggable';\nimport { store as blockEditorStore } from '../../store';\nimport { useListViewContext } from './context';\n\nconst ListViewBlockContents = forwardRef(\n\t(\n\t\t{\n\t\t\tonClick,\n\t\t\tonToggleExpanded,\n\t\t\tblock,\n\t\t\tisSelected,\n\t\t\tposition,\n\t\t\tsiblingBlockCount,\n\t\t\tlevel,\n\t\t\tisExpanded,\n\t\t\tselectedClientIds,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst { clientId } = block;\n\n\t\tconst { blockMovingClientId, selectedBlockInBlockEditor } = useSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { hasBlockMovingClientId, getSelectedBlockClientId } =\n\t\t\t\t\tselect( blockEditorStore );\n\t\t\t\treturn {\n\t\t\t\t\tblockMovingClientId: hasBlockMovingClientId(),\n\t\t\t\t\tselectedBlockInBlockEditor: getSelectedBlockClientId(),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[]\n\t\t);\n\n\t\tconst { AdditionalBlockContent, insertedBlock, setInsertedBlock } =\n\t\t\tuseListViewContext();\n\n\t\tconst isBlockMoveTarget =\n\t\t\tblockMovingClientId && selectedBlockInBlockEditor === clientId;\n\n\t\tconst className = classnames( 'block-editor-list-view-block-contents', {\n\t\t\t'is-dropping-before': isBlockMoveTarget,\n\t\t} );\n\n\t\t// Only include all selected blocks if the currently clicked on block\n\t\t// is one of the selected blocks. This ensures that if a user attempts\n\t\t// to drag a block that isn't part of the selection, they're still able\n\t\t// to drag it and rearrange its position.\n\t\tconst draggableClientIds = selectedClientIds.includes( clientId )\n\t\t\t? selectedClientIds\n\t\t\t: [ clientId ];\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ AdditionalBlockContent && (\n\t\t\t\t\t<AdditionalBlockContent\n\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\tinsertedBlock={ insertedBlock }\n\t\t\t\t\t\tsetInsertedBlock={ setInsertedBlock }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockDraggable clientIds={ draggableClientIds }>\n\t\t\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t\t\t<ListViewBlockSelectButton\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t\tonToggleExpanded={ onToggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\t\t\tonDragStart={ onDragStart }\n\t\t\t\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</BlockDraggable>\n\t\t\t</>\n\t\t);\n\t}\n);\n\nexport default ListViewBlockContents;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,yBAAyB,MAAM,uBAAuB;AAC7D,OAAOC,cAAc,MAAM,oBAAoB;AAC/C,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,kBAAkB,QAAQ,WAAW;AAE9C,MAAMC,qBAAqB,GAAGN,UAAU,CACvC,CACC;EACCO,OAAO;EACPC,gBAAgB;EAChBC,KAAK;EACLC,UAAU;EACVC,QAAQ;EACRC,iBAAiB;EACjBC,KAAK;EACLC,UAAU;EACVC,iBAAiB;EACjB,GAAGC;AACJ,CAAC,EACDC,GAAG,KACC;EACJ,MAAM;IAAEC;EAAS,CAAC,GAAGT,KAAK;EAE1B,MAAM;IAAEU,mBAAmB;IAAEC;EAA2B,CAAC,GAAGrB,SAAS,CAClEsB,MAAM,IAAM;IACb,MAAM;MAAEC,sBAAsB;MAAEC;IAAyB,CAAC,GACzDF,MAAM,CAAEjB,gBAAiB,CAAC;IAC3B,OAAO;MACNe,mBAAmB,EAAEG,sBAAsB,CAAC,CAAC;MAC7CF,0BAA0B,EAAEG,wBAAwB,CAAC;IACtD,CAAC;EACF,CAAC,EACD,EACD,CAAC;EAED,MAAM;IAAEC,sBAAsB;IAAEC,aAAa;IAAEC;EAAiB,CAAC,GAChErB,kBAAkB,CAAC,CAAC;EAErB,MAAMsB,iBAAiB,GACtBR,mBAAmB,IAAIC,0BAA0B,KAAKF,QAAQ;EAE/D,MAAMU,SAAS,GAAG9B,UAAU,CAAE,uCAAuC,EAAE;IACtE,oBAAoB,EAAE6B;EACvB,CAAE,CAAC;;EAEH;EACA;EACA;EACA;EACA,MAAME,kBAAkB,GAAGd,iBAAiB,CAACe,QAAQ,CAAEZ,QAAS,CAAC,GAC9DH,iBAAiB,GACjB,CAAEG,QAAQ,CAAE;EAEf,OACCa,aAAA,CAAAC,QAAA,QACGR,sBAAsB,IACvBO,aAAA,CAACP,sBAAsB;IACtBf,KAAK,EAAGA,KAAO;IACfgB,aAAa,EAAGA,aAAe;IAC/BC,gBAAgB,EAAGA;EAAkB,CACrC,CACD,EACDK,aAAA,CAAC7B,cAAc;IAAC+B,SAAS,EAAGJ;EAAoB,GAC7C,CAAE;IAAEK,SAAS;IAAEC,WAAW;IAAEC;EAAU,CAAC,KACxCL,aAAA,CAAC9B,yBAAyB;IACzBgB,GAAG,EAAGA,GAAK;IACXW,SAAS,EAAGA,SAAW;IACvBnB,KAAK,EAAGA,KAAO;IACfF,OAAO,EAAGA,OAAS;IACnBC,gBAAgB,EAAGA,gBAAkB;IACrCE,UAAU,EAAGA,UAAY;IACzBC,QAAQ,EAAGA,QAAU;IACrBC,iBAAiB,EAAGA,iBAAmB;IACvCC,KAAK,EAAGA,KAAO;IACfqB,SAAS,EAAGA,SAAW;IACvBC,WAAW,EAAGA,WAAa;IAC3BC,SAAS,EAAGA,SAAW;IACvBtB,UAAU,EAAGA,UAAY;IAAA,GACpBE;EAAK,CACV,CAEa,CACf,CAAC;AAEL,CACD,CAAC;AAED,eAAeV,qBAAqB"}
1
+ {"version":3,"names":["classnames","useSelect","forwardRef","ListViewBlockSelectButton","BlockDraggable","store","blockEditorStore","useListViewContext","ListViewBlockContents","onClick","onToggleExpanded","block","isSelected","position","siblingBlockCount","level","isExpanded","selectedClientIds","props","ref","clientId","blockMovingClientId","selectedBlockInBlockEditor","select","hasBlockMovingClientId","getSelectedBlockClientId","AdditionalBlockContent","insertedBlock","setInsertedBlock","isBlockMoveTarget","className","draggableClientIds","includes","createElement","Fragment","appendToOwnerDocument","clientIds","cloneClassname","draggable","onDragStart","onDragEnd"],"sources":["@wordpress/block-editor/src/components/list-view/block-contents.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport ListViewBlockSelectButton from './block-select-button';\nimport BlockDraggable from '../block-draggable';\nimport { store as blockEditorStore } from '../../store';\nimport { useListViewContext } from './context';\n\nconst ListViewBlockContents = forwardRef(\n\t(\n\t\t{\n\t\t\tonClick,\n\t\t\tonToggleExpanded,\n\t\t\tblock,\n\t\t\tisSelected,\n\t\t\tposition,\n\t\t\tsiblingBlockCount,\n\t\t\tlevel,\n\t\t\tisExpanded,\n\t\t\tselectedClientIds,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst { clientId } = block;\n\n\t\tconst { blockMovingClientId, selectedBlockInBlockEditor } = useSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { hasBlockMovingClientId, getSelectedBlockClientId } =\n\t\t\t\t\tselect( blockEditorStore );\n\t\t\t\treturn {\n\t\t\t\t\tblockMovingClientId: hasBlockMovingClientId(),\n\t\t\t\t\tselectedBlockInBlockEditor: getSelectedBlockClientId(),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[]\n\t\t);\n\n\t\tconst { AdditionalBlockContent, insertedBlock, setInsertedBlock } =\n\t\t\tuseListViewContext();\n\n\t\tconst isBlockMoveTarget =\n\t\t\tblockMovingClientId && selectedBlockInBlockEditor === clientId;\n\n\t\tconst className = classnames( 'block-editor-list-view-block-contents', {\n\t\t\t'is-dropping-before': isBlockMoveTarget,\n\t\t} );\n\n\t\t// Only include all selected blocks if the currently clicked on block\n\t\t// is one of the selected blocks. This ensures that if a user attempts\n\t\t// to drag a block that isn't part of the selection, they're still able\n\t\t// to drag it and rearrange its position.\n\t\tconst draggableClientIds = selectedClientIds.includes( clientId )\n\t\t\t? selectedClientIds\n\t\t\t: [ clientId ];\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ AdditionalBlockContent && (\n\t\t\t\t\t<AdditionalBlockContent\n\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\tinsertedBlock={ insertedBlock }\n\t\t\t\t\t\tsetInsertedBlock={ setInsertedBlock }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockDraggable\n\t\t\t\t\tappendToOwnerDocument\n\t\t\t\t\tclientIds={ draggableClientIds }\n\t\t\t\t\tcloneClassname={ 'block-editor-list-view-draggable-chip' }\n\t\t\t\t>\n\t\t\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t\t\t<ListViewBlockSelectButton\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t\tonToggleExpanded={ onToggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\t\t\tonDragStart={ onDragStart }\n\t\t\t\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</BlockDraggable>\n\t\t\t</>\n\t\t);\n\t}\n);\n\nexport default ListViewBlockContents;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,yBAAyB,MAAM,uBAAuB;AAC7D,OAAOC,cAAc,MAAM,oBAAoB;AAC/C,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,kBAAkB,QAAQ,WAAW;AAE9C,MAAMC,qBAAqB,GAAGN,UAAU,CACvC,CACC;EACCO,OAAO;EACPC,gBAAgB;EAChBC,KAAK;EACLC,UAAU;EACVC,QAAQ;EACRC,iBAAiB;EACjBC,KAAK;EACLC,UAAU;EACVC,iBAAiB;EACjB,GAAGC;AACJ,CAAC,EACDC,GAAG,KACC;EACJ,MAAM;IAAEC;EAAS,CAAC,GAAGT,KAAK;EAE1B,MAAM;IAAEU,mBAAmB;IAAEC;EAA2B,CAAC,GAAGrB,SAAS,CAClEsB,MAAM,IAAM;IACb,MAAM;MAAEC,sBAAsB;MAAEC;IAAyB,CAAC,GACzDF,MAAM,CAAEjB,gBAAiB,CAAC;IAC3B,OAAO;MACNe,mBAAmB,EAAEG,sBAAsB,CAAC,CAAC;MAC7CF,0BAA0B,EAAEG,wBAAwB,CAAC;IACtD,CAAC;EACF,CAAC,EACD,EACD,CAAC;EAED,MAAM;IAAEC,sBAAsB;IAAEC,aAAa;IAAEC;EAAiB,CAAC,GAChErB,kBAAkB,CAAC,CAAC;EAErB,MAAMsB,iBAAiB,GACtBR,mBAAmB,IAAIC,0BAA0B,KAAKF,QAAQ;EAE/D,MAAMU,SAAS,GAAG9B,UAAU,CAAE,uCAAuC,EAAE;IACtE,oBAAoB,EAAE6B;EACvB,CAAE,CAAC;;EAEH;EACA;EACA;EACA;EACA,MAAME,kBAAkB,GAAGd,iBAAiB,CAACe,QAAQ,CAAEZ,QAAS,CAAC,GAC9DH,iBAAiB,GACjB,CAAEG,QAAQ,CAAE;EAEf,OACCa,aAAA,CAAAC,QAAA,QACGR,sBAAsB,IACvBO,aAAA,CAACP,sBAAsB;IACtBf,KAAK,EAAGA,KAAO;IACfgB,aAAa,EAAGA,aAAe;IAC/BC,gBAAgB,EAAGA;EAAkB,CACrC,CACD,EACDK,aAAA,CAAC7B,cAAc;IACd+B,qBAAqB;IACrBC,SAAS,EAAGL,kBAAoB;IAChCM,cAAc,EAAG;EAAyC,GAExD,CAAE;IAAEC,SAAS;IAAEC,WAAW;IAAEC;EAAU,CAAC,KACxCP,aAAA,CAAC9B,yBAAyB;IACzBgB,GAAG,EAAGA,GAAK;IACXW,SAAS,EAAGA,SAAW;IACvBnB,KAAK,EAAGA,KAAO;IACfF,OAAO,EAAGA,OAAS;IACnBC,gBAAgB,EAAGA,gBAAkB;IACrCE,UAAU,EAAGA,UAAY;IACzBC,QAAQ,EAAGA,QAAU;IACrBC,iBAAiB,EAAGA,iBAAmB;IACvCC,KAAK,EAAGA,KAAO;IACfuB,SAAS,EAAGA,SAAW;IACvBC,WAAW,EAAGA,WAAa;IAC3BC,SAAS,EAAGA,SAAW;IACvBxB,UAAU,EAAGA,UAAY;IAAA,GACpBE;EAAK,CACV,CAEa,CACf,CAAC;AAEL,CACD,CAAC;AAED,eAAeV,qBAAqB"}
@@ -33,7 +33,10 @@ function ListViewBlock({
33
33
  block: {
34
34
  clientId
35
35
  },
36
+ displacement,
37
+ isAfterDraggedBlocks,
36
38
  isDragged,
39
+ isNesting,
37
40
  isSelected,
38
41
  isBranchSelected,
39
42
  selectBlock,
@@ -208,7 +211,12 @@ function ListViewBlock({
208
211
  'is-dragging': isDragged,
209
212
  'has-single-cell': !showBlockActions,
210
213
  'is-synced': blockInformation?.isSynced,
211
- 'is-draggable': canMove
214
+ 'is-draggable': canMove,
215
+ 'is-displacement-normal': displacement === 'normal',
216
+ 'is-displacement-up': displacement === 'up',
217
+ 'is-displacement-down': displacement === 'down',
218
+ 'is-after-dragged-blocks': isAfterDraggedBlocks,
219
+ 'is-nesting': isNesting
212
220
  });
213
221
 
214
222
  // Only include all selected blocks if the currently clicked on block
@@ -230,6 +238,7 @@ function ListViewBlock({
230
238
  const currentlyEditingBlockInCanvas = isSelected && selectedClientIds.length === 1;
231
239
  return createElement(ListViewLeaf, {
232
240
  className: classes,
241
+ isDragged: isDragged,
233
242
  onKeyDown: onKeyDown,
234
243
  onMouseEnter: onMouseEnter,
235
244
  onMouseLeave: onMouseLeave,
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","hasBlockSupport","__experimentalTreeGridCell","TreeGridCell","__experimentalTreeGridItem","TreeGridItem","useInstanceId","moreVertical","useCallback","useMemo","useState","useRef","memo","useDispatch","useSelect","sprintf","__","ESCAPE","ListViewLeaf","useListViewScrollIntoView","BlockMoverUpButton","BlockMoverDownButton","ListViewBlockContents","useListViewContext","getBlockPositionDescription","focusListItem","store","blockEditorStore","useBlockDisplayInformation","useBlockLock","AriaReferencedText","ListViewBlock","block","clientId","isDragged","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","isSyncedBranch","cellRef","rowRef","settingsRef","isHovered","setIsHovered","settingsAnchorRect","setSettingsAnchorRect","isLocked","canEdit","canMove","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","blockInformation","blockTitle","name","title","blockName","blockEditingMode","select","getBlock","getBlockName","getBlockEditingMode","allowRightClickOverrides","getSettings","showBlockActions","instanceId","descriptionId","blockPositionDescription","blockAriaLabel","settingsAriaLabel","expand","collapse","BlockSettingsMenu","listViewInstanceId","expandedState","setInsertedBlock","treeGridElementRef","hasSiblings","hasRenderedMovers","moverCellClassName","listViewBlockSettingsClassName","onKeyDown","event","keyCode","defaultPrevented","stopPropagation","preventDefault","undefined","onMouseEnter","onMouseLeave","selectEditorBlock","updateFocusAndSelection","focusClientId","shouldSelectBlock","toggleExpanded","onContextMenu","current","click","window","DOMRect","clientX","clientY","onMouseDown","button","settingsPopoverAnchor","ownerDocument","getBoundingClientRect","clearSettingsAnchorRect","colSpan","classes","isSynced","dropdownClientIds","includes","rowItemRef","currentlyEditingBlockInCanvas","createElement","className","onFocus","onBlur","id","ref","tabIndex","onClick","onToggleExpanded","ariaLabel","ariaDescribedBy","Fragment","withoutGridItem","orientation","clientIds","icon","label","popoverProps","anchor","toggleProps","disableOpenOnArrowDown","__experimentalSelectBlock"],"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalTreeGridCell as TreeGridCell,\n\t__experimentalTreeGridItem as TreeGridItem,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tuseCallback,\n\tuseMemo,\n\tuseState,\n\tuseRef,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\nimport { ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport useListViewScrollIntoView from './use-list-view-scroll-into-view';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport { useListViewContext } from './context';\nimport { getBlockPositionDescription, focusListItem } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { useBlockLock } from '../block-lock';\nimport AriaReferencedText from './aria-referenced-text';\n\nfunction ListViewBlock( {\n\tblock: { clientId },\n\tisDragged,\n\tisSelected,\n\tisBranchSelected,\n\tselectBlock,\n\tposition,\n\tlevel,\n\trowCount,\n\tsiblingBlockCount,\n\tshowBlockMovers,\n\tpath,\n\tisExpanded,\n\tselectedClientIds,\n\tisSyncedBranch,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst rowRef = useRef( null );\n\tconst settingsRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ settingsAnchorRect, setSettingsAnchorRect ] = useState();\n\n\tconst { isLocked, canEdit, canMove } = useBlockLock( clientId );\n\n\tconst isFirstSelectedBlock =\n\t\tisSelected && selectedClientIds[ 0 ] === clientId;\n\tconst isLastSelectedBlock =\n\t\tisSelected &&\n\t\tselectedClientIds[ selectedClientIds.length - 1 ] === clientId;\n\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle =\n\t\tblockInformation?.name || blockInformation?.title || __( 'Untitled' );\n\n\tconst { block, blockName, blockEditingMode } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockName, getBlockEditingMode } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tblock: getBlock( clientId ),\n\t\t\t\tblockName: getBlockName( clientId ),\n\t\t\t\tblockEditingMode: getBlockEditingMode( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst allowRightClickOverrides = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().allowRightClickOverrides,\n\t\t[]\n\t);\n\n\tconst showBlockActions =\n\t\t// When a block hides its toolbar it also hides the block settings menu,\n\t\t// since that menu is part of the toolbar in the editor canvas.\n\t\t// List View respects this by also hiding the block settings menu.\n\t\thasBlockSupport( blockName, '__experimentalToolbar', true ) &&\n\t\t// Don't show the settings menu if block is disabled or content only.\n\t\tblockEditingMode === 'default';\n\tconst instanceId = useInstanceId( ListViewBlock );\n\tconst descriptionId = `list-view-block-select-button__${ instanceId }`;\n\tconst blockPositionDescription = getBlockPositionDescription(\n\t\tposition,\n\t\tsiblingBlockCount,\n\t\tlevel\n\t);\n\n\tconst blockAriaLabel = isLocked\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the locked block.\n\t\t\t\t__( '%s (locked)' ),\n\t\t\t\tblockTitle\n\t\t )\n\t\t: blockTitle;\n\n\tconst settingsAriaLabel = sprintf(\n\t\t// translators: %s: The title of the block.\n\t\t__( 'Options for %s' ),\n\t\tblockTitle\n\t);\n\n\tconst {\n\t\texpand,\n\t\tcollapse,\n\t\tBlockSettingsMenu,\n\t\tlistViewInstanceId,\n\t\texpandedState,\n\t\tsetInsertedBlock,\n\t\ttreeGridElementRef,\n\t} = useListViewContext();\n\n\tconst hasSiblings = siblingBlockCount > 0;\n\tconst hasRenderedMovers = showBlockMovers && hasSiblings;\n\tconst moverCellClassName = classnames(\n\t\t'block-editor-list-view-block__mover-cell',\n\t\t{ 'is-visible': isHovered || isSelected }\n\t);\n\n\tconst listViewBlockSettingsClassName = classnames(\n\t\t'block-editor-list-view-block__menu-cell',\n\t\t{ 'is-visible': isHovered || isFirstSelectedBlock }\n\t);\n\n\t// If multiple blocks are selected, deselect all blocks when the user\n\t// presses the escape key.\n\tconst onKeyDown = ( event ) => {\n\t\tif (\n\t\t\tevent.keyCode === ESCAPE &&\n\t\t\t! event.defaultPrevented &&\n\t\t\tselectedClientIds.length > 0\n\t\t) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tselectBlock( event, undefined );\n\t\t}\n\t};\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\ttoggleBlockHighlight( clientId, true );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\ttoggleBlockHighlight( clientId, false );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\n\tconst selectEditorBlock = useCallback(\n\t\t( event ) => {\n\t\t\tselectBlock( event, clientId );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t[ clientId, selectBlock ]\n\t);\n\n\tconst updateFocusAndSelection = useCallback(\n\t\t( focusClientId, shouldSelectBlock ) => {\n\t\t\tif ( shouldSelectBlock ) {\n\t\t\t\tselectBlock( undefined, focusClientId, null, null );\n\t\t\t}\n\n\t\t\tfocusListItem( focusClientId, treeGridElementRef );\n\t\t},\n\t\t[ selectBlock, treeGridElementRef ]\n\t);\n\n\tconst toggleExpanded = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent shift+click from opening link in a new window when toggling.\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif ( isExpanded === true ) {\n\t\t\t\tcollapse( clientId );\n\t\t\t} else if ( isExpanded === false ) {\n\t\t\t\texpand( clientId );\n\t\t\t}\n\t\t},\n\t\t[ clientId, expand, collapse, isExpanded ]\n\t);\n\n\t// Allow right-clicking an item in the List View to open up the block settings dropdown.\n\tconst onContextMenu = useCallback(\n\t\t( event ) => {\n\t\t\tif ( showBlockActions && allowRightClickOverrides ) {\n\t\t\t\tsettingsRef.current?.click();\n\t\t\t\t// Ensure the position of the settings dropdown is at the cursor.\n\t\t\t\tsetSettingsAnchorRect(\n\t\t\t\t\tnew window.DOMRect( event.clientX, event.clientY, 0, 0 )\n\t\t\t\t);\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides, settingsRef, showBlockActions ]\n\t);\n\n\tconst onMouseDown = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent right-click from focusing the block,\n\t\t\t// because focus will be handled when opening the block settings dropdown.\n\t\t\tif ( allowRightClickOverrides && event.button === 2 ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides ]\n\t);\n\n\tconst settingsPopoverAnchor = useMemo( () => {\n\t\tconst { ownerDocument } = rowRef?.current || {};\n\n\t\t// If no custom position is set, the settings dropdown will be anchored to the\n\t\t// DropdownMenu toggle button.\n\t\tif ( ! settingsAnchorRect || ! ownerDocument ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Position the settings dropdown at the cursor when right-clicking a block.\n\t\treturn {\n\t\t\townerDocument,\n\t\t\tgetBoundingClientRect() {\n\t\t\t\treturn settingsAnchorRect;\n\t\t\t},\n\t\t};\n\t}, [ settingsAnchorRect ] );\n\n\tconst clearSettingsAnchorRect = useCallback( () => {\n\t\t// Clear the custom position for the settings dropdown so that it is restored back\n\t\t// to being anchored to the DropdownMenu toggle button.\n\t\tsetSettingsAnchorRect( undefined );\n\t}, [ setSettingsAnchorRect ] );\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( ! showBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = classnames( {\n\t\t'is-selected': isSelected,\n\t\t'is-first-selected': isFirstSelectedBlock,\n\t\t'is-last-selected': isLastSelectedBlock,\n\t\t'is-branch-selected': isBranchSelected,\n\t\t'is-synced-branch': isSyncedBranch,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': ! showBlockActions,\n\t\t'is-synced': blockInformation?.isSynced,\n\t\t'is-draggable': canMove,\n\t} );\n\n\t// Only include all selected blocks if the currently clicked on block\n\t// is one of the selected blocks. This ensures that if a user attempts\n\t// to alter a block that isn't part of the selection, they're still able\n\t// to do so.\n\tconst dropdownClientIds = selectedClientIds.includes( clientId )\n\t\t? selectedClientIds\n\t\t: [ clientId ];\n\n\t// Pass in a ref to the row, so that it can be scrolled\n\t// into view when selected. For long lists, the placeholder for the\n\t// selected block is also observed, within ListViewLeafPlaceholder.\n\tuseListViewScrollIntoView( {\n\t\tisSelected,\n\t\trowItemRef: rowRef,\n\t\tselectedClientIds,\n\t} );\n\n\t// Detect if there is a block in the canvas currently being edited and multi-selection is not happening.\n\tconst currentlyEditingBlockInCanvas =\n\t\tisSelected && selectedClientIds.length === 1;\n\n\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tlevel={ level }\n\t\t\tposition={ position }\n\t\t\trowCount={ rowCount }\n\t\t\tpath={ path }\n\t\t\tid={ `list-view-${ listViewInstanceId }-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tdata-expanded={ canEdit ? isExpanded : undefined }\n\t\t\tref={ rowRef }\n\t\t>\n\t\t\t<TreeGridCell\n\t\t\t\tclassName=\"block-editor-list-view-block__contents-cell\"\n\t\t\t\tcolSpan={ colSpan }\n\t\t\t\tref={ cellRef }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t>\n\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t<div className=\"block-editor-list-view-block__contents-container\">\n\t\t\t\t\t\t<ListViewBlockContents\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ selectEditorBlock }\n\t\t\t\t\t\t\tonContextMenu={ onContextMenu }\n\t\t\t\t\t\t\tonMouseDown={ onMouseDown }\n\t\t\t\t\t\t\tonToggleExpanded={ toggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\ttabIndex={\n\t\t\t\t\t\t\t\tcurrentlyEditingBlockInCanvas ? 0 : tabIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ canEdit ? isExpanded : undefined }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tariaLabel={ blockAriaLabel }\n\t\t\t\t\t\t\tariaDescribedBy={ descriptionId }\n\t\t\t\t\t\t\tupdateFocusAndSelection={ updateFocusAndSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<AriaReferencedText id={ descriptionId }>\n\t\t\t\t\t\t\t{ blockPositionDescription }\n\t\t\t\t\t\t</AriaReferencedText>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</TreeGridCell>\n\t\t\t{ hasRenderedMovers && (\n\t\t\t\t<>\n\t\t\t\t\t<TreeGridCell\n\t\t\t\t\t\tclassName={ moverCellClassName }\n\t\t\t\t\t\twithoutGridItem\n\t\t\t\t\t>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ showBlockActions && BlockSettingsMenu && (\n\t\t\t\t<TreeGridCell\n\t\t\t\t\tclassName={ listViewBlockSettingsClassName }\n\t\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\t\tref={ settingsRef }\n\t\t\t\t>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsMenu\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ settingsAriaLabel }\n\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\tanchor: settingsPopoverAnchor, // Used to position the settings at the cursor on right-click.\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tclassName: 'block-editor-list-view-block__menu',\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\tonClick: clearSettingsAnchorRect,\n\t\t\t\t\t\t\t\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\texpand={ expand }\n\t\t\t\t\t\t\texpandedState={ expandedState }\n\t\t\t\t\t\t\tsetInsertedBlock={ setInsertedBlock }\n\t\t\t\t\t\t\t__experimentalSelectBlock={\n\t\t\t\t\t\t\t\tupdateFocusAndSelection\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</TreeGridCell>\n\t\t\t) }\n\t\t</ListViewLeaf>\n\t);\n}\n\nexport default memo( ListViewBlock );\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","hasBlockSupport","__experimentalTreeGridCell","TreeGridCell","__experimentalTreeGridItem","TreeGridItem","useInstanceId","moreVertical","useCallback","useMemo","useState","useRef","memo","useDispatch","useSelect","sprintf","__","ESCAPE","ListViewLeaf","useListViewScrollIntoView","BlockMoverUpButton","BlockMoverDownButton","ListViewBlockContents","useListViewContext","getBlockPositionDescription","focusListItem","store","blockEditorStore","useBlockDisplayInformation","useBlockLock","AriaReferencedText","ListViewBlock","block","clientId","displacement","isAfterDraggedBlocks","isDragged","isNesting","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","isSyncedBranch","cellRef","rowRef","settingsRef","isHovered","setIsHovered","settingsAnchorRect","setSettingsAnchorRect","isLocked","canEdit","canMove","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","blockInformation","blockTitle","name","title","blockName","blockEditingMode","select","getBlock","getBlockName","getBlockEditingMode","allowRightClickOverrides","getSettings","showBlockActions","instanceId","descriptionId","blockPositionDescription","blockAriaLabel","settingsAriaLabel","expand","collapse","BlockSettingsMenu","listViewInstanceId","expandedState","setInsertedBlock","treeGridElementRef","hasSiblings","hasRenderedMovers","moverCellClassName","listViewBlockSettingsClassName","onKeyDown","event","keyCode","defaultPrevented","stopPropagation","preventDefault","undefined","onMouseEnter","onMouseLeave","selectEditorBlock","updateFocusAndSelection","focusClientId","shouldSelectBlock","toggleExpanded","onContextMenu","current","click","window","DOMRect","clientX","clientY","onMouseDown","button","settingsPopoverAnchor","ownerDocument","getBoundingClientRect","clearSettingsAnchorRect","colSpan","classes","isSynced","dropdownClientIds","includes","rowItemRef","currentlyEditingBlockInCanvas","createElement","className","onFocus","onBlur","id","ref","tabIndex","onClick","onToggleExpanded","ariaLabel","ariaDescribedBy","Fragment","withoutGridItem","orientation","clientIds","icon","label","popoverProps","anchor","toggleProps","disableOpenOnArrowDown","__experimentalSelectBlock"],"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalTreeGridCell as TreeGridCell,\n\t__experimentalTreeGridItem as TreeGridItem,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tuseCallback,\n\tuseMemo,\n\tuseState,\n\tuseRef,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\nimport { ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport useListViewScrollIntoView from './use-list-view-scroll-into-view';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport { useListViewContext } from './context';\nimport { getBlockPositionDescription, focusListItem } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { useBlockLock } from '../block-lock';\nimport AriaReferencedText from './aria-referenced-text';\n\nfunction ListViewBlock( {\n\tblock: { clientId },\n\tdisplacement,\n\tisAfterDraggedBlocks,\n\tisDragged,\n\tisNesting,\n\tisSelected,\n\tisBranchSelected,\n\tselectBlock,\n\tposition,\n\tlevel,\n\trowCount,\n\tsiblingBlockCount,\n\tshowBlockMovers,\n\tpath,\n\tisExpanded,\n\tselectedClientIds,\n\tisSyncedBranch,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst rowRef = useRef( null );\n\tconst settingsRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ settingsAnchorRect, setSettingsAnchorRect ] = useState();\n\n\tconst { isLocked, canEdit, canMove } = useBlockLock( clientId );\n\n\tconst isFirstSelectedBlock =\n\t\tisSelected && selectedClientIds[ 0 ] === clientId;\n\tconst isLastSelectedBlock =\n\t\tisSelected &&\n\t\tselectedClientIds[ selectedClientIds.length - 1 ] === clientId;\n\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle =\n\t\tblockInformation?.name || blockInformation?.title || __( 'Untitled' );\n\n\tconst { block, blockName, blockEditingMode } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockName, getBlockEditingMode } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tblock: getBlock( clientId ),\n\t\t\t\tblockName: getBlockName( clientId ),\n\t\t\t\tblockEditingMode: getBlockEditingMode( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst allowRightClickOverrides = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().allowRightClickOverrides,\n\t\t[]\n\t);\n\n\tconst showBlockActions =\n\t\t// When a block hides its toolbar it also hides the block settings menu,\n\t\t// since that menu is part of the toolbar in the editor canvas.\n\t\t// List View respects this by also hiding the block settings menu.\n\t\thasBlockSupport( blockName, '__experimentalToolbar', true ) &&\n\t\t// Don't show the settings menu if block is disabled or content only.\n\t\tblockEditingMode === 'default';\n\tconst instanceId = useInstanceId( ListViewBlock );\n\tconst descriptionId = `list-view-block-select-button__${ instanceId }`;\n\tconst blockPositionDescription = getBlockPositionDescription(\n\t\tposition,\n\t\tsiblingBlockCount,\n\t\tlevel\n\t);\n\n\tconst blockAriaLabel = isLocked\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the locked block.\n\t\t\t\t__( '%s (locked)' ),\n\t\t\t\tblockTitle\n\t\t )\n\t\t: blockTitle;\n\n\tconst settingsAriaLabel = sprintf(\n\t\t// translators: %s: The title of the block.\n\t\t__( 'Options for %s' ),\n\t\tblockTitle\n\t);\n\n\tconst {\n\t\texpand,\n\t\tcollapse,\n\t\tBlockSettingsMenu,\n\t\tlistViewInstanceId,\n\t\texpandedState,\n\t\tsetInsertedBlock,\n\t\ttreeGridElementRef,\n\t} = useListViewContext();\n\n\tconst hasSiblings = siblingBlockCount > 0;\n\tconst hasRenderedMovers = showBlockMovers && hasSiblings;\n\tconst moverCellClassName = classnames(\n\t\t'block-editor-list-view-block__mover-cell',\n\t\t{ 'is-visible': isHovered || isSelected }\n\t);\n\n\tconst listViewBlockSettingsClassName = classnames(\n\t\t'block-editor-list-view-block__menu-cell',\n\t\t{ 'is-visible': isHovered || isFirstSelectedBlock }\n\t);\n\n\t// If multiple blocks are selected, deselect all blocks when the user\n\t// presses the escape key.\n\tconst onKeyDown = ( event ) => {\n\t\tif (\n\t\t\tevent.keyCode === ESCAPE &&\n\t\t\t! event.defaultPrevented &&\n\t\t\tselectedClientIds.length > 0\n\t\t) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tselectBlock( event, undefined );\n\t\t}\n\t};\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\ttoggleBlockHighlight( clientId, true );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\ttoggleBlockHighlight( clientId, false );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\n\tconst selectEditorBlock = useCallback(\n\t\t( event ) => {\n\t\t\tselectBlock( event, clientId );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t[ clientId, selectBlock ]\n\t);\n\n\tconst updateFocusAndSelection = useCallback(\n\t\t( focusClientId, shouldSelectBlock ) => {\n\t\t\tif ( shouldSelectBlock ) {\n\t\t\t\tselectBlock( undefined, focusClientId, null, null );\n\t\t\t}\n\n\t\t\tfocusListItem( focusClientId, treeGridElementRef );\n\t\t},\n\t\t[ selectBlock, treeGridElementRef ]\n\t);\n\n\tconst toggleExpanded = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent shift+click from opening link in a new window when toggling.\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif ( isExpanded === true ) {\n\t\t\t\tcollapse( clientId );\n\t\t\t} else if ( isExpanded === false ) {\n\t\t\t\texpand( clientId );\n\t\t\t}\n\t\t},\n\t\t[ clientId, expand, collapse, isExpanded ]\n\t);\n\n\t// Allow right-clicking an item in the List View to open up the block settings dropdown.\n\tconst onContextMenu = useCallback(\n\t\t( event ) => {\n\t\t\tif ( showBlockActions && allowRightClickOverrides ) {\n\t\t\t\tsettingsRef.current?.click();\n\t\t\t\t// Ensure the position of the settings dropdown is at the cursor.\n\t\t\t\tsetSettingsAnchorRect(\n\t\t\t\t\tnew window.DOMRect( event.clientX, event.clientY, 0, 0 )\n\t\t\t\t);\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides, settingsRef, showBlockActions ]\n\t);\n\n\tconst onMouseDown = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent right-click from focusing the block,\n\t\t\t// because focus will be handled when opening the block settings dropdown.\n\t\t\tif ( allowRightClickOverrides && event.button === 2 ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides ]\n\t);\n\n\tconst settingsPopoverAnchor = useMemo( () => {\n\t\tconst { ownerDocument } = rowRef?.current || {};\n\n\t\t// If no custom position is set, the settings dropdown will be anchored to the\n\t\t// DropdownMenu toggle button.\n\t\tif ( ! settingsAnchorRect || ! ownerDocument ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Position the settings dropdown at the cursor when right-clicking a block.\n\t\treturn {\n\t\t\townerDocument,\n\t\t\tgetBoundingClientRect() {\n\t\t\t\treturn settingsAnchorRect;\n\t\t\t},\n\t\t};\n\t}, [ settingsAnchorRect ] );\n\n\tconst clearSettingsAnchorRect = useCallback( () => {\n\t\t// Clear the custom position for the settings dropdown so that it is restored back\n\t\t// to being anchored to the DropdownMenu toggle button.\n\t\tsetSettingsAnchorRect( undefined );\n\t}, [ setSettingsAnchorRect ] );\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( ! showBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = classnames( {\n\t\t'is-selected': isSelected,\n\t\t'is-first-selected': isFirstSelectedBlock,\n\t\t'is-last-selected': isLastSelectedBlock,\n\t\t'is-branch-selected': isBranchSelected,\n\t\t'is-synced-branch': isSyncedBranch,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': ! showBlockActions,\n\t\t'is-synced': blockInformation?.isSynced,\n\t\t'is-draggable': canMove,\n\t\t'is-displacement-normal': displacement === 'normal',\n\t\t'is-displacement-up': displacement === 'up',\n\t\t'is-displacement-down': displacement === 'down',\n\t\t'is-after-dragged-blocks': isAfterDraggedBlocks,\n\t\t'is-nesting': isNesting,\n\t} );\n\n\t// Only include all selected blocks if the currently clicked on block\n\t// is one of the selected blocks. This ensures that if a user attempts\n\t// to alter a block that isn't part of the selection, they're still able\n\t// to do so.\n\tconst dropdownClientIds = selectedClientIds.includes( clientId )\n\t\t? selectedClientIds\n\t\t: [ clientId ];\n\n\t// Pass in a ref to the row, so that it can be scrolled\n\t// into view when selected. For long lists, the placeholder for the\n\t// selected block is also observed, within ListViewLeafPlaceholder.\n\tuseListViewScrollIntoView( {\n\t\tisSelected,\n\t\trowItemRef: rowRef,\n\t\tselectedClientIds,\n\t} );\n\n\t// Detect if there is a block in the canvas currently being edited and multi-selection is not happening.\n\tconst currentlyEditingBlockInCanvas =\n\t\tisSelected && selectedClientIds.length === 1;\n\n\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\n\t\t\tisDragged={ isDragged }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tlevel={ level }\n\t\t\tposition={ position }\n\t\t\trowCount={ rowCount }\n\t\t\tpath={ path }\n\t\t\tid={ `list-view-${ listViewInstanceId }-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tdata-expanded={ canEdit ? isExpanded : undefined }\n\t\t\tref={ rowRef }\n\t\t>\n\t\t\t<TreeGridCell\n\t\t\t\tclassName=\"block-editor-list-view-block__contents-cell\"\n\t\t\t\tcolSpan={ colSpan }\n\t\t\t\tref={ cellRef }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t>\n\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t<div className=\"block-editor-list-view-block__contents-container\">\n\t\t\t\t\t\t<ListViewBlockContents\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ selectEditorBlock }\n\t\t\t\t\t\t\tonContextMenu={ onContextMenu }\n\t\t\t\t\t\t\tonMouseDown={ onMouseDown }\n\t\t\t\t\t\t\tonToggleExpanded={ toggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\ttabIndex={\n\t\t\t\t\t\t\t\tcurrentlyEditingBlockInCanvas ? 0 : tabIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ canEdit ? isExpanded : undefined }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tariaLabel={ blockAriaLabel }\n\t\t\t\t\t\t\tariaDescribedBy={ descriptionId }\n\t\t\t\t\t\t\tupdateFocusAndSelection={ updateFocusAndSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<AriaReferencedText id={ descriptionId }>\n\t\t\t\t\t\t\t{ blockPositionDescription }\n\t\t\t\t\t\t</AriaReferencedText>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</TreeGridCell>\n\t\t\t{ hasRenderedMovers && (\n\t\t\t\t<>\n\t\t\t\t\t<TreeGridCell\n\t\t\t\t\t\tclassName={ moverCellClassName }\n\t\t\t\t\t\twithoutGridItem\n\t\t\t\t\t>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ showBlockActions && BlockSettingsMenu && (\n\t\t\t\t<TreeGridCell\n\t\t\t\t\tclassName={ listViewBlockSettingsClassName }\n\t\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\t\tref={ settingsRef }\n\t\t\t\t>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsMenu\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ settingsAriaLabel }\n\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\tanchor: settingsPopoverAnchor, // Used to position the settings at the cursor on right-click.\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tclassName: 'block-editor-list-view-block__menu',\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\tonClick: clearSettingsAnchorRect,\n\t\t\t\t\t\t\t\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\texpand={ expand }\n\t\t\t\t\t\t\texpandedState={ expandedState }\n\t\t\t\t\t\t\tsetInsertedBlock={ setInsertedBlock }\n\t\t\t\t\t\t\t__experimentalSelectBlock={\n\t\t\t\t\t\t\t\tupdateFocusAndSelection\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</TreeGridCell>\n\t\t\t) }\n\t\t</ListViewLeaf>\n\t);\n}\n\nexport default memo( ListViewBlock );\n"],"mappings":"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"}
@@ -12,7 +12,7 @@ import { AsyncModeProvider, useSelect } from '@wordpress/data';
12
12
  import { Appender } from './appender';
13
13
  import ListViewBlock from './block';
14
14
  import { useListViewContext } from './context';
15
- import { isClientIdSelected } from './utils';
15
+ import { getDragDisplacementValues, isClientIdSelected } from './utils';
16
16
  import { store as blockEditorStore } from '../../store';
17
17
  import useBlockDisplayInformation from '../use-block-display-information';
18
18
 
@@ -62,7 +62,6 @@ function ListViewBranch(props) {
62
62
  selectedClientIds,
63
63
  level = 1,
64
64
  path = '',
65
- isBranchDragged = false,
66
65
  isBranchSelected = false,
67
66
  listPosition = 0,
68
67
  fixedListWindow,
@@ -81,6 +80,10 @@ function ListViewBranch(props) {
81
80
  return select(blockEditorStore).canEditBlock(parentId);
82
81
  }, [parentId]);
83
82
  const {
83
+ blockDropPosition,
84
+ blockDropTargetIndex,
85
+ firstDraggedBlockIndex,
86
+ blockIndexes,
84
87
  expandedState,
85
88
  draggedClientIds
86
89
  } = useListViewContext();
@@ -104,6 +107,23 @@ function ListViewBranch(props) {
104
107
  if (index > 0) {
105
108
  nextPosition += countBlocks(filteredBlocks[index - 1], expandedState, draggedClientIds, isExpanded);
106
109
  }
110
+ const isDragged = !!draggedClientIds?.includes(clientId);
111
+
112
+ // Determine the displacement of the block while dragging. This
113
+ // works out whether the current block should be displaced up or
114
+ // down, relative to the dragged blocks and the drop target.
115
+ const {
116
+ displacement,
117
+ isAfterDraggedBlocks,
118
+ isNesting
119
+ } = getDragDisplacementValues({
120
+ blockIndexes,
121
+ blockDropTargetIndex,
122
+ blockDropPosition,
123
+ clientId,
124
+ firstDraggedBlockIndex,
125
+ isDragged
126
+ });
107
127
  const {
108
128
  itemInView
109
129
  } = fixedListWindow;
@@ -112,7 +132,6 @@ function ListViewBranch(props) {
112
132
  const updatedPath = path.length > 0 ? `${path}_${position}` : `${position}`;
113
133
  const hasNestedBlocks = !!innerBlocks?.length;
114
134
  const shouldExpand = hasNestedBlocks && shouldShowInnerBlocks ? (_expandedState$client = expandedState[clientId]) !== null && _expandedState$client !== void 0 ? _expandedState$client : isExpanded : undefined;
115
- const isDragged = !!draggedClientIds?.includes(clientId);
116
135
 
117
136
  // Make updates to the selected or dragged blocks synchronous,
118
137
  // but asynchronous for any other block.
@@ -125,7 +144,7 @@ function ListViewBranch(props) {
125
144
  // This prevents the entire tree from being rendered when a branch is
126
145
  // selected, or a user selects all blocks, while still enabling scroll
127
146
  // into view behavior when selecting a block or opening the list view.
128
- const showBlock = isDragged || blockInView || isBranchDragged || isSelected && clientId === selectedClientIds[0];
147
+ const showBlock = isDragged || blockInView || isSelected && clientId === selectedClientIds[0];
129
148
  return createElement(AsyncModeProvider, {
130
149
  key: clientId,
131
150
  value: !isSelected
@@ -134,20 +153,23 @@ function ListViewBranch(props) {
134
153
  selectBlock: selectBlock,
135
154
  isSelected: isSelected,
136
155
  isBranchSelected: isSelectedBranch,
137
- isDragged: isDragged || isBranchDragged,
156
+ isDragged: isDragged,
138
157
  level: level,
139
158
  position: position,
140
159
  rowCount: rowCount,
141
160
  siblingBlockCount: blockCount,
142
161
  showBlockMovers: showBlockMovers,
143
162
  path: updatedPath,
144
- isExpanded: shouldExpand,
163
+ isExpanded: isDragged ? false : shouldExpand,
145
164
  listPosition: nextPosition,
146
165
  selectedClientIds: selectedClientIds,
147
- isSyncedBranch: syncedBranch
166
+ isSyncedBranch: syncedBranch,
167
+ displacement: displacement,
168
+ isAfterDraggedBlocks: isAfterDraggedBlocks,
169
+ isNesting: isNesting
148
170
  }), !showBlock && createElement("tr", null, createElement("td", {
149
171
  className: "block-editor-list-view-placeholder"
150
- })), hasNestedBlocks && shouldExpand && createElement(ListViewBranch, {
172
+ })), hasNestedBlocks && shouldExpand && !isDragged && createElement(ListViewBranch, {
151
173
  parentId: clientId,
152
174
  blocks: innerBlocks,
153
175
  selectBlock: selectBlock,
@@ -157,7 +179,6 @@ function ListViewBranch(props) {
157
179
  listPosition: nextPosition + 1,
158
180
  fixedListWindow: fixedListWindow,
159
181
  isBranchSelected: isSelectedBranch,
160
- isBranchDragged: isDragged || isBranchDragged,
161
182
  selectedClientIds: selectedClientIds,
162
183
  isExpanded: isExpanded,
163
184
  isSyncedBranch: syncedBranch