@wordpress/block-editor 8.4.0 → 8.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +56 -19
  3. package/build/components/alignment-control/index.js +13 -6
  4. package/build/components/alignment-control/index.js.map +1 -1
  5. package/build/components/block-alignment-control/index.js +13 -6
  6. package/build/components/block-alignment-control/index.js.map +1 -1
  7. package/build/components/block-draggable/index.js +2 -3
  8. package/build/components/block-draggable/index.js.map +1 -1
  9. package/build/components/block-icon/index.js +4 -0
  10. package/build/components/block-icon/index.js.map +1 -1
  11. package/build/components/block-inspector/index.js +6 -1
  12. package/build/components/block-inspector/index.js.map +1 -1
  13. package/build/components/block-list/use-block-props/index.js +1 -6
  14. package/build/components/block-list/use-block-props/index.js.map +1 -1
  15. package/build/components/block-list/use-block-props/use-focus-first-element.js +14 -17
  16. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  17. package/build/components/block-list/use-block-props/use-focus-handler.js +7 -1
  18. package/build/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
  19. package/build/components/block-list-appender/index.js +6 -1
  20. package/build/components/block-list-appender/index.js.map +1 -1
  21. package/build/components/block-lock/menu-item.js +9 -0
  22. package/build/components/block-lock/menu-item.js.map +1 -1
  23. package/build/components/block-lock/modal.js +4 -13
  24. package/build/components/block-lock/modal.js.map +1 -1
  25. package/build/components/block-lock/toolbar.js +11 -3
  26. package/build/components/block-lock/toolbar.js.map +1 -1
  27. package/build/components/block-mover/index.js +4 -0
  28. package/build/components/block-mover/index.js.map +1 -1
  29. package/build/components/block-settings-menu/block-settings-dropdown.js +50 -5
  30. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  31. package/build/components/block-switcher/index.js +1 -1
  32. package/build/components/block-switcher/index.js.map +1 -1
  33. package/build/components/block-title/index.js +2 -2
  34. package/build/components/block-title/index.js.map +1 -1
  35. package/build/components/block-title/use-block-display-title.js +1 -1
  36. package/build/components/block-title/use-block-display-title.js.map +1 -1
  37. package/build/components/block-toolbar/block-name-context.js +17 -0
  38. package/build/components/block-toolbar/block-name-context.js.map +1 -0
  39. package/build/components/block-toolbar/block-toolbar-last-item.js +20 -0
  40. package/build/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
  41. package/build/components/block-toolbar/index.js +20 -5
  42. package/build/components/block-toolbar/index.js.map +1 -1
  43. package/build/components/block-tools/index.js +0 -16
  44. package/build/components/block-tools/index.js.map +1 -1
  45. package/build/components/block-variation-transforms/index.js +92 -47
  46. package/build/components/block-variation-transforms/index.js.map +1 -1
  47. package/build/components/block-vertical-alignment-control/index.js +13 -6
  48. package/build/components/block-vertical-alignment-control/index.js.map +1 -1
  49. package/build/components/contrast-checker/index.js +4 -0
  50. package/build/components/contrast-checker/index.js.map +1 -1
  51. package/build/components/convert-to-group-buttons/index.js +8 -0
  52. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  53. package/build/components/convert-to-group-buttons/toolbar.js +105 -0
  54. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -0
  55. package/build/components/copy-handler/index.js +4 -0
  56. package/build/components/copy-handler/index.js.map +1 -1
  57. package/build/components/font-sizes/font-size-picker.js +4 -0
  58. package/build/components/font-sizes/font-size-picker.js.map +1 -1
  59. package/build/components/iframe/index.js +6 -9
  60. package/build/components/iframe/index.js.map +1 -1
  61. package/build/components/index.js +18 -0
  62. package/build/components/index.js.map +1 -1
  63. package/build/components/justify-content-control/index.js +13 -6
  64. package/build/components/justify-content-control/index.js.map +1 -1
  65. package/build/components/keyboard-shortcuts/index.js +1 -1
  66. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  67. package/build/components/line-height-control/index.js +10 -3
  68. package/build/components/line-height-control/index.js.map +1 -1
  69. package/build/components/list-view/block-select-button.js +25 -6
  70. package/build/components/list-view/block-select-button.js.map +1 -1
  71. package/build/components/list-view/block.js +5 -1
  72. package/build/components/list-view/block.js.map +1 -1
  73. package/build/components/list-view/branch.js +1 -1
  74. package/build/components/list-view/branch.js.map +1 -1
  75. package/build/components/media-replace-flow/index.js +4 -0
  76. package/build/components/media-replace-flow/index.js.map +1 -1
  77. package/build/components/multi-selection-inspector/index.js +1 -1
  78. package/build/components/multi-selection-inspector/index.js.map +1 -1
  79. package/build/components/rich-text/index.js +26 -4
  80. package/build/components/rich-text/index.js.map +1 -1
  81. package/build/components/rich-text/split-value.js +12 -2
  82. package/build/components/rich-text/split-value.js.map +1 -1
  83. package/build/components/rich-text/use-firefox-compat.js +49 -0
  84. package/build/components/rich-text/use-firefox-compat.js.map +1 -0
  85. package/build/components/rich-text/use-input-rules.js +34 -2
  86. package/build/components/rich-text/use-input-rules.js.map +1 -1
  87. package/build/components/skip-to-selected-block/index.js +4 -0
  88. package/build/components/skip-to-selected-block/index.js.map +1 -1
  89. package/build/components/writing-flow/index.js +9 -1
  90. package/build/components/writing-flow/index.js.map +1 -1
  91. package/build/components/writing-flow/use-arrow-nav.js +3 -44
  92. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  93. package/build/components/writing-flow/use-click-selection.js +68 -0
  94. package/build/components/writing-flow/use-click-selection.js.map +1 -0
  95. package/build/components/writing-flow/use-drag-selection.js +134 -0
  96. package/build/components/writing-flow/use-drag-selection.js.map +1 -0
  97. package/build/components/writing-flow/use-input.js +116 -0
  98. package/build/components/writing-flow/use-input.js.map +1 -0
  99. package/build/components/writing-flow/use-multi-selection.js +18 -38
  100. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  101. package/build/components/writing-flow/use-selection-observer.js +161 -0
  102. package/build/components/writing-flow/use-selection-observer.js.map +1 -0
  103. package/build/components/writing-flow/use-tab-nav.js +1 -8
  104. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  105. package/build/hooks/border-color.js +3 -3
  106. package/build/hooks/border-color.js.map +1 -1
  107. package/build/hooks/border.js +0 -14
  108. package/build/hooks/border.js.map +1 -1
  109. package/build/hooks/color.js +20 -17
  110. package/build/hooks/color.js.map +1 -1
  111. package/build/hooks/font-family.js +5 -1
  112. package/build/hooks/font-family.js.map +1 -1
  113. package/build/hooks/font-size.js +4 -2
  114. package/build/hooks/font-size.js.map +1 -1
  115. package/build/hooks/gap.js +23 -16
  116. package/build/hooks/gap.js.map +1 -1
  117. package/build/hooks/layout.js +7 -2
  118. package/build/hooks/layout.js.map +1 -1
  119. package/build/hooks/style.js +34 -3
  120. package/build/hooks/style.js.map +1 -1
  121. package/build/hooks/utils.js +29 -0
  122. package/build/hooks/utils.js.map +1 -1
  123. package/build/layouts/flex.js +76 -12
  124. package/build/layouts/flex.js.map +1 -1
  125. package/build/layouts/flow.js +9 -4
  126. package/build/layouts/flow.js.map +1 -1
  127. package/build/store/actions.js +297 -51
  128. package/build/store/actions.js.map +1 -1
  129. package/build/store/defaults.js +5 -2
  130. package/build/store/defaults.js.map +1 -1
  131. package/build/store/reducer.js +25 -13
  132. package/build/store/reducer.js.map +1 -1
  133. package/build/store/selectors.js +142 -18
  134. package/build/store/selectors.js.map +1 -1
  135. package/build/utils/dom.js +2 -1
  136. package/build/utils/dom.js.map +1 -1
  137. package/build-module/components/alignment-control/index.js +12 -4
  138. package/build-module/components/alignment-control/index.js.map +1 -1
  139. package/build-module/components/block-alignment-control/index.js +12 -4
  140. package/build-module/components/block-alignment-control/index.js.map +1 -1
  141. package/build-module/components/block-draggable/index.js +2 -3
  142. package/build-module/components/block-draggable/index.js.map +1 -1
  143. package/build-module/components/block-icon/index.js +4 -0
  144. package/build-module/components/block-icon/index.js.map +1 -1
  145. package/build-module/components/block-inspector/index.js +6 -1
  146. package/build-module/components/block-inspector/index.js.map +1 -1
  147. package/build-module/components/block-list/use-block-props/index.js +1 -4
  148. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  149. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +15 -17
  150. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  151. package/build-module/components/block-list/use-block-props/use-focus-handler.js +7 -1
  152. package/build-module/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
  153. package/build-module/components/block-list-appender/index.js +6 -1
  154. package/build-module/components/block-list-appender/index.js.map +1 -1
  155. package/build-module/components/block-lock/menu-item.js +9 -0
  156. package/build-module/components/block-lock/menu-item.js.map +1 -1
  157. package/build-module/components/block-lock/modal.js +5 -14
  158. package/build-module/components/block-lock/modal.js.map +1 -1
  159. package/build-module/components/block-lock/toolbar.js +11 -3
  160. package/build-module/components/block-lock/toolbar.js.map +1 -1
  161. package/build-module/components/block-mover/index.js +4 -0
  162. package/build-module/components/block-mover/index.js.map +1 -1
  163. package/build-module/components/block-settings-menu/block-settings-dropdown.js +50 -7
  164. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  165. package/build-module/components/block-switcher/index.js +2 -2
  166. package/build-module/components/block-switcher/index.js.map +1 -1
  167. package/build-module/components/block-title/index.js +2 -2
  168. package/build-module/components/block-title/index.js.map +1 -1
  169. package/build-module/components/block-title/use-block-display-title.js +1 -1
  170. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  171. package/build-module/components/block-toolbar/block-name-context.js +9 -0
  172. package/build-module/components/block-toolbar/block-name-context.js.map +1 -0
  173. package/build-module/components/block-toolbar/block-toolbar-last-item.js +11 -0
  174. package/build-module/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
  175. package/build-module/components/block-toolbar/index.js +16 -4
  176. package/build-module/components/block-toolbar/index.js.map +1 -1
  177. package/build-module/components/block-tools/index.js +0 -16
  178. package/build-module/components/block-tools/index.js.map +1 -1
  179. package/build-module/components/block-variation-transforms/index.js +95 -49
  180. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  181. package/build-module/components/block-vertical-alignment-control/index.js +12 -4
  182. package/build-module/components/block-vertical-alignment-control/index.js.map +1 -1
  183. package/build-module/components/contrast-checker/index.js +4 -0
  184. package/build-module/components/contrast-checker/index.js.map +1 -1
  185. package/build-module/components/convert-to-group-buttons/index.js +2 -1
  186. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  187. package/build-module/components/convert-to-group-buttons/toolbar.js +90 -0
  188. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -0
  189. package/build-module/components/copy-handler/index.js +4 -0
  190. package/build-module/components/copy-handler/index.js.map +1 -1
  191. package/build-module/components/font-sizes/font-size-picker.js +4 -0
  192. package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
  193. package/build-module/components/iframe/index.js +6 -9
  194. package/build-module/components/iframe/index.js.map +1 -1
  195. package/build-module/components/index.js +2 -0
  196. package/build-module/components/index.js.map +1 -1
  197. package/build-module/components/justify-content-control/index.js +12 -4
  198. package/build-module/components/justify-content-control/index.js.map +1 -1
  199. package/build-module/components/keyboard-shortcuts/index.js +1 -1
  200. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  201. package/build-module/components/line-height-control/index.js +9 -2
  202. package/build-module/components/line-height-control/index.js.map +1 -1
  203. package/build-module/components/list-view/block-select-button.js +22 -6
  204. package/build-module/components/list-view/block-select-button.js.map +1 -1
  205. package/build-module/components/list-view/block.js +5 -1
  206. package/build-module/components/list-view/block.js.map +1 -1
  207. package/build-module/components/list-view/branch.js +1 -1
  208. package/build-module/components/list-view/branch.js.map +1 -1
  209. package/build-module/components/media-replace-flow/index.js +4 -0
  210. package/build-module/components/media-replace-flow/index.js.map +1 -1
  211. package/build-module/components/multi-selection-inspector/index.js +2 -2
  212. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  213. package/build-module/components/rich-text/index.js +25 -4
  214. package/build-module/components/rich-text/index.js.map +1 -1
  215. package/build-module/components/rich-text/split-value.js +12 -2
  216. package/build-module/components/rich-text/split-value.js.map +1 -1
  217. package/build-module/components/rich-text/use-firefox-compat.js +39 -0
  218. package/build-module/components/rich-text/use-firefox-compat.js.map +1 -0
  219. package/build-module/components/rich-text/use-input-rules.js +35 -4
  220. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  221. package/build-module/components/skip-to-selected-block/index.js +4 -0
  222. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  223. package/build-module/components/writing-flow/index.js +5 -1
  224. package/build-module/components/writing-flow/index.js.map +1 -1
  225. package/build-module/components/writing-flow/use-arrow-nav.js +4 -45
  226. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  227. package/build-module/components/writing-flow/use-click-selection.js +57 -0
  228. package/build-module/components/writing-flow/use-click-selection.js.map +1 -0
  229. package/build-module/components/writing-flow/use-drag-selection.js +124 -0
  230. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -0
  231. package/build-module/components/writing-flow/use-input.js +104 -0
  232. package/build-module/components/writing-flow/use-input.js.map +1 -0
  233. package/build-module/components/writing-flow/use-multi-selection.js +18 -37
  234. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  235. package/build-module/components/writing-flow/use-selection-observer.js +150 -0
  236. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -0
  237. package/build-module/components/writing-flow/use-tab-nav.js +1 -9
  238. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  239. package/build-module/hooks/border-color.js +5 -5
  240. package/build-module/hooks/border-color.js.map +1 -1
  241. package/build-module/hooks/border.js +0 -12
  242. package/build-module/hooks/border.js.map +1 -1
  243. package/build-module/hooks/color.js +19 -18
  244. package/build-module/hooks/color.js.map +1 -1
  245. package/build-module/hooks/font-family.js +3 -1
  246. package/build-module/hooks/font-family.js.map +1 -1
  247. package/build-module/hooks/font-size.js +4 -3
  248. package/build-module/hooks/font-size.js.map +1 -1
  249. package/build-module/hooks/gap.js +22 -15
  250. package/build-module/hooks/gap.js.map +1 -1
  251. package/build-module/hooks/layout.js +7 -2
  252. package/build-module/hooks/layout.js.map +1 -1
  253. package/build-module/hooks/style.js +33 -3
  254. package/build-module/hooks/style.js.map +1 -1
  255. package/build-module/hooks/utils.js +26 -0
  256. package/build-module/hooks/utils.js.map +1 -1
  257. package/build-module/layouts/flex.js +76 -13
  258. package/build-module/layouts/flex.js.map +1 -1
  259. package/build-module/layouts/flow.js +9 -5
  260. package/build-module/layouts/flow.js.map +1 -1
  261. package/build-module/store/actions.js +286 -49
  262. package/build-module/store/actions.js.map +1 -1
  263. package/build-module/store/defaults.js +5 -2
  264. package/build-module/store/defaults.js.map +1 -1
  265. package/build-module/store/reducer.js +25 -13
  266. package/build-module/store/reducer.js.map +1 -1
  267. package/build-module/store/selectors.js +138 -19
  268. package/build-module/store/selectors.js.map +1 -1
  269. package/build-module/utils/dom.js +2 -1
  270. package/build-module/utils/dom.js.map +1 -1
  271. package/build-style/style-rtl.css +107 -74
  272. package/build-style/style.css +107 -74
  273. package/build-types/utils/dom.d.ts.map +1 -1
  274. package/package.json +28 -28
  275. package/src/components/alignment-control/index.js +9 -4
  276. package/src/components/block-alignment-control/index.js +9 -4
  277. package/src/components/block-draggable/index.js +2 -5
  278. package/src/components/block-icon/index.js +3 -0
  279. package/src/components/block-inspector/index.js +4 -0
  280. package/src/components/block-list/style.scss +4 -5
  281. package/src/components/block-list/use-block-props/index.js +0 -5
  282. package/src/components/block-list/use-block-props/use-focus-first-element.js +19 -26
  283. package/src/components/block-list/use-block-props/use-focus-handler.js +8 -0
  284. package/src/components/block-list-appender/index.js +5 -0
  285. package/src/components/block-lock/menu-item.js +8 -1
  286. package/src/components/block-lock/modal.js +18 -13
  287. package/src/components/block-lock/style.scss +6 -3
  288. package/src/components/block-lock/toolbar.js +12 -2
  289. package/src/components/block-mover/index.js +3 -0
  290. package/src/components/block-mover/style.scss +4 -0
  291. package/src/components/block-settings-menu/block-settings-dropdown.js +62 -4
  292. package/src/components/block-switcher/index.js +2 -2
  293. package/src/components/block-switcher/style.scss +8 -1
  294. package/src/components/block-switcher/test/index.js +2 -2
  295. package/src/components/block-title/index.js +2 -2
  296. package/src/components/block-title/use-block-display-title.js +1 -1
  297. package/src/components/block-toolbar/block-name-context.js +8 -0
  298. package/src/components/block-toolbar/block-toolbar-last-item.js +12 -0
  299. package/src/components/block-toolbar/index.js +18 -2
  300. package/src/components/block-toolbar/style.scss +6 -0
  301. package/src/components/block-tools/index.js +0 -19
  302. package/src/components/block-tools/style.scss +3 -5
  303. package/src/components/block-variation-transforms/index.js +105 -36
  304. package/src/components/block-variation-transforms/style.scss +1 -1
  305. package/src/components/block-vertical-alignment-control/index.js +9 -4
  306. package/src/components/button-block-appender/style.scss +5 -1
  307. package/src/components/contrast-checker/index.js +3 -0
  308. package/src/components/convert-to-group-buttons/index.js +6 -1
  309. package/src/components/convert-to-group-buttons/toolbar.js +87 -0
  310. package/src/components/copy-handler/index.js +3 -0
  311. package/src/components/font-sizes/font-size-picker.js +3 -0
  312. package/src/components/iframe/index.js +5 -7
  313. package/src/components/index.js +2 -0
  314. package/src/components/justify-content-control/index.js +9 -4
  315. package/src/components/keyboard-shortcuts/index.js +1 -1
  316. package/src/components/line-height-control/index.js +8 -3
  317. package/src/components/list-view/block-select-button.js +21 -3
  318. package/src/components/list-view/block.js +8 -1
  319. package/src/components/list-view/branch.js +1 -1
  320. package/src/components/list-view/style.scss +56 -14
  321. package/src/components/media-placeholder/README.md +8 -0
  322. package/src/components/media-replace-flow/index.js +3 -0
  323. package/src/components/multi-selection-inspector/index.js +2 -2
  324. package/src/components/rich-text/index.js +24 -1
  325. package/src/components/rich-text/split-value.js +5 -1
  326. package/src/components/rich-text/use-firefox-compat.js +39 -0
  327. package/src/components/rich-text/use-input-rules.js +40 -3
  328. package/src/components/skip-to-selected-block/index.js +3 -0
  329. package/src/components/url-input/style.scss +3 -2
  330. package/src/components/writing-flow/index.js +8 -0
  331. package/src/components/writing-flow/readme.md +28 -0
  332. package/src/components/writing-flow/use-arrow-nav.js +4 -53
  333. package/src/components/writing-flow/use-click-selection.js +65 -0
  334. package/src/components/writing-flow/use-drag-selection.js +126 -0
  335. package/src/components/writing-flow/use-input.js +112 -0
  336. package/src/components/writing-flow/use-multi-selection.js +13 -36
  337. package/src/components/writing-flow/use-selection-observer.js +153 -0
  338. package/src/components/writing-flow/use-tab-nav.js +1 -11
  339. package/src/hooks/border-color.js +5 -5
  340. package/src/hooks/border.js +0 -13
  341. package/src/hooks/color.js +51 -24
  342. package/src/hooks/font-family.js +5 -2
  343. package/src/hooks/font-size.js +10 -7
  344. package/src/hooks/gap.js +25 -17
  345. package/src/hooks/layout.js +11 -1
  346. package/src/hooks/style.js +40 -4
  347. package/src/hooks/test/gap.js +25 -1
  348. package/src/hooks/test/style.js +94 -0
  349. package/src/hooks/test/utils.js +1 -1
  350. package/src/hooks/utils.js +26 -0
  351. package/src/layouts/flex.js +89 -5
  352. package/src/layouts/flow.js +15 -4
  353. package/src/store/actions.js +349 -32
  354. package/src/store/defaults.js +7 -2
  355. package/src/store/reducer.js +25 -10
  356. package/src/store/selectors.js +181 -24
  357. package/src/store/test/selectors.js +242 -5
  358. package/src/utils/dom.js +2 -1
  359. package/tsconfig.tsbuildinfo +1 -1
  360. package/build/components/block-list/use-block-props/use-multi-selection.js +0 -205
  361. package/build/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
  362. package/build/components/block-list/use-block-props/use-scroll-into-view.js +0 -77
  363. package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
  364. package/build-module/components/block-list/use-block-props/use-multi-selection.js +0 -192
  365. package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
  366. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +0 -63
  367. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
  368. package/src/components/block-list/use-block-props/use-multi-selection.js +0 -227
  369. package/src/components/block-list/use-block-props/use-scroll-into-view.js +0 -73
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/line-height-control/index.js"],"names":["LineHeightControl","value","lineHeight","onChange","__nextHasNoMarginBottom","__unstableInputWidth","isDefined","adjustNextValue","nextValue","wasTypedOrPasted","STEP","BASE_DEFAULT_VALUE","stateReducer","state","action","includes","payload","event","nativeEvent","inputType","RESET_VALUE","since","version","hint","deprecatedStyles","undefined","marginBottom"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AAVA;AACA;AACA;;AAKA;AACA;AACA;AAQe,SAASA,iBAAT,OAMX;AAAA,MANuC;AAC1CC,IAAAA,KAAK,EAAEC,UADmC;AAE1CC,IAAAA,QAF0C;;AAG1C;AACAC,IAAAA,uBAAuB,GAAG,KAJgB;AAK1CC,IAAAA,oBAAoB,GAAG;AALmB,GAMvC;AACH,QAAMC,SAAS,GAAG,gCAAqBJ,UAArB,CAAlB;;AAEA,QAAMK,eAAe,GAAG,CAAEC,SAAF,EAAaC,gBAAb,KAAmC;AAC1D;AACA,QAAKH,SAAL,EAAiB,OAAOE,SAAP;AAEjB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACE,YAAU,GAAGA,SAAW,EAAxB;AACC,WAAM,GAAGE,WAAM,EAAf;AACC;AACA,eAAOC,4BAAqBD,WAA5B;;AACD,WAAK,GAAL;AAAU;AACT;AACA;AACA,cAAKD,gBAAL,EAAwB,OAAOD,SAAP,CAHf,CAIT;;AACA,iBAAOG,4BAAqBD,WAA5B;AACA;;AACD,WAAK,EAAL;AACC,eAAOC,yBAAP;;AACD;AACC,eAAOH,SAAP;AAdF;AAgBA,GA7BD;;AA+BA,QAAMI,YAAY,GAAG,CAAEC,KAAF,EAASC,MAAT,KAAqB;AAAA;;AACzC;AACA;AACA;AACA;AACA,UAAML,gBAAgB,GAAG,CAAE,YAAF,EAAgB,iBAAhB,EAAoCM,QAApC,0BACxBD,MAAM,CAACE,OAAP,CAAeC,KAAf,CAAqBC,WADG,0DACxB,sBAAkCC,SADV,CAAzB;AAGA,UAAMlB,KAAK,GAAGM,eAAe,CAAEM,KAAK,CAACZ,KAAR,EAAeQ,gBAAf,CAA7B;AACA,WAAO,EAAE,GAAGI,KAAL;AAAYZ,MAAAA;AAAZ,KAAP;AACA,GAVD;;AAYA,QAAMA,KAAK,GAAGK,SAAS,GAAGJ,UAAH,GAAgBkB,kBAAvC;;AAEA,MAAK,CAAEhB,uBAAP,EAAiC;AAChC,6BACC,2DADD,EAEC;AACCiB,MAAAA,KAAK,EAAE,KADR;AAECC,MAAAA,OAAO,EAAE,KAFV;AAGCC,MAAAA,IAAI,EACH;AAJF,KAFD;AASA;;AACD,QAAMC,gBAAgB,GAAGpB,uBAAuB,GAC7CqB,SAD6C,GAE7C;AAAEC,IAAAA,YAAY,EAAE;AAAhB,GAFH;AAIA,SACC;AACC,IAAA,SAAS,EAAC,kCADX;AAEC,IAAA,KAAK,EAAGF;AAFT,KAIC,4BAAC,uCAAD;AACC,IAAA,oBAAoB,EAAGnB,oBADxB;AAEC,IAAA,sBAAsB,EAAGO,YAF1B;AAGC,IAAA,QAAQ,EAAGT,QAHZ;AAIC,IAAA,KAAK,EAAG,cAAI,aAAJ,CAJT;AAKC,IAAA,WAAW,EAAGQ,yBALf;AAMC,IAAA,IAAI,EAAGD,WANR;AAOC,IAAA,KAAK,EAAGT,KAPT;AAQC,IAAA,GAAG,EAAG;AARP,IAJD,CADD;AAiBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalNumberControl as NumberControl } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBASE_DEFAULT_VALUE,\n\tRESET_VALUE,\n\tSTEP,\n\tisLineHeightDefined,\n} from './utils';\n\nexport default function LineHeightControl( {\n\tvalue: lineHeight,\n\tonChange,\n\t/** Start opting into the new margin-free styles that will become the default in a future version. */\n\t__nextHasNoMarginBottom = false,\n\t__unstableInputWidth = '60px',\n} ) {\n\tconst isDefined = isLineHeightDefined( lineHeight );\n\n\tconst adjustNextValue = ( nextValue, wasTypedOrPasted ) => {\n\t\t// Set the next value without modification if lineHeight has been defined.\n\t\tif ( isDefined ) return nextValue;\n\n\t\t/**\n\t\t * The following logic handles the initial step up/down action\n\t\t * (from an undefined value state) so that the next values are better suited for\n\t\t * line-height rendering. For example, the first step up should immediately\n\t\t * go to 1.6, rather than the normally expected 0.1.\n\t\t *\n\t\t * Step up/down actions can be triggered by keydowns of the up/down arrow keys,\n\t\t * or by clicking the spin buttons.\n\t\t */\n\t\tswitch ( `${ nextValue }` ) {\n\t\t\tcase `${ STEP }`:\n\t\t\t\t// Increment by step value.\n\t\t\t\treturn BASE_DEFAULT_VALUE + STEP;\n\t\t\tcase '0': {\n\t\t\t\t// This means the user explicitly input '0', rather than stepped down\n\t\t\t\t// from an undefined value state.\n\t\t\t\tif ( wasTypedOrPasted ) return nextValue;\n\t\t\t\t// Decrement by step value.\n\t\t\t\treturn BASE_DEFAULT_VALUE - STEP;\n\t\t\t}\n\t\t\tcase '':\n\t\t\t\treturn BASE_DEFAULT_VALUE;\n\t\t\tdefault:\n\t\t\t\treturn nextValue;\n\t\t}\n\t};\n\n\tconst stateReducer = ( state, action ) => {\n\t\t// Be careful when changing this — cross-browser behavior of the\n\t\t// `inputType` field in `input` events are inconsistent.\n\t\t// For example, Firefox emits an input event with inputType=\"insertReplacementText\"\n\t\t// on spin button clicks, while other browsers do not even emit an input event.\n\t\tconst wasTypedOrPasted = [ 'insertText', 'insertFromPaste' ].includes(\n\t\t\taction.payload.event.nativeEvent?.inputType\n\t\t);\n\t\tconst value = adjustNextValue( state.value, wasTypedOrPasted );\n\t\treturn { ...state, value };\n\t};\n\n\tconst value = isDefined ? lineHeight : RESET_VALUE;\n\n\tif ( ! __nextHasNoMarginBottom ) {\n\t\tdeprecated(\n\t\t\t'Bottom margin styles for wp.blockEditor.LineHeightControl',\n\t\t\t{\n\t\t\t\tsince: '6.0',\n\t\t\t\tversion: '6.4',\n\t\t\t\thint:\n\t\t\t\t\t'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version',\n\t\t\t}\n\t\t);\n\t}\n\tconst deprecatedStyles = __nextHasNoMarginBottom\n\t\t? undefined\n\t\t: { marginBottom: 24 };\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-line-height-control\"\n\t\t\tstyle={ deprecatedStyles }\n\t\t>\n\t\t\t<NumberControl\n\t\t\t\t__unstableInputWidth={ __unstableInputWidth }\n\t\t\t\t__unstableStateReducer={ stateReducer }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tlabel={ __( 'Line height' ) }\n\t\t\t\tplaceholder={ BASE_DEFAULT_VALUE }\n\t\t\t\tstep={ STEP }\n\t\t\t\tvalue={ value }\n\t\t\t\tmin={ 0 }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/line-height-control/index.js"],"names":["LineHeightControl","value","lineHeight","onChange","__nextHasNoMarginBottom","__unstableInputWidth","isDefined","adjustNextValue","nextValue","wasTypedOrPasted","STEP","BASE_DEFAULT_VALUE","stateReducer","state","action","includes","payload","event","nativeEvent","inputType","RESET_VALUE","since","version","hint","deprecatedStyles","undefined","marginBottom"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AAVA;AACA;AACA;;AAKA;AACA;AACA;AAQA,MAAMA,iBAAiB,GAAG,QAMnB;AAAA,MANqB;AAC3BC,IAAAA,KAAK,EAAEC,UADoB;AAE3BC,IAAAA,QAF2B;;AAG3B;AACAC,IAAAA,uBAAuB,GAAG,KAJC;AAK3BC,IAAAA,oBAAoB,GAAG;AALI,GAMrB;AACN,QAAMC,SAAS,GAAG,gCAAqBJ,UAArB,CAAlB;;AAEA,QAAMK,eAAe,GAAG,CAAEC,SAAF,EAAaC,gBAAb,KAAmC;AAC1D;AACA,QAAKH,SAAL,EAAiB,OAAOE,SAAP;AAEjB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACE,YAAU,GAAGA,SAAW,EAAxB;AACC,WAAM,GAAGE,WAAM,EAAf;AACC;AACA,eAAOC,4BAAqBD,WAA5B;;AACD,WAAK,GAAL;AAAU;AACT;AACA;AACA,cAAKD,gBAAL,EAAwB,OAAOD,SAAP,CAHf,CAIT;;AACA,iBAAOG,4BAAqBD,WAA5B;AACA;;AACD,WAAK,EAAL;AACC,eAAOC,yBAAP;;AACD;AACC,eAAOH,SAAP;AAdF;AAgBA,GA7BD;;AA+BA,QAAMI,YAAY,GAAG,CAAEC,KAAF,EAASC,MAAT,KAAqB;AAAA;;AACzC;AACA;AACA;AACA;AACA,UAAML,gBAAgB,GAAG,CAAE,YAAF,EAAgB,iBAAhB,EAAoCM,QAApC,0BACxBD,MAAM,CAACE,OAAP,CAAeC,KAAf,CAAqBC,WADG,0DACxB,sBAAkCC,SADV,CAAzB;AAGA,UAAMlB,KAAK,GAAGM,eAAe,CAAEM,KAAK,CAACZ,KAAR,EAAeQ,gBAAf,CAA7B;AACA,WAAO,EAAE,GAAGI,KAAL;AAAYZ,MAAAA;AAAZ,KAAP;AACA,GAVD;;AAYA,QAAMA,KAAK,GAAGK,SAAS,GAAGJ,UAAH,GAAgBkB,kBAAvC;;AAEA,MAAK,CAAEhB,uBAAP,EAAiC;AAChC,6BACC,2DADD,EAEC;AACCiB,MAAAA,KAAK,EAAE,KADR;AAECC,MAAAA,OAAO,EAAE,KAFV;AAGCC,MAAAA,IAAI,EACH;AAJF,KAFD;AASA;;AACD,QAAMC,gBAAgB,GAAGpB,uBAAuB,GAC7CqB,SAD6C,GAE7C;AAAEC,IAAAA,YAAY,EAAE;AAAhB,GAFH;AAIA,SACC;AACC,IAAA,SAAS,EAAC,kCADX;AAEC,IAAA,KAAK,EAAGF;AAFT,KAIC,4BAAC,uCAAD;AACC,IAAA,oBAAoB,EAAGnB,oBADxB;AAEC,IAAA,sBAAsB,EAAGO,YAF1B;AAGC,IAAA,QAAQ,EAAGT,QAHZ;AAIC,IAAA,KAAK,EAAG,cAAI,aAAJ,CAJT;AAKC,IAAA,WAAW,EAAGQ,yBALf;AAMC,IAAA,IAAI,EAAGD,WANR;AAOC,IAAA,KAAK,EAAGT,KAPT;AAQC,IAAA,GAAG,EAAG;AARP,IAJD,CADD;AAiBA,CAtFD;AAwFA;AACA;AACA;;;eACeD,iB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalNumberControl as NumberControl } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBASE_DEFAULT_VALUE,\n\tRESET_VALUE,\n\tSTEP,\n\tisLineHeightDefined,\n} from './utils';\n\nconst LineHeightControl = ( {\n\tvalue: lineHeight,\n\tonChange,\n\t/** Start opting into the new margin-free styles that will become the default in a future version. */\n\t__nextHasNoMarginBottom = false,\n\t__unstableInputWidth = '60px',\n} ) => {\n\tconst isDefined = isLineHeightDefined( lineHeight );\n\n\tconst adjustNextValue = ( nextValue, wasTypedOrPasted ) => {\n\t\t// Set the next value without modification if lineHeight has been defined.\n\t\tif ( isDefined ) return nextValue;\n\n\t\t/**\n\t\t * The following logic handles the initial step up/down action\n\t\t * (from an undefined value state) so that the next values are better suited for\n\t\t * line-height rendering. For example, the first step up should immediately\n\t\t * go to 1.6, rather than the normally expected 0.1.\n\t\t *\n\t\t * Step up/down actions can be triggered by keydowns of the up/down arrow keys,\n\t\t * or by clicking the spin buttons.\n\t\t */\n\t\tswitch ( `${ nextValue }` ) {\n\t\t\tcase `${ STEP }`:\n\t\t\t\t// Increment by step value.\n\t\t\t\treturn BASE_DEFAULT_VALUE + STEP;\n\t\t\tcase '0': {\n\t\t\t\t// This means the user explicitly input '0', rather than stepped down\n\t\t\t\t// from an undefined value state.\n\t\t\t\tif ( wasTypedOrPasted ) return nextValue;\n\t\t\t\t// Decrement by step value.\n\t\t\t\treturn BASE_DEFAULT_VALUE - STEP;\n\t\t\t}\n\t\t\tcase '':\n\t\t\t\treturn BASE_DEFAULT_VALUE;\n\t\t\tdefault:\n\t\t\t\treturn nextValue;\n\t\t}\n\t};\n\n\tconst stateReducer = ( state, action ) => {\n\t\t// Be careful when changing this — cross-browser behavior of the\n\t\t// `inputType` field in `input` events are inconsistent.\n\t\t// For example, Firefox emits an input event with inputType=\"insertReplacementText\"\n\t\t// on spin button clicks, while other browsers do not even emit an input event.\n\t\tconst wasTypedOrPasted = [ 'insertText', 'insertFromPaste' ].includes(\n\t\t\taction.payload.event.nativeEvent?.inputType\n\t\t);\n\t\tconst value = adjustNextValue( state.value, wasTypedOrPasted );\n\t\treturn { ...state, value };\n\t};\n\n\tconst value = isDefined ? lineHeight : RESET_VALUE;\n\n\tif ( ! __nextHasNoMarginBottom ) {\n\t\tdeprecated(\n\t\t\t'Bottom margin styles for wp.blockEditor.LineHeightControl',\n\t\t\t{\n\t\t\t\tsince: '6.0',\n\t\t\t\tversion: '6.4',\n\t\t\t\thint:\n\t\t\t\t\t'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version',\n\t\t\t}\n\t\t);\n\t}\n\tconst deprecatedStyles = __nextHasNoMarginBottom\n\t\t? undefined\n\t\t: { marginBottom: 24 };\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-line-height-control\"\n\t\t\tstyle={ deprecatedStyles }\n\t\t>\n\t\t\t<NumberControl\n\t\t\t\t__unstableInputWidth={ __unstableInputWidth }\n\t\t\t\t__unstableStateReducer={ stateReducer }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tlabel={ __( 'Line height' ) }\n\t\t\t\tplaceholder={ BASE_DEFAULT_VALUE }\n\t\t\t\tstep={ STEP }\n\t\t\t\tvalue={ value }\n\t\t\t\tmin={ 0 }\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/line-height-control/README.md\n */\nexport default LineHeightControl;\n"]}
@@ -13,6 +13,12 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
14
  var _components = require("@wordpress/components");
15
15
 
16
+ var _data = require("@wordpress/data");
17
+
18
+ var _icons = require("@wordpress/icons");
19
+
20
+ var _keycodes = require("@wordpress/keycodes");
21
+
16
22
  var _blockIcon = _interopRequireDefault(require("../block-icon"));
17
23
 
18
24
  var _useBlockDisplayInformation = _interopRequireDefault(require("../use-block-display-information"));
@@ -21,7 +27,7 @@ var _blockTitle = _interopRequireDefault(require("../block-title"));
21
27
 
22
28
  var _expander = _interopRequireDefault(require("./expander"));
23
29
 
24
- var _keycodes = require("@wordpress/keycodes");
30
+ var _store = require("../../store");
25
31
 
26
32
  /**
27
33
  * External dependencies
@@ -48,14 +54,21 @@ function ListViewBlockSelectButton(_ref, ref) {
48
54
  onDragEnd,
49
55
  draggable
50
56
  } = _ref;
51
- const blockInformation = (0, _useBlockDisplayInformation.default)(clientId); // The `href` attribute triggers the browser's native HTML drag operations.
57
+ const blockInformation = (0, _useBlockDisplayInformation.default)(clientId);
58
+ const isLocked = (0, _data.useSelect)(select => {
59
+ const {
60
+ canMoveBlock,
61
+ canRemoveBlock
62
+ } = select(_store.store);
63
+ return !canMoveBlock(clientId) || !canRemoveBlock(clientId);
64
+ }, [clientId]); // The `href` attribute triggers the browser's native HTML drag operations.
52
65
  // When the link is dragged, the element's outerHTML is set in DataTransfer object as text/html.
53
66
  // We need to clear any HTML drag data to prevent `pasteHandler` from firing
54
67
  // inside the `useOnBlockDrop` hook.
55
68
 
56
69
  const onDragStartHandler = event => {
57
70
  event.dataTransfer.clearData();
58
- onDragStart(event);
71
+ onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(event);
59
72
  };
60
73
 
61
74
  function onKeyDownHandler(event) {
@@ -81,12 +94,18 @@ function ListViewBlockSelectButton(_ref, ref) {
81
94
  }), (0, _element.createElement)(_blockIcon.default, {
82
95
  icon: blockInformation === null || blockInformation === void 0 ? void 0 : blockInformation.icon,
83
96
  showColors: true
84
- }), (0, _element.createElement)(_blockTitle.default, {
97
+ }), (0, _element.createElement)("span", {
98
+ className: "block-editor-list-view-block-select-button__title"
99
+ }, (0, _element.createElement)(_blockTitle.default, {
85
100
  clientId: clientId,
86
101
  maximumLength: 35
87
- }), (blockInformation === null || blockInformation === void 0 ? void 0 : blockInformation.anchor) && (0, _element.createElement)("span", {
102
+ })), (blockInformation === null || blockInformation === void 0 ? void 0 : blockInformation.anchor) && (0, _element.createElement)("span", {
88
103
  className: "block-editor-list-view-block-select-button__anchor"
89
- }, blockInformation.anchor)));
104
+ }, blockInformation.anchor), isLocked && (0, _element.createElement)("span", {
105
+ className: "block-editor-list-view-block-select-button__lock"
106
+ }, (0, _element.createElement)(_icons.Icon, {
107
+ icon: _icons.lock
108
+ }))));
90
109
  }
91
110
 
92
111
  var _default = (0, _element.forwardRef)(ListViewBlockSelectButton);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/block-select-button.js"],"names":["ListViewBlockSelectButton","ref","className","block","clientId","onClick","onToggleExpanded","tabIndex","onFocus","onDragStart","onDragEnd","draggable","blockInformation","onDragStartHandler","event","dataTransfer","clearData","onKeyDownHandler","keyCode","ENTER","SPACE","icon","anchor"],"mappings":";;;;;;;;;AASA;;AANA;;AAKA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AAlBA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;AAOA,SAASA,yBAAT,OAYCC,GAZD,EAaE;AAAA,MAZD;AACCC,IAAAA,SADD;AAECC,IAAAA,KAAK,EAAE;AAAEC,MAAAA;AAAF,KAFR;AAGCC,IAAAA,OAHD;AAICC,IAAAA,gBAJD;AAKCC,IAAAA,QALD;AAMCC,IAAAA,OAND;AAOCC,IAAAA,WAPD;AAQCC,IAAAA,SARD;AASCC,IAAAA;AATD,GAYC;AACD,QAAMC,gBAAgB,GAAG,yCAA4BR,QAA5B,CAAzB,CADC,CAGD;AACA;AACA;AACA;;AACA,QAAMS,kBAAkB,GAAKC,KAAF,IAAa;AACvCA,IAAAA,KAAK,CAACC,YAAN,CAAmBC,SAAnB;AACAP,IAAAA,WAAW,CAAEK,KAAF,CAAX;AACA,GAHD;;AAKA,WAASG,gBAAT,CAA2BH,KAA3B,EAAmC;AAClC,QAAKA,KAAK,CAACI,OAAN,KAAkBC,eAAlB,IAA2BL,KAAK,CAACI,OAAN,KAAkBE,eAAlD,EAA0D;AACzDf,MAAAA,OAAO,CAAES,KAAF,CAAP;AACA;AACD;;AAED,SACC,qDACC,4BAAC,kBAAD;AACC,IAAA,SAAS,EAAG,yBACX,4CADW,EAEXZ,SAFW,CADb;AAKC,IAAA,OAAO,EAAGG,OALX;AAMC,IAAA,SAAS,EAAGY,gBANb;AAOC,IAAA,GAAG,EAAGhB,GAPP;AAQC,IAAA,QAAQ,EAAGM,QARZ;AASC,IAAA,OAAO,EAAGC,OATX;AAUC,IAAA,WAAW,EAAGK,kBAVf;AAWC,IAAA,SAAS,EAAGH,SAXb;AAYC,IAAA,SAAS,EAAGC,SAZb;AAaC,IAAA,IAAI,EAAI,UAAUP,QAAU,EAb7B;AAcC,mBAAc;AAdf,KAgBC,4BAAC,iBAAD;AAAkB,IAAA,OAAO,EAAGE;AAA5B,IAhBD,EAiBC,4BAAC,kBAAD;AAAW,IAAA,IAAI,EAAGM,gBAAH,aAAGA,gBAAH,uBAAGA,gBAAgB,CAAES,IAApC;AAA2C,IAAA,UAAU;AAArD,IAjBD,EAkBC,4BAAC,mBAAD;AAAY,IAAA,QAAQ,EAAGjB,QAAvB;AAAkC,IAAA,aAAa,EAAG;AAAlD,IAlBD,EAmBG,CAAAQ,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAEU,MAAlB,KACD;AAAM,IAAA,SAAS,EAAC;AAAhB,KACGV,gBAAgB,CAACU,MADpB,CApBF,CADD,CADD;AA6BA;;eAEc,yBAAYtB,yBAAZ,C","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockTitle from '../block-title';\nimport ListViewExpander from './expander';\nimport { SPACE, ENTER } from '@wordpress/keycodes';\n\nfunction ListViewBlockSelectButton(\n\t{\n\t\tclassName,\n\t\tblock: { clientId },\n\t\tonClick,\n\t\tonToggleExpanded,\n\t\ttabIndex,\n\t\tonFocus,\n\t\tonDragStart,\n\t\tonDragEnd,\n\t\tdraggable,\n\t},\n\tref\n) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\n\t// The `href` attribute triggers the browser's native HTML drag operations.\n\t// When the link is dragged, the element's outerHTML is set in DataTransfer object as text/html.\n\t// We need to clear any HTML drag data to prevent `pasteHandler` from firing\n\t// inside the `useOnBlockDrop` hook.\n\tconst onDragStartHandler = ( event ) => {\n\t\tevent.dataTransfer.clearData();\n\t\tonDragStart( event );\n\t};\n\n\tfunction onKeyDownHandler( event ) {\n\t\tif ( event.keyCode === ENTER || event.keyCode === SPACE ) {\n\t\t\tonClick( event );\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-list-view-block-select-button',\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tonKeyDown={ onKeyDownHandler }\n\t\t\t\tref={ ref }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tonDragStart={ onDragStartHandler }\n\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\tdraggable={ draggable }\n\t\t\t\thref={ `#block-${ clientId }` }\n\t\t\t\taria-hidden={ true }\n\t\t\t>\n\t\t\t\t<ListViewExpander onClick={ onToggleExpanded } />\n\t\t\t\t<BlockIcon icon={ blockInformation?.icon } showColors />\n\t\t\t\t<BlockTitle clientId={ clientId } maximumLength={ 35 } />\n\t\t\t\t{ blockInformation?.anchor && (\n\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__anchor\">\n\t\t\t\t\t\t{ blockInformation.anchor }\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n\nexport default forwardRef( ListViewBlockSelectButton );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/block-select-button.js"],"names":["ListViewBlockSelectButton","ref","className","block","clientId","onClick","onToggleExpanded","tabIndex","onFocus","onDragStart","onDragEnd","draggable","blockInformation","isLocked","select","canMoveBlock","canRemoveBlock","blockEditorStore","onDragStartHandler","event","dataTransfer","clearData","onKeyDownHandler","keyCode","ENTER","SPACE","icon","anchor","lock"],"mappings":";;;;;;;;;AASA;;AANA;;AAKA;;AAEA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AArBA;AACA;AACA;;AAGA;AACA;AACA;;AAOA;AACA;AACA;AAOA,SAASA,yBAAT,OAYCC,GAZD,EAaE;AAAA,MAZD;AACCC,IAAAA,SADD;AAECC,IAAAA,KAAK,EAAE;AAAEC,MAAAA;AAAF,KAFR;AAGCC,IAAAA,OAHD;AAICC,IAAAA,gBAJD;AAKCC,IAAAA,QALD;AAMCC,IAAAA,OAND;AAOCC,IAAAA,WAPD;AAQCC,IAAAA,SARD;AASCC,IAAAA;AATD,GAYC;AACD,QAAMC,gBAAgB,GAAG,yCAA4BR,QAA5B,CAAzB;AACA,QAAMS,QAAQ,GAAG,qBACdC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,YAAF;AAAgBC,MAAAA;AAAhB,QAAmCF,MAAM,CAAEG,YAAF,CAA/C;AAEA,WAAO,CAAEF,YAAY,CAAEX,QAAF,CAAd,IAA8B,CAAEY,cAAc,CAAEZ,QAAF,CAArD;AACA,GALe,EAMhB,CAAEA,QAAF,CANgB,CAAjB,CAFC,CAWD;AACA;AACA;AACA;;AACA,QAAMc,kBAAkB,GAAKC,KAAF,IAAa;AACvCA,IAAAA,KAAK,CAACC,YAAN,CAAmBC,SAAnB;AACAZ,IAAAA,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAIU,KAAJ,CAAX;AACA,GAHD;;AAKA,WAASG,gBAAT,CAA2BH,KAA3B,EAAmC;AAClC,QAAKA,KAAK,CAACI,OAAN,KAAkBC,eAAlB,IAA2BL,KAAK,CAACI,OAAN,KAAkBE,eAAlD,EAA0D;AACzDpB,MAAAA,OAAO,CAAEc,KAAF,CAAP;AACA;AACD;;AAED,SACC,qDACC,4BAAC,kBAAD;AACC,IAAA,SAAS,EAAG,yBACX,4CADW,EAEXjB,SAFW,CADb;AAKC,IAAA,OAAO,EAAGG,OALX;AAMC,IAAA,SAAS,EAAGiB,gBANb;AAOC,IAAA,GAAG,EAAGrB,GAPP;AAQC,IAAA,QAAQ,EAAGM,QARZ;AASC,IAAA,OAAO,EAAGC,OATX;AAUC,IAAA,WAAW,EAAGU,kBAVf;AAWC,IAAA,SAAS,EAAGR,SAXb;AAYC,IAAA,SAAS,EAAGC,SAZb;AAaC,IAAA,IAAI,EAAI,UAAUP,QAAU,EAb7B;AAcC,mBAAc;AAdf,KAgBC,4BAAC,iBAAD;AAAkB,IAAA,OAAO,EAAGE;AAA5B,IAhBD,EAiBC,4BAAC,kBAAD;AAAW,IAAA,IAAI,EAAGM,gBAAH,aAAGA,gBAAH,uBAAGA,gBAAgB,CAAEc,IAApC;AAA2C,IAAA,UAAU;AAArD,IAjBD,EAkBC;AAAM,IAAA,SAAS,EAAC;AAAhB,KACC,4BAAC,mBAAD;AAAY,IAAA,QAAQ,EAAGtB,QAAvB;AAAkC,IAAA,aAAa,EAAG;AAAlD,IADD,CAlBD,EAqBG,CAAAQ,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAEe,MAAlB,KACD;AAAM,IAAA,SAAS,EAAC;AAAhB,KACGf,gBAAgB,CAACe,MADpB,CAtBF,EA0BGd,QAAQ,IACT;AAAM,IAAA,SAAS,EAAC;AAAhB,KACC,4BAAC,WAAD;AAAM,IAAA,IAAI,EAAGe;AAAb,IADD,CA3BF,CADD,CADD;AAoCA;;eAEc,yBAAY5B,yBAAZ,C","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { forwardRef } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { Icon, lock } from '@wordpress/icons';\nimport { SPACE, ENTER } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockTitle from '../block-title';\nimport ListViewExpander from './expander';\nimport { store as blockEditorStore } from '../../store';\n\nfunction ListViewBlockSelectButton(\n\t{\n\t\tclassName,\n\t\tblock: { clientId },\n\t\tonClick,\n\t\tonToggleExpanded,\n\t\ttabIndex,\n\t\tonFocus,\n\t\tonDragStart,\n\t\tonDragEnd,\n\t\tdraggable,\n\t},\n\tref\n) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst isLocked = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canMoveBlock, canRemoveBlock } = select( blockEditorStore );\n\n\t\t\treturn ! canMoveBlock( clientId ) || ! canRemoveBlock( clientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// The `href` attribute triggers the browser's native HTML drag operations.\n\t// When the link is dragged, the element's outerHTML is set in DataTransfer object as text/html.\n\t// We need to clear any HTML drag data to prevent `pasteHandler` from firing\n\t// inside the `useOnBlockDrop` hook.\n\tconst onDragStartHandler = ( event ) => {\n\t\tevent.dataTransfer.clearData();\n\t\tonDragStart?.( event );\n\t};\n\n\tfunction onKeyDownHandler( event ) {\n\t\tif ( event.keyCode === ENTER || event.keyCode === SPACE ) {\n\t\t\tonClick( event );\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-list-view-block-select-button',\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tonKeyDown={ onKeyDownHandler }\n\t\t\t\tref={ ref }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tonDragStart={ onDragStartHandler }\n\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\tdraggable={ draggable }\n\t\t\t\thref={ `#block-${ clientId }` }\n\t\t\t\taria-hidden={ true }\n\t\t\t>\n\t\t\t\t<ListViewExpander onClick={ onToggleExpanded } />\n\t\t\t\t<BlockIcon icon={ blockInformation?.icon } showColors />\n\t\t\t\t<span className=\"block-editor-list-view-block-select-button__title\">\n\t\t\t\t\t<BlockTitle clientId={ clientId } maximumLength={ 35 } />\n\t\t\t\t</span>\n\t\t\t\t{ blockInformation?.anchor && (\n\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__anchor\">\n\t\t\t\t\t\t{ blockInformation.anchor }\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t{ isLocked && (\n\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__lock\">\n\t\t\t\t\t\t<Icon icon={ lock } />\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n\nexport default forwardRef( ListViewBlockSelectButton );\n"]}
@@ -70,6 +70,8 @@ function ListViewBlock(_ref) {
70
70
  const {
71
71
  clientId
72
72
  } = block;
73
+ const isFirstSelectedBlock = isSelected && selectedClientIds[0] === clientId;
74
+ const isLastSelectedBlock = isSelected && selectedClientIds[selectedClientIds.length - 1] === clientId;
73
75
  const {
74
76
  toggleBlockHighlight
75
77
  } = (0, _data.useDispatch)(_store.store);
@@ -95,7 +97,7 @@ function ListViewBlock(_ref) {
95
97
  'is-visible': isHovered || isSelected
96
98
  });
97
99
  const listViewBlockSettingsClassName = (0, _classnames.default)('block-editor-list-view-block__menu-cell', {
98
- 'is-visible': isHovered || isSelected
100
+ 'is-visible': isHovered || isFirstSelectedBlock
99
101
  }); // If ListView has experimental features related to the Persistent List View,
100
102
  // only focus the selected list item on mount; otherwise the list would always
101
103
  // try to steal the focus from the editor canvas.
@@ -145,6 +147,8 @@ function ListViewBlock(_ref) {
145
147
 
146
148
  const classes = (0, _classnames.default)({
147
149
  'is-selected': isSelected,
150
+ 'is-first-selected': isFirstSelectedBlock,
151
+ 'is-last-selected': isLastSelectedBlock,
148
152
  'is-branch-selected': withExperimentalPersistentListViewFeatures && isBranchSelected,
149
153
  'is-dragging': isDragged,
150
154
  'has-single-cell': hideBlockActions
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"names":["ListViewBlock","block","isDragged","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","preventAnnouncement","cellRef","isHovered","setIsHovered","clientId","toggleBlockHighlight","blockEditorStore","blockInformation","instanceId","descriptionId","blockPositionDescription","blockAriaLabel","title","settingsAriaLabel","__experimentalFeatures","withExperimentalFeatures","__experimentalPersistentListViewFeatures","withExperimentalPersistentListViewFeatures","__experimentalHideContainerBlockActions","hideContainerBlockActions","isTreeGridMounted","expand","collapse","hasSiblings","hasRenderedMovers","moverCellClassName","listViewBlockSettingsClassName","current","focus","highlightBlock","onMouseEnter","onMouseLeave","selectEditorBlock","event","preventDefault","updateSelection","newClientId","undefined","toggleExpanded","stopPropagation","showBlockActions","hideBlockActions","colSpan","classes","dropdownClientIds","includes","ref","tabIndex","onFocus","moreVertical","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\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\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport BlockSettingsDropdown from '../block-settings-menu/block-settings-dropdown';\nimport { useListViewContext } from './context';\nimport { getBlockPositionDescription } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\n\nfunction ListViewBlock( {\n\tblock,\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\tpreventAnnouncement,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst { clientId } = block;\n\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\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 = blockInformation\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the block.\n\t\t\t\t__( '%s link' ),\n\t\t\t\tblockInformation.title\n\t\t )\n\t\t: __( 'Link' );\n\n\tconst settingsAriaLabel = blockInformation\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block.\n\t\t\t\t__( 'Options for %s block' ),\n\t\t\t\tblockInformation.title\n\t\t )\n\t\t: __( 'Options' );\n\n\tconst {\n\t\t__experimentalFeatures: withExperimentalFeatures,\n\t\t__experimentalPersistentListViewFeatures: withExperimentalPersistentListViewFeatures,\n\t\t__experimentalHideContainerBlockActions: hideContainerBlockActions,\n\t\tisTreeGridMounted,\n\t\texpand,\n\t\tcollapse,\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 || isSelected }\n\t);\n\n\t// If ListView has experimental features related to the Persistent List View,\n\t// only focus the selected list item on mount; otherwise the list would always\n\t// try to steal the focus from the editor canvas.\n\tuseEffect( () => {\n\t\tif (\n\t\t\twithExperimentalPersistentListViewFeatures &&\n\t\t\t! isTreeGridMounted &&\n\t\t\tisSelected\n\t\t) {\n\t\t\tcellRef.current.focus();\n\t\t}\n\t}, [] );\n\n\tconst highlightBlock = withExperimentalPersistentListViewFeatures\n\t\t? toggleBlockHighlight\n\t\t: () => {};\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\thighlightBlock( clientId, true );\n\t}, [ clientId, setIsHovered, highlightBlock ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\thighlightBlock( clientId, false );\n\t}, [ clientId, setIsHovered, highlightBlock ] );\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 updateSelection = useCallback(\n\t\t( newClientId ) => {\n\t\t\tselectBlock( undefined, newClientId );\n\t\t},\n\t\t[ selectBlock ]\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\tconst showBlockActions =\n\t\twithExperimentalFeatures &&\n\t\t// hide actions for blocks like core/widget-areas\n\t\t( ! hideContainerBlockActions ||\n\t\t\t( hideContainerBlockActions && level > 1 ) );\n\n\tconst hideBlockActions = withExperimentalFeatures && ! showBlockActions;\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( hideBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = classnames( {\n\t\t'is-selected': isSelected,\n\t\t'is-branch-selected':\n\t\t\twithExperimentalPersistentListViewFeatures && isBranchSelected,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': hideBlockActions,\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\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\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-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tisExpanded={ isExpanded }\n\t\t\taria-selected={ !! isSelected }\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-label={ blockAriaLabel }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\taria-expanded={ isExpanded }\n\t\t\t\taria-describedby={ descriptionId }\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\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={ tabIndex }\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tpreventAnnouncement={ preventAnnouncement }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__description\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ blockPositionDescription }\n\t\t\t\t\t\t</div>\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 && (\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>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsDropdown\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\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\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\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\t__experimentalSelectBlock={ updateSelection }\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"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"names":["ListViewBlock","block","isDragged","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","preventAnnouncement","cellRef","isHovered","setIsHovered","clientId","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","blockEditorStore","blockInformation","instanceId","descriptionId","blockPositionDescription","blockAriaLabel","title","settingsAriaLabel","__experimentalFeatures","withExperimentalFeatures","__experimentalPersistentListViewFeatures","withExperimentalPersistentListViewFeatures","__experimentalHideContainerBlockActions","hideContainerBlockActions","isTreeGridMounted","expand","collapse","hasSiblings","hasRenderedMovers","moverCellClassName","listViewBlockSettingsClassName","current","focus","highlightBlock","onMouseEnter","onMouseLeave","selectEditorBlock","event","preventDefault","updateSelection","newClientId","undefined","toggleExpanded","stopPropagation","showBlockActions","hideBlockActions","colSpan","classes","dropdownClientIds","includes","ref","tabIndex","onFocus","moreVertical","className"],"mappings":";;;;;;;;;AAcA;;AAXA;;AAKA;;AAIA;;AACA;;AAQA;;AACA;;AAKA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AArCA;AACA;AACA;;AAGA;AACA;AACA;;AAiBA;AACA;AACA;AAaA,SAASA,aAAT,OAeI;AAAA,MAfoB;AACvBC,IAAAA,KADuB;AAEvBC,IAAAA,SAFuB;AAGvBC,IAAAA,UAHuB;AAIvBC,IAAAA,gBAJuB;AAKvBC,IAAAA,WALuB;AAMvBC,IAAAA,QANuB;AAOvBC,IAAAA,KAPuB;AAQvBC,IAAAA,QARuB;AASvBC,IAAAA,iBATuB;AAUvBC,IAAAA,eAVuB;AAWvBC,IAAAA,IAXuB;AAYvBC,IAAAA,UAZuB;AAavBC,IAAAA,iBAbuB;AAcvBC,IAAAA;AAduB,GAepB;AACH,QAAMC,OAAO,GAAG,qBAAQ,IAAR,CAAhB;AACA,QAAM,CAAEC,SAAF,EAAaC,YAAb,IAA8B,uBAAU,KAAV,CAApC;AACA,QAAM;AAAEC,IAAAA;AAAF,MAAejB,KAArB;AACA,QAAMkB,oBAAoB,GACzBhB,UAAU,IAAIU,iBAAiB,CAAE,CAAF,CAAjB,KAA2BK,QAD1C;AAEA,QAAME,mBAAmB,GACxBjB,UAAU,IACVU,iBAAiB,CAAEA,iBAAiB,CAACQ,MAAlB,GAA2B,CAA7B,CAAjB,KAAsDH,QAFvD;AAIA,QAAM;AAAEI,IAAAA;AAAF,MAA2B,uBAAaC,YAAb,CAAjC;AAEA,QAAMC,gBAAgB,GAAG,yCAA4BN,QAA5B,CAAzB;AACA,QAAMO,UAAU,GAAG,4BAAezB,aAAf,CAAnB;AACA,QAAM0B,aAAa,GAAI,kCAAkCD,UAAY,EAArE;AACA,QAAME,wBAAwB,GAAG,wCAChCrB,QADgC,EAEhCG,iBAFgC,EAGhCF,KAHgC,CAAjC;AAMA,QAAMqB,cAAc,GAAGJ,gBAAgB,GACpC,oBACA;AACA,gBAAI,SAAJ,CAFA,EAGAA,gBAAgB,CAACK,KAHjB,CADoC,GAMpC,cAAI,MAAJ,CANH;AAQA,QAAMC,iBAAiB,GAAGN,gBAAgB,GACvC,oBACA;AACA,gBAAI,sBAAJ,CAFA,EAGAA,gBAAgB,CAACK,KAHjB,CADuC,GAMvC,cAAI,SAAJ,CANH;AAQA,QAAM;AACLE,IAAAA,sBAAsB,EAAEC,wBADnB;AAELC,IAAAA,wCAAwC,EAAEC,0CAFrC;AAGLC,IAAAA,uCAAuC,EAAEC,yBAHpC;AAILC,IAAAA,iBAJK;AAKLC,IAAAA,MALK;AAMLC,IAAAA;AANK,MAOF,kCAPJ;AASA,QAAMC,WAAW,GAAG/B,iBAAiB,GAAG,CAAxC;AACA,QAAMgC,iBAAiB,GAAG/B,eAAe,IAAI8B,WAA7C;AACA,QAAME,kBAAkB,GAAG,yBAC1B,0CAD0B,EAE1B;AAAE,kBAAc1B,SAAS,IAAIb;AAA7B,GAF0B,CAA3B;AAKA,QAAMwC,8BAA8B,GAAG,yBACtC,yCADsC,EAEtC;AAAE,kBAAc3B,SAAS,IAAIG;AAA7B,GAFsC,CAAvC,CArDG,CA0DH;AACA;AACA;;AACA,0BAAW,MAAM;AAChB,QACCe,0CAA0C,IAC1C,CAAEG,iBADF,IAEAlC,UAHD,EAIE;AACDY,MAAAA,OAAO,CAAC6B,OAAR,CAAgBC,KAAhB;AACA;AACD,GARD,EAQG,EARH;AAUA,QAAMC,cAAc,GAAGZ,0CAA0C,GAC9DZ,oBAD8D,GAE9D,MAAM,CAAE,CAFX;AAIA,QAAMyB,YAAY,GAAG,0BAAa,MAAM;AACvC9B,IAAAA,YAAY,CAAE,IAAF,CAAZ;AACA6B,IAAAA,cAAc,CAAE5B,QAAF,EAAY,IAAZ,CAAd;AACA,GAHoB,EAGlB,CAAEA,QAAF,EAAYD,YAAZ,EAA0B6B,cAA1B,CAHkB,CAArB;AAIA,QAAME,YAAY,GAAG,0BAAa,MAAM;AACvC/B,IAAAA,YAAY,CAAE,KAAF,CAAZ;AACA6B,IAAAA,cAAc,CAAE5B,QAAF,EAAY,KAAZ,CAAd;AACA,GAHoB,EAGlB,CAAEA,QAAF,EAAYD,YAAZ,EAA0B6B,cAA1B,CAHkB,CAArB;AAKA,QAAMG,iBAAiB,GAAG,0BACvBC,KAAF,IAAa;AACZ7C,IAAAA,WAAW,CAAE6C,KAAF,EAAShC,QAAT,CAAX;AACAgC,IAAAA,KAAK,CAACC,cAAN;AACA,GAJwB,EAKzB,CAAEjC,QAAF,EAAYb,WAAZ,CALyB,CAA1B;AAQA,QAAM+C,eAAe,GAAG,0BACrBC,WAAF,IAAmB;AAClBhD,IAAAA,WAAW,CAAEiD,SAAF,EAAaD,WAAb,CAAX;AACA,GAHsB,EAIvB,CAAEhD,WAAF,CAJuB,CAAxB;AAOA,QAAMkD,cAAc,GAAG,0BACpBL,KAAF,IAAa;AACZ;AACAA,IAAAA,KAAK,CAACC,cAAN;AACAD,IAAAA,KAAK,CAACM,eAAN;;AACA,QAAK5C,UAAU,KAAK,IAApB,EAA2B;AAC1B2B,MAAAA,QAAQ,CAAErB,QAAF,CAAR;AACA,KAFD,MAEO,IAAKN,UAAU,KAAK,KAApB,EAA4B;AAClC0B,MAAAA,MAAM,CAAEpB,QAAF,CAAN;AACA;AACD,GAVqB,EAWtB,CAAEA,QAAF,EAAYoB,MAAZ,EAAoBC,QAApB,EAA8B3B,UAA9B,CAXsB,CAAvB;AAcA,QAAM6C,gBAAgB,GACrBzB,wBAAwB,MACxB;AACE,GAAEI,yBAAF,IACCA,yBAAyB,IAAI7B,KAAK,GAAG,CAHhB,CADzB;AAMA,QAAMmD,gBAAgB,GAAG1B,wBAAwB,IAAI,CAAEyB,gBAAvD;AAEA,MAAIE,OAAJ;;AACA,MAAKlB,iBAAL,EAAyB;AACxBkB,IAAAA,OAAO,GAAG,CAAV;AACA,GAFD,MAEO,IAAKD,gBAAL,EAAwB;AAC9BC,IAAAA,OAAO,GAAG,CAAV;AACA;;AAED,QAAMC,OAAO,GAAG,yBAAY;AAC3B,mBAAezD,UADY;AAE3B,yBAAqBgB,oBAFM;AAG3B,wBAAoBC,mBAHO;AAI3B,0BACCc,0CAA0C,IAAI9B,gBALpB;AAM3B,mBAAeF,SANY;AAO3B,uBAAmBwD;AAPQ,GAAZ,CAAhB,CAhIG,CA0IH;AACA;AACA;AACA;;AACA,QAAMG,iBAAiB,GAAGhD,iBAAiB,CAACiD,QAAlB,CAA4B5C,QAA5B,IACvBL,iBADuB,GAEvB,CAAEK,QAAF,CAFH;AAIA,SACC,4BAAC,aAAD;AACC,IAAA,SAAS,EAAG0C,OADb;AAEC,IAAA,YAAY,EAAGb,YAFhB;AAGC,IAAA,YAAY,EAAGC,YAHhB;AAIC,IAAA,OAAO,EAAGD,YAJX;AAKC,IAAA,MAAM,EAAGC,YALV;AAMC,IAAA,KAAK,EAAGzC,KANT;AAOC,IAAA,QAAQ,EAAGD,QAPZ;AAQC,IAAA,QAAQ,EAAGE,QARZ;AASC,IAAA,IAAI,EAAGG,IATR;AAUC,IAAA,EAAE,EAAI,mBAAmBO,QAAU,EAVpC;AAWC,kBAAaA,QAXd;AAYC,IAAA,UAAU,EAAGN,UAZd;AAaC,qBAAgB,CAAC,CAAET;AAbpB,KAeC,4BAAC,sCAAD;AACC,IAAA,SAAS,EAAC,6CADX;AAEC,IAAA,OAAO,EAAGwD,OAFX;AAGC,IAAA,GAAG,EAAG5C,OAHP;AAIC,kBAAaa,cAJd;AAKC,qBAAgB,CAAC,CAAEzB,UALpB;AAMC,qBAAgBS,UANjB;AAOC,wBAAmBc;AAPpB,KASG;AAAA,QAAE;AAAEqC,MAAAA,GAAF;AAAOC,MAAAA,QAAP;AAAiBC,MAAAA;AAAjB,KAAF;AAAA,WACD;AAAK,MAAA,SAAS,EAAC;AAAf,OACC,4BAAC,sBAAD;AACC,MAAA,KAAK,EAAGhE,KADT;AAEC,MAAA,OAAO,EAAGgD,iBAFX;AAGC,MAAA,gBAAgB,EAAGM,cAHpB;AAIC,MAAA,UAAU,EAAGpD,UAJd;AAKC,MAAA,QAAQ,EAAGG,QALZ;AAMC,MAAA,iBAAiB,EAAGG,iBANrB;AAOC,MAAA,KAAK,EAAGF,KAPT;AAQC,MAAA,GAAG,EAAGwD,GARP;AASC,MAAA,QAAQ,EAAGC,QATZ;AAUC,MAAA,OAAO,EAAGC,OAVX;AAWC,MAAA,UAAU,EAAGrD,UAXd;AAYC,MAAA,iBAAiB,EAAGC,iBAZrB;AAaC,MAAA,mBAAmB,EAAGC;AAbvB,MADD,EAgBC;AACC,MAAA,SAAS,EAAC,yDADX;AAEC,MAAA,EAAE,EAAGY;AAFN,OAIGC,wBAJH,CAhBD,CADC;AAAA,GATH,CAfD,EAkDGc,iBAAiB,IAClB,qDACC,4BAAC,sCAAD;AACC,IAAA,SAAS,EAAGC,kBADb;AAEC,IAAA,eAAe;AAFhB,KAIC,4BAAC,sCAAD,QACG;AAAA,QAAE;AAAEqB,MAAAA,GAAF;AAAOC,MAAAA,QAAP;AAAiBC,MAAAA;AAAjB,KAAF;AAAA,WACD,4BAAC,0BAAD;AACC,MAAA,WAAW,EAAC,UADb;AAEC,MAAA,SAAS,EAAG,CAAE/C,QAAF,CAFb;AAGC,MAAA,GAAG,EAAG6C,GAHP;AAIC,MAAA,QAAQ,EAAGC,QAJZ;AAKC,MAAA,OAAO,EAAGC;AALX,MADC;AAAA,GADH,CAJD,EAeC,4BAAC,sCAAD,QACG;AAAA,QAAE;AAAEF,MAAAA,GAAF;AAAOC,MAAAA,QAAP;AAAiBC,MAAAA;AAAjB,KAAF;AAAA,WACD,4BAAC,4BAAD;AACC,MAAA,WAAW,EAAC,UADb;AAEC,MAAA,SAAS,EAAG,CAAE/C,QAAF,CAFb;AAGC,MAAA,GAAG,EAAG6C,GAHP;AAIC,MAAA,QAAQ,EAAGC,QAJZ;AAKC,MAAA,OAAO,EAAGC;AALX,MADC;AAAA,GADH,CAfD,CADD,CAnDF,EAkFGR,gBAAgB,IACjB,4BAAC,sCAAD;AACC,IAAA,SAAS,EAAGd,8BADb;AAEC,qBAAgB,CAAC,CAAExC;AAFpB,KAIG;AAAA,QAAE;AAAE4D,MAAAA,GAAF;AAAOC,MAAAA,QAAP;AAAiBC,MAAAA;AAAjB,KAAF;AAAA,WACD,4BAAC,8BAAD;AACC,MAAA,SAAS,EAAGJ,iBADb;AAEC,MAAA,IAAI,EAAGK,mBAFR;AAGC,MAAA,KAAK,EAAGpC,iBAHT;AAIC,MAAA,WAAW,EAAG;AACbiC,QAAAA,GADa;AAEbI,QAAAA,SAAS,EAAE,oCAFE;AAGbH,QAAAA,QAHa;AAIbC,QAAAA;AAJa,OAJf;AAUC,MAAA,sBAAsB,MAVvB;AAWC,MAAA,yBAAyB,EAAGb;AAX7B,MADC;AAAA,GAJH,CAnFF,CADD;AA2GA;;eAEc,mBAAMpD,aAAN,C","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\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\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport BlockSettingsDropdown from '../block-settings-menu/block-settings-dropdown';\nimport { useListViewContext } from './context';\nimport { getBlockPositionDescription } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\n\nfunction ListViewBlock( {\n\tblock,\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\tpreventAnnouncement,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst { clientId } = block;\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 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 = blockInformation\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the block.\n\t\t\t\t__( '%s link' ),\n\t\t\t\tblockInformation.title\n\t\t )\n\t\t: __( 'Link' );\n\n\tconst settingsAriaLabel = blockInformation\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block.\n\t\t\t\t__( 'Options for %s block' ),\n\t\t\t\tblockInformation.title\n\t\t )\n\t\t: __( 'Options' );\n\n\tconst {\n\t\t__experimentalFeatures: withExperimentalFeatures,\n\t\t__experimentalPersistentListViewFeatures: withExperimentalPersistentListViewFeatures,\n\t\t__experimentalHideContainerBlockActions: hideContainerBlockActions,\n\t\tisTreeGridMounted,\n\t\texpand,\n\t\tcollapse,\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 ListView has experimental features related to the Persistent List View,\n\t// only focus the selected list item on mount; otherwise the list would always\n\t// try to steal the focus from the editor canvas.\n\tuseEffect( () => {\n\t\tif (\n\t\t\twithExperimentalPersistentListViewFeatures &&\n\t\t\t! isTreeGridMounted &&\n\t\t\tisSelected\n\t\t) {\n\t\t\tcellRef.current.focus();\n\t\t}\n\t}, [] );\n\n\tconst highlightBlock = withExperimentalPersistentListViewFeatures\n\t\t? toggleBlockHighlight\n\t\t: () => {};\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\thighlightBlock( clientId, true );\n\t}, [ clientId, setIsHovered, highlightBlock ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\thighlightBlock( clientId, false );\n\t}, [ clientId, setIsHovered, highlightBlock ] );\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 updateSelection = useCallback(\n\t\t( newClientId ) => {\n\t\t\tselectBlock( undefined, newClientId );\n\t\t},\n\t\t[ selectBlock ]\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\tconst showBlockActions =\n\t\twithExperimentalFeatures &&\n\t\t// hide actions for blocks like core/widget-areas\n\t\t( ! hideContainerBlockActions ||\n\t\t\t( hideContainerBlockActions && level > 1 ) );\n\n\tconst hideBlockActions = withExperimentalFeatures && ! showBlockActions;\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( hideBlockActions ) {\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':\n\t\t\twithExperimentalPersistentListViewFeatures && isBranchSelected,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': hideBlockActions,\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\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\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-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tisExpanded={ isExpanded }\n\t\t\taria-selected={ !! isSelected }\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-label={ blockAriaLabel }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\taria-expanded={ isExpanded }\n\t\t\t\taria-describedby={ descriptionId }\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\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={ tabIndex }\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tpreventAnnouncement={ preventAnnouncement }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__description\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ blockPositionDescription }\n\t\t\t\t\t\t</div>\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 && (\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>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsDropdown\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\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\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\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\t__experimentalSelectBlock={ updateSelection }\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"]}
@@ -92,7 +92,7 @@ function ListViewBranch(props) {
92
92
  isBranchSelected = false,
93
93
  listPosition = 0,
94
94
  fixedListWindow,
95
- expandNested = true
95
+ expandNested
96
96
  } = props;
97
97
  const {
98
98
  expandedState,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/branch.js"],"names":["countBlocks","block","expandedState","draggedClientIds","isExpandedByDefault","isDragged","includes","clientId","isExpanded","innerBlocks","reduce","countReducer","count","length","ListViewBranch","props","blocks","selectBlock","showBlockMovers","showNestedBlocks","selectedClientIds","level","path","isBranchSelected","listPosition","fixedListWindow","expandNested","__experimentalPersistentListViewFeatures","filteredBlocks","blockCount","nextPosition","map","index","usesWindowing","itemInView","blockInView","position","updatedPath","hasNestedBlocks","undefined","showBlock","isSelected","isSelectedBranch","defaultProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { compact } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { memo } from '@wordpress/element';\nimport { AsyncModeProvider } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport ListViewBlock from './block';\nimport { useListViewContext } from './context';\nimport { isClientIdSelected } from './utils';\n\n/**\n * Given a block, returns the total number of blocks in that subtree. This is used to help determine\n * the list position of a block.\n *\n * When a block is collapsed, we do not count their children as part of that total. In the current drag\n * implementation dragged blocks and their children are not counted.\n *\n * @param {Object} block block tree\n * @param {Object} expandedState state that notes which branches are collapsed\n * @param {Array} draggedClientIds a list of dragged client ids\n * @param {boolean} isExpandedByDefault flag to determine the default fallback expanded state.\n * @return {number} block count\n */\nfunction countBlocks(\n\tblock,\n\texpandedState,\n\tdraggedClientIds,\n\tisExpandedByDefault\n) {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn 0;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;\n\n\tif ( isExpanded ) {\n\t\treturn (\n\t\t\t1 +\n\t\t\tblock.innerBlocks.reduce(\n\t\t\t\tcountReducer(\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t),\n\t\t\t\t0\n\t\t\t)\n\t\t);\n\t}\n\treturn 1;\n}\nconst countReducer = (\n\texpandedState,\n\tdraggedClientIds,\n\tisExpandedByDefault\n) => ( count, block ) => {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn count;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;\n\tif ( isExpanded && block.innerBlocks.length > 0 ) {\n\t\treturn (\n\t\t\tcount +\n\t\t\tcountBlocks(\n\t\t\t\tblock,\n\t\t\t\texpandedState,\n\t\t\t\tdraggedClientIds,\n\t\t\t\tisExpandedByDefault\n\t\t\t)\n\t\t);\n\t}\n\treturn count + 1;\n};\n\nfunction ListViewBranch( props ) {\n\tconst {\n\t\tblocks,\n\t\tselectBlock,\n\t\tshowBlockMovers,\n\t\tshowNestedBlocks,\n\t\tselectedClientIds,\n\t\tlevel = 1,\n\t\tpath = '',\n\t\tisBranchSelected = false,\n\t\tlistPosition = 0,\n\t\tfixedListWindow,\n\t\texpandNested = true,\n\t} = props;\n\n\tconst {\n\t\texpandedState,\n\t\tdraggedClientIds,\n\t\t__experimentalPersistentListViewFeatures,\n\t} = useListViewContext();\n\n\tconst filteredBlocks = compact( blocks );\n\tconst blockCount = filteredBlocks.length;\n\tlet nextPosition = listPosition;\n\n\treturn (\n\t\t<>\n\t\t\t{ filteredBlocks.map( ( block, index ) => {\n\t\t\t\tconst { clientId, innerBlocks } = block;\n\n\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\tnextPosition += countBlocks(\n\t\t\t\t\t\tfilteredBlocks[ index - 1 ],\n\t\t\t\t\t\texpandedState,\n\t\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\t\texpandNested\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst usesWindowing = __experimentalPersistentListViewFeatures;\n\n\t\t\t\tconst { itemInView } = fixedListWindow;\n\t\t\t\tconst blockInView =\n\t\t\t\t\t! usesWindowing || itemInView( nextPosition );\n\n\t\t\t\tconst position = index + 1;\n\t\t\t\tconst updatedPath =\n\t\t\t\t\tpath.length > 0\n\t\t\t\t\t\t? `${ path }_${ position }`\n\t\t\t\t\t\t: `${ position }`;\n\t\t\t\tconst hasNestedBlocks =\n\t\t\t\t\tshowNestedBlocks && !! innerBlocks && !! innerBlocks.length;\n\n\t\t\t\tconst isExpanded = hasNestedBlocks\n\t\t\t\t\t? expandedState[ clientId ] ?? expandNested\n\t\t\t\t\t: undefined;\n\n\t\t\t\tconst isDragged = !! draggedClientIds?.includes( clientId );\n\n\t\t\t\tconst showBlock = isDragged || blockInView;\n\n\t\t\t\t// Make updates to the selected or dragged blocks synchronous,\n\t\t\t\t// but asynchronous for any other block.\n\t\t\t\tconst isSelected = isClientIdSelected(\n\t\t\t\t\tclientId,\n\t\t\t\t\tselectedClientIds\n\t\t\t\t);\n\t\t\t\tconst isSelectedBranch =\n\t\t\t\t\tisBranchSelected || ( isSelected && hasNestedBlocks );\n\t\t\t\treturn (\n\t\t\t\t\t<AsyncModeProvider key={ clientId } value={ ! isSelected }>\n\t\t\t\t\t\t{ showBlock && (\n\t\t\t\t\t\t\t<ListViewBlock\n\t\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tisDragged={ isDragged }\n\t\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\t\trowCount={ blockCount }\n\t\t\t\t\t\t\t\tsiblingBlockCount={ blockCount }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! showBlock && (\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td className=\"block-editor-list-view-placeholder\" />\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasNestedBlocks && isExpanded && ! isDragged && (\n\t\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\t\tblocks={ innerBlocks }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tshowNestedBlocks={ showNestedBlocks }\n\t\t\t\t\t\t\t\tlevel={ level + 1 }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition + 1 }\n\t\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t\texpandNested={ expandNested }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</AsyncModeProvider>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n\nListViewBranch.defaultProps = {\n\tselectBlock: () => {},\n};\n\nexport default memo( ListViewBranch );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/branch.js"],"names":["countBlocks","block","expandedState","draggedClientIds","isExpandedByDefault","isDragged","includes","clientId","isExpanded","innerBlocks","reduce","countReducer","count","length","ListViewBranch","props","blocks","selectBlock","showBlockMovers","showNestedBlocks","selectedClientIds","level","path","isBranchSelected","listPosition","fixedListWindow","expandNested","__experimentalPersistentListViewFeatures","filteredBlocks","blockCount","nextPosition","map","index","usesWindowing","itemInView","blockInView","position","updatedPath","hasNestedBlocks","undefined","showBlock","isSelected","isSelectedBranch","defaultProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { compact } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { memo } from '@wordpress/element';\nimport { AsyncModeProvider } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport ListViewBlock from './block';\nimport { useListViewContext } from './context';\nimport { isClientIdSelected } from './utils';\n\n/**\n * Given a block, returns the total number of blocks in that subtree. This is used to help determine\n * the list position of a block.\n *\n * When a block is collapsed, we do not count their children as part of that total. In the current drag\n * implementation dragged blocks and their children are not counted.\n *\n * @param {Object} block block tree\n * @param {Object} expandedState state that notes which branches are collapsed\n * @param {Array} draggedClientIds a list of dragged client ids\n * @param {boolean} isExpandedByDefault flag to determine the default fallback expanded state.\n * @return {number} block count\n */\nfunction countBlocks(\n\tblock,\n\texpandedState,\n\tdraggedClientIds,\n\tisExpandedByDefault\n) {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn 0;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;\n\n\tif ( isExpanded ) {\n\t\treturn (\n\t\t\t1 +\n\t\t\tblock.innerBlocks.reduce(\n\t\t\t\tcountReducer(\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t),\n\t\t\t\t0\n\t\t\t)\n\t\t);\n\t}\n\treturn 1;\n}\nconst countReducer = (\n\texpandedState,\n\tdraggedClientIds,\n\tisExpandedByDefault\n) => ( count, block ) => {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn count;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;\n\tif ( isExpanded && block.innerBlocks.length > 0 ) {\n\t\treturn (\n\t\t\tcount +\n\t\t\tcountBlocks(\n\t\t\t\tblock,\n\t\t\t\texpandedState,\n\t\t\t\tdraggedClientIds,\n\t\t\t\tisExpandedByDefault\n\t\t\t)\n\t\t);\n\t}\n\treturn count + 1;\n};\n\nfunction ListViewBranch( props ) {\n\tconst {\n\t\tblocks,\n\t\tselectBlock,\n\t\tshowBlockMovers,\n\t\tshowNestedBlocks,\n\t\tselectedClientIds,\n\t\tlevel = 1,\n\t\tpath = '',\n\t\tisBranchSelected = false,\n\t\tlistPosition = 0,\n\t\tfixedListWindow,\n\t\texpandNested,\n\t} = props;\n\n\tconst {\n\t\texpandedState,\n\t\tdraggedClientIds,\n\t\t__experimentalPersistentListViewFeatures,\n\t} = useListViewContext();\n\n\tconst filteredBlocks = compact( blocks );\n\tconst blockCount = filteredBlocks.length;\n\tlet nextPosition = listPosition;\n\n\treturn (\n\t\t<>\n\t\t\t{ filteredBlocks.map( ( block, index ) => {\n\t\t\t\tconst { clientId, innerBlocks } = block;\n\n\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\tnextPosition += countBlocks(\n\t\t\t\t\t\tfilteredBlocks[ index - 1 ],\n\t\t\t\t\t\texpandedState,\n\t\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\t\texpandNested\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst usesWindowing = __experimentalPersistentListViewFeatures;\n\n\t\t\t\tconst { itemInView } = fixedListWindow;\n\t\t\t\tconst blockInView =\n\t\t\t\t\t! usesWindowing || itemInView( nextPosition );\n\n\t\t\t\tconst position = index + 1;\n\t\t\t\tconst updatedPath =\n\t\t\t\t\tpath.length > 0\n\t\t\t\t\t\t? `${ path }_${ position }`\n\t\t\t\t\t\t: `${ position }`;\n\t\t\t\tconst hasNestedBlocks =\n\t\t\t\t\tshowNestedBlocks && !! innerBlocks && !! innerBlocks.length;\n\n\t\t\t\tconst isExpanded = hasNestedBlocks\n\t\t\t\t\t? expandedState[ clientId ] ?? expandNested\n\t\t\t\t\t: undefined;\n\n\t\t\t\tconst isDragged = !! draggedClientIds?.includes( clientId );\n\n\t\t\t\tconst showBlock = isDragged || blockInView;\n\n\t\t\t\t// Make updates to the selected or dragged blocks synchronous,\n\t\t\t\t// but asynchronous for any other block.\n\t\t\t\tconst isSelected = isClientIdSelected(\n\t\t\t\t\tclientId,\n\t\t\t\t\tselectedClientIds\n\t\t\t\t);\n\t\t\t\tconst isSelectedBranch =\n\t\t\t\t\tisBranchSelected || ( isSelected && hasNestedBlocks );\n\t\t\t\treturn (\n\t\t\t\t\t<AsyncModeProvider key={ clientId } value={ ! isSelected }>\n\t\t\t\t\t\t{ showBlock && (\n\t\t\t\t\t\t\t<ListViewBlock\n\t\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tisDragged={ isDragged }\n\t\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\t\trowCount={ blockCount }\n\t\t\t\t\t\t\t\tsiblingBlockCount={ blockCount }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! showBlock && (\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td className=\"block-editor-list-view-placeholder\" />\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasNestedBlocks && isExpanded && ! isDragged && (\n\t\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\t\tblocks={ innerBlocks }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tshowNestedBlocks={ showNestedBlocks }\n\t\t\t\t\t\t\t\tlevel={ level + 1 }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition + 1 }\n\t\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t\texpandNested={ expandNested }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</AsyncModeProvider>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n\nListViewBranch.defaultProps = {\n\tselectBlock: () => {},\n};\n\nexport default memo( ListViewBranch );\n"]}
@@ -225,6 +225,10 @@ const MediaReplaceFlow = _ref => {
225
225
  }
226
226
  });
227
227
  };
228
+ /**
229
+ * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-replace-flow/README.md
230
+ */
231
+
228
232
 
229
233
  var _default = (0, _compose.compose)([(0, _data.withDispatch)(dispatch => {
230
234
  const {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/media-replace-flow/index.js"],"names":["MediaReplaceFlow","mediaURL","mediaId","mediaIds","allowedTypes","accept","onError","onSelect","onSelectURL","onFilesUpload","noop","onCloseModal","name","createNotice","removeNotice","children","multiple","addToGallery","handleUpload","mediaURLValue","setMediaURLValue","mediaUpload","select","blockEditorStore","getSettings","editMediaButtonRef","errorNoticeID","onUploadError","message","safeMessage","setTimeout","speak","id","isDismissible","selectMedia","media","closeMenu","url","uploadFiles","event","files","target","filesList","onFileChange","openOnArrowDown","keyCode","DOWN","preventDefault","click","onlyAllowsImages","length","every","allowedType","startsWith","gallery","POPOVER_PROPS","isAlternate","isOpen","onToggle","onClose","open","mediaIcon","openFileDialog","upload","current","focus","dispatch","noticesStore"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { noop, uniqueId } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport {\n\tFormFileUpload,\n\tNavigableMenu,\n\tMenuItem,\n\tToolbarButton,\n\tDropdown,\n\twithFilters,\n} from '@wordpress/components';\nimport { useSelect, withDispatch } from '@wordpress/data';\nimport { DOWN } from '@wordpress/keycodes';\nimport { upload, media as mediaIcon } from '@wordpress/icons';\nimport { compose } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport LinkControl from '../link-control';\nimport { store as blockEditorStore } from '../../store';\n\nconst MediaReplaceFlow = ( {\n\tmediaURL,\n\tmediaId,\n\tmediaIds,\n\tallowedTypes,\n\taccept,\n\tonError,\n\tonSelect,\n\tonSelectURL,\n\tonFilesUpload = noop,\n\tonCloseModal = noop,\n\tname = __( 'Replace' ),\n\tcreateNotice,\n\tremoveNotice,\n\tchildren,\n\tmultiple = false,\n\taddToGallery,\n\thandleUpload = true,\n} ) => {\n\tconst [ mediaURLValue, setMediaURLValue ] = useState( mediaURL );\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings().mediaUpload;\n\t}, [] );\n\tconst editMediaButtonRef = useRef();\n\tconst errorNoticeID = uniqueId(\n\t\t'block-editor/media-replace-flow/error-notice/'\n\t);\n\n\tconst onUploadError = ( message ) => {\n\t\tconst safeMessage = stripHTML( message );\n\t\tif ( onError ) {\n\t\t\tonError( safeMessage );\n\t\t\treturn;\n\t\t}\n\t\t// We need to set a timeout for showing the notice\n\t\t// so that VoiceOver and possibly other screen readers\n\t\t// can announce the error afer the toolbar button\n\t\t// regains focus once the upload dialog closes.\n\t\t// Otherwise VO simply skips over the notice and announces\n\t\t// the focused element and the open menu.\n\t\tsetTimeout( () => {\n\t\t\tcreateNotice( 'error', safeMessage, {\n\t\t\t\tspeak: true,\n\t\t\t\tid: errorNoticeID,\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t}, 1000 );\n\t};\n\n\tconst selectMedia = ( media, closeMenu ) => {\n\t\tcloseMenu();\n\t\tsetMediaURLValue( media?.url );\n\t\t// Calling `onSelect` after the state update since it might unmount the component.\n\t\tonSelect( media );\n\t\tspeak( __( 'The media file has been replaced' ) );\n\t\tremoveNotice( errorNoticeID );\n\t};\n\n\tconst uploadFiles = ( event, closeMenu ) => {\n\t\tconst files = event.target.files;\n\t\tif ( ! handleUpload ) {\n\t\t\tcloseMenu();\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesUpload( files );\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tselectMedia( media, closeMenu );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst openOnArrowDown = ( event ) => {\n\t\tif ( event.keyCode === DOWN ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.target.click();\n\t\t}\n\t};\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst gallery = multiple && onlyAllowsImages();\n\n\tconst POPOVER_PROPS = {\n\t\tisAlternate: true,\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\tcontentClassName=\"block-editor-media-replace-flow__options\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tref={ editMediaButtonRef }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t>\n\t\t\t\t\t{ name }\n\t\t\t\t</ToolbarButton>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<NavigableMenu className=\"block-editor-media-replace-flow__media-upload-menu\">\n\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\tgallery={ gallery }\n\t\t\t\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\tvalue={ multiple ? mediaIds : mediaId }\n\t\t\t\t\t\t\tonSelect={ ( media ) =>\n\t\t\t\t\t\t\t\tselectMedia( media, onClose )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\t\t\t\tonClose={ onCloseModal }\n\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t<MenuItem icon={ mediaIcon } onClick={ open }>\n\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\t\t\t\t\tuploadFiles( event, onClose );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\topenFileDialog();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t{ onSelectURL && (\n\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n\t\t\t\t\t\t<form className=\"block-editor-media-flow__url-input\">\n\t\t\t\t\t\t\t<span className=\"block-editor-media-replace-flow__image-url-label\">\n\t\t\t\t\t\t\t\t{ __( 'Current media URL:' ) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\tvalue={ { url: mediaURLValue } }\n\t\t\t\t\t\t\t\tsettings={ [] }\n\t\t\t\t\t\t\t\tshowSuggestions={ false }\n\t\t\t\t\t\t\t\tonChange={ ( { url } ) => {\n\t\t\t\t\t\t\t\t\tsetMediaURLValue( url );\n\t\t\t\t\t\t\t\t\tonSelectURL( url );\n\t\t\t\t\t\t\t\t\teditMediaButtonRef.current.focus();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createNotice, removeNotice } = dispatch( noticesStore );\n\t\treturn {\n\t\t\tcreateNotice,\n\t\t\tremoveNotice,\n\t\t};\n\t} ),\n\twithFilters( 'editor.MediaReplaceFlow' ),\n] )( MediaReplaceFlow );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/media-replace-flow/index.js"],"names":["MediaReplaceFlow","mediaURL","mediaId","mediaIds","allowedTypes","accept","onError","onSelect","onSelectURL","onFilesUpload","noop","onCloseModal","name","createNotice","removeNotice","children","multiple","addToGallery","handleUpload","mediaURLValue","setMediaURLValue","mediaUpload","select","blockEditorStore","getSettings","editMediaButtonRef","errorNoticeID","onUploadError","message","safeMessage","setTimeout","speak","id","isDismissible","selectMedia","media","closeMenu","url","uploadFiles","event","files","target","filesList","onFileChange","openOnArrowDown","keyCode","DOWN","preventDefault","click","onlyAllowsImages","length","every","allowedType","startsWith","gallery","POPOVER_PROPS","isAlternate","isOpen","onToggle","onClose","open","mediaIcon","openFileDialog","upload","current","focus","dispatch","noticesStore"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { noop, uniqueId } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport {\n\tFormFileUpload,\n\tNavigableMenu,\n\tMenuItem,\n\tToolbarButton,\n\tDropdown,\n\twithFilters,\n} from '@wordpress/components';\nimport { useSelect, withDispatch } from '@wordpress/data';\nimport { DOWN } from '@wordpress/keycodes';\nimport { upload, media as mediaIcon } from '@wordpress/icons';\nimport { compose } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport LinkControl from '../link-control';\nimport { store as blockEditorStore } from '../../store';\n\nconst MediaReplaceFlow = ( {\n\tmediaURL,\n\tmediaId,\n\tmediaIds,\n\tallowedTypes,\n\taccept,\n\tonError,\n\tonSelect,\n\tonSelectURL,\n\tonFilesUpload = noop,\n\tonCloseModal = noop,\n\tname = __( 'Replace' ),\n\tcreateNotice,\n\tremoveNotice,\n\tchildren,\n\tmultiple = false,\n\taddToGallery,\n\thandleUpload = true,\n} ) => {\n\tconst [ mediaURLValue, setMediaURLValue ] = useState( mediaURL );\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings().mediaUpload;\n\t}, [] );\n\tconst editMediaButtonRef = useRef();\n\tconst errorNoticeID = uniqueId(\n\t\t'block-editor/media-replace-flow/error-notice/'\n\t);\n\n\tconst onUploadError = ( message ) => {\n\t\tconst safeMessage = stripHTML( message );\n\t\tif ( onError ) {\n\t\t\tonError( safeMessage );\n\t\t\treturn;\n\t\t}\n\t\t// We need to set a timeout for showing the notice\n\t\t// so that VoiceOver and possibly other screen readers\n\t\t// can announce the error afer the toolbar button\n\t\t// regains focus once the upload dialog closes.\n\t\t// Otherwise VO simply skips over the notice and announces\n\t\t// the focused element and the open menu.\n\t\tsetTimeout( () => {\n\t\t\tcreateNotice( 'error', safeMessage, {\n\t\t\t\tspeak: true,\n\t\t\t\tid: errorNoticeID,\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t}, 1000 );\n\t};\n\n\tconst selectMedia = ( media, closeMenu ) => {\n\t\tcloseMenu();\n\t\tsetMediaURLValue( media?.url );\n\t\t// Calling `onSelect` after the state update since it might unmount the component.\n\t\tonSelect( media );\n\t\tspeak( __( 'The media file has been replaced' ) );\n\t\tremoveNotice( errorNoticeID );\n\t};\n\n\tconst uploadFiles = ( event, closeMenu ) => {\n\t\tconst files = event.target.files;\n\t\tif ( ! handleUpload ) {\n\t\t\tcloseMenu();\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesUpload( files );\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tselectMedia( media, closeMenu );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst openOnArrowDown = ( event ) => {\n\t\tif ( event.keyCode === DOWN ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.target.click();\n\t\t}\n\t};\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst gallery = multiple && onlyAllowsImages();\n\n\tconst POPOVER_PROPS = {\n\t\tisAlternate: true,\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\tcontentClassName=\"block-editor-media-replace-flow__options\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tref={ editMediaButtonRef }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t>\n\t\t\t\t\t{ name }\n\t\t\t\t</ToolbarButton>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<NavigableMenu className=\"block-editor-media-replace-flow__media-upload-menu\">\n\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\tgallery={ gallery }\n\t\t\t\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\tvalue={ multiple ? mediaIds : mediaId }\n\t\t\t\t\t\t\tonSelect={ ( media ) =>\n\t\t\t\t\t\t\t\tselectMedia( media, onClose )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\t\t\t\tonClose={ onCloseModal }\n\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t<MenuItem icon={ mediaIcon } onClick={ open }>\n\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\t\t\t\t\tuploadFiles( event, onClose );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\topenFileDialog();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t{ onSelectURL && (\n\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n\t\t\t\t\t\t<form className=\"block-editor-media-flow__url-input\">\n\t\t\t\t\t\t\t<span className=\"block-editor-media-replace-flow__image-url-label\">\n\t\t\t\t\t\t\t\t{ __( 'Current media URL:' ) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\tvalue={ { url: mediaURLValue } }\n\t\t\t\t\t\t\t\tsettings={ [] }\n\t\t\t\t\t\t\t\tshowSuggestions={ false }\n\t\t\t\t\t\t\t\tonChange={ ( { url } ) => {\n\t\t\t\t\t\t\t\t\tsetMediaURLValue( url );\n\t\t\t\t\t\t\t\t\tonSelectURL( url );\n\t\t\t\t\t\t\t\t\teditMediaButtonRef.current.focus();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-replace-flow/README.md\n */\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createNotice, removeNotice } = dispatch( noticesStore );\n\t\treturn {\n\t\t\tcreateNotice,\n\t\t\tremoveNotice,\n\t\t};\n\t} ),\n\twithFilters( 'editor.MediaReplaceFlow' ),\n] )( MediaReplaceFlow );\n"]}
@@ -38,7 +38,7 @@ function MultiSelectionInspector(_ref) {
38
38
  return (0, _element.createElement)("div", {
39
39
  className: "block-editor-multi-selection-inspector__card"
40
40
  }, (0, _element.createElement)(_blockIcon.default, {
41
- icon: _icons.stack,
41
+ icon: _icons.copy,
42
42
  showColors: true
43
43
  }), (0, _element.createElement)("div", {
44
44
  className: "block-editor-multi-selection-inspector__card-content"
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/multi-selection-inspector/index.js"],"names":["MultiSelectionInspector","blocks","words","stack","length","select","getMultiSelectedBlocks","blockEditorStore"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AAbA;AACA;AACA;;AAOA;AACA;AACA;AAIA,SAASA,uBAAT,OAA+C;AAAA,MAAb;AAAEC,IAAAA;AAAF,GAAa;AAC9C,QAAMC,KAAK,GAAG,sBAAW,uBAAWD,MAAX,CAAX,EAAgC,OAAhC,CAAd;AAEA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,kBAAD;AAAW,IAAA,IAAI,EAAGE,YAAlB;AAA0B,IAAA,UAAU;AAApC,IADD,EAEC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACG;AACD;AACA,gBAAI,UAAJ,EAAgB,WAAhB,EAA6BF,MAAM,CAACG,MAApC,CAFC,EAGDH,MAAM,CAACG,MAHN,CADH,CADD,EAQC;AAAK,IAAA,SAAS,EAAC;AAAf,KACG;AACD;AACA,gBAAI,SAAJ,EAAe,UAAf,EAA2BF,KAA3B,CAFC,EAGDA,KAHC,CADH,CARD,CAFD,CADD;AAqBA;;eAEc,sBAAcG,MAAF,IAAc;AACxC,QAAM;AAAEC,IAAAA;AAAF,MAA6BD,MAAM,CAAEE,YAAF,CAAzC;AACA,SAAO;AACNN,IAAAA,MAAM,EAAEK,sBAAsB;AADxB,GAAP;AAGA,CALc,EAKVN,uBALU,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { sprintf, _n } from '@wordpress/i18n';\nimport { withSelect } from '@wordpress/data';\nimport { serialize } from '@wordpress/blocks';\nimport { count as wordCount } from '@wordpress/wordcount';\nimport { stack } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\n\nfunction MultiSelectionInspector( { blocks } ) {\n\tconst words = wordCount( serialize( blocks ), 'words' );\n\n\treturn (\n\t\t<div className=\"block-editor-multi-selection-inspector__card\">\n\t\t\t<BlockIcon icon={ stack } showColors />\n\t\t\t<div className=\"block-editor-multi-selection-inspector__card-content\">\n\t\t\t\t<div className=\"block-editor-multi-selection-inspector__card-title\">\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %d: number of blocks */\n\t\t\t\t\t\t_n( '%d block', '%d blocks', blocks.length ),\n\t\t\t\t\t\tblocks.length\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"block-editor-multi-selection-inspector__card-description\">\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %d: number of words */\n\t\t\t\t\t\t_n( '%d word', '%d words', words ),\n\t\t\t\t\t\twords\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\tconst { getMultiSelectedBlocks } = select( blockEditorStore );\n\treturn {\n\t\tblocks: getMultiSelectedBlocks(),\n\t};\n} )( MultiSelectionInspector );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/multi-selection-inspector/index.js"],"names":["MultiSelectionInspector","blocks","words","copy","length","select","getMultiSelectedBlocks","blockEditorStore"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AAbA;AACA;AACA;;AAOA;AACA;AACA;AAIA,SAASA,uBAAT,OAA+C;AAAA,MAAb;AAAEC,IAAAA;AAAF,GAAa;AAC9C,QAAMC,KAAK,GAAG,sBAAW,uBAAWD,MAAX,CAAX,EAAgC,OAAhC,CAAd;AAEA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,kBAAD;AAAW,IAAA,IAAI,EAAGE,WAAlB;AAAyB,IAAA,UAAU;AAAnC,IADD,EAEC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACG;AACD;AACA,gBAAI,UAAJ,EAAgB,WAAhB,EAA6BF,MAAM,CAACG,MAApC,CAFC,EAGDH,MAAM,CAACG,MAHN,CADH,CADD,EAQC;AAAK,IAAA,SAAS,EAAC;AAAf,KACG;AACD;AACA,gBAAI,SAAJ,EAAe,UAAf,EAA2BF,KAA3B,CAFC,EAGDA,KAHC,CADH,CARD,CAFD,CADD;AAqBA;;eAEc,sBAAcG,MAAF,IAAc;AACxC,QAAM;AAAEC,IAAAA;AAAF,MAA6BD,MAAM,CAAEE,YAAF,CAAzC;AACA,SAAO;AACNN,IAAAA,MAAM,EAAEK,sBAAsB;AADxB,GAAP;AAGA,CALc,EAKVN,uBALU,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { sprintf, _n } from '@wordpress/i18n';\nimport { withSelect } from '@wordpress/data';\nimport { serialize } from '@wordpress/blocks';\nimport { count as wordCount } from '@wordpress/wordcount';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\n\nfunction MultiSelectionInspector( { blocks } ) {\n\tconst words = wordCount( serialize( blocks ), 'words' );\n\n\treturn (\n\t\t<div className=\"block-editor-multi-selection-inspector__card\">\n\t\t\t<BlockIcon icon={ copy } showColors />\n\t\t\t<div className=\"block-editor-multi-selection-inspector__card-content\">\n\t\t\t\t<div className=\"block-editor-multi-selection-inspector__card-title\">\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %d: number of blocks */\n\t\t\t\t\t\t_n( '%d block', '%d blocks', blocks.length ),\n\t\t\t\t\t\tblocks.length\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"block-editor-multi-selection-inspector__card-description\">\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %d: number of words */\n\t\t\t\t\t\t_n( '%d word', '%d words', words ),\n\t\t\t\t\t\twords\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\tconst { getMultiSelectedBlocks } = select( blockEditorStore );\n\treturn {\n\t\tblocks: getMultiSelectedBlocks(),\n\t};\n} )( MultiSelectionInspector );\n"]}
@@ -75,6 +75,8 @@ var _useShortcuts = require("./use-shortcuts");
75
75
 
76
76
  var _useInputEvents = require("./use-input-events");
77
77
 
78
+ var _useFirefoxCompat = require("./use-firefox-compat");
79
+
78
80
  var _formatEdit = _interopRequireDefault(require("./format-edit"));
79
81
 
80
82
  var _utils = require("./utils");
@@ -163,7 +165,7 @@ function RichTextWrapper(_ref, forwardedRef) {
163
165
  let isSelected;
164
166
 
165
167
  if (originalIsSelected === undefined) {
166
- isSelected = selectionStart.clientId === clientId && selectionStart.attributeKey === identifier;
168
+ isSelected = selectionStart.clientId === clientId && selectionEnd.clientId === clientId && selectionStart.attributeKey === identifier;
167
169
  } else if (originalIsSelected) {
168
170
  isSelected = selectionStart.clientId === clientId;
169
171
  }
@@ -203,7 +205,26 @@ function RichTextWrapper(_ref, forwardedRef) {
203
205
  }
204
206
 
205
207
  const onSelectionChange = (0, _element.useCallback)((start, end) => {
206
- selectionChange(clientId, identifier, start, end);
208
+ const selection = {};
209
+ const unset = start === undefined && end === undefined;
210
+
211
+ if (typeof start === 'number' || unset) {
212
+ selection.start = {
213
+ clientId,
214
+ attributeKey: identifier,
215
+ offset: start
216
+ };
217
+ }
218
+
219
+ if (typeof end === 'number' || unset) {
220
+ selection.end = {
221
+ clientId,
222
+ attributeKey: identifier,
223
+ offset: end
224
+ };
225
+ }
226
+
227
+ selectionChange(selection);
207
228
  }, [clientId, identifier]);
208
229
  const {
209
230
  formatTypes,
@@ -356,7 +377,8 @@ function RichTextWrapper(_ref, forwardedRef) {
356
377
  onChange,
357
378
  __unstableAllowPrefixTransformations,
358
379
  formatTypes,
359
- onReplace
380
+ onReplace,
381
+ selectionChange
360
382
  }), (0, _useRemoveBrowserShortcuts.useRemoveBrowserShortcuts)(), (0, _useShortcuts.useShortcuts)(keyboardShortcuts), (0, _useInputEvents.useInputEvents)(inputEvents), (0, _useUndoAutomaticChange.useUndoAutomaticChange)(), (0, _usePasteHandler.usePasteHandler)({
361
383
  isSelected,
362
384
  disableFormats,
@@ -381,7 +403,7 @@ function RichTextWrapper(_ref, forwardedRef) {
381
403
  onChange,
382
404
  disableLineBreaks,
383
405
  onSplitAtEnd
384
- }), anchorRef]),
406
+ }), (0, _useFirefoxCompat.useFirefoxCompat)(), anchorRef]),
385
407
  contentEditable: true,
386
408
  suppressContentEditableWarning: true,
387
409
  className: (0, _classnames.default)('block-editor-rich-text__editable', props.className, 'rich-text'),
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","forwardedRef","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useCaretInFormat } from './use-caret-in-format';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\treturn omit( props, [\n\t\t'__unstableMobileNoFocusOnMount',\n\t\t'deleteEnter',\n\t\t'placeholderTextColor',\n\t\t'textAlign',\n\t\t'selectionColor',\n\t\t'tagsToEliminate',\n\t\t'rootTagsToEliminate',\n\t\t'disableEditingMenu',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'minWidth',\n\t\t'maxWidth',\n\t\t'setRef',\n\t] );\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: originalValue = '',\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } = select(\n\t\t\tblockEditorStore\n\t\t);\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tselectionChange( clientId, identifier, start, end );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst { value, onChange, ref: richTextRef } = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseCaretInFormat( { value } );\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current.focus();\n\t}\n\n\tconst TagName = tagName;\n\tconst content = (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\tanchorRef={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t\tversion: '6.2',\n\t} );\n\n\tconst className = classnames( 'block-editor-rich-text', wrapperClassName );\n\treturn <div className={ className }>{ content }</div>;\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","forwardedRef","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useCaretInFormat } from './use-caret-in-format';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\treturn omit( props, [\n\t\t'__unstableMobileNoFocusOnMount',\n\t\t'deleteEnter',\n\t\t'placeholderTextColor',\n\t\t'textAlign',\n\t\t'selectionColor',\n\t\t'tagsToEliminate',\n\t\t'rootTagsToEliminate',\n\t\t'disableEditingMenu',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'minWidth',\n\t\t'maxWidth',\n\t\t'setRef',\n\t] );\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: originalValue = '',\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } = select(\n\t\t\tblockEditorStore\n\t\t);\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\tselection.start = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tselection.end = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst { value, onChange, ref: richTextRef } = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseCaretInFormat( { value } );\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current.focus();\n\t}\n\n\tconst TagName = tagName;\n\tconst content = (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\tanchorRef={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseFirefoxCompat(),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t\tversion: '6.2',\n\t} );\n\n\tconst className = classnames( 'block-editor-rich-text', wrapperClassName );\n\treturn <div className={ className }>{ content }</div>;\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}