@wordpress/block-editor 15.21.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 (407) hide show
  1. package/CHANGELOG.md +17 -1
  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-patterns-list/index.cjs +1 -1
  5. package/build/components/block-patterns-list/index.cjs.map +2 -2
  6. package/build/components/block-switcher/block-transformations-menu.cjs +16 -15
  7. package/build/components/block-switcher/block-transformations-menu.cjs.map +2 -2
  8. package/build/components/block-switcher/index.cjs +4 -4
  9. package/build/components/block-switcher/index.cjs.map +2 -2
  10. package/build/components/global-styles/advanced-panel.cjs +23 -15
  11. package/build/components/global-styles/advanced-panel.cjs.map +2 -2
  12. package/build/components/global-styles/background-panel.cjs +2 -2
  13. package/build/components/global-styles/background-panel.cjs.map +2 -2
  14. package/build/components/global-styles/border-panel.cjs +2 -0
  15. package/build/components/global-styles/border-panel.cjs.map +2 -2
  16. package/build/components/global-styles/dimensions-panel.cjs +1 -1
  17. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  18. package/build/components/inner-blocks/use-inner-block-template-sync.cjs +3 -1
  19. package/build/components/inner-blocks/use-inner-block-template-sync.cjs.map +2 -2
  20. package/build/components/inserter/hooks/use-patterns-state.cjs +1 -1
  21. package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
  22. package/build/components/inserter/index.cjs +179 -220
  23. package/build/components/inserter/index.cjs.map +3 -3
  24. package/build/components/inserter/search-results.cjs +1 -1
  25. package/build/components/inserter/search-results.cjs.map +2 -2
  26. package/build/components/list-view/block-select-button.cjs +10 -12
  27. package/build/components/list-view/block-select-button.cjs.map +2 -2
  28. package/build/components/list-view/block.cjs +2 -1
  29. package/build/components/list-view/block.cjs.map +2 -2
  30. package/build/components/provider/use-block-sync.cjs +11 -2
  31. package/build/components/provider/use-block-sync.cjs.map +2 -2
  32. package/build/components/rich-text/event-listeners/before-input-rules.cjs +4 -4
  33. package/build/components/rich-text/event-listeners/before-input-rules.cjs.map +3 -3
  34. package/build/components/rich-text/event-listeners/delete.cjs +4 -4
  35. package/build/components/rich-text/event-listeners/delete.cjs.map +3 -3
  36. package/build/components/rich-text/event-listeners/enter.cjs +7 -2
  37. package/build/components/rich-text/event-listeners/enter.cjs.map +2 -2
  38. package/build/components/rich-text/event-listeners/input-events.cjs +4 -4
  39. package/build/components/rich-text/event-listeners/input-events.cjs.map +3 -3
  40. package/build/components/rich-text/event-listeners/input-rules.cjs +17 -4
  41. package/build/components/rich-text/event-listeners/input-rules.cjs.map +3 -3
  42. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs +4 -4
  43. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs.map +3 -3
  44. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs +4 -4
  45. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs.map +3 -3
  46. package/build/components/rich-text/event-listeners/shortcuts.cjs +4 -4
  47. package/build/components/rich-text/event-listeners/shortcuts.cjs.map +3 -3
  48. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs +4 -4
  49. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +3 -3
  50. package/build/components/rich-text/index.cjs +1 -23
  51. package/build/components/rich-text/index.cjs.map +2 -2
  52. package/build/components/use-block-commands/index.cjs +5 -5
  53. package/build/components/use-block-commands/index.cjs.map +2 -2
  54. package/build/hooks/anchor.cjs +11 -15
  55. package/build/hooks/anchor.cjs.map +2 -2
  56. package/build/hooks/border.cjs +0 -3
  57. package/build/hooks/border.cjs.map +2 -2
  58. package/build/hooks/color.cjs +1 -4
  59. package/build/hooks/color.cjs.map +2 -2
  60. package/build/hooks/dimensions.cjs +0 -3
  61. package/build/hooks/dimensions.cjs.map +2 -2
  62. package/build/hooks/fit-text.cjs +11 -0
  63. package/build/hooks/fit-text.cjs.map +2 -2
  64. package/build/hooks/position.cjs +19 -22
  65. package/build/hooks/position.cjs.map +2 -2
  66. package/build/hooks/supports.cjs +0 -7
  67. package/build/hooks/supports.cjs.map +2 -2
  68. package/build/store/actions.cjs +7 -3
  69. package/build/store/actions.cjs.map +2 -2
  70. package/build/store/private-actions.cjs +1 -2
  71. package/build/store/private-actions.cjs.map +2 -2
  72. package/build/store/private-selectors.cjs +23 -0
  73. package/build/store/private-selectors.cjs.map +2 -2
  74. package/build/store/reducer.cjs +14 -6
  75. package/build/store/reducer.cjs.map +2 -2
  76. package/build/store/selectors.cjs +60 -41
  77. package/build/store/selectors.cjs.map +2 -2
  78. package/build-module/components/block-compare/index.mjs +1 -1
  79. package/build-module/components/block-compare/index.mjs.map +2 -2
  80. package/build-module/components/block-patterns-list/index.mjs +1 -1
  81. package/build-module/components/block-patterns-list/index.mjs.map +2 -2
  82. package/build-module/components/block-switcher/block-transformations-menu.mjs +16 -15
  83. package/build-module/components/block-switcher/block-transformations-menu.mjs.map +2 -2
  84. package/build-module/components/block-switcher/index.mjs +4 -4
  85. package/build-module/components/block-switcher/index.mjs.map +2 -2
  86. package/build-module/components/global-styles/advanced-panel.mjs +23 -15
  87. package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
  88. package/build-module/components/global-styles/background-panel.mjs +3 -3
  89. package/build-module/components/global-styles/background-panel.mjs.map +2 -2
  90. package/build-module/components/global-styles/border-panel.mjs +2 -0
  91. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  92. package/build-module/components/global-styles/dimensions-panel.mjs +2 -2
  93. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  94. package/build-module/components/inner-blocks/use-inner-block-template-sync.mjs +3 -1
  95. package/build-module/components/inner-blocks/use-inner-block-template-sync.mjs.map +2 -2
  96. package/build-module/components/inserter/hooks/use-patterns-state.mjs +1 -1
  97. package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
  98. package/build-module/components/inserter/index.mjs +185 -222
  99. package/build-module/components/inserter/index.mjs.map +3 -3
  100. package/build-module/components/inserter/search-results.mjs +1 -1
  101. package/build-module/components/inserter/search-results.mjs.map +2 -2
  102. package/build-module/components/list-view/block-select-button.mjs +10 -12
  103. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  104. package/build-module/components/list-view/block.mjs +2 -1
  105. package/build-module/components/list-view/block.mjs.map +2 -2
  106. package/build-module/components/provider/use-block-sync.mjs +11 -2
  107. package/build-module/components/provider/use-block-sync.mjs.map +2 -2
  108. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +4 -4
  109. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
  110. package/build-module/components/rich-text/event-listeners/delete.mjs +4 -4
  111. package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
  112. package/build-module/components/rich-text/event-listeners/enter.mjs +7 -2
  113. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  114. package/build-module/components/rich-text/event-listeners/input-events.mjs +4 -4
  115. package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
  116. package/build-module/components/rich-text/event-listeners/input-rules.mjs +17 -4
  117. package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
  118. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +4 -4
  119. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
  120. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +4 -4
  121. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
  122. package/build-module/components/rich-text/event-listeners/shortcuts.mjs +4 -4
  123. package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
  124. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +4 -4
  125. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
  126. package/build-module/components/rich-text/index.mjs +1 -23
  127. package/build-module/components/rich-text/index.mjs.map +2 -2
  128. package/build-module/components/use-block-commands/index.mjs +5 -5
  129. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  130. package/build-module/hooks/anchor.mjs +11 -15
  131. package/build-module/hooks/anchor.mjs.map +2 -2
  132. package/build-module/hooks/border.mjs +1 -4
  133. package/build-module/hooks/border.mjs.map +2 -2
  134. package/build-module/hooks/color.mjs +2 -5
  135. package/build-module/hooks/color.mjs.map +2 -2
  136. package/build-module/hooks/dimensions.mjs +1 -4
  137. package/build-module/hooks/dimensions.mjs.map +2 -2
  138. package/build-module/hooks/fit-text.mjs +11 -0
  139. package/build-module/hooks/fit-text.mjs.map +2 -2
  140. package/build-module/hooks/position.mjs +20 -23
  141. package/build-module/hooks/position.mjs.map +2 -2
  142. package/build-module/hooks/supports.mjs +0 -7
  143. package/build-module/hooks/supports.mjs.map +2 -2
  144. package/build-module/store/actions.mjs +7 -3
  145. package/build-module/store/actions.mjs.map +2 -2
  146. package/build-module/store/private-actions.mjs +1 -2
  147. package/build-module/store/private-actions.mjs.map +2 -2
  148. package/build-module/store/private-selectors.mjs +21 -0
  149. package/build-module/store/private-selectors.mjs.map +2 -2
  150. package/build-module/store/reducer.mjs +14 -6
  151. package/build-module/store/reducer.mjs.map +2 -2
  152. package/build-module/store/selectors.mjs +62 -42
  153. package/build-module/store/selectors.mjs.map +2 -2
  154. package/build-style/content-rtl.css +12 -0
  155. package/build-style/content.css +12 -0
  156. package/build-style/style-rtl.css +26 -8
  157. package/build-style/style.css +26 -8
  158. package/package.json +49 -46
  159. package/src/components/block-breadcrumb/README.md +2 -2
  160. package/src/components/block-compare/README.md +6 -6
  161. package/src/components/block-compare/index.js +1 -3
  162. package/src/components/block-patterns-list/index.js +1 -1
  163. package/src/components/block-preview/README.md +1 -1
  164. package/src/components/block-switcher/block-transformations-menu.js +16 -18
  165. package/src/components/block-switcher/index.js +4 -4
  166. package/src/components/block-types-list/README.md +0 -19
  167. package/src/components/global-styles/advanced-panel.js +5 -1
  168. package/src/components/global-styles/background-panel.js +3 -3
  169. package/src/components/global-styles/border-panel.js +2 -0
  170. package/src/components/global-styles/dimensions-panel.js +12 -13
  171. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -1
  172. package/src/components/inserter/hooks/use-patterns-state.js +1 -1
  173. package/src/components/inserter/index.js +257 -288
  174. package/src/components/inserter/search-results.js +1 -3
  175. package/src/components/justify-content-control/README.md +1 -1
  176. package/src/components/list-view/block-select-button.js +9 -13
  177. package/src/components/list-view/block.js +1 -0
  178. package/src/components/media-placeholder/README.md +1 -29
  179. package/src/components/media-upload/README.md +0 -19
  180. package/src/components/provider/test/use-block-sync.js +40 -0
  181. package/src/components/provider/use-block-sync.js +12 -2
  182. package/src/components/rich-text/event-listeners/before-input-rules.js +5 -4
  183. package/src/components/rich-text/event-listeners/delete.js +9 -4
  184. package/src/components/rich-text/event-listeners/enter.js +9 -2
  185. package/src/components/rich-text/event-listeners/input-events.js +13 -4
  186. package/src/components/rich-text/event-listeners/input-rules.js +20 -4
  187. package/src/components/rich-text/event-listeners/insert-replacement-text.js +9 -4
  188. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +9 -4
  189. package/src/components/rich-text/event-listeners/shortcuts.js +13 -4
  190. package/src/components/rich-text/event-listeners/undo-automatic-change.js +5 -4
  191. package/src/components/rich-text/index.js +1 -33
  192. package/src/components/unit-control/README.md +1 -1
  193. package/src/components/url-popover/README.md +1 -1
  194. package/src/components/use-block-commands/index.js +5 -5
  195. package/src/hooks/anchor.js +9 -17
  196. package/src/hooks/border.js +1 -5
  197. package/src/hooks/color.js +1 -6
  198. package/src/hooks/dimensions.js +1 -5
  199. package/src/hooks/fit-text.js +16 -0
  200. package/src/hooks/position.js +23 -27
  201. package/src/hooks/supports.js +0 -9
  202. package/src/store/actions.js +13 -3
  203. package/src/store/private-actions.js +1 -4
  204. package/src/store/private-selectors.js +42 -0
  205. package/src/store/reducer.js +19 -7
  206. package/src/store/selectors.js +91 -53
  207. package/src/store/test/actions.js +21 -0
  208. package/src/store/test/reducer.js +46 -0
  209. package/src/store/test/selectors.js +77 -0
  210. package/build/components/media-upload-progress/constants.cjs +0 -46
  211. package/build/components/media-upload-progress/constants.cjs.map +0 -7
  212. package/build/components/rich-text/native/format-edit.cjs +0 -60
  213. package/build/components/rich-text/native/format-edit.cjs.map +0 -7
  214. package/build/components/rich-text/native/index.cjs +0 -28
  215. package/build/components/rich-text/native/index.cjs.map +0 -7
  216. package/build/components/rich-text/native/use-format-types.cjs +0 -139
  217. package/build/components/rich-text/native/use-format-types.cjs.map +0 -7
  218. package/build-module/components/media-upload-progress/constants.mjs +0 -16
  219. package/build-module/components/media-upload-progress/constants.mjs.map +0 -7
  220. package/build-module/components/rich-text/native/format-edit.mjs +0 -39
  221. package/build-module/components/rich-text/native/format-edit.mjs.map +0 -7
  222. package/build-module/components/rich-text/native/index.mjs +0 -7
  223. package/build-module/components/rich-text/native/index.mjs.map +0 -7
  224. package/build-module/components/rich-text/native/use-format-types.mjs +0 -114
  225. package/build-module/components/rich-text/native/use-format-types.mjs.map +0 -7
  226. package/src/components/audio-player/audio-url-parser.native.js +0 -20
  227. package/src/components/audio-player/index.native.js +0 -225
  228. package/src/components/audio-player/styles.native.scss +0 -114
  229. package/src/components/audio-player/test/audio-url-parser.native.js +0 -53
  230. package/src/components/block-alignment-control/test/index.native.js +0 -37
  231. package/src/components/block-alignment-control/ui.native.js +0 -86
  232. package/src/components/block-caption/README.md +0 -104
  233. package/src/components/block-caption/index.native.js +0 -89
  234. package/src/components/block-caption/styles.native.scss +0 -7
  235. package/src/components/block-controls/slot.native.js +0 -33
  236. package/src/components/block-draggable/draggable-chip.native.js +0 -49
  237. package/src/components/block-draggable/dropping-insertion-point.native.js +0 -181
  238. package/src/components/block-draggable/dropping-insertion-point.native.scss +0 -8
  239. package/src/components/block-draggable/index.native.js +0 -467
  240. package/src/components/block-draggable/style.native.scss +0 -19
  241. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +0 -73
  242. package/src/components/block-draggable/test/helpers.native.js +0 -182
  243. package/src/components/block-draggable/test/index.native.js +0 -419
  244. package/src/components/block-draggable/use-scroll-when-dragging.native.js +0 -135
  245. package/src/components/block-edit/edit.native.js +0 -49
  246. package/src/components/block-edit/test/edit.native.js +0 -65
  247. package/src/components/block-heading-level-dropdown/index.native.js +0 -68
  248. package/src/components/block-icon/index.native.js +0 -47
  249. package/src/components/block-icon/style.native.scss +0 -7
  250. package/src/components/block-list/block-crash-boundary.native.js +0 -43
  251. package/src/components/block-list/block-crash-warning.native.js +0 -21
  252. package/src/components/block-list/block-invalid-warning.native.js +0 -70
  253. package/src/components/block-list/block-list-context.native.js +0 -172
  254. package/src/components/block-list/block-list-item-cell.native.js +0 -62
  255. package/src/components/block-list/block-list-item.native.js +0 -209
  256. package/src/components/block-list/block-list-item.native.scss +0 -16
  257. package/src/components/block-list/block-outline.native.js +0 -77
  258. package/src/components/block-list/block-selection-button.native.js +0 -100
  259. package/src/components/block-list/block-selection-button.native.scss +0 -34
  260. package/src/components/block-list/block.native.js +0 -716
  261. package/src/components/block-list/block.native.scss +0 -62
  262. package/src/components/block-list/grid-item.native.js +0 -58
  263. package/src/components/block-list/index.native.js +0 -437
  264. package/src/components/block-list/insertion-point.native.js +0 -36
  265. package/src/components/block-list/style.native.scss +0 -117
  266. package/src/components/block-list/test/block-invalid-warning.native.js +0 -62
  267. package/src/components/block-list/test/block-list-context.native.js +0 -243
  268. package/src/components/block-list/test/block-outline.native.js +0 -255
  269. package/src/components/block-list/test/fixtures/block-list-context.native.js +0 -79
  270. package/src/components/block-list/test/index.native.js +0 -205
  271. package/src/components/block-list/use-block-props/index.native.js +0 -10
  272. package/src/components/block-list/use-scroll-upon-insertion.native.js +0 -52
  273. package/src/components/block-list-appender/index.native.js +0 -70
  274. package/src/components/block-list-appender/style.native.scss +0 -8
  275. package/src/components/block-media-update-progress/README.md +0 -100
  276. package/src/components/block-media-update-progress/index.native.js +0 -299
  277. package/src/components/block-media-update-progress/styles.native.scss +0 -9
  278. package/src/components/block-media-update-progress/test/index.native.js +0 -543
  279. package/src/components/block-mover/index.native.js +0 -193
  280. package/src/components/block-mover/mover-description.native.js +0 -155
  281. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +0 -218
  282. package/src/components/block-mover/test/index.native.js +0 -186
  283. package/src/components/block-settings/button.native.js +0 -41
  284. package/src/components/block-settings/container.native.js +0 -91
  285. package/src/components/block-settings/container.native.scss +0 -4
  286. package/src/components/block-settings/index.native.js +0 -5
  287. package/src/components/block-styles/index.native.js +0 -94
  288. package/src/components/block-styles/preview.native.js +0 -109
  289. package/src/components/block-styles/style.native.scss +0 -64
  290. package/src/components/block-switcher/block-transformations-menu.native.js +0 -91
  291. package/src/components/block-toolbar/block-toolbar-menu.native.js +0 -477
  292. package/src/components/block-toolbar/index.native.js +0 -126
  293. package/src/components/block-toolbar/test/__snapshots__/block-toolbar-menu.native.js.snap +0 -125
  294. package/src/components/block-toolbar/test/block-toolbar-menu.native.js +0 -405
  295. package/src/components/block-toolbar/test/index.native.js +0 -36
  296. package/src/components/block-types-list/index.native.js +0 -175
  297. package/src/components/block-types-list/style.native.scss +0 -25
  298. package/src/components/block-variation-picker/index.native.js +0 -107
  299. package/src/components/block-variation-picker/style.native.scss +0 -32
  300. package/src/components/button-block-appender/index.native.js +0 -92
  301. package/src/components/button-block-appender/styles.native.scss +0 -43
  302. package/src/components/caption/README.md +0 -44
  303. package/src/components/caption/index.native.js +0 -61
  304. package/src/components/colors-gradients/panel-color-gradient-settings.native.js +0 -59
  305. package/src/components/contrast-checker/index.native.js +0 -113
  306. package/src/components/contrast-checker/style.native.scss +0 -26
  307. package/src/components/convert-to-group-buttons/index.native.js +0 -79
  308. package/src/components/default-block-appender/index.native.js +0 -113
  309. package/src/components/default-block-appender/style.native.scss +0 -18
  310. package/src/components/floating-toolbar/floatingToolbar.android.scss +0 -4
  311. package/src/components/floating-toolbar/floatingToolbar.ios.scss +0 -3
  312. package/src/components/floating-toolbar/index.native.js +0 -141
  313. package/src/components/floating-toolbar/styles.native.scss +0 -43
  314. package/src/components/font-sizes/index.native.js +0 -7
  315. package/src/components/global-styles/color-panel.native.js +0 -207
  316. package/src/components/global-styles/test/use-global-styles-context.native.js +0 -435
  317. package/src/components/global-styles/use-global-styles-context.native.js +0 -592
  318. package/src/components/gradients/index.native.js +0 -2
  319. package/src/components/image-link-destinations/index.native.js +0 -152
  320. package/src/components/image-link-destinations/style.native.scss +0 -16
  321. package/src/components/index.native.js +0 -108
  322. package/src/components/inner-blocks/constants.native.js +0 -5
  323. package/src/components/inner-blocks/index.native.js +0 -221
  324. package/src/components/inner-blocks/warning-max-depth-exceeded.native.js +0 -124
  325. package/src/components/inserter/block-types-tab.native.js +0 -76
  326. package/src/components/inserter/hooks/use-block-type-impressions.native.js +0 -47
  327. package/src/components/inserter/hooks/use-clipboard-block.native.js +0 -40
  328. package/src/components/inserter/index.native.js +0 -424
  329. package/src/components/inserter/menu.native.js +0 -237
  330. package/src/components/inserter/no-results.native.js +0 -49
  331. package/src/components/inserter/reusable-blocks-tab.native.js +0 -45
  332. package/src/components/inserter/search-results.native.js +0 -67
  333. package/src/components/inserter/style.native.scss +0 -83
  334. package/src/components/inserter/tabs.native.js +0 -152
  335. package/src/components/inserter/test/__snapshots__/index.native.js.snap +0 -117
  336. package/src/components/inserter/test/fixtures/index.native.js +0 -12
  337. package/src/components/inserter/test/index.native.js +0 -273
  338. package/src/components/inserter/test/reusable-blocks-tab.native.js +0 -62
  339. package/src/components/inserter/test/utils.native.js +0 -37
  340. package/src/components/inserter/utils.native.js +0 -46
  341. package/src/components/inserter-button/index.native.js +0 -108
  342. package/src/components/inserter-button/style.native.scss +0 -72
  343. package/src/components/inspector-controls/fill.native.js +0 -62
  344. package/src/components/inspector-controls/slot.native.js +0 -35
  345. package/src/components/inspector-controls-tabs/advanced-controls-panel.native.js +0 -31
  346. package/src/components/line-height-control/index.native.js +0 -28
  347. package/src/components/media-placeholder/index.native.js +0 -258
  348. package/src/components/media-placeholder/styles.native.scss +0 -108
  349. package/src/components/media-replace-flow/index.native.js +0 -12
  350. package/src/components/media-upload/constants.native.js +0 -14
  351. package/src/components/media-upload/index.native.js +0 -356
  352. package/src/components/media-upload/style.native.scss +0 -4
  353. package/src/components/media-upload/test/index.native.js +0 -172
  354. package/src/components/media-upload-progress/README.md +0 -100
  355. package/src/components/media-upload-progress/constants.js +0 -6
  356. package/src/components/media-upload-progress/index.native.js +0 -233
  357. package/src/components/media-upload-progress/styles.native.scss +0 -15
  358. package/src/components/media-upload-progress/test/index.native.js +0 -220
  359. package/src/components/plain-text/index.native.js +0 -164
  360. package/src/components/plain-text/style.native.scss +0 -10
  361. package/src/components/provider/index.native.js +0 -32
  362. package/src/components/rich-text/embed-handler-picker.native.js +0 -65
  363. package/src/components/rich-text/file-paste-handler.native.js +0 -3
  364. package/src/components/rich-text/format-toolbar/index.native.js +0 -21
  365. package/src/components/rich-text/format-toolbar-container.native.js +0 -16
  366. package/src/components/rich-text/index.native.js +0 -701
  367. package/src/components/rich-text/input-event.native.js +0 -10
  368. package/src/components/rich-text/native/format-edit.js +0 -44
  369. package/src/components/rich-text/native/get-format-colors.native.js +0 -47
  370. package/src/components/rich-text/native/index.js +0 -1
  371. package/src/components/rich-text/native/index.native.js +0 -1389
  372. package/src/components/rich-text/native/style.native.scss +0 -28
  373. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +0 -79
  374. package/src/components/rich-text/native/test/index.native.js +0 -345
  375. package/src/components/rich-text/native/test/performance/rich-text.native.js +0 -44
  376. package/src/components/rich-text/native/toolbar-button-with-options.native.js +0 -61
  377. package/src/components/rich-text/native/use-format-types.js +0 -146
  378. package/src/components/rich-text/remove-browser-shortcuts.native.js +0 -1
  379. package/src/components/rich-text/shortcut.native.js +0 -10
  380. package/src/components/ungroup-button/README.md +0 -23
  381. package/src/components/ungroup-button/index.native.js +0 -77
  382. package/src/components/unsupported-block-details/index.native.js +0 -187
  383. package/src/components/unsupported-block-details/style.native.scss +0 -56
  384. package/src/components/url-input/index.native.js +0 -33
  385. package/src/components/use-block-drop-zone/index.native.js +0 -207
  386. package/src/components/use-on-block-drop/index.native.js +0 -115
  387. package/src/components/use-unsupported-block-editor/index.native.js +0 -59
  388. package/src/components/video-player/gridicon-play.native.js +0 -13
  389. package/src/components/video-player/index.native.js +0 -133
  390. package/src/components/video-player/styles.native.scss +0 -29
  391. package/src/components/warning/index.native.js +0 -64
  392. package/src/components/warning/style.native.scss +0 -47
  393. package/src/hooks/align.native.js +0 -49
  394. package/src/hooks/custom-class-name.native.js +0 -70
  395. package/src/hooks/index.native.js +0 -36
  396. package/src/hooks/layout.native.js +0 -23
  397. package/src/hooks/test/__snapshots__/align.native.js.snap +0 -73
  398. package/src/hooks/test/__snapshots__/anchor.native.js.snap +0 -7
  399. package/src/hooks/test/align.native.js +0 -134
  400. package/src/hooks/test/anchor.native.js +0 -32
  401. package/src/hooks/test/use-editor-wrapper-styles.native.js +0 -282
  402. package/src/hooks/typography.native.js +0 -60
  403. package/src/hooks/use-editor-wrapper-styles.native.js +0 -250
  404. package/src/hooks/use-editor-wrapper-styles.native.scss +0 -12
  405. package/src/index.native.js +0 -6
  406. package/src/private-apis.native.js +0 -21
  407. package/src/store/defaults.native.js +0 -23
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/components/rich-text/native/use-format-types.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as richTextStore } from '@wordpress/rich-text';\n\nfunction formatTypesSelector( select ) {\n\treturn select( richTextStore ).getFormatTypes();\n}\n\n/**\n * Set of all interactive content tags.\n *\n * @see https://html.spec.whatwg.org/multipage/dom.html#interactive-content\n */\nconst interactiveContentTags = new Set( [\n\t'a',\n\t'audio',\n\t'button',\n\t'details',\n\t'embed',\n\t'iframe',\n\t'input',\n\t'label',\n\t'select',\n\t'textarea',\n\t'video',\n] );\n\n/**\n * This hook provides RichText with the `formatTypes` and its derived props from\n * experimental format type settings.\n *\n * @param {Object} $0 Options\n * @param {string} $0.clientId Block client ID.\n * @param {string} $0.identifier Block attribute.\n * @param {boolean} $0.withoutInteractiveFormatting Whether to clean the interactive formatting or not.\n * @param {Array} $0.allowedFormats Allowed formats\n */\nexport function useFormatTypes( {\n\tclientId,\n\tidentifier,\n\twithoutInteractiveFormatting,\n\tallowedFormats,\n} ) {\n\tconst allFormatTypes = useSelect( formatTypesSelector, [] );\n\tconst formatTypes = useMemo( () => {\n\t\treturn allFormatTypes.filter( ( { name, tagName } ) => {\n\t\t\tif ( allowedFormats && ! allowedFormats.includes( name ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\twithoutInteractiveFormatting &&\n\t\t\t\tinteractiveContentTags.has( tagName )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} );\n\t}, [ allFormatTypes, allowedFormats, interactiveContentTags ] );\n\tconst keyedSelected = useSelect(\n\t\t( select ) =>\n\t\t\tformatTypes.reduce( ( accumulator, type ) => {\n\t\t\t\tif ( type.__experimentalGetPropsForEditableTreePreparation ) {\n\t\t\t\t\taccumulator[ type.name ] =\n\t\t\t\t\t\ttype.__experimentalGetPropsForEditableTreePreparation(\n\t\t\t\t\t\t\tselect,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\trichTextIdentifier: identifier,\n\t\t\t\t\t\t\t\tblockClientId: clientId,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ formatTypes, clientId, identifier ]\n\t);\n\tconst dispatch = useDispatch();\n\tconst prepareHandlers = [];\n\tconst valueHandlers = [];\n\tconst changeHandlers = [];\n\tconst dependencies = [];\n\n\tformatTypes.forEach( ( type ) => {\n\t\tif ( type.__experimentalCreatePrepareEditableTree ) {\n\t\t\tconst selected = keyedSelected[ type.name ];\n\t\t\tconst handler = type.__experimentalCreatePrepareEditableTree(\n\t\t\t\tselected,\n\t\t\t\t{\n\t\t\t\t\trichTextIdentifier: identifier,\n\t\t\t\t\tblockClientId: clientId,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( type.__experimentalCreateOnChangeEditableValue ) {\n\t\t\t\tvalueHandlers.push( handler );\n\t\t\t} else {\n\t\t\t\tprepareHandlers.push( handler );\n\t\t\t}\n\n\t\t\tfor ( const key in selected ) {\n\t\t\t\tdependencies.push( selected[ key ] );\n\t\t\t}\n\t\t}\n\n\t\tif ( type.__experimentalCreateOnChangeEditableValue ) {\n\t\t\tlet dispatchers = {};\n\n\t\t\tif ( type.__experimentalGetPropsForEditableTreeChangeHandler ) {\n\t\t\t\tdispatchers =\n\t\t\t\t\ttype.__experimentalGetPropsForEditableTreeChangeHandler(\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trichTextIdentifier: identifier,\n\t\t\t\t\t\t\tblockClientId: clientId,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tchangeHandlers.push(\n\t\t\t\ttype.__experimentalCreateOnChangeEditableValue(\n\t\t\t\t\t{\n\t\t\t\t\t\t...( keyedSelected[ type.name ] || {} ),\n\t\t\t\t\t\t...dispatchers,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\trichTextIdentifier: identifier,\n\t\t\t\t\t\tblockClientId: clientId,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t};\n}\n"],
5
- "mappings": ";AAGA,SAAS,eAAe;AACxB,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,qBAAqB;AAEvC,SAAS,oBAAqB,QAAS;AACtC,SAAO,OAAQ,aAAc,EAAE,eAAe;AAC/C;AAOA,IAAM,yBAAyB,oBAAI,IAAK;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAE;AAYK,SAAS,eAAgB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,iBAAiB,UAAW,qBAAqB,CAAC,CAAE;AAC1D,QAAM,cAAc,QAAS,MAAM;AAClC,WAAO,eAAe,OAAQ,CAAE,EAAE,MAAM,QAAQ,MAAO;AACtD,UAAK,kBAAkB,CAAE,eAAe,SAAU,IAAK,GAAI;AAC1D,eAAO;AAAA,MACR;AAEA,UACC,gCACA,uBAAuB,IAAK,OAAQ,GACnC;AACD,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR,CAAE;AAAA,EACH,GAAG,CAAE,gBAAgB,gBAAgB,sBAAuB,CAAE;AAC9D,QAAM,gBAAgB;AAAA,IACrB,CAAE,WACD,YAAY,OAAQ,CAAE,aAAa,SAAU;AAC5C,UAAK,KAAK,kDAAmD;AAC5D,oBAAa,KAAK,IAAK,IACtB,KAAK;AAAA,UACJ;AAAA,UACA;AAAA,YACC,oBAAoB;AAAA,YACpB,eAAe;AAAA,UAChB;AAAA,QACD;AAAA,MACF;AAEA,aAAO;AAAA,IACR,GAAG,CAAC,CAAE;AAAA,IACP,CAAE,aAAa,UAAU,UAAW;AAAA,EACrC;AACA,QAAM,WAAW,YAAY;AAC7B,QAAM,kBAAkB,CAAC;AACzB,QAAM,gBAAgB,CAAC;AACvB,QAAM,iBAAiB,CAAC;AACxB,QAAM,eAAe,CAAC;AAEtB,cAAY,QAAS,CAAE,SAAU;AAChC,QAAK,KAAK,yCAA0C;AACnD,YAAM,WAAW,cAAe,KAAK,IAAK;AAC1C,YAAM,UAAU,KAAK;AAAA,QACpB;AAAA,QACA;AAAA,UACC,oBAAoB;AAAA,UACpB,eAAe;AAAA,QAChB;AAAA,MACD;AAEA,UAAK,KAAK,2CAA4C;AACrD,sBAAc,KAAM,OAAQ;AAAA,MAC7B,OAAO;AACN,wBAAgB,KAAM,OAAQ;AAAA,MAC/B;AAEA,iBAAY,OAAO,UAAW;AAC7B,qBAAa,KAAM,SAAU,GAAI,CAAE;AAAA,MACpC;AAAA,IACD;AAEA,QAAK,KAAK,2CAA4C;AACrD,UAAI,cAAc,CAAC;AAEnB,UAAK,KAAK,oDAAqD;AAC9D,sBACC,KAAK;AAAA,UACJ;AAAA,UACA;AAAA,YACC,oBAAoB;AAAA,YACpB,eAAe;AAAA,UAChB;AAAA,QACD;AAAA,MACF;AAEA,qBAAe;AAAA,QACd,KAAK;AAAA,UACJ;AAAA,YACC,GAAK,cAAe,KAAK,IAAK,KAAK,CAAC;AAAA,YACpC,GAAG;AAAA,UACJ;AAAA,UACA;AAAA,YACC,oBAAoB;AAAA,YACpB,eAAe;AAAA,UAChB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD,CAAE;AAEF,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;",
6
- "names": []
7
- }
@@ -1,20 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { safeDecodeURI } from '@wordpress/url';
5
-
6
- export const parseAudioUrl = ( src ) => {
7
- const decodedURI = safeDecodeURI( src );
8
- const fileName = decodedURI
9
- .split( '#' )
10
- .shift()
11
- .split( '?' )
12
- .shift()
13
- .split( '/' )
14
- .pop();
15
-
16
- const parts = fileName.split( '.' );
17
- const extension = parts.length === 2 ? parts.pop().toUpperCase() + ' ' : '';
18
- const title = parts.join( '.' );
19
- return { title, extension };
20
- };
@@ -1,225 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import {
5
- Text,
6
- TouchableWithoutFeedback,
7
- Linking,
8
- Alert,
9
- Platform,
10
- } from 'react-native';
11
- import { default as VideoPlayer } from 'react-native-video';
12
-
13
- /**
14
- * WordPress dependencies
15
- */
16
- import { View } from '@wordpress/primitives';
17
- import { Icon as WCIcon } from '@wordpress/components';
18
- import { withPreferredColorScheme } from '@wordpress/compose';
19
- import { __ } from '@wordpress/i18n';
20
- import { audio, cautionFilled } from '@wordpress/icons';
21
- import {
22
- requestImageFailedRetryDialog,
23
- requestImageUploadCancelDialog,
24
- } from '@wordpress/react-native-bridge';
25
- import { getProtocol } from '@wordpress/url';
26
- import { useState } from '@wordpress/element';
27
-
28
- /**
29
- * Internal dependencies
30
- */
31
- import styles from './styles.scss';
32
- import { parseAudioUrl } from './audio-url-parser.native';
33
- import { useEditorColorScheme } from '../global-styles/use-global-styles-context';
34
-
35
- const isIOS = Platform.OS === 'ios';
36
-
37
- function Player( {
38
- isUploadInProgress,
39
- isUploadFailed,
40
- attributes,
41
- isSelected,
42
- } ) {
43
- const { id, src } = attributes;
44
- const [ paused, setPaused ] = useState( true );
45
-
46
- const onPressListen = () => {
47
- if ( src ) {
48
- if ( isIOS && this.player ) {
49
- this.player.presentFullscreenPlayer();
50
- return;
51
- }
52
-
53
- Linking.canOpenURL( src )
54
- .then( ( supported ) => {
55
- if ( ! supported ) {
56
- Alert.alert(
57
- __( 'Problem opening the audio' ),
58
- __( 'No application can handle this request.' )
59
- );
60
- } else {
61
- return Linking.openURL( src );
62
- }
63
- } )
64
- .catch( () => {
65
- Alert.alert(
66
- __( 'Problem opening the audio' ),
67
- __( 'An unknown error occurred. Please try again.' )
68
- );
69
- } );
70
- }
71
- };
72
-
73
- const containerStyle = useEditorColorScheme(
74
- styles.container,
75
- styles.containerDark
76
- );
77
-
78
- const iconStyle = useEditorColorScheme( styles.icon, styles.iconDark );
79
-
80
- const iconDisabledStyle = useEditorColorScheme(
81
- styles.iconDisabled,
82
- styles.iconDisabledDark
83
- );
84
-
85
- const isDisabled = isUploadFailed || isUploadInProgress;
86
-
87
- const finalIconStyle = {
88
- ...iconStyle,
89
- ...( isDisabled && iconDisabledStyle ),
90
- };
91
-
92
- const iconContainerStyle = useEditorColorScheme(
93
- styles.iconContainer,
94
- styles.iconContainerDark
95
- );
96
-
97
- const titleContainerStyle = {
98
- ...styles.titleContainer,
99
- ...( isIOS ? styles.titleContainerIOS : styles.titleContainerAndroid ),
100
- };
101
-
102
- const titleStyle = useEditorColorScheme( styles.title, styles.titleDark );
103
-
104
- const uploadFailedStyle = useEditorColorScheme(
105
- styles.uploadFailed,
106
- styles.uploadFailedDark
107
- );
108
-
109
- const subtitleStyle = useEditorColorScheme(
110
- styles.subtitle,
111
- styles.subtitleDark
112
- );
113
-
114
- const finalSubtitleStyle = {
115
- ...subtitleStyle,
116
- ...( isUploadFailed && uploadFailedStyle ),
117
- };
118
-
119
- const buttonBackgroundStyle = useEditorColorScheme(
120
- styles.buttonBackground,
121
- styles.buttonBackgroundDark
122
- );
123
-
124
- let title = '';
125
- let extension = '';
126
-
127
- if ( src ) {
128
- const result = parseAudioUrl( src );
129
- extension = result.extension;
130
- title = result.title;
131
- }
132
-
133
- const getSubtitleValue = () => {
134
- if ( isUploadInProgress ) {
135
- return __( 'Uploading…' );
136
- }
137
- if ( isUploadFailed ) {
138
- return __( 'Failed to insert audio file. Please tap for options.' );
139
- }
140
- return (
141
- extension +
142
- // translators: displays audio file extension. e.g. MP3 audio file
143
- __( 'audio file' )
144
- );
145
- };
146
-
147
- function onAudioUploadCancelDialog() {
148
- if ( isUploadInProgress ) {
149
- requestImageUploadCancelDialog( id );
150
- } else if ( id && getProtocol( src ) === 'file:' ) {
151
- requestImageFailedRetryDialog( id );
152
- }
153
- }
154
-
155
- return (
156
- <TouchableWithoutFeedback
157
- accessible={ ! isSelected }
158
- disabled={ ! isSelected }
159
- onPress={ onAudioUploadCancelDialog }
160
- >
161
- <View style={ containerStyle }>
162
- <View style={ iconContainerStyle }>
163
- <WCIcon
164
- icon={ audio }
165
- style={ finalIconStyle }
166
- size={ 24 }
167
- />
168
- </View>
169
- <View style={ titleContainerStyle }>
170
- <Text style={ titleStyle }>{ title }</Text>
171
- <View style={ styles.subtitleContainer }>
172
- { isUploadFailed && (
173
- <WCIcon
174
- icon={ cautionFilled }
175
- style={ {
176
- ...styles.errorIcon,
177
- ...uploadFailedStyle,
178
- } }
179
- size={ 16 }
180
- />
181
- ) }
182
- <Text style={ finalSubtitleStyle }>
183
- { getSubtitleValue() }
184
- </Text>
185
- </View>
186
- </View>
187
- { ! isDisabled && (
188
- <TouchableWithoutFeedback
189
- accessibilityLabel={ __( 'Audio Player' ) }
190
- accessibilityRole="button"
191
- accessibilityHint={ __(
192
- 'Double tap to listen the audio file'
193
- ) }
194
- onPress={ onPressListen }
195
- >
196
- <View style={ buttonBackgroundStyle }>
197
- <Text style={ styles.buttonText }>
198
- { __( 'OPEN' ) }
199
- </Text>
200
- </View>
201
- </TouchableWithoutFeedback>
202
- ) }
203
- { isIOS && (
204
- <VideoPlayer
205
- source={ { uri: src } }
206
- paused={ paused }
207
- ref={ ( ref ) => {
208
- this.player = ref;
209
- } }
210
- controls={ false }
211
- ignoreSilentSwitch="ignore"
212
- onFullscreenPlayerWillPresent={ () => {
213
- setPaused( false );
214
- } }
215
- onFullscreenPlayerDidDismiss={ () => {
216
- setPaused( true );
217
- } }
218
- />
219
- ) }
220
- </View>
221
- </TouchableWithoutFeedback>
222
- );
223
- }
224
-
225
- export default withPreferredColorScheme( Player );
@@ -1,114 +0,0 @@
1
- .container {
2
- background-color: $light-ultra-dim;
3
- border-radius: 4px;
4
- flex-direction: row;
5
- align-items: center;
6
- }
7
-
8
- .containerDark {
9
- background-color: $dark-ultra-dim;
10
- }
11
-
12
- @mixin circle($width) {
13
- width: $width;
14
- height: $width;
15
- border-radius: $width*0.5;
16
- }
17
-
18
- .iconContainer {
19
- background-color: $light-ultra-dim;
20
- margin: 12px 16px;
21
- align-items: center;
22
- justify-content: center;
23
- @include circle(37px);
24
- }
25
-
26
- .iconContainerDark {
27
- background-color: $dark-ultra-dim;
28
- }
29
-
30
- .icon {
31
- color: $light-secondary;
32
- }
33
-
34
- .iconDark {
35
- color: $dark-secondary;
36
- }
37
-
38
- .iconDisabled {
39
- color: $light-quaternary;
40
- }
41
-
42
- .iconDisabledDark {
43
- color: $dark-quaternary;
44
- }
45
-
46
- .disabledIcon {
47
- color: $black;
48
- }
49
-
50
- .titleContainer {
51
- padding: 12px 16px 12px 0;
52
- flex: 1;
53
- }
54
-
55
- .titleContainerIOS {
56
- margin-top: -1px;
57
- }
58
-
59
- .titleContainerAndroid {
60
- margin-top: -2px;
61
- }
62
-
63
- .title {
64
- font-size: 17;
65
- margin-bottom: 1px;
66
- color: $light-primary;
67
- }
68
-
69
- .titleDark {
70
- color: $dark-primary;
71
- }
72
-
73
- .subtitleContainer {
74
- flex-direction: row;
75
- align-items: center;
76
- }
77
-
78
- .subtitle {
79
- font-size: 12;
80
- color: $light-secondary;
81
- }
82
-
83
- .subtitleDark {
84
- color: $dark-secondary;
85
- }
86
-
87
- .buttonBackground {
88
- margin: 12px 16px;
89
- padding: 8px 16px;
90
- border-radius: 500px;
91
- background-color: $light-ultra-dim;
92
- }
93
-
94
- .buttonBackgroundDark {
95
- background-color: $dark-ultra-dim;
96
- }
97
-
98
- .buttonText {
99
- font-size: 14;
100
- font-weight: 500;
101
- color: $blue-wordpress;
102
- }
103
-
104
- .errorIcon {
105
- margin-right: 4px;
106
- }
107
-
108
- .uploadFailed {
109
- color: $red-50;
110
- }
111
-
112
- .uploadFailedDark {
113
- color: $red-30;
114
- }
@@ -1,53 +0,0 @@
1
- /**
2
- * Internal dependencies
3
- */
4
- import { parseAudioUrl } from '../audio-url-parser.native';
5
-
6
- const supportedAudioUrlsWithExtensions = [
7
- 'https://www.mp3.com/file.mp3?key1=value1&key2=value2#anchorforsomereason',
8
- 'https://www.mp3.com/file.mp3?key1=value1&key2=value2',
9
- 'https://www.mp3.com/file.mp3',
10
- `https://www.mp3.com/folder/file.mp3`,
11
- ];
12
-
13
- const supportedAudioUrlsWithoutExtensions = [
14
- 'https://www.mp3.com/file?key1=value1&key2=value2#anchorforsomereason',
15
- 'https://www.mp3.com/file?key1=value1&key2=value2',
16
- 'https://www.mp3.com/file',
17
- 'https://www.mp3.com/folder/file',
18
- ];
19
-
20
- const supportedLocalAudioUrls = [
21
- 'file.mp3',
22
- 'file:///storage/emulated/0/Download/file.mp3',
23
- ];
24
-
25
- describe( 'supportedAudioUrlsWithExtensions', () => {
26
- supportedAudioUrlsWithExtensions.forEach( ( url ) => {
27
- it( `supports ${ url }`, () => {
28
- const { title, extension } = parseAudioUrl( url );
29
- expect( title ).toBe( 'file' );
30
- expect( extension ).toBe( 'MP3 ' );
31
- } );
32
- } );
33
- } );
34
-
35
- describe( 'supportedAudioUrlsWithoutExtensions', () => {
36
- supportedAudioUrlsWithoutExtensions.forEach( ( url ) => {
37
- it( `supports ${ url }`, () => {
38
- const { title, extension } = parseAudioUrl( url );
39
- expect( title ).toBe( 'file' );
40
- expect( extension ).toBe( '' );
41
- } );
42
- } );
43
- } );
44
-
45
- describe( 'supportedLocalAudioUrls', () => {
46
- supportedLocalAudioUrls.forEach( ( url ) => {
47
- it( `supports ${ url }`, () => {
48
- const { title, extension } = parseAudioUrl( url );
49
- expect( title ).toBe( 'file' );
50
- expect( extension ).toBe( 'MP3 ' );
51
- } );
52
- } );
53
- } );
@@ -1,37 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { render, fireEvent } from 'test/helpers';
5
-
6
- /**
7
- * Internal dependencies
8
- */
9
- import BlockAlignmentUI from '../ui';
10
-
11
- it( 'should call onChange with undefined when the control is already active', () => {
12
- const onChangeMock = jest.fn();
13
- const screen = render(
14
- <BlockAlignmentUI value="right" onChange={ onChangeMock } />
15
- );
16
- const alignButton = screen.getByLabelText( 'Align' );
17
- fireEvent.press( alignButton );
18
- const rightAlignmentButton = screen.getByLabelText( 'Align right' );
19
- fireEvent.press( rightAlignmentButton );
20
-
21
- expect( onChangeMock ).toHaveBeenCalledTimes( 1 );
22
- expect( onChangeMock ).toHaveBeenCalledWith( undefined );
23
- } );
24
-
25
- it( 'should call onChange with alignment value when the control is inactive', () => {
26
- const onChangeMock = jest.fn();
27
- const screen = render(
28
- <BlockAlignmentUI value="left" onChange={ onChangeMock } />
29
- );
30
- const alignButton = screen.getByLabelText( 'Align' );
31
- fireEvent.press( alignButton );
32
- const centerAlignmentButton = screen.getByLabelText( 'Align center' );
33
- fireEvent.press( centerAlignmentButton );
34
-
35
- expect( onChangeMock ).toHaveBeenCalledTimes( 1 );
36
- expect( onChangeMock ).toHaveBeenCalledWith( 'center' );
37
- } );
@@ -1,86 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __ } from '@wordpress/i18n';
5
- import {
6
- ToolbarDropdownMenu,
7
- ToolbarGroup,
8
- BottomSheetSelectControl,
9
- } from '@wordpress/components';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import useAvailableAlignments from './use-available-alignments';
15
- import {
16
- BLOCK_ALIGNMENTS_CONTROLS,
17
- DEFAULT_CONTROL,
18
- POPOVER_PROPS,
19
- } from './constants';
20
-
21
- function BlockAlignmentUI( {
22
- value,
23
- onChange,
24
- controls,
25
- isToolbar,
26
- isCollapsed = true,
27
- isBottomSheetControl = false,
28
- } ) {
29
- const enabledControls = useAvailableAlignments( controls );
30
- const hasEnabledControls = !! enabledControls.length;
31
-
32
- if ( ! hasEnabledControls ) {
33
- return null;
34
- }
35
-
36
- function onChangeAlignment( align ) {
37
- onChange( [ value, 'none' ].includes( align ) ? undefined : align );
38
- }
39
-
40
- const activeAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[ value ];
41
- const defaultAlignmentControl =
42
- BLOCK_ALIGNMENTS_CONTROLS[ DEFAULT_CONTROL ];
43
-
44
- const toolbarUIComponent = isToolbar ? ToolbarGroup : ToolbarDropdownMenu;
45
- const UIComponent = isBottomSheetControl
46
- ? BottomSheetSelectControl
47
- : toolbarUIComponent;
48
-
49
- const commonProps = {
50
- label: __( 'Align' ),
51
- };
52
- const extraProps = isBottomSheetControl
53
- ? {
54
- options: enabledControls.map( ( { name: controlName } ) => {
55
- const control = BLOCK_ALIGNMENTS_CONTROLS[ controlName ];
56
- return {
57
- value: controlName,
58
- label: control.title,
59
- icon: control.icon,
60
- };
61
- } ),
62
- value: activeAlignmentControl ? value : 'none',
63
- onChange: ( align ) => onChangeAlignment( align ),
64
- }
65
- : {
66
- icon: activeAlignmentControl
67
- ? activeAlignmentControl.icon
68
- : defaultAlignmentControl.icon,
69
- isCollapsed: isToolbar ? isCollapsed : undefined,
70
- controls: enabledControls.map( ( { name: controlName } ) => {
71
- return {
72
- ...BLOCK_ALIGNMENTS_CONTROLS[ controlName ],
73
- isActive:
74
- value === controlName ||
75
- ( ! value && controlName === 'none' ),
76
- onClick: () => onChangeAlignment( controlName ),
77
- };
78
- } ),
79
- popoverProps: POPOVER_PROPS,
80
- toggleProps: { description: __( 'Change alignment' ) },
81
- };
82
-
83
- return <UIComponent { ...commonProps } { ...extraProps } />;
84
- }
85
-
86
- export default BlockAlignmentUI;
@@ -1,104 +0,0 @@
1
- ## Block Caption
2
-
3
- The `BlockCaption` component renders block-level UI for adding and editing captions. It wraps logic around the more generic `Caption` component to provide an editable caption field that is designed specifically for block-level use.
4
-
5
- `BlockCaption` is used in several native blocks, including `Video`, `Image`, `Audio`, etc.
6
-
7
- ## Development guidelines
8
-
9
- ### Usage
10
-
11
- Renders an editable caption field designed specifically for block-level use.
12
-
13
- ```jsx
14
- import { BlockCaption, RichText } from '@wordpress/block-editor';
15
-
16
- const MyBlockCaption = (
17
- clientId,
18
- isCaptionSelected,
19
- onFocusCaption,
20
- onBlur,
21
- insertBlocksAfter
22
- ) => (
23
- <BlockCaption
24
- clientId={ clientId }
25
- accessible={ true }
26
- accessibilityLabelCreator={ ( caption ) =>
27
- RichText.isEmpty( caption )
28
- ? /* translators: accessibility text. Empty caption. */
29
- 'Caption. Empty'
30
- : sprintf(
31
- /* translators: accessibility text. %s: caption. */
32
- __( 'Caption. %s' ),
33
- caption
34
- )
35
- }
36
- isSelected={ isCaptionSelected }
37
- onFocus={ onFocusCaption }
38
- onBlur={ onBlur }
39
- insertBlocksAfter={ insertBlocksAfter }
40
- />
41
- );
42
- ```
43
-
44
- ### Props
45
-
46
- The `clientId` prop is the only required prop.
47
-
48
- The `onBlur`, `onFocus`, `isSelected`, and `insertBlocksAfter` props are all passed directly to the `Caption` component, which then passes them to the inner `RichText` component. ([See detailed info about the RichText component's props](https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md)). These props are not strictly required, but necessary for many implementations of the component to function as expected.
49
-
50
- The `accessible` prop is `false` by default and must be set to `true` in order to set an accessibility label via the `accessibilityLabelCreator` prop.
51
-
52
- ### `clientId`
53
-
54
- - **Type:** `String`
55
- - **Required:** `Yes`
56
-
57
- The client ID of the block that the caption is associated with. This is prop is required in order for the component to perform key functionality, including retrieving the current caption from the block attributes.
58
-
59
- ### `accessible`
60
-
61
- - **Type:** `Boolean`
62
- - **Default:** `false`
63
- - **Required:** `No`
64
-
65
- Boolean to indicate whether component is an accessibility element. When set to true, the component and all of its children will be treated as a single accessible element. Refer to [the relevant React Native documentation](https://reactnative.dev/docs/accessibility#accessible) for the most up-to-date information on this prop.
66
-
67
- ### `accessibilityLabelCreator`
68
-
69
- - **Type:** `Function`
70
- - **Required:** `No`
71
-
72
- Function that returns an accessibility label, which screen readers will use for the component. The `accessible` prop must be set to `true` in order for this prop to have any effect.
73
-
74
- ### `onBlur`
75
-
76
- - **Type:** `Function`
77
- - **Required:** `No`
78
-
79
- Handler for `onBlur` events, called when the component loses focus. Although not required, it's highly recommended to pass down the component's `onBlur` function to ensure that loss of focus is always handled correctly.
80
-
81
- ### `onFocus`
82
-
83
- - **Type:** `Function`
84
- - **Required:** `No`
85
-
86
- Handler for `onFocus` events, called when the component is brought into focus. Similar to `onBlur`, it's not required but recommended. Passing down this prop helps to ensure focus is always handled as expected on the native side.
87
-
88
- ### `isSelected`
89
-
90
- - **Type:** `Boolean`
91
- - **Required:** `No`
92
-
93
- Boolean that indicates whether the caption is currently selected. This is used by the child `RichText` component to determine whether to display formatting controls.
94
-
95
- ### `insertBlocksAfter`
96
-
97
- - **Type:** `Function`
98
- - **Required:** `No`
99
-
100
- Function to handle how blocks are inserted after pressing enter at the end of the component.
101
-
102
- ## Related components
103
-
104
- `BlockCaption` passes props directly to the [`Caption`](https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/caption) component. In turn, the `Caption` component uses the [`RichText`](https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/) component. It is recommended to refer to each of those components' documentation for more information on their props and usage.