@wordpress/block-editor 12.9.1-next.5a1d1283.0 → 12.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +33 -3
  3. package/build/components/block-canvas/index.js +107 -0
  4. package/build/components/block-canvas/index.js.map +1 -0
  5. package/build/components/block-inspector/index.js +4 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-patterns-list/index.js +19 -4
  8. package/build/components/block-patterns-list/index.js.map +1 -1
  9. package/build/components/block-patterns-paging/index.js +66 -0
  10. package/build/components/block-patterns-paging/index.js.map +1 -0
  11. package/build/components/block-settings-menu/block-settings-dropdown.js +28 -0
  12. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  13. package/build/components/block-settings-menu-controls/index.js +4 -7
  14. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  15. package/build/components/block-styles/index.js +1 -0
  16. package/build/components/block-styles/index.js.map +1 -1
  17. package/build/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  18. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  19. package/build/components/block-tools/block-contextual-toolbar.js +18 -7
  20. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  21. package/build/components/block-tools/block-selection-button.js +5 -1
  22. package/build/components/block-tools/block-selection-button.js.map +1 -1
  23. package/build/components/border-radius-control/input-controls.js +1 -1
  24. package/build/components/border-radius-control/input-controls.js.map +1 -1
  25. package/build/components/border-radius-control/linked-button.js +2 -4
  26. package/build/components/border-radius-control/linked-button.js.map +1 -1
  27. package/build/components/colors/with-colors.js.map +1 -1
  28. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  29. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  30. package/build/components/default-block-appender/index.native.js +20 -1
  31. package/build/components/default-block-appender/index.native.js.map +1 -1
  32. package/build/components/duotone/utils.js +68 -0
  33. package/build/components/duotone/utils.js.map +1 -1
  34. package/build/components/editor-styles/index.js +28 -9
  35. package/build/components/editor-styles/index.js.map +1 -1
  36. package/build/components/global-styles/hooks.js +2 -101
  37. package/build/components/global-styles/hooks.js.map +1 -1
  38. package/build/components/global-styles/image-settings-panel.js +61 -0
  39. package/build/components/global-styles/image-settings-panel.js.map +1 -0
  40. package/build/components/global-styles/index.js +11 -17
  41. package/build/components/global-styles/index.js.map +1 -1
  42. package/build/components/global-styles/use-global-styles-output.js +19 -15
  43. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  44. package/build/components/global-styles/utils.js +1 -1
  45. package/build/components/global-styles/utils.js.map +1 -1
  46. package/build/components/iframe/index.js +67 -33
  47. package/build/components/iframe/index.js.map +1 -1
  48. package/build/components/image-editor/use-save-image.js +2 -5
  49. package/build/components/image-editor/use-save-image.js.map +1 -1
  50. package/build/components/image-editor/use-transform-image.js +9 -9
  51. package/build/components/image-editor/use-transform-image.js.map +1 -1
  52. package/build/components/index.js +8 -12
  53. package/build/components/index.js.map +1 -1
  54. package/build/components/index.native.js +6 -5
  55. package/build/components/index.native.js.map +1 -1
  56. package/build/components/inner-blocks/use-nested-settings-update.js +13 -7
  57. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  58. package/build/components/inserter/block-patterns-explorer/explorer.js +12 -6
  59. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  60. package/build/components/inserter/block-patterns-explorer/patterns-list.js +57 -23
  61. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  62. package/build/components/inserter/block-patterns-explorer/sidebar.js +24 -9
  63. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  64. package/build/components/inserter/block-patterns-source-filter.js +54 -0
  65. package/build/components/inserter/block-patterns-source-filter.js.map +1 -0
  66. package/build/components/inserter/block-patterns-sync-filter.js +46 -0
  67. package/build/components/inserter/block-patterns-sync-filter.js.map +1 -0
  68. package/build/components/inserter/block-patterns-tab.js +91 -45
  69. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  70. package/build/components/inserter/hooks/use-patterns-paging.js +57 -0
  71. package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  72. package/build/components/inserter/hooks/use-patterns-state.js +21 -10
  73. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  74. package/build/components/inserter/menu.js +13 -11
  75. package/build/components/inserter/menu.js.map +1 -1
  76. package/build/components/inserter/search-results.js +4 -3
  77. package/build/components/inserter/search-results.js.map +1 -1
  78. package/build/components/inserter/tabs.js +1 -12
  79. package/build/components/inserter/tabs.js.map +1 -1
  80. package/build/components/inspector-controls/block-support-slot-container.js +12 -1
  81. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  82. package/build/components/inspector-controls/fill.js +24 -13
  83. package/build/components/inspector-controls/fill.js.map +1 -1
  84. package/build/components/inspector-controls/groups.js +5 -3
  85. package/build/components/inspector-controls/groups.js.map +1 -1
  86. package/build/components/inspector-controls/slot.js +13 -0
  87. package/build/components/inspector-controls/slot.js.map +1 -1
  88. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  89. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  90. package/build/components/link-control/index.js +12 -2
  91. package/build/components/link-control/index.js.map +1 -1
  92. package/build/components/list-view/block-select-button.js +1 -3
  93. package/build/components/list-view/block-select-button.js.map +1 -1
  94. package/build/components/list-view/block.js +13 -1
  95. package/build/components/list-view/block.js.map +1 -1
  96. package/build/components/list-view/use-block-selection.js +29 -24
  97. package/build/components/list-view/use-block-selection.js.map +1 -1
  98. package/build/components/media-placeholder/index.js +2 -2
  99. package/build/components/media-placeholder/index.js.map +1 -1
  100. package/build/components/media-placeholder/index.native.js +11 -11
  101. package/build/components/media-placeholder/index.native.js.map +1 -1
  102. package/build/components/media-replace-flow/index.js +2 -3
  103. package/build/components/media-replace-flow/index.js.map +1 -1
  104. package/build/components/media-upload/constants.js +30 -0
  105. package/build/components/media-upload/constants.js.map +1 -0
  106. package/build/components/media-upload/index.native.js +63 -53
  107. package/build/components/media-upload/index.native.js.map +1 -1
  108. package/build/components/preview-options/index.js +1 -1
  109. package/build/components/preview-options/index.js.map +1 -1
  110. package/build/components/rich-text/index.js +34 -35
  111. package/build/components/rich-text/index.js.map +1 -1
  112. package/build/components/rich-text/index.native.js +14 -32
  113. package/build/components/rich-text/index.native.js.map +1 -1
  114. package/build/components/rich-text/multiline.js +95 -0
  115. package/build/components/rich-text/multiline.js.map +1 -0
  116. package/build/components/rich-text/split-value.js +10 -16
  117. package/build/components/rich-text/split-value.js.map +1 -1
  118. package/build/components/rich-text/use-enter.js +31 -40
  119. package/build/components/rich-text/use-enter.js.map +1 -1
  120. package/build/components/rich-text/use-paste-handler.js +18 -33
  121. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  122. package/build/components/spacing-sizes-control/utils.js +1 -1
  123. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  124. package/build/components/use-block-commands/index.js +30 -18
  125. package/build/components/use-block-commands/index.js.map +1 -1
  126. package/build/components/use-block-display-information/index.js +5 -2
  127. package/build/components/use-block-display-information/index.js.map +1 -1
  128. package/build/hooks/background.js +258 -0
  129. package/build/hooks/background.js.map +1 -0
  130. package/build/hooks/block-hooks.js +188 -0
  131. package/build/hooks/block-hooks.js.map +1 -0
  132. package/build/hooks/block-rename-ui.js +160 -0
  133. package/build/hooks/block-rename-ui.js.map +1 -0
  134. package/build/hooks/duotone.js +29 -42
  135. package/build/hooks/duotone.js.map +1 -1
  136. package/build/hooks/index.js +2 -2
  137. package/build/hooks/index.js.map +1 -1
  138. package/build/hooks/layout.js +31 -14
  139. package/build/hooks/layout.js.map +1 -1
  140. package/build/hooks/position.js +4 -2
  141. package/build/hooks/position.js.map +1 -1
  142. package/build/hooks/style.js +10 -3
  143. package/build/hooks/style.js.map +1 -1
  144. package/build/private-apis.js +2 -0
  145. package/build/private-apis.js.map +1 -1
  146. package/build/store/actions.js +33 -10
  147. package/build/store/actions.js.map +1 -1
  148. package/build/store/private-actions.js +42 -8
  149. package/build/store/private-actions.js.map +1 -1
  150. package/build/store/private-selectors.js +23 -0
  151. package/build/store/private-selectors.js.map +1 -1
  152. package/build/store/reducer.js +43 -1
  153. package/build/store/reducer.js.map +1 -1
  154. package/build/store/selectors.js +84 -23
  155. package/build/store/selectors.js.map +1 -1
  156. package/build/store/utils.js +0 -4
  157. package/build/store/utils.js.map +1 -1
  158. package/build-module/components/block-canvas/index.js +97 -0
  159. package/build-module/components/block-canvas/index.js.map +1 -0
  160. package/build-module/components/block-inspector/index.js +4 -1
  161. package/build-module/components/block-inspector/index.js.map +1 -1
  162. package/build-module/components/block-patterns-list/index.js +20 -5
  163. package/build-module/components/block-patterns-list/index.js.map +1 -1
  164. package/build-module/components/block-patterns-paging/index.js +59 -0
  165. package/build-module/components/block-patterns-paging/index.js.map +1 -0
  166. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -0
  167. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  168. package/build-module/components/block-settings-menu-controls/index.js +4 -7
  169. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  170. package/build-module/components/block-styles/index.js +1 -0
  171. package/build-module/components/block-styles/index.js.map +1 -1
  172. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  173. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  174. package/build-module/components/block-tools/block-contextual-toolbar.js +18 -7
  175. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  176. package/build-module/components/block-tools/block-selection-button.js +5 -1
  177. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  178. package/build-module/components/border-radius-control/input-controls.js +1 -1
  179. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  180. package/build-module/components/border-radius-control/linked-button.js +2 -4
  181. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  182. package/build-module/components/colors/with-colors.js.map +1 -1
  183. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  184. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  185. package/build-module/components/default-block-appender/index.native.js +20 -1
  186. package/build-module/components/default-block-appender/index.native.js.map +1 -1
  187. package/build-module/components/duotone/utils.js +65 -0
  188. package/build-module/components/duotone/utils.js.map +1 -1
  189. package/build-module/components/editor-styles/index.js +28 -9
  190. package/build-module/components/editor-styles/index.js.map +1 -1
  191. package/build-module/components/global-styles/hooks.js +3 -100
  192. package/build-module/components/global-styles/hooks.js.map +1 -1
  193. package/build-module/components/global-styles/image-settings-panel.js +53 -0
  194. package/build-module/components/global-styles/image-settings-panel.js.map +1 -0
  195. package/build-module/components/global-styles/index.js +2 -2
  196. package/build-module/components/global-styles/index.js.map +1 -1
  197. package/build-module/components/global-styles/use-global-styles-output.js +18 -16
  198. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  199. package/build-module/components/global-styles/utils.js +1 -1
  200. package/build-module/components/global-styles/utils.js.map +1 -1
  201. package/build-module/components/iframe/index.js +66 -33
  202. package/build-module/components/iframe/index.js.map +1 -1
  203. package/build-module/components/image-editor/use-save-image.js +2 -5
  204. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  205. package/build-module/components/image-editor/use-transform-image.js +9 -9
  206. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  207. package/build-module/components/index.js +1 -1
  208. package/build-module/components/index.js.map +1 -1
  209. package/build-module/components/index.native.js +2 -1
  210. package/build-module/components/index.native.js.map +1 -1
  211. package/build-module/components/inner-blocks/use-nested-settings-update.js +14 -8
  212. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  213. package/build-module/components/inserter/block-patterns-explorer/explorer.js +12 -6
  214. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  215. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +59 -25
  216. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  217. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +23 -9
  218. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  219. package/build-module/components/inserter/block-patterns-source-filter.js +44 -0
  220. package/build-module/components/inserter/block-patterns-source-filter.js.map +1 -0
  221. package/build-module/components/inserter/block-patterns-sync-filter.js +38 -0
  222. package/build-module/components/inserter/block-patterns-sync-filter.js.map +1 -0
  223. package/build-module/components/inserter/block-patterns-tab.js +87 -46
  224. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  225. package/build-module/components/inserter/hooks/use-patterns-paging.js +50 -0
  226. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  227. package/build-module/components/inserter/hooks/use-patterns-state.js +22 -10
  228. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  229. package/build-module/components/inserter/menu.js +13 -11
  230. package/build-module/components/inserter/menu.js.map +1 -1
  231. package/build-module/components/inserter/search-results.js +4 -3
  232. package/build-module/components/inserter/search-results.js.map +1 -1
  233. package/build-module/components/inserter/tabs.js +1 -12
  234. package/build-module/components/inserter/tabs.js.map +1 -1
  235. package/build-module/components/inspector-controls/block-support-slot-container.js +13 -2
  236. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  237. package/build-module/components/inspector-controls/fill.js +25 -14
  238. package/build-module/components/inspector-controls/fill.js.map +1 -1
  239. package/build-module/components/inspector-controls/groups.js +5 -3
  240. package/build-module/components/inspector-controls/groups.js.map +1 -1
  241. package/build-module/components/inspector-controls/slot.js +15 -1
  242. package/build-module/components/inspector-controls/slot.js.map +1 -1
  243. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  244. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  245. package/build-module/components/link-control/index.js +12 -2
  246. package/build-module/components/link-control/index.js.map +1 -1
  247. package/build-module/components/list-view/block-select-button.js +1 -3
  248. package/build-module/components/list-view/block-select-button.js.map +1 -1
  249. package/build-module/components/list-view/block.js +13 -1
  250. package/build-module/components/list-view/block.js.map +1 -1
  251. package/build-module/components/list-view/use-block-selection.js +30 -25
  252. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  253. package/build-module/components/media-placeholder/index.js +2 -2
  254. package/build-module/components/media-placeholder/index.js.map +1 -1
  255. package/build-module/components/media-placeholder/index.native.js +7 -7
  256. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  257. package/build-module/components/media-replace-flow/index.js +2 -3
  258. package/build-module/components/media-replace-flow/index.js.map +1 -1
  259. package/build-module/components/media-upload/constants.js +14 -0
  260. package/build-module/components/media-upload/constants.js.map +1 -0
  261. package/build-module/components/media-upload/index.native.js +53 -34
  262. package/build-module/components/media-upload/index.native.js.map +1 -1
  263. package/build-module/components/preview-options/index.js +1 -1
  264. package/build-module/components/preview-options/index.js.map +1 -1
  265. package/build-module/components/rich-text/index.js +35 -37
  266. package/build-module/components/rich-text/index.js.map +1 -1
  267. package/build-module/components/rich-text/index.native.js +15 -33
  268. package/build-module/components/rich-text/index.native.js.map +1 -1
  269. package/build-module/components/rich-text/multiline.js +87 -0
  270. package/build-module/components/rich-text/multiline.js.map +1 -0
  271. package/build-module/components/rich-text/split-value.js +10 -16
  272. package/build-module/components/rich-text/split-value.js.map +1 -1
  273. package/build-module/components/rich-text/use-enter.js +33 -42
  274. package/build-module/components/rich-text/use-enter.js.map +1 -1
  275. package/build-module/components/rich-text/use-paste-handler.js +19 -34
  276. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  277. package/build-module/components/spacing-sizes-control/utils.js +2 -2
  278. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  279. package/build-module/components/use-block-commands/index.js +28 -16
  280. package/build-module/components/use-block-commands/index.js.map +1 -1
  281. package/build-module/components/use-block-display-information/index.js +5 -2
  282. package/build-module/components/use-block-display-information/index.js.map +1 -1
  283. package/build-module/hooks/background.js +244 -0
  284. package/build-module/hooks/background.js.map +1 -0
  285. package/build-module/hooks/block-hooks.js +181 -0
  286. package/build-module/hooks/block-hooks.js.map +1 -0
  287. package/build-module/hooks/block-rename-ui.js +153 -0
  288. package/build-module/hooks/block-rename-ui.js.map +1 -0
  289. package/build-module/hooks/duotone.js +26 -39
  290. package/build-module/hooks/duotone.js.map +1 -1
  291. package/build-module/hooks/index.js +2 -2
  292. package/build-module/hooks/index.js.map +1 -1
  293. package/build-module/hooks/layout.js +33 -16
  294. package/build-module/hooks/layout.js.map +1 -1
  295. package/build-module/hooks/position.js +4 -2
  296. package/build-module/hooks/position.js.map +1 -1
  297. package/build-module/hooks/style.js +10 -3
  298. package/build-module/hooks/style.js.map +1 -1
  299. package/build-module/private-apis.js +2 -0
  300. package/build-module/private-apis.js.map +1 -1
  301. package/build-module/store/actions.js +33 -10
  302. package/build-module/store/actions.js.map +1 -1
  303. package/build-module/store/private-actions.js +39 -8
  304. package/build-module/store/private-actions.js.map +1 -1
  305. package/build-module/store/private-selectors.js +21 -0
  306. package/build-module/store/private-selectors.js.map +1 -1
  307. package/build-module/store/reducer.js +41 -1
  308. package/build-module/store/reducer.js.map +1 -1
  309. package/build-module/store/selectors.js +78 -22
  310. package/build-module/store/selectors.js.map +1 -1
  311. package/build-module/store/utils.js +0 -4
  312. package/build-module/store/utils.js.map +1 -1
  313. package/build-style/content-rtl.css +0 -1
  314. package/build-style/content.css +0 -1
  315. package/build-style/style-rtl.css +170 -127
  316. package/build-style/style.css +170 -127
  317. package/package.json +32 -32
  318. package/src/components/block-canvas/index.js +108 -0
  319. package/src/components/block-inspector/index.js +5 -1
  320. package/src/components/block-list/content.scss +0 -1
  321. package/src/components/block-patterns-list/index.js +32 -7
  322. package/src/components/block-patterns-list/style.scss +26 -9
  323. package/src/components/block-patterns-paging/index.js +92 -0
  324. package/src/components/block-patterns-paging/style.scss +42 -0
  325. package/src/components/block-settings-menu/block-settings-dropdown.js +44 -0
  326. package/src/components/block-settings-menu-controls/index.js +4 -9
  327. package/src/components/block-styles/index.js +1 -0
  328. package/src/components/block-styles/style.scss +3 -3
  329. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -6
  330. package/src/components/block-tools/block-contextual-toolbar.js +16 -5
  331. package/src/components/block-tools/block-selection-button.js +9 -1
  332. package/src/components/block-tools/style.scss +0 -98
  333. package/src/components/border-radius-control/input-controls.js +1 -1
  334. package/src/components/border-radius-control/linked-button.js +8 -11
  335. package/src/components/color-palette/test/__snapshots__/control.js.snap +34 -21
  336. package/src/components/colors/with-colors.js +3 -2
  337. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -35
  338. package/src/components/default-block-appender/index.native.js +26 -3
  339. package/src/components/duotone/utils.js +65 -0
  340. package/src/components/editor-styles/index.js +32 -23
  341. package/src/components/global-styles/hooks.js +4 -112
  342. package/src/components/global-styles/image-settings-panel.js +71 -0
  343. package/src/components/global-styles/index.js +4 -3
  344. package/src/components/global-styles/use-global-styles-output.js +25 -16
  345. package/src/components/global-styles/utils.js +1 -2
  346. package/src/components/iframe/index.js +72 -33
  347. package/src/components/image-editor/use-save-image.js +2 -9
  348. package/src/components/image-editor/use-transform-image.js +9 -9
  349. package/src/components/index.js +1 -1
  350. package/src/components/index.native.js +2 -2
  351. package/src/components/inner-blocks/use-nested-settings-update.js +15 -10
  352. package/src/components/inserter/block-patterns-explorer/explorer.js +17 -5
  353. package/src/components/inserter/block-patterns-explorer/patterns-list.js +109 -40
  354. package/src/components/inserter/block-patterns-explorer/sidebar.js +23 -8
  355. package/src/components/inserter/block-patterns-source-filter.js +40 -0
  356. package/src/components/inserter/block-patterns-sync-filter.js +35 -0
  357. package/src/components/inserter/block-patterns-tab.js +168 -57
  358. package/src/components/inserter/hooks/use-patterns-paging.js +65 -0
  359. package/src/components/inserter/hooks/use-patterns-state.js +27 -16
  360. package/src/components/inserter/menu.js +15 -17
  361. package/src/components/inserter/search-results.js +6 -4
  362. package/src/components/inserter/style.scss +23 -2
  363. package/src/components/inserter/tabs.js +2 -12
  364. package/src/components/inserter/test/index.native.js +8 -12
  365. package/src/components/inspector-controls/block-support-slot-container.js +19 -3
  366. package/src/components/inspector-controls/fill.js +28 -14
  367. package/src/components/inspector-controls/groups.js +6 -2
  368. package/src/components/inspector-controls/slot.js +28 -3
  369. package/src/components/inspector-controls-tabs/styles-tab.js +4 -0
  370. package/src/components/link-control/index.js +13 -0
  371. package/src/components/link-control/style.scss +23 -2
  372. package/src/components/link-control/test/index.js +88 -6
  373. package/src/components/list-view/block-select-button.js +1 -3
  374. package/src/components/list-view/block.js +19 -1
  375. package/src/components/list-view/style.scss +1 -2
  376. package/src/components/list-view/use-block-selection.js +38 -32
  377. package/src/components/media-placeholder/README.md +2 -2
  378. package/src/components/media-placeholder/index.js +2 -2
  379. package/src/components/media-placeholder/index.native.js +11 -12
  380. package/src/components/media-replace-flow/index.js +2 -2
  381. package/src/components/media-replace-flow/test/index.js +5 -23
  382. package/src/components/media-upload/README.md +3 -2
  383. package/src/components/media-upload/constants.js +15 -0
  384. package/src/components/media-upload/index.native.js +66 -40
  385. package/src/components/media-upload/style.native.scss +4 -0
  386. package/src/components/media-upload/test/index.native.js +2 -2
  387. package/src/components/preview-options/README.md +7 -0
  388. package/src/components/preview-options/index.js +1 -1
  389. package/src/components/rich-text/index.js +48 -44
  390. package/src/components/rich-text/index.native.js +14 -42
  391. package/src/components/rich-text/multiline.js +121 -0
  392. package/src/components/rich-text/split-value.js +10 -35
  393. package/src/components/rich-text/use-enter.js +32 -42
  394. package/src/components/rich-text/use-paste-handler.js +16 -40
  395. package/src/components/spacing-sizes-control/style.scss +5 -7
  396. package/src/components/spacing-sizes-control/utils.js +1 -2
  397. package/src/components/use-block-commands/index.js +28 -20
  398. package/src/components/use-block-display-information/index.js +3 -0
  399. package/src/hooks/background.js +288 -0
  400. package/src/hooks/background.scss +57 -0
  401. package/src/hooks/block-hooks.js +257 -0
  402. package/src/hooks/block-hooks.scss +16 -0
  403. package/src/hooks/block-rename-ui.js +230 -0
  404. package/src/hooks/block-rename-ui.scss +3 -0
  405. package/src/hooks/duotone.js +42 -43
  406. package/src/hooks/index.js +2 -2
  407. package/src/hooks/layout.js +31 -33
  408. package/src/hooks/position.js +4 -3
  409. package/src/hooks/style.js +11 -2
  410. package/src/hooks/test/align.native.js +4 -3
  411. package/src/private-apis.js +2 -0
  412. package/src/store/actions.js +52 -10
  413. package/src/store/private-actions.js +37 -6
  414. package/src/store/private-selectors.js +21 -0
  415. package/src/store/reducer.js +38 -0
  416. package/src/store/selectors.js +107 -26
  417. package/src/store/test/actions.js +19 -8
  418. package/src/store/test/private-actions.js +17 -0
  419. package/src/store/test/reducer.js +25 -0
  420. package/src/store/test/selectors.js +130 -123
  421. package/src/store/utils.js +3 -10
  422. package/src/style.scss +4 -0
  423. package/build/components/duotone/components.js +0 -135
  424. package/build/components/duotone/components.js.map +0 -1
  425. package/build/components/duotone/index.js +0 -38
  426. package/build/components/duotone/index.js.map +0 -1
  427. package/build/components/global-styles/behaviors-panel.js +0 -64
  428. package/build/components/global-styles/behaviors-panel.js.map +0 -1
  429. package/build/components/inserter/reusable-blocks-tab.js +0 -85
  430. package/build/components/inserter/reusable-blocks-tab.js.map +0 -1
  431. package/build/hooks/auto-inserting-blocks.js +0 -174
  432. package/build/hooks/auto-inserting-blocks.js.map +0 -1
  433. package/build/hooks/behaviors.js +0 -173
  434. package/build/hooks/behaviors.js.map +0 -1
  435. package/build-module/components/duotone/components.js +0 -126
  436. package/build-module/components/duotone/components.js.map +0 -1
  437. package/build-module/components/duotone/index.js +0 -3
  438. package/build-module/components/duotone/index.js.map +0 -1
  439. package/build-module/components/global-styles/behaviors-panel.js +0 -57
  440. package/build-module/components/global-styles/behaviors-panel.js.map +0 -1
  441. package/build-module/components/inserter/reusable-blocks-tab.js +0 -76
  442. package/build-module/components/inserter/reusable-blocks-tab.js.map +0 -1
  443. package/build-module/hooks/auto-inserting-blocks.js +0 -167
  444. package/build-module/hooks/auto-inserting-blocks.js.map +0 -1
  445. package/build-module/hooks/behaviors.js +0 -166
  446. package/build-module/hooks/behaviors.js.map +0 -1
  447. package/src/components/duotone/components.js +0 -133
  448. package/src/components/duotone/index.js +0 -7
  449. package/src/components/global-styles/behaviors-panel.js +0 -71
  450. package/src/components/inserter/reusable-blocks-tab.js +0 -84
  451. package/src/components/inserter/test/reusable-blocks-tab.js +0 -73
  452. package/src/hooks/auto-inserting-blocks.js +0 -232
  453. package/src/hooks/behaviors.js +0 -206
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","Button","FormFileUpload","Placeholder","DropZone","withFilters","__","useState","useEffect","useSelect","keyboardReturn","pasteHandler","deprecated","MediaUpload","MediaUploadCheck","URLPopover","store","blockEditorStore","noop","InsertFromURLPopover","src","onChange","onSubmit","onClose","popoverAnchor","createElement","anchor","className","type","placeholder","value","icon","label","URLSelectionUI","isURLInputVisible","onChangeSrc","onSubmitSrc","openURLInput","closeURLInput","setPopoverAnchor","ref","onClick","isPressed","variant","MediaPlaceholder","allowedTypes","labels","mediaPreview","notices","isAppender","accept","addToGallery","multiple","handleUpload","disableDropZone","disableMediaButtons","onError","onSelect","onCancel","onSelectURL","onToggleFeaturedImage","onDoubleClick","onFilesPreUpload","onHTMLDrop","deprecatedOnHTMLDrop","children","mediaLibraryButton","style","since","version","mediaUpload","select","getSettings","setSrc","setIsURLInputVisible","_value$src","onlyAllowsImages","length","every","allowedType","startsWith","event","target","preventDefault","onFilesUpload","files","setMedia","lastMediaPassed","newMedia","filteredMedia","filter","item","id","some","Number","urlSlug","url","includes","concat","map","media","cutOffIndex","lastIndexOf","slice","filesList","onFileChange","handleBlocksDrop","blocks","Array","isArray","recursivelyFindMediaFromBlocks","_blocks","flatMap","block","name","attributes","innerBlocks","mediaBlocks","uploadedMediaList","Promise","all","resolve","reject","window","fetch","then","response","blob","additionalData","title","alt_text","alt","caption","catch","err","HTML","onUpload","defaultRenderPlaceholder","content","instructions","undefined","typesAllowed","firstAllowedType","isOneType","isAudio","isImage","isVideo","placeholderClassName","preview","renderPlaceholder","renderDropZone","onFilesDrop","renderCancelLink","renderUrlSelectionUI","renderFeaturedImageToggle","renderMediaUploadChecked","defaultButton","open","libraryButton","uploadMediaLibraryButton","gallery","mode","render","Fragment","openFileDialog","fallback"],"sources":["@wordpress/block-editor/src/components/media-placeholder/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tFormFileUpload,\n\tPlaceholder,\n\tDropZone,\n\twithFilters,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { keyboardReturn } from '@wordpress/icons';\nimport { pasteHandler } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport URLPopover from '../url-popover';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\n\nconst InsertFromURLPopover = ( {\n\tsrc,\n\tonChange,\n\tonSubmit,\n\tonClose,\n\tpopoverAnchor,\n} ) => (\n\t<URLPopover anchor={ popoverAnchor } onClose={ onClose }>\n\t\t<form\n\t\t\tclassName=\"block-editor-media-placeholder__url-input-form\"\n\t\t\tonSubmit={ onSubmit }\n\t\t>\n\t\t\t<input\n\t\t\t\tclassName=\"block-editor-media-placeholder__url-input-field\"\n\t\t\t\ttype=\"text\"\n\t\t\t\taria-label={ __( 'URL' ) }\n\t\t\t\tplaceholder={ __( 'Paste or type URL' ) }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tvalue={ src }\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\tclassName=\"block-editor-media-placeholder__url-input-submit-button\"\n\t\t\t\ticon={ keyboardReturn }\n\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\ttype=\"submit\"\n\t\t\t/>\n\t\t</form>\n\t</URLPopover>\n);\n\nconst URLSelectionUI = ( {\n\tisURLInputVisible,\n\tsrc,\n\tonChangeSrc,\n\tonSubmitSrc,\n\topenURLInput,\n\tcloseURLInput,\n} ) => {\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-media-placeholder__url-input-container\"\n\t\t\tref={ setPopoverAnchor }\n\t\t>\n\t\t\t<Button\n\t\t\t\tclassName=\"block-editor-media-placeholder__button\"\n\t\t\t\tonClick={ openURLInput }\n\t\t\t\tisPressed={ isURLInputVisible }\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t>\n\t\t\t\t{ __( 'Insert from URL' ) }\n\t\t\t</Button>\n\t\t\t{ isURLInputVisible && (\n\t\t\t\t<InsertFromURLPopover\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tonChange={ onChangeSrc }\n\t\t\t\t\tonSubmit={ onSubmitSrc }\n\t\t\t\t\tonClose={ closeURLInput }\n\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport function MediaPlaceholder( {\n\tvalue = {},\n\tallowedTypes,\n\tclassName,\n\ticon,\n\tlabels = {},\n\tmediaPreview,\n\tnotices,\n\tisAppender,\n\taccept,\n\taddToGallery,\n\tmultiple = false,\n\thandleUpload = true,\n\tdisableDropZone,\n\tdisableMediaButtons,\n\tonError,\n\tonSelect,\n\tonCancel,\n\tonSelectURL,\n\tonToggleFeaturedImage,\n\tonDoubleClick,\n\tonFilesPreUpload = noop,\n\tonHTMLDrop: deprecatedOnHTMLDrop,\n\tchildren,\n\tmediaLibraryButton,\n\tplaceholder,\n\tstyle,\n} ) {\n\tif ( deprecatedOnHTMLDrop ) {\n\t\tdeprecated( 'wp.blockEditor.MediaPlaceholder onHTMLDrop prop', {\n\t\t\tsince: '6.2',\n\t\t\tversion: '6.4',\n\t\t} );\n\t}\n\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().mediaUpload;\n\t}, [] );\n\tconst [ src, setSrc ] = useState( '' );\n\tconst [ isURLInputVisible, setIsURLInputVisible ] = useState( false );\n\n\tuseEffect( () => {\n\t\tsetSrc( value?.src ?? '' );\n\t}, [ value?.src ] );\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst onChangeSrc = ( event ) => {\n\t\tsetSrc( event.target.value );\n\t};\n\n\tconst openURLInput = () => {\n\t\tsetIsURLInputVisible( true );\n\t};\n\tconst closeURLInput = () => {\n\t\tsetIsURLInputVisible( false );\n\t};\n\n\tconst onSubmitSrc = ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( src && onSelectURL ) {\n\t\t\tonSelectURL( src );\n\t\t\tcloseURLInput();\n\t\t}\n\t};\n\n\tconst onFilesUpload = ( files ) => {\n\t\tif ( ! handleUpload ) {\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesPreUpload( files );\n\t\tlet setMedia;\n\t\tif ( multiple ) {\n\t\t\tif ( addToGallery ) {\n\t\t\t\t// Since the setMedia function runs multiple times per upload group\n\t\t\t\t// and is passed newMedia containing every item in its group each time, we must\n\t\t\t\t// filter out whatever this upload group had previously returned to the\n\t\t\t\t// gallery before adding and returning the image array with replacement newMedia\n\t\t\t\t// values.\n\n\t\t\t\t// Define an array to store urls from newMedia between subsequent function calls.\n\t\t\t\tlet lastMediaPassed = [];\n\t\t\t\tsetMedia = ( newMedia ) => {\n\t\t\t\t\t// Remove any images this upload group is responsible for (lastMediaPassed).\n\t\t\t\t\t// Their replacements are contained in newMedia.\n\t\t\t\t\tconst filteredMedia = ( value ?? [] ).filter( ( item ) => {\n\t\t\t\t\t\t// If Item has id, only remove it if lastMediaPassed has an item with that id.\n\t\t\t\t\t\tif ( item.id ) {\n\t\t\t\t\t\t\treturn ! lastMediaPassed.some(\n\t\t\t\t\t\t\t\t// Be sure to convert to number for comparison.\n\t\t\t\t\t\t\t\t( { id } ) => Number( id ) === Number( item.id )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Compare transient images via .includes since gallery may append extra info onto the url.\n\t\t\t\t\t\treturn ! lastMediaPassed.some( ( { urlSlug } ) =>\n\t\t\t\t\t\t\titem.url.includes( urlSlug )\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t\t// Return the filtered media array along with newMedia.\n\t\t\t\t\tonSelect( filteredMedia.concat( newMedia ) );\n\t\t\t\t\t// Reset lastMediaPassed and set it with ids and urls from newMedia.\n\t\t\t\t\tlastMediaPassed = newMedia.map( ( media ) => {\n\t\t\t\t\t\t// Add everything up to '.fileType' to compare via .includes.\n\t\t\t\t\t\tconst cutOffIndex = media.url.lastIndexOf( '.' );\n\t\t\t\t\t\tconst urlSlug = media.url.slice( 0, cutOffIndex );\n\t\t\t\t\t\treturn { id: media.id, urlSlug };\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tsetMedia = onSelect;\n\t\t\t}\n\t\t} else {\n\t\t\tsetMedia = ( [ media ] ) => onSelect( media );\n\t\t}\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: setMedia,\n\t\t\tonError,\n\t\t} );\n\t};\n\n\tasync function handleBlocksDrop( blocks ) {\n\t\tif ( ! blocks || ! Array.isArray( blocks ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction recursivelyFindMediaFromBlocks( _blocks ) {\n\t\t\treturn _blocks.flatMap( ( block ) =>\n\t\t\t\t( block.name === 'core/image' ||\n\t\t\t\t\tblock.name === 'core/audio' ||\n\t\t\t\t\tblock.name === 'core/video' ) &&\n\t\t\t\tblock.attributes.url\n\t\t\t\t\t? [ block ]\n\t\t\t\t\t: recursivelyFindMediaFromBlocks( block.innerBlocks )\n\t\t\t);\n\t\t}\n\n\t\tconst mediaBlocks = recursivelyFindMediaFromBlocks( blocks );\n\n\t\tif ( ! mediaBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst uploadedMediaList = await Promise.all(\n\t\t\tmediaBlocks.map( ( block ) =>\n\t\t\t\tblock.attributes.id\n\t\t\t\t\t? block.attributes\n\t\t\t\t\t: new Promise( ( resolve, reject ) => {\n\t\t\t\t\t\t\twindow\n\t\t\t\t\t\t\t\t.fetch( block.attributes.url )\n\t\t\t\t\t\t\t\t.then( ( response ) => response.blob() )\n\t\t\t\t\t\t\t\t.then( ( blob ) =>\n\t\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\t\t\t\t\tadditionalData: {\n\t\t\t\t\t\t\t\t\t\t\ttitle: block.attributes.title,\n\t\t\t\t\t\t\t\t\t\t\talt_text: block.attributes.alt,\n\t\t\t\t\t\t\t\t\t\t\tcaption: block.attributes.caption,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( media.id ) {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( media );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tallowedTypes,\n\t\t\t\t\t\t\t\t\t\tonError: reject,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.catch( () => resolve( block.attributes.url ) );\n\t\t\t\t\t } )\n\t\t\t)\n\t\t).catch( ( err ) => onError( err ) );\n\n\t\tif ( multiple ) {\n\t\t\tonSelect( uploadedMediaList );\n\t\t} else {\n\t\t\tonSelect( uploadedMediaList[ 0 ] );\n\t\t}\n\t}\n\n\tasync function onHTMLDrop( HTML ) {\n\t\tconst blocks = pasteHandler( { HTML } );\n\t\treturn await handleBlocksDrop( blocks );\n\t}\n\n\tconst onUpload = ( event ) => {\n\t\tonFilesUpload( event.target.files );\n\t};\n\n\tconst defaultRenderPlaceholder = ( content ) => {\n\t\tlet { instructions, title } = labels;\n\n\t\tif ( ! mediaUpload && ! onSelectURL ) {\n\t\t\tinstructions = __(\n\t\t\t\t'To edit this block, you need permission to upload media.'\n\t\t\t);\n\t\t}\n\n\t\tif ( instructions === undefined || title === undefined ) {\n\t\t\tconst typesAllowed = allowedTypes ?? [];\n\n\t\t\tconst [ firstAllowedType ] = typesAllowed;\n\t\t\tconst isOneType = 1 === typesAllowed.length;\n\t\t\tconst isAudio = isOneType && 'audio' === firstAllowedType;\n\t\t\tconst isImage = isOneType && 'image' === firstAllowedType;\n\t\t\tconst isVideo = isOneType && 'video' === firstAllowedType;\n\n\t\t\tif ( instructions === undefined && mediaUpload ) {\n\t\t\t\tinstructions = __(\n\t\t\t\t\t'Upload a media file or pick one from your media library.'\n\t\t\t\t);\n\n\t\t\t\tif ( isAudio ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload an audio file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( isImage ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( isVideo ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload a video file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( title === undefined ) {\n\t\t\t\ttitle = __( 'Media' );\n\n\t\t\t\tif ( isAudio ) {\n\t\t\t\t\ttitle = __( 'Audio' );\n\t\t\t\t} else if ( isImage ) {\n\t\t\t\t\ttitle = __( 'Image' );\n\t\t\t\t} else if ( isVideo ) {\n\t\t\t\t\ttitle = __( 'Video' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst placeholderClassName = classnames(\n\t\t\t'block-editor-media-placeholder',\n\t\t\tclassName,\n\t\t\t{\n\t\t\t\t'is-appender': isAppender,\n\t\t\t}\n\t\t);\n\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ title }\n\t\t\t\tinstructions={ instructions }\n\t\t\t\tclassName={ placeholderClassName }\n\t\t\t\tnotices={ notices }\n\t\t\t\tonDoubleClick={ onDoubleClick }\n\t\t\t\tpreview={ mediaPreview }\n\t\t\t\tstyle={ style }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t\t{ children }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\tconst renderPlaceholder = placeholder ?? defaultRenderPlaceholder;\n\n\tconst renderDropZone = () => {\n\t\tif ( disableDropZone ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<DropZone onFilesDrop={ onFilesUpload } onHTMLDrop={ onHTMLDrop } />\n\t\t);\n\t};\n\n\tconst renderCancelLink = () => {\n\t\treturn (\n\t\t\tonCancel && (\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"block-editor-media-placeholder__cancel-button\"\n\t\t\t\t\ttitle={ __( 'Cancel' ) }\n\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\tonClick={ onCancel }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderUrlSelectionUI = () => {\n\t\treturn (\n\t\t\tonSelectURL && (\n\t\t\t\t<URLSelectionUI\n\t\t\t\t\tisURLInputVisible={ isURLInputVisible }\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tonChangeSrc={ onChangeSrc }\n\t\t\t\t\tonSubmitSrc={ onSubmitSrc }\n\t\t\t\t\topenURLInput={ openURLInput }\n\t\t\t\t\tcloseURLInput={ closeURLInput }\n\t\t\t\t/>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderFeaturedImageToggle = () => {\n\t\treturn (\n\t\t\tonToggleFeaturedImage && (\n\t\t\t\t<div className=\"block-editor-media-placeholder__url-input-container\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-media-placeholder__button\"\n\t\t\t\t\t\tonClick={ onToggleFeaturedImage }\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Use featured image' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderMediaUploadChecked = () => {\n\t\tconst defaultButton = ( { open } ) => {\n\t\t\treturn (\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\topen();\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Media Library' ) }\n\t\t\t\t</Button>\n\t\t\t);\n\t\t};\n\t\tconst libraryButton = mediaLibraryButton ?? defaultButton;\n\t\tconst uploadMediaLibraryButton = (\n\t\t\t<MediaUpload\n\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\tgallery={ multiple && onlyAllowsImages() }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\tmode={ 'browse' }\n\t\t\t\tvalue={\n\t\t\t\t\tArray.isArray( value )\n\t\t\t\t\t\t? value.map( ( { id } ) => id )\n\t\t\t\t\t\t: value.id\n\t\t\t\t}\n\t\t\t\trender={ libraryButton }\n\t\t\t/>\n\t\t);\n\n\t\tif ( mediaUpload && isAppender ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{ renderDropZone() }\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\tonChange={ onUpload }\n\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__button',\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__upload-button'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t{ uploadMediaLibraryButton }\n\t\t\t\t\t\t\t\t\t{ renderUrlSelectionUI() }\n\t\t\t\t\t\t\t\t\t{ renderFeaturedImageToggle() }\n\t\t\t\t\t\t\t\t\t{ renderCancelLink() }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn renderPlaceholder( content );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\n\t\tif ( mediaUpload ) {\n\t\t\tconst content = (\n\t\t\t\t<>\n\t\t\t\t\t{ renderDropZone() }\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-media-placeholder__button',\n\t\t\t\t\t\t\t'block-editor-media-placeholder__upload-button'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonChange={ onUpload }\n\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t</FormFileUpload>\n\t\t\t\t\t{ uploadMediaLibraryButton }\n\t\t\t\t\t{ renderUrlSelectionUI() }\n\t\t\t\t\t{ renderFeaturedImageToggle() }\n\t\t\t\t\t{ renderCancelLink() }\n\t\t\t\t</>\n\t\t\t);\n\t\t\treturn renderPlaceholder( content );\n\t\t}\n\n\t\treturn renderPlaceholder( uploadMediaLibraryButton );\n\t};\n\n\tif ( disableMediaButtons ) {\n\t\treturn <MediaUploadCheck>{ renderDropZone() }</MediaUploadCheck>;\n\t}\n\n\treturn (\n\t\t<MediaUploadCheck\n\t\t\tfallback={ renderPlaceholder( renderUrlSelectionUI() ) }\n\t\t>\n\t\t\t{ renderMediaUploadChecked() }\n\t\t</MediaUploadCheck>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-placeholder/README.md\n */\nexport default withFilters( 'editor.MediaPlaceholder' )( MediaPlaceholder );\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","Button","FormFileUpload","Placeholder","DropZone","withFilters","__","useState","useEffect","useSelect","keyboardReturn","pasteHandler","deprecated","MediaUpload","MediaUploadCheck","URLPopover","store","blockEditorStore","noop","InsertFromURLPopover","src","onChange","onSubmit","onClose","popoverAnchor","createElement","anchor","className","type","placeholder","value","icon","label","URLSelectionUI","isURLInputVisible","onChangeSrc","onSubmitSrc","openURLInput","closeURLInput","setPopoverAnchor","ref","onClick","isPressed","variant","MediaPlaceholder","allowedTypes","labels","mediaPreview","notices","isAppender","accept","addToGallery","multiple","handleUpload","disableDropZone","disableMediaButtons","onError","onSelect","onCancel","onSelectURL","onToggleFeaturedImage","onDoubleClick","onFilesPreUpload","onHTMLDrop","deprecatedOnHTMLDrop","children","mediaLibraryButton","style","since","version","mediaUpload","select","getSettings","setSrc","setIsURLInputVisible","_value$src","onlyAllowsImages","length","every","allowedType","startsWith","event","target","preventDefault","onFilesUpload","files","setMedia","lastMediaPassed","newMedia","filteredMedia","filter","item","id","some","Number","urlSlug","url","includes","concat","map","media","cutOffIndex","lastIndexOf","slice","filesList","onFileChange","handleBlocksDrop","blocks","Array","isArray","recursivelyFindMediaFromBlocks","_blocks","flatMap","block","name","attributes","innerBlocks","mediaBlocks","uploadedMediaList","Promise","all","resolve","reject","window","fetch","then","response","blob","additionalData","title","alt_text","alt","caption","catch","err","HTML","onUpload","defaultRenderPlaceholder","content","instructions","undefined","typesAllowed","firstAllowedType","isOneType","isAudio","isImage","isVideo","placeholderClassName","preview","renderPlaceholder","renderDropZone","onFilesDrop","renderCancelLink","renderUrlSelectionUI","renderFeaturedImageToggle","renderMediaUploadChecked","defaultButton","open","libraryButton","uploadMediaLibraryButton","gallery","mode","render","Fragment","openFileDialog","fallback"],"sources":["@wordpress/block-editor/src/components/media-placeholder/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tFormFileUpload,\n\tPlaceholder,\n\tDropZone,\n\twithFilters,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { keyboardReturn } from '@wordpress/icons';\nimport { pasteHandler } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport URLPopover from '../url-popover';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\n\nconst InsertFromURLPopover = ( {\n\tsrc,\n\tonChange,\n\tonSubmit,\n\tonClose,\n\tpopoverAnchor,\n} ) => (\n\t<URLPopover anchor={ popoverAnchor } onClose={ onClose }>\n\t\t<form\n\t\t\tclassName=\"block-editor-media-placeholder__url-input-form\"\n\t\t\tonSubmit={ onSubmit }\n\t\t>\n\t\t\t<input\n\t\t\t\tclassName=\"block-editor-media-placeholder__url-input-field\"\n\t\t\t\ttype=\"text\"\n\t\t\t\taria-label={ __( 'URL' ) }\n\t\t\t\tplaceholder={ __( 'Paste or type URL' ) }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tvalue={ src }\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\tclassName=\"block-editor-media-placeholder__url-input-submit-button\"\n\t\t\t\ticon={ keyboardReturn }\n\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\ttype=\"submit\"\n\t\t\t/>\n\t\t</form>\n\t</URLPopover>\n);\n\nconst URLSelectionUI = ( {\n\tisURLInputVisible,\n\tsrc,\n\tonChangeSrc,\n\tonSubmitSrc,\n\topenURLInput,\n\tcloseURLInput,\n} ) => {\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-media-placeholder__url-input-container\"\n\t\t\tref={ setPopoverAnchor }\n\t\t>\n\t\t\t<Button\n\t\t\t\tclassName=\"block-editor-media-placeholder__button\"\n\t\t\t\tonClick={ openURLInput }\n\t\t\t\tisPressed={ isURLInputVisible }\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t>\n\t\t\t\t{ __( 'Insert from URL' ) }\n\t\t\t</Button>\n\t\t\t{ isURLInputVisible && (\n\t\t\t\t<InsertFromURLPopover\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tonChange={ onChangeSrc }\n\t\t\t\t\tonSubmit={ onSubmitSrc }\n\t\t\t\t\tonClose={ closeURLInput }\n\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport function MediaPlaceholder( {\n\tvalue = {},\n\tallowedTypes,\n\tclassName,\n\ticon,\n\tlabels = {},\n\tmediaPreview,\n\tnotices,\n\tisAppender,\n\taccept,\n\taddToGallery,\n\tmultiple = false,\n\thandleUpload = true,\n\tdisableDropZone,\n\tdisableMediaButtons,\n\tonError,\n\tonSelect,\n\tonCancel,\n\tonSelectURL,\n\tonToggleFeaturedImage,\n\tonDoubleClick,\n\tonFilesPreUpload = noop,\n\tonHTMLDrop: deprecatedOnHTMLDrop,\n\tchildren,\n\tmediaLibraryButton,\n\tplaceholder,\n\tstyle,\n} ) {\n\tif ( deprecatedOnHTMLDrop ) {\n\t\tdeprecated( 'wp.blockEditor.MediaPlaceholder onHTMLDrop prop', {\n\t\t\tsince: '6.2',\n\t\t\tversion: '6.4',\n\t\t} );\n\t}\n\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().mediaUpload;\n\t}, [] );\n\tconst [ src, setSrc ] = useState( '' );\n\tconst [ isURLInputVisible, setIsURLInputVisible ] = useState( false );\n\n\tuseEffect( () => {\n\t\tsetSrc( value?.src ?? '' );\n\t}, [ value?.src ] );\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst onChangeSrc = ( event ) => {\n\t\tsetSrc( event.target.value );\n\t};\n\n\tconst openURLInput = () => {\n\t\tsetIsURLInputVisible( true );\n\t};\n\tconst closeURLInput = () => {\n\t\tsetIsURLInputVisible( false );\n\t};\n\n\tconst onSubmitSrc = ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( src && onSelectURL ) {\n\t\t\tonSelectURL( src );\n\t\t\tcloseURLInput();\n\t\t}\n\t};\n\n\tconst onFilesUpload = ( files ) => {\n\t\tif ( ! handleUpload ) {\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesPreUpload( files );\n\t\tlet setMedia;\n\t\tif ( multiple ) {\n\t\t\tif ( addToGallery ) {\n\t\t\t\t// Since the setMedia function runs multiple times per upload group\n\t\t\t\t// and is passed newMedia containing every item in its group each time, we must\n\t\t\t\t// filter out whatever this upload group had previously returned to the\n\t\t\t\t// gallery before adding and returning the image array with replacement newMedia\n\t\t\t\t// values.\n\n\t\t\t\t// Define an array to store urls from newMedia between subsequent function calls.\n\t\t\t\tlet lastMediaPassed = [];\n\t\t\t\tsetMedia = ( newMedia ) => {\n\t\t\t\t\t// Remove any images this upload group is responsible for (lastMediaPassed).\n\t\t\t\t\t// Their replacements are contained in newMedia.\n\t\t\t\t\tconst filteredMedia = ( value ?? [] ).filter( ( item ) => {\n\t\t\t\t\t\t// If Item has id, only remove it if lastMediaPassed has an item with that id.\n\t\t\t\t\t\tif ( item.id ) {\n\t\t\t\t\t\t\treturn ! lastMediaPassed.some(\n\t\t\t\t\t\t\t\t// Be sure to convert to number for comparison.\n\t\t\t\t\t\t\t\t( { id } ) => Number( id ) === Number( item.id )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Compare transient images via .includes since gallery may append extra info onto the url.\n\t\t\t\t\t\treturn ! lastMediaPassed.some( ( { urlSlug } ) =>\n\t\t\t\t\t\t\titem.url.includes( urlSlug )\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t\t// Return the filtered media array along with newMedia.\n\t\t\t\t\tonSelect( filteredMedia.concat( newMedia ) );\n\t\t\t\t\t// Reset lastMediaPassed and set it with ids and urls from newMedia.\n\t\t\t\t\tlastMediaPassed = newMedia.map( ( media ) => {\n\t\t\t\t\t\t// Add everything up to '.fileType' to compare via .includes.\n\t\t\t\t\t\tconst cutOffIndex = media.url.lastIndexOf( '.' );\n\t\t\t\t\t\tconst urlSlug = media.url.slice( 0, cutOffIndex );\n\t\t\t\t\t\treturn { id: media.id, urlSlug };\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tsetMedia = onSelect;\n\t\t\t}\n\t\t} else {\n\t\t\tsetMedia = ( [ media ] ) => onSelect( media );\n\t\t}\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: setMedia,\n\t\t\tonError,\n\t\t} );\n\t};\n\n\tasync function handleBlocksDrop( blocks ) {\n\t\tif ( ! blocks || ! Array.isArray( blocks ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction recursivelyFindMediaFromBlocks( _blocks ) {\n\t\t\treturn _blocks.flatMap( ( block ) =>\n\t\t\t\t( block.name === 'core/image' ||\n\t\t\t\t\tblock.name === 'core/audio' ||\n\t\t\t\t\tblock.name === 'core/video' ) &&\n\t\t\t\tblock.attributes.url\n\t\t\t\t\t? [ block ]\n\t\t\t\t\t: recursivelyFindMediaFromBlocks( block.innerBlocks )\n\t\t\t);\n\t\t}\n\n\t\tconst mediaBlocks = recursivelyFindMediaFromBlocks( blocks );\n\n\t\tif ( ! mediaBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst uploadedMediaList = await Promise.all(\n\t\t\tmediaBlocks.map( ( block ) =>\n\t\t\t\tblock.attributes.id\n\t\t\t\t\t? block.attributes\n\t\t\t\t\t: new Promise( ( resolve, reject ) => {\n\t\t\t\t\t\t\twindow\n\t\t\t\t\t\t\t\t.fetch( block.attributes.url )\n\t\t\t\t\t\t\t\t.then( ( response ) => response.blob() )\n\t\t\t\t\t\t\t\t.then( ( blob ) =>\n\t\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\t\t\t\t\tadditionalData: {\n\t\t\t\t\t\t\t\t\t\t\ttitle: block.attributes.title,\n\t\t\t\t\t\t\t\t\t\t\talt_text: block.attributes.alt,\n\t\t\t\t\t\t\t\t\t\t\tcaption: block.attributes.caption,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( media.id ) {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( media );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tallowedTypes,\n\t\t\t\t\t\t\t\t\t\tonError: reject,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.catch( () => resolve( block.attributes.url ) );\n\t\t\t\t\t } )\n\t\t\t)\n\t\t).catch( ( err ) => onError( err ) );\n\n\t\tif ( multiple ) {\n\t\t\tonSelect( uploadedMediaList );\n\t\t} else {\n\t\t\tonSelect( uploadedMediaList[ 0 ] );\n\t\t}\n\t}\n\n\tasync function onHTMLDrop( HTML ) {\n\t\tconst blocks = pasteHandler( { HTML } );\n\t\treturn await handleBlocksDrop( blocks );\n\t}\n\n\tconst onUpload = ( event ) => {\n\t\tonFilesUpload( event.target.files );\n\t};\n\n\tconst defaultRenderPlaceholder = ( content ) => {\n\t\tlet { instructions, title } = labels;\n\n\t\tif ( ! mediaUpload && ! onSelectURL ) {\n\t\t\tinstructions = __(\n\t\t\t\t'To edit this block, you need permission to upload media.'\n\t\t\t);\n\t\t}\n\n\t\tif ( instructions === undefined || title === undefined ) {\n\t\t\tconst typesAllowed = allowedTypes ?? [];\n\n\t\t\tconst [ firstAllowedType ] = typesAllowed;\n\t\t\tconst isOneType = 1 === typesAllowed.length;\n\t\t\tconst isAudio = isOneType && 'audio' === firstAllowedType;\n\t\t\tconst isImage = isOneType && 'image' === firstAllowedType;\n\t\t\tconst isVideo = isOneType && 'video' === firstAllowedType;\n\n\t\t\tif ( instructions === undefined && mediaUpload ) {\n\t\t\t\tinstructions = __(\n\t\t\t\t\t'Upload a media file or pick one from your media library.'\n\t\t\t\t);\n\n\t\t\t\tif ( isAudio ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload an audio file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( isImage ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( isVideo ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload a video file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( title === undefined ) {\n\t\t\t\ttitle = __( 'Media' );\n\n\t\t\t\tif ( isAudio ) {\n\t\t\t\t\ttitle = __( 'Audio' );\n\t\t\t\t} else if ( isImage ) {\n\t\t\t\t\ttitle = __( 'Image' );\n\t\t\t\t} else if ( isVideo ) {\n\t\t\t\t\ttitle = __( 'Video' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst placeholderClassName = classnames(\n\t\t\t'block-editor-media-placeholder',\n\t\t\tclassName,\n\t\t\t{\n\t\t\t\t'is-appender': isAppender,\n\t\t\t}\n\t\t);\n\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ title }\n\t\t\t\tinstructions={ instructions }\n\t\t\t\tclassName={ placeholderClassName }\n\t\t\t\tnotices={ notices }\n\t\t\t\tonDoubleClick={ onDoubleClick }\n\t\t\t\tpreview={ mediaPreview }\n\t\t\t\tstyle={ style }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t\t{ children }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\tconst renderPlaceholder = placeholder ?? defaultRenderPlaceholder;\n\n\tconst renderDropZone = () => {\n\t\tif ( disableDropZone ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<DropZone onFilesDrop={ onFilesUpload } onHTMLDrop={ onHTMLDrop } />\n\t\t);\n\t};\n\n\tconst renderCancelLink = () => {\n\t\treturn (\n\t\t\tonCancel && (\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"block-editor-media-placeholder__cancel-button\"\n\t\t\t\t\ttitle={ __( 'Cancel' ) }\n\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\tonClick={ onCancel }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderUrlSelectionUI = () => {\n\t\treturn (\n\t\t\tonSelectURL && (\n\t\t\t\t<URLSelectionUI\n\t\t\t\t\tisURLInputVisible={ isURLInputVisible }\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tonChangeSrc={ onChangeSrc }\n\t\t\t\t\tonSubmitSrc={ onSubmitSrc }\n\t\t\t\t\topenURLInput={ openURLInput }\n\t\t\t\t\tcloseURLInput={ closeURLInput }\n\t\t\t\t/>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderFeaturedImageToggle = () => {\n\t\treturn (\n\t\t\tonToggleFeaturedImage && (\n\t\t\t\t<div className=\"block-editor-media-placeholder__url-input-container\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-media-placeholder__button\"\n\t\t\t\t\t\tonClick={ onToggleFeaturedImage }\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Use featured image' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderMediaUploadChecked = () => {\n\t\tconst defaultButton = ( { open } ) => {\n\t\t\treturn (\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\topen();\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Media Library' ) }\n\t\t\t\t</Button>\n\t\t\t);\n\t\t};\n\t\tconst libraryButton = mediaLibraryButton ?? defaultButton;\n\t\tconst uploadMediaLibraryButton = (\n\t\t\t<MediaUpload\n\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\tgallery={ multiple && onlyAllowsImages() }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\tmode={ 'browse' }\n\t\t\t\tvalue={\n\t\t\t\t\tArray.isArray( value )\n\t\t\t\t\t\t? value.map( ( { id } ) => id )\n\t\t\t\t\t\t: value.id\n\t\t\t\t}\n\t\t\t\trender={ libraryButton }\n\t\t\t/>\n\t\t);\n\n\t\tif ( mediaUpload && isAppender ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{ renderDropZone() }\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\tonChange={ onUpload }\n\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\tmultiple={ !! multiple }\n\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__button',\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__upload-button'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t{ uploadMediaLibraryButton }\n\t\t\t\t\t\t\t\t\t{ renderUrlSelectionUI() }\n\t\t\t\t\t\t\t\t\t{ renderFeaturedImageToggle() }\n\t\t\t\t\t\t\t\t\t{ renderCancelLink() }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn renderPlaceholder( content );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\n\t\tif ( mediaUpload ) {\n\t\t\tconst content = (\n\t\t\t\t<>\n\t\t\t\t\t{ renderDropZone() }\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'block-editor-media-placeholder__button',\n\t\t\t\t\t\t\t'block-editor-media-placeholder__upload-button'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonChange={ onUpload }\n\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\tmultiple={ !! multiple }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t</FormFileUpload>\n\t\t\t\t\t{ uploadMediaLibraryButton }\n\t\t\t\t\t{ renderUrlSelectionUI() }\n\t\t\t\t\t{ renderFeaturedImageToggle() }\n\t\t\t\t\t{ renderCancelLink() }\n\t\t\t\t</>\n\t\t\t);\n\t\t\treturn renderPlaceholder( content );\n\t\t}\n\n\t\treturn renderPlaceholder( uploadMediaLibraryButton );\n\t};\n\n\tif ( disableMediaButtons ) {\n\t\treturn <MediaUploadCheck>{ renderDropZone() }</MediaUploadCheck>;\n\t}\n\n\treturn (\n\t\t<MediaUploadCheck\n\t\t\tfallback={ renderPlaceholder( renderUrlSelectionUI() ) }\n\t\t>\n\t\t\t{ renderMediaUploadChecked() }\n\t\t</MediaUploadCheck>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-placeholder/README.md\n */\nexport default withFilters( 'editor.MediaPlaceholder' )( MediaPlaceholder );\n"],"mappings":"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"}
@@ -3,13 +3,11 @@ import { createElement, Fragment } from "@wordpress/element";
3
3
  * External dependencies
4
4
  */
5
5
  import { View, Text, TouchableOpacity } from 'react-native';
6
- import { sentenceCase } from 'change-case';
7
6
 
8
7
  /**
9
8
  * WordPress dependencies
10
9
  */
11
10
  import { __, sprintf } from '@wordpress/i18n';
12
- import { MediaUpload, MEDIA_TYPE_IMAGE, MEDIA_TYPE_VIDEO, MEDIA_TYPE_AUDIO } from '@wordpress/block-editor';
13
11
  import { usePreferredColorSchemeStyle } from '@wordpress/compose';
14
12
  import { cloneElement, useCallback, useRef } from '@wordpress/element';
15
13
  import { Icon, plusCircleFilled } from '@wordpress/icons';
@@ -19,6 +17,8 @@ import { Icon, plusCircleFilled } from '@wordpress/icons';
19
17
  */
20
18
  import styles from './styles.scss';
21
19
  import { useBlockEditContext } from '../block-edit/context';
20
+ import MediaUpload from '../media-upload';
21
+ import { MEDIA_TYPE_IMAGE, MEDIA_TYPE_VIDEO, MEDIA_TYPE_AUDIO } from '../media-upload/constants';
22
22
  const isMediaEqual = (media1, media2) => media1.id === media2.id || media1.url === media2.url;
23
23
 
24
24
  // Remove duplicates after gallery append.
@@ -80,13 +80,13 @@ function MediaPlaceholder(props) {
80
80
  let instructions = labels.instructions;
81
81
  if (instructions === undefined) {
82
82
  if (isImage) {
83
- instructions = __('ADD IMAGE');
83
+ instructions = __('Add image');
84
84
  } else if (isVideo) {
85
- instructions = __('ADD VIDEO');
85
+ instructions = __('Add video');
86
86
  } else if (isAudio) {
87
- instructions = __('ADD AUDIO');
87
+ instructions = __('Add audio');
88
88
  } else {
89
- instructions = __('ADD IMAGE OR VIDEO');
89
+ instructions = __('Add image or video');
90
90
  }
91
91
  }
92
92
  let accessibilityHint = __('Double tap to select');
@@ -125,7 +125,7 @@ function MediaPlaceholder(props) {
125
125
  onPress: onButtonPress(open)
126
126
  }, createElement(Text, {
127
127
  style: emptyStateDescriptionStyles
128
- }, sentenceCase(instructions))));
128
+ }, instructions)));
129
129
  } else if (isAppender && !disableMediaButtons) {
130
130
  return createElement(TouchableOpacity, {
131
131
  activeOpacity: 0.5,
@@ -1 +1 @@
1
- {"version":3,"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","createElement","Fragment","style","activeOpacity","accessibilityRole","onPress","testID","color","size","appenderStyle","appender","appenderDark","containerSelectedStyle","containerStyle","isSelected","flex","isReplacingMedia","autoOpen","render","getMediaOptions"],"sources":["@wordpress/block-editor/src/components/media-placeholder/index.native.js"],"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"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,IAAI,EAAEC,IAAI,EAAEC,gBAAgB,QAAQ,cAAc;AAC3D,SAASC,YAAY,QAAQ,aAAa;;AAE1C;AACA;AACA;AACA,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SACCC,WAAW,EACXC,gBAAgB,EAChBC,gBAAgB,EAChBC,gBAAgB,QACV,yBAAyB;AAChC,SAASC,4BAA4B,QAAQ,oBAAoB;AACjE,SAASC,YAAY,EAAEC,WAAW,EAAEC,MAAM,QAAQ,oBAAoB;AACtE,SAASC,IAAI,EAAEC,gBAAgB,QAAQ,kBAAkB;;AAEzD;AACA;AACA;AACA,OAAOC,MAAM,MAAM,eAAe;AAClC,SAASC,mBAAmB,QAAQ,uBAAuB;AAE3D,MAAMC,YAAY,GAAGA,CAAEC,MAAM,EAAEC,MAAM,KACpCD,MAAM,CAACE,EAAE,KAAKD,MAAM,CAACC,EAAE,IAAIF,MAAM,CAACG,GAAG,KAAKF,MAAM,CAACE,GAAG;;AAErD;AACA,MAAMC,UAAU,GAAKC,KAAK,IACzBA,KAAK,CAACC,MAAM,CACX,CAAEC,YAAY,EAAEC,SAAS,KACxBD,YAAY,CAACE,IAAI,CAAIC,IAAI,IAAMX,YAAY,CAAEW,IAAI,EAAEF,SAAU,CAAE,CAAC,GAC7DD,YAAY,GACZ,CAAE,GAAGA,YAAY,EAAEC,SAAS,CAAE,EAClC,EACD,CAAC;AAEF,MAAMG,OAAO,GAAG;EAAEC,GAAG,EAAE,EAAE;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,KAAK,EAAE;AAAG,CAAC;AAE5D,SAASC,gBAAgBA,CAAEC,KAAK,EAAG;EAClC,MAAM;IACLC,YAAY;IACZC,YAAY,GAAG,EAAE;IACjBC,SAAS,GAAG,EAAE;IACdC,MAAM,GAAG,CAAC,CAAC;IACXC,IAAI;IACJC,QAAQ;IACRC,OAAO;IACPC,8BAA8B;IAC9BC,UAAU;IACVC,mBAAmB;IACnBC,QAAQ;IACRC,KAAK,GAAG,EAAE;IACVC,QAAQ;IACRC,MAAM;IACNC,eAAe;IACfC,WAAW;IACXC,mBAAmB;IACnBC;EACD,CAAC,GAAGlB,KAAK;;EAET;EACA,MAAMmB,QAAQ,GAAG1C,MAAM,CAAEmC,KAAM,CAAC;EAChCO,QAAQ,CAACC,OAAO,GAAGR,KAAK;EAExB,MAAMS,gBAAgB,GAAGxC,mBAAmB,CAAC,CAAC;EAE9C,MAAMyC,aAAa,GAAG9C,WAAW,CAC9B+C,IAAI,IAAQC,KAAK,IAAM;IACxBjB,OAAO,GAAIiB,KAAM,CAAC;IAClBD,IAAI,CAAC,CAAC;EACP,CAAC,EACD,CAAEhB,OAAO,CACV,CAAC;;EAED;EACA,MAAMkB,QAAQ,GACbd,QAAQ,IAAIV,YAAY,GACnByB,QAAQ,IACVpB,QAAQ,CACPnB,UAAU,CAAE,CAAE,GAAGgC,QAAQ,CAACC,OAAO,EAAE,GAAGM,QAAQ,CAAG,CAClD,CAAC,GACDpB,QAAQ;EAEZ,MAAMqB,SAAS,GAAGzB,YAAY,CAAC0B,MAAM,KAAK,CAAC;EAC3C,MAAMC,OAAO,GAAGF,SAAS,IAAIzB,YAAY,CAAC4B,QAAQ,CAAE3D,gBAAiB,CAAC;EACtE,MAAM4D,OAAO,GAAGJ,SAAS,IAAIzB,YAAY,CAAC4B,QAAQ,CAAE1D,gBAAiB,CAAC;EACtE,MAAM4D,OAAO,GAAGL,SAAS,IAAIzB,YAAY,CAAC4B,QAAQ,CAAEzD,gBAAiB,CAAC;EAEtE,IAAI4D,gBAAgB,GAAG7B,MAAM,CAAC8B,KAAK;EACnC,IAAKD,gBAAgB,KAAKE,SAAS,EAAG;IACrCF,gBAAgB,GAAGjE,EAAE,CAAE,OAAQ,CAAC;IAChC,IAAK6D,OAAO,EAAG;MACdI,gBAAgB,GAAGjE,EAAE,CAAE,OAAQ,CAAC;IACjC,CAAC,MAAM,IAAK+D,OAAO,EAAG;MACrBE,gBAAgB,GAAGjE,EAAE,CAAE,OAAQ,CAAC;IACjC,CAAC,MAAM,IAAKgE,OAAO,EAAG;MACrBC,gBAAgB,GAAGjE,EAAE,CAAE,OAAQ,CAAC;IACjC;EACD;EAEA,IAAIoE,YAAY,GAAGhC,MAAM,CAACgC,YAAY;EACtC,IAAKA,YAAY,KAAKD,SAAS,EAAG;IACjC,IAAKN,OAAO,EAAG;MACdO,YAAY,GAAGpE,EAAE,CAAE,WAAY,CAAC;IACjC,CAAC,MAAM,IAAK+D,OAAO,EAAG;MACrBK,YAAY,GAAGpE,EAAE,CAAE,WAAY,CAAC;IACjC,CAAC,MAAM,IAAKgE,OAAO,EAAG;MACrBI,YAAY,GAAGpE,EAAE,CAAE,WAAY,CAAC;IACjC,CAAC,MAAM;MACNoE,YAAY,GAAGpE,EAAE,CAAE,oBAAqB,CAAC;IAC1C;EACD;EAEA,IAAIqE,iBAAiB,GAAGrE,EAAE,CAAE,sBAAuB,CAAC;EACpD,IAAK6D,OAAO,EAAG;IACdQ,iBAAiB,GAAGrE,EAAE,CAAE,+BAAgC,CAAC;EAC1D,CAAC,MAAM,IAAK+D,OAAO,EAAG;IACrBM,iBAAiB,GAAGrE,EAAE,CAAE,8BAA+B,CAAC;EACzD,CAAC,MAAM,IAAKgE,OAAO,EAAG;IACrBK,iBAAiB,GAAGrE,EAAE,CAAE,oCAAqC,CAAC;EAC/D;EAEA,MAAMsE,WAAW,GAAGhE,4BAA4B,CAC/CM,MAAM,CAAE,iCAAiC,CAAE,EAC3CA,MAAM,CAAE,uCAAuC,CAChD,CAAC;EACD,MAAM2D,mBAAmB,GAAGjE,4BAA4B,CACvDM,MAAM,CAAC4D,cAAc,EACrB5D,MAAM,CAAC6D,kBACR,CAAC;EACD,MAAMC,YAAY,GAAGpE,4BAA4B,CAChDM,MAAM,CAAE,2BAA2B,CAAE,EACrCA,MAAM,CAAE,iCAAiC,CAC1C,CAAC;EACD,MAAM+D,2BAA2B,GAAGrE,4BAA4B,CAC/DM,MAAM,CAACgE,qBAAqB,EAC5BhE,MAAM,CAACiE,yBACR,CAAC;EACD,MAAMC,UAAU,GAAGxE,4BAA4B,CAC9CM,MAAM,CAAE,gCAAgC,CAAE,EAC1CA,MAAM,CAAE,sCAAsC,CAC/C,CAAC;EACD,MAAMmE,eAAe,GAAGxE,YAAY,CAAE8B,IAAI,EAAE;IAC3C2C,IAAI,EAAEF,UAAU,CAACE;EAClB,CAAE,CAAC;EACH,MAAMC,kBAAkB,GAAGhF,OAAO,EACjC;EACAD,EAAE,CAAE,iBAAkB,CAAC,EACvBiE,gBACD,CAAC;EAED,MAAMiB,aAAa,GAAK3B,IAAI,IAAM;IACjC,IAAKd,UAAU,KAAK0B,SAAS,IAAI,CAAE1B,UAAU,EAAG;MAC/C,OACC0C,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACvF,IAAI;QAACyF,KAAK,EAAGzE,MAAM,CAAE,2BAA2B;MAAI,GACpDuE,aAAA,CAACvF,IAAI;QAACyF,KAAK,EAAGP;MAAY,GAAGC,eAAuB,CAAC,EACrDI,aAAA,CAACtF,IAAI;QAACwF,KAAK,EAAGf;MAAa,GAAGL,gBAAwB,CACjD,CAAC,EACLpB,QAAQ,EACVsC,aAAA,CAACrF,gBAAgB;QAChBwF,aAAa,EAAG,GAAK;QACrBL,kBAAkB,EAAGA,kBAAoB;QACzCI,KAAK,EAAGX,YAAc;QACtBa,iBAAiB,EAAG,QAAU;QAC9BlB,iBAAiB,EAAGA,iBAAmB;QACvC3C,OAAO,EAAGA,OAAS;QACnB8D,OAAO,EAAGlC,aAAa,CAAEC,IAAK;MAAG,GAEjC4B,aAAA,CAACtF,IAAI;QAACwF,KAAK,EAAGV;MAA6B,GACxC5E,YAAY,CAAEqE,YAAa,CACxB,CACW,CACjB,CAAC;IAEL,CAAC,MAAM,IAAK3B,UAAU,IAAI,CAAEC,mBAAmB,EAAG;MACjD,OACCyC,aAAA,CAACrF,gBAAgB;QAChBwF,aAAa,EAAG,GAAK;QACrBL,kBAAkB,EAAGA,kBAAoB;QACzCI,KAAK,EAAGzE,MAAM,CAAE,6BAA6B,CAAI;QACjD2E,iBAAiB,EAAG,QAAU;QAC9BlB,iBAAiB,EAAGA,iBAAmB;QACvC3C,OAAO,EAAGA,OAAS;QACnB8D,OAAO,EAAGlC,aAAa,CAAEC,IAAK;MAAG,GAEjC4B,aAAA,CAACvF,IAAI;QAAC6F,MAAM,EAAC;MAAiC,GAC7CN,aAAA,CAACzE,IAAI;QACJ2B,IAAI,EAAG1B,gBAAkB;QACzB0E,KAAK,EAAGd,mBAAqB;QAC7BmB,KAAK,EAAGnB,mBAAmB,CAACmB,KAAO;QACnCC,IAAI,EAAGpB,mBAAmB,CAACoB;MAAM,CACjC,CACI,CACW,CAAC;IAErB;EACD,CAAC;EAED,MAAMC,aAAa,GAAGtF,4BAA4B,CACjDM,MAAM,CAACiF,QAAQ,EACfjF,MAAM,CAACkF,YACR,CAAC;EACD,MAAMC,sBAAsB,GAAGzF,4BAA4B,CAC1DM,MAAM,CAAE,uCAAuC,CAAE,EACjDA,MAAM,CAAE,6CAA6C,CACtD,CAAC;EACD,MAAMoF,cAAc,GAAG,CACtB1F,4BAA4B,CAC3BM,MAAM,CAAE,8BAA8B,CAAE,EACxCA,MAAM,CAAE,oCAAoC,CAC7C,CAAC,EACDyC,gBAAgB,EAAE4C,UAAU,IAC3B,CAAE9D,SAAS,CAAC2B,QAAQ,CAAE,kBAAmB,CAAC,IAC1CiC,sBAAsB,CACvB;EAED,IAAKtD,UAAU,IAAIC,mBAAmB,EAAG;IACxC,OAAO,IAAI;EACZ;EAEA,OACCyC,aAAA,CAACvF,IAAI;IAACyF,KAAK,EAAG;MAAEa,IAAI,EAAE;IAAE;EAAG,GAC1Bf,aAAA,CAACjF,WAAW;IACXgC,YAAY,EAAGA,YAAc;IAC7BI,QAAQ,EAAGmB,QAAU;IACrBP,WAAW,EAAGA,WAAa;IAC3BV,8BAA8B,EAC7BA,8BACA;IACDG,QAAQ,EAAGA,QAAU;IACrBwD,gBAAgB,EAAG,KAAO;IAC1BC,QAAQ,EAAGnD,mBAAqB;IAChCoD,MAAM,EAAGA,CAAE;MAAE9C,IAAI;MAAE+C;IAAgB,CAAC,KAAM;MACzC,OACCnB,aAAA,CAACvF,IAAI;QACJyF,KAAK,EAAG,CACP,CACCW,cAAc,EACdlD,MAAM,IAAI;UAAEA;QAAO,CAAC,EACpBC,eAAe,IAAI;UAAEA;QAAgB,CAAC,CACtC,EACDN,UAAU,IAAImD,aAAa;MACzB,GAEDU,eAAe,CAAC,CAAC,EACjB,CAAEtD,WAAW,IAAIkC,aAAa,CAAE3B,IAAK,CAClC,CAAC;IAET;EAAG,CACH,CACI,CAAC;AAET;AAEA,eAAexB,gBAAgB"}
1
+ {"version":3,"names":["View","Text","TouchableOpacity","__","sprintf","usePreferredColorSchemeStyle","cloneElement","useCallback","useRef","Icon","plusCircleFilled","styles","useBlockEditContext","MediaUpload","MEDIA_TYPE_IMAGE","MEDIA_TYPE_VIDEO","MEDIA_TYPE_AUDIO","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","createElement","Fragment","style","activeOpacity","accessibilityRole","onPress","testID","color","size","appenderStyle","appender","appenderDark","containerSelectedStyle","containerStyle","isSelected","flex","isReplacingMedia","autoOpen","render","getMediaOptions"],"sources":["@wordpress/block-editor/src/components/media-placeholder/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View, Text, TouchableOpacity } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\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';\nimport MediaUpload from '../media-upload';\nimport {\n\tMEDIA_TYPE_IMAGE,\n\tMEDIA_TYPE_VIDEO,\n\tMEDIA_TYPE_AUDIO,\n} from '../media-upload/constants';\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{ 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"],"mappings":"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"}
@@ -148,7 +148,7 @@ const MediaReplaceFlow = ({
148
148
  uploadFiles(event, onClose);
149
149
  },
150
150
  accept: accept,
151
- multiple: multiple,
151
+ multiple: !!multiple,
152
152
  render: ({
153
153
  openFileDialog
154
154
  }) => {
@@ -172,8 +172,7 @@ const MediaReplaceFlow = ({
172
172
  }, createElement("span", {
173
173
  className: "block-editor-media-replace-flow__image-url-label"
174
174
  }, __('Current media URL:')), createElement(Tooltip, {
175
- text: mediaURL,
176
- position: "bottom"
175
+ text: mediaURL
177
176
  }, createElement("div", null, createElement(LinkControl, {
178
177
  value: {
179
178
  url: mediaURL
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useRef","__","speak","FormFileUpload","NavigableMenu","MenuItem","ToolbarButton","Dropdown","withFilters","Tooltip","useSelect","withDispatch","DOWN","postFeaturedImage","upload","media","mediaIcon","compose","__unstableStripHTML","stripHTML","store","noticesStore","MediaUpload","MediaUploadCheck","LinkControl","blockEditorStore","noop","uniqueId","MediaReplaceFlow","mediaURL","mediaId","mediaIds","allowedTypes","accept","onError","onSelect","onSelectURL","onToggleFeaturedImage","useFeaturedImage","onFilesUpload","name","createNotice","removeNotice","children","multiple","addToGallery","handleUpload","popoverProps","mediaUpload","select","getSettings","canUpload","editMediaButtonRef","errorNoticeID","onUploadError","message","safeMessage","setTimeout","id","isDismissible","selectMedia","closeMenu","uploadFiles","event","files","target","filesList","onFileChange","openOnArrowDown","keyCode","preventDefault","click","onlyAllowsImages","length","every","allowedType","startsWith","gallery","createElement","contentClassName","renderToggle","isOpen","onToggle","ref","onClick","onKeyDown","renderContent","onClose","Fragment","className","value","render","open","icon","onChange","openFileDialog","isPressed","text","position","url","settings","showSuggestions","current","focus","dispatch"],"sources":["@wordpress/block-editor/src/components/media-replace-flow/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport {\n\tFormFileUpload,\n\tNavigableMenu,\n\tMenuItem,\n\tToolbarButton,\n\tDropdown,\n\twithFilters,\n\tTooltip,\n} from '@wordpress/components';\nimport { useSelect, withDispatch } from '@wordpress/data';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tpostFeaturedImage,\n\tupload,\n\tmedia as mediaIcon,\n} from '@wordpress/icons';\nimport { compose } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport LinkControl from '../link-control';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\nlet uniqueId = 0;\n\nconst MediaReplaceFlow = ( {\n\tmediaURL,\n\tmediaId,\n\tmediaIds,\n\tallowedTypes,\n\taccept,\n\tonError,\n\tonSelect,\n\tonSelectURL,\n\tonToggleFeaturedImage,\n\tuseFeaturedImage,\n\tonFilesUpload = noop,\n\tname = __( 'Replace' ),\n\tcreateNotice,\n\tremoveNotice,\n\tchildren,\n\tmultiple = false,\n\taddToGallery,\n\thandleUpload = true,\n\tpopoverProps,\n} ) => {\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings().mediaUpload;\n\t}, [] );\n\tconst canUpload = !! mediaUpload;\n\tconst editMediaButtonRef = useRef();\n\tconst errorNoticeID = `block-editor/media-replace-flow/error-notice/${ ++uniqueId }`;\n\n\tconst onUploadError = ( message ) => {\n\t\tconst safeMessage = stripHTML( message );\n\t\tif ( onError ) {\n\t\t\tonError( safeMessage );\n\t\t\treturn;\n\t\t}\n\t\t// We need to set a timeout for showing the notice\n\t\t// so that VoiceOver and possibly other screen readers\n\t\t// can announce the error afer the toolbar button\n\t\t// regains focus once the upload dialog closes.\n\t\t// Otherwise VO simply skips over the notice and announces\n\t\t// the focused element and the open menu.\n\t\tsetTimeout( () => {\n\t\t\tcreateNotice( 'error', safeMessage, {\n\t\t\t\tspeak: true,\n\t\t\t\tid: errorNoticeID,\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t}, 1000 );\n\t};\n\n\tconst selectMedia = ( media, closeMenu ) => {\n\t\tif ( useFeaturedImage && onToggleFeaturedImage ) {\n\t\t\tonToggleFeaturedImage();\n\t\t}\n\t\tcloseMenu();\n\t\t// Calling `onSelect` after the state update since it might unmount the component.\n\t\tonSelect( media );\n\t\tspeak( __( 'The media file has been replaced' ) );\n\t\tremoveNotice( errorNoticeID );\n\t};\n\n\tconst uploadFiles = ( event, closeMenu ) => {\n\t\tconst files = event.target.files;\n\t\tif ( ! handleUpload ) {\n\t\t\tcloseMenu();\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesUpload( files );\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tselectMedia( media, closeMenu );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst openOnArrowDown = ( event ) => {\n\t\tif ( event.keyCode === DOWN ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.target.click();\n\t\t}\n\t};\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst gallery = multiple && onlyAllowsImages();\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tcontentClassName=\"block-editor-media-replace-flow__options\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tref={ editMediaButtonRef }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t>\n\t\t\t\t\t{ name }\n\t\t\t\t</ToolbarButton>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<NavigableMenu className=\"block-editor-media-replace-flow__media-upload-menu\">\n\t\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\tgallery={ gallery }\n\t\t\t\t\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\tvalue={ multiple ? mediaIds : mediaId }\n\t\t\t\t\t\t\t\tonSelect={ ( media ) =>\n\t\t\t\t\t\t\t\t\tselectMedia( media, onClose )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\ticon={ mediaIcon }\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\t\t\t\t\tuploadFiles( event, onClose );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\topenFileDialog();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t\t\t{ onToggleFeaturedImage && (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ postFeaturedImage }\n\t\t\t\t\t\t\t\tonClick={ onToggleFeaturedImage }\n\t\t\t\t\t\t\t\tisPressed={ useFeaturedImage }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Use featured image' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t{ onSelectURL && (\n\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n\t\t\t\t\t\t<form\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'block-editor-media-flow__url-input',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'has-siblings':\n\t\t\t\t\t\t\t\t\t\tcanUpload || onToggleFeaturedImage,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"block-editor-media-replace-flow__image-url-label\">\n\t\t\t\t\t\t\t\t{ __( 'Current media URL:' ) }\n\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t<Tooltip text={ mediaURL } position=\"bottom\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\t\t\tvalue={ { url: mediaURL } }\n\t\t\t\t\t\t\t\t\t\tsettings={ [] }\n\t\t\t\t\t\t\t\t\t\tshowSuggestions={ false }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( { url } ) => {\n\t\t\t\t\t\t\t\t\t\t\tonSelectURL( url );\n\t\t\t\t\t\t\t\t\t\t\teditMediaButtonRef.current.focus();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-replace-flow/README.md\n */\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createNotice, removeNotice } = dispatch( noticesStore );\n\t\treturn {\n\t\t\tcreateNotice,\n\t\t\tremoveNotice,\n\t\t};\n\t} ),\n\twithFilters( 'editor.MediaReplaceFlow' ),\n] )( MediaReplaceFlow );\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,QAAQ,iBAAiB;AACvC,SACCC,cAAc,EACdC,aAAa,EACbC,QAAQ,EACRC,aAAa,EACbC,QAAQ,EACRC,WAAW,EACXC,OAAO,QACD,uBAAuB;AAC9B,SAASC,SAAS,EAAEC,YAAY,QAAQ,iBAAiB;AACzD,SAASC,IAAI,QAAQ,qBAAqB;AAC1C,SACCC,iBAAiB,EACjBC,MAAM,EACNC,KAAK,IAAIC,SAAS,QACZ,kBAAkB;AACzB,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,mBAAmB,IAAIC,SAAS,QAAQ,gBAAgB;AACjE,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,OAAOC,WAAW,MAAM,iBAAiB;AACzC,OAAOC,gBAAgB,MAAM,uBAAuB;AACpD,OAAOC,WAAW,MAAM,iBAAiB;AACzC,SAASJ,KAAK,IAAIK,gBAAgB,QAAQ,aAAa;AAEvD,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AACrB,IAAIC,QAAQ,GAAG,CAAC;AAEhB,MAAMC,gBAAgB,GAAGA,CAAE;EAC1BC,QAAQ;EACRC,OAAO;EACPC,QAAQ;EACRC,YAAY;EACZC,MAAM;EACNC,OAAO;EACPC,QAAQ;EACRC,WAAW;EACXC,qBAAqB;EACrBC,gBAAgB;EAChBC,aAAa,GAAGb,IAAI;EACpBc,IAAI,GAAGvC,EAAE,CAAE,SAAU,CAAC;EACtBwC,YAAY;EACZC,YAAY;EACZC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,YAAY;EACZC,YAAY,GAAG,IAAI;EACnBC;AACD,CAAC,KAAM;EACN,MAAMC,WAAW,GAAGtC,SAAS,CAAIuC,MAAM,IAAM;IAC5C,OAAOA,MAAM,CAAExB,gBAAiB,CAAC,CAACyB,WAAW,CAAC,CAAC,CAACF,WAAW;EAC5D,CAAC,EAAE,EAAG,CAAC;EACP,MAAMG,SAAS,GAAG,CAAC,CAAEH,WAAW;EAChC,MAAMI,kBAAkB,GAAGpD,MAAM,CAAC,CAAC;EACnC,MAAMqD,aAAa,GAAI,gDAAgD,EAAE1B,QAAU,EAAC;EAEpF,MAAM2B,aAAa,GAAKC,OAAO,IAAM;IACpC,MAAMC,WAAW,GAAGrC,SAAS,CAAEoC,OAAQ,CAAC;IACxC,IAAKrB,OAAO,EAAG;MACdA,OAAO,CAAEsB,WAAY,CAAC;MACtB;IACD;IACA;IACA;IACA;IACA;IACA;IACA;IACAC,UAAU,CAAE,MAAM;MACjBhB,YAAY,CAAE,OAAO,EAAEe,WAAW,EAAE;QACnCtD,KAAK,EAAE,IAAI;QACXwD,EAAE,EAAEL,aAAa;QACjBM,aAAa,EAAE;MAChB,CAAE,CAAC;IACJ,CAAC,EAAE,IAAK,CAAC;EACV,CAAC;EAED,MAAMC,WAAW,GAAGA,CAAE7C,KAAK,EAAE8C,SAAS,KAAM;IAC3C,IAAKvB,gBAAgB,IAAID,qBAAqB,EAAG;MAChDA,qBAAqB,CAAC,CAAC;IACxB;IACAwB,SAAS,CAAC,CAAC;IACX;IACA1B,QAAQ,CAAEpB,KAAM,CAAC;IACjBb,KAAK,CAAED,EAAE,CAAE,kCAAmC,CAAE,CAAC;IACjDyC,YAAY,CAAEW,aAAc,CAAC;EAC9B,CAAC;EAED,MAAMS,WAAW,GAAGA,CAAEC,KAAK,EAAEF,SAAS,KAAM;IAC3C,MAAMG,KAAK,GAAGD,KAAK,CAACE,MAAM,CAACD,KAAK;IAChC,IAAK,CAAElB,YAAY,EAAG;MACrBe,SAAS,CAAC,CAAC;MACX,OAAO1B,QAAQ,CAAE6B,KAAM,CAAC;IACzB;IACAzB,aAAa,CAAEyB,KAAM,CAAC;IACtBhB,WAAW,CAAE;MACZhB,YAAY;MACZkC,SAAS,EAAEF,KAAK;MAChBG,YAAY,EAAEA,CAAE,CAAEpD,KAAK,CAAE,KAAM;QAC9B6C,WAAW,CAAE7C,KAAK,EAAE8C,SAAU,CAAC;MAChC,CAAC;MACD3B,OAAO,EAAEoB;IACV,CAAE,CAAC;EACJ,CAAC;EAED,MAAMc,eAAe,GAAKL,KAAK,IAAM;IACpC,IAAKA,KAAK,CAACM,OAAO,KAAKzD,IAAI,EAAG;MAC7BmD,KAAK,CAACO,cAAc,CAAC,CAAC;MACtBP,KAAK,CAACE,MAAM,CAACM,KAAK,CAAC,CAAC;IACrB;EACD,CAAC;EAED,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;IAC9B,IAAK,CAAExC,YAAY,IAAIA,YAAY,CAACyC,MAAM,KAAK,CAAC,EAAG;MAClD,OAAO,KAAK;IACb;IAEA,OAAOzC,YAAY,CAAC0C,KAAK,CACtBC,WAAW,IACZA,WAAW,KAAK,OAAO,IAAIA,WAAW,CAACC,UAAU,CAAE,QAAS,CAC9D,CAAC;EACF,CAAC;EAED,MAAMC,OAAO,GAAGjC,QAAQ,IAAI4B,gBAAgB,CAAC,CAAC;EAE9C,OACCM,aAAA,CAACvE,QAAQ;IACRwC,YAAY,EAAGA,YAAc;IAC7BgC,gBAAgB,EAAC,0CAA0C;IAC3DC,YAAY,EAAGA,CAAE;MAAEC,MAAM;MAAEC;IAAS,CAAC,KACpCJ,aAAA,CAACxE,aAAa;MACb6E,GAAG,EAAG/B,kBAAoB;MAC1B,iBAAgB6B,MAAQ;MACxB,iBAAc,MAAM;MACpBG,OAAO,EAAGF,QAAU;MACpBG,SAAS,EAAGjB;IAAiB,GAE3B5B,IACY,CACb;IACH8C,aAAa,EAAGA,CAAE;MAAEC;IAAQ,CAAC,KAC5BT,aAAA,CAAAU,QAAA,QACCV,aAAA,CAAC1E,aAAa;MAACqF,SAAS,EAAC;IAAoD,GAC5EX,aAAA,CAACvD,gBAAgB,QAChBuD,aAAA,CAACxD,WAAW;MACXuD,OAAO,EAAGA,OAAS;MACnBhC,YAAY,EAAGA,YAAc;MAC7BD,QAAQ,EAAGA,QAAU;MACrB8C,KAAK,EAAG9C,QAAQ,GAAGb,QAAQ,GAAGD,OAAS;MACvCK,QAAQ,EAAKpB,KAAK,IACjB6C,WAAW,CAAE7C,KAAK,EAAEwE,OAAQ,CAC5B;MACDvD,YAAY,EAAGA,YAAc;MAC7B2D,MAAM,EAAGA,CAAE;QAAEC;MAAK,CAAC,KAClBd,aAAA,CAACzE,QAAQ;QACRwF,IAAI,EAAG7E,SAAW;QAClBoE,OAAO,EAAGQ;MAAM,GAEd3F,EAAE,CAAE,oBAAqB,CAClB;IACR,CACH,CAAC,EACF6E,aAAA,CAAC3E,cAAc;MACd2F,QAAQ,EAAK/B,KAAK,IAAM;QACvBD,WAAW,CAAEC,KAAK,EAAEwB,OAAQ,CAAC;MAC9B,CAAG;MACHtD,MAAM,EAAGA,MAAQ;MACjBW,QAAQ,EAAGA,QAAU;MACrB+C,MAAM,EAAGA,CAAE;QAAEI;MAAe,CAAC,KAAM;QAClC,OACCjB,aAAA,CAACzE,QAAQ;UACRwF,IAAI,EAAG/E,MAAQ;UACfsE,OAAO,EAAGA,CAAA,KAAM;YACfW,cAAc,CAAC,CAAC;UACjB;QAAG,GAED9F,EAAE,CAAE,QAAS,CACN,CAAC;MAEb;IAAG,CACH,CACgB,CAAC,EACjBoC,qBAAqB,IACtByC,aAAA,CAACzE,QAAQ;MACRwF,IAAI,EAAGhF,iBAAmB;MAC1BuE,OAAO,EAAG/C,qBAAuB;MACjC2D,SAAS,EAAG1D;IAAkB,GAE5BrC,EAAE,CAAE,oBAAqB,CAClB,CACV,EACC0C,QACY,CAAC,EACdP,WAAW;IACZ;IACA0C,aAAA;MACCW,SAAS,EAAG1F,UAAU,CACrB,oCAAoC,EACpC;QACC,cAAc,EACboD,SAAS,IAAId;MACf,CACD;IAAG,GAEHyC,aAAA;MAAMW,SAAS,EAAC;IAAkD,GAC/DxF,EAAE,CAAE,oBAAqB,CACtB,CAAC,EAEP6E,aAAA,CAACrE,OAAO;MAACwF,IAAI,EAAGpE,QAAU;MAACqE,QAAQ,EAAC;IAAQ,GAC3CpB,aAAA,cACCA,aAAA,CAACtD,WAAW;MACXkE,KAAK,EAAG;QAAES,GAAG,EAAEtE;MAAS,CAAG;MAC3BuE,QAAQ,EAAG,EAAI;MACfC,eAAe,EAAG,KAAO;MACzBP,QAAQ,EAAGA,CAAE;QAAEK;MAAI,CAAC,KAAM;QACzB/D,WAAW,CAAE+D,GAAI,CAAC;QAClB/C,kBAAkB,CAACkD,OAAO,CAACC,KAAK,CAAC,CAAC;MACnC;IAAG,CACH,CACG,CACG,CACJ,CAEN;EACA,CACH,CAAC;AAEJ,CAAC;;AAED;AACA;AACA;AACA,eAAetF,OAAO,CAAE,CACvBN,YAAY,CAAI6F,QAAQ,IAAM;EAC7B,MAAM;IAAE/D,YAAY;IAAEC;EAAa,CAAC,GAAG8D,QAAQ,CAAEnF,YAAa,CAAC;EAC/D,OAAO;IACNoB,YAAY;IACZC;EACD,CAAC;AACF,CAAE,CAAC,EACHlC,WAAW,CAAE,yBAA0B,CAAC,CACvC,CAAC,CAAEoB,gBAAiB,CAAC"}
1
+ {"version":3,"names":["classnames","useRef","__","speak","FormFileUpload","NavigableMenu","MenuItem","ToolbarButton","Dropdown","withFilters","Tooltip","useSelect","withDispatch","DOWN","postFeaturedImage","upload","media","mediaIcon","compose","__unstableStripHTML","stripHTML","store","noticesStore","MediaUpload","MediaUploadCheck","LinkControl","blockEditorStore","noop","uniqueId","MediaReplaceFlow","mediaURL","mediaId","mediaIds","allowedTypes","accept","onError","onSelect","onSelectURL","onToggleFeaturedImage","useFeaturedImage","onFilesUpload","name","createNotice","removeNotice","children","multiple","addToGallery","handleUpload","popoverProps","mediaUpload","select","getSettings","canUpload","editMediaButtonRef","errorNoticeID","onUploadError","message","safeMessage","setTimeout","id","isDismissible","selectMedia","closeMenu","uploadFiles","event","files","target","filesList","onFileChange","openOnArrowDown","keyCode","preventDefault","click","onlyAllowsImages","length","every","allowedType","startsWith","gallery","createElement","contentClassName","renderToggle","isOpen","onToggle","ref","onClick","onKeyDown","renderContent","onClose","Fragment","className","value","render","open","icon","onChange","openFileDialog","isPressed","text","url","settings","showSuggestions","current","focus","dispatch"],"sources":["@wordpress/block-editor/src/components/media-replace-flow/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport {\n\tFormFileUpload,\n\tNavigableMenu,\n\tMenuItem,\n\tToolbarButton,\n\tDropdown,\n\twithFilters,\n\tTooltip,\n} from '@wordpress/components';\nimport { useSelect, withDispatch } from '@wordpress/data';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tpostFeaturedImage,\n\tupload,\n\tmedia as mediaIcon,\n} from '@wordpress/icons';\nimport { compose } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport LinkControl from '../link-control';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\nlet uniqueId = 0;\n\nconst MediaReplaceFlow = ( {\n\tmediaURL,\n\tmediaId,\n\tmediaIds,\n\tallowedTypes,\n\taccept,\n\tonError,\n\tonSelect,\n\tonSelectURL,\n\tonToggleFeaturedImage,\n\tuseFeaturedImage,\n\tonFilesUpload = noop,\n\tname = __( 'Replace' ),\n\tcreateNotice,\n\tremoveNotice,\n\tchildren,\n\tmultiple = false,\n\taddToGallery,\n\thandleUpload = true,\n\tpopoverProps,\n} ) => {\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings().mediaUpload;\n\t}, [] );\n\tconst canUpload = !! mediaUpload;\n\tconst editMediaButtonRef = useRef();\n\tconst errorNoticeID = `block-editor/media-replace-flow/error-notice/${ ++uniqueId }`;\n\n\tconst onUploadError = ( message ) => {\n\t\tconst safeMessage = stripHTML( message );\n\t\tif ( onError ) {\n\t\t\tonError( safeMessage );\n\t\t\treturn;\n\t\t}\n\t\t// We need to set a timeout for showing the notice\n\t\t// so that VoiceOver and possibly other screen readers\n\t\t// can announce the error afer the toolbar button\n\t\t// regains focus once the upload dialog closes.\n\t\t// Otherwise VO simply skips over the notice and announces\n\t\t// the focused element and the open menu.\n\t\tsetTimeout( () => {\n\t\t\tcreateNotice( 'error', safeMessage, {\n\t\t\t\tspeak: true,\n\t\t\t\tid: errorNoticeID,\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t}, 1000 );\n\t};\n\n\tconst selectMedia = ( media, closeMenu ) => {\n\t\tif ( useFeaturedImage && onToggleFeaturedImage ) {\n\t\t\tonToggleFeaturedImage();\n\t\t}\n\t\tcloseMenu();\n\t\t// Calling `onSelect` after the state update since it might unmount the component.\n\t\tonSelect( media );\n\t\tspeak( __( 'The media file has been replaced' ) );\n\t\tremoveNotice( errorNoticeID );\n\t};\n\n\tconst uploadFiles = ( event, closeMenu ) => {\n\t\tconst files = event.target.files;\n\t\tif ( ! handleUpload ) {\n\t\t\tcloseMenu();\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesUpload( files );\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tselectMedia( media, closeMenu );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst openOnArrowDown = ( event ) => {\n\t\tif ( event.keyCode === DOWN ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.target.click();\n\t\t}\n\t};\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst gallery = multiple && onlyAllowsImages();\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tcontentClassName=\"block-editor-media-replace-flow__options\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tref={ editMediaButtonRef }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t>\n\t\t\t\t\t{ name }\n\t\t\t\t</ToolbarButton>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<NavigableMenu className=\"block-editor-media-replace-flow__media-upload-menu\">\n\t\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\tgallery={ gallery }\n\t\t\t\t\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\tvalue={ multiple ? mediaIds : mediaId }\n\t\t\t\t\t\t\t\tonSelect={ ( media ) =>\n\t\t\t\t\t\t\t\t\tselectMedia( media, onClose )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\ticon={ mediaIcon }\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\t\t\t\t\tuploadFiles( event, onClose );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\t\t\tmultiple={ !! multiple }\n\t\t\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\topenFileDialog();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t\t\t{ onToggleFeaturedImage && (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ postFeaturedImage }\n\t\t\t\t\t\t\t\tonClick={ onToggleFeaturedImage }\n\t\t\t\t\t\t\t\tisPressed={ useFeaturedImage }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Use featured image' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t{ onSelectURL && (\n\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n\t\t\t\t\t\t<form\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'block-editor-media-flow__url-input',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'has-siblings':\n\t\t\t\t\t\t\t\t\t\tcanUpload || onToggleFeaturedImage,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"block-editor-media-replace-flow__image-url-label\">\n\t\t\t\t\t\t\t\t{ __( 'Current media URL:' ) }\n\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t<Tooltip text={ mediaURL }>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\t\t\tvalue={ { url: mediaURL } }\n\t\t\t\t\t\t\t\t\t\tsettings={ [] }\n\t\t\t\t\t\t\t\t\t\tshowSuggestions={ false }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( { url } ) => {\n\t\t\t\t\t\t\t\t\t\t\tonSelectURL( url );\n\t\t\t\t\t\t\t\t\t\t\teditMediaButtonRef.current.focus();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-replace-flow/README.md\n */\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createNotice, removeNotice } = dispatch( noticesStore );\n\t\treturn {\n\t\t\tcreateNotice,\n\t\t\tremoveNotice,\n\t\t};\n\t} ),\n\twithFilters( 'editor.MediaReplaceFlow' ),\n] )( MediaReplaceFlow );\n"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ export const MEDIA_TYPE_IMAGE = 'image';
6
+ export const MEDIA_TYPE_VIDEO = 'video';
7
+ export const MEDIA_TYPE_AUDIO = 'audio';
8
+ export const MEDIA_TYPE_ANY = 'any';
9
+ export const OPTION_TAKE_VIDEO = __('Take a Video');
10
+ export const OPTION_TAKE_PHOTO = __('Take a Photo');
11
+ export const OPTION_TAKE_PHOTO_OR_VIDEO = __('Take a Photo or Video');
12
+ export const OPTION_INSERT_FROM_URL = __('Insert from URL');
13
+ export const OPTION_WORDPRESS_MEDIA_LIBRARY = __('WordPress Media Library');
14
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","MEDIA_TYPE_IMAGE","MEDIA_TYPE_VIDEO","MEDIA_TYPE_AUDIO","MEDIA_TYPE_ANY","OPTION_TAKE_VIDEO","OPTION_TAKE_PHOTO","OPTION_TAKE_PHOTO_OR_VIDEO","OPTION_INSERT_FROM_URL","OPTION_WORDPRESS_MEDIA_LIBRARY"],"sources":["@wordpress/block-editor/src/components/media-upload/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nexport const MEDIA_TYPE_IMAGE = 'image';\nexport const MEDIA_TYPE_VIDEO = 'video';\nexport const MEDIA_TYPE_AUDIO = 'audio';\nexport const MEDIA_TYPE_ANY = 'any';\n\nexport const OPTION_TAKE_VIDEO = __( 'Take a Video' );\nexport const OPTION_TAKE_PHOTO = __( 'Take a Photo' );\nexport const OPTION_TAKE_PHOTO_OR_VIDEO = __( 'Take a Photo or Video' );\nexport const OPTION_INSERT_FROM_URL = __( 'Insert from URL' );\nexport const OPTION_WORDPRESS_MEDIA_LIBRARY = __( 'WordPress Media Library' );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AAEpC,OAAO,MAAMC,gBAAgB,GAAG,OAAO;AACvC,OAAO,MAAMC,gBAAgB,GAAG,OAAO;AACvC,OAAO,MAAMC,gBAAgB,GAAG,OAAO;AACvC,OAAO,MAAMC,cAAc,GAAG,KAAK;AAEnC,OAAO,MAAMC,iBAAiB,GAAGL,EAAE,CAAE,cAAe,CAAC;AACrD,OAAO,MAAMM,iBAAiB,GAAGN,EAAE,CAAE,cAAe,CAAC;AACrD,OAAO,MAAMO,0BAA0B,GAAGP,EAAE,CAAE,uBAAwB,CAAC;AACvE,OAAO,MAAMQ,sBAAsB,GAAGR,EAAE,CAAE,iBAAkB,CAAC;AAC7D,OAAO,MAAMS,8BAA8B,GAAGT,EAAE,CAAE,yBAA0B,CAAC"}
@@ -1,30 +1,26 @@
1
- import { createElement } from "@wordpress/element";
1
+ import { createElement, Fragment } from "@wordpress/element";
2
2
  /**
3
3
  * External dependencies
4
4
  */
5
5
  import { Platform } from 'react-native';
6
- import prompt from 'react-native-prompt-android';
7
6
 
8
7
  /**
9
8
  * WordPress dependencies
10
9
  */
11
10
  import { Component, React } from '@wordpress/element';
12
11
  import { __ } from '@wordpress/i18n';
13
- import { Picker } from '@wordpress/components';
12
+ import { BottomSheet, PanelBody, Picker, TextControl } from '@wordpress/components';
14
13
  import { getOtherMediaOptions, requestMediaPicker, mediaSources } from '@wordpress/react-native-bridge';
15
14
  import { capturePhoto, captureVideo, image, wordpress, mobile, globe } from '@wordpress/icons';
16
15
  import { store as blockEditorStore } from '@wordpress/block-editor';
17
16
  import { compose } from '@wordpress/compose';
18
17
  import { withSelect } from '@wordpress/data';
19
- export const MEDIA_TYPE_IMAGE = 'image';
20
- export const MEDIA_TYPE_VIDEO = 'video';
21
- export const MEDIA_TYPE_AUDIO = 'audio';
22
- export const MEDIA_TYPE_ANY = 'any';
23
- export const OPTION_TAKE_VIDEO = __('Take a Video');
24
- export const OPTION_TAKE_PHOTO = __('Take a Photo');
25
- export const OPTION_TAKE_PHOTO_OR_VIDEO = __('Take a Photo or Video');
26
- export const OPTION_INSERT_FROM_URL = __('Insert from URL');
27
- export const OPTION_WORDPRESS_MEDIA_LIBRARY = __('WordPress Media Library');
18
+
19
+ /**
20
+ * Internal dependencies
21
+ */
22
+ import { MEDIA_TYPE_IMAGE, MEDIA_TYPE_VIDEO, MEDIA_TYPE_AUDIO, MEDIA_TYPE_ANY } from './constants';
23
+ import styles from './style.scss';
28
24
  const URL_MEDIA_SOURCE = 'URL';
29
25
  const PICKER_OPENING_DELAY = 200;
30
26
  export class MediaUpload extends Component {
@@ -35,6 +31,8 @@ export class MediaUpload extends Component {
35
31
  this.onPickerSelect = this.onPickerSelect.bind(this);
36
32
  this.getAllSources = this.getAllSources.bind(this);
37
33
  this.state = {
34
+ url: '',
35
+ showURLInput: false,
38
36
  otherMediaOptions: []
39
37
  };
40
38
  }
@@ -156,29 +154,12 @@ export class MediaUpload extends Component {
156
154
  const {
157
155
  allowedTypes = [],
158
156
  onSelect,
159
- onSelectURL,
160
157
  multiple = false
161
158
  } = this.props;
162
159
  if (value === URL_MEDIA_SOURCE) {
163
- prompt(__('Type a URL'),
164
- // title
165
- undefined,
166
- // message
167
- [{
168
- text: __('Cancel'),
169
- style: 'cancel'
170
- }, {
171
- text: __('Apply'),
172
- onPress: onSelectURL
173
- }],
174
- // Buttons.
175
- 'plain-text',
176
- // type
177
- undefined,
178
- // defaultValue
179
- 'url' // keyboardType
180
- );
181
-
160
+ this.setState({
161
+ showURLInput: true
162
+ });
182
163
  return;
183
164
  }
184
165
  const mediaSource = this.getAllSources().filter(source => source.value === value).shift();
@@ -242,12 +223,50 @@ export class MediaUpload extends Component {
242
223
  onChange: this.onPickerSelect,
243
224
  testID: "media-options-picker"
244
225
  });
245
- return this.props.render({
226
+ return createElement(Fragment, null, createElement(URLInput, {
227
+ isVisible: this.state.showURLInput,
228
+ onClose: () => {
229
+ if (this.state.url !== '') {
230
+ this.props.onSelectURL(this.state.url);
231
+ }
232
+ this.setState({
233
+ showURLInput: false,
234
+ url: ''
235
+ });
236
+ },
237
+ onChange: url => {
238
+ this.setState({
239
+ url
240
+ });
241
+ },
242
+ value: this.state.url
243
+ }), this.props.render({
246
244
  open: this.onPickerPresent,
247
245
  getMediaOptions
248
- });
246
+ }));
249
247
  }
250
248
  }
249
+ function URLInput(props) {
250
+ return createElement(BottomSheet, {
251
+ hideHeader: true,
252
+ isVisible: props.isVisible,
253
+ onClose: props.onClose
254
+ }, createElement(PanelBody, {
255
+ style: styles['media-upload__link-input']
256
+ }, createElement(TextControl
257
+ // eslint-disable-next-line jsx-a11y/no-autofocus
258
+ , {
259
+ autoFocus: true,
260
+ autoCapitalize: "none",
261
+ autoCorrect: false,
262
+ autoComplete: Platform.isIOS ? 'url' : 'off',
263
+ keyboardType: "url",
264
+ label: __('Insert from URL'),
265
+ onChange: props.onChange,
266
+ placeholder: __('Type a URL'),
267
+ value: props.value
268
+ })));
269
+ }
251
270
  export default compose([withSelect(select => {
252
271
  const {
253
272
  capabilities