@wordpress/block-editor 12.5.0 → 12.7.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 (442) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +2 -6
  3. package/build/autocompleters/block.js +6 -2
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-draggable/index.js +6 -3
  6. package/build/components/block-draggable/index.js.map +1 -1
  7. package/build/components/block-draggable/index.native.js +2 -2
  8. package/build/components/block-draggable/index.native.js.map +1 -1
  9. package/build/components/block-edit/edit.js +25 -13
  10. package/build/components/block-edit/edit.js.map +1 -1
  11. package/build/components/block-editing-mode/index.js +1 -1
  12. package/build/components/block-editing-mode/index.js.map +1 -1
  13. package/build/components/block-list/block-outline.native.js +14 -18
  14. package/build/components/block-list/block-outline.native.js.map +1 -1
  15. package/build/components/block-list/block.js +4 -2
  16. package/build/components/block-list/block.js.map +1 -1
  17. package/build/components/block-list/block.native.js +21 -42
  18. package/build/components/block-list/block.native.js.map +1 -1
  19. package/build/components/block-list/index.js +2 -4
  20. package/build/components/block-list/index.js.map +1 -1
  21. package/build/components/block-mover/index.native.js +1 -1
  22. package/build/components/block-mover/index.native.js.map +1 -1
  23. package/build/components/block-parent-selector/index.js +6 -21
  24. package/build/components/block-parent-selector/index.js.map +1 -1
  25. package/build/components/block-preview/auto.js +6 -1
  26. package/build/components/block-preview/auto.js.map +1 -1
  27. package/build/components/block-removal-warning-modal/index.js +1 -4
  28. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  29. package/build/components/block-settings/button.native.js +2 -2
  30. package/build/components/block-settings/button.native.js.map +1 -1
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +3 -17
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +7 -5
  34. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
  35. package/build/components/block-toolbar/index.js +4 -33
  36. package/build/components/block-toolbar/index.js.map +1 -1
  37. package/build/components/block-toolbar/index.native.js +62 -3
  38. package/build/components/block-toolbar/index.native.js.map +1 -1
  39. package/build/components/block-toolbar/utils.js +56 -51
  40. package/build/components/block-toolbar/utils.js.map +1 -1
  41. package/build/components/block-tools/block-contextual-toolbar.js +4 -2
  42. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  43. package/build/components/block-variation-picker/index.native.js +10 -20
  44. package/build/components/block-variation-picker/index.native.js.map +1 -1
  45. package/build/components/colors-gradients/control.js +4 -2
  46. package/build/components/colors-gradients/control.js.map +1 -1
  47. package/build/components/editor-styles/index.js +2 -2
  48. package/build/components/editor-styles/index.js.map +1 -1
  49. package/build/components/font-sizes/fluid-utils.js +11 -11
  50. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  51. package/build/components/global-styles/behaviors-panel.js +66 -0
  52. package/build/components/global-styles/behaviors-panel.js.map +1 -0
  53. package/build/components/global-styles/color-panel.js +21 -15
  54. package/build/components/global-styles/color-panel.js.map +1 -1
  55. package/build/components/global-styles/dimensions-panel.js +13 -2
  56. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  57. package/build/components/global-styles/get-block-css-selector.js +4 -8
  58. package/build/components/global-styles/get-block-css-selector.js.map +1 -1
  59. package/build/components/global-styles/hooks.js +131 -27
  60. package/build/components/global-styles/hooks.js.map +1 -1
  61. package/build/components/global-styles/index.js +20 -0
  62. package/build/components/global-styles/index.js.map +1 -1
  63. package/build/components/global-styles/typography-panel.js +18 -3
  64. package/build/components/global-styles/typography-panel.js.map +1 -1
  65. package/build/components/global-styles/typography-utils.js +4 -4
  66. package/build/components/global-styles/typography-utils.js.map +1 -1
  67. package/build/components/global-styles/use-global-styles-output.js +12 -18
  68. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  69. package/build/components/global-styles/utils.js +7 -7
  70. package/build/components/global-styles/utils.js.map +1 -1
  71. package/build/components/iframe/index.js +36 -48
  72. package/build/components/iframe/index.js.map +1 -1
  73. package/build/components/iframe/use-compatibility-styles.js +5 -0
  74. package/build/components/iframe/use-compatibility-styles.js.map +1 -1
  75. package/build/components/index.js +1 -10
  76. package/build/components/index.js.map +1 -1
  77. package/build/components/inner-blocks/index.js +3 -1
  78. package/build/components/inner-blocks/index.js.map +1 -1
  79. package/build/components/inner-blocks/index.native.js +3 -1
  80. package/build/components/inner-blocks/index.native.js.map +1 -1
  81. package/build/components/inner-blocks/use-nested-settings-update.js +33 -7
  82. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  83. package/build/components/inserter/hooks/use-block-types-state.js +6 -2
  84. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  85. package/build/components/inserter/hooks/use-debounced-input.js +5 -7
  86. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -1
  87. package/build/components/inserter/hooks/use-patterns-state.js +3 -2
  88. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  89. package/build/components/inserter/index.js +2 -4
  90. package/build/components/inserter/index.js.map +1 -1
  91. package/build/components/inserter/index.native.js +21 -32
  92. package/build/components/inserter/index.native.js.map +1 -1
  93. package/build/components/inserter/reusable-block-rename-hint.js +23 -3
  94. package/build/components/inserter/reusable-block-rename-hint.js.map +1 -1
  95. package/build/components/inserter/reusable-blocks-tab.js +3 -2
  96. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  97. package/build/components/inserter-list-item/index.js +1 -1
  98. package/build/components/inserter-list-item/index.js.map +1 -1
  99. package/build/components/link-control/index.js +51 -7
  100. package/build/components/link-control/index.js.map +1 -1
  101. package/build/components/link-control/link-preview.js +3 -3
  102. package/build/components/link-control/link-preview.js.map +1 -1
  103. package/build/components/link-control/search-item.js +1 -1
  104. package/build/components/link-control/search-item.js.map +1 -1
  105. package/build/components/list-view/use-list-view-client-ids.js +2 -2
  106. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  107. package/build/components/list-view/use-list-view-drop-zone.js +6 -1
  108. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  109. package/build/components/media-placeholder/index.native.js +65 -31
  110. package/build/components/media-placeholder/index.native.js.map +1 -1
  111. package/build/components/media-replace-flow/index.native.js +15 -3
  112. package/build/components/media-replace-flow/index.native.js.map +1 -1
  113. package/build/components/preview-options/index.js +2 -2
  114. package/build/components/preview-options/index.js.map +1 -1
  115. package/build/components/rich-text/content.js +0 -36
  116. package/build/components/rich-text/content.js.map +1 -1
  117. package/build/components/rich-text/format-edit.js +57 -28
  118. package/build/components/rich-text/format-edit.js.map +1 -1
  119. package/build/components/rich-text/get-rich-text-values.js +111 -0
  120. package/build/components/rich-text/get-rich-text-values.js.map +1 -0
  121. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  122. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  123. package/build/components/spacing-sizes-control/input-controls/axial.js +6 -2
  124. package/build/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  125. package/build/components/spacing-sizes-control/input-controls/separated.js +5 -1
  126. package/build/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  127. package/build/components/spacing-sizes-control/input-controls/single.js +5 -1
  128. package/build/components/spacing-sizes-control/input-controls/single.js.map +1 -1
  129. package/build/components/spacing-sizes-control/utils.js +2 -2
  130. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  131. package/build/components/use-block-display-information/index.js +7 -3
  132. package/build/components/use-block-display-information/index.js.map +1 -1
  133. package/build/components/use-block-drop-zone/index.native.js +49 -8
  134. package/build/components/use-block-drop-zone/index.native.js.map +1 -1
  135. package/build/components/use-setting/index.js +5 -9
  136. package/build/components/use-setting/index.js.map +1 -1
  137. package/build/hooks/behaviors.js +5 -12
  138. package/build/hooks/behaviors.js.map +1 -1
  139. package/build/hooks/border.js +2 -1
  140. package/build/hooks/border.js.map +1 -1
  141. package/build/hooks/margin.js +1 -1
  142. package/build/hooks/margin.js.map +1 -1
  143. package/build/hooks/padding.js +1 -1
  144. package/build/hooks/padding.js.map +1 -1
  145. package/build/hooks/style.js +11 -2
  146. package/build/hooks/style.js.map +1 -1
  147. package/build/hooks/utils.js +1 -7
  148. package/build/hooks/utils.js.map +1 -1
  149. package/build/private-apis.js +10 -3
  150. package/build/private-apis.js.map +1 -1
  151. package/build/store/actions.js +3 -4
  152. package/build/store/actions.js.map +1 -1
  153. package/build/store/private-selectors.js +5 -6
  154. package/build/store/private-selectors.js.map +1 -1
  155. package/build/store/reducer.js +0 -1
  156. package/build/store/reducer.js.map +1 -1
  157. package/build/store/selectors.js +23 -79
  158. package/build/store/selectors.js.map +1 -1
  159. package/build/utils/object.js +38 -2
  160. package/build/utils/object.js.map +1 -1
  161. package/build-module/autocompleters/block.js +7 -3
  162. package/build-module/autocompleters/block.js.map +1 -1
  163. package/build-module/components/block-draggable/index.js +6 -3
  164. package/build-module/components/block-draggable/index.js.map +1 -1
  165. package/build-module/components/block-draggable/index.native.js +2 -2
  166. package/build-module/components/block-draggable/index.native.js.map +1 -1
  167. package/build-module/components/block-edit/edit.js +27 -10
  168. package/build-module/components/block-edit/edit.js.map +1 -1
  169. package/build-module/components/block-editing-mode/index.js +1 -1
  170. package/build-module/components/block-editing-mode/index.js.map +1 -1
  171. package/build-module/components/block-list/block-outline.native.js +14 -18
  172. package/build-module/components/block-list/block-outline.native.js.map +1 -1
  173. package/build-module/components/block-list/block.js +4 -2
  174. package/build-module/components/block-list/block.js.map +1 -1
  175. package/build-module/components/block-list/block.native.js +24 -43
  176. package/build-module/components/block-list/block.native.js.map +1 -1
  177. package/build-module/components/block-list/index.js +2 -3
  178. package/build-module/components/block-list/index.js.map +1 -1
  179. package/build-module/components/block-mover/index.native.js +3 -3
  180. package/build-module/components/block-mover/index.native.js.map +1 -1
  181. package/build-module/components/block-parent-selector/index.js +7 -22
  182. package/build-module/components/block-parent-selector/index.js.map +1 -1
  183. package/build-module/components/block-preview/auto.js +6 -1
  184. package/build-module/components/block-preview/auto.js.map +1 -1
  185. package/build-module/components/block-removal-warning-modal/index.js +1 -4
  186. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  187. package/build-module/components/block-settings/button.native.js +3 -3
  188. package/build-module/components/block-settings/button.native.js.map +1 -1
  189. package/build-module/components/block-settings-menu/block-settings-dropdown.js +4 -18
  190. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  191. package/build-module/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +9 -7
  192. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
  193. package/build-module/components/block-toolbar/index.js +6 -35
  194. package/build-module/components/block-toolbar/index.js.map +1 -1
  195. package/build-module/components/block-toolbar/index.native.js +60 -4
  196. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  197. package/build-module/components/block-toolbar/utils.js +54 -49
  198. package/build-module/components/block-toolbar/utils.js.map +1 -1
  199. package/build-module/components/block-tools/block-contextual-toolbar.js +4 -2
  200. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  201. package/build-module/components/block-variation-picker/index.native.js +13 -23
  202. package/build-module/components/block-variation-picker/index.native.js.map +1 -1
  203. package/build-module/components/colors-gradients/control.js +3 -2
  204. package/build-module/components/colors-gradients/control.js.map +1 -1
  205. package/build-module/components/editor-styles/index.js +2 -2
  206. package/build-module/components/editor-styles/index.js.map +1 -1
  207. package/build-module/components/font-sizes/fluid-utils.js +11 -11
  208. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  209. package/build-module/components/global-styles/behaviors-panel.js +57 -0
  210. package/build-module/components/global-styles/behaviors-panel.js.map +1 -0
  211. package/build-module/components/global-styles/color-panel.js +21 -15
  212. package/build-module/components/global-styles/color-panel.js.map +1 -1
  213. package/build-module/components/global-styles/dimensions-panel.js +13 -2
  214. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  215. package/build-module/components/global-styles/get-block-css-selector.js +4 -8
  216. package/build-module/components/global-styles/get-block-css-selector.js.map +1 -1
  217. package/build-module/components/global-styles/hooks.js +127 -27
  218. package/build-module/components/global-styles/hooks.js.map +1 -1
  219. package/build-module/components/global-styles/index.js +2 -1
  220. package/build-module/components/global-styles/index.js.map +1 -1
  221. package/build-module/components/global-styles/typography-panel.js +18 -3
  222. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  223. package/build-module/components/global-styles/typography-utils.js +4 -4
  224. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  225. package/build-module/components/global-styles/use-global-styles-output.js +13 -18
  226. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  227. package/build-module/components/global-styles/utils.js +6 -6
  228. package/build-module/components/global-styles/utils.js.map +1 -1
  229. package/build-module/components/iframe/index.js +37 -49
  230. package/build-module/components/iframe/index.js.map +1 -1
  231. package/build-module/components/iframe/use-compatibility-styles.js +5 -0
  232. package/build-module/components/iframe/use-compatibility-styles.js.map +1 -1
  233. package/build-module/components/index.js +0 -5
  234. package/build-module/components/index.js.map +1 -1
  235. package/build-module/components/inner-blocks/index.js +3 -1
  236. package/build-module/components/inner-blocks/index.js.map +1 -1
  237. package/build-module/components/inner-blocks/index.native.js +3 -1
  238. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  239. package/build-module/components/inner-blocks/use-nested-settings-update.js +30 -7
  240. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  241. package/build-module/components/inserter/hooks/use-block-types-state.js +7 -3
  242. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  243. package/build-module/components/inserter/hooks/use-debounced-input.js +5 -7
  244. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -1
  245. package/build-module/components/inserter/hooks/use-patterns-state.js +3 -2
  246. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  247. package/build-module/components/inserter/index.js +2 -4
  248. package/build-module/components/inserter/index.js.map +1 -1
  249. package/build-module/components/inserter/index.native.js +22 -33
  250. package/build-module/components/inserter/index.native.js.map +1 -1
  251. package/build-module/components/inserter/reusable-block-rename-hint.js +22 -3
  252. package/build-module/components/inserter/reusable-block-rename-hint.js.map +1 -1
  253. package/build-module/components/inserter/reusable-blocks-tab.js +3 -2
  254. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  255. package/build-module/components/inserter-list-item/index.js +1 -1
  256. package/build-module/components/inserter-list-item/index.js.map +1 -1
  257. package/build-module/components/link-control/index.js +49 -7
  258. package/build-module/components/link-control/index.js.map +1 -1
  259. package/build-module/components/link-control/link-preview.js +3 -3
  260. package/build-module/components/link-control/link-preview.js.map +1 -1
  261. package/build-module/components/link-control/search-item.js +1 -1
  262. package/build-module/components/link-control/search-item.js.map +1 -1
  263. package/build-module/components/list-view/use-list-view-client-ids.js +2 -2
  264. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  265. package/build-module/components/list-view/use-list-view-drop-zone.js +6 -1
  266. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  267. package/build-module/components/media-placeholder/index.native.js +66 -33
  268. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  269. package/build-module/components/media-replace-flow/index.native.js +15 -3
  270. package/build-module/components/media-replace-flow/index.native.js.map +1 -1
  271. package/build-module/components/preview-options/index.js +2 -2
  272. package/build-module/components/preview-options/index.js.map +1 -1
  273. package/build-module/components/rich-text/content.js +1 -36
  274. package/build-module/components/rich-text/content.js.map +1 -1
  275. package/build-module/components/rich-text/format-edit.js +51 -26
  276. package/build-module/components/rich-text/format-edit.js.map +1 -1
  277. package/build-module/components/rich-text/get-rich-text-values.js +100 -0
  278. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -0
  279. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  280. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  281. package/build-module/components/spacing-sizes-control/input-controls/axial.js +7 -3
  282. package/build-module/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  283. package/build-module/components/spacing-sizes-control/input-controls/separated.js +6 -2
  284. package/build-module/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  285. package/build-module/components/spacing-sizes-control/input-controls/single.js +6 -2
  286. package/build-module/components/spacing-sizes-control/input-controls/single.js.map +1 -1
  287. package/build-module/components/spacing-sizes-control/utils.js +2 -2
  288. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  289. package/build-module/components/use-block-display-information/index.js +7 -3
  290. package/build-module/components/use-block-display-information/index.js.map +1 -1
  291. package/build-module/components/use-block-drop-zone/index.native.js +50 -8
  292. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
  293. package/build-module/components/use-setting/index.js +5 -9
  294. package/build-module/components/use-setting/index.js.map +1 -1
  295. package/build-module/hooks/behaviors.js +5 -12
  296. package/build-module/hooks/behaviors.js.map +1 -1
  297. package/build-module/hooks/border.js +2 -1
  298. package/build-module/hooks/border.js.map +1 -1
  299. package/build-module/hooks/margin.js +1 -1
  300. package/build-module/hooks/margin.js.map +1 -1
  301. package/build-module/hooks/padding.js +1 -1
  302. package/build-module/hooks/padding.js.map +1 -1
  303. package/build-module/hooks/style.js +11 -2
  304. package/build-module/hooks/style.js.map +1 -1
  305. package/build-module/hooks/utils.js +2 -7
  306. package/build-module/hooks/utils.js.map +1 -1
  307. package/build-module/private-apis.js +7 -2
  308. package/build-module/private-apis.js.map +1 -1
  309. package/build-module/store/actions.js +4 -5
  310. package/build-module/store/actions.js.map +1 -1
  311. package/build-module/store/private-selectors.js +3 -3
  312. package/build-module/store/private-selectors.js.map +1 -1
  313. package/build-module/store/reducer.js +0 -1
  314. package/build-module/store/reducer.js.map +1 -1
  315. package/build-module/store/selectors.js +20 -75
  316. package/build-module/store/selectors.js.map +1 -1
  317. package/build-module/utils/object.js +34 -2
  318. package/build-module/utils/object.js.map +1 -1
  319. package/build-style/content-rtl.css +2 -1
  320. package/build-style/content.css +2 -1
  321. package/build-style/style-rtl.css +25 -6
  322. package/build-style/style.css +25 -6
  323. package/package.json +32 -32
  324. package/src/autocompleters/block.js +21 -6
  325. package/src/components/block-controls/README.md +89 -0
  326. package/src/components/block-draggable/index.js +13 -4
  327. package/src/components/block-draggable/index.native.js +7 -3
  328. package/src/components/block-draggable/test/index.native.js +2 -57
  329. package/src/components/block-edit/edit.js +26 -9
  330. package/src/components/block-edit/test/edit.js +1 -1
  331. package/src/components/block-editing-mode/index.js +1 -1
  332. package/src/components/block-list/block-outline.native.js +26 -25
  333. package/src/components/block-list/block.js +6 -1
  334. package/src/components/block-list/block.native.js +24 -38
  335. package/src/components/block-list/block.native.scss +18 -40
  336. package/src/components/block-list/index.js +3 -6
  337. package/src/components/block-list/style.native.scss +3 -3
  338. package/src/components/block-list/test/block-invalid-warning.native.js +8 -1
  339. package/src/components/block-mover/index.native.js +3 -3
  340. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +40 -6
  341. package/src/components/block-parent-selector/index.js +30 -42
  342. package/src/components/block-preview/auto.js +8 -1
  343. package/src/components/block-preview/style.scss +2 -1
  344. package/src/components/block-removal-warning-modal/index.js +0 -3
  345. package/src/components/block-settings/button.native.js +12 -6
  346. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -13
  347. package/src/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +15 -10
  348. package/src/components/block-toolbar/index.js +36 -64
  349. package/src/components/block-toolbar/index.native.js +86 -6
  350. package/src/components/{block-mobile-toolbar/test/block-actions-menu.native.js → block-toolbar/test/block-toolbar-menu.native.js} +20 -54
  351. package/src/components/block-toolbar/test/index.native.js +42 -0
  352. package/src/components/block-toolbar/utils.js +57 -45
  353. package/src/components/block-tools/block-contextual-toolbar.js +43 -35
  354. package/src/components/block-tools/style.scss +17 -5
  355. package/src/components/block-variation-picker/index.native.js +52 -72
  356. package/src/components/button-block-appender/styles.native.scss +2 -2
  357. package/src/components/caption/README.md +49 -0
  358. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  359. package/src/components/colors-gradients/control.js +3 -2
  360. package/src/components/editor-styles/index.js +2 -2
  361. package/src/components/font-sizes/fluid-utils.js +17 -17
  362. package/src/components/font-sizes/test/fluid-utils.js +6 -6
  363. package/src/components/global-styles/behaviors-panel.js +71 -0
  364. package/src/components/global-styles/color-panel.js +23 -16
  365. package/src/components/global-styles/dimensions-panel.js +8 -2
  366. package/src/components/global-styles/get-block-css-selector.js +5 -9
  367. package/src/components/global-styles/hooks.js +134 -31
  368. package/src/components/global-styles/index.js +3 -0
  369. package/src/components/global-styles/test/typography-utils.js +6 -6
  370. package/src/components/global-styles/typography-panel.js +17 -5
  371. package/src/components/global-styles/typography-utils.js +4 -4
  372. package/src/components/global-styles/use-global-styles-output.js +36 -18
  373. package/src/components/global-styles/utils.js +17 -7
  374. package/src/components/iframe/index.js +30 -56
  375. package/src/components/iframe/use-compatibility-styles.js +5 -0
  376. package/src/components/index.js +0 -5
  377. package/src/components/inner-blocks/README.md +10 -0
  378. package/src/components/inner-blocks/index.js +4 -0
  379. package/src/components/inner-blocks/index.native.js +4 -0
  380. package/src/components/inner-blocks/use-nested-settings-update.js +32 -5
  381. package/src/components/inserter/hooks/use-block-types-state.js +15 -6
  382. package/src/components/inserter/hooks/use-debounced-input.js +8 -7
  383. package/src/components/inserter/hooks/use-patterns-state.js +2 -1
  384. package/src/components/inserter/index.js +2 -3
  385. package/src/components/inserter/index.native.js +17 -36
  386. package/src/components/inserter/reusable-block-rename-hint.js +18 -1
  387. package/src/components/inserter/reusable-blocks-tab.js +4 -1
  388. package/src/components/inserter/style.native.scss +10 -15
  389. package/src/components/inserter-list-item/index.js +3 -1
  390. package/src/components/link-control/README.md +12 -3
  391. package/src/components/link-control/index.js +47 -7
  392. package/src/components/link-control/link-preview.js +6 -4
  393. package/src/components/link-control/search-item.js +1 -1
  394. package/src/components/link-control/style.scss +11 -3
  395. package/src/components/link-control/test/index.js +28 -1
  396. package/src/components/list-view/use-list-view-client-ids.js +2 -2
  397. package/src/components/list-view/use-list-view-drop-zone.js +5 -1
  398. package/src/components/media-placeholder/index.native.js +108 -59
  399. package/src/components/media-placeholder/styles.native.scss +59 -24
  400. package/src/components/media-replace-flow/index.native.js +12 -3
  401. package/src/components/media-upload/test/index.native.js +1 -0
  402. package/src/components/preview-options/README.md +18 -17
  403. package/src/components/preview-options/index.js +2 -2
  404. package/src/components/rich-text/content.js +1 -46
  405. package/src/components/rich-text/format-edit.js +62 -38
  406. package/src/components/rich-text/get-rich-text-values.js +99 -0
  407. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  408. package/src/components/spacing-sizes-control/input-controls/axial.js +17 -2
  409. package/src/components/spacing-sizes-control/input-controls/separated.js +17 -2
  410. package/src/components/spacing-sizes-control/input-controls/single.js +12 -2
  411. package/src/components/spacing-sizes-control/test/utils.js +9 -1
  412. package/src/components/spacing-sizes-control/utils.js +2 -2
  413. package/src/components/text-transform-control/README.md +44 -0
  414. package/src/components/use-block-display-information/index.js +12 -5
  415. package/src/components/use-block-drop-zone/index.native.js +65 -28
  416. package/src/components/use-setting/index.js +8 -8
  417. package/src/hooks/behaviors.js +10 -16
  418. package/src/hooks/border.js +2 -1
  419. package/src/hooks/margin.js +4 -1
  420. package/src/hooks/padding.js +4 -1
  421. package/src/hooks/style.js +7 -3
  422. package/src/hooks/utils.js +5 -7
  423. package/src/private-apis.js +9 -1
  424. package/src/store/actions.js +23 -30
  425. package/src/store/private-selectors.js +3 -6
  426. package/src/store/reducer.js +0 -1
  427. package/src/store/selectors.js +36 -85
  428. package/src/store/test/actions.js +3 -0
  429. package/src/store/test/private-selectors.js +5 -5
  430. package/src/store/test/reducer.js +14 -7
  431. package/src/store/test/selectors.js +8 -7
  432. package/src/utils/object.js +32 -2
  433. package/src/utils/test/object.js +36 -0
  434. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
  435. package/build/components/block-mobile-toolbar/index.native.js +0 -135
  436. package/build/components/block-mobile-toolbar/index.native.js.map +0 -1
  437. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
  438. package/build-module/components/block-mobile-toolbar/index.native.js +0 -116
  439. package/build-module/components/block-mobile-toolbar/index.native.js.map +0 -1
  440. package/src/components/block-mobile-toolbar/index.native.js +0 -127
  441. package/src/components/block-mobile-toolbar/style.native.scss +0 -16
  442. /package/src/components/{block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap → block-toolbar/test/__snapshots__/block-toolbar-menu.native.js.snap} +0 -0
@@ -46,7 +46,7 @@ export const LinkControlSearchItem = ({
46
46
  isURL = false,
47
47
  shouldShowType = false
48
48
  }) => {
49
- const info = isURL ? __('Press ENTER to add this link') : filterURLForDisplay(safeDecodeURI(suggestion?.url));
49
+ const info = isURL ? __('Press ENTER to add this link') : filterURLForDisplay(safeDecodeURI(suggestion?.url), 24);
50
50
  return createElement(MenuItem, { ...itemProps,
51
51
  info: info,
52
52
  iconPosition: "left",
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/link-control/search-item.js"],"names":["__","MenuItem","TextHighlight","Icon","globe","page","tag","postList","category","file","__unstableStripHTML","stripHTML","safeDecodeURI","filterURLForDisplay","ICONS_MAP","post","post_tag","attachment","SearchItemIcon","isURL","suggestion","icon","type","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","url","getVisualTypeName","title","isFrontPage"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,QAAT,EAAmBC,aAAnB,QAAwC,uBAAxC;AACA,SACCC,IADD,EAECC,KAFD,EAGCC,IAHD,EAICC,GAJD,EAKCC,QALD,EAMCC,QAND,EAOCC,IAPD,QAQO,kBARP;AASA,SAASC,mBAAmB,IAAIC,SAAhC,QAAiD,gBAAjD;AACA,SAASC,aAAT,EAAwBC,mBAAxB,QAAmD,gBAAnD;AAEA,MAAMC,SAAS,GAAG;AACjBC,EAAAA,IAAI,EAAER,QADW;AAEjBF,EAAAA,IAFiB;AAGjBW,EAAAA,QAAQ,EAAEV,GAHO;AAIjBE,EAAAA,QAJiB;AAKjBS,EAAAA,UAAU,EAAER;AALK,CAAlB;;AAQA,SAASS,cAAT,CAAyB;AAAEC,EAAAA,KAAF;AAASC,EAAAA;AAAT,CAAzB,EAAiD;AAChD,MAAIC,IAAI,GAAG,IAAX;;AAEA,MAAKF,KAAL,EAAa;AACZE,IAAAA,IAAI,GAAGjB,KAAP;AACA,GAFD,MAEO,IAAKgB,UAAU,CAACE,IAAX,IAAmBR,SAAxB,EAAoC;AAC1CO,IAAAA,IAAI,GAAGP,SAAS,CAAEM,UAAU,CAACE,IAAb,CAAhB;AACA;;AAED,MAAKD,IAAL,EAAY;AACX,WACC,cAAC,IAAD;AACC,MAAA,SAAS,EAAC,6CADX;AAEC,MAAA,IAAI,EAAGA;AAFR,MADD;AAMA;;AAED,SAAO,IAAP;AACA;;AAED,OAAO,MAAME,qBAAqB,GAAG,CAAE;AACtCC,EAAAA,SADsC;AAEtCJ,EAAAA,UAFsC;AAGtCK,EAAAA,UAHsC;AAItCC,EAAAA,OAJsC;AAKtCP,EAAAA,KAAK,GAAG,KAL8B;AAMtCQ,EAAAA,cAAc,GAAG;AANqB,CAAF,KAO9B;AACN,QAAMC,IAAI,GAAGT,KAAK,GACfnB,EAAE,CAAE,8BAAF,CADa,GAEfa,mBAAmB,CAAED,aAAa,CAAEQ,UAAU,EAAES,GAAd,CAAf,CAFtB;AAIA,SACC,cAAC,QAAD,OACML,SADN;AAEC,IAAA,IAAI,EAAGI,IAFR;AAGC,IAAA,YAAY,EAAC,MAHd;AAIC,IAAA,IAAI,EACH,cAAC,cAAD;AAAgB,MAAA,UAAU,EAAGR,UAA7B;AAA0C,MAAA,KAAK,EAAGD;AAAlD,MALF;AAOC,IAAA,OAAO,EAAGO,OAPX;AAQC,IAAA,QAAQ,EAAGC,cAAc,IAAIG,iBAAiB,CAAEV,UAAF,CAR/C;AASC,IAAA,SAAS,EAAC;AATX,KAWC,cAAC,aAAD,CACC;AADD;AAEC,IAAA,IAAI,EAAGT,SAAS,CAAES,UAAU,CAACW,KAAb,CAFjB;AAGC,IAAA,SAAS,EAAGN;AAHb,IAXD,CADD;AAmBA,CA/BM;;AAiCP,SAASK,iBAAT,CAA4BV,UAA5B,EAAyC;AACxC,MAAKA,UAAU,CAACY,WAAhB,EAA8B;AAC7B,WAAO,YAAP;AACA,GAHuC,CAKxC;;;AACA,SAAOZ,UAAU,CAACE,IAAX,KAAoB,UAApB,GAAiC,KAAjC,GAAyCF,UAAU,CAACE,IAA3D;AACA;;AAED,eAAeC,qBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay } from '@wordpress/url';\n\nconst ICONS_MAP = {\n\tpost: postList,\n\tpage,\n\tpost_tag: tag,\n\tcategory,\n\tattachment: file,\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in ICONS_MAP ) {\n\t\ticon = ICONS_MAP[ suggestion.type ];\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: filterURLForDisplay( safeDecodeURI( suggestion?.url ) );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn 'front page';\n\t}\n\n\t// Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.\n\treturn suggestion.type === 'post_tag' ? 'tag' : suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/link-control/search-item.js"],"names":["__","MenuItem","TextHighlight","Icon","globe","page","tag","postList","category","file","__unstableStripHTML","stripHTML","safeDecodeURI","filterURLForDisplay","ICONS_MAP","post","post_tag","attachment","SearchItemIcon","isURL","suggestion","icon","type","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","url","getVisualTypeName","title","isFrontPage"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,QAAT,EAAmBC,aAAnB,QAAwC,uBAAxC;AACA,SACCC,IADD,EAECC,KAFD,EAGCC,IAHD,EAICC,GAJD,EAKCC,QALD,EAMCC,QAND,EAOCC,IAPD,QAQO,kBARP;AASA,SAASC,mBAAmB,IAAIC,SAAhC,QAAiD,gBAAjD;AACA,SAASC,aAAT,EAAwBC,mBAAxB,QAAmD,gBAAnD;AAEA,MAAMC,SAAS,GAAG;AACjBC,EAAAA,IAAI,EAAER,QADW;AAEjBF,EAAAA,IAFiB;AAGjBW,EAAAA,QAAQ,EAAEV,GAHO;AAIjBE,EAAAA,QAJiB;AAKjBS,EAAAA,UAAU,EAAER;AALK,CAAlB;;AAQA,SAASS,cAAT,CAAyB;AAAEC,EAAAA,KAAF;AAASC,EAAAA;AAAT,CAAzB,EAAiD;AAChD,MAAIC,IAAI,GAAG,IAAX;;AAEA,MAAKF,KAAL,EAAa;AACZE,IAAAA,IAAI,GAAGjB,KAAP;AACA,GAFD,MAEO,IAAKgB,UAAU,CAACE,IAAX,IAAmBR,SAAxB,EAAoC;AAC1CO,IAAAA,IAAI,GAAGP,SAAS,CAAEM,UAAU,CAACE,IAAb,CAAhB;AACA;;AAED,MAAKD,IAAL,EAAY;AACX,WACC,cAAC,IAAD;AACC,MAAA,SAAS,EAAC,6CADX;AAEC,MAAA,IAAI,EAAGA;AAFR,MADD;AAMA;;AAED,SAAO,IAAP;AACA;;AAED,OAAO,MAAME,qBAAqB,GAAG,CAAE;AACtCC,EAAAA,SADsC;AAEtCJ,EAAAA,UAFsC;AAGtCK,EAAAA,UAHsC;AAItCC,EAAAA,OAJsC;AAKtCP,EAAAA,KAAK,GAAG,KAL8B;AAMtCQ,EAAAA,cAAc,GAAG;AANqB,CAAF,KAO9B;AACN,QAAMC,IAAI,GAAGT,KAAK,GACfnB,EAAE,CAAE,8BAAF,CADa,GAEfa,mBAAmB,CAAED,aAAa,CAAEQ,UAAU,EAAES,GAAd,CAAf,EAAoC,EAApC,CAFtB;AAIA,SACC,cAAC,QAAD,OACML,SADN;AAEC,IAAA,IAAI,EAAGI,IAFR;AAGC,IAAA,YAAY,EAAC,MAHd;AAIC,IAAA,IAAI,EACH,cAAC,cAAD;AAAgB,MAAA,UAAU,EAAGR,UAA7B;AAA0C,MAAA,KAAK,EAAGD;AAAlD,MALF;AAOC,IAAA,OAAO,EAAGO,OAPX;AAQC,IAAA,QAAQ,EAAGC,cAAc,IAAIG,iBAAiB,CAAEV,UAAF,CAR/C;AASC,IAAA,SAAS,EAAC;AATX,KAWC,cAAC,aAAD,CACC;AADD;AAEC,IAAA,IAAI,EAAGT,SAAS,CAAES,UAAU,CAACW,KAAb,CAFjB;AAGC,IAAA,SAAS,EAAGN;AAHb,IAXD,CADD;AAmBA,CA/BM;;AAiCP,SAASK,iBAAT,CAA4BV,UAA5B,EAAyC;AACxC,MAAKA,UAAU,CAACY,WAAhB,EAA8B;AAC7B,WAAO,YAAP;AACA,GAHuC,CAKxC;;;AACA,SAAOZ,UAAU,CAACE,IAAX,KAAoB,UAApB,GAAiC,KAAjC,GAAyCF,UAAU,CAACE,IAA3D;AACA;;AAED,eAAeC,qBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay } from '@wordpress/url';\n\nconst ICONS_MAP = {\n\tpost: postList,\n\tpage,\n\tpost_tag: tag,\n\tcategory,\n\tattachment: file,\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in ICONS_MAP ) {\n\t\ticon = ICONS_MAP[ suggestion.type ];\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: filterURLForDisplay( safeDecodeURI( suggestion?.url ), 24 );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn 'front page';\n\t}\n\n\t// Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.\n\treturn suggestion.type === 'post_tag' ? 'tag' : suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n"]}
@@ -16,12 +16,12 @@ export default function useListViewClientIds({
16
16
  const {
17
17
  getDraggedBlockClientIds,
18
18
  getSelectedBlockClientIds,
19
- getListViewClientIdsTree
19
+ getEnabledClientIdsTree
20
20
  } = unlock(select(blockEditorStore));
21
21
  return {
22
22
  selectedClientIds: getSelectedBlockClientIds(),
23
23
  draggedClientIds: getDraggedBlockClientIds(),
24
- clientIdsTree: blocks !== null && blocks !== void 0 ? blocks : getListViewClientIdsTree(rootClientId)
24
+ clientIdsTree: blocks !== null && blocks !== void 0 ? blocks : getEnabledClientIdsTree(rootClientId)
25
25
  };
26
26
  }, [blocks, rootClientId]);
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/use-list-view-client-ids.js"],"names":["useSelect","store","blockEditorStore","unlock","useListViewClientIds","blocks","rootClientId","select","getDraggedBlockClientIds","getSelectedBlockClientIds","getListViewClientIdsTree","selectedClientIds","draggedClientIds","clientIdsTree"],"mappings":"AAAA;AACA;AACA;AAEA,SAASA,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,MAAT,QAAuB,mBAAvB;AAEA,eAAe,SAASC,oBAAT,CAA+B;AAAEC,EAAAA,MAAF;AAAUC,EAAAA;AAAV,CAA/B,EAA0D;AACxE,SAAON,SAAS,CACbO,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,wBADK;AAELC,MAAAA,yBAFK;AAGLC,MAAAA;AAHK,QAIFP,MAAM,CAAEI,MAAM,CAAEL,gBAAF,CAAR,CAJV;AAMA,WAAO;AACNS,MAAAA,iBAAiB,EAAEF,yBAAyB,EADtC;AAENG,MAAAA,gBAAgB,EAAEJ,wBAAwB,EAFpC;AAGNK,MAAAA,aAAa,EACZR,MADY,aACZA,MADY,cACZA,MADY,GACFK,wBAAwB,CAAEJ,YAAF;AAJ7B,KAAP;AAMA,GAdc,EAef,CAAED,MAAF,EAAUC,YAAV,CAfe,CAAhB;AAiBA","sourcesContent":["/**\n * WordPress dependencies\n */\n\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport default function useListViewClientIds( { blocks, rootClientId } ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetDraggedBlockClientIds,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetListViewClientIdsTree,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\treturn {\n\t\t\t\tselectedClientIds: getSelectedBlockClientIds(),\n\t\t\t\tdraggedClientIds: getDraggedBlockClientIds(),\n\t\t\t\tclientIdsTree:\n\t\t\t\t\tblocks ?? getListViewClientIdsTree( rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ blocks, rootClientId ]\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/use-list-view-client-ids.js"],"names":["useSelect","store","blockEditorStore","unlock","useListViewClientIds","blocks","rootClientId","select","getDraggedBlockClientIds","getSelectedBlockClientIds","getEnabledClientIdsTree","selectedClientIds","draggedClientIds","clientIdsTree"],"mappings":"AAAA;AACA;AACA;AAEA,SAASA,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,MAAT,QAAuB,mBAAvB;AAEA,eAAe,SAASC,oBAAT,CAA+B;AAAEC,EAAAA,MAAF;AAAUC,EAAAA;AAAV,CAA/B,EAA0D;AACxE,SAAON,SAAS,CACbO,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,wBADK;AAELC,MAAAA,yBAFK;AAGLC,MAAAA;AAHK,QAIFP,MAAM,CAAEI,MAAM,CAAEL,gBAAF,CAAR,CAJV;AAMA,WAAO;AACNS,MAAAA,iBAAiB,EAAEF,yBAAyB,EADtC;AAENG,MAAAA,gBAAgB,EAAEJ,wBAAwB,EAFpC;AAGNK,MAAAA,aAAa,EACZR,MADY,aACZA,MADY,cACZA,MADY,GACFK,uBAAuB,CAAEJ,YAAF;AAJ5B,KAAP;AAMA,GAdc,EAef,CAAED,MAAF,EAAUC,YAAV,CAfe,CAAhB;AAiBA","sourcesContent":["/**\n * WordPress dependencies\n */\n\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport default function useListViewClientIds( { blocks, rootClientId } ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetDraggedBlockClientIds,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetEnabledClientIdsTree,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\treturn {\n\t\t\t\tselectedClientIds: getSelectedBlockClientIds(),\n\t\t\t\tdraggedClientIds: getDraggedBlockClientIds(),\n\t\t\t\tclientIdsTree:\n\t\t\t\t\tblocks ?? getEnabledClientIdsTree( rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ blocks, rootClientId ]\n\t);\n}\n"]}
@@ -368,7 +368,12 @@ export default function useListViewDropZone({
368
368
  }, [canInsertBlocks, draggedBlockClientIds, getBlockCount, getBlockIndex, getBlockRootClientId, rtl]), 200);
369
369
  const ref = useDropZone({
370
370
  dropZoneElement,
371
- onDrop: onBlockDrop,
371
+
372
+ onDrop(event) {
373
+ if (target) {
374
+ onBlockDrop(event);
375
+ }
376
+ },
372
377
 
373
378
  onDragLeave() {
374
379
  throttled.cancel();
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/use-list-view-drop-zone.js"],"names":["useSelect","useState","useCallback","useThrottle","__experimentalUseDropZone","useDropZone","isRTL","getDistanceToNearestEdge","isPointContainedByRect","useOnBlockDrop","store","blockEditorStore","NESTING_LEVEL_INDENTATION","isUpGesture","point","rect","nestingLevel","rtl","blockIndentPosition","right","left","x","getDesiredRelativeParentLevel","distanceBetweenPointAndBlockIndentPosition","desiredParentLevel","Math","round","abs","getCandidateBlockParents","candidateBlockData","blocksData","candidateBlockParents","currentBlockData","push","find","blockData","clientId","rootClientId","getNextNonDraggedBlock","index","nextBlockData","isDraggedBlock","isNestingGesture","isNestingHorizontalGesture","y","bottom","ALLOWED_DROP_EDGES","getListViewDropTarget","position","candidateEdge","candidateDistance","candidateRect","candidateBlockIndex","i","length","element","getBoundingClientRect","distance","edge","isCursorWithinBlock","undefined","indexOf","previousBlockData","isDraggingBelow","canInsertDraggedBlocksAsChild","innerBlockCount","isExpanded","newBlockIndex","blockIndex","dropPosition","nextBlock","currentLevel","nextLevel","desiredRelativeLevel","targetParentIndex","max","min","canInsertDraggedBlocksAsSibling","offset","useListViewDropZone","dropZoneElement","getBlockRootClientId","getBlockIndex","getBlockCount","getDraggedBlockClientIds","canInsertBlocks","target","setTarget","targetRootClientId","targetBlockIndex","onBlockDrop","draggedBlockClientIds","throttled","event","currentTarget","clientX","clientY","isBlockDrag","blockElements","Array","from","querySelectorAll","map","blockElement","dataset","block","expanded","classList","contains","parseInt","getAttribute","newTarget","ref","onDrop","onDragLeave","cancel","onDragOver","onDragEnd"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useState, useCallback } from '@wordpress/element';\nimport {\n\tuseThrottle,\n\t__experimentalUseDropZone as useDropZone,\n} from '@wordpress/compose';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetDistanceToNearestEdge,\n\tisPointContainedByRect,\n} from '../../utils/math';\nimport useOnBlockDrop from '../use-on-block-drop';\nimport { store as blockEditorStore } from '../../store';\n\n/** @typedef {import('../../utils/math').WPPoint} WPPoint */\n\n/**\n * The type of a drag event.\n *\n * @typedef {'default'|'file'|'html'} WPDragEventType\n */\n\n/**\n * An object representing data for blocks in the DOM used by drag and drop.\n *\n * @typedef {Object} WPListViewDropZoneBlock\n * @property {string} clientId The client id for the block.\n * @property {string} rootClientId The root client id for the block.\n * @property {number} blockIndex The block's index.\n * @property {Element} element The DOM element representing the block.\n * @property {number} innerBlockCount The number of inner blocks the block has.\n * @property {boolean} isDraggedBlock Whether the block is currently being dragged.\n * @property {boolean} isExpanded Whether the block is expanded in the UI.\n * @property {boolean} canInsertDraggedBlocksAsSibling Whether the dragged block can be a sibling of this block.\n * @property {boolean} canInsertDraggedBlocksAsChild Whether the dragged block can be a child of this block.\n */\n\n/**\n * An array representing data for blocks in the DOM used by drag and drop.\n *\n * @typedef {WPListViewDropZoneBlock[]} WPListViewDropZoneBlocks\n */\n\n/**\n * An object containing details of a drop target.\n *\n * @typedef {Object} WPListViewDropZoneTarget\n * @property {string} blockIndex The insertion index.\n * @property {string} rootClientId The root client id for the block.\n * @property {string|undefined} clientId The client id for the block.\n * @property {'top'|'bottom'|'inside'} dropPosition The position relative to the block that the user is dropping to.\n * 'inside' refers to nesting as an inner block.\n */\n\n// When the indentation level, the corresponding left margin in `style.scss`\n// must be updated as well to ensure the drop zone is aligned with the indentation.\nexport const NESTING_LEVEL_INDENTATION = 28;\n\n/**\n * Determines whether the user is positioning the dragged block to be\n * moved up to a parent level.\n *\n * Determined based on nesting level indentation of the current block.\n *\n * @param {WPPoint} point The point representing the cursor position when dragging.\n * @param {DOMRect} rect The rectangle.\n * @param {number} nestingLevel The nesting level of the block.\n * @param {boolean} rtl Whether the editor is in RTL mode.\n * @return {boolean} Whether the gesture is an upward gesture.\n */\nfunction isUpGesture( point, rect, nestingLevel = 1, rtl = false ) {\n\t// If the block is nested, and the user is dragging to the bottom\n\t// left of the block (or bottom right in RTL languages), then it is an upward gesture.\n\tconst blockIndentPosition = rtl\n\t\t? rect.right - nestingLevel * NESTING_LEVEL_INDENTATION\n\t\t: rect.left + nestingLevel * NESTING_LEVEL_INDENTATION;\n\treturn rtl ? point.x > blockIndentPosition : point.x < blockIndentPosition;\n}\n\n/**\n * Returns how many nesting levels up the user is attempting to drag to.\n *\n * The relative parent level is calculated based on how far\n * the cursor is from the provided nesting level (e.g. of a candidate block\n * that the user is hovering over). The nesting level is considered \"desired\"\n * because it is not guaranteed that the user will be able to drag to the desired level.\n *\n * The returned integer can be used to access an ascending array\n * of parent blocks, where the first item is the block the user\n * is hovering over, and the last item is the root block.\n *\n * @param {WPPoint} point The point representing the cursor position when dragging.\n * @param {DOMRect} rect The rectangle.\n * @param {number} nestingLevel The nesting level of the block.\n * @param {boolean} rtl Whether the editor is in RTL mode.\n * @return {number} The desired relative parent level.\n */\nfunction getDesiredRelativeParentLevel(\n\tpoint,\n\trect,\n\tnestingLevel = 1,\n\trtl = false\n) {\n\t// In RTL languages, the block indent position is from the right edge of the block.\n\t// In LTR languages, the block indent position is from the left edge of the block.\n\tconst blockIndentPosition = rtl\n\t\t? rect.right - nestingLevel * NESTING_LEVEL_INDENTATION\n\t\t: rect.left + nestingLevel * NESTING_LEVEL_INDENTATION;\n\n\tconst distanceBetweenPointAndBlockIndentPosition = rtl\n\t\t? blockIndentPosition - point.x\n\t\t: point.x - blockIndentPosition;\n\n\tconst desiredParentLevel = Math.round(\n\t\tdistanceBetweenPointAndBlockIndentPosition / NESTING_LEVEL_INDENTATION\n\t);\n\n\treturn Math.abs( desiredParentLevel );\n}\n\n/**\n * Returns an array of the parent blocks of the block the user is dropping to.\n *\n * @param {WPListViewDropZoneBlock} candidateBlockData The block the user is dropping to.\n * @param {WPListViewDropZoneBlocks} blocksData Data about the blocks in list view.\n * @return {WPListViewDropZoneBlocks} An array of block parents, including the block the user is dropping to.\n */\nfunction getCandidateBlockParents( candidateBlockData, blocksData ) {\n\tconst candidateBlockParents = [];\n\tlet currentBlockData = candidateBlockData;\n\n\twhile ( currentBlockData ) {\n\t\tcandidateBlockParents.push( { ...currentBlockData } );\n\t\tcurrentBlockData = blocksData.find(\n\t\t\t( blockData ) =>\n\t\t\t\tblockData.clientId === currentBlockData.rootClientId\n\t\t);\n\t}\n\n\treturn candidateBlockParents;\n}\n\n/**\n * Given a list of blocks data and a block index, return the next non-dragged\n * block. This is used to determine the block that the user is dropping to,\n * while ignoring the dragged block.\n *\n * @param {WPListViewDropZoneBlocks} blocksData Data about the blocks in list view.\n * @param {number} index The index to begin searching from.\n * @return {WPListViewDropZoneBlock | undefined} The next non-dragged block.\n */\nfunction getNextNonDraggedBlock( blocksData, index ) {\n\tconst nextBlockData = blocksData[ index + 1 ];\n\tif ( nextBlockData && nextBlockData.isDraggedBlock ) {\n\t\treturn getNextNonDraggedBlock( blocksData, index + 1 );\n\t}\n\n\treturn nextBlockData;\n}\n\n/**\n * Determines whether the user positioning the dragged block to nest as an\n * inner block.\n *\n * Determined based on nesting level indentation of the current block, plus\n * the indentation of the next level of nesting. The vertical position of the\n * cursor must also be within the block.\n *\n * @param {WPPoint} point The point representing the cursor position when dragging.\n * @param {DOMRect} rect The rectangle.\n * @param {number} nestingLevel The nesting level of the block.\n * @param {boolean} rtl Whether the editor is in RTL mode.\n */\nfunction isNestingGesture( point, rect, nestingLevel = 1, rtl = false ) {\n\tconst blockIndentPosition = rtl\n\t\t? rect.right - nestingLevel * NESTING_LEVEL_INDENTATION\n\t\t: rect.left + nestingLevel * NESTING_LEVEL_INDENTATION;\n\n\tconst isNestingHorizontalGesture = rtl\n\t\t? point.x < blockIndentPosition - NESTING_LEVEL_INDENTATION\n\t\t: point.x > blockIndentPosition + NESTING_LEVEL_INDENTATION;\n\n\treturn isNestingHorizontalGesture && point.y < rect.bottom;\n}\n\n// Block navigation is always a vertical list, so only allow dropping\n// to the above or below a block.\nconst ALLOWED_DROP_EDGES = [ 'top', 'bottom' ];\n\n/**\n * Given blocks data and the cursor position, compute the drop target.\n *\n * @param {WPListViewDropZoneBlocks} blocksData Data about the blocks in list view.\n * @param {WPPoint} position The point representing the cursor position when dragging.\n * @param {boolean} rtl Whether the editor is in RTL mode.\n *\n * @return {WPListViewDropZoneTarget | undefined} An object containing data about the drop target.\n */\nexport function getListViewDropTarget( blocksData, position, rtl = false ) {\n\tlet candidateEdge;\n\tlet candidateBlockData;\n\tlet candidateDistance;\n\tlet candidateRect;\n\tlet candidateBlockIndex;\n\n\tfor ( let i = 0; i < blocksData.length; i++ ) {\n\t\tconst blockData = blocksData[ i ];\n\t\tif ( blockData.isDraggedBlock ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst rect = blockData.element.getBoundingClientRect();\n\t\tconst [ distance, edge ] = getDistanceToNearestEdge(\n\t\t\tposition,\n\t\t\trect,\n\t\t\tALLOWED_DROP_EDGES\n\t\t);\n\n\t\tconst isCursorWithinBlock = isPointContainedByRect( position, rect );\n\t\tif (\n\t\t\tcandidateDistance === undefined ||\n\t\t\tdistance < candidateDistance ||\n\t\t\tisCursorWithinBlock\n\t\t) {\n\t\t\tcandidateDistance = distance;\n\n\t\t\tconst index = blocksData.indexOf( blockData );\n\t\t\tconst previousBlockData = blocksData[ index - 1 ];\n\n\t\t\t// If dragging near the top of a block and the preceding block\n\t\t\t// is at the same level, use the preceding block as the candidate\n\t\t\t// instead, as later it makes determining a nesting drop easier.\n\t\t\tif (\n\t\t\t\tedge === 'top' &&\n\t\t\t\tpreviousBlockData &&\n\t\t\t\tpreviousBlockData.rootClientId === blockData.rootClientId &&\n\t\t\t\t! previousBlockData.isDraggedBlock\n\t\t\t) {\n\t\t\t\tcandidateBlockData = previousBlockData;\n\t\t\t\tcandidateEdge = 'bottom';\n\t\t\t\tcandidateRect =\n\t\t\t\t\tpreviousBlockData.element.getBoundingClientRect();\n\t\t\t\tcandidateBlockIndex = index - 1;\n\t\t\t} else {\n\t\t\t\tcandidateBlockData = blockData;\n\t\t\t\tcandidateEdge = edge;\n\t\t\t\tcandidateRect = rect;\n\t\t\t\tcandidateBlockIndex = index;\n\t\t\t}\n\n\t\t\t// If the mouse position is within the block, break early\n\t\t\t// as the user would intend to drop either before or after\n\t\t\t// this block.\n\t\t\t//\n\t\t\t// This solves an issue where some rows in the list view\n\t\t\t// tree overlap slightly due to sub-pixel rendering.\n\t\t\tif ( isCursorWithinBlock ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( ! candidateBlockData ) {\n\t\treturn;\n\t}\n\n\tconst candidateBlockParents = getCandidateBlockParents(\n\t\tcandidateBlockData,\n\t\tblocksData\n\t);\n\n\tconst isDraggingBelow = candidateEdge === 'bottom';\n\n\t// If the user is dragging towards the bottom of the block check whether\n\t// they might be trying to nest the block as a child.\n\t// If the block already has inner blocks, and is expanded, this should be treated\n\t// as nesting since the next block in the tree will be the first child.\n\t// However, if the block is collapsed, dragging beneath the block should\n\t// still be allowed, as the next visible block in the tree will be a sibling.\n\tif (\n\t\tisDraggingBelow &&\n\t\tcandidateBlockData.canInsertDraggedBlocksAsChild &&\n\t\t( ( candidateBlockData.innerBlockCount > 0 &&\n\t\t\tcandidateBlockData.isExpanded ) ||\n\t\t\tisNestingGesture(\n\t\t\t\tposition,\n\t\t\t\tcandidateRect,\n\t\t\t\tcandidateBlockParents.length,\n\t\t\t\trtl\n\t\t\t) )\n\t) {\n\t\t// If the block is expanded, insert the block as the first child.\n\t\t// Otherwise, for collapsed blocks, insert the block as the last child.\n\t\tconst newBlockIndex = candidateBlockData.isExpanded\n\t\t\t? 0\n\t\t\t: candidateBlockData.innerBlockCount || 0;\n\n\t\treturn {\n\t\t\trootClientId: candidateBlockData.clientId,\n\t\t\tblockIndex: newBlockIndex,\n\t\t\tdropPosition: 'inside',\n\t\t};\n\t}\n\n\t// If the user is dragging towards the bottom of the block check whether\n\t// they might be trying to move the block to be at a parent level.\n\tif (\n\t\tisDraggingBelow &&\n\t\tcandidateBlockData.rootClientId &&\n\t\tisUpGesture(\n\t\t\tposition,\n\t\t\tcandidateRect,\n\t\t\tcandidateBlockParents.length,\n\t\t\trtl\n\t\t)\n\t) {\n\t\tconst nextBlock = getNextNonDraggedBlock(\n\t\t\tblocksData,\n\t\t\tcandidateBlockIndex\n\t\t);\n\t\tconst currentLevel = candidateBlockData.nestingLevel;\n\t\tconst nextLevel = nextBlock ? nextBlock.nestingLevel : 1;\n\n\t\tif ( currentLevel && nextLevel ) {\n\t\t\t// Determine the desired relative level of the block to be dropped.\n\t\t\tconst desiredRelativeLevel = getDesiredRelativeParentLevel(\n\t\t\t\tposition,\n\t\t\t\tcandidateRect,\n\t\t\t\tcandidateBlockParents.length,\n\t\t\t\trtl\n\t\t\t);\n\n\t\t\tconst targetParentIndex = Math.max(\n\t\t\t\tMath.min( desiredRelativeLevel, currentLevel - nextLevel ),\n\t\t\t\t0\n\t\t\t);\n\n\t\t\tif ( candidateBlockParents[ targetParentIndex ] ) {\n\t\t\t\t// Default to the block index of the candidate block.\n\t\t\t\tlet newBlockIndex = candidateBlockData.blockIndex;\n\n\t\t\t\t// If the next block is at the same level, use that as the default\n\t\t\t\t// block index. This ensures that the block is dropped in the correct\n\t\t\t\t// position when dragging to the bottom of a block.\n\t\t\t\tif (\n\t\t\t\t\tcandidateBlockParents[ targetParentIndex ].nestingLevel ===\n\t\t\t\t\tnextBlock?.nestingLevel\n\t\t\t\t) {\n\t\t\t\t\tnewBlockIndex = nextBlock?.blockIndex;\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, search from the current block index back\n\t\t\t\t\t// to find the last block index within the same target parent.\n\t\t\t\t\tfor ( let i = candidateBlockIndex; i >= 0; i-- ) {\n\t\t\t\t\t\tconst blockData = blocksData[ i ];\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tblockData.rootClientId ===\n\t\t\t\t\t\t\tcandidateBlockParents[ targetParentIndex ]\n\t\t\t\t\t\t\t\t.rootClientId\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnewBlockIndex = blockData.blockIndex + 1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\trootClientId:\n\t\t\t\t\t\tcandidateBlockParents[ targetParentIndex ].rootClientId,\n\t\t\t\t\tclientId: candidateBlockData.clientId,\n\t\t\t\t\tblockIndex: newBlockIndex,\n\t\t\t\t\tdropPosition: candidateEdge,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\t// If dropping as a sibling, but block cannot be inserted in\n\t// this context, return early.\n\tif ( ! candidateBlockData.canInsertDraggedBlocksAsSibling ) {\n\t\treturn;\n\t}\n\n\tconst offset = isDraggingBelow ? 1 : 0;\n\treturn {\n\t\trootClientId: candidateBlockData.rootClientId,\n\t\tclientId: candidateBlockData.clientId,\n\t\tblockIndex: candidateBlockData.blockIndex + offset,\n\t\tdropPosition: candidateEdge,\n\t};\n}\n\n/**\n * A react hook for implementing a drop zone in list view.\n *\n * @param {Object} props Named parameters.\n * @param {?HTMLElement} [props.dropZoneElement] Optional element to be used as the drop zone.\n *\n * @return {WPListViewDropZoneTarget} The drop target.\n */\nexport default function useListViewDropZone( { dropZoneElement } ) {\n\tconst {\n\t\tgetBlockRootClientId,\n\t\tgetBlockIndex,\n\t\tgetBlockCount,\n\t\tgetDraggedBlockClientIds,\n\t\tcanInsertBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst [ target, setTarget ] = useState();\n\tconst { rootClientId: targetRootClientId, blockIndex: targetBlockIndex } =\n\t\ttarget || {};\n\n\tconst onBlockDrop = useOnBlockDrop( targetRootClientId, targetBlockIndex );\n\n\tconst rtl = isRTL();\n\n\tconst draggedBlockClientIds = getDraggedBlockClientIds();\n\tconst throttled = useThrottle(\n\t\tuseCallback(\n\t\t\t( event, currentTarget ) => {\n\t\t\t\tconst position = { x: event.clientX, y: event.clientY };\n\t\t\t\tconst isBlockDrag = !! draggedBlockClientIds?.length;\n\n\t\t\t\tconst blockElements = Array.from(\n\t\t\t\t\tcurrentTarget.querySelectorAll( '[data-block]' )\n\t\t\t\t);\n\n\t\t\t\tconst blocksData = blockElements.map( ( blockElement ) => {\n\t\t\t\t\tconst clientId = blockElement.dataset.block;\n\t\t\t\t\tconst isExpanded = blockElement.dataset.expanded === 'true';\n\t\t\t\t\tconst isDraggedBlock =\n\t\t\t\t\t\tblockElement.classList.contains( 'is-dragging' );\n\n\t\t\t\t\t// Get nesting level from `aria-level` attribute because Firefox does not support `element.ariaLevel`.\n\t\t\t\t\tconst nestingLevel = parseInt(\n\t\t\t\t\t\tblockElement.getAttribute( 'aria-level' ),\n\t\t\t\t\t\t10\n\t\t\t\t\t);\n\t\t\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tisExpanded,\n\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\tblockIndex: getBlockIndex( clientId ),\n\t\t\t\t\t\telement: blockElement,\n\t\t\t\t\t\tnestingLevel: nestingLevel || undefined,\n\t\t\t\t\t\tisDraggedBlock: isBlockDrag ? isDraggedBlock : false,\n\t\t\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\n\t\t\t\t\t\tcanInsertDraggedBlocksAsSibling: isBlockDrag\n\t\t\t\t\t\t\t? canInsertBlocks(\n\t\t\t\t\t\t\t\t\tdraggedBlockClientIds,\n\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: true,\n\t\t\t\t\t\tcanInsertDraggedBlocksAsChild: isBlockDrag\n\t\t\t\t\t\t\t? canInsertBlocks( draggedBlockClientIds, clientId )\n\t\t\t\t\t\t\t: true,\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\tconst newTarget = getListViewDropTarget(\n\t\t\t\t\tblocksData,\n\t\t\t\t\tposition,\n\t\t\t\t\trtl\n\t\t\t\t);\n\n\t\t\t\tif ( newTarget ) {\n\t\t\t\t\tsetTarget( newTarget );\n\t\t\t\t}\n\t\t\t},\n\t\t\t[\n\t\t\t\tcanInsertBlocks,\n\t\t\t\tdraggedBlockClientIds,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\trtl,\n\t\t\t]\n\t\t),\n\t\t200\n\t);\n\n\tconst ref = useDropZone( {\n\t\tdropZoneElement,\n\t\tonDrop: onBlockDrop,\n\t\tonDragLeave() {\n\t\t\tthrottled.cancel();\n\t\t\tsetTarget( null );\n\t\t},\n\t\tonDragOver( event ) {\n\t\t\t// `currentTarget` is only available while the event is being\n\t\t\t// handled, so get it now and pass it to the thottled function.\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget\n\t\t\tthrottled( event, event.currentTarget );\n\t\t},\n\t\tonDragEnd() {\n\t\t\tthrottled.cancel();\n\t\t\tsetTarget( null );\n\t\t},\n\t} );\n\n\treturn { ref, target };\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/use-list-view-drop-zone.js"],"names":["useSelect","useState","useCallback","useThrottle","__experimentalUseDropZone","useDropZone","isRTL","getDistanceToNearestEdge","isPointContainedByRect","useOnBlockDrop","store","blockEditorStore","NESTING_LEVEL_INDENTATION","isUpGesture","point","rect","nestingLevel","rtl","blockIndentPosition","right","left","x","getDesiredRelativeParentLevel","distanceBetweenPointAndBlockIndentPosition","desiredParentLevel","Math","round","abs","getCandidateBlockParents","candidateBlockData","blocksData","candidateBlockParents","currentBlockData","push","find","blockData","clientId","rootClientId","getNextNonDraggedBlock","index","nextBlockData","isDraggedBlock","isNestingGesture","isNestingHorizontalGesture","y","bottom","ALLOWED_DROP_EDGES","getListViewDropTarget","position","candidateEdge","candidateDistance","candidateRect","candidateBlockIndex","i","length","element","getBoundingClientRect","distance","edge","isCursorWithinBlock","undefined","indexOf","previousBlockData","isDraggingBelow","canInsertDraggedBlocksAsChild","innerBlockCount","isExpanded","newBlockIndex","blockIndex","dropPosition","nextBlock","currentLevel","nextLevel","desiredRelativeLevel","targetParentIndex","max","min","canInsertDraggedBlocksAsSibling","offset","useListViewDropZone","dropZoneElement","getBlockRootClientId","getBlockIndex","getBlockCount","getDraggedBlockClientIds","canInsertBlocks","target","setTarget","targetRootClientId","targetBlockIndex","onBlockDrop","draggedBlockClientIds","throttled","event","currentTarget","clientX","clientY","isBlockDrag","blockElements","Array","from","querySelectorAll","map","blockElement","dataset","block","expanded","classList","contains","parseInt","getAttribute","newTarget","ref","onDrop","onDragLeave","cancel","onDragOver","onDragEnd"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useState, useCallback } from '@wordpress/element';\nimport {\n\tuseThrottle,\n\t__experimentalUseDropZone as useDropZone,\n} from '@wordpress/compose';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetDistanceToNearestEdge,\n\tisPointContainedByRect,\n} from '../../utils/math';\nimport useOnBlockDrop from '../use-on-block-drop';\nimport { store as blockEditorStore } from '../../store';\n\n/** @typedef {import('../../utils/math').WPPoint} WPPoint */\n\n/**\n * The type of a drag event.\n *\n * @typedef {'default'|'file'|'html'} WPDragEventType\n */\n\n/**\n * An object representing data for blocks in the DOM used by drag and drop.\n *\n * @typedef {Object} WPListViewDropZoneBlock\n * @property {string} clientId The client id for the block.\n * @property {string} rootClientId The root client id for the block.\n * @property {number} blockIndex The block's index.\n * @property {Element} element The DOM element representing the block.\n * @property {number} innerBlockCount The number of inner blocks the block has.\n * @property {boolean} isDraggedBlock Whether the block is currently being dragged.\n * @property {boolean} isExpanded Whether the block is expanded in the UI.\n * @property {boolean} canInsertDraggedBlocksAsSibling Whether the dragged block can be a sibling of this block.\n * @property {boolean} canInsertDraggedBlocksAsChild Whether the dragged block can be a child of this block.\n */\n\n/**\n * An array representing data for blocks in the DOM used by drag and drop.\n *\n * @typedef {WPListViewDropZoneBlock[]} WPListViewDropZoneBlocks\n */\n\n/**\n * An object containing details of a drop target.\n *\n * @typedef {Object} WPListViewDropZoneTarget\n * @property {string} blockIndex The insertion index.\n * @property {string} rootClientId The root client id for the block.\n * @property {string|undefined} clientId The client id for the block.\n * @property {'top'|'bottom'|'inside'} dropPosition The position relative to the block that the user is dropping to.\n * 'inside' refers to nesting as an inner block.\n */\n\n// When the indentation level, the corresponding left margin in `style.scss`\n// must be updated as well to ensure the drop zone is aligned with the indentation.\nexport const NESTING_LEVEL_INDENTATION = 28;\n\n/**\n * Determines whether the user is positioning the dragged block to be\n * moved up to a parent level.\n *\n * Determined based on nesting level indentation of the current block.\n *\n * @param {WPPoint} point The point representing the cursor position when dragging.\n * @param {DOMRect} rect The rectangle.\n * @param {number} nestingLevel The nesting level of the block.\n * @param {boolean} rtl Whether the editor is in RTL mode.\n * @return {boolean} Whether the gesture is an upward gesture.\n */\nfunction isUpGesture( point, rect, nestingLevel = 1, rtl = false ) {\n\t// If the block is nested, and the user is dragging to the bottom\n\t// left of the block (or bottom right in RTL languages), then it is an upward gesture.\n\tconst blockIndentPosition = rtl\n\t\t? rect.right - nestingLevel * NESTING_LEVEL_INDENTATION\n\t\t: rect.left + nestingLevel * NESTING_LEVEL_INDENTATION;\n\treturn rtl ? point.x > blockIndentPosition : point.x < blockIndentPosition;\n}\n\n/**\n * Returns how many nesting levels up the user is attempting to drag to.\n *\n * The relative parent level is calculated based on how far\n * the cursor is from the provided nesting level (e.g. of a candidate block\n * that the user is hovering over). The nesting level is considered \"desired\"\n * because it is not guaranteed that the user will be able to drag to the desired level.\n *\n * The returned integer can be used to access an ascending array\n * of parent blocks, where the first item is the block the user\n * is hovering over, and the last item is the root block.\n *\n * @param {WPPoint} point The point representing the cursor position when dragging.\n * @param {DOMRect} rect The rectangle.\n * @param {number} nestingLevel The nesting level of the block.\n * @param {boolean} rtl Whether the editor is in RTL mode.\n * @return {number} The desired relative parent level.\n */\nfunction getDesiredRelativeParentLevel(\n\tpoint,\n\trect,\n\tnestingLevel = 1,\n\trtl = false\n) {\n\t// In RTL languages, the block indent position is from the right edge of the block.\n\t// In LTR languages, the block indent position is from the left edge of the block.\n\tconst blockIndentPosition = rtl\n\t\t? rect.right - nestingLevel * NESTING_LEVEL_INDENTATION\n\t\t: rect.left + nestingLevel * NESTING_LEVEL_INDENTATION;\n\n\tconst distanceBetweenPointAndBlockIndentPosition = rtl\n\t\t? blockIndentPosition - point.x\n\t\t: point.x - blockIndentPosition;\n\n\tconst desiredParentLevel = Math.round(\n\t\tdistanceBetweenPointAndBlockIndentPosition / NESTING_LEVEL_INDENTATION\n\t);\n\n\treturn Math.abs( desiredParentLevel );\n}\n\n/**\n * Returns an array of the parent blocks of the block the user is dropping to.\n *\n * @param {WPListViewDropZoneBlock} candidateBlockData The block the user is dropping to.\n * @param {WPListViewDropZoneBlocks} blocksData Data about the blocks in list view.\n * @return {WPListViewDropZoneBlocks} An array of block parents, including the block the user is dropping to.\n */\nfunction getCandidateBlockParents( candidateBlockData, blocksData ) {\n\tconst candidateBlockParents = [];\n\tlet currentBlockData = candidateBlockData;\n\n\twhile ( currentBlockData ) {\n\t\tcandidateBlockParents.push( { ...currentBlockData } );\n\t\tcurrentBlockData = blocksData.find(\n\t\t\t( blockData ) =>\n\t\t\t\tblockData.clientId === currentBlockData.rootClientId\n\t\t);\n\t}\n\n\treturn candidateBlockParents;\n}\n\n/**\n * Given a list of blocks data and a block index, return the next non-dragged\n * block. This is used to determine the block that the user is dropping to,\n * while ignoring the dragged block.\n *\n * @param {WPListViewDropZoneBlocks} blocksData Data about the blocks in list view.\n * @param {number} index The index to begin searching from.\n * @return {WPListViewDropZoneBlock | undefined} The next non-dragged block.\n */\nfunction getNextNonDraggedBlock( blocksData, index ) {\n\tconst nextBlockData = blocksData[ index + 1 ];\n\tif ( nextBlockData && nextBlockData.isDraggedBlock ) {\n\t\treturn getNextNonDraggedBlock( blocksData, index + 1 );\n\t}\n\n\treturn nextBlockData;\n}\n\n/**\n * Determines whether the user positioning the dragged block to nest as an\n * inner block.\n *\n * Determined based on nesting level indentation of the current block, plus\n * the indentation of the next level of nesting. The vertical position of the\n * cursor must also be within the block.\n *\n * @param {WPPoint} point The point representing the cursor position when dragging.\n * @param {DOMRect} rect The rectangle.\n * @param {number} nestingLevel The nesting level of the block.\n * @param {boolean} rtl Whether the editor is in RTL mode.\n */\nfunction isNestingGesture( point, rect, nestingLevel = 1, rtl = false ) {\n\tconst blockIndentPosition = rtl\n\t\t? rect.right - nestingLevel * NESTING_LEVEL_INDENTATION\n\t\t: rect.left + nestingLevel * NESTING_LEVEL_INDENTATION;\n\n\tconst isNestingHorizontalGesture = rtl\n\t\t? point.x < blockIndentPosition - NESTING_LEVEL_INDENTATION\n\t\t: point.x > blockIndentPosition + NESTING_LEVEL_INDENTATION;\n\n\treturn isNestingHorizontalGesture && point.y < rect.bottom;\n}\n\n// Block navigation is always a vertical list, so only allow dropping\n// to the above or below a block.\nconst ALLOWED_DROP_EDGES = [ 'top', 'bottom' ];\n\n/**\n * Given blocks data and the cursor position, compute the drop target.\n *\n * @param {WPListViewDropZoneBlocks} blocksData Data about the blocks in list view.\n * @param {WPPoint} position The point representing the cursor position when dragging.\n * @param {boolean} rtl Whether the editor is in RTL mode.\n *\n * @return {WPListViewDropZoneTarget | undefined} An object containing data about the drop target.\n */\nexport function getListViewDropTarget( blocksData, position, rtl = false ) {\n\tlet candidateEdge;\n\tlet candidateBlockData;\n\tlet candidateDistance;\n\tlet candidateRect;\n\tlet candidateBlockIndex;\n\n\tfor ( let i = 0; i < blocksData.length; i++ ) {\n\t\tconst blockData = blocksData[ i ];\n\t\tif ( blockData.isDraggedBlock ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst rect = blockData.element.getBoundingClientRect();\n\t\tconst [ distance, edge ] = getDistanceToNearestEdge(\n\t\t\tposition,\n\t\t\trect,\n\t\t\tALLOWED_DROP_EDGES\n\t\t);\n\n\t\tconst isCursorWithinBlock = isPointContainedByRect( position, rect );\n\t\tif (\n\t\t\tcandidateDistance === undefined ||\n\t\t\tdistance < candidateDistance ||\n\t\t\tisCursorWithinBlock\n\t\t) {\n\t\t\tcandidateDistance = distance;\n\n\t\t\tconst index = blocksData.indexOf( blockData );\n\t\t\tconst previousBlockData = blocksData[ index - 1 ];\n\n\t\t\t// If dragging near the top of a block and the preceding block\n\t\t\t// is at the same level, use the preceding block as the candidate\n\t\t\t// instead, as later it makes determining a nesting drop easier.\n\t\t\tif (\n\t\t\t\tedge === 'top' &&\n\t\t\t\tpreviousBlockData &&\n\t\t\t\tpreviousBlockData.rootClientId === blockData.rootClientId &&\n\t\t\t\t! previousBlockData.isDraggedBlock\n\t\t\t) {\n\t\t\t\tcandidateBlockData = previousBlockData;\n\t\t\t\tcandidateEdge = 'bottom';\n\t\t\t\tcandidateRect =\n\t\t\t\t\tpreviousBlockData.element.getBoundingClientRect();\n\t\t\t\tcandidateBlockIndex = index - 1;\n\t\t\t} else {\n\t\t\t\tcandidateBlockData = blockData;\n\t\t\t\tcandidateEdge = edge;\n\t\t\t\tcandidateRect = rect;\n\t\t\t\tcandidateBlockIndex = index;\n\t\t\t}\n\n\t\t\t// If the mouse position is within the block, break early\n\t\t\t// as the user would intend to drop either before or after\n\t\t\t// this block.\n\t\t\t//\n\t\t\t// This solves an issue where some rows in the list view\n\t\t\t// tree overlap slightly due to sub-pixel rendering.\n\t\t\tif ( isCursorWithinBlock ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( ! candidateBlockData ) {\n\t\treturn;\n\t}\n\n\tconst candidateBlockParents = getCandidateBlockParents(\n\t\tcandidateBlockData,\n\t\tblocksData\n\t);\n\n\tconst isDraggingBelow = candidateEdge === 'bottom';\n\n\t// If the user is dragging towards the bottom of the block check whether\n\t// they might be trying to nest the block as a child.\n\t// If the block already has inner blocks, and is expanded, this should be treated\n\t// as nesting since the next block in the tree will be the first child.\n\t// However, if the block is collapsed, dragging beneath the block should\n\t// still be allowed, as the next visible block in the tree will be a sibling.\n\tif (\n\t\tisDraggingBelow &&\n\t\tcandidateBlockData.canInsertDraggedBlocksAsChild &&\n\t\t( ( candidateBlockData.innerBlockCount > 0 &&\n\t\t\tcandidateBlockData.isExpanded ) ||\n\t\t\tisNestingGesture(\n\t\t\t\tposition,\n\t\t\t\tcandidateRect,\n\t\t\t\tcandidateBlockParents.length,\n\t\t\t\trtl\n\t\t\t) )\n\t) {\n\t\t// If the block is expanded, insert the block as the first child.\n\t\t// Otherwise, for collapsed blocks, insert the block as the last child.\n\t\tconst newBlockIndex = candidateBlockData.isExpanded\n\t\t\t? 0\n\t\t\t: candidateBlockData.innerBlockCount || 0;\n\n\t\treturn {\n\t\t\trootClientId: candidateBlockData.clientId,\n\t\t\tblockIndex: newBlockIndex,\n\t\t\tdropPosition: 'inside',\n\t\t};\n\t}\n\n\t// If the user is dragging towards the bottom of the block check whether\n\t// they might be trying to move the block to be at a parent level.\n\tif (\n\t\tisDraggingBelow &&\n\t\tcandidateBlockData.rootClientId &&\n\t\tisUpGesture(\n\t\t\tposition,\n\t\t\tcandidateRect,\n\t\t\tcandidateBlockParents.length,\n\t\t\trtl\n\t\t)\n\t) {\n\t\tconst nextBlock = getNextNonDraggedBlock(\n\t\t\tblocksData,\n\t\t\tcandidateBlockIndex\n\t\t);\n\t\tconst currentLevel = candidateBlockData.nestingLevel;\n\t\tconst nextLevel = nextBlock ? nextBlock.nestingLevel : 1;\n\n\t\tif ( currentLevel && nextLevel ) {\n\t\t\t// Determine the desired relative level of the block to be dropped.\n\t\t\tconst desiredRelativeLevel = getDesiredRelativeParentLevel(\n\t\t\t\tposition,\n\t\t\t\tcandidateRect,\n\t\t\t\tcandidateBlockParents.length,\n\t\t\t\trtl\n\t\t\t);\n\n\t\t\tconst targetParentIndex = Math.max(\n\t\t\t\tMath.min( desiredRelativeLevel, currentLevel - nextLevel ),\n\t\t\t\t0\n\t\t\t);\n\n\t\t\tif ( candidateBlockParents[ targetParentIndex ] ) {\n\t\t\t\t// Default to the block index of the candidate block.\n\t\t\t\tlet newBlockIndex = candidateBlockData.blockIndex;\n\n\t\t\t\t// If the next block is at the same level, use that as the default\n\t\t\t\t// block index. This ensures that the block is dropped in the correct\n\t\t\t\t// position when dragging to the bottom of a block.\n\t\t\t\tif (\n\t\t\t\t\tcandidateBlockParents[ targetParentIndex ].nestingLevel ===\n\t\t\t\t\tnextBlock?.nestingLevel\n\t\t\t\t) {\n\t\t\t\t\tnewBlockIndex = nextBlock?.blockIndex;\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, search from the current block index back\n\t\t\t\t\t// to find the last block index within the same target parent.\n\t\t\t\t\tfor ( let i = candidateBlockIndex; i >= 0; i-- ) {\n\t\t\t\t\t\tconst blockData = blocksData[ i ];\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tblockData.rootClientId ===\n\t\t\t\t\t\t\tcandidateBlockParents[ targetParentIndex ]\n\t\t\t\t\t\t\t\t.rootClientId\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnewBlockIndex = blockData.blockIndex + 1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\trootClientId:\n\t\t\t\t\t\tcandidateBlockParents[ targetParentIndex ].rootClientId,\n\t\t\t\t\tclientId: candidateBlockData.clientId,\n\t\t\t\t\tblockIndex: newBlockIndex,\n\t\t\t\t\tdropPosition: candidateEdge,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\t// If dropping as a sibling, but block cannot be inserted in\n\t// this context, return early.\n\tif ( ! candidateBlockData.canInsertDraggedBlocksAsSibling ) {\n\t\treturn;\n\t}\n\n\tconst offset = isDraggingBelow ? 1 : 0;\n\treturn {\n\t\trootClientId: candidateBlockData.rootClientId,\n\t\tclientId: candidateBlockData.clientId,\n\t\tblockIndex: candidateBlockData.blockIndex + offset,\n\t\tdropPosition: candidateEdge,\n\t};\n}\n\n/**\n * A react hook for implementing a drop zone in list view.\n *\n * @param {Object} props Named parameters.\n * @param {?HTMLElement} [props.dropZoneElement] Optional element to be used as the drop zone.\n *\n * @return {WPListViewDropZoneTarget} The drop target.\n */\nexport default function useListViewDropZone( { dropZoneElement } ) {\n\tconst {\n\t\tgetBlockRootClientId,\n\t\tgetBlockIndex,\n\t\tgetBlockCount,\n\t\tgetDraggedBlockClientIds,\n\t\tcanInsertBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst [ target, setTarget ] = useState();\n\tconst { rootClientId: targetRootClientId, blockIndex: targetBlockIndex } =\n\t\ttarget || {};\n\n\tconst onBlockDrop = useOnBlockDrop( targetRootClientId, targetBlockIndex );\n\n\tconst rtl = isRTL();\n\n\tconst draggedBlockClientIds = getDraggedBlockClientIds();\n\tconst throttled = useThrottle(\n\t\tuseCallback(\n\t\t\t( event, currentTarget ) => {\n\t\t\t\tconst position = { x: event.clientX, y: event.clientY };\n\t\t\t\tconst isBlockDrag = !! draggedBlockClientIds?.length;\n\n\t\t\t\tconst blockElements = Array.from(\n\t\t\t\t\tcurrentTarget.querySelectorAll( '[data-block]' )\n\t\t\t\t);\n\n\t\t\t\tconst blocksData = blockElements.map( ( blockElement ) => {\n\t\t\t\t\tconst clientId = blockElement.dataset.block;\n\t\t\t\t\tconst isExpanded = blockElement.dataset.expanded === 'true';\n\t\t\t\t\tconst isDraggedBlock =\n\t\t\t\t\t\tblockElement.classList.contains( 'is-dragging' );\n\n\t\t\t\t\t// Get nesting level from `aria-level` attribute because Firefox does not support `element.ariaLevel`.\n\t\t\t\t\tconst nestingLevel = parseInt(\n\t\t\t\t\t\tblockElement.getAttribute( 'aria-level' ),\n\t\t\t\t\t\t10\n\t\t\t\t\t);\n\t\t\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tisExpanded,\n\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\tblockIndex: getBlockIndex( clientId ),\n\t\t\t\t\t\telement: blockElement,\n\t\t\t\t\t\tnestingLevel: nestingLevel || undefined,\n\t\t\t\t\t\tisDraggedBlock: isBlockDrag ? isDraggedBlock : false,\n\t\t\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\n\t\t\t\t\t\tcanInsertDraggedBlocksAsSibling: isBlockDrag\n\t\t\t\t\t\t\t? canInsertBlocks(\n\t\t\t\t\t\t\t\t\tdraggedBlockClientIds,\n\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: true,\n\t\t\t\t\t\tcanInsertDraggedBlocksAsChild: isBlockDrag\n\t\t\t\t\t\t\t? canInsertBlocks( draggedBlockClientIds, clientId )\n\t\t\t\t\t\t\t: true,\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\tconst newTarget = getListViewDropTarget(\n\t\t\t\t\tblocksData,\n\t\t\t\t\tposition,\n\t\t\t\t\trtl\n\t\t\t\t);\n\n\t\t\t\tif ( newTarget ) {\n\t\t\t\t\tsetTarget( newTarget );\n\t\t\t\t}\n\t\t\t},\n\t\t\t[\n\t\t\t\tcanInsertBlocks,\n\t\t\t\tdraggedBlockClientIds,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\trtl,\n\t\t\t]\n\t\t),\n\t\t200\n\t);\n\n\tconst ref = useDropZone( {\n\t\tdropZoneElement,\n\t\tonDrop( event ) {\n\t\t\tif ( target ) {\n\t\t\t\tonBlockDrop( event );\n\t\t\t}\n\t\t},\n\t\tonDragLeave() {\n\t\t\tthrottled.cancel();\n\t\t\tsetTarget( null );\n\t\t},\n\t\tonDragOver( event ) {\n\t\t\t// `currentTarget` is only available while the event is being\n\t\t\t// handled, so get it now and pass it to the thottled function.\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget\n\t\t\tthrottled( event, event.currentTarget );\n\t\t},\n\t\tonDragEnd() {\n\t\t\tthrottled.cancel();\n\t\t\tsetTarget( null );\n\t\t},\n\t} );\n\n\treturn { ref, target };\n}\n"]}
@@ -3,31 +3,41 @@ import { createElement, Fragment } from "@wordpress/element";
3
3
  /**
4
4
  * External dependencies
5
5
  */
6
- import { View, Text, TouchableWithoutFeedback } from 'react-native';
6
+ import { View, Text, TouchableOpacity } from 'react-native';
7
+ import { sentenceCase } from 'change-case';
7
8
  /**
8
9
  * WordPress dependencies
9
10
  */
10
11
 
11
12
  import { __, sprintf } from '@wordpress/i18n';
12
13
  import { MediaUpload, MEDIA_TYPE_IMAGE, MEDIA_TYPE_VIDEO, MEDIA_TYPE_AUDIO } from '@wordpress/block-editor';
13
- import { withPreferredColorScheme } from '@wordpress/compose';
14
- import { useRef } from '@wordpress/element';
14
+ import { usePreferredColorSchemeStyle } from '@wordpress/compose';
15
+ import { cloneElement, useCallback, useRef } from '@wordpress/element';
15
16
  import { Icon, plusCircleFilled } from '@wordpress/icons';
16
17
  /**
17
18
  * Internal dependencies
18
19
  */
19
20
 
20
21
  import styles from './styles.scss';
22
+ import { useBlockEditContext } from '../block-edit/context';
21
23
 
22
24
  const isMediaEqual = (media1, media2) => media1.id === media2.id || media1.url === media2.url; // Remove duplicates after gallery append.
23
25
 
24
26
 
25
27
  const dedupMedia = media => media.reduce((dedupedMedia, mediaItem) => dedupedMedia.some(item => isMediaEqual(item, mediaItem)) ? dedupedMedia : [...dedupedMedia, mediaItem], []);
26
28
 
29
+ const hitSlop = {
30
+ top: 22,
31
+ bottom: 22,
32
+ left: 22,
33
+ right: 22
34
+ };
35
+
27
36
  function MediaPlaceholder(props) {
28
37
  const {
29
38
  addToGallery,
30
39
  allowedTypes = [],
40
+ className = '',
31
41
  labels = {},
32
42
  icon,
33
43
  onSelect,
@@ -35,7 +45,6 @@ function MediaPlaceholder(props) {
35
45
  __experimentalOnlyMediaLibrary,
36
46
  isAppender,
37
47
  disableMediaButtons,
38
- getStylesFromColorScheme,
39
48
  multiple,
40
49
  value = [],
41
50
  children,
@@ -47,7 +56,12 @@ function MediaPlaceholder(props) {
47
56
  } = props; // Use ref to keep media array current for callbacks during rerenders.
48
57
 
49
58
  const mediaRef = useRef(value);
50
- mediaRef.current = value; // Append and deduplicate media array for gallery use case.
59
+ mediaRef.current = value;
60
+ const blockEditContext = useBlockEditContext();
61
+ const onButtonPress = useCallback(open => event => {
62
+ onFocus?.(event);
63
+ open();
64
+ }, [onFocus]); // Append and deduplicate media array for gallery use case.
51
65
 
52
66
  const setMedia = multiple && addToGallery ? selected => onSelect(dedupMedia([...mediaRef.current, ...selected])) : onSelect;
53
67
  const isOneType = allowedTypes.length === 1;
@@ -92,36 +106,65 @@ function MediaPlaceholder(props) {
92
106
  accessibilityHint = __('Double tap to select an audio file');
93
107
  }
94
108
 
95
- const emptyStateTitleStyle = getStylesFromColorScheme(styles.emptyStateTitle, styles.emptyStateTitleDark);
96
- const addMediaButtonStyle = getStylesFromColorScheme(styles.addMediaButton, styles.addMediaButtonDark);
97
-
98
- const renderContent = () => {
109
+ const titleStyles = usePreferredColorSchemeStyle(styles['media-placeholder__header-title'], styles['media-placeholder__header-title--dark']);
110
+ const addMediaButtonStyle = usePreferredColorSchemeStyle(styles.addMediaButton, styles.addMediaButtonDark);
111
+ const buttonStyles = usePreferredColorSchemeStyle(styles['media-placeholder__button'], styles['media-placeholder__button--dark']);
112
+ const emptyStateDescriptionStyles = usePreferredColorSchemeStyle(styles.emptyStateDescription, styles.emptyStateDescriptionDark);
113
+ const iconStyles = usePreferredColorSchemeStyle(styles['media-placeholder__header-icon'], styles['media-placeholder__header-icon--dark']);
114
+ const placeholderIcon = cloneElement(icon, {
115
+ fill: iconStyles.fill
116
+ });
117
+ const accessibilityLabel = sprintf(
118
+ /* translators: accessibility text for the media block empty state. %s: media type */
119
+ __('%s block. Empty'), placeholderTitle);
120
+
121
+ const renderContent = open => {
99
122
  if (isAppender === undefined || !isAppender) {
100
123
  return createElement(Fragment, null, createElement(View, {
101
- style: styles.modalIcon
102
- }, icon), createElement(Text, {
103
- style: emptyStateTitleStyle
104
- }, placeholderTitle), children, createElement(Text, {
105
- style: styles.emptyStateDescription
106
- }, instructions));
124
+ style: styles['media-placeholder__header']
125
+ }, createElement(View, {
126
+ style: iconStyles
127
+ }, placeholderIcon), createElement(Text, {
128
+ style: titleStyles
129
+ }, placeholderTitle)), children, createElement(TouchableOpacity, {
130
+ activeOpacity: 0.5,
131
+ accessibilityLabel: accessibilityLabel,
132
+ style: buttonStyles,
133
+ accessibilityRole: 'button',
134
+ accessibilityHint: accessibilityHint,
135
+ hitSlop: hitSlop,
136
+ onPress: onButtonPress(open)
137
+ }, createElement(Text, {
138
+ style: emptyStateDescriptionStyles
139
+ }, sentenceCase(instructions))));
107
140
  } else if (isAppender && !disableMediaButtons) {
108
- return createElement(View, {
141
+ return createElement(TouchableOpacity, {
142
+ activeOpacity: 0.5,
143
+ accessibilityLabel: accessibilityLabel,
144
+ style: styles['media-placeholder__appender'],
145
+ accessibilityRole: 'button',
146
+ accessibilityHint: accessibilityHint,
147
+ hitSlop: hitSlop,
148
+ onPress: onButtonPress(open)
149
+ }, createElement(View, {
109
150
  testID: "media-placeholder-appender-icon"
110
151
  }, createElement(Icon, {
111
152
  icon: plusCircleFilled,
112
153
  style: addMediaButtonStyle,
113
154
  color: addMediaButtonStyle.color,
114
155
  size: addMediaButtonStyle.size
115
- }));
156
+ })));
116
157
  }
117
158
  };
118
159
 
160
+ const appenderStyle = usePreferredColorSchemeStyle(styles.appender, styles.appenderDark);
161
+ const containerSelectedStyle = usePreferredColorSchemeStyle(styles['media-placeholder__container-selected'], styles['media-placeholder__container-selected--dark']);
162
+ const containerStyle = [usePreferredColorSchemeStyle(styles['media-placeholder__container'], styles['media-placeholder__container--dark']), blockEditContext?.isSelected && !className.includes('no-block-outline') && containerSelectedStyle];
163
+
119
164
  if (isAppender && disableMediaButtons) {
120
165
  return null;
121
166
  }
122
167
 
123
- const appenderStyle = getStylesFromColorScheme(styles.appender, styles.appenderDark);
124
- const emptyStateContainerStyle = getStylesFromColorScheme(styles.emptyStateContainer, styles.emptyStateContainerDark);
125
168
  return createElement(View, {
126
169
  style: {
127
170
  flex: 1
@@ -138,26 +181,16 @@ function MediaPlaceholder(props) {
138
181
  open,
139
182
  getMediaOptions
140
183
  }) => {
141
- return createElement(TouchableWithoutFeedback, {
142
- accessibilityLabel: sprintf(
143
- /* translators: accessibility text for the media block empty state. %s: media type */
144
- __('%s block. Empty'), placeholderTitle),
145
- accessibilityRole: 'button',
146
- accessibilityHint: accessibilityHint,
147
- onPress: event => {
148
- onFocus?.(event);
149
- open();
150
- }
151
- }, createElement(View, {
152
- style: [[emptyStateContainerStyle, height && {
184
+ return createElement(View, {
185
+ style: [[containerStyle, height && {
153
186
  height
154
187
  }, backgroundColor && {
155
188
  backgroundColor
156
189
  }], isAppender && appenderStyle]
157
- }, getMediaOptions(), !hideContent && renderContent()));
190
+ }, getMediaOptions(), !hideContent && renderContent(open));
158
191
  }
159
192
  }));
160
193
  }
161
194
 
162
- export default withPreferredColorScheme(MediaPlaceholder);
195
+ export default MediaPlaceholder;
163
196
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/media-placeholder/index.native.js"],"names":["View","Text","TouchableWithoutFeedback","__","sprintf","MediaUpload","MEDIA_TYPE_IMAGE","MEDIA_TYPE_VIDEO","MEDIA_TYPE_AUDIO","withPreferredColorScheme","useRef","Icon","plusCircleFilled","styles","isMediaEqual","media1","media2","id","url","dedupMedia","media","reduce","dedupedMedia","mediaItem","some","item","MediaPlaceholder","props","addToGallery","allowedTypes","labels","icon","onSelect","onFocus","__experimentalOnlyMediaLibrary","isAppender","disableMediaButtons","getStylesFromColorScheme","multiple","value","children","height","backgroundColor","hideContent","autoOpenMediaUpload","onSelectURL","mediaRef","current","setMedia","selected","isOneType","length","isImage","includes","isVideo","isAudio","placeholderTitle","title","undefined","instructions","accessibilityHint","emptyStateTitleStyle","emptyStateTitle","emptyStateTitleDark","addMediaButtonStyle","addMediaButton","addMediaButtonDark","renderContent","modalIcon","emptyStateDescription","color","size","appenderStyle","appender","appenderDark","emptyStateContainerStyle","emptyStateContainer","emptyStateContainerDark","flex","open","getMediaOptions","event"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View, Text, TouchableWithoutFeedback } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tMediaUpload,\n\tMEDIA_TYPE_IMAGE,\n\tMEDIA_TYPE_VIDEO,\n\tMEDIA_TYPE_AUDIO,\n} from '@wordpress/block-editor';\nimport { withPreferredColorScheme } from '@wordpress/compose';\nimport { useRef } from '@wordpress/element';\nimport { Icon, plusCircleFilled } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\n\nconst isMediaEqual = ( media1, media2 ) =>\n\tmedia1.id === media2.id || media1.url === media2.url;\n\n// Remove duplicates after gallery append.\nconst dedupMedia = ( media ) =>\n\tmedia.reduce(\n\t\t( dedupedMedia, mediaItem ) =>\n\t\t\tdedupedMedia.some( ( item ) => isMediaEqual( item, mediaItem ) )\n\t\t\t\t? dedupedMedia\n\t\t\t\t: [ ...dedupedMedia, mediaItem ],\n\t\t[]\n\t);\n\nfunction MediaPlaceholder( props ) {\n\tconst {\n\t\taddToGallery,\n\t\tallowedTypes = [],\n\t\tlabels = {},\n\t\ticon,\n\t\tonSelect,\n\t\tonFocus,\n\t\t__experimentalOnlyMediaLibrary,\n\t\tisAppender,\n\t\tdisableMediaButtons,\n\t\tgetStylesFromColorScheme,\n\t\tmultiple,\n\t\tvalue = [],\n\t\tchildren,\n\t\theight,\n\t\tbackgroundColor,\n\t\thideContent,\n\t\tautoOpenMediaUpload,\n\t\tonSelectURL,\n\t} = props;\n\n\t// Use ref to keep media array current for callbacks during rerenders.\n\tconst mediaRef = useRef( value );\n\tmediaRef.current = value;\n\n\t// Append and deduplicate media array for gallery use case.\n\tconst setMedia =\n\t\tmultiple && addToGallery\n\t\t\t? ( selected ) =>\n\t\t\t\t\tonSelect(\n\t\t\t\t\t\tdedupMedia( [ ...mediaRef.current, ...selected ] )\n\t\t\t\t\t)\n\t\t\t: onSelect;\n\n\tconst isOneType = allowedTypes.length === 1;\n\tconst isImage = isOneType && allowedTypes.includes( MEDIA_TYPE_IMAGE );\n\tconst isVideo = isOneType && allowedTypes.includes( MEDIA_TYPE_VIDEO );\n\tconst isAudio = isOneType && allowedTypes.includes( MEDIA_TYPE_AUDIO );\n\n\tlet placeholderTitle = labels.title;\n\tif ( placeholderTitle === undefined ) {\n\t\tplaceholderTitle = __( 'Media' );\n\t\tif ( isImage ) {\n\t\t\tplaceholderTitle = __( 'Image' );\n\t\t} else if ( isVideo ) {\n\t\t\tplaceholderTitle = __( 'Video' );\n\t\t} else if ( isAudio ) {\n\t\t\tplaceholderTitle = __( 'Audio' );\n\t\t}\n\t}\n\n\tlet instructions = labels.instructions;\n\tif ( instructions === undefined ) {\n\t\tif ( isImage ) {\n\t\t\tinstructions = __( 'ADD IMAGE' );\n\t\t} else if ( isVideo ) {\n\t\t\tinstructions = __( 'ADD VIDEO' );\n\t\t} else if ( isAudio ) {\n\t\t\tinstructions = __( 'ADD AUDIO' );\n\t\t} else {\n\t\t\tinstructions = __( 'ADD IMAGE OR VIDEO' );\n\t\t}\n\t}\n\n\tlet accessibilityHint = __( 'Double tap to select' );\n\tif ( isImage ) {\n\t\taccessibilityHint = __( 'Double tap to select an image' );\n\t} else if ( isVideo ) {\n\t\taccessibilityHint = __( 'Double tap to select a video' );\n\t} else if ( isAudio ) {\n\t\taccessibilityHint = __( 'Double tap to select an audio file' );\n\t}\n\n\tconst emptyStateTitleStyle = getStylesFromColorScheme(\n\t\tstyles.emptyStateTitle,\n\t\tstyles.emptyStateTitleDark\n\t);\n\tconst addMediaButtonStyle = getStylesFromColorScheme(\n\t\tstyles.addMediaButton,\n\t\tstyles.addMediaButtonDark\n\t);\n\n\tconst renderContent = () => {\n\t\tif ( isAppender === undefined || ! isAppender ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<View style={ styles.modalIcon }>{ icon }</View>\n\t\t\t\t\t<Text style={ emptyStateTitleStyle }>\n\t\t\t\t\t\t{ placeholderTitle }\n\t\t\t\t\t</Text>\n\t\t\t\t\t{ children }\n\t\t\t\t\t<Text style={ styles.emptyStateDescription }>\n\t\t\t\t\t\t{ instructions }\n\t\t\t\t\t</Text>\n\t\t\t\t</>\n\t\t\t);\n\t\t} else if ( isAppender && ! disableMediaButtons ) {\n\t\t\treturn (\n\t\t\t\t<View testID=\"media-placeholder-appender-icon\">\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ plusCircleFilled }\n\t\t\t\t\t\tstyle={ addMediaButtonStyle }\n\t\t\t\t\t\tcolor={ addMediaButtonStyle.color }\n\t\t\t\t\t\tsize={ addMediaButtonStyle.size }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\t};\n\n\tif ( isAppender && disableMediaButtons ) {\n\t\treturn null;\n\t}\n\n\tconst appenderStyle = getStylesFromColorScheme(\n\t\tstyles.appender,\n\t\tstyles.appenderDark\n\t);\n\tconst emptyStateContainerStyle = getStylesFromColorScheme(\n\t\tstyles.emptyStateContainer,\n\t\tstyles.emptyStateContainerDark\n\t);\n\n\treturn (\n\t\t<View style={ { flex: 1 } }>\n\t\t\t<MediaUpload\n\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\tonSelect={ setMedia }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t__experimentalOnlyMediaLibrary={\n\t\t\t\t\t__experimentalOnlyMediaLibrary\n\t\t\t\t}\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tisReplacingMedia={ false }\n\t\t\t\tautoOpen={ autoOpenMediaUpload }\n\t\t\t\trender={ ( { open, getMediaOptions } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TouchableWithoutFeedback\n\t\t\t\t\t\t\taccessibilityLabel={ sprintf(\n\t\t\t\t\t\t\t\t/* translators: accessibility text for the media block empty state. %s: media type */\n\t\t\t\t\t\t\t\t__( '%s block. Empty' ),\n\t\t\t\t\t\t\t\tplaceholderTitle\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\taccessibilityRole={ 'button' }\n\t\t\t\t\t\t\taccessibilityHint={ accessibilityHint }\n\t\t\t\t\t\t\tonPress={ ( event ) => {\n\t\t\t\t\t\t\t\tonFocus?.( event );\n\t\t\t\t\t\t\t\topen();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\temptyStateContainerStyle,\n\t\t\t\t\t\t\t\t\t\theight && { height },\n\t\t\t\t\t\t\t\t\t\tbackgroundColor && { backgroundColor },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tisAppender && appenderStyle,\n\t\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ getMediaOptions() }\n\t\t\t\t\t\t\t\t{ ! hideContent && renderContent() }\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</TouchableWithoutFeedback>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t/>\n\t\t</View>\n\t);\n}\n\nexport default withPreferredColorScheme( MediaPlaceholder );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/media-placeholder/index.native.js"],"names":["View","Text","TouchableOpacity","sentenceCase","__","sprintf","MediaUpload","MEDIA_TYPE_IMAGE","MEDIA_TYPE_VIDEO","MEDIA_TYPE_AUDIO","usePreferredColorSchemeStyle","cloneElement","useCallback","useRef","Icon","plusCircleFilled","styles","useBlockEditContext","isMediaEqual","media1","media2","id","url","dedupMedia","media","reduce","dedupedMedia","mediaItem","some","item","hitSlop","top","bottom","left","right","MediaPlaceholder","props","addToGallery","allowedTypes","className","labels","icon","onSelect","onFocus","__experimentalOnlyMediaLibrary","isAppender","disableMediaButtons","multiple","value","children","height","backgroundColor","hideContent","autoOpenMediaUpload","onSelectURL","mediaRef","current","blockEditContext","onButtonPress","open","event","setMedia","selected","isOneType","length","isImage","includes","isVideo","isAudio","placeholderTitle","title","undefined","instructions","accessibilityHint","titleStyles","addMediaButtonStyle","addMediaButton","addMediaButtonDark","buttonStyles","emptyStateDescriptionStyles","emptyStateDescription","emptyStateDescriptionDark","iconStyles","placeholderIcon","fill","accessibilityLabel","renderContent","color","size","appenderStyle","appender","appenderDark","containerSelectedStyle","containerStyle","isSelected","flex","getMediaOptions"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View, Text, TouchableOpacity } from 'react-native';\nimport { sentenceCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tMediaUpload,\n\tMEDIA_TYPE_IMAGE,\n\tMEDIA_TYPE_VIDEO,\n\tMEDIA_TYPE_AUDIO,\n} from '@wordpress/block-editor';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\nimport { cloneElement, useCallback, useRef } from '@wordpress/element';\nimport { Icon, plusCircleFilled } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\nimport { useBlockEditContext } from '../block-edit/context';\n\nconst isMediaEqual = ( media1, media2 ) =>\n\tmedia1.id === media2.id || media1.url === media2.url;\n\n// Remove duplicates after gallery append.\nconst dedupMedia = ( media ) =>\n\tmedia.reduce(\n\t\t( dedupedMedia, mediaItem ) =>\n\t\t\tdedupedMedia.some( ( item ) => isMediaEqual( item, mediaItem ) )\n\t\t\t\t? dedupedMedia\n\t\t\t\t: [ ...dedupedMedia, mediaItem ],\n\t\t[]\n\t);\n\nconst hitSlop = { top: 22, bottom: 22, left: 22, right: 22 };\n\nfunction MediaPlaceholder( props ) {\n\tconst {\n\t\taddToGallery,\n\t\tallowedTypes = [],\n\t\tclassName = '',\n\t\tlabels = {},\n\t\ticon,\n\t\tonSelect,\n\t\tonFocus,\n\t\t__experimentalOnlyMediaLibrary,\n\t\tisAppender,\n\t\tdisableMediaButtons,\n\t\tmultiple,\n\t\tvalue = [],\n\t\tchildren,\n\t\theight,\n\t\tbackgroundColor,\n\t\thideContent,\n\t\tautoOpenMediaUpload,\n\t\tonSelectURL,\n\t} = props;\n\n\t// Use ref to keep media array current for callbacks during rerenders.\n\tconst mediaRef = useRef( value );\n\tmediaRef.current = value;\n\n\tconst blockEditContext = useBlockEditContext();\n\n\tconst onButtonPress = useCallback(\n\t\t( open ) => ( event ) => {\n\t\t\tonFocus?.( event );\n\t\t\topen();\n\t\t},\n\t\t[ onFocus ]\n\t);\n\n\t// Append and deduplicate media array for gallery use case.\n\tconst setMedia =\n\t\tmultiple && addToGallery\n\t\t\t? ( selected ) =>\n\t\t\t\t\tonSelect(\n\t\t\t\t\t\tdedupMedia( [ ...mediaRef.current, ...selected ] )\n\t\t\t\t\t)\n\t\t\t: onSelect;\n\n\tconst isOneType = allowedTypes.length === 1;\n\tconst isImage = isOneType && allowedTypes.includes( MEDIA_TYPE_IMAGE );\n\tconst isVideo = isOneType && allowedTypes.includes( MEDIA_TYPE_VIDEO );\n\tconst isAudio = isOneType && allowedTypes.includes( MEDIA_TYPE_AUDIO );\n\n\tlet placeholderTitle = labels.title;\n\tif ( placeholderTitle === undefined ) {\n\t\tplaceholderTitle = __( 'Media' );\n\t\tif ( isImage ) {\n\t\t\tplaceholderTitle = __( 'Image' );\n\t\t} else if ( isVideo ) {\n\t\t\tplaceholderTitle = __( 'Video' );\n\t\t} else if ( isAudio ) {\n\t\t\tplaceholderTitle = __( 'Audio' );\n\t\t}\n\t}\n\n\tlet instructions = labels.instructions;\n\tif ( instructions === undefined ) {\n\t\tif ( isImage ) {\n\t\t\tinstructions = __( 'ADD IMAGE' );\n\t\t} else if ( isVideo ) {\n\t\t\tinstructions = __( 'ADD VIDEO' );\n\t\t} else if ( isAudio ) {\n\t\t\tinstructions = __( 'ADD AUDIO' );\n\t\t} else {\n\t\t\tinstructions = __( 'ADD IMAGE OR VIDEO' );\n\t\t}\n\t}\n\n\tlet accessibilityHint = __( 'Double tap to select' );\n\tif ( isImage ) {\n\t\taccessibilityHint = __( 'Double tap to select an image' );\n\t} else if ( isVideo ) {\n\t\taccessibilityHint = __( 'Double tap to select a video' );\n\t} else if ( isAudio ) {\n\t\taccessibilityHint = __( 'Double tap to select an audio file' );\n\t}\n\n\tconst titleStyles = usePreferredColorSchemeStyle(\n\t\tstyles[ 'media-placeholder__header-title' ],\n\t\tstyles[ 'media-placeholder__header-title--dark' ]\n\t);\n\tconst addMediaButtonStyle = usePreferredColorSchemeStyle(\n\t\tstyles.addMediaButton,\n\t\tstyles.addMediaButtonDark\n\t);\n\tconst buttonStyles = usePreferredColorSchemeStyle(\n\t\tstyles[ 'media-placeholder__button' ],\n\t\tstyles[ 'media-placeholder__button--dark' ]\n\t);\n\tconst emptyStateDescriptionStyles = usePreferredColorSchemeStyle(\n\t\tstyles.emptyStateDescription,\n\t\tstyles.emptyStateDescriptionDark\n\t);\n\tconst iconStyles = usePreferredColorSchemeStyle(\n\t\tstyles[ 'media-placeholder__header-icon' ],\n\t\tstyles[ 'media-placeholder__header-icon--dark' ]\n\t);\n\tconst placeholderIcon = cloneElement( icon, {\n\t\tfill: iconStyles.fill,\n\t} );\n\tconst accessibilityLabel = sprintf(\n\t\t/* translators: accessibility text for the media block empty state. %s: media type */\n\t\t__( '%s block. Empty' ),\n\t\tplaceholderTitle\n\t);\n\n\tconst renderContent = ( open ) => {\n\t\tif ( isAppender === undefined || ! isAppender ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<View style={ styles[ 'media-placeholder__header' ] }>\n\t\t\t\t\t\t<View style={ iconStyles }>{ placeholderIcon }</View>\n\t\t\t\t\t\t<Text style={ titleStyles }>{ placeholderTitle }</Text>\n\t\t\t\t\t</View>\n\t\t\t\t\t{ children }\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tactiveOpacity={ 0.5 }\n\t\t\t\t\t\taccessibilityLabel={ accessibilityLabel }\n\t\t\t\t\t\tstyle={ buttonStyles }\n\t\t\t\t\t\taccessibilityRole={ 'button' }\n\t\t\t\t\t\taccessibilityHint={ accessibilityHint }\n\t\t\t\t\t\thitSlop={ hitSlop }\n\t\t\t\t\t\tonPress={ onButtonPress( open ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text style={ emptyStateDescriptionStyles }>\n\t\t\t\t\t\t\t{ sentenceCase( instructions ) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t</>\n\t\t\t);\n\t\t} else if ( isAppender && ! disableMediaButtons ) {\n\t\t\treturn (\n\t\t\t\t<TouchableOpacity\n\t\t\t\t\tactiveOpacity={ 0.5 }\n\t\t\t\t\taccessibilityLabel={ accessibilityLabel }\n\t\t\t\t\tstyle={ styles[ 'media-placeholder__appender' ] }\n\t\t\t\t\taccessibilityRole={ 'button' }\n\t\t\t\t\taccessibilityHint={ accessibilityHint }\n\t\t\t\t\thitSlop={ hitSlop }\n\t\t\t\t\tonPress={ onButtonPress( open ) }\n\t\t\t\t>\n\t\t\t\t\t<View testID=\"media-placeholder-appender-icon\">\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\ticon={ plusCircleFilled }\n\t\t\t\t\t\t\tstyle={ addMediaButtonStyle }\n\t\t\t\t\t\t\tcolor={ addMediaButtonStyle.color }\n\t\t\t\t\t\t\tsize={ addMediaButtonStyle.size }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</View>\n\t\t\t\t</TouchableOpacity>\n\t\t\t);\n\t\t}\n\t};\n\n\tconst appenderStyle = usePreferredColorSchemeStyle(\n\t\tstyles.appender,\n\t\tstyles.appenderDark\n\t);\n\tconst containerSelectedStyle = usePreferredColorSchemeStyle(\n\t\tstyles[ 'media-placeholder__container-selected' ],\n\t\tstyles[ 'media-placeholder__container-selected--dark' ]\n\t);\n\tconst containerStyle = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles[ 'media-placeholder__container' ],\n\t\t\tstyles[ 'media-placeholder__container--dark' ]\n\t\t),\n\t\tblockEditContext?.isSelected &&\n\t\t\t! className.includes( 'no-block-outline' ) &&\n\t\t\tcontainerSelectedStyle,\n\t];\n\n\tif ( isAppender && disableMediaButtons ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<View style={ { flex: 1 } }>\n\t\t\t<MediaUpload\n\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\tonSelect={ setMedia }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t__experimentalOnlyMediaLibrary={\n\t\t\t\t\t__experimentalOnlyMediaLibrary\n\t\t\t\t}\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tisReplacingMedia={ false }\n\t\t\t\tautoOpen={ autoOpenMediaUpload }\n\t\t\t\trender={ ( { open, getMediaOptions } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tcontainerStyle,\n\t\t\t\t\t\t\t\t\theight && { height },\n\t\t\t\t\t\t\t\t\tbackgroundColor && { backgroundColor },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tisAppender && appenderStyle,\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ getMediaOptions() }\n\t\t\t\t\t\t\t{ ! hideContent && renderContent( open ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t/>\n\t\t</View>\n\t);\n}\n\nexport default MediaPlaceholder;\n"]}
@@ -1,4 +1,16 @@
1
- // MediaReplaceFlow component is not yet implemented in the native version,
2
- // so we return an empty component instead.
3
- export default (() => null);
1
+ import { createElement } from "@wordpress/element";
2
+
3
+ /**
4
+ * External dependencies
5
+ */
6
+ import { View } from 'react-native'; // MediaReplaceFlow component is not yet implemented in the native version.
7
+ // For testing purposes, we are using an empty View component with a testID prop.
8
+
9
+ const MediaReplaceFlow = () => {
10
+ return createElement(View, {
11
+ testID: "media-replace-flow"
12
+ });
13
+ };
14
+
15
+ export default MediaReplaceFlow;
4
16
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/media-replace-flow/index.native.js"],"names":[],"mappings":"AAAA;AACA;AACA,gBAAe,MAAM,IAArB","sourcesContent":["// MediaReplaceFlow component is not yet implemented in the native version,\n// so we return an empty component instead.\nexport default () => null;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/media-replace-flow/index.native.js"],"names":["View","MediaReplaceFlow"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,IAAT,QAAqB,cAArB,C,CAEA;AACA;;AACA,MAAMC,gBAAgB,GAAG,MAAM;AAC9B,SAAO,cAAC,IAAD;AAAM,IAAA,MAAM,EAAC;AAAb,IAAP;AACA,CAFD;;AAIA,eAAeA,gBAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n// MediaReplaceFlow component is not yet implemented in the native version.\n// For testing purposes, we are using an empty View component with a testID prop.\nconst MediaReplaceFlow = () => {\n\treturn <View testID=\"media-replace-flow\" />;\n};\n\nexport default MediaReplaceFlow;\n"]}
@@ -47,7 +47,7 @@ export default function PreviewOptions({
47
47
  menuProps: menuProps,
48
48
  icon: deviceIcons[deviceType.toLowerCase()],
49
49
  label: label || __('Preview')
50
- }, () => createElement(Fragment, null, createElement(MenuGroup, null, createElement(MenuItem, {
50
+ }, renderProps => createElement(Fragment, null, createElement(MenuGroup, null, createElement(MenuItem, {
51
51
  className: "block-editor-post-preview__button-resize",
52
52
  onClick: () => setDeviceType('Desktop'),
53
53
  icon: deviceType === 'Desktop' && check
@@ -59,6 +59,6 @@ export default function PreviewOptions({
59
59
  className: "block-editor-post-preview__button-resize",
60
60
  onClick: () => setDeviceType('Mobile'),
61
61
  icon: deviceType === 'Mobile' && check
62
- }, __('Mobile'))), children));
62
+ }, __('Mobile'))), children(renderProps)));
63
63
  }
64
64
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/preview-options/index.js"],"names":["classnames","useViewportMatch","DropdownMenu","MenuGroup","MenuItem","__","check","desktop","mobile","tablet","PreviewOptions","children","viewLabel","className","isEnabled","deviceType","setDeviceType","label","isMobile","popoverProps","placement","toggleProps","disabled","menuProps","deviceIcons","toLowerCase"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SAASC,YAAT,EAAuBC,SAAvB,EAAkCC,QAAlC,QAAkD,uBAAlD;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,KAAT,EAAgBC,OAAhB,EAAyBC,MAAzB,EAAiCC,MAAjC,QAA+C,kBAA/C;AAEA,eAAe,SAASC,cAAT,CAAyB;AACvCC,EAAAA,QADuC;AAEvCC,EAAAA,SAFuC;AAGvCC,EAAAA,SAHuC;AAIvCC,EAAAA,SAAS,GAAG,IAJ2B;AAKvCC,EAAAA,UALuC;AAMvCC,EAAAA,aANuC;AAOvCC,EAAAA;AAPuC,CAAzB,EAQX;AACH,QAAMC,QAAQ,GAAGjB,gBAAgB,CAAE,OAAF,EAAW,GAAX,CAAjC;AACA,MAAKiB,QAAL,EAAgB,OAAO,IAAP;AAEhB,QAAMC,YAAY,GAAG;AACpBN,IAAAA,SAAS,EAAEb,UAAU,CACpBa,SADoB,EAEpB,6CAFoB,CADD;AAKpBO,IAAAA,SAAS,EAAE;AALS,GAArB;AAOA,QAAMC,WAAW,GAAG;AACnBR,IAAAA,SAAS,EAAE,0CADQ;AAEnBS,IAAAA,QAAQ,EAAE,CAAER,SAFO;AAGnBH,IAAAA,QAAQ,EAAEC;AAHS,GAApB;AAKA,QAAMW,SAAS,GAAG;AACjB,kBAAclB,EAAE,CAAE,cAAF;AADC,GAAlB;AAIA,QAAMmB,WAAW,GAAG;AACnBhB,IAAAA,MADmB;AAEnBC,IAAAA,MAFmB;AAGnBF,IAAAA;AAHmB,GAApB;AAMA,SACC,cAAC,YAAD;AACC,IAAA,SAAS,EAAC,qCADX;AAEC,IAAA,YAAY,EAAGY,YAFhB;AAGC,IAAA,WAAW,EAAGE,WAHf;AAIC,IAAA,SAAS,EAAGE,SAJb;AAKC,IAAA,IAAI,EAAGC,WAAW,CAAET,UAAU,CAACU,WAAX,EAAF,CALnB;AAMC,IAAA,KAAK,EAAGR,KAAK,IAAIZ,EAAE,CAAE,SAAF;AANpB,KAQG,MACD,8BACC,cAAC,SAAD,QACC,cAAC,QAAD;AACC,IAAA,SAAS,EAAC,0CADX;AAEC,IAAA,OAAO,EAAG,MAAMW,aAAa,CAAE,SAAF,CAF9B;AAGC,IAAA,IAAI,EAAGD,UAAU,KAAK,SAAf,IAA4BT;AAHpC,KAKGD,EAAE,CAAE,SAAF,CALL,CADD,EAQC,cAAC,QAAD;AACC,IAAA,SAAS,EAAC,0CADX;AAEC,IAAA,OAAO,EAAG,MAAMW,aAAa,CAAE,QAAF,CAF9B;AAGC,IAAA,IAAI,EAAGD,UAAU,KAAK,QAAf,IAA2BT;AAHnC,KAKGD,EAAE,CAAE,QAAF,CALL,CARD,EAeC,cAAC,QAAD;AACC,IAAA,SAAS,EAAC,0CADX;AAEC,IAAA,OAAO,EAAG,MAAMW,aAAa,CAAE,QAAF,CAF9B;AAGC,IAAA,IAAI,EAAGD,UAAU,KAAK,QAAf,IAA2BT;AAHnC,KAKGD,EAAE,CAAE,QAAF,CALL,CAfD,CADD,EAwBGM,QAxBH,CATF,CADD;AAuCA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { check, desktop, mobile, tablet } from '@wordpress/icons';\n\nexport default function PreviewOptions( {\n\tchildren,\n\tviewLabel,\n\tclassName,\n\tisEnabled = true,\n\tdeviceType,\n\tsetDeviceType,\n\tlabel,\n} ) {\n\tconst isMobile = useViewportMatch( 'small', '<' );\n\tif ( isMobile ) return null;\n\n\tconst popoverProps = {\n\t\tclassName: classnames(\n\t\t\tclassName,\n\t\t\t'block-editor-post-preview__dropdown-content'\n\t\t),\n\t\tplacement: 'bottom-end',\n\t};\n\tconst toggleProps = {\n\t\tclassName: 'block-editor-post-preview__button-toggle',\n\t\tdisabled: ! isEnabled,\n\t\tchildren: viewLabel,\n\t};\n\tconst menuProps = {\n\t\t'aria-label': __( 'View options' ),\n\t};\n\n\tconst deviceIcons = {\n\t\tmobile,\n\t\ttablet,\n\t\tdesktop,\n\t};\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName=\"block-editor-post-preview__dropdown\"\n\t\t\tpopoverProps={ popoverProps }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tmenuProps={ menuProps }\n\t\t\ticon={ deviceIcons[ deviceType.toLowerCase() ] }\n\t\t\tlabel={ label || __( 'Preview' ) }\n\t\t>\n\t\t\t{ () => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Desktop' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Desktop' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Desktop' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Tablet' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Tablet' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Tablet' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Mobile' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Mobile' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Mobile' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ children }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/preview-options/index.js"],"names":["classnames","useViewportMatch","DropdownMenu","MenuGroup","MenuItem","__","check","desktop","mobile","tablet","PreviewOptions","children","viewLabel","className","isEnabled","deviceType","setDeviceType","label","isMobile","popoverProps","placement","toggleProps","disabled","menuProps","deviceIcons","toLowerCase","renderProps"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SAASC,YAAT,EAAuBC,SAAvB,EAAkCC,QAAlC,QAAkD,uBAAlD;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,KAAT,EAAgBC,OAAhB,EAAyBC,MAAzB,EAAiCC,MAAjC,QAA+C,kBAA/C;AAEA,eAAe,SAASC,cAAT,CAAyB;AACvCC,EAAAA,QADuC;AAEvCC,EAAAA,SAFuC;AAGvCC,EAAAA,SAHuC;AAIvCC,EAAAA,SAAS,GAAG,IAJ2B;AAKvCC,EAAAA,UALuC;AAMvCC,EAAAA,aANuC;AAOvCC,EAAAA;AAPuC,CAAzB,EAQX;AACH,QAAMC,QAAQ,GAAGjB,gBAAgB,CAAE,OAAF,EAAW,GAAX,CAAjC;AACA,MAAKiB,QAAL,EAAgB,OAAO,IAAP;AAEhB,QAAMC,YAAY,GAAG;AACpBN,IAAAA,SAAS,EAAEb,UAAU,CACpBa,SADoB,EAEpB,6CAFoB,CADD;AAKpBO,IAAAA,SAAS,EAAE;AALS,GAArB;AAOA,QAAMC,WAAW,GAAG;AACnBR,IAAAA,SAAS,EAAE,0CADQ;AAEnBS,IAAAA,QAAQ,EAAE,CAAER,SAFO;AAGnBH,IAAAA,QAAQ,EAAEC;AAHS,GAApB;AAKA,QAAMW,SAAS,GAAG;AACjB,kBAAclB,EAAE,CAAE,cAAF;AADC,GAAlB;AAIA,QAAMmB,WAAW,GAAG;AACnBhB,IAAAA,MADmB;AAEnBC,IAAAA,MAFmB;AAGnBF,IAAAA;AAHmB,GAApB;AAMA,SACC,cAAC,YAAD;AACC,IAAA,SAAS,EAAC,qCADX;AAEC,IAAA,YAAY,EAAGY,YAFhB;AAGC,IAAA,WAAW,EAAGE,WAHf;AAIC,IAAA,SAAS,EAAGE,SAJb;AAKC,IAAA,IAAI,EAAGC,WAAW,CAAET,UAAU,CAACU,WAAX,EAAF,CALnB;AAMC,IAAA,KAAK,EAAGR,KAAK,IAAIZ,EAAE,CAAE,SAAF;AANpB,KAQKqB,WAAF,IACD,8BACC,cAAC,SAAD,QACC,cAAC,QAAD;AACC,IAAA,SAAS,EAAC,0CADX;AAEC,IAAA,OAAO,EAAG,MAAMV,aAAa,CAAE,SAAF,CAF9B;AAGC,IAAA,IAAI,EAAGD,UAAU,KAAK,SAAf,IAA4BT;AAHpC,KAKGD,EAAE,CAAE,SAAF,CALL,CADD,EAQC,cAAC,QAAD;AACC,IAAA,SAAS,EAAC,0CADX;AAEC,IAAA,OAAO,EAAG,MAAMW,aAAa,CAAE,QAAF,CAF9B;AAGC,IAAA,IAAI,EAAGD,UAAU,KAAK,QAAf,IAA2BT;AAHnC,KAKGD,EAAE,CAAE,QAAF,CALL,CARD,EAeC,cAAC,QAAD;AACC,IAAA,SAAS,EAAC,0CADX;AAEC,IAAA,OAAO,EAAG,MAAMW,aAAa,CAAE,QAAF,CAF9B;AAGC,IAAA,IAAI,EAAGD,UAAU,KAAK,QAAf,IAA2BT;AAHnC,KAKGD,EAAE,CAAE,QAAF,CALL,CAfD,CADD,EAwBGM,QAAQ,CAAEe,WAAF,CAxBX,CATF,CADD;AAuCA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { check, desktop, mobile, tablet } from '@wordpress/icons';\n\nexport default function PreviewOptions( {\n\tchildren,\n\tviewLabel,\n\tclassName,\n\tisEnabled = true,\n\tdeviceType,\n\tsetDeviceType,\n\tlabel,\n} ) {\n\tconst isMobile = useViewportMatch( 'small', '<' );\n\tif ( isMobile ) return null;\n\n\tconst popoverProps = {\n\t\tclassName: classnames(\n\t\t\tclassName,\n\t\t\t'block-editor-post-preview__dropdown-content'\n\t\t),\n\t\tplacement: 'bottom-end',\n\t};\n\tconst toggleProps = {\n\t\tclassName: 'block-editor-post-preview__button-toggle',\n\t\tdisabled: ! isEnabled,\n\t\tchildren: viewLabel,\n\t};\n\tconst menuProps = {\n\t\t'aria-label': __( 'View options' ),\n\t};\n\n\tconst deviceIcons = {\n\t\tmobile,\n\t\ttablet,\n\t\tdesktop,\n\t};\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName=\"block-editor-post-preview__dropdown\"\n\t\t\tpopoverProps={ popoverProps }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tmenuProps={ menuProps }\n\t\t\ticon={ deviceIcons[ deviceType.toLowerCase() ] }\n\t\t\tlabel={ label || __( 'Preview' ) }\n\t\t>\n\t\t\t{ ( renderProps ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Desktop' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Desktop' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Desktop' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Tablet' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Tablet' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Tablet' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Mobile' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Mobile' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Mobile' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ children( renderProps ) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"]}
@@ -4,7 +4,7 @@ import { createElement } from "@wordpress/element";
4
4
  * WordPress dependencies
5
5
  */
6
6
  import { RawHTML } from '@wordpress/element';
7
- import { children as childrenSource, getSaveElement, __unstableGetBlockProps as getBlockProps } from '@wordpress/blocks';
7
+ import { children as childrenSource } from '@wordpress/blocks';
8
8
  import deprecated from '@wordpress/deprecated';
9
9
  /**
10
10
  * Internal dependencies
@@ -47,39 +47,4 @@ export const Content = ({
47
47
 
48
48
  return content;
49
49
  };
50
- Content.__unstableIsRichTextContent = {};
51
-
52
- function findContent(blocks, richTextValues = []) {
53
- if (!Array.isArray(blocks)) {
54
- blocks = [blocks];
55
- }
56
-
57
- for (const block of blocks) {
58
- if (block?.type?.__unstableIsRichTextContent === Content.__unstableIsRichTextContent) {
59
- richTextValues.push(block.props.value);
60
- continue;
61
- }
62
-
63
- if (block?.props?.children) {
64
- findContent(block.props.children, richTextValues);
65
- }
66
- }
67
-
68
- return richTextValues;
69
- }
70
-
71
- function _getSaveElement({
72
- name,
73
- attributes,
74
- innerBlocks
75
- }) {
76
- return getSaveElement(name, attributes, innerBlocks.map(_getSaveElement));
77
- }
78
-
79
- export function getRichTextValues(blocks = []) {
80
- getBlockProps.skipFilters = true;
81
- const values = findContent((Array.isArray(blocks) ? blocks : [blocks]).map(_getSaveElement));
82
- getBlockProps.skipFilters = false;
83
- return values;
84
- }
85
50
  //# sourceMappingURL=content.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/content.js"],"names":["RawHTML","children","childrenSource","getSaveElement","__unstableGetBlockProps","getBlockProps","deprecated","getMultilineTag","Content","value","tagName","Tag","multiline","props","Array","isArray","since","version","alternative","link","toHTML","MultilineTag","content","format","restProps","__unstableIsRichTextContent","findContent","blocks","richTextValues","block","type","push","_getSaveElement","name","attributes","innerBlocks","map","getRichTextValues","skipFilters","values"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AACA,SACCC,QAAQ,IAAIC,cADb,EAECC,cAFD,EAGCC,uBAAuB,IAAIC,aAH5B,QAIO,mBAJP;AAKA,OAAOC,UAAP,MAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,SAASC,eAAT,QAAgC,SAAhC;AAEA,OAAO,MAAMC,OAAO,GAAG,CAAE;AAAEC,EAAAA,KAAF;AAASC,EAAAA,OAAO,EAAEC,GAAlB;AAAuBC,EAAAA,SAAvB;AAAkC,KAAGC;AAArC,CAAF,KAAoD;AAC1E;AACA,MAAKC,KAAK,CAACC,OAAN,CAAeN,KAAf,CAAL,EAA8B;AAC7BH,IAAAA,UAAU,CAAE,qDAAF,EAAyD;AAClEU,MAAAA,KAAK,EAAE,KAD2D;AAElEC,MAAAA,OAAO,EAAE,KAFyD;AAGlEC,MAAAA,WAAW,EAAE,sBAHqD;AAIlEC,MAAAA,IAAI,EAAE;AAJ4D,KAAzD,CAAV;AAOAV,IAAAA,KAAK,GAAGP,cAAc,CAACkB,MAAf,CAAuBX,KAAvB,CAAR;AACA;;AAED,QAAMY,YAAY,GAAGd,eAAe,CAAEK,SAAF,CAApC;;AAEA,MAAK,CAAEH,KAAF,IAAWY,YAAhB,EAA+B;AAC9BZ,IAAAA,KAAK,GAAI,IAAIY,YAAc,MAAMA,YAAc,GAA/C;AACA;;AAED,QAAMC,OAAO,GAAG,cAAC,OAAD,QAAWb,KAAX,CAAhB;;AAEA,MAAKE,GAAL,EAAW;AACV,UAAM;AAAEY,MAAAA,MAAF;AAAU,SAAGC;AAAb,QAA2BX,KAAjC;AACA,WAAO,cAAC,GAAD,OAAUW;AAAV,OAAwBF,OAAxB,CAAP;AACA;;AAED,SAAOA,OAAP;AACA,CA3BM;AA6BPd,OAAO,CAACiB,2BAAR,GAAsC,EAAtC;;AAEA,SAASC,WAAT,CAAsBC,MAAtB,EAA8BC,cAAc,GAAG,EAA/C,EAAoD;AACnD,MAAK,CAAEd,KAAK,CAACC,OAAN,CAAeY,MAAf,CAAP,EAAiC;AAChCA,IAAAA,MAAM,GAAG,CAAEA,MAAF,CAAT;AACA;;AAED,OAAM,MAAME,KAAZ,IAAqBF,MAArB,EAA8B;AAC7B,QACCE,KAAK,EAAEC,IAAP,EAAaL,2BAAb,KACAjB,OAAO,CAACiB,2BAFT,EAGE;AACDG,MAAAA,cAAc,CAACG,IAAf,CAAqBF,KAAK,CAAChB,KAAN,CAAYJ,KAAjC;AACA;AACA;;AAED,QAAKoB,KAAK,EAAEhB,KAAP,EAAcZ,QAAnB,EAA8B;AAC7ByB,MAAAA,WAAW,CAAEG,KAAK,CAAChB,KAAN,CAAYZ,QAAd,EAAwB2B,cAAxB,CAAX;AACA;AACD;;AAED,SAAOA,cAAP;AACA;;AAED,SAASI,eAAT,CAA0B;AAAEC,EAAAA,IAAF;AAAQC,EAAAA,UAAR;AAAoBC,EAAAA;AAApB,CAA1B,EAA8D;AAC7D,SAAOhC,cAAc,CACpB8B,IADoB,EAEpBC,UAFoB,EAGpBC,WAAW,CAACC,GAAZ,CAAiBJ,eAAjB,CAHoB,CAArB;AAKA;;AAED,OAAO,SAASK,iBAAT,CAA4BV,MAAM,GAAG,EAArC,EAA0C;AAChDtB,EAAAA,aAAa,CAACiC,WAAd,GAA4B,IAA5B;AACA,QAAMC,MAAM,GAAGb,WAAW,CACzB,CAAEZ,KAAK,CAACC,OAAN,CAAeY,MAAf,IAA0BA,MAA1B,GAAmC,CAAEA,MAAF,CAArC,EAAkDS,GAAlD,CAAuDJ,eAAvD,CADyB,CAA1B;AAGA3B,EAAAA,aAAa,CAACiC,WAAd,GAA4B,KAA5B;AACA,SAAOC,MAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RawHTML } from '@wordpress/element';\nimport {\n\tchildren as childrenSource,\n\tgetSaveElement,\n\t__unstableGetBlockProps as getBlockProps,\n} from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport { getMultilineTag } from './utils';\n\nexport const Content = ( { value, tagName: Tag, multiline, ...props } ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tdeprecated( 'wp.blockEditor.RichText value prop as children type', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'value prop as string',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/',\n\t\t} );\n\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\tconst { format, ...restProps } = props;\n\t\treturn <Tag { ...restProps }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nContent.__unstableIsRichTextContent = {};\n\nfunction findContent( blocks, richTextValues = [] ) {\n\tif ( ! Array.isArray( blocks ) ) {\n\t\tblocks = [ blocks ];\n\t}\n\n\tfor ( const block of blocks ) {\n\t\tif (\n\t\t\tblock?.type?.__unstableIsRichTextContent ===\n\t\t\tContent.__unstableIsRichTextContent\n\t\t) {\n\t\t\trichTextValues.push( block.props.value );\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( block?.props?.children ) {\n\t\t\tfindContent( block.props.children, richTextValues );\n\t\t}\n\t}\n\n\treturn richTextValues;\n}\n\nfunction _getSaveElement( { name, attributes, innerBlocks } ) {\n\treturn getSaveElement(\n\t\tname,\n\t\tattributes,\n\t\tinnerBlocks.map( _getSaveElement )\n\t);\n}\n\nexport function getRichTextValues( blocks = [] ) {\n\tgetBlockProps.skipFilters = true;\n\tconst values = findContent(\n\t\t( Array.isArray( blocks ) ? blocks : [ blocks ] ).map( _getSaveElement )\n\t);\n\tgetBlockProps.skipFilters = false;\n\treturn values;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/content.js"],"names":["RawHTML","children","childrenSource","deprecated","getMultilineTag","Content","value","tagName","Tag","multiline","props","Array","isArray","since","version","alternative","link","toHTML","MultilineTag","content","format","restProps"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AACA,SAASC,QAAQ,IAAIC,cAArB,QAA2C,mBAA3C;AACA,OAAOC,UAAP,MAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,SAASC,eAAT,QAAgC,SAAhC;AAEA,OAAO,MAAMC,OAAO,GAAG,CAAE;AAAEC,EAAAA,KAAF;AAASC,EAAAA,OAAO,EAAEC,GAAlB;AAAuBC,EAAAA,SAAvB;AAAkC,KAAGC;AAArC,CAAF,KAAoD;AAC1E;AACA,MAAKC,KAAK,CAACC,OAAN,CAAeN,KAAf,CAAL,EAA8B;AAC7BH,IAAAA,UAAU,CAAE,qDAAF,EAAyD;AAClEU,MAAAA,KAAK,EAAE,KAD2D;AAElEC,MAAAA,OAAO,EAAE,KAFyD;AAGlEC,MAAAA,WAAW,EAAE,sBAHqD;AAIlEC,MAAAA,IAAI,EAAE;AAJ4D,KAAzD,CAAV;AAOAV,IAAAA,KAAK,GAAGJ,cAAc,CAACe,MAAf,CAAuBX,KAAvB,CAAR;AACA;;AAED,QAAMY,YAAY,GAAGd,eAAe,CAAEK,SAAF,CAApC;;AAEA,MAAK,CAAEH,KAAF,IAAWY,YAAhB,EAA+B;AAC9BZ,IAAAA,KAAK,GAAI,IAAIY,YAAc,MAAMA,YAAc,GAA/C;AACA;;AAED,QAAMC,OAAO,GAAG,cAAC,OAAD,QAAWb,KAAX,CAAhB;;AAEA,MAAKE,GAAL,EAAW;AACV,UAAM;AAAEY,MAAAA,MAAF;AAAU,SAAGC;AAAb,QAA2BX,KAAjC;AACA,WAAO,cAAC,GAAD,OAAUW;AAAV,OAAwBF,OAAxB,CAAP;AACA;;AAED,SAAOA,OAAP;AACA,CA3BM","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RawHTML } from '@wordpress/element';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport { getMultilineTag } from './utils';\n\nexport const Content = ( { value, tagName: Tag, multiline, ...props } ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tdeprecated( 'wp.blockEditor.RichText value prop as children type', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'value prop as string',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/',\n\t\t} );\n\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\tconst { format, ...restProps } = props;\n\t\treturn <Tag { ...restProps }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n"]}