@wordpress/block-editor 12.5.0 → 12.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +2 -6
  3. package/build/autocompleters/block.js +6 -2
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-draggable/index.js +6 -3
  6. package/build/components/block-draggable/index.js.map +1 -1
  7. package/build/components/block-draggable/index.native.js +2 -2
  8. package/build/components/block-draggable/index.native.js.map +1 -1
  9. package/build/components/block-edit/edit.js +25 -13
  10. package/build/components/block-edit/edit.js.map +1 -1
  11. package/build/components/block-editing-mode/index.js +1 -1
  12. package/build/components/block-editing-mode/index.js.map +1 -1
  13. package/build/components/block-list/block-outline.native.js +14 -18
  14. package/build/components/block-list/block-outline.native.js.map +1 -1
  15. package/build/components/block-list/block.js +4 -2
  16. package/build/components/block-list/block.js.map +1 -1
  17. package/build/components/block-list/block.native.js +21 -42
  18. package/build/components/block-list/block.native.js.map +1 -1
  19. package/build/components/block-list/index.js +2 -4
  20. package/build/components/block-list/index.js.map +1 -1
  21. package/build/components/block-mover/index.native.js +1 -1
  22. package/build/components/block-mover/index.native.js.map +1 -1
  23. package/build/components/block-parent-selector/index.js +6 -21
  24. package/build/components/block-parent-selector/index.js.map +1 -1
  25. package/build/components/block-preview/auto.js +6 -1
  26. package/build/components/block-preview/auto.js.map +1 -1
  27. package/build/components/block-removal-warning-modal/index.js +1 -4
  28. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  29. package/build/components/block-settings/button.native.js +2 -2
  30. package/build/components/block-settings/button.native.js.map +1 -1
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +3 -17
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +7 -5
  34. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
  35. package/build/components/block-toolbar/index.js +4 -33
  36. package/build/components/block-toolbar/index.js.map +1 -1
  37. package/build/components/block-toolbar/index.native.js +62 -3
  38. package/build/components/block-toolbar/index.native.js.map +1 -1
  39. package/build/components/block-toolbar/utils.js +56 -51
  40. package/build/components/block-toolbar/utils.js.map +1 -1
  41. package/build/components/block-tools/block-contextual-toolbar.js +4 -2
  42. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  43. package/build/components/block-variation-picker/index.native.js +10 -20
  44. package/build/components/block-variation-picker/index.native.js.map +1 -1
  45. package/build/components/colors-gradients/control.js +4 -2
  46. package/build/components/colors-gradients/control.js.map +1 -1
  47. package/build/components/editor-styles/index.js +2 -2
  48. package/build/components/editor-styles/index.js.map +1 -1
  49. package/build/components/font-sizes/fluid-utils.js +11 -11
  50. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  51. package/build/components/global-styles/behaviors-panel.js +66 -0
  52. package/build/components/global-styles/behaviors-panel.js.map +1 -0
  53. package/build/components/global-styles/color-panel.js +21 -15
  54. package/build/components/global-styles/color-panel.js.map +1 -1
  55. package/build/components/global-styles/dimensions-panel.js +13 -2
  56. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  57. package/build/components/global-styles/get-block-css-selector.js +4 -8
  58. package/build/components/global-styles/get-block-css-selector.js.map +1 -1
  59. package/build/components/global-styles/hooks.js +131 -27
  60. package/build/components/global-styles/hooks.js.map +1 -1
  61. package/build/components/global-styles/index.js +20 -0
  62. package/build/components/global-styles/index.js.map +1 -1
  63. package/build/components/global-styles/typography-panel.js +18 -3
  64. package/build/components/global-styles/typography-panel.js.map +1 -1
  65. package/build/components/global-styles/typography-utils.js +4 -4
  66. package/build/components/global-styles/typography-utils.js.map +1 -1
  67. package/build/components/global-styles/use-global-styles-output.js +12 -18
  68. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  69. package/build/components/global-styles/utils.js +7 -7
  70. package/build/components/global-styles/utils.js.map +1 -1
  71. package/build/components/iframe/index.js +36 -48
  72. package/build/components/iframe/index.js.map +1 -1
  73. package/build/components/iframe/use-compatibility-styles.js +5 -0
  74. package/build/components/iframe/use-compatibility-styles.js.map +1 -1
  75. package/build/components/index.js +1 -10
  76. package/build/components/index.js.map +1 -1
  77. package/build/components/inner-blocks/index.js +3 -1
  78. package/build/components/inner-blocks/index.js.map +1 -1
  79. package/build/components/inner-blocks/index.native.js +3 -1
  80. package/build/components/inner-blocks/index.native.js.map +1 -1
  81. package/build/components/inner-blocks/use-nested-settings-update.js +33 -7
  82. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  83. package/build/components/inserter/hooks/use-block-types-state.js +6 -2
  84. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  85. package/build/components/inserter/hooks/use-debounced-input.js +5 -7
  86. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -1
  87. package/build/components/inserter/hooks/use-patterns-state.js +3 -2
  88. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  89. package/build/components/inserter/index.js +2 -4
  90. package/build/components/inserter/index.js.map +1 -1
  91. package/build/components/inserter/index.native.js +21 -32
  92. package/build/components/inserter/index.native.js.map +1 -1
  93. package/build/components/inserter/reusable-block-rename-hint.js +23 -3
  94. package/build/components/inserter/reusable-block-rename-hint.js.map +1 -1
  95. package/build/components/inserter/reusable-blocks-tab.js +3 -2
  96. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  97. package/build/components/inserter-list-item/index.js +1 -1
  98. package/build/components/inserter-list-item/index.js.map +1 -1
  99. package/build/components/link-control/index.js +51 -7
  100. package/build/components/link-control/index.js.map +1 -1
  101. package/build/components/link-control/link-preview.js +3 -3
  102. package/build/components/link-control/link-preview.js.map +1 -1
  103. package/build/components/link-control/search-item.js +1 -1
  104. package/build/components/link-control/search-item.js.map +1 -1
  105. package/build/components/list-view/use-list-view-client-ids.js +2 -2
  106. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  107. package/build/components/list-view/use-list-view-drop-zone.js +6 -1
  108. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  109. package/build/components/media-placeholder/index.native.js +65 -31
  110. package/build/components/media-placeholder/index.native.js.map +1 -1
  111. package/build/components/media-replace-flow/index.native.js +15 -3
  112. package/build/components/media-replace-flow/index.native.js.map +1 -1
  113. package/build/components/preview-options/index.js +2 -2
  114. package/build/components/preview-options/index.js.map +1 -1
  115. package/build/components/rich-text/content.js +0 -36
  116. package/build/components/rich-text/content.js.map +1 -1
  117. package/build/components/rich-text/format-edit.js +57 -28
  118. package/build/components/rich-text/format-edit.js.map +1 -1
  119. package/build/components/rich-text/get-rich-text-values.js +111 -0
  120. package/build/components/rich-text/get-rich-text-values.js.map +1 -0
  121. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  122. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  123. package/build/components/spacing-sizes-control/input-controls/axial.js +6 -2
  124. package/build/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  125. package/build/components/spacing-sizes-control/input-controls/separated.js +5 -1
  126. package/build/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  127. package/build/components/spacing-sizes-control/input-controls/single.js +5 -1
  128. package/build/components/spacing-sizes-control/input-controls/single.js.map +1 -1
  129. package/build/components/spacing-sizes-control/utils.js +2 -2
  130. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  131. package/build/components/use-block-display-information/index.js +7 -3
  132. package/build/components/use-block-display-information/index.js.map +1 -1
  133. package/build/components/use-block-drop-zone/index.native.js +49 -8
  134. package/build/components/use-block-drop-zone/index.native.js.map +1 -1
  135. package/build/components/use-setting/index.js +5 -9
  136. package/build/components/use-setting/index.js.map +1 -1
  137. package/build/hooks/behaviors.js +5 -12
  138. package/build/hooks/behaviors.js.map +1 -1
  139. package/build/hooks/border.js +2 -1
  140. package/build/hooks/border.js.map +1 -1
  141. package/build/hooks/margin.js +1 -1
  142. package/build/hooks/margin.js.map +1 -1
  143. package/build/hooks/padding.js +1 -1
  144. package/build/hooks/padding.js.map +1 -1
  145. package/build/hooks/style.js +11 -2
  146. package/build/hooks/style.js.map +1 -1
  147. package/build/hooks/utils.js +1 -7
  148. package/build/hooks/utils.js.map +1 -1
  149. package/build/private-apis.js +10 -3
  150. package/build/private-apis.js.map +1 -1
  151. package/build/store/actions.js +3 -4
  152. package/build/store/actions.js.map +1 -1
  153. package/build/store/private-selectors.js +5 -6
  154. package/build/store/private-selectors.js.map +1 -1
  155. package/build/store/reducer.js +0 -1
  156. package/build/store/reducer.js.map +1 -1
  157. package/build/store/selectors.js +23 -79
  158. package/build/store/selectors.js.map +1 -1
  159. package/build/utils/object.js +38 -2
  160. package/build/utils/object.js.map +1 -1
  161. package/build-module/autocompleters/block.js +7 -3
  162. package/build-module/autocompleters/block.js.map +1 -1
  163. package/build-module/components/block-draggable/index.js +6 -3
  164. package/build-module/components/block-draggable/index.js.map +1 -1
  165. package/build-module/components/block-draggable/index.native.js +2 -2
  166. package/build-module/components/block-draggable/index.native.js.map +1 -1
  167. package/build-module/components/block-edit/edit.js +27 -10
  168. package/build-module/components/block-edit/edit.js.map +1 -1
  169. package/build-module/components/block-editing-mode/index.js +1 -1
  170. package/build-module/components/block-editing-mode/index.js.map +1 -1
  171. package/build-module/components/block-list/block-outline.native.js +14 -18
  172. package/build-module/components/block-list/block-outline.native.js.map +1 -1
  173. package/build-module/components/block-list/block.js +4 -2
  174. package/build-module/components/block-list/block.js.map +1 -1
  175. package/build-module/components/block-list/block.native.js +24 -43
  176. package/build-module/components/block-list/block.native.js.map +1 -1
  177. package/build-module/components/block-list/index.js +2 -3
  178. package/build-module/components/block-list/index.js.map +1 -1
  179. package/build-module/components/block-mover/index.native.js +3 -3
  180. package/build-module/components/block-mover/index.native.js.map +1 -1
  181. package/build-module/components/block-parent-selector/index.js +7 -22
  182. package/build-module/components/block-parent-selector/index.js.map +1 -1
  183. package/build-module/components/block-preview/auto.js +6 -1
  184. package/build-module/components/block-preview/auto.js.map +1 -1
  185. package/build-module/components/block-removal-warning-modal/index.js +1 -4
  186. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  187. package/build-module/components/block-settings/button.native.js +3 -3
  188. package/build-module/components/block-settings/button.native.js.map +1 -1
  189. package/build-module/components/block-settings-menu/block-settings-dropdown.js +4 -18
  190. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  191. package/build-module/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +9 -7
  192. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
  193. package/build-module/components/block-toolbar/index.js +6 -35
  194. package/build-module/components/block-toolbar/index.js.map +1 -1
  195. package/build-module/components/block-toolbar/index.native.js +60 -4
  196. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  197. package/build-module/components/block-toolbar/utils.js +54 -49
  198. package/build-module/components/block-toolbar/utils.js.map +1 -1
  199. package/build-module/components/block-tools/block-contextual-toolbar.js +4 -2
  200. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  201. package/build-module/components/block-variation-picker/index.native.js +13 -23
  202. package/build-module/components/block-variation-picker/index.native.js.map +1 -1
  203. package/build-module/components/colors-gradients/control.js +3 -2
  204. package/build-module/components/colors-gradients/control.js.map +1 -1
  205. package/build-module/components/editor-styles/index.js +2 -2
  206. package/build-module/components/editor-styles/index.js.map +1 -1
  207. package/build-module/components/font-sizes/fluid-utils.js +11 -11
  208. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  209. package/build-module/components/global-styles/behaviors-panel.js +57 -0
  210. package/build-module/components/global-styles/behaviors-panel.js.map +1 -0
  211. package/build-module/components/global-styles/color-panel.js +21 -15
  212. package/build-module/components/global-styles/color-panel.js.map +1 -1
  213. package/build-module/components/global-styles/dimensions-panel.js +13 -2
  214. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  215. package/build-module/components/global-styles/get-block-css-selector.js +4 -8
  216. package/build-module/components/global-styles/get-block-css-selector.js.map +1 -1
  217. package/build-module/components/global-styles/hooks.js +127 -27
  218. package/build-module/components/global-styles/hooks.js.map +1 -1
  219. package/build-module/components/global-styles/index.js +2 -1
  220. package/build-module/components/global-styles/index.js.map +1 -1
  221. package/build-module/components/global-styles/typography-panel.js +18 -3
  222. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  223. package/build-module/components/global-styles/typography-utils.js +4 -4
  224. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  225. package/build-module/components/global-styles/use-global-styles-output.js +13 -18
  226. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  227. package/build-module/components/global-styles/utils.js +6 -6
  228. package/build-module/components/global-styles/utils.js.map +1 -1
  229. package/build-module/components/iframe/index.js +37 -49
  230. package/build-module/components/iframe/index.js.map +1 -1
  231. package/build-module/components/iframe/use-compatibility-styles.js +5 -0
  232. package/build-module/components/iframe/use-compatibility-styles.js.map +1 -1
  233. package/build-module/components/index.js +0 -5
  234. package/build-module/components/index.js.map +1 -1
  235. package/build-module/components/inner-blocks/index.js +3 -1
  236. package/build-module/components/inner-blocks/index.js.map +1 -1
  237. package/build-module/components/inner-blocks/index.native.js +3 -1
  238. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  239. package/build-module/components/inner-blocks/use-nested-settings-update.js +30 -7
  240. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  241. package/build-module/components/inserter/hooks/use-block-types-state.js +7 -3
  242. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  243. package/build-module/components/inserter/hooks/use-debounced-input.js +5 -7
  244. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -1
  245. package/build-module/components/inserter/hooks/use-patterns-state.js +3 -2
  246. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  247. package/build-module/components/inserter/index.js +2 -4
  248. package/build-module/components/inserter/index.js.map +1 -1
  249. package/build-module/components/inserter/index.native.js +22 -33
  250. package/build-module/components/inserter/index.native.js.map +1 -1
  251. package/build-module/components/inserter/reusable-block-rename-hint.js +22 -3
  252. package/build-module/components/inserter/reusable-block-rename-hint.js.map +1 -1
  253. package/build-module/components/inserter/reusable-blocks-tab.js +3 -2
  254. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  255. package/build-module/components/inserter-list-item/index.js +1 -1
  256. package/build-module/components/inserter-list-item/index.js.map +1 -1
  257. package/build-module/components/link-control/index.js +49 -7
  258. package/build-module/components/link-control/index.js.map +1 -1
  259. package/build-module/components/link-control/link-preview.js +3 -3
  260. package/build-module/components/link-control/link-preview.js.map +1 -1
  261. package/build-module/components/link-control/search-item.js +1 -1
  262. package/build-module/components/link-control/search-item.js.map +1 -1
  263. package/build-module/components/list-view/use-list-view-client-ids.js +2 -2
  264. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  265. package/build-module/components/list-view/use-list-view-drop-zone.js +6 -1
  266. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  267. package/build-module/components/media-placeholder/index.native.js +66 -33
  268. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  269. package/build-module/components/media-replace-flow/index.native.js +15 -3
  270. package/build-module/components/media-replace-flow/index.native.js.map +1 -1
  271. package/build-module/components/preview-options/index.js +2 -2
  272. package/build-module/components/preview-options/index.js.map +1 -1
  273. package/build-module/components/rich-text/content.js +1 -36
  274. package/build-module/components/rich-text/content.js.map +1 -1
  275. package/build-module/components/rich-text/format-edit.js +51 -26
  276. package/build-module/components/rich-text/format-edit.js.map +1 -1
  277. package/build-module/components/rich-text/get-rich-text-values.js +100 -0
  278. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -0
  279. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  280. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
  281. package/build-module/components/spacing-sizes-control/input-controls/axial.js +7 -3
  282. package/build-module/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  283. package/build-module/components/spacing-sizes-control/input-controls/separated.js +6 -2
  284. package/build-module/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  285. package/build-module/components/spacing-sizes-control/input-controls/single.js +6 -2
  286. package/build-module/components/spacing-sizes-control/input-controls/single.js.map +1 -1
  287. package/build-module/components/spacing-sizes-control/utils.js +2 -2
  288. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  289. package/build-module/components/use-block-display-information/index.js +7 -3
  290. package/build-module/components/use-block-display-information/index.js.map +1 -1
  291. package/build-module/components/use-block-drop-zone/index.native.js +50 -8
  292. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
  293. package/build-module/components/use-setting/index.js +5 -9
  294. package/build-module/components/use-setting/index.js.map +1 -1
  295. package/build-module/hooks/behaviors.js +5 -12
  296. package/build-module/hooks/behaviors.js.map +1 -1
  297. package/build-module/hooks/border.js +2 -1
  298. package/build-module/hooks/border.js.map +1 -1
  299. package/build-module/hooks/margin.js +1 -1
  300. package/build-module/hooks/margin.js.map +1 -1
  301. package/build-module/hooks/padding.js +1 -1
  302. package/build-module/hooks/padding.js.map +1 -1
  303. package/build-module/hooks/style.js +11 -2
  304. package/build-module/hooks/style.js.map +1 -1
  305. package/build-module/hooks/utils.js +2 -7
  306. package/build-module/hooks/utils.js.map +1 -1
  307. package/build-module/private-apis.js +7 -2
  308. package/build-module/private-apis.js.map +1 -1
  309. package/build-module/store/actions.js +4 -5
  310. package/build-module/store/actions.js.map +1 -1
  311. package/build-module/store/private-selectors.js +3 -3
  312. package/build-module/store/private-selectors.js.map +1 -1
  313. package/build-module/store/reducer.js +0 -1
  314. package/build-module/store/reducer.js.map +1 -1
  315. package/build-module/store/selectors.js +20 -75
  316. package/build-module/store/selectors.js.map +1 -1
  317. package/build-module/utils/object.js +34 -2
  318. package/build-module/utils/object.js.map +1 -1
  319. package/build-style/content-rtl.css +2 -1
  320. package/build-style/content.css +2 -1
  321. package/build-style/style-rtl.css +25 -6
  322. package/build-style/style.css +25 -6
  323. package/package.json +32 -32
  324. package/src/autocompleters/block.js +21 -6
  325. package/src/components/block-controls/README.md +89 -0
  326. package/src/components/block-draggable/index.js +13 -4
  327. package/src/components/block-draggable/index.native.js +7 -3
  328. package/src/components/block-draggable/test/index.native.js +2 -57
  329. package/src/components/block-edit/edit.js +26 -9
  330. package/src/components/block-edit/test/edit.js +1 -1
  331. package/src/components/block-editing-mode/index.js +1 -1
  332. package/src/components/block-list/block-outline.native.js +26 -25
  333. package/src/components/block-list/block.js +6 -1
  334. package/src/components/block-list/block.native.js +24 -38
  335. package/src/components/block-list/block.native.scss +18 -40
  336. package/src/components/block-list/index.js +3 -6
  337. package/src/components/block-list/style.native.scss +3 -3
  338. package/src/components/block-list/test/block-invalid-warning.native.js +8 -1
  339. package/src/components/block-mover/index.native.js +3 -3
  340. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +40 -6
  341. package/src/components/block-parent-selector/index.js +30 -42
  342. package/src/components/block-preview/auto.js +8 -1
  343. package/src/components/block-preview/style.scss +2 -1
  344. package/src/components/block-removal-warning-modal/index.js +0 -3
  345. package/src/components/block-settings/button.native.js +12 -6
  346. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -13
  347. package/src/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +15 -10
  348. package/src/components/block-toolbar/index.js +36 -64
  349. package/src/components/block-toolbar/index.native.js +86 -6
  350. package/src/components/{block-mobile-toolbar/test/block-actions-menu.native.js → block-toolbar/test/block-toolbar-menu.native.js} +20 -54
  351. package/src/components/block-toolbar/test/index.native.js +42 -0
  352. package/src/components/block-toolbar/utils.js +57 -45
  353. package/src/components/block-tools/block-contextual-toolbar.js +43 -35
  354. package/src/components/block-tools/style.scss +17 -5
  355. package/src/components/block-variation-picker/index.native.js +52 -72
  356. package/src/components/button-block-appender/styles.native.scss +2 -2
  357. package/src/components/caption/README.md +49 -0
  358. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  359. package/src/components/colors-gradients/control.js +3 -2
  360. package/src/components/editor-styles/index.js +2 -2
  361. package/src/components/font-sizes/fluid-utils.js +17 -17
  362. package/src/components/font-sizes/test/fluid-utils.js +6 -6
  363. package/src/components/global-styles/behaviors-panel.js +71 -0
  364. package/src/components/global-styles/color-panel.js +23 -16
  365. package/src/components/global-styles/dimensions-panel.js +8 -2
  366. package/src/components/global-styles/get-block-css-selector.js +5 -9
  367. package/src/components/global-styles/hooks.js +134 -31
  368. package/src/components/global-styles/index.js +3 -0
  369. package/src/components/global-styles/test/typography-utils.js +6 -6
  370. package/src/components/global-styles/typography-panel.js +17 -5
  371. package/src/components/global-styles/typography-utils.js +4 -4
  372. package/src/components/global-styles/use-global-styles-output.js +36 -18
  373. package/src/components/global-styles/utils.js +17 -7
  374. package/src/components/iframe/index.js +30 -56
  375. package/src/components/iframe/use-compatibility-styles.js +5 -0
  376. package/src/components/index.js +0 -5
  377. package/src/components/inner-blocks/README.md +10 -0
  378. package/src/components/inner-blocks/index.js +4 -0
  379. package/src/components/inner-blocks/index.native.js +4 -0
  380. package/src/components/inner-blocks/use-nested-settings-update.js +32 -5
  381. package/src/components/inserter/hooks/use-block-types-state.js +15 -6
  382. package/src/components/inserter/hooks/use-debounced-input.js +8 -7
  383. package/src/components/inserter/hooks/use-patterns-state.js +2 -1
  384. package/src/components/inserter/index.js +2 -3
  385. package/src/components/inserter/index.native.js +17 -36
  386. package/src/components/inserter/reusable-block-rename-hint.js +18 -1
  387. package/src/components/inserter/reusable-blocks-tab.js +4 -1
  388. package/src/components/inserter/style.native.scss +10 -15
  389. package/src/components/inserter-list-item/index.js +3 -1
  390. package/src/components/link-control/README.md +12 -3
  391. package/src/components/link-control/index.js +47 -7
  392. package/src/components/link-control/link-preview.js +6 -4
  393. package/src/components/link-control/search-item.js +1 -1
  394. package/src/components/link-control/style.scss +11 -3
  395. package/src/components/link-control/test/index.js +28 -1
  396. package/src/components/list-view/use-list-view-client-ids.js +2 -2
  397. package/src/components/list-view/use-list-view-drop-zone.js +5 -1
  398. package/src/components/media-placeholder/index.native.js +108 -59
  399. package/src/components/media-placeholder/styles.native.scss +59 -24
  400. package/src/components/media-replace-flow/index.native.js +12 -3
  401. package/src/components/media-upload/test/index.native.js +1 -0
  402. package/src/components/preview-options/README.md +18 -17
  403. package/src/components/preview-options/index.js +2 -2
  404. package/src/components/rich-text/content.js +1 -46
  405. package/src/components/rich-text/format-edit.js +62 -38
  406. package/src/components/rich-text/get-rich-text-values.js +99 -0
  407. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  408. package/src/components/spacing-sizes-control/input-controls/axial.js +17 -2
  409. package/src/components/spacing-sizes-control/input-controls/separated.js +17 -2
  410. package/src/components/spacing-sizes-control/input-controls/single.js +12 -2
  411. package/src/components/spacing-sizes-control/test/utils.js +9 -1
  412. package/src/components/spacing-sizes-control/utils.js +2 -2
  413. package/src/components/text-transform-control/README.md +44 -0
  414. package/src/components/use-block-display-information/index.js +12 -5
  415. package/src/components/use-block-drop-zone/index.native.js +65 -28
  416. package/src/components/use-setting/index.js +8 -8
  417. package/src/hooks/behaviors.js +10 -16
  418. package/src/hooks/border.js +2 -1
  419. package/src/hooks/margin.js +4 -1
  420. package/src/hooks/padding.js +4 -1
  421. package/src/hooks/style.js +7 -3
  422. package/src/hooks/utils.js +5 -7
  423. package/src/private-apis.js +9 -1
  424. package/src/store/actions.js +23 -30
  425. package/src/store/private-selectors.js +3 -6
  426. package/src/store/reducer.js +0 -1
  427. package/src/store/selectors.js +36 -85
  428. package/src/store/test/actions.js +3 -0
  429. package/src/store/test/private-selectors.js +5 -5
  430. package/src/store/test/reducer.js +14 -7
  431. package/src/store/test/selectors.js +8 -7
  432. package/src/utils/object.js +32 -2
  433. package/src/utils/test/object.js +36 -0
  434. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
  435. package/build/components/block-mobile-toolbar/index.native.js +0 -135
  436. package/build/components/block-mobile-toolbar/index.native.js.map +0 -1
  437. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
  438. package/build-module/components/block-mobile-toolbar/index.native.js +0 -116
  439. package/build-module/components/block-mobile-toolbar/index.native.js.map +0 -1
  440. package/src/components/block-mobile-toolbar/index.native.js +0 -127
  441. package/src/components/block-mobile-toolbar/style.native.scss +0 -16
  442. /package/src/components/{block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap → block-toolbar/test/__snapshots__/block-toolbar-menu.native.js.snap} +0 -0
@@ -7,6 +7,7 @@ import {
7
7
  setFreeformContentHandlerName,
8
8
  } from '@wordpress/blocks';
9
9
  import { RawHTML } from '@wordpress/element';
10
+ import { symbol } from '@wordpress/icons';
10
11
 
11
12
  /**
12
13
  * Internal dependencies
@@ -121,7 +122,7 @@ describe( 'selectors', () => {
121
122
  parent: [ 'core/test-block-b' ],
122
123
  } );
123
124
 
124
- registerBlockType( 'core/test-freeform', {
125
+ registerBlockType( 'core/freeform', {
125
126
  save: ( props ) => <RawHTML>{ props.attributes.content }</RawHTML>,
126
127
  category: 'text',
127
128
  title: 'Test Freeform Content Handler',
@@ -177,7 +178,7 @@ describe( 'selectors', () => {
177
178
  ancestor: [ 'core/test-block-ancestor' ],
178
179
  } );
179
180
 
180
- setFreeformContentHandlerName( 'core/test-freeform' );
181
+ setFreeformContentHandlerName( 'core/freeform' );
181
182
 
182
183
  cachedSelectors.forEach( ( { clear } ) => clear() );
183
184
  } );
@@ -187,7 +188,7 @@ describe( 'selectors', () => {
187
188
  unregisterBlockType( 'core/test-block-a' );
188
189
  unregisterBlockType( 'core/test-block-b' );
189
190
  unregisterBlockType( 'core/test-block-c' );
190
- unregisterBlockType( 'core/test-freeform' );
191
+ unregisterBlockType( 'core/freeform' );
191
192
  unregisterBlockType( 'core/post-content-child' );
192
193
  unregisterBlockType( 'core/test-block-ancestor' );
193
194
  unregisterBlockType( 'core/test-block-parent' );
@@ -3347,11 +3348,11 @@ describe( 'selectors', () => {
3347
3348
  category: 'reusable',
3348
3349
  content: '<!-- /wp:test-block-a -->',
3349
3350
  frecency: 0,
3350
- icon: { src: 'test' },
3351
+ icon: symbol,
3351
3352
  id: 'core/block/1',
3352
3353
  initialAttributes: { ref: 1 },
3353
3354
  isDisabled: false,
3354
- keywords: [],
3355
+ keywords: [ 'reusable' ],
3355
3356
  name: 'core/block',
3356
3357
  syncStatus: undefined,
3357
3358
  title: 'Reusable Block 1',
@@ -3450,7 +3451,7 @@ describe( 'selectors', () => {
3450
3451
  expect( firstBlockFirstCall.map( ( item ) => item.id ) ).toEqual( [
3451
3452
  'core/test-block-a',
3452
3453
  'core/test-block-b',
3453
- 'core/test-freeform',
3454
+ 'core/freeform',
3454
3455
  'core/test-block-ancestor',
3455
3456
  'core/test-block-parent',
3456
3457
  'core/block/1',
@@ -3466,7 +3467,7 @@ describe( 'selectors', () => {
3466
3467
  expect( secondBlockFirstCall.map( ( item ) => item.id ) ).toEqual( [
3467
3468
  'core/test-block-a',
3468
3469
  'core/test-block-b',
3469
- 'core/test-freeform',
3470
+ 'core/freeform',
3470
3471
  'core/test-block-ancestor',
3471
3472
  'core/test-block-parent',
3472
3473
  'core/block/1',
@@ -56,12 +56,17 @@ export function kebabCase( str ) {
56
56
 
57
57
  /**
58
58
  * Clones an object.
59
+ * Arrays are also cloned as arrays.
59
60
  * Non-object values are returned unchanged.
60
61
  *
61
62
  * @param {*} object Object to clone.
62
63
  * @return {*} Cloned object, or original literal non-object value.
63
64
  */
64
65
  function cloneObject( object ) {
66
+ if ( Array.isArray( object ) ) {
67
+ return object.map( cloneObject );
68
+ }
69
+
65
70
  if ( object && typeof object === 'object' ) {
66
71
  return {
67
72
  ...Object.fromEntries(
@@ -79,7 +84,7 @@ function cloneObject( object ) {
79
84
  /**
80
85
  * Immutably sets a value inside an object. Like `lodash#set`, but returning a
81
86
  * new object. Treats nullish initial values as empty objects. Clones any
82
- * nested objects.
87
+ * nested objects. Supports arrays, too.
83
88
  *
84
89
  * @param {Object} object Object to set a value in.
85
90
  * @param {number|string|Array} path Path in the object to modify.
@@ -92,7 +97,11 @@ export function setImmutably( object, path, value ) {
92
97
 
93
98
  normalizedPath.reduce( ( acc, key, i ) => {
94
99
  if ( acc[ key ] === undefined ) {
95
- acc[ key ] = {};
100
+ if ( Number.isInteger( path[ i + 1 ] ) ) {
101
+ acc[ key ] = [];
102
+ } else {
103
+ acc[ key ] = {};
104
+ }
96
105
  }
97
106
  if ( i === normalizedPath.length - 1 ) {
98
107
  acc[ key ] = value;
@@ -102,3 +111,24 @@ export function setImmutably( object, path, value ) {
102
111
 
103
112
  return newObject;
104
113
  }
114
+
115
+ /**
116
+ * Helper util to return a value from a certain path of the object.
117
+ * Path is specified as either:
118
+ * - a string of properties, separated by dots, for example: "x.y".
119
+ * - an array of properties, for example `[ 'x', 'y' ]`.
120
+ * You can also specify a default value in case the result is nullish.
121
+ *
122
+ * @param {Object} object Input object.
123
+ * @param {string|Array} path Path to the object property.
124
+ * @param {*} defaultValue Default value if the value at the specified path is nullish.
125
+ * @return {*} Value of the object property at the specified path.
126
+ */
127
+ export const getValueFromObjectPath = ( object, path, defaultValue ) => {
128
+ const normalizedPath = Array.isArray( path ) ? path : path.split( '.' );
129
+ let value = object;
130
+ normalizedPath.forEach( ( fieldName ) => {
131
+ value = value?.[ fieldName ];
132
+ } );
133
+ return value ?? defaultValue;
134
+ };
@@ -150,6 +150,22 @@ describe( 'setImmutably', () => {
150
150
  expect( result ).toEqual( { test: 2 } );
151
151
  } );
152
152
 
153
+ it( 'handles first level arrays properly', () => {
154
+ const result = setImmutably( [ 5 ], 0, 6 );
155
+
156
+ expect( result ).toEqual( [ 6 ] );
157
+ } );
158
+
159
+ it( 'handles nested arrays properly', () => {
160
+ const result = setImmutably(
161
+ [ [ 'foo', [ 'bar' ] ] ],
162
+ [ 0, 1, 0 ],
163
+ 'baz'
164
+ );
165
+
166
+ expect( result ).toEqual( [ [ 'foo', [ 'baz' ] ] ] );
167
+ } );
168
+
153
169
  describe( 'with array notation access', () => {
154
170
  it( 'assigns values at deeper levels', () => {
155
171
  const result = setImmutably( {}, [ 'foo', 'bar', 'baz' ], 5 );
@@ -236,5 +252,25 @@ describe( 'setImmutably', () => {
236
252
  expect( result.foo.bar ).not.toBe( input.foo.bar );
237
253
  expect( result.foo.bar.baz ).not.toBe( input.foo.bar.baz );
238
254
  } );
255
+
256
+ it( 'clones arrays at the first level', () => {
257
+ const input = [];
258
+ const result = setImmutably( input, 0, 1 );
259
+
260
+ expect( result ).not.toBe( input );
261
+ } );
262
+
263
+ it( 'clones arrays at deeper levels', () => {
264
+ const input = [ [ [ [ 'foo', [ 'bar' ] ] ] ] ];
265
+ const result = setImmutably( input, [ 0, 0, 0, 1, 0 ], 'baz' );
266
+
267
+ expect( result ).not.toBe( input );
268
+ expect( result[ 0 ] ).not.toBe( input[ 0 ] );
269
+ expect( result[ 0 ][ 0 ] ).not.toBe( input[ 0 ][ 0 ] );
270
+ expect( result[ 0 ][ 0 ][ 0 ] ).not.toBe( input[ 0 ][ 0 ][ 0 ] );
271
+ expect( result[ 0 ][ 0 ][ 0 ][ 1 ] ).not.toBe(
272
+ input[ 0 ][ 0 ][ 0 ][ 1 ]
273
+ );
274
+ } );
239
275
  } );
240
276
  } );
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-mobile-toolbar/block-actions-menu.native.js"],"names":["BlockActionsMenu","blockTitle","canInsertBlockType","getBlocksByClientId","isEmptyDefaultBlock","isLocked","canDuplicate","isFirst","isLast","isReusableBlockType","reusableBlock","rootClientId","selectedBlockClientId","selectedBlockPossibleTransformations","canRemove","createSuccessNotice","convertToRegularBlocks","duplicateBlock","onMoveDown","onMoveUp","openGeneralSidebar","pasteBlock","removeBlocks","anchorNodeRef","isStackedHorizontally","onDelete","wrapBlockMover","wrapBlockSettings","clipboard","setCurrentClipboard","blockActionsMenuPickerRef","blockTransformationMenuPickerRef","moversOptions","keys","clipboardBlock","HTML","isPasteEnabled","name","innerBlockCount","select","blockEditorStore","getBlockCount","actionTitle","backward","backwardButtonTitle","forward","forwardButtonTitle","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","convertToGroupButtons","allOptions","settings","id","label","value","onSelect","backwardButton","disabled","forwardButton","delete","separated","transformButton","current","presentPicker","copyButton","serializedBlock","cutButton","pasteButton","onPasteBlock","duplicateButton","successNotice","title","raw","options","length","group","ungroup","filter","Boolean","moreHorizontalMobile","onPickerSelect","selectedItem","find","item","onPickerPresent","disabledButtonIndices","map","option","index","accessibilityHint","Platform","OS","getAnchor","undefined","hint","EMPTY_BLOCK_LIST","clientId","getBlockIndex","getBlockRootClientId","getBlockOrder","getBlockName","getBlockTransformItems","getBlock","getSelectedBlockClientIds","getTemplateLock","canRemoveBlock","block","blockName","blockType","blockOrder","currentBlockIndex","innerBlocks","every","innerBlock","isDefaultBlock","isEmptyContent","attributes","content","isExactlyOneBlock","selectedBlock","coreStore","getEntityRecord","ref","currentIndex","dispatch","moveBlocksDown","moveBlocksUp","duplicateBlocks","insertBlock","replaceBlock","clearSelectedBlock","getBlockSelectionEnd","noticesStore","__experimentalConvertBlockToStatic","convertBlockToStatic","reusableBlocksStore","setImmediate","args","canReplaceBlock","insertedBlock","withInstanceId"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform, findNodeHandle } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetClipboard,\n\tsetClipboard,\n\tToolbarButton,\n\tPicker,\n} from '@wordpress/components';\nimport {\n\tgetBlockType,\n\tgetDefaultBlockName,\n\thasBlockSupport,\n\tserialize,\n\trawHandler,\n\tcreateBlock,\n\tisUnmodifiedDefaultBlock,\n\tisReusableBlock,\n} from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withDispatch, withSelect, useSelect } from '@wordpress/data';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { moreHorizontalMobile } from '@wordpress/icons';\nimport { useRef, useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\n// Disable Reason: Needs to be refactored.\n// eslint-disable-next-line no-restricted-imports\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getMoversSetup } from '../block-mover/mover-description';\nimport { store as blockEditorStore } from '../../store';\nimport BlockTransformationsMenu from '../block-switcher/block-transformations-menu';\nimport {\n\tuseConvertToGroupButtons,\n\tuseConvertToGroupButtonProps,\n} from '../convert-to-group-buttons';\n\nconst BlockActionsMenu = ( {\n\t// Select.\n\tblockTitle,\n\tcanInsertBlockType,\n\tgetBlocksByClientId,\n\tisEmptyDefaultBlock,\n\tisLocked,\n\tcanDuplicate,\n\tisFirst,\n\tisLast,\n\tisReusableBlockType,\n\treusableBlock,\n\trootClientId,\n\tselectedBlockClientId,\n\tselectedBlockPossibleTransformations,\n\tcanRemove,\n\t// Dispatch.\n\tcreateSuccessNotice,\n\tconvertToRegularBlocks,\n\tduplicateBlock,\n\tonMoveDown,\n\tonMoveUp,\n\topenGeneralSidebar,\n\tpasteBlock,\n\tremoveBlocks,\n\t// Passed in.\n\tanchorNodeRef,\n\tisStackedHorizontally,\n\tonDelete,\n\twrapBlockMover,\n\twrapBlockSettings,\n} ) => {\n\tconst [ clipboard, setCurrentClipboard ] = useState( getClipboard() );\n\tconst blockActionsMenuPickerRef = useRef();\n\tconst blockTransformationMenuPickerRef = useRef();\n\tconst moversOptions = { keys: [ 'icon', 'actionTitle' ] };\n\tconst clipboardBlock = clipboard && rawHandler( { HTML: clipboard } )[ 0 ];\n\tconst isPasteEnabled =\n\t\tclipboardBlock &&\n\t\tcanInsertBlockType( clipboardBlock.name, rootClientId );\n\n\tconst innerBlockCount = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlockCount( selectedBlockClientId ),\n\t\t[ selectedBlockClientId ]\n\t);\n\n\tconst {\n\t\tactionTitle: {\n\t\t\tbackward: backwardButtonTitle,\n\t\t\tforward: forwardButtonTitle,\n\t\t},\n\t} = getMoversSetup( isStackedHorizontally, moversOptions );\n\n\t// Check if selected block is Groupable and/or Ungroupable.\n\tconst convertToGroupButtonProps = useConvertToGroupButtonProps( [\n\t\tselectedBlockClientId,\n\t] );\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton =\n\t\t( isGroupable || isUngroupable ) && canRemove;\n\tconst convertToGroupButtons = useConvertToGroupButtons( {\n\t\t...convertToGroupButtonProps,\n\t} );\n\n\tconst allOptions = {\n\t\tsettings: {\n\t\t\tid: 'settingsOption',\n\t\t\tlabel: __( 'Block settings' ),\n\t\t\tvalue: 'settingsOption',\n\t\t\tonSelect: openGeneralSidebar,\n\t\t},\n\t\tbackwardButton: {\n\t\t\tid: 'backwardButtonOption',\n\t\t\tlabel: backwardButtonTitle,\n\t\t\tvalue: 'backwardButtonOption',\n\t\t\tdisabled: isFirst,\n\t\t\tonSelect: onMoveUp,\n\t\t},\n\t\tforwardButton: {\n\t\t\tid: 'forwardButtonOption',\n\t\t\tlabel: forwardButtonTitle,\n\t\t\tvalue: 'forwardButtonOption',\n\t\t\tdisabled: isLast,\n\t\t\tonSelect: onMoveDown,\n\t\t},\n\t\tdelete: {\n\t\t\tid: 'deleteOption',\n\t\t\tlabel: __( 'Remove block' ),\n\t\t\tvalue: 'deleteOption',\n\t\t\tseparated: true,\n\t\t\tdisabled: isEmptyDefaultBlock,\n\t\t\tonSelect: () => {\n\t\t\t\tonDelete();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is removed.\n\t\t\t\t\t__( 'Block removed' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\ttransformButton: {\n\t\t\tid: 'transformButtonOption',\n\t\t\tlabel: __( 'Transform block…' ),\n\t\t\tvalue: 'transformButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tif ( blockTransformationMenuPickerRef.current ) {\n\t\t\t\t\tblockTransformationMenuPickerRef.current.presentPicker();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tcopyButton: {\n\t\t\tid: 'copyButtonOption',\n\t\t\tlabel: __( 'Copy' ),\n\t\t\tvalue: 'copyButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tconst serializedBlock = serialize(\n\t\t\t\t\tgetBlocksByClientId( selectedBlockClientId )\n\t\t\t\t);\n\t\t\t\tsetCurrentClipboard( serializedBlock );\n\t\t\t\tsetClipboard( serializedBlock );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is copied.\n\t\t\t\t\t__( 'Block copied' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tcutButton: {\n\t\t\tid: 'cutButtonOption',\n\t\t\tlabel: __( 'Cut block' ),\n\t\t\tvalue: 'cutButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tsetClipboard(\n\t\t\t\t\tserialize( getBlocksByClientId( selectedBlockClientId ) )\n\t\t\t\t);\n\t\t\t\tremoveBlocks( selectedBlockClientId );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is cut.\n\t\t\t\t\t__( 'Block cut' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tpasteButton: {\n\t\t\tid: 'pasteButtonOption',\n\t\t\tlabel: __( 'Paste block after' ),\n\t\t\tvalue: 'pasteButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tonPasteBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is pasted.\n\t\t\t\t\t__( 'Block pasted' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tduplicateButton: {\n\t\t\tid: 'duplicateButtonOption',\n\t\t\tlabel: __( 'Duplicate block' ),\n\t\t\tvalue: 'duplicateButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tduplicateBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is duplicated.\n\t\t\t\t\t__( 'Block duplicated' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tconvertToRegularBlocks: {\n\t\t\tid: 'convertToRegularBlocksOption',\n\t\t\tlabel:\n\t\t\t\tinnerBlockCount > 1\n\t\t\t\t\t? __( 'Detach patterns' )\n\t\t\t\t\t: __( 'Detach pattern' ),\n\t\t\tvalue: 'convertToRegularBlocksOption',\n\t\t\tonSelect: () => {\n\t\t\t\t/* translators: %s: name of the synced block */\n\t\t\t\tconst successNotice = __( '%s detached' );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\tsuccessNotice,\n\t\t\t\t\t\treusableBlock?.title?.raw || blockTitle\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconvertToRegularBlocks();\n\t\t\t},\n\t\t},\n\t};\n\n\tconst options = [\n\t\twrapBlockMover && allOptions.backwardButton,\n\t\twrapBlockMover && allOptions.forwardButton,\n\t\twrapBlockSettings && allOptions.settings,\n\t\t! isLocked &&\n\t\t\tselectedBlockPossibleTransformations.length &&\n\t\t\tallOptions.transformButton,\n\t\tcanDuplicate && allOptions.copyButton,\n\t\tcanDuplicate && allOptions.cutButton,\n\t\tcanDuplicate && isPasteEnabled && allOptions.pasteButton,\n\t\tcanDuplicate && allOptions.duplicateButton,\n\t\tshowConvertToGroupButton && isGroupable && convertToGroupButtons.group,\n\t\tshowConvertToGroupButton &&\n\t\t\tisUngroupable &&\n\t\t\tconvertToGroupButtons.ungroup,\n\t\tisReusableBlockType &&\n\t\t\tinnerBlockCount > 0 &&\n\t\t\tallOptions.convertToRegularBlocks,\n\t\t! isLocked && allOptions.delete,\n\t].filter( Boolean );\n\n\t// End early if there are no options to show.\n\tif ( ! options.length ) {\n\t\treturn (\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\tdisabled={ true }\n\t\t\t/>\n\t\t);\n\t}\n\n\tfunction onPasteBlock() {\n\t\tif ( ! clipboard ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpasteBlock( rawHandler( { HTML: clipboard } )[ 0 ] );\n\t}\n\n\tfunction onPickerSelect( value ) {\n\t\tconst selectedItem = options.find( ( item ) => item.value === value );\n\t\tselectedItem.onSelect();\n\t}\n\n\tfunction onPickerPresent() {\n\t\tif ( blockActionsMenuPickerRef.current ) {\n\t\t\tblockActionsMenuPickerRef.current.presentPicker();\n\t\t}\n\t}\n\n\tconst disabledButtonIndices = options\n\t\t.map( ( option, index ) => option.disabled && index + 1 )\n\t\t.filter( Boolean );\n\n\tconst accessibilityHint =\n\t\tPlatform.OS === 'ios'\n\t\t\t? __( 'Double tap to open Action Sheet with available options' )\n\t\t\t: __( 'Double tap to open Bottom Sheet with available options' );\n\n\tconst getAnchor = () =>\n\t\tanchorNodeRef ? findNodeHandle( anchorNodeRef ) : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\tonClick={ onPickerPresent }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\textraProps={ {\n\t\t\t\t\thint: accessibilityHint,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<Picker\n\t\t\t\ttestID=\"block-actions-menu\"\n\t\t\t\tref={ blockActionsMenuPickerRef }\n\t\t\t\toptions={ options }\n\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\tdestructiveButtonIndex={ options.length }\n\t\t\t\tdisabledButtonIndices={ disabledButtonIndices }\n\t\t\t\thideCancelButton={ Platform.OS !== 'ios' }\n\t\t\t\tleftAlign={ true }\n\t\t\t\tgetAnchor={ getAnchor }\n\t\t\t\t// translators: %s: block title e.g: \"Paragraph\".\n\t\t\t\ttitle={ sprintf( __( '%s block options' ), blockTitle ) }\n\t\t\t/>\n\t\t\t<BlockTransformationsMenu\n\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tpickerRef={ blockTransformationMenuPickerRef }\n\t\t\t\tpossibleTransformations={ selectedBlockPossibleTransformations }\n\t\t\t\tselectedBlock={ getBlocksByClientId( selectedBlockClientId ) }\n\t\t\t\tselectedBlockClientId={ selectedBlockClientId }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nconst EMPTY_BLOCK_LIST = [];\n\nexport default compose(\n\twithSelect( ( select, { clientId } ) => {\n\t\tconst {\n\t\t\tgetBlockIndex,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockName,\n\t\t\tgetBlockTransformItems,\n\t\t\tgetBlock,\n\t\t\tgetBlocksByClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tcanInsertBlockType,\n\t\t\tgetTemplateLock,\n\t\t\tcanRemoveBlock,\n\t\t} = select( blockEditorStore );\n\t\tconst block = getBlock( clientId );\n\t\tconst blockName = getBlockName( clientId );\n\t\tconst blockType = getBlockType( blockName );\n\t\tconst blockTitle = blockType?.title;\n\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\tconst blockOrder = getBlockOrder( rootClientId );\n\n\t\tconst currentBlockIndex = getBlockIndex( clientId );\n\t\tconst isFirst = currentBlockIndex === 0;\n\t\tconst isLast = currentBlockIndex === blockOrder.length - 1;\n\n\t\tconst innerBlocks = getBlocksByClientId( clientId );\n\n\t\tconst canDuplicate = innerBlocks.every( ( innerBlock ) => {\n\t\t\treturn (\n\t\t\t\t!! innerBlock &&\n\t\t\t\thasBlockSupport( innerBlock.name, 'multiple', true ) &&\n\t\t\t\tcanInsertBlockType( innerBlock.name, rootClientId )\n\t\t\t);\n\t\t} );\n\n\t\tconst isDefaultBlock = blockName === getDefaultBlockName();\n\t\tconst isEmptyContent = block?.attributes.content === '';\n\t\tconst isExactlyOneBlock = blockOrder.length === 1;\n\t\tconst isEmptyDefaultBlock =\n\t\t\tisExactlyOneBlock && isDefaultBlock && isEmptyContent;\n\t\tconst isLocked = !! getTemplateLock( rootClientId );\n\n\t\tconst selectedBlockClientId = getSelectedBlockClientIds()[ 0 ];\n\t\tconst selectedBlock = selectedBlockClientId\n\t\t\t? getBlocksByClientId( selectedBlockClientId )[ 0 ]\n\t\t\t: undefined;\n\t\tconst selectedBlockPossibleTransformations = selectedBlock\n\t\t\t? getBlockTransformItems( selectedBlock, rootClientId )\n\t\t\t: EMPTY_BLOCK_LIST;\n\t\tconst canRemove = canRemoveBlock( selectedBlockClientId );\n\n\t\tconst isReusableBlockType = block ? isReusableBlock( block ) : false;\n\t\tconst reusableBlock = isReusableBlockType\n\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblock?.attributes.ref\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tblockTitle,\n\t\t\tcanInsertBlockType,\n\t\t\tcurrentIndex: currentBlockIndex,\n\t\t\tgetBlocksByClientId,\n\t\t\tisEmptyDefaultBlock,\n\t\t\tisLocked,\n\t\t\tcanDuplicate,\n\t\t\tisFirst,\n\t\t\tisLast,\n\t\t\tisReusableBlockType,\n\t\t\treusableBlock,\n\t\t\trootClientId,\n\t\t\tselectedBlockClientId,\n\t\t\tselectedBlockPossibleTransformations,\n\t\t\tcanRemove,\n\t\t};\n\t} ),\n\twithDispatch(\n\t\t(\n\t\t\tdispatch,\n\t\t\t{ clientId, rootClientId, currentIndex, selectedBlockClientId },\n\t\t\t{ select }\n\t\t) => {\n\t\t\tconst {\n\t\t\t\tmoveBlocksDown,\n\t\t\t\tmoveBlocksUp,\n\t\t\t\tduplicateBlocks,\n\t\t\t\tremoveBlocks,\n\t\t\t\tinsertBlock,\n\t\t\t\treplaceBlock,\n\t\t\t\tclearSelectedBlock,\n\t\t\t} = dispatch( blockEditorStore );\n\t\t\tconst { openGeneralSidebar } = dispatch( 'core/edit-post' );\n\t\t\tconst { getBlockSelectionEnd, getBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { createSuccessNotice } = dispatch( noticesStore );\n\n\t\t\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\t\t\tdispatch( reusableBlocksStore );\n\n\t\t\treturn {\n\t\t\t\tcreateSuccessNotice,\n\t\t\t\tconvertToRegularBlocks() {\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t// Convert action is executed at the end of the current JavaScript execution block\n\t\t\t\t\t// to prevent issues related to undo/redo actions.\n\t\t\t\t\tsetImmediate( () =>\n\t\t\t\t\t\tconvertBlockToStatic( selectedBlockClientId )\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tduplicateBlock() {\n\t\t\t\t\treturn duplicateBlocks( [ clientId ] );\n\t\t\t\t},\n\t\t\t\tonMoveDown: ( ...args ) =>\n\t\t\t\t\tmoveBlocksDown( [ clientId ], rootClientId, ...args ),\n\t\t\t\tonMoveUp: ( ...args ) =>\n\t\t\t\t\tmoveBlocksUp( [ clientId ], rootClientId, ...args ),\n\t\t\t\topenGeneralSidebar: () =>\n\t\t\t\t\topenGeneralSidebar( 'edit-post/block' ),\n\t\t\t\tpasteBlock: ( clipboardBlock ) => {\n\t\t\t\t\tconst canReplaceBlock = isUnmodifiedDefaultBlock(\n\t\t\t\t\t\tgetBlock( getBlockSelectionEnd() )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! canReplaceBlock ) {\n\t\t\t\t\t\tconst insertedBlock = createBlock(\n\t\t\t\t\t\t\tclipboardBlock.name,\n\t\t\t\t\t\t\tclipboardBlock.attributes,\n\t\t\t\t\t\t\tclipboardBlock.innerBlocks\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tinsertBlock(\n\t\t\t\t\t\t\tinsertedBlock,\n\t\t\t\t\t\t\tcurrentIndex + 1,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treplaceBlock( clientId, clipboardBlock );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tremoveBlocks,\n\t\t\t};\n\t\t}\n\t),\n\twithInstanceId\n)( BlockActionsMenu );\n"]}
@@ -1,135 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _element = require("@wordpress/element");
11
-
12
- var _reactNative = require("react-native");
13
-
14
- var _data = require("@wordpress/data");
15
-
16
- var _compose = require("@wordpress/compose");
17
-
18
- var _style = _interopRequireDefault(require("./style.scss"));
19
-
20
- var _blockMover = _interopRequireDefault(require("../block-mover"));
21
-
22
- var _blockDraggable = _interopRequireDefault(require("../block-draggable"));
23
-
24
- var _blockActionsMenu = _interopRequireDefault(require("./block-actions-menu"));
25
-
26
- var _blockSettings = require("../block-settings");
27
-
28
- var _store = require("../../store");
29
-
30
- /**
31
- * External dependencies
32
- */
33
-
34
- /**
35
- * WordPress dependencies
36
- */
37
-
38
- /**
39
- * Internal dependencies
40
- */
41
- // Defined breakpoints are used to get a point when
42
- // `settings` and `mover` controls should be wrapped into `BlockActionsMenu`
43
- // and accessed through `BottomSheet`(Android)/`ActionSheet`(iOS).
44
- const BREAKPOINTS = {
45
- wrapSettings: 65,
46
- wrapMover: 150
47
- };
48
-
49
- const BlockMobileToolbar = ({
50
- clientId,
51
- onDelete,
52
- isStackedHorizontally,
53
- blockWidth,
54
- anchorNodeRef,
55
- isFullWidth,
56
- draggingClientId
57
- }) => {
58
- const [fillsLength, setFillsLength] = (0, _element.useState)(null);
59
- const [appenderWidth, setAppenderWidth] = (0, _element.useState)(0);
60
- const spacingValue = _style.default.toolbar.marginLeft * 2;
61
-
62
- function onLayout({
63
- nativeEvent
64
- }) {
65
- const {
66
- layout
67
- } = nativeEvent;
68
- const layoutWidth = Math.floor(layout.width);
69
-
70
- if (layoutWidth !== appenderWidth) {
71
- setAppenderWidth(nativeEvent.layout.width);
72
- }
73
- }
74
-
75
- const wrapBlockSettings = blockWidth < BREAKPOINTS.wrapSettings || appenderWidth - spacingValue < BREAKPOINTS.wrapSettings;
76
- const wrapBlockMover = blockWidth <= BREAKPOINTS.wrapMover || appenderWidth - spacingValue <= BREAKPOINTS.wrapMover;
77
-
78
- const BlockSettingsButtonFill = fillProps => {
79
- var _fillProps$children;
80
-
81
- (0, _element.useEffect)(() => fillProps.onChangeFillsLength(fillProps.fillsLength), [fillProps.fillsLength]);
82
- return (_fillProps$children = fillProps.children) !== null && _fillProps$children !== void 0 ? _fillProps$children : null;
83
- };
84
-
85
- return (0, _element.createElement)(_reactNative.View, {
86
- style: [_style.default.toolbar, isFullWidth && _style.default.toolbarFullWidth],
87
- onLayout: onLayout
88
- }, !wrapBlockMover && (0, _element.createElement)(_blockMover.default, {
89
- clientIds: [clientId],
90
- isStackedHorizontally: isStackedHorizontally
91
- }), (0, _element.createElement)(_blockDraggable.default, {
92
- clientId: clientId,
93
- draggingClientId: draggingClientId,
94
- testID: "draggable-trigger-mobile-toolbar"
95
- }, () => (0, _element.createElement)(_reactNative.View, {
96
- style: _style.default.spacer
97
- })), (0, _element.createElement)(_blockSettings.BlockSettingsButton.Slot, null, (fills = [null]) => // The purpose of BlockSettingsButtonFill component is only to provide a way
98
- // to pass data upstream from the slot rendering.
99
- (0, _element.createElement)(BlockSettingsButtonFill, {
100
- fillsLength: fills.length,
101
- onChangeFillsLength: setFillsLength
102
- }, wrapBlockSettings ? null : fills[0])), (0, _element.createElement)(_blockActionsMenu.default, {
103
- clientId: clientId,
104
- wrapBlockMover: wrapBlockMover,
105
- wrapBlockSettings: wrapBlockSettings && fillsLength,
106
- isStackedHorizontally: isStackedHorizontally,
107
- onDelete: onDelete,
108
- anchorNodeRef: anchorNodeRef
109
- }));
110
- };
111
-
112
- var _default = (0, _compose.compose)((0, _data.withSelect)((select, {
113
- clientId
114
- }) => {
115
- const {
116
- getBlockIndex
117
- } = select(_store.store);
118
- return {
119
- order: getBlockIndex(clientId)
120
- };
121
- }), (0, _data.withDispatch)((dispatch, {
122
- clientId,
123
- rootClientId,
124
- onDelete
125
- }) => {
126
- const {
127
- removeBlock
128
- } = dispatch(_store.store);
129
- return {
130
- onDelete: onDelete || (() => removeBlock(clientId, rootClientId))
131
- };
132
- }))(BlockMobileToolbar);
133
-
134
- exports.default = _default;
135
- //# sourceMappingURL=index.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-mobile-toolbar/index.native.js"],"names":["BREAKPOINTS","wrapSettings","wrapMover","BlockMobileToolbar","clientId","onDelete","isStackedHorizontally","blockWidth","anchorNodeRef","isFullWidth","draggingClientId","fillsLength","setFillsLength","appenderWidth","setAppenderWidth","spacingValue","styles","toolbar","marginLeft","onLayout","nativeEvent","layout","layoutWidth","Math","floor","width","wrapBlockSettings","wrapBlockMover","BlockSettingsButtonFill","fillProps","onChangeFillsLength","children","toolbarFullWidth","spacer","fills","length","select","getBlockIndex","blockEditorStore","order","dispatch","rootClientId","removeBlock"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport BlockMover from '../block-mover';\nimport BlockDraggable from '../block-draggable';\nimport BlockActionsMenu from './block-actions-menu';\nimport { BlockSettingsButton } from '../block-settings';\nimport { store as blockEditorStore } from '../../store';\n\n// Defined breakpoints are used to get a point when\n// `settings` and `mover` controls should be wrapped into `BlockActionsMenu`\n// and accessed through `BottomSheet`(Android)/`ActionSheet`(iOS).\nconst BREAKPOINTS = {\n\twrapSettings: 65,\n\twrapMover: 150,\n};\nconst BlockMobileToolbar = ( {\n\tclientId,\n\tonDelete,\n\tisStackedHorizontally,\n\tblockWidth,\n\tanchorNodeRef,\n\tisFullWidth,\n\tdraggingClientId,\n} ) => {\n\tconst [ fillsLength, setFillsLength ] = useState( null );\n\tconst [ appenderWidth, setAppenderWidth ] = useState( 0 );\n\tconst spacingValue = styles.toolbar.marginLeft * 2;\n\n\tfunction onLayout( { nativeEvent } ) {\n\t\tconst { layout } = nativeEvent;\n\t\tconst layoutWidth = Math.floor( layout.width );\n\t\tif ( layoutWidth !== appenderWidth ) {\n\t\t\tsetAppenderWidth( nativeEvent.layout.width );\n\t\t}\n\t}\n\n\tconst wrapBlockSettings =\n\t\tblockWidth < BREAKPOINTS.wrapSettings ||\n\t\tappenderWidth - spacingValue < BREAKPOINTS.wrapSettings;\n\tconst wrapBlockMover =\n\t\tblockWidth <= BREAKPOINTS.wrapMover ||\n\t\tappenderWidth - spacingValue <= BREAKPOINTS.wrapMover;\n\n\tconst BlockSettingsButtonFill = ( fillProps ) => {\n\t\tuseEffect(\n\t\t\t() => fillProps.onChangeFillsLength( fillProps.fillsLength ),\n\t\t\t[ fillProps.fillsLength ]\n\t\t);\n\t\treturn fillProps.children ?? null;\n\t};\n\n\treturn (\n\t\t<View\n\t\t\tstyle={ [ styles.toolbar, isFullWidth && styles.toolbarFullWidth ] }\n\t\t\tonLayout={ onLayout }\n\t\t>\n\t\t\t{ ! wrapBlockMover && (\n\t\t\t\t<BlockMover\n\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<BlockDraggable\n\t\t\t\tclientId={ clientId }\n\t\t\t\tdraggingClientId={ draggingClientId }\n\t\t\t\ttestID=\"draggable-trigger-mobile-toolbar\"\n\t\t\t>\n\t\t\t\t{ () => <View style={ styles.spacer } /> }\n\t\t\t</BlockDraggable>\n\n\t\t\t<BlockSettingsButton.Slot>\n\t\t\t\t{ /* Render only one settings icon even if we have more than one fill - need for hooks with controls. */ }\n\t\t\t\t{ ( fills = [ null ] ) => (\n\t\t\t\t\t// The purpose of BlockSettingsButtonFill component is only to provide a way\n\t\t\t\t\t// to pass data upstream from the slot rendering.\n\t\t\t\t\t<BlockSettingsButtonFill\n\t\t\t\t\t\tfillsLength={ fills.length }\n\t\t\t\t\t\tonChangeFillsLength={ setFillsLength }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ wrapBlockSettings ? null : fills[ 0 ] }\n\t\t\t\t\t</BlockSettingsButtonFill>\n\t\t\t\t) }\n\t\t\t</BlockSettingsButton.Slot>\n\n\t\t\t<BlockActionsMenu\n\t\t\t\tclientId={ clientId }\n\t\t\t\twrapBlockMover={ wrapBlockMover }\n\t\t\t\twrapBlockSettings={ wrapBlockSettings && fillsLength }\n\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\tonDelete={ onDelete }\n\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t/>\n\t\t</View>\n\t);\n};\n\nexport default compose(\n\twithSelect( ( select, { clientId } ) => {\n\t\tconst { getBlockIndex } = select( blockEditorStore );\n\n\t\treturn {\n\t\t\torder: getBlockIndex( clientId ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { clientId, rootClientId, onDelete } ) => {\n\t\tconst { removeBlock } = dispatch( blockEditorStore );\n\t\treturn {\n\t\t\tonDelete:\n\t\t\t\tonDelete || ( () => removeBlock( clientId, rootClientId ) ),\n\t\t};\n\t} )\n)( BlockMobileToolbar );\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-mobile-toolbar/block-actions-menu.native.js"],"names":["Platform","findNodeHandle","getClipboard","setClipboard","ToolbarButton","Picker","getBlockType","getDefaultBlockName","hasBlockSupport","serialize","rawHandler","createBlock","isUnmodifiedDefaultBlock","isReusableBlock","__","sprintf","withDispatch","withSelect","useSelect","withInstanceId","compose","moreHorizontalMobile","useRef","useState","store","noticesStore","reusableBlocksStore","coreStore","getMoversSetup","blockEditorStore","BlockTransformationsMenu","useConvertToGroupButtons","useConvertToGroupButtonProps","BlockActionsMenu","blockTitle","canInsertBlockType","getBlocksByClientId","isEmptyDefaultBlock","isLocked","canDuplicate","isFirst","isLast","isReusableBlockType","reusableBlock","rootClientId","selectedBlockClientId","selectedBlockPossibleTransformations","canRemove","createSuccessNotice","convertToRegularBlocks","duplicateBlock","onMoveDown","onMoveUp","openGeneralSidebar","pasteBlock","removeBlocks","anchorNodeRef","isStackedHorizontally","onDelete","wrapBlockMover","wrapBlockSettings","clipboard","setCurrentClipboard","blockActionsMenuPickerRef","blockTransformationMenuPickerRef","moversOptions","keys","clipboardBlock","HTML","isPasteEnabled","name","innerBlockCount","select","getBlockCount","actionTitle","backward","backwardButtonTitle","forward","forwardButtonTitle","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","convertToGroupButtons","allOptions","settings","id","label","value","onSelect","backwardButton","disabled","forwardButton","delete","separated","transformButton","current","presentPicker","copyButton","serializedBlock","cutButton","pasteButton","onPasteBlock","duplicateButton","successNotice","title","raw","options","length","group","ungroup","filter","Boolean","onPickerSelect","selectedItem","find","item","onPickerPresent","disabledButtonIndices","map","option","index","accessibilityHint","OS","getAnchor","undefined","hint","EMPTY_BLOCK_LIST","clientId","getBlockIndex","getBlockRootClientId","getBlockOrder","getBlockName","getBlockTransformItems","getBlock","getSelectedBlockClientIds","getTemplateLock","canRemoveBlock","block","blockName","blockType","blockOrder","currentBlockIndex","innerBlocks","every","innerBlock","isDefaultBlock","isEmptyContent","attributes","content","isExactlyOneBlock","selectedBlock","getEntityRecord","ref","currentIndex","dispatch","moveBlocksDown","moveBlocksUp","duplicateBlocks","insertBlock","replaceBlock","clearSelectedBlock","getBlockSelectionEnd","__experimentalConvertBlockToStatic","convertBlockToStatic","setImmediate","args","canReplaceBlock","insertedBlock"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform, findNodeHandle } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetClipboard,\n\tsetClipboard,\n\tToolbarButton,\n\tPicker,\n} from '@wordpress/components';\nimport {\n\tgetBlockType,\n\tgetDefaultBlockName,\n\thasBlockSupport,\n\tserialize,\n\trawHandler,\n\tcreateBlock,\n\tisUnmodifiedDefaultBlock,\n\tisReusableBlock,\n} from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withDispatch, withSelect, useSelect } from '@wordpress/data';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { moreHorizontalMobile } from '@wordpress/icons';\nimport { useRef, useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\n// Disable Reason: Needs to be refactored.\n// eslint-disable-next-line no-restricted-imports\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getMoversSetup } from '../block-mover/mover-description';\nimport { store as blockEditorStore } from '../../store';\nimport BlockTransformationsMenu from '../block-switcher/block-transformations-menu';\nimport {\n\tuseConvertToGroupButtons,\n\tuseConvertToGroupButtonProps,\n} from '../convert-to-group-buttons';\n\nconst BlockActionsMenu = ( {\n\t// Select.\n\tblockTitle,\n\tcanInsertBlockType,\n\tgetBlocksByClientId,\n\tisEmptyDefaultBlock,\n\tisLocked,\n\tcanDuplicate,\n\tisFirst,\n\tisLast,\n\tisReusableBlockType,\n\treusableBlock,\n\trootClientId,\n\tselectedBlockClientId,\n\tselectedBlockPossibleTransformations,\n\tcanRemove,\n\t// Dispatch.\n\tcreateSuccessNotice,\n\tconvertToRegularBlocks,\n\tduplicateBlock,\n\tonMoveDown,\n\tonMoveUp,\n\topenGeneralSidebar,\n\tpasteBlock,\n\tremoveBlocks,\n\t// Passed in.\n\tanchorNodeRef,\n\tisStackedHorizontally,\n\tonDelete,\n\twrapBlockMover,\n\twrapBlockSettings,\n} ) => {\n\tconst [ clipboard, setCurrentClipboard ] = useState( getClipboard() );\n\tconst blockActionsMenuPickerRef = useRef();\n\tconst blockTransformationMenuPickerRef = useRef();\n\tconst moversOptions = { keys: [ 'icon', 'actionTitle' ] };\n\tconst clipboardBlock = clipboard && rawHandler( { HTML: clipboard } )[ 0 ];\n\tconst isPasteEnabled =\n\t\tclipboardBlock &&\n\t\tcanInsertBlockType( clipboardBlock.name, rootClientId );\n\n\tconst innerBlockCount = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlockCount( selectedBlockClientId ),\n\t\t[ selectedBlockClientId ]\n\t);\n\n\tconst {\n\t\tactionTitle: {\n\t\t\tbackward: backwardButtonTitle,\n\t\t\tforward: forwardButtonTitle,\n\t\t},\n\t} = getMoversSetup( isStackedHorizontally, moversOptions );\n\n\t// Check if selected block is Groupable and/or Ungroupable.\n\tconst convertToGroupButtonProps = useConvertToGroupButtonProps( [\n\t\tselectedBlockClientId,\n\t] );\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton =\n\t\t( isGroupable || isUngroupable ) && canRemove;\n\tconst convertToGroupButtons = useConvertToGroupButtons( {\n\t\t...convertToGroupButtonProps,\n\t} );\n\n\tconst allOptions = {\n\t\tsettings: {\n\t\t\tid: 'settingsOption',\n\t\t\tlabel: __( 'Block settings' ),\n\t\t\tvalue: 'settingsOption',\n\t\t\tonSelect: openGeneralSidebar,\n\t\t},\n\t\tbackwardButton: {\n\t\t\tid: 'backwardButtonOption',\n\t\t\tlabel: backwardButtonTitle,\n\t\t\tvalue: 'backwardButtonOption',\n\t\t\tdisabled: isFirst,\n\t\t\tonSelect: onMoveUp,\n\t\t},\n\t\tforwardButton: {\n\t\t\tid: 'forwardButtonOption',\n\t\t\tlabel: forwardButtonTitle,\n\t\t\tvalue: 'forwardButtonOption',\n\t\t\tdisabled: isLast,\n\t\t\tonSelect: onMoveDown,\n\t\t},\n\t\tdelete: {\n\t\t\tid: 'deleteOption',\n\t\t\tlabel: __( 'Remove block' ),\n\t\t\tvalue: 'deleteOption',\n\t\t\tseparated: true,\n\t\t\tdisabled: isEmptyDefaultBlock,\n\t\t\tonSelect: () => {\n\t\t\t\tonDelete();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is removed.\n\t\t\t\t\t__( 'Block removed' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\ttransformButton: {\n\t\t\tid: 'transformButtonOption',\n\t\t\tlabel: __( 'Transform block…' ),\n\t\t\tvalue: 'transformButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tif ( blockTransformationMenuPickerRef.current ) {\n\t\t\t\t\tblockTransformationMenuPickerRef.current.presentPicker();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tcopyButton: {\n\t\t\tid: 'copyButtonOption',\n\t\t\tlabel: __( 'Copy' ),\n\t\t\tvalue: 'copyButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tconst serializedBlock = serialize(\n\t\t\t\t\tgetBlocksByClientId( selectedBlockClientId )\n\t\t\t\t);\n\t\t\t\tsetCurrentClipboard( serializedBlock );\n\t\t\t\tsetClipboard( serializedBlock );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is copied.\n\t\t\t\t\t__( 'Block copied' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tcutButton: {\n\t\t\tid: 'cutButtonOption',\n\t\t\tlabel: __( 'Cut block' ),\n\t\t\tvalue: 'cutButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tsetClipboard(\n\t\t\t\t\tserialize( getBlocksByClientId( selectedBlockClientId ) )\n\t\t\t\t);\n\t\t\t\tremoveBlocks( selectedBlockClientId );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is cut.\n\t\t\t\t\t__( 'Block cut' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tpasteButton: {\n\t\t\tid: 'pasteButtonOption',\n\t\t\tlabel: __( 'Paste block after' ),\n\t\t\tvalue: 'pasteButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tonPasteBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is pasted.\n\t\t\t\t\t__( 'Block pasted' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tduplicateButton: {\n\t\t\tid: 'duplicateButtonOption',\n\t\t\tlabel: __( 'Duplicate block' ),\n\t\t\tvalue: 'duplicateButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tduplicateBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is duplicated.\n\t\t\t\t\t__( 'Block duplicated' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tconvertToRegularBlocks: {\n\t\t\tid: 'convertToRegularBlocksOption',\n\t\t\tlabel:\n\t\t\t\tinnerBlockCount > 1\n\t\t\t\t\t? __( 'Detach patterns' )\n\t\t\t\t\t: __( 'Detach pattern' ),\n\t\t\tvalue: 'convertToRegularBlocksOption',\n\t\t\tonSelect: () => {\n\t\t\t\t/* translators: %s: name of the synced block */\n\t\t\t\tconst successNotice = __( '%s detached' );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\tsuccessNotice,\n\t\t\t\t\t\treusableBlock?.title?.raw || blockTitle\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconvertToRegularBlocks();\n\t\t\t},\n\t\t},\n\t};\n\n\tconst options = [\n\t\twrapBlockMover && allOptions.backwardButton,\n\t\twrapBlockMover && allOptions.forwardButton,\n\t\twrapBlockSettings && allOptions.settings,\n\t\t! isLocked &&\n\t\t\tselectedBlockPossibleTransformations.length &&\n\t\t\tallOptions.transformButton,\n\t\tcanDuplicate && allOptions.copyButton,\n\t\tcanDuplicate && allOptions.cutButton,\n\t\tcanDuplicate && isPasteEnabled && allOptions.pasteButton,\n\t\tcanDuplicate && allOptions.duplicateButton,\n\t\tshowConvertToGroupButton && isGroupable && convertToGroupButtons.group,\n\t\tshowConvertToGroupButton &&\n\t\t\tisUngroupable &&\n\t\t\tconvertToGroupButtons.ungroup,\n\t\tisReusableBlockType &&\n\t\t\tinnerBlockCount > 0 &&\n\t\t\tallOptions.convertToRegularBlocks,\n\t\t! isLocked && allOptions.delete,\n\t].filter( Boolean );\n\n\t// End early if there are no options to show.\n\tif ( ! options.length ) {\n\t\treturn (\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\tdisabled={ true }\n\t\t\t/>\n\t\t);\n\t}\n\n\tfunction onPasteBlock() {\n\t\tif ( ! clipboard ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpasteBlock( rawHandler( { HTML: clipboard } )[ 0 ] );\n\t}\n\n\tfunction onPickerSelect( value ) {\n\t\tconst selectedItem = options.find( ( item ) => item.value === value );\n\t\tselectedItem.onSelect();\n\t}\n\n\tfunction onPickerPresent() {\n\t\tif ( blockActionsMenuPickerRef.current ) {\n\t\t\tblockActionsMenuPickerRef.current.presentPicker();\n\t\t}\n\t}\n\n\tconst disabledButtonIndices = options\n\t\t.map( ( option, index ) => option.disabled && index + 1 )\n\t\t.filter( Boolean );\n\n\tconst accessibilityHint =\n\t\tPlatform.OS === 'ios'\n\t\t\t? __( 'Double tap to open Action Sheet with available options' )\n\t\t\t: __( 'Double tap to open Bottom Sheet with available options' );\n\n\tconst getAnchor = () =>\n\t\tanchorNodeRef ? findNodeHandle( anchorNodeRef ) : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\tonClick={ onPickerPresent }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\textraProps={ {\n\t\t\t\t\thint: accessibilityHint,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<Picker\n\t\t\t\ttestID=\"block-actions-menu\"\n\t\t\t\tref={ blockActionsMenuPickerRef }\n\t\t\t\toptions={ options }\n\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\tdestructiveButtonIndex={ options.length }\n\t\t\t\tdisabledButtonIndices={ disabledButtonIndices }\n\t\t\t\thideCancelButton={ Platform.OS !== 'ios' }\n\t\t\t\tleftAlign={ true }\n\t\t\t\tgetAnchor={ getAnchor }\n\t\t\t\t// translators: %s: block title e.g: \"Paragraph\".\n\t\t\t\ttitle={ sprintf( __( '%s block options' ), blockTitle ) }\n\t\t\t/>\n\t\t\t<BlockTransformationsMenu\n\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tpickerRef={ blockTransformationMenuPickerRef }\n\t\t\t\tpossibleTransformations={ selectedBlockPossibleTransformations }\n\t\t\t\tselectedBlock={ getBlocksByClientId( selectedBlockClientId ) }\n\t\t\t\tselectedBlockClientId={ selectedBlockClientId }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nconst EMPTY_BLOCK_LIST = [];\n\nexport default compose(\n\twithSelect( ( select, { clientId } ) => {\n\t\tconst {\n\t\t\tgetBlockIndex,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockName,\n\t\t\tgetBlockTransformItems,\n\t\t\tgetBlock,\n\t\t\tgetBlocksByClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tcanInsertBlockType,\n\t\t\tgetTemplateLock,\n\t\t\tcanRemoveBlock,\n\t\t} = select( blockEditorStore );\n\t\tconst block = getBlock( clientId );\n\t\tconst blockName = getBlockName( clientId );\n\t\tconst blockType = getBlockType( blockName );\n\t\tconst blockTitle = blockType?.title;\n\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\tconst blockOrder = getBlockOrder( rootClientId );\n\n\t\tconst currentBlockIndex = getBlockIndex( clientId );\n\t\tconst isFirst = currentBlockIndex === 0;\n\t\tconst isLast = currentBlockIndex === blockOrder.length - 1;\n\n\t\tconst innerBlocks = getBlocksByClientId( clientId );\n\n\t\tconst canDuplicate = innerBlocks.every( ( innerBlock ) => {\n\t\t\treturn (\n\t\t\t\t!! innerBlock &&\n\t\t\t\thasBlockSupport( innerBlock.name, 'multiple', true ) &&\n\t\t\t\tcanInsertBlockType( innerBlock.name, rootClientId )\n\t\t\t);\n\t\t} );\n\n\t\tconst isDefaultBlock = blockName === getDefaultBlockName();\n\t\tconst isEmptyContent = block?.attributes.content === '';\n\t\tconst isExactlyOneBlock = blockOrder.length === 1;\n\t\tconst isEmptyDefaultBlock =\n\t\t\tisExactlyOneBlock && isDefaultBlock && isEmptyContent;\n\t\tconst isLocked = !! getTemplateLock( rootClientId );\n\n\t\tconst selectedBlockClientId = getSelectedBlockClientIds()[ 0 ];\n\t\tconst selectedBlock = selectedBlockClientId\n\t\t\t? getBlocksByClientId( selectedBlockClientId )[ 0 ]\n\t\t\t: undefined;\n\t\tconst selectedBlockPossibleTransformations = selectedBlock\n\t\t\t? getBlockTransformItems( selectedBlock, rootClientId )\n\t\t\t: EMPTY_BLOCK_LIST;\n\t\tconst canRemove = canRemoveBlock( selectedBlockClientId );\n\n\t\tconst isReusableBlockType = block ? isReusableBlock( block ) : false;\n\t\tconst reusableBlock = isReusableBlockType\n\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblock?.attributes.ref\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tblockTitle,\n\t\t\tcanInsertBlockType,\n\t\t\tcurrentIndex: currentBlockIndex,\n\t\t\tgetBlocksByClientId,\n\t\t\tisEmptyDefaultBlock,\n\t\t\tisLocked,\n\t\t\tcanDuplicate,\n\t\t\tisFirst,\n\t\t\tisLast,\n\t\t\tisReusableBlockType,\n\t\t\treusableBlock,\n\t\t\trootClientId,\n\t\t\tselectedBlockClientId,\n\t\t\tselectedBlockPossibleTransformations,\n\t\t\tcanRemove,\n\t\t};\n\t} ),\n\twithDispatch(\n\t\t(\n\t\t\tdispatch,\n\t\t\t{ clientId, rootClientId, currentIndex, selectedBlockClientId },\n\t\t\t{ select }\n\t\t) => {\n\t\t\tconst {\n\t\t\t\tmoveBlocksDown,\n\t\t\t\tmoveBlocksUp,\n\t\t\t\tduplicateBlocks,\n\t\t\t\tremoveBlocks,\n\t\t\t\tinsertBlock,\n\t\t\t\treplaceBlock,\n\t\t\t\tclearSelectedBlock,\n\t\t\t} = dispatch( blockEditorStore );\n\t\t\tconst { openGeneralSidebar } = dispatch( 'core/edit-post' );\n\t\t\tconst { getBlockSelectionEnd, getBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { createSuccessNotice } = dispatch( noticesStore );\n\n\t\t\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\t\t\tdispatch( reusableBlocksStore );\n\n\t\t\treturn {\n\t\t\t\tcreateSuccessNotice,\n\t\t\t\tconvertToRegularBlocks() {\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t// Convert action is executed at the end of the current JavaScript execution block\n\t\t\t\t\t// to prevent issues related to undo/redo actions.\n\t\t\t\t\tsetImmediate( () =>\n\t\t\t\t\t\tconvertBlockToStatic( selectedBlockClientId )\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tduplicateBlock() {\n\t\t\t\t\treturn duplicateBlocks( [ clientId ] );\n\t\t\t\t},\n\t\t\t\tonMoveDown: ( ...args ) =>\n\t\t\t\t\tmoveBlocksDown( [ clientId ], rootClientId, ...args ),\n\t\t\t\tonMoveUp: ( ...args ) =>\n\t\t\t\t\tmoveBlocksUp( [ clientId ], rootClientId, ...args ),\n\t\t\t\topenGeneralSidebar: () =>\n\t\t\t\t\topenGeneralSidebar( 'edit-post/block' ),\n\t\t\t\tpasteBlock: ( clipboardBlock ) => {\n\t\t\t\t\tconst canReplaceBlock = isUnmodifiedDefaultBlock(\n\t\t\t\t\t\tgetBlock( getBlockSelectionEnd() )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! canReplaceBlock ) {\n\t\t\t\t\t\tconst insertedBlock = createBlock(\n\t\t\t\t\t\t\tclipboardBlock.name,\n\t\t\t\t\t\t\tclipboardBlock.attributes,\n\t\t\t\t\t\t\tclipboardBlock.innerBlocks\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tinsertBlock(\n\t\t\t\t\t\t\tinsertedBlock,\n\t\t\t\t\t\t\tcurrentIndex + 1,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treplaceBlock( clientId, clipboardBlock );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tremoveBlocks,\n\t\t\t};\n\t\t}\n\t),\n\twithInstanceId\n)( BlockActionsMenu );\n"]}
@@ -1,116 +0,0 @@
1
- import { createElement } from "@wordpress/element";
2
-
3
- /**
4
- * External dependencies
5
- */
6
- import { View } from 'react-native';
7
- /**
8
- * WordPress dependencies
9
- */
10
-
11
- import { withDispatch, withSelect } from '@wordpress/data';
12
- import { compose } from '@wordpress/compose';
13
- import { useState, useEffect } from '@wordpress/element';
14
- /**
15
- * Internal dependencies
16
- */
17
-
18
- import styles from './style.scss';
19
- import BlockMover from '../block-mover';
20
- import BlockDraggable from '../block-draggable';
21
- import BlockActionsMenu from './block-actions-menu';
22
- import { BlockSettingsButton } from '../block-settings';
23
- import { store as blockEditorStore } from '../../store'; // Defined breakpoints are used to get a point when
24
- // `settings` and `mover` controls should be wrapped into `BlockActionsMenu`
25
- // and accessed through `BottomSheet`(Android)/`ActionSheet`(iOS).
26
-
27
- const BREAKPOINTS = {
28
- wrapSettings: 65,
29
- wrapMover: 150
30
- };
31
-
32
- const BlockMobileToolbar = ({
33
- clientId,
34
- onDelete,
35
- isStackedHorizontally,
36
- blockWidth,
37
- anchorNodeRef,
38
- isFullWidth,
39
- draggingClientId
40
- }) => {
41
- const [fillsLength, setFillsLength] = useState(null);
42
- const [appenderWidth, setAppenderWidth] = useState(0);
43
- const spacingValue = styles.toolbar.marginLeft * 2;
44
-
45
- function onLayout({
46
- nativeEvent
47
- }) {
48
- const {
49
- layout
50
- } = nativeEvent;
51
- const layoutWidth = Math.floor(layout.width);
52
-
53
- if (layoutWidth !== appenderWidth) {
54
- setAppenderWidth(nativeEvent.layout.width);
55
- }
56
- }
57
-
58
- const wrapBlockSettings = blockWidth < BREAKPOINTS.wrapSettings || appenderWidth - spacingValue < BREAKPOINTS.wrapSettings;
59
- const wrapBlockMover = blockWidth <= BREAKPOINTS.wrapMover || appenderWidth - spacingValue <= BREAKPOINTS.wrapMover;
60
-
61
- const BlockSettingsButtonFill = fillProps => {
62
- var _fillProps$children;
63
-
64
- useEffect(() => fillProps.onChangeFillsLength(fillProps.fillsLength), [fillProps.fillsLength]);
65
- return (_fillProps$children = fillProps.children) !== null && _fillProps$children !== void 0 ? _fillProps$children : null;
66
- };
67
-
68
- return createElement(View, {
69
- style: [styles.toolbar, isFullWidth && styles.toolbarFullWidth],
70
- onLayout: onLayout
71
- }, !wrapBlockMover && createElement(BlockMover, {
72
- clientIds: [clientId],
73
- isStackedHorizontally: isStackedHorizontally
74
- }), createElement(BlockDraggable, {
75
- clientId: clientId,
76
- draggingClientId: draggingClientId,
77
- testID: "draggable-trigger-mobile-toolbar"
78
- }, () => createElement(View, {
79
- style: styles.spacer
80
- })), createElement(BlockSettingsButton.Slot, null, (fills = [null]) => // The purpose of BlockSettingsButtonFill component is only to provide a way
81
- // to pass data upstream from the slot rendering.
82
- createElement(BlockSettingsButtonFill, {
83
- fillsLength: fills.length,
84
- onChangeFillsLength: setFillsLength
85
- }, wrapBlockSettings ? null : fills[0])), createElement(BlockActionsMenu, {
86
- clientId: clientId,
87
- wrapBlockMover: wrapBlockMover,
88
- wrapBlockSettings: wrapBlockSettings && fillsLength,
89
- isStackedHorizontally: isStackedHorizontally,
90
- onDelete: onDelete,
91
- anchorNodeRef: anchorNodeRef
92
- }));
93
- };
94
-
95
- export default compose(withSelect((select, {
96
- clientId
97
- }) => {
98
- const {
99
- getBlockIndex
100
- } = select(blockEditorStore);
101
- return {
102
- order: getBlockIndex(clientId)
103
- };
104
- }), withDispatch((dispatch, {
105
- clientId,
106
- rootClientId,
107
- onDelete
108
- }) => {
109
- const {
110
- removeBlock
111
- } = dispatch(blockEditorStore);
112
- return {
113
- onDelete: onDelete || (() => removeBlock(clientId, rootClientId))
114
- };
115
- }))(BlockMobileToolbar);
116
- //# sourceMappingURL=index.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-mobile-toolbar/index.native.js"],"names":["View","withDispatch","withSelect","compose","useState","useEffect","styles","BlockMover","BlockDraggable","BlockActionsMenu","BlockSettingsButton","store","blockEditorStore","BREAKPOINTS","wrapSettings","wrapMover","BlockMobileToolbar","clientId","onDelete","isStackedHorizontally","blockWidth","anchorNodeRef","isFullWidth","draggingClientId","fillsLength","setFillsLength","appenderWidth","setAppenderWidth","spacingValue","toolbar","marginLeft","onLayout","nativeEvent","layout","layoutWidth","Math","floor","width","wrapBlockSettings","wrapBlockMover","BlockSettingsButtonFill","fillProps","onChangeFillsLength","children","toolbarFullWidth","spacer","fills","length","select","getBlockIndex","order","dispatch","rootClientId","removeBlock"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport BlockMover from '../block-mover';\nimport BlockDraggable from '../block-draggable';\nimport BlockActionsMenu from './block-actions-menu';\nimport { BlockSettingsButton } from '../block-settings';\nimport { store as blockEditorStore } from '../../store';\n\n// Defined breakpoints are used to get a point when\n// `settings` and `mover` controls should be wrapped into `BlockActionsMenu`\n// and accessed through `BottomSheet`(Android)/`ActionSheet`(iOS).\nconst BREAKPOINTS = {\n\twrapSettings: 65,\n\twrapMover: 150,\n};\nconst BlockMobileToolbar = ( {\n\tclientId,\n\tonDelete,\n\tisStackedHorizontally,\n\tblockWidth,\n\tanchorNodeRef,\n\tisFullWidth,\n\tdraggingClientId,\n} ) => {\n\tconst [ fillsLength, setFillsLength ] = useState( null );\n\tconst [ appenderWidth, setAppenderWidth ] = useState( 0 );\n\tconst spacingValue = styles.toolbar.marginLeft * 2;\n\n\tfunction onLayout( { nativeEvent } ) {\n\t\tconst { layout } = nativeEvent;\n\t\tconst layoutWidth = Math.floor( layout.width );\n\t\tif ( layoutWidth !== appenderWidth ) {\n\t\t\tsetAppenderWidth( nativeEvent.layout.width );\n\t\t}\n\t}\n\n\tconst wrapBlockSettings =\n\t\tblockWidth < BREAKPOINTS.wrapSettings ||\n\t\tappenderWidth - spacingValue < BREAKPOINTS.wrapSettings;\n\tconst wrapBlockMover =\n\t\tblockWidth <= BREAKPOINTS.wrapMover ||\n\t\tappenderWidth - spacingValue <= BREAKPOINTS.wrapMover;\n\n\tconst BlockSettingsButtonFill = ( fillProps ) => {\n\t\tuseEffect(\n\t\t\t() => fillProps.onChangeFillsLength( fillProps.fillsLength ),\n\t\t\t[ fillProps.fillsLength ]\n\t\t);\n\t\treturn fillProps.children ?? null;\n\t};\n\n\treturn (\n\t\t<View\n\t\t\tstyle={ [ styles.toolbar, isFullWidth && styles.toolbarFullWidth ] }\n\t\t\tonLayout={ onLayout }\n\t\t>\n\t\t\t{ ! wrapBlockMover && (\n\t\t\t\t<BlockMover\n\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<BlockDraggable\n\t\t\t\tclientId={ clientId }\n\t\t\t\tdraggingClientId={ draggingClientId }\n\t\t\t\ttestID=\"draggable-trigger-mobile-toolbar\"\n\t\t\t>\n\t\t\t\t{ () => <View style={ styles.spacer } /> }\n\t\t\t</BlockDraggable>\n\n\t\t\t<BlockSettingsButton.Slot>\n\t\t\t\t{ /* Render only one settings icon even if we have more than one fill - need for hooks with controls. */ }\n\t\t\t\t{ ( fills = [ null ] ) => (\n\t\t\t\t\t// The purpose of BlockSettingsButtonFill component is only to provide a way\n\t\t\t\t\t// to pass data upstream from the slot rendering.\n\t\t\t\t\t<BlockSettingsButtonFill\n\t\t\t\t\t\tfillsLength={ fills.length }\n\t\t\t\t\t\tonChangeFillsLength={ setFillsLength }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ wrapBlockSettings ? null : fills[ 0 ] }\n\t\t\t\t\t</BlockSettingsButtonFill>\n\t\t\t\t) }\n\t\t\t</BlockSettingsButton.Slot>\n\n\t\t\t<BlockActionsMenu\n\t\t\t\tclientId={ clientId }\n\t\t\t\twrapBlockMover={ wrapBlockMover }\n\t\t\t\twrapBlockSettings={ wrapBlockSettings && fillsLength }\n\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\tonDelete={ onDelete }\n\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t/>\n\t\t</View>\n\t);\n};\n\nexport default compose(\n\twithSelect( ( select, { clientId } ) => {\n\t\tconst { getBlockIndex } = select( blockEditorStore );\n\n\t\treturn {\n\t\t\torder: getBlockIndex( clientId ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { clientId, rootClientId, onDelete } ) => {\n\t\tconst { removeBlock } = dispatch( blockEditorStore );\n\t\treturn {\n\t\t\tonDelete:\n\t\t\t\tonDelete || ( () => removeBlock( clientId, rootClientId ) ),\n\t\t};\n\t} )\n)( BlockMobileToolbar );\n"]}