@wordpress/block-editor 15.20.0 → 15.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/build/components/block-compare/index.cjs +2 -2
  3. package/build/components/block-compare/index.cjs.map +2 -2
  4. package/build/components/block-list/use-block-props/index.cjs +1 -1
  5. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  6. package/build/components/block-patterns-list/index.cjs +1 -1
  7. package/build/components/block-patterns-list/index.cjs.map +2 -2
  8. package/build/components/block-switcher/block-transformations-menu.cjs +16 -15
  9. package/build/components/block-switcher/block-transformations-menu.cjs.map +2 -2
  10. package/build/components/block-switcher/index.cjs +4 -4
  11. package/build/components/block-switcher/index.cjs.map +2 -2
  12. package/build/components/child-layout-control/index.cjs +10 -5
  13. package/build/components/child-layout-control/index.cjs.map +2 -2
  14. package/build/components/global-styles/advanced-panel.cjs +23 -15
  15. package/build/components/global-styles/advanced-panel.cjs.map +2 -2
  16. package/build/components/global-styles/background-panel.cjs +2 -2
  17. package/build/components/global-styles/background-panel.cjs.map +2 -2
  18. package/build/components/global-styles/border-panel.cjs +2 -0
  19. package/build/components/global-styles/border-panel.cjs.map +2 -2
  20. package/build/components/global-styles/dimensions-panel.cjs +5 -4
  21. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  22. package/build/components/iframe/index.cjs +3 -0
  23. package/build/components/iframe/index.cjs.map +2 -2
  24. package/build/components/inner-blocks/use-inner-block-template-sync.cjs +3 -1
  25. package/build/components/inner-blocks/use-inner-block-template-sync.cjs.map +2 -2
  26. package/build/components/inserter/hooks/use-patterns-state.cjs +1 -1
  27. package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
  28. package/build/components/inserter/index.cjs +179 -220
  29. package/build/components/inserter/index.cjs.map +3 -3
  30. package/build/components/inserter/media-tab/utils.cjs +1 -1
  31. package/build/components/inserter/media-tab/utils.cjs.map +2 -2
  32. package/build/components/inserter/search-results.cjs +1 -1
  33. package/build/components/inserter/search-results.cjs.map +2 -2
  34. package/build/components/list-view/block-select-button.cjs +10 -12
  35. package/build/components/list-view/block-select-button.cjs.map +2 -2
  36. package/build/components/list-view/block.cjs +2 -1
  37. package/build/components/list-view/block.cjs.map +2 -2
  38. package/build/components/provider/use-block-sync.cjs +11 -2
  39. package/build/components/provider/use-block-sync.cjs.map +2 -2
  40. package/build/components/rich-text/event-listeners/before-input-rules.cjs +4 -4
  41. package/build/components/rich-text/event-listeners/before-input-rules.cjs.map +3 -3
  42. package/build/components/rich-text/event-listeners/delete.cjs +4 -4
  43. package/build/components/rich-text/event-listeners/delete.cjs.map +3 -3
  44. package/build/components/rich-text/event-listeners/enter.cjs +7 -2
  45. package/build/components/rich-text/event-listeners/enter.cjs.map +2 -2
  46. package/build/components/rich-text/event-listeners/input-events.cjs +4 -4
  47. package/build/components/rich-text/event-listeners/input-events.cjs.map +3 -3
  48. package/build/components/rich-text/event-listeners/input-rules.cjs +17 -4
  49. package/build/components/rich-text/event-listeners/input-rules.cjs.map +3 -3
  50. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs +4 -4
  51. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs.map +3 -3
  52. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs +4 -4
  53. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs.map +3 -3
  54. package/build/components/rich-text/event-listeners/shortcuts.cjs +4 -4
  55. package/build/components/rich-text/event-listeners/shortcuts.cjs.map +3 -3
  56. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs +4 -4
  57. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +3 -3
  58. package/build/components/rich-text/index.cjs +1 -23
  59. package/build/components/rich-text/index.cjs.map +2 -2
  60. package/build/components/use-block-commands/index.cjs +5 -5
  61. package/build/components/use-block-commands/index.cjs.map +2 -2
  62. package/build/hooks/anchor.cjs +11 -15
  63. package/build/hooks/anchor.cjs.map +2 -2
  64. package/build/hooks/border.cjs +0 -3
  65. package/build/hooks/border.cjs.map +2 -2
  66. package/build/hooks/color.cjs +1 -4
  67. package/build/hooks/color.cjs.map +2 -2
  68. package/build/hooks/dimensions.cjs +0 -3
  69. package/build/hooks/dimensions.cjs.map +2 -2
  70. package/build/hooks/fit-text.cjs +11 -0
  71. package/build/hooks/fit-text.cjs.map +2 -2
  72. package/build/hooks/position.cjs +19 -22
  73. package/build/hooks/position.cjs.map +2 -2
  74. package/build/hooks/supports.cjs +0 -7
  75. package/build/hooks/supports.cjs.map +2 -2
  76. package/build/store/actions.cjs +7 -3
  77. package/build/store/actions.cjs.map +2 -2
  78. package/build/store/private-actions.cjs +1 -2
  79. package/build/store/private-actions.cjs.map +2 -2
  80. package/build/store/private-selectors.cjs +29 -0
  81. package/build/store/private-selectors.cjs.map +2 -2
  82. package/build/store/reducer.cjs +14 -6
  83. package/build/store/reducer.cjs.map +2 -2
  84. package/build/store/selectors.cjs +60 -41
  85. package/build/store/selectors.cjs.map +2 -2
  86. package/build-module/components/block-compare/index.mjs +1 -1
  87. package/build-module/components/block-compare/index.mjs.map +2 -2
  88. package/build-module/components/block-list/use-block-props/index.mjs +1 -1
  89. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  90. package/build-module/components/block-patterns-list/index.mjs +1 -1
  91. package/build-module/components/block-patterns-list/index.mjs.map +2 -2
  92. package/build-module/components/block-switcher/block-transformations-menu.mjs +16 -15
  93. package/build-module/components/block-switcher/block-transformations-menu.mjs.map +2 -2
  94. package/build-module/components/block-switcher/index.mjs +4 -4
  95. package/build-module/components/block-switcher/index.mjs.map +2 -2
  96. package/build-module/components/child-layout-control/index.mjs +10 -5
  97. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  98. package/build-module/components/global-styles/advanced-panel.mjs +23 -15
  99. package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
  100. package/build-module/components/global-styles/background-panel.mjs +3 -3
  101. package/build-module/components/global-styles/background-panel.mjs.map +2 -2
  102. package/build-module/components/global-styles/border-panel.mjs +2 -0
  103. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  104. package/build-module/components/global-styles/dimensions-panel.mjs +9 -6
  105. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  106. package/build-module/components/iframe/index.mjs +3 -0
  107. package/build-module/components/iframe/index.mjs.map +2 -2
  108. package/build-module/components/inner-blocks/use-inner-block-template-sync.mjs +3 -1
  109. package/build-module/components/inner-blocks/use-inner-block-template-sync.mjs.map +2 -2
  110. package/build-module/components/inserter/hooks/use-patterns-state.mjs +1 -1
  111. package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
  112. package/build-module/components/inserter/index.mjs +185 -222
  113. package/build-module/components/inserter/index.mjs.map +3 -3
  114. package/build-module/components/inserter/media-tab/utils.mjs +1 -1
  115. package/build-module/components/inserter/media-tab/utils.mjs.map +2 -2
  116. package/build-module/components/inserter/search-results.mjs +1 -1
  117. package/build-module/components/inserter/search-results.mjs.map +2 -2
  118. package/build-module/components/list-view/block-select-button.mjs +10 -12
  119. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  120. package/build-module/components/list-view/block.mjs +2 -1
  121. package/build-module/components/list-view/block.mjs.map +2 -2
  122. package/build-module/components/provider/use-block-sync.mjs +11 -2
  123. package/build-module/components/provider/use-block-sync.mjs.map +2 -2
  124. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +4 -4
  125. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
  126. package/build-module/components/rich-text/event-listeners/delete.mjs +4 -4
  127. package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
  128. package/build-module/components/rich-text/event-listeners/enter.mjs +7 -2
  129. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  130. package/build-module/components/rich-text/event-listeners/input-events.mjs +4 -4
  131. package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
  132. package/build-module/components/rich-text/event-listeners/input-rules.mjs +17 -4
  133. package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
  134. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +4 -4
  135. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
  136. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +4 -4
  137. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
  138. package/build-module/components/rich-text/event-listeners/shortcuts.mjs +4 -4
  139. package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
  140. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +4 -4
  141. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
  142. package/build-module/components/rich-text/index.mjs +1 -23
  143. package/build-module/components/rich-text/index.mjs.map +2 -2
  144. package/build-module/components/use-block-commands/index.mjs +5 -5
  145. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  146. package/build-module/hooks/anchor.mjs +11 -15
  147. package/build-module/hooks/anchor.mjs.map +2 -2
  148. package/build-module/hooks/border.mjs +1 -4
  149. package/build-module/hooks/border.mjs.map +2 -2
  150. package/build-module/hooks/color.mjs +2 -5
  151. package/build-module/hooks/color.mjs.map +2 -2
  152. package/build-module/hooks/dimensions.mjs +1 -4
  153. package/build-module/hooks/dimensions.mjs.map +2 -2
  154. package/build-module/hooks/fit-text.mjs +11 -0
  155. package/build-module/hooks/fit-text.mjs.map +2 -2
  156. package/build-module/hooks/position.mjs +20 -23
  157. package/build-module/hooks/position.mjs.map +2 -2
  158. package/build-module/hooks/supports.mjs +0 -7
  159. package/build-module/hooks/supports.mjs.map +2 -2
  160. package/build-module/store/actions.mjs +7 -3
  161. package/build-module/store/actions.mjs.map +2 -2
  162. package/build-module/store/private-actions.mjs +1 -2
  163. package/build-module/store/private-actions.mjs.map +2 -2
  164. package/build-module/store/private-selectors.mjs +26 -0
  165. package/build-module/store/private-selectors.mjs.map +2 -2
  166. package/build-module/store/reducer.mjs +14 -6
  167. package/build-module/store/reducer.mjs.map +2 -2
  168. package/build-module/store/selectors.mjs +62 -42
  169. package/build-module/store/selectors.mjs.map +2 -2
  170. package/build-style/content-rtl.css +12 -0
  171. package/build-style/content.css +12 -0
  172. package/build-style/style-rtl.css +26 -8
  173. package/build-style/style.css +26 -8
  174. package/package.json +51 -48
  175. package/src/components/block-breadcrumb/README.md +2 -2
  176. package/src/components/block-compare/README.md +6 -6
  177. package/src/components/block-compare/index.js +1 -3
  178. package/src/components/block-list/use-block-props/index.js +1 -1
  179. package/src/components/block-patterns-list/index.js +1 -1
  180. package/src/components/block-preview/README.md +1 -1
  181. package/src/components/block-switcher/block-transformations-menu.js +16 -18
  182. package/src/components/block-switcher/index.js +4 -4
  183. package/src/components/block-types-list/README.md +0 -19
  184. package/src/components/child-layout-control/index.js +15 -8
  185. package/src/components/child-layout-control/test/index.js +126 -0
  186. package/src/components/colors/test/with-colors.js +1 -1
  187. package/src/components/global-styles/advanced-panel.js +5 -1
  188. package/src/components/global-styles/background-panel.js +3 -3
  189. package/src/components/global-styles/border-panel.js +2 -0
  190. package/src/components/global-styles/dimensions-panel.js +23 -16
  191. package/src/components/iframe/index.js +3 -0
  192. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -1
  193. package/src/components/inserter/hooks/use-patterns-state.js +1 -1
  194. package/src/components/inserter/index.js +257 -288
  195. package/src/components/inserter/media-tab/utils.js +1 -1
  196. package/src/components/inserter/search-results.js +1 -3
  197. package/src/components/justify-content-control/README.md +1 -1
  198. package/src/components/list-view/block-select-button.js +9 -13
  199. package/src/components/list-view/block.js +1 -0
  200. package/src/components/media-placeholder/README.md +1 -29
  201. package/src/components/media-upload/README.md +0 -19
  202. package/src/components/provider/test/use-block-sync.js +40 -0
  203. package/src/components/provider/use-block-sync.js +12 -2
  204. package/src/components/rich-text/event-listeners/before-input-rules.js +5 -4
  205. package/src/components/rich-text/event-listeners/delete.js +9 -4
  206. package/src/components/rich-text/event-listeners/enter.js +9 -2
  207. package/src/components/rich-text/event-listeners/input-events.js +13 -4
  208. package/src/components/rich-text/event-listeners/input-rules.js +20 -4
  209. package/src/components/rich-text/event-listeners/insert-replacement-text.js +9 -4
  210. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +9 -4
  211. package/src/components/rich-text/event-listeners/shortcuts.js +13 -4
  212. package/src/components/rich-text/event-listeners/undo-automatic-change.js +5 -4
  213. package/src/components/rich-text/index.js +1 -33
  214. package/src/components/unit-control/README.md +1 -1
  215. package/src/components/url-popover/README.md +1 -1
  216. package/src/components/use-block-commands/index.js +5 -5
  217. package/src/hooks/anchor.js +9 -17
  218. package/src/hooks/border.js +1 -5
  219. package/src/hooks/color.js +1 -6
  220. package/src/hooks/dimensions.js +1 -5
  221. package/src/hooks/fit-text.js +16 -0
  222. package/src/hooks/position.js +23 -27
  223. package/src/hooks/supports.js +0 -9
  224. package/src/store/actions.js +13 -3
  225. package/src/store/private-actions.js +1 -4
  226. package/src/store/private-selectors.js +59 -0
  227. package/src/store/reducer.js +19 -7
  228. package/src/store/selectors.js +91 -53
  229. package/src/store/test/actions.js +21 -0
  230. package/src/store/test/private-selectors.js +53 -0
  231. package/src/store/test/reducer.js +46 -0
  232. package/src/store/test/selectors.js +77 -0
  233. package/build/components/media-upload-progress/constants.cjs +0 -46
  234. package/build/components/media-upload-progress/constants.cjs.map +0 -7
  235. package/build/components/rich-text/native/format-edit.cjs +0 -60
  236. package/build/components/rich-text/native/format-edit.cjs.map +0 -7
  237. package/build/components/rich-text/native/index.cjs +0 -28
  238. package/build/components/rich-text/native/index.cjs.map +0 -7
  239. package/build/components/rich-text/native/use-format-types.cjs +0 -139
  240. package/build/components/rich-text/native/use-format-types.cjs.map +0 -7
  241. package/build-module/components/media-upload-progress/constants.mjs +0 -16
  242. package/build-module/components/media-upload-progress/constants.mjs.map +0 -7
  243. package/build-module/components/rich-text/native/format-edit.mjs +0 -39
  244. package/build-module/components/rich-text/native/format-edit.mjs.map +0 -7
  245. package/build-module/components/rich-text/native/index.mjs +0 -7
  246. package/build-module/components/rich-text/native/index.mjs.map +0 -7
  247. package/build-module/components/rich-text/native/use-format-types.mjs +0 -114
  248. package/build-module/components/rich-text/native/use-format-types.mjs.map +0 -7
  249. package/src/components/audio-player/audio-url-parser.native.js +0 -20
  250. package/src/components/audio-player/index.native.js +0 -225
  251. package/src/components/audio-player/styles.native.scss +0 -114
  252. package/src/components/audio-player/test/audio-url-parser.native.js +0 -53
  253. package/src/components/block-alignment-control/test/index.native.js +0 -37
  254. package/src/components/block-alignment-control/ui.native.js +0 -86
  255. package/src/components/block-caption/README.md +0 -104
  256. package/src/components/block-caption/index.native.js +0 -89
  257. package/src/components/block-caption/styles.native.scss +0 -7
  258. package/src/components/block-controls/slot.native.js +0 -33
  259. package/src/components/block-draggable/draggable-chip.native.js +0 -49
  260. package/src/components/block-draggable/dropping-insertion-point.native.js +0 -181
  261. package/src/components/block-draggable/dropping-insertion-point.native.scss +0 -8
  262. package/src/components/block-draggable/index.native.js +0 -467
  263. package/src/components/block-draggable/style.native.scss +0 -19
  264. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +0 -73
  265. package/src/components/block-draggable/test/helpers.native.js +0 -182
  266. package/src/components/block-draggable/test/index.native.js +0 -419
  267. package/src/components/block-draggable/use-scroll-when-dragging.native.js +0 -135
  268. package/src/components/block-edit/edit.native.js +0 -49
  269. package/src/components/block-edit/test/edit.native.js +0 -65
  270. package/src/components/block-heading-level-dropdown/index.native.js +0 -68
  271. package/src/components/block-icon/index.native.js +0 -47
  272. package/src/components/block-icon/style.native.scss +0 -7
  273. package/src/components/block-list/block-crash-boundary.native.js +0 -43
  274. package/src/components/block-list/block-crash-warning.native.js +0 -21
  275. package/src/components/block-list/block-invalid-warning.native.js +0 -70
  276. package/src/components/block-list/block-list-context.native.js +0 -172
  277. package/src/components/block-list/block-list-item-cell.native.js +0 -62
  278. package/src/components/block-list/block-list-item.native.js +0 -209
  279. package/src/components/block-list/block-list-item.native.scss +0 -16
  280. package/src/components/block-list/block-outline.native.js +0 -77
  281. package/src/components/block-list/block-selection-button.native.js +0 -100
  282. package/src/components/block-list/block-selection-button.native.scss +0 -34
  283. package/src/components/block-list/block.native.js +0 -716
  284. package/src/components/block-list/block.native.scss +0 -62
  285. package/src/components/block-list/grid-item.native.js +0 -58
  286. package/src/components/block-list/index.native.js +0 -437
  287. package/src/components/block-list/insertion-point.native.js +0 -36
  288. package/src/components/block-list/style.native.scss +0 -117
  289. package/src/components/block-list/test/block-invalid-warning.native.js +0 -62
  290. package/src/components/block-list/test/block-list-context.native.js +0 -243
  291. package/src/components/block-list/test/block-outline.native.js +0 -255
  292. package/src/components/block-list/test/fixtures/block-list-context.native.js +0 -79
  293. package/src/components/block-list/test/index.native.js +0 -205
  294. package/src/components/block-list/use-block-props/index.native.js +0 -10
  295. package/src/components/block-list/use-scroll-upon-insertion.native.js +0 -52
  296. package/src/components/block-list-appender/index.native.js +0 -70
  297. package/src/components/block-list-appender/style.native.scss +0 -8
  298. package/src/components/block-media-update-progress/README.md +0 -100
  299. package/src/components/block-media-update-progress/index.native.js +0 -299
  300. package/src/components/block-media-update-progress/styles.native.scss +0 -9
  301. package/src/components/block-media-update-progress/test/index.native.js +0 -543
  302. package/src/components/block-mover/index.native.js +0 -193
  303. package/src/components/block-mover/mover-description.native.js +0 -155
  304. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +0 -218
  305. package/src/components/block-mover/test/index.native.js +0 -186
  306. package/src/components/block-settings/button.native.js +0 -41
  307. package/src/components/block-settings/container.native.js +0 -91
  308. package/src/components/block-settings/container.native.scss +0 -4
  309. package/src/components/block-settings/index.native.js +0 -5
  310. package/src/components/block-styles/index.native.js +0 -94
  311. package/src/components/block-styles/preview.native.js +0 -109
  312. package/src/components/block-styles/style.native.scss +0 -64
  313. package/src/components/block-switcher/block-transformations-menu.native.js +0 -91
  314. package/src/components/block-toolbar/block-toolbar-menu.native.js +0 -477
  315. package/src/components/block-toolbar/index.native.js +0 -126
  316. package/src/components/block-toolbar/test/__snapshots__/block-toolbar-menu.native.js.snap +0 -125
  317. package/src/components/block-toolbar/test/block-toolbar-menu.native.js +0 -405
  318. package/src/components/block-toolbar/test/index.native.js +0 -36
  319. package/src/components/block-types-list/index.native.js +0 -175
  320. package/src/components/block-types-list/style.native.scss +0 -25
  321. package/src/components/block-variation-picker/index.native.js +0 -107
  322. package/src/components/block-variation-picker/style.native.scss +0 -32
  323. package/src/components/button-block-appender/index.native.js +0 -92
  324. package/src/components/button-block-appender/styles.native.scss +0 -43
  325. package/src/components/caption/README.md +0 -44
  326. package/src/components/caption/index.native.js +0 -61
  327. package/src/components/colors-gradients/panel-color-gradient-settings.native.js +0 -59
  328. package/src/components/contrast-checker/index.native.js +0 -113
  329. package/src/components/contrast-checker/style.native.scss +0 -26
  330. package/src/components/convert-to-group-buttons/index.native.js +0 -79
  331. package/src/components/default-block-appender/index.native.js +0 -113
  332. package/src/components/default-block-appender/style.native.scss +0 -18
  333. package/src/components/floating-toolbar/floatingToolbar.android.scss +0 -4
  334. package/src/components/floating-toolbar/floatingToolbar.ios.scss +0 -3
  335. package/src/components/floating-toolbar/index.native.js +0 -141
  336. package/src/components/floating-toolbar/styles.native.scss +0 -43
  337. package/src/components/font-sizes/index.native.js +0 -7
  338. package/src/components/global-styles/color-panel.native.js +0 -207
  339. package/src/components/global-styles/test/use-global-styles-context.native.js +0 -435
  340. package/src/components/global-styles/use-global-styles-context.native.js +0 -592
  341. package/src/components/gradients/index.native.js +0 -2
  342. package/src/components/image-link-destinations/index.native.js +0 -152
  343. package/src/components/image-link-destinations/style.native.scss +0 -16
  344. package/src/components/index.native.js +0 -108
  345. package/src/components/inner-blocks/constants.native.js +0 -5
  346. package/src/components/inner-blocks/index.native.js +0 -221
  347. package/src/components/inner-blocks/warning-max-depth-exceeded.native.js +0 -124
  348. package/src/components/inserter/block-types-tab.native.js +0 -76
  349. package/src/components/inserter/hooks/use-block-type-impressions.native.js +0 -47
  350. package/src/components/inserter/hooks/use-clipboard-block.native.js +0 -40
  351. package/src/components/inserter/index.native.js +0 -424
  352. package/src/components/inserter/menu.native.js +0 -237
  353. package/src/components/inserter/no-results.native.js +0 -49
  354. package/src/components/inserter/reusable-blocks-tab.native.js +0 -45
  355. package/src/components/inserter/search-results.native.js +0 -67
  356. package/src/components/inserter/style.native.scss +0 -83
  357. package/src/components/inserter/tabs.native.js +0 -152
  358. package/src/components/inserter/test/__snapshots__/index.native.js.snap +0 -117
  359. package/src/components/inserter/test/fixtures/index.native.js +0 -12
  360. package/src/components/inserter/test/index.native.js +0 -273
  361. package/src/components/inserter/test/reusable-blocks-tab.native.js +0 -62
  362. package/src/components/inserter/test/utils.native.js +0 -37
  363. package/src/components/inserter/utils.native.js +0 -46
  364. package/src/components/inserter-button/index.native.js +0 -108
  365. package/src/components/inserter-button/style.native.scss +0 -72
  366. package/src/components/inspector-controls/fill.native.js +0 -62
  367. package/src/components/inspector-controls/slot.native.js +0 -35
  368. package/src/components/inspector-controls-tabs/advanced-controls-panel.native.js +0 -31
  369. package/src/components/line-height-control/index.native.js +0 -28
  370. package/src/components/media-placeholder/index.native.js +0 -258
  371. package/src/components/media-placeholder/styles.native.scss +0 -108
  372. package/src/components/media-replace-flow/index.native.js +0 -12
  373. package/src/components/media-upload/constants.native.js +0 -14
  374. package/src/components/media-upload/index.native.js +0 -356
  375. package/src/components/media-upload/style.native.scss +0 -4
  376. package/src/components/media-upload/test/index.native.js +0 -172
  377. package/src/components/media-upload-progress/README.md +0 -100
  378. package/src/components/media-upload-progress/constants.js +0 -6
  379. package/src/components/media-upload-progress/index.native.js +0 -233
  380. package/src/components/media-upload-progress/styles.native.scss +0 -15
  381. package/src/components/media-upload-progress/test/index.native.js +0 -220
  382. package/src/components/plain-text/index.native.js +0 -164
  383. package/src/components/plain-text/style.native.scss +0 -10
  384. package/src/components/provider/index.native.js +0 -32
  385. package/src/components/rich-text/embed-handler-picker.native.js +0 -65
  386. package/src/components/rich-text/file-paste-handler.native.js +0 -3
  387. package/src/components/rich-text/format-toolbar/index.native.js +0 -21
  388. package/src/components/rich-text/format-toolbar-container.native.js +0 -16
  389. package/src/components/rich-text/index.native.js +0 -701
  390. package/src/components/rich-text/input-event.native.js +0 -10
  391. package/src/components/rich-text/native/format-edit.js +0 -44
  392. package/src/components/rich-text/native/get-format-colors.native.js +0 -47
  393. package/src/components/rich-text/native/index.js +0 -1
  394. package/src/components/rich-text/native/index.native.js +0 -1389
  395. package/src/components/rich-text/native/style.native.scss +0 -28
  396. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +0 -79
  397. package/src/components/rich-text/native/test/index.native.js +0 -345
  398. package/src/components/rich-text/native/test/performance/rich-text.native.js +0 -44
  399. package/src/components/rich-text/native/toolbar-button-with-options.native.js +0 -61
  400. package/src/components/rich-text/native/use-format-types.js +0 -146
  401. package/src/components/rich-text/remove-browser-shortcuts.native.js +0 -1
  402. package/src/components/rich-text/shortcut.native.js +0 -10
  403. package/src/components/ungroup-button/README.md +0 -23
  404. package/src/components/ungroup-button/index.native.js +0 -77
  405. package/src/components/unsupported-block-details/index.native.js +0 -187
  406. package/src/components/unsupported-block-details/style.native.scss +0 -56
  407. package/src/components/url-input/index.native.js +0 -33
  408. package/src/components/use-block-drop-zone/index.native.js +0 -207
  409. package/src/components/use-on-block-drop/index.native.js +0 -115
  410. package/src/components/use-unsupported-block-editor/index.native.js +0 -59
  411. package/src/components/video-player/gridicon-play.native.js +0 -13
  412. package/src/components/video-player/index.native.js +0 -133
  413. package/src/components/video-player/styles.native.scss +0 -29
  414. package/src/components/warning/index.native.js +0 -64
  415. package/src/components/warning/style.native.scss +0 -47
  416. package/src/hooks/align.native.js +0 -49
  417. package/src/hooks/custom-class-name.native.js +0 -70
  418. package/src/hooks/index.native.js +0 -36
  419. package/src/hooks/layout.native.js +0 -23
  420. package/src/hooks/test/__snapshots__/align.native.js.snap +0 -73
  421. package/src/hooks/test/__snapshots__/anchor.native.js.snap +0 -7
  422. package/src/hooks/test/align.native.js +0 -134
  423. package/src/hooks/test/anchor.native.js +0 -32
  424. package/src/hooks/test/use-editor-wrapper-styles.native.js +0 -282
  425. package/src/hooks/typography.native.js +0 -60
  426. package/src/hooks/use-editor-wrapper-styles.native.js +0 -250
  427. package/src/hooks/use-editor-wrapper-styles.native.scss +0 -12
  428. package/src/index.native.js +0 -6
  429. package/src/private-apis.native.js +0 -21
  430. package/src/store/defaults.native.js +0 -23
@@ -1,186 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import {
5
- addBlock,
6
- fireEvent,
7
- initializeEditor,
8
- getBlock,
9
- within,
10
- getEditorHtml,
11
- render,
12
- typeInRichText,
13
- } from 'test/helpers';
14
-
15
- /**
16
- * WordPress dependencies
17
- */
18
- import { getBlockTypes, unregisterBlockType } from '@wordpress/blocks';
19
- import { registerCoreBlocks } from '@wordpress/block-library';
20
-
21
- /**
22
- * Internal dependencies
23
- */
24
- import { BlockMover } from '../index';
25
-
26
- describe( 'Block Mover Picker', () => {
27
- it( 'should render without crashing and match snapshot', () => {
28
- const props = {
29
- isFirst: false,
30
- isLast: true,
31
- canMove: true,
32
- numberOfBlocks: 2,
33
- firstIndex: 1,
34
-
35
- onMoveDown: jest.fn(),
36
- onMoveUp: jest.fn(),
37
- onLongPress: jest.fn(),
38
-
39
- rootClientId: '',
40
- isStackedHorizontally: true,
41
- };
42
- const screen = render( <BlockMover { ...props } /> );
43
- expect( screen.toJSON() ).toMatchSnapshot();
44
- } );
45
-
46
- describe( 'moving blocks', () => {
47
- beforeAll( () => {
48
- // Register all core blocks
49
- registerCoreBlocks();
50
- } );
51
-
52
- afterAll( () => {
53
- // Clean up registered blocks
54
- getBlockTypes().forEach( ( block ) => {
55
- unregisterBlockType( block.name );
56
- } );
57
- } );
58
-
59
- it( 'moves blocks up and down', async () => {
60
- const screen = await initializeEditor();
61
- const { getByLabelText } = screen;
62
-
63
- // Add Paragraph block
64
- await addBlock( screen, 'Paragraph' );
65
-
66
- // Get Paragraph block
67
- const paragraphBlock = await getBlock( screen, 'Paragraph' );
68
- fireEvent.press( paragraphBlock );
69
- const paragraphField =
70
- within( paragraphBlock ).getByPlaceholderText(
71
- 'Start writing…'
72
- );
73
- typeInRichText( paragraphField, 'Hello!' );
74
-
75
- // Add Spacer block
76
- await addBlock( screen, 'Spacer' );
77
-
78
- // Add Heading block
79
- await addBlock( screen, 'Heading' );
80
-
81
- // Get Spacer block
82
- const spacerBlock = await getBlock( screen, 'Spacer', {
83
- rowIndex: 2,
84
- } );
85
- fireEvent.press( spacerBlock );
86
-
87
- // Tap on the Move Down button
88
- const downButton = getByLabelText(
89
- /Move block down from row 2 to row 3/
90
- );
91
- fireEvent.press( downButton );
92
-
93
- // Get Heading block
94
- const headingBlock = await getBlock( screen, 'Heading', {
95
- rowIndex: 2,
96
- } );
97
- fireEvent.press( headingBlock );
98
-
99
- // Tap on the Move Up button
100
- const upButton = getByLabelText(
101
- /Move block up from row 2 to row 1/
102
- );
103
- fireEvent.press( upButton );
104
-
105
- expect( getEditorHtml() ).toMatchSnapshot();
106
- } );
107
-
108
- it( 'disables the Move Up button for the first block', async () => {
109
- const screen = await initializeEditor();
110
- const { getByLabelText } = screen;
111
-
112
- // Add Paragraph block
113
- await addBlock( screen, 'Paragraph' );
114
-
115
- // Get Paragraph block
116
- let paragraphBlock = await getBlock( screen, 'Paragraph' );
117
- fireEvent.press( paragraphBlock );
118
- const paragraphField =
119
- within( paragraphBlock ).getByPlaceholderText(
120
- 'Start writing…'
121
- );
122
- typeInRichText( paragraphField, 'Hello!' );
123
-
124
- // Add Spacer block
125
- await addBlock( screen, 'Spacer' );
126
-
127
- // Add Heading block
128
- await addBlock( screen, 'Heading' );
129
-
130
- // Get Paragraph block
131
- paragraphBlock = await getBlock( screen, 'Paragraph' );
132
- fireEvent.press( paragraphBlock );
133
-
134
- // Get the Move Up button
135
- const upButton = getByLabelText( /Move block up/ );
136
- const isUpButtonDisabled =
137
- upButton.props.accessibilityState?.disabled;
138
- expect( isUpButtonDisabled ).toBe( true );
139
-
140
- // Press the button to make sure the block doesn't move
141
- fireEvent.press( upButton );
142
-
143
- expect( getEditorHtml() ).toMatchSnapshot();
144
- } );
145
-
146
- it( 'disables the Move Down button for the last block', async () => {
147
- const screen = await initializeEditor();
148
- const { getByLabelText } = screen;
149
-
150
- // Add Paragraph block
151
- await addBlock( screen, 'Paragraph' );
152
-
153
- // Get Paragraph block
154
- const paragraphBlock = await getBlock( screen, 'Paragraph' );
155
- fireEvent.press( paragraphBlock );
156
- const paragraphField =
157
- within( paragraphBlock ).getByPlaceholderText(
158
- 'Start writing…'
159
- );
160
- typeInRichText( paragraphField, 'Hello!' );
161
-
162
- // Add Spacer block
163
- await addBlock( screen, 'Spacer' );
164
-
165
- // Add Heading block
166
- await addBlock( screen, 'Heading' );
167
-
168
- // Get Heading block
169
- const headingBlock = await getBlock( screen, 'Heading', {
170
- rowIndex: 3,
171
- } );
172
- fireEvent.press( headingBlock );
173
-
174
- // Get the Move Down button
175
- const downButton = getByLabelText( /Move block down/ );
176
- const isDownButtonDisabled =
177
- downButton.props.accessibilityState?.disabled;
178
- expect( isDownButtonDisabled ).toBe( true );
179
-
180
- // Press the button to make sure the block doesn't move
181
- fireEvent.press( downButton );
182
-
183
- expect( getEditorHtml() ).toMatchSnapshot();
184
- } );
185
- } );
186
- } );
@@ -1,41 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- createSlotFill,
6
- ToolbarButton,
7
- ToolbarGroup,
8
- } from '@wordpress/components';
9
- import { __ } from '@wordpress/i18n';
10
- import { withDispatch } from '@wordpress/data';
11
- import { cog } from '@wordpress/icons';
12
-
13
- const { Fill, Slot } = createSlotFill( 'SettingsToolbarButton' );
14
-
15
- const SettingsButton = ( { openGeneralSidebar } ) => (
16
- <ToolbarGroup>
17
- <ToolbarButton
18
- title={ __( 'Open Settings' ) }
19
- icon={ cog }
20
- onClick={ openGeneralSidebar }
21
- />
22
- </ToolbarGroup>
23
- );
24
-
25
- const SettingsButtonFill = ( props ) => (
26
- <Fill>
27
- <SettingsButton { ...props } />
28
- </Fill>
29
- );
30
-
31
- const SettingsToolbarButton = withDispatch( ( dispatch ) => {
32
- const { openGeneralSidebar } = dispatch( 'core/edit-post' );
33
-
34
- return {
35
- openGeneralSidebar: () => openGeneralSidebar( 'edit-post/block' ),
36
- };
37
- } )( SettingsButtonFill );
38
-
39
- SettingsToolbarButton.Slot = Slot;
40
-
41
- export default SettingsToolbarButton;
@@ -1,91 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- BottomSheet,
6
- ColorSettings,
7
- FocalPointSettingsPanel,
8
- LinkPickerScreen,
9
- } from '@wordpress/components';
10
- import { useDispatch, useSelect } from '@wordpress/data';
11
-
12
- /**
13
- * Internal dependencies
14
- */
15
- import styles from './container.native.scss';
16
- import InspectorControls from '../inspector-controls';
17
- import ImageLinkDestinationsScreen from '../image-link-destinations';
18
- import useMultipleOriginColorsAndGradients from '../colors-gradients/use-multiple-origin-colors-and-gradients';
19
- import { useMobileGlobalStylesColors } from '../global-styles/use-global-styles-context';
20
- import AdvancedControls from '../inspector-controls-tabs/advanced-controls-panel';
21
-
22
- export const blockSettingsScreens = {
23
- settings: 'Settings',
24
- color: 'Color',
25
- focalPoint: 'FocalPoint',
26
- linkPicker: 'linkPicker',
27
- imageLinkDestinations: 'imageLinkDestinations',
28
- };
29
-
30
- export default function BottomSheetSettings( props ) {
31
- const colorSettings = useMultipleOriginColorsAndGradients();
32
- colorSettings.allAvailableColors = useMobileGlobalStylesColors();
33
- const { closeGeneralSidebar } = useDispatch( 'core/edit-post' );
34
- const editorSidebarOpened = useSelect( ( select ) =>
35
- select( 'core/edit-post' ).isEditorSidebarOpened()
36
- );
37
-
38
- return (
39
- <BottomSheet
40
- isVisible={ editorSidebarOpened }
41
- onClose={ closeGeneralSidebar }
42
- hideHeader
43
- contentStyle={ styles.content }
44
- hasNavigation
45
- testID="block-settings-modal"
46
- { ...props }
47
- >
48
- <BottomSheet.NavigationContainer animate main>
49
- <BottomSheet.NavigationScreen
50
- name={ blockSettingsScreens.settings }
51
- >
52
- <>
53
- <InspectorControls.Slot />
54
- <AdvancedControls />
55
- </>
56
- </BottomSheet.NavigationScreen>
57
- <BottomSheet.NavigationScreen
58
- name={ BottomSheet.SubSheet.screenName }
59
- >
60
- <BottomSheet.SubSheet.Slot />
61
- </BottomSheet.NavigationScreen>
62
-
63
- <BottomSheet.NavigationScreen
64
- name={ blockSettingsScreens.color }
65
- >
66
- <ColorSettings defaultSettings={ colorSettings } />
67
- </BottomSheet.NavigationScreen>
68
- <BottomSheet.NavigationScreen
69
- name={ blockSettingsScreens.focalPoint }
70
- fullScreen
71
- >
72
- <FocalPointSettingsPanel />
73
- </BottomSheet.NavigationScreen>
74
- <BottomSheet.NavigationScreen
75
- name={ blockSettingsScreens.linkPicker }
76
- fullScreen
77
- isScrollable
78
- >
79
- <LinkPickerScreen
80
- returnScreenName={ blockSettingsScreens.settings }
81
- />
82
- </BottomSheet.NavigationScreen>
83
- <BottomSheet.NavigationScreen
84
- name={ blockSettingsScreens.imageLinkDestinations }
85
- >
86
- <ImageLinkDestinationsScreen { ...props } />
87
- </BottomSheet.NavigationScreen>
88
- </BottomSheet.NavigationContainer>
89
- </BottomSheet>
90
- );
91
- }
@@ -1,4 +0,0 @@
1
- .content {
2
- padding-left: 0;
3
- padding-right: 0;
4
- }
@@ -1,5 +0,0 @@
1
- export { default as BlockSettingsButton } from './button';
2
- export {
3
- default as BottomSheetSettings,
4
- blockSettingsScreens,
5
- } from './container';
@@ -1,94 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { ScrollView } from 'react-native';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { store as blocksStore } from '@wordpress/blocks';
10
- import { useSelect, useDispatch } from '@wordpress/data';
11
- import { useMemo } from '@wordpress/element';
12
- import { _x } from '@wordpress/i18n';
13
-
14
- /**
15
- * Internal dependencies
16
- */
17
- import { getActiveStyle, replaceActiveStyle } from './utils';
18
- import StylePreview from './preview';
19
- import containerStyles from './style.scss';
20
- import { store as blockEditorStore } from '../../store';
21
-
22
- const EMPTY_ARRAY = [];
23
-
24
- function BlockStyles( { clientId, url } ) {
25
- const selector = ( select ) => {
26
- const { getBlock } = select( blockEditorStore );
27
- const { getBlockStyles } = select( blocksStore );
28
- const block = getBlock( clientId );
29
- return {
30
- styles: getBlockStyles( block?.name ) || EMPTY_ARRAY,
31
- className: block?.attributes?.className || '',
32
- };
33
- };
34
-
35
- const { styles, className } = useSelect( selector, [ clientId ] );
36
-
37
- const { updateBlockAttributes } = useDispatch( blockEditorStore );
38
-
39
- const renderedStyles = styles?.find( ( style ) => style.isDefault )
40
- ? styles
41
- : [
42
- {
43
- name: 'default',
44
- label: _x( 'Default', 'block style' ),
45
- isDefault: true,
46
- },
47
- ...styles,
48
- ];
49
-
50
- const mappedRenderedStyles = useMemo( () => {
51
- const activeStyle = getActiveStyle( renderedStyles, className );
52
-
53
- return renderedStyles.map( ( style ) => {
54
- const styleClassName = replaceActiveStyle(
55
- className,
56
- activeStyle,
57
- style
58
- );
59
- const isActive = activeStyle === style;
60
-
61
- const onStylePress = () => {
62
- updateBlockAttributes( clientId, {
63
- className: styleClassName,
64
- } );
65
- };
66
-
67
- return (
68
- <StylePreview
69
- onPress={ onStylePress }
70
- isActive={ isActive }
71
- key={ style.name }
72
- style={ style }
73
- url={ url }
74
- />
75
- );
76
- } );
77
- }, [ renderedStyles, className, clientId ] );
78
-
79
- if ( ! styles || styles.length === 0 ) {
80
- return null;
81
- }
82
-
83
- return (
84
- <ScrollView
85
- horizontal
86
- showsHorizontalScrollIndicator={ false }
87
- contentContainerStyle={ containerStyles.content }
88
- >
89
- { mappedRenderedStyles }
90
- </ScrollView>
91
- );
92
- }
93
-
94
- export default BlockStyles;
@@ -1,109 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import {
5
- View,
6
- TouchableWithoutFeedback,
7
- Text,
8
- Dimensions,
9
- Animated,
10
- Easing,
11
- Image,
12
- } from 'react-native';
13
-
14
- /**
15
- * WordPress dependencies
16
- */
17
- import { BottomSheet } from '@wordpress/components';
18
- import { useState, useEffect, useRef } from '@wordpress/element';
19
- import { usePreferredColorSchemeStyle } from '@wordpress/compose';
20
-
21
- /**
22
- * Internal dependencies
23
- */
24
- import styles from './style.scss';
25
-
26
- const MAX_ITEM_WIDTH = 120;
27
- const HALF_COLUMN = 0.5;
28
-
29
- function StylePreview( { onPress, isActive, style, url } ) {
30
- const [ itemWidth, setItemWidth ] = useState( MAX_ITEM_WIDTH );
31
- const { label, name } = style;
32
- const opacity = useRef( new Animated.Value( 1 ) ).current;
33
-
34
- function onLayout() {
35
- const columnsNum =
36
- // To indicate scroll availability, there is a need to display additional half the column.
37
- Math.floor( BottomSheet.getWidth() / MAX_ITEM_WIDTH ) + HALF_COLUMN;
38
- setItemWidth( BottomSheet.getWidth() / columnsNum );
39
- }
40
-
41
- useEffect( () => {
42
- onLayout();
43
- const dimensionsChangeSubscription = Dimensions.addEventListener(
44
- 'change',
45
- onLayout
46
- );
47
-
48
- return () => {
49
- dimensionsChangeSubscription.remove();
50
- };
51
- }, [] );
52
-
53
- const labelStyle = usePreferredColorSchemeStyle(
54
- styles.label,
55
- styles.labelDark
56
- );
57
-
58
- const animateOutline = () => {
59
- opacity.setValue( 0 );
60
- Animated.timing( opacity, {
61
- toValue: 1,
62
- duration: 100,
63
- useNativeDriver: true,
64
- easing: Easing.linear,
65
- } ).start();
66
- };
67
-
68
- const innerOutlineStyle = usePreferredColorSchemeStyle(
69
- styles.innerOutline,
70
- styles.innerOutlineDark
71
- );
72
-
73
- const getOutline = ( outlineStyles ) =>
74
- outlineStyles.map( ( outlineStyle, index ) => {
75
- return (
76
- <Animated.View
77
- style={ [ outlineStyle, { opacity }, styles[ name ] ] }
78
- key={ index }
79
- />
80
- );
81
- } );
82
-
83
- return (
84
- <TouchableWithoutFeedback
85
- onPress={ () => {
86
- onPress();
87
- animateOutline();
88
- } }
89
- >
90
- <View style={ [ styles.container, { width: itemWidth } ] }>
91
- <View style={ styles.imageWrapper }>
92
- { isActive &&
93
- getOutline( [ styles.outline, innerOutlineStyle ] ) }
94
- <Image
95
- style={ [ styles.image, styles[ name ] ] }
96
- source={ { uri: url } }
97
- />
98
- </View>
99
- <Text
100
- style={ [ labelStyle, isActive && styles.labelSelected ] }
101
- >
102
- { label }
103
- </Text>
104
- </View>
105
- </TouchableWithoutFeedback>
106
- );
107
- }
108
-
109
- export default StylePreview;
@@ -1,64 +0,0 @@
1
- $image-height: 64px;
2
-
3
- .image {
4
- height: $image-height;
5
- }
6
-
7
- .container {
8
- padding-top: $grid-unit;
9
- padding-right: $grid-unit;
10
- }
11
-
12
- .imageWrapper {
13
- height: $image-height;
14
- margin-bottom: $grid-unit * 0.5;
15
- }
16
-
17
- .rounded {
18
- border-radius: $image-height * 0.5;
19
- overflow: hidden;
20
- }
21
-
22
- .label {
23
- color: $gray-dark;
24
- text-align: center;
25
- }
26
-
27
- .labelDark {
28
- color: $white;
29
- }
30
-
31
- .labelSelected {
32
- color: $blue-wordpress;
33
- }
34
-
35
- .outline {
36
- border-color: $blue-wordpress;
37
- border-width: $border-width;
38
- position: absolute;
39
- top: 0;
40
- left: 0;
41
- right: 0;
42
- bottom: 0;
43
- z-index: 2;
44
- }
45
-
46
- .innerOutline {
47
- border-color: $white;
48
- border-width: $border-width * 2;
49
- position: absolute;
50
- top: $border-width;
51
- left: $border-width;
52
- right: $border-width;
53
- bottom: $border-width;
54
- z-index: 2;
55
- }
56
-
57
- .innerOutlineDark {
58
- border-color: $background-dark-elevated;
59
- }
60
-
61
- .content {
62
- padding-left: $grid-unit-20;
63
- padding-right: $grid-unit-20;
64
- }
@@ -1,91 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { findNodeHandle, Platform } from 'react-native';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { __, sprintf } from '@wordpress/i18n';
10
- import { switchToBlockType } from '@wordpress/blocks';
11
- import { Picker } from '@wordpress/components';
12
- import { useDispatch } from '@wordpress/data';
13
- import { store as noticesStore } from '@wordpress/notices';
14
-
15
- /**
16
- * Internal dependencies
17
- */
18
- import { store as blockEditorStore } from '../../store';
19
-
20
- const BlockTransformationsMenu = ( {
21
- anchorNodeRef,
22
- blockTitle,
23
- pickerRef,
24
- possibleTransformations,
25
- selectedBlock,
26
- selectedBlockClientId,
27
- } ) => {
28
- const { replaceBlocks } = useDispatch( blockEditorStore );
29
- const { createSuccessNotice } = useDispatch( noticesStore );
30
-
31
- const pickerOptions = () => {
32
- const selectedBlockName = selectedBlock?.name ?? '';
33
- const blocksThatSplitWhenTransformed = {
34
- 'core/list': [ 'core/paragraph', 'core/heading' ],
35
- 'core/quote': [ 'core/paragraph' ],
36
- 'core/pullquote': [ 'core/paragraph' ],
37
- };
38
-
39
- return possibleTransformations.map( ( item ) => {
40
- const label =
41
- selectedBlockName.length &&
42
- blocksThatSplitWhenTransformed[ selectedBlockName ] &&
43
- blocksThatSplitWhenTransformed[ selectedBlockName ].includes(
44
- item.id
45
- )
46
- ? `${ item.title } blocks`
47
- : item.title;
48
- return {
49
- label,
50
- value: item.id,
51
- };
52
- } );
53
- };
54
-
55
- const getAnchor = () =>
56
- anchorNodeRef ? findNodeHandle( anchorNodeRef ) : undefined;
57
-
58
- function onPickerSelect( value ) {
59
- replaceBlocks(
60
- selectedBlockClientId,
61
- switchToBlockType( selectedBlock, value )
62
- );
63
-
64
- const selectedItem = pickerOptions().find(
65
- ( item ) => item.value === value
66
- );
67
- const successNotice = sprintf(
68
- /* translators: 1: From block title, e.g. Paragraph. 2: To block title, e.g. Header. */
69
- __( '%1$s transformed to %2$s' ),
70
- blockTitle,
71
- selectedItem.label
72
- );
73
- createSuccessNotice( successNotice );
74
- }
75
-
76
- return (
77
- <Picker
78
- testID="block-transformations-menu"
79
- ref={ pickerRef }
80
- options={ pickerOptions() }
81
- onChange={ onPickerSelect }
82
- hideCancelButton={ Platform.OS !== 'ios' }
83
- leftAlign
84
- getAnchor={ getAnchor }
85
- // translators: %s: block title e.g: "Paragraph".
86
- title={ sprintf( __( 'Transform %s to' ), blockTitle ) }
87
- />
88
- );
89
- };
90
-
91
- export default BlockTransformationsMenu;