@wordpress/block-editor 9.5.0 → 9.7.1-next.d6164808d3.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 (548) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/block-alignment-control/use-available-alignments.js +1 -1
  3. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  4. package/build/components/block-edit-visually-button/index.js +46 -0
  5. package/build/components/block-edit-visually-button/index.js.map +1 -0
  6. package/build/components/block-list/block.js +12 -2
  7. package/build/components/block-list/block.js.map +1 -1
  8. package/build/components/block-list/index.native.js +1 -1
  9. package/build/components/block-list/index.native.js.map +1 -1
  10. package/build/components/block-lock/modal.js +2 -2
  11. package/build/components/block-lock/modal.js.map +1 -1
  12. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  13. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  14. package/build/components/block-mover/mover-description.js +95 -32
  15. package/build/components/block-mover/mover-description.js.map +1 -1
  16. package/build/components/block-popover/inbetween.js +5 -3
  17. package/build/components/block-popover/inbetween.js.map +1 -1
  18. package/build/components/block-settings-menu/index.js +2 -6
  19. package/build/components/block-settings-menu/index.js.map +1 -1
  20. package/build/components/block-settings-menu-controls/index.js +1 -1
  21. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  22. package/build/components/block-styles/index.js +3 -6
  23. package/build/components/block-styles/index.js.map +1 -1
  24. package/build/components/block-styles/preview.native.js +1 -3
  25. package/build/components/block-styles/preview.native.js.map +1 -1
  26. package/build/components/block-switcher/index.js +10 -16
  27. package/build/components/block-switcher/index.js.map +1 -1
  28. package/build/components/block-toolbar/index.js +5 -1
  29. package/build/components/block-toolbar/index.js.map +1 -1
  30. package/build/components/block-tools/block-selection-button.js +1 -7
  31. package/build/components/block-tools/block-selection-button.js.map +1 -1
  32. package/build/components/block-tools/index.js +4 -1
  33. package/build/components/block-tools/index.js.map +1 -1
  34. package/build/components/block-types-list/index.js +1 -1
  35. package/build/components/block-types-list/index.js.map +1 -1
  36. package/build/components/block-types-list/index.native.js +65 -23
  37. package/build/components/block-types-list/index.native.js.map +1 -1
  38. package/build/components/border-radius-control/all-input-control.js +31 -3
  39. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  40. package/build/components/border-radius-control/index.js +23 -7
  41. package/build/components/border-radius-control/index.js.map +1 -1
  42. package/build/components/border-radius-control/input-controls.js +21 -6
  43. package/build/components/border-radius-control/input-controls.js.map +1 -1
  44. package/build/components/border-radius-control/utils.js +13 -16
  45. package/build/components/border-radius-control/utils.js.map +1 -1
  46. package/build/components/colors/utils.js +6 -2
  47. package/build/components/colors/utils.js.map +1 -1
  48. package/build/components/colors/with-colors.js +17 -4
  49. package/build/components/colors/with-colors.js.map +1 -1
  50. package/build/components/colors-gradients/control.js +8 -4
  51. package/build/components/colors-gradients/control.js.map +1 -1
  52. package/build/components/colors-gradients/dropdown.js +9 -3
  53. package/build/components/colors-gradients/dropdown.js.map +1 -1
  54. package/build/components/copy-handler/index.js +6 -0
  55. package/build/components/copy-handler/index.js.map +1 -1
  56. package/build/components/date-format-picker/index.js +2 -7
  57. package/build/components/date-format-picker/index.js.map +1 -1
  58. package/build/components/duotone/components.js +5 -5
  59. package/build/components/duotone/components.js.map +1 -1
  60. package/build/components/font-appearance-control/index.js +10 -4
  61. package/build/components/font-appearance-control/index.js.map +1 -1
  62. package/build/components/font-family/index.js +1 -1
  63. package/build/components/font-family/index.js.map +1 -1
  64. package/build/components/font-sizes/with-font-sizes.js +17 -4
  65. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  66. package/build/components/image-editor/cropper.js +4 -3
  67. package/build/components/image-editor/cropper.js.map +1 -1
  68. package/build/components/image-editor/index.js +3 -1
  69. package/build/components/image-editor/index.js.map +1 -1
  70. package/build/components/image-size-control/index.js +3 -1
  71. package/build/components/image-size-control/index.js.map +1 -1
  72. package/build/components/index.js +22 -6
  73. package/build/components/index.js.map +1 -1
  74. package/build/components/index.native.js +11 -4
  75. package/build/components/index.native.js.map +1 -1
  76. package/build/components/inserter/block-types-tab.native.js +30 -16
  77. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  78. package/build/components/inserter/index.native.js +8 -3
  79. package/build/components/inserter/index.native.js.map +1 -1
  80. package/build/components/inserter/preview-panel.js +8 -8
  81. package/build/components/inserter/preview-panel.js.map +1 -1
  82. package/build/components/inserter/reusable-blocks-tab.native.js +5 -1
  83. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  84. package/build/components/inserter/search-items.js +22 -4
  85. package/build/components/inserter/search-items.js.map +1 -1
  86. package/build/components/inserter/search-results.native.js +5 -2
  87. package/build/components/inserter/search-results.native.js.map +1 -1
  88. package/build/components/inserter/utils.native.js +21 -0
  89. package/build/components/inserter/utils.native.js.map +1 -1
  90. package/build/components/inserter-list-item/index.js +7 -20
  91. package/build/components/inserter-list-item/index.js.map +1 -1
  92. package/build/components/letter-spacing-control/index.js +6 -3
  93. package/build/components/letter-spacing-control/index.js.map +1 -1
  94. package/build/components/line-height-control/index.js +6 -3
  95. package/build/components/line-height-control/index.js.map +1 -1
  96. package/build/components/link-control/is-url-like.js +1 -7
  97. package/build/components/link-control/is-url-like.js.map +1 -1
  98. package/build/components/link-control/link-preview.js +0 -1
  99. package/build/components/link-control/link-preview.js.map +1 -1
  100. package/build/components/link-control/use-search-handler.js +1 -7
  101. package/build/components/link-control/use-search-handler.js.map +1 -1
  102. package/build/components/list-view/block-select-button.js +5 -2
  103. package/build/components/list-view/block-select-button.js.map +1 -1
  104. package/build/components/list-view/branch.js +1 -7
  105. package/build/components/list-view/branch.js.map +1 -1
  106. package/build/components/list-view/expander.js +3 -1
  107. package/build/components/list-view/expander.js.map +1 -1
  108. package/build/components/list-view/use-block-selection.js +1 -7
  109. package/build/components/list-view/use-block-selection.js.map +1 -1
  110. package/build/components/media-upload/index.native.js +8 -3
  111. package/build/components/media-upload/index.native.js.map +1 -1
  112. package/build/components/observe-typing/index.js +22 -8
  113. package/build/components/observe-typing/index.js.map +1 -1
  114. package/build/components/preview-options/index.js +2 -2
  115. package/build/components/preview-options/index.js.map +1 -1
  116. package/build/components/{use-no-recursive-renders → recursion-provider}/index.js +40 -18
  117. package/build/components/recursion-provider/index.js.map +1 -0
  118. package/build/components/rich-text/format-toolbar-container.js +61 -12
  119. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  120. package/build/components/rich-text/index.js +8 -2
  121. package/build/components/rich-text/index.js.map +1 -1
  122. package/build/components/rich-text/index.native.js +3 -1
  123. package/build/components/rich-text/index.native.js.map +1 -1
  124. package/build/components/rich-text/use-before-input-rules.js +110 -0
  125. package/build/components/rich-text/use-before-input-rules.js.map +1 -0
  126. package/build/components/rich-text/use-enter.js +0 -4
  127. package/build/components/rich-text/use-enter.js.map +1 -1
  128. package/build/components/rich-text/use-format-types.js +39 -22
  129. package/build/components/rich-text/use-format-types.js.map +1 -1
  130. package/build/components/spacing-sizes-control/all-input-control.js +53 -0
  131. package/build/components/spacing-sizes-control/all-input-control.js.map +1 -0
  132. package/build/components/spacing-sizes-control/axial-input-controls.js +69 -0
  133. package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
  134. package/build/components/spacing-sizes-control/index.js +100 -0
  135. package/build/components/spacing-sizes-control/index.js.map +1 -0
  136. package/build/components/spacing-sizes-control/input-controls.js +52 -0
  137. package/build/components/spacing-sizes-control/input-controls.js.map +1 -0
  138. package/build/components/spacing-sizes-control/linked-button.js +38 -0
  139. package/build/components/spacing-sizes-control/linked-button.js.map +1 -0
  140. package/build/components/spacing-sizes-control/spacing-input-control.js +208 -0
  141. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
  142. package/build/components/spacing-sizes-control/utils.js +202 -0
  143. package/build/components/spacing-sizes-control/utils.js.map +1 -0
  144. package/build/components/text-decoration-control/index.js +3 -1
  145. package/build/components/text-decoration-control/index.js.map +1 -1
  146. package/build/components/text-transform-control/index.js +3 -1
  147. package/build/components/text-transform-control/index.js.map +1 -1
  148. package/build/components/url-input/index.js +1 -1
  149. package/build/components/url-input/index.js.map +1 -1
  150. package/build/components/url-popover/image-url-input-ui.js +4 -1
  151. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  152. package/build/components/writing-flow/use-arrow-nav.js +4 -25
  153. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  154. package/build/components/writing-flow/use-drag-selection.js +9 -2
  155. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  156. package/build/components/writing-flow/use-multi-selection.js +4 -2
  157. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  158. package/build/components/writing-flow/use-select-all.js +3 -1
  159. package/build/components/writing-flow/use-select-all.js.map +1 -1
  160. package/build/components/writing-flow/use-selection-observer.js +10 -2
  161. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  162. package/build/components/writing-flow/use-tab-nav.js +1 -1
  163. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  164. package/build/hooks/border-radius.js +2 -7
  165. package/build/hooks/border-radius.js.map +1 -1
  166. package/build/hooks/border.js +2 -2
  167. package/build/hooks/border.js.map +1 -1
  168. package/build/hooks/color.js +4 -1
  169. package/build/hooks/color.js.map +1 -1
  170. package/build/hooks/dimensions.js +15 -0
  171. package/build/hooks/dimensions.js.map +1 -1
  172. package/build/hooks/duotone.js +4 -4
  173. package/build/hooks/duotone.js.map +1 -1
  174. package/build/hooks/gap.js +6 -4
  175. package/build/hooks/gap.js.map +1 -1
  176. package/build/hooks/generated-class-name.js +1 -7
  177. package/build/hooks/generated-class-name.js.map +1 -1
  178. package/build/hooks/layout.js +42 -15
  179. package/build/hooks/layout.js.map +1 -1
  180. package/build/hooks/margin.js +28 -12
  181. package/build/hooks/margin.js.map +1 -1
  182. package/build/hooks/padding.js +19 -8
  183. package/build/hooks/padding.js.map +1 -1
  184. package/build/hooks/style.js +40 -76
  185. package/build/hooks/style.js.map +1 -1
  186. package/build/layouts/constrained.js +215 -0
  187. package/build/layouts/constrained.js.map +1 -0
  188. package/build/layouts/flex.js +1 -1
  189. package/build/layouts/flex.js.map +1 -1
  190. package/build/layouts/flow.js +6 -145
  191. package/build/layouts/flow.js.map +1 -1
  192. package/build/layouts/index.js +3 -1
  193. package/build/layouts/index.js.map +1 -1
  194. package/build/layouts/utils.js +43 -0
  195. package/build/layouts/utils.js.map +1 -1
  196. package/build/store/actions.js +25 -3
  197. package/build/store/actions.js.map +1 -1
  198. package/build/store/selectors.js +4 -6
  199. package/build/store/selectors.js.map +1 -1
  200. package/build/utils/block-variation-transforms.js +15 -9
  201. package/build/utils/block-variation-transforms.js.map +1 -1
  202. package/build/utils/pasting.js +9 -1
  203. package/build/utils/pasting.js.map +1 -1
  204. package/build-module/components/block-alignment-control/use-available-alignments.js +1 -1
  205. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  206. package/build-module/components/block-edit-visually-button/index.js +35 -0
  207. package/build-module/components/block-edit-visually-button/index.js.map +1 -0
  208. package/build-module/components/block-list/block.js +13 -3
  209. package/build-module/components/block-list/block.js.map +1 -1
  210. package/build-module/components/block-list/index.native.js +1 -1
  211. package/build-module/components/block-list/index.native.js.map +1 -1
  212. package/build-module/components/block-lock/modal.js +2 -2
  213. package/build-module/components/block-lock/modal.js.map +1 -1
  214. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +2 -2
  215. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  216. package/build-module/components/block-mover/mover-description.js +97 -33
  217. package/build-module/components/block-mover/mover-description.js.map +1 -1
  218. package/build-module/components/block-popover/inbetween.js +5 -3
  219. package/build-module/components/block-popover/inbetween.js.map +1 -1
  220. package/build-module/components/block-settings-menu/index.js +3 -6
  221. package/build-module/components/block-settings-menu/index.js.map +1 -1
  222. package/build-module/components/block-settings-menu-controls/index.js +2 -2
  223. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  224. package/build-module/components/block-styles/index.js +4 -7
  225. package/build-module/components/block-styles/index.js.map +1 -1
  226. package/build-module/components/block-styles/preview.native.js +2 -3
  227. package/build-module/components/block-styles/preview.native.js.map +1 -1
  228. package/build-module/components/block-switcher/index.js +10 -16
  229. package/build-module/components/block-switcher/index.js.map +1 -1
  230. package/build-module/components/block-toolbar/index.js +4 -1
  231. package/build-module/components/block-toolbar/index.js.map +1 -1
  232. package/build-module/components/block-tools/block-selection-button.js +1 -7
  233. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  234. package/build-module/components/block-tools/index.js +4 -1
  235. package/build-module/components/block-tools/index.js.map +1 -1
  236. package/build-module/components/block-types-list/index.js +1 -1
  237. package/build-module/components/block-types-list/index.js.map +1 -1
  238. package/build-module/components/block-types-list/index.native.js +67 -25
  239. package/build-module/components/block-types-list/index.native.js.map +1 -1
  240. package/build-module/components/border-radius-control/all-input-control.js +32 -4
  241. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  242. package/build-module/components/border-radius-control/index.js +24 -8
  243. package/build-module/components/border-radius-control/index.js.map +1 -1
  244. package/build-module/components/border-radius-control/input-controls.js +22 -7
  245. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  246. package/build-module/components/border-radius-control/utils.js +13 -16
  247. package/build-module/components/border-radius-control/utils.js.map +1 -1
  248. package/build-module/components/colors/utils.js +7 -3
  249. package/build-module/components/colors/utils.js.map +1 -1
  250. package/build-module/components/colors/with-colors.js +16 -3
  251. package/build-module/components/colors/with-colors.js.map +1 -1
  252. package/build-module/components/colors-gradients/control.js +8 -4
  253. package/build-module/components/colors-gradients/control.js.map +1 -1
  254. package/build-module/components/colors-gradients/dropdown.js +10 -4
  255. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  256. package/build-module/components/copy-handler/index.js +7 -1
  257. package/build-module/components/copy-handler/index.js.map +1 -1
  258. package/build-module/components/date-format-picker/index.js +2 -6
  259. package/build-module/components/date-format-picker/index.js.map +1 -1
  260. package/build-module/components/duotone/components.js +5 -5
  261. package/build-module/components/duotone/components.js.map +1 -1
  262. package/build-module/components/font-appearance-control/index.js +7 -4
  263. package/build-module/components/font-appearance-control/index.js.map +1 -1
  264. package/build-module/components/font-family/index.js +1 -1
  265. package/build-module/components/font-family/index.js.map +1 -1
  266. package/build-module/components/font-sizes/with-font-sizes.js +16 -3
  267. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  268. package/build-module/components/image-editor/cropper.js +4 -3
  269. package/build-module/components/image-editor/cropper.js.map +1 -1
  270. package/build-module/components/image-editor/index.js +3 -1
  271. package/build-module/components/image-editor/index.js.map +1 -1
  272. package/build-module/components/image-size-control/index.js +3 -1
  273. package/build-module/components/image-size-control/index.js.map +1 -1
  274. package/build-module/components/index.js +2 -1
  275. package/build-module/components/index.js.map +1 -1
  276. package/build-module/components/index.native.js +1 -1
  277. package/build-module/components/index.native.js.map +1 -1
  278. package/build-module/components/inserter/block-types-tab.native.js +31 -15
  279. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  280. package/build-module/components/inserter/index.native.js +9 -2
  281. package/build-module/components/inserter/index.native.js.map +1 -1
  282. package/build-module/components/inserter/preview-panel.js +9 -9
  283. package/build-module/components/inserter/preview-panel.js.map +1 -1
  284. package/build-module/components/inserter/reusable-blocks-tab.native.js +6 -2
  285. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  286. package/build-module/components/inserter/search-items.js +19 -5
  287. package/build-module/components/inserter/search-items.js.map +1 -1
  288. package/build-module/components/inserter/search-results.native.js +6 -3
  289. package/build-module/components/inserter/search-results.native.js.map +1 -1
  290. package/build-module/components/inserter/utils.native.js +19 -0
  291. package/build-module/components/inserter/utils.native.js.map +1 -1
  292. package/build-module/components/inserter-list-item/index.js +5 -18
  293. package/build-module/components/inserter-list-item/index.js.map +1 -1
  294. package/build-module/components/letter-spacing-control/index.js +5 -3
  295. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  296. package/build-module/components/line-height-control/index.js +5 -3
  297. package/build-module/components/line-height-control/index.js.map +1 -1
  298. package/build-module/components/link-control/is-url-like.js +1 -6
  299. package/build-module/components/link-control/is-url-like.js.map +1 -1
  300. package/build-module/components/link-control/link-preview.js +0 -1
  301. package/build-module/components/link-control/link-preview.js.map +1 -1
  302. package/build-module/components/link-control/use-search-handler.js +1 -6
  303. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  304. package/build-module/components/list-view/block-select-button.js +5 -2
  305. package/build-module/components/list-view/block-select-button.js.map +1 -1
  306. package/build-module/components/list-view/branch.js +1 -6
  307. package/build-module/components/list-view/branch.js.map +1 -1
  308. package/build-module/components/list-view/expander.js +3 -2
  309. package/build-module/components/list-view/expander.js.map +1 -1
  310. package/build-module/components/list-view/use-block-selection.js +1 -6
  311. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  312. package/build-module/components/media-upload/index.native.js +9 -2
  313. package/build-module/components/media-upload/index.native.js.map +1 -1
  314. package/build-module/components/observe-typing/index.js +22 -8
  315. package/build-module/components/observe-typing/index.js.map +1 -1
  316. package/build-module/components/preview-options/index.js +2 -2
  317. package/build-module/components/preview-options/index.js.map +1 -1
  318. package/build-module/components/{use-no-recursive-renders → recursion-provider}/index.js +39 -19
  319. package/build-module/components/recursion-provider/index.js.map +1 -0
  320. package/build-module/components/rich-text/format-toolbar-container.js +58 -12
  321. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  322. package/build-module/components/rich-text/index.js +7 -2
  323. package/build-module/components/rich-text/index.js.map +1 -1
  324. package/build-module/components/rich-text/index.native.js +3 -1
  325. package/build-module/components/rich-text/index.native.js.map +1 -1
  326. package/build-module/components/rich-text/use-before-input-rules.js +96 -0
  327. package/build-module/components/rich-text/use-before-input-rules.js.map +1 -0
  328. package/build-module/components/rich-text/use-enter.js +0 -4
  329. package/build-module/components/rich-text/use-enter.js.map +1 -1
  330. package/build-module/components/rich-text/use-format-types.js +39 -22
  331. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  332. package/build-module/components/spacing-sizes-control/all-input-control.js +41 -0
  333. package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -0
  334. package/build-module/components/spacing-sizes-control/axial-input-controls.js +57 -0
  335. package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
  336. package/build-module/components/spacing-sizes-control/index.js +83 -0
  337. package/build-module/components/spacing-sizes-control/index.js.map +1 -0
  338. package/build-module/components/spacing-sizes-control/input-controls.js +41 -0
  339. package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -0
  340. package/build-module/components/spacing-sizes-control/linked-button.js +28 -0
  341. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -0
  342. package/build-module/components/spacing-sizes-control/spacing-input-control.js +192 -0
  343. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
  344. package/build-module/components/spacing-sizes-control/utils.js +174 -0
  345. package/build-module/components/spacing-sizes-control/utils.js.map +1 -0
  346. package/build-module/components/text-decoration-control/index.js +4 -2
  347. package/build-module/components/text-decoration-control/index.js.map +1 -1
  348. package/build-module/components/text-transform-control/index.js +4 -2
  349. package/build-module/components/text-transform-control/index.js.map +1 -1
  350. package/build-module/components/url-input/index.js +1 -1
  351. package/build-module/components/url-input/index.js.map +1 -1
  352. package/build-module/components/url-popover/image-url-input-ui.js +4 -1
  353. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  354. package/build-module/components/writing-flow/use-arrow-nav.js +5 -26
  355. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  356. package/build-module/components/writing-flow/use-drag-selection.js +9 -2
  357. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  358. package/build-module/components/writing-flow/use-multi-selection.js +4 -2
  359. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  360. package/build-module/components/writing-flow/use-select-all.js +3 -1
  361. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  362. package/build-module/components/writing-flow/use-selection-observer.js +10 -2
  363. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  364. package/build-module/components/writing-flow/use-tab-nav.js +1 -1
  365. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  366. package/build-module/hooks/border-radius.js +2 -7
  367. package/build-module/hooks/border-radius.js.map +1 -1
  368. package/build-module/hooks/border.js +2 -2
  369. package/build-module/hooks/border.js.map +1 -1
  370. package/build-module/hooks/color.js +4 -1
  371. package/build-module/hooks/color.js.map +1 -1
  372. package/build-module/hooks/dimensions.js +13 -0
  373. package/build-module/hooks/dimensions.js.map +1 -1
  374. package/build-module/hooks/duotone.js +4 -4
  375. package/build-module/hooks/duotone.js.map +1 -1
  376. package/build-module/hooks/gap.js +3 -2
  377. package/build-module/hooks/gap.js.map +1 -1
  378. package/build-module/hooks/generated-class-name.js +1 -6
  379. package/build-module/hooks/generated-class-name.js.map +1 -1
  380. package/build-module/hooks/layout.js +42 -15
  381. package/build-module/hooks/layout.js.map +1 -1
  382. package/build-module/hooks/margin.js +26 -12
  383. package/build-module/hooks/margin.js.map +1 -1
  384. package/build-module/hooks/padding.js +17 -8
  385. package/build-module/hooks/padding.js.map +1 -1
  386. package/build-module/hooks/style.js +44 -81
  387. package/build-module/hooks/style.js.map +1 -1
  388. package/build-module/layouts/constrained.js +197 -0
  389. package/build-module/layouts/constrained.js.map +1 -0
  390. package/build-module/layouts/flex.js +1 -1
  391. package/build-module/layouts/flex.js.map +1 -1
  392. package/build-module/layouts/flow.js +7 -140
  393. package/build-module/layouts/flow.js.map +1 -1
  394. package/build-module/layouts/index.js +2 -1
  395. package/build-module/layouts/index.js.map +1 -1
  396. package/build-module/layouts/utils.js +40 -0
  397. package/build-module/layouts/utils.js.map +1 -1
  398. package/build-module/store/actions.js +25 -3
  399. package/build-module/store/actions.js.map +1 -1
  400. package/build-module/store/selectors.js +5 -7
  401. package/build-module/store/selectors.js.map +1 -1
  402. package/build-module/utils/block-variation-transforms.js +14 -7
  403. package/build-module/utils/block-variation-transforms.js.map +1 -1
  404. package/build-module/utils/pasting.js +9 -1
  405. package/build-module/utils/pasting.js.map +1 -1
  406. package/build-style/style-rtl.css +154 -27
  407. package/build-style/style.css +154 -27
  408. package/package.json +30 -28
  409. package/src/components/block-alignment-control/use-available-alignments.js +1 -1
  410. package/src/components/block-edit-visually-button/index.js +39 -0
  411. package/src/components/block-list/block.js +13 -2
  412. package/src/components/block-list/index.native.js +1 -1
  413. package/src/components/block-lock/modal.js +5 -5
  414. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  415. package/src/components/block-mover/mover-description.js +131 -48
  416. package/src/components/block-mover/test/mover-description.js +55 -3
  417. package/src/components/block-popover/inbetween.js +5 -1
  418. package/src/components/block-popover/style.scss +25 -2
  419. package/src/components/block-settings-menu/index.js +11 -15
  420. package/src/components/block-settings-menu-controls/index.js +2 -2
  421. package/src/components/block-styles/index.js +4 -7
  422. package/src/components/block-styles/preview.native.js +2 -2
  423. package/src/components/block-styles/style.scss +10 -0
  424. package/src/components/block-switcher/index.js +9 -13
  425. package/src/components/block-switcher/test/index.js +1 -0
  426. package/src/components/block-toolbar/index.js +2 -0
  427. package/src/components/block-tools/block-selection-button.js +0 -5
  428. package/src/components/block-tools/index.js +4 -1
  429. package/src/components/block-types-list/index.js +1 -1
  430. package/src/components/block-types-list/index.native.js +76 -24
  431. package/src/components/block-types-list/style.native.scss +18 -0
  432. package/src/components/border-radius-control/all-input-control.js +41 -4
  433. package/src/components/border-radius-control/index.js +29 -6
  434. package/src/components/border-radius-control/input-controls.js +40 -13
  435. package/src/components/border-radius-control/test/utils.js +22 -60
  436. package/src/components/border-radius-control/utils.js +12 -16
  437. package/src/components/color-palette/test/__snapshots__/control.js.snap +91 -79
  438. package/src/components/colors/test/__snapshots__/with-colors.js.snap +1 -1
  439. package/src/components/colors/test/with-colors.js +1 -1
  440. package/src/components/colors/utils.js +5 -2
  441. package/src/components/colors/with-colors.js +11 -1
  442. package/src/components/colors-gradients/control.js +13 -8
  443. package/src/components/colors-gradients/dropdown.js +14 -3
  444. package/src/components/colors-gradients/style.scss +33 -12
  445. package/src/components/colors-gradients/test/control.js +3 -3
  446. package/src/components/copy-handler/index.js +18 -0
  447. package/src/components/date-format-picker/index.js +12 -14
  448. package/src/components/date-format-picker/style.scss +0 -4
  449. package/src/components/duotone/components.js +5 -5
  450. package/src/components/duotone-control/style.scss +0 -4
  451. package/src/components/font-appearance-control/index.js +3 -0
  452. package/src/components/font-appearance-control/style.scss +0 -2
  453. package/src/components/font-family/index.js +1 -1
  454. package/src/components/font-sizes/with-font-sizes.js +11 -1
  455. package/src/components/image-editor/cropper.js +9 -3
  456. package/src/components/image-editor/index.js +2 -0
  457. package/src/components/image-size-control/README.md +7 -0
  458. package/src/components/image-size-control/index.js +2 -0
  459. package/src/components/index.js +5 -1
  460. package/src/components/index.native.js +4 -1
  461. package/src/components/inserter/block-types-tab.native.js +42 -21
  462. package/src/components/inserter/index.native.js +7 -2
  463. package/src/components/inserter/preview-panel.js +6 -14
  464. package/src/components/inserter/reusable-blocks-tab.native.js +4 -2
  465. package/src/components/inserter/search-items.js +17 -5
  466. package/src/components/inserter/search-results.native.js +4 -2
  467. package/src/components/inserter/test/block-types-tab.native.js +2 -0
  468. package/src/components/inserter/test/utils.native.js +37 -0
  469. package/src/components/inserter/utils.native.js +11 -0
  470. package/src/components/inserter-list-item/index.js +5 -18
  471. package/src/components/letter-spacing-control/index.js +2 -0
  472. package/src/components/line-height-control/index.js +2 -0
  473. package/src/components/link-control/is-url-like.js +1 -6
  474. package/src/components/link-control/link-preview.js +0 -1
  475. package/src/components/link-control/test/index.js +540 -893
  476. package/src/components/link-control/use-search-handler.js +1 -6
  477. package/src/components/list-view/block-select-button.js +7 -2
  478. package/src/components/list-view/branch.js +1 -6
  479. package/src/components/list-view/expander.js +4 -2
  480. package/src/components/list-view/style.scss +11 -4
  481. package/src/components/list-view/use-block-selection.js +2 -8
  482. package/src/components/media-replace-flow/style.scss +1 -0
  483. package/src/components/media-upload/index.native.js +7 -3
  484. package/src/components/observe-typing/index.js +17 -14
  485. package/src/components/preview-options/index.js +2 -2
  486. package/src/components/{use-no-recursive-renders → recursion-provider}/index.js +39 -28
  487. package/src/components/{use-no-recursive-renders/test/use-no-recursive-renders.js → recursion-provider/test/index.js} +5 -6
  488. package/src/components/rich-text/README.md +13 -1
  489. package/src/components/rich-text/format-toolbar-container.js +63 -14
  490. package/src/components/rich-text/index.js +3 -0
  491. package/src/components/rich-text/index.native.js +2 -0
  492. package/src/components/rich-text/use-before-input-rules.js +91 -0
  493. package/src/components/rich-text/use-enter.js +0 -3
  494. package/src/components/rich-text/use-format-types.js +38 -17
  495. package/src/components/spacing-sizes-control/all-input-control.js +40 -0
  496. package/src/components/spacing-sizes-control/axial-input-controls.js +62 -0
  497. package/src/components/spacing-sizes-control/index.js +91 -0
  498. package/src/components/spacing-sizes-control/input-controls.js +46 -0
  499. package/src/components/spacing-sizes-control/linked-button.js +25 -0
  500. package/src/components/spacing-sizes-control/spacing-input-control.js +280 -0
  501. package/src/components/spacing-sizes-control/style.scss +122 -0
  502. package/src/components/spacing-sizes-control/test/utils.js +156 -0
  503. package/src/components/spacing-sizes-control/utils.js +195 -0
  504. package/src/components/text-decoration-control/index.js +4 -2
  505. package/src/components/text-transform-control/index.js +4 -2
  506. package/src/components/url-input/index.js +1 -1
  507. package/src/components/url-input/style.scss +2 -2
  508. package/src/components/url-popover/image-url-input-ui.js +3 -0
  509. package/src/components/url-popover/style.scss +0 -3
  510. package/src/components/writing-flow/use-arrow-nav.js +4 -33
  511. package/src/components/writing-flow/use-drag-selection.js +7 -1
  512. package/src/components/writing-flow/use-multi-selection.js +4 -1
  513. package/src/components/writing-flow/use-select-all.js +2 -1
  514. package/src/components/writing-flow/use-selection-observer.js +10 -2
  515. package/src/components/writing-flow/use-tab-nav.js +1 -1
  516. package/src/hooks/border-radius.js +2 -6
  517. package/src/hooks/border.js +2 -2
  518. package/src/hooks/color.js +13 -3
  519. package/src/hooks/dimensions.js +15 -0
  520. package/src/hooks/duotone.js +4 -4
  521. package/src/hooks/gap.js +7 -2
  522. package/src/hooks/generated-class-name.js +6 -9
  523. package/src/hooks/layout.js +66 -18
  524. package/src/hooks/margin.js +49 -17
  525. package/src/hooks/padding.js +41 -14
  526. package/src/hooks/style.js +42 -86
  527. package/src/hooks/test/gap.js +22 -0
  528. package/src/hooks/typography.scss +0 -1
  529. package/src/layouts/constrained.js +217 -0
  530. package/src/layouts/flex.js +1 -1
  531. package/src/layouts/flow.js +6 -151
  532. package/src/layouts/index.js +2 -1
  533. package/src/layouts/test/constrained.js +21 -0
  534. package/src/layouts/utils.js +34 -0
  535. package/src/store/actions.js +32 -4
  536. package/src/store/selectors.js +5 -4
  537. package/src/style.scss +1 -0
  538. package/src/utils/block-variation-transforms.js +13 -6
  539. package/src/utils/pasting.js +10 -1
  540. package/src/utils/test/block-variation-transforms.js +24 -0
  541. package/src/utils/test/pasting.js +10 -0
  542. package/build/components/block-settings-menu/block-edit-visually-button.js +0 -70
  543. package/build/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
  544. package/build/components/use-no-recursive-renders/index.js.map +0 -1
  545. package/build-module/components/block-settings-menu/block-edit-visually-button.js +0 -56
  546. package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
  547. package/build-module/components/use-no-recursive-renders/index.js.map +0 -1
  548. package/src/components/block-settings-menu/block-edit-visually-button.js +0 -52
@@ -5,14 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.__experimentalGetMatchingVariation = void 0;
7
7
 
8
- var _lodash = require("lodash");
9
-
10
- /**
11
- * External dependencies
12
- */
13
-
14
8
  /** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */
9
+ function matchesAttributes(blockAttributes, variation) {
10
+ return Object.entries(variation).every(_ref => {
11
+ let [key, value] = _ref;
15
12
 
13
+ if (typeof value === 'object' && typeof blockAttributes[key] === 'object') {
14
+ return matchesAttributes(blockAttributes[key], value);
15
+ }
16
+
17
+ return blockAttributes[key] === value;
18
+ });
19
+ }
16
20
  /**
17
21
  * Matches the provided block variations with a block's attributes. If no match
18
22
  * or more than one matches are found it returns `undefined`. If a single match is
@@ -25,14 +29,16 @@ var _lodash = require("lodash");
25
29
  * @param {WPBlockVariation[]} variations - A list of block variations to test for a match.
26
30
  * @return {?WPBlockVariation} - If a match is found returns it. If not or more than one matches are found returns `undefined`.
27
31
  */
32
+
33
+
28
34
  const __experimentalGetMatchingVariation = (blockAttributes, variations) => {
29
35
  if (!variations || !blockAttributes) return;
30
- const matches = variations.filter(_ref => {
36
+ const matches = variations.filter(_ref2 => {
31
37
  let {
32
38
  attributes
33
- } = _ref;
39
+ } = _ref2;
34
40
  if (!attributes || !Object.keys(attributes).length) return false;
35
- return (0, _lodash.isMatch)(blockAttributes, attributes);
41
+ return matchesAttributes(blockAttributes, attributes);
36
42
  });
37
43
  if (matches.length !== 1) return;
38
44
  return matches[0];
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/utils/block-variation-transforms.js"],"names":["__experimentalGetMatchingVariation","blockAttributes","variations","matches","filter","attributes","Object","keys","length"],"mappings":";;;;;;;AAGA;;AAHA;AACA;AACA;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,kCAAkC,GAAG,CACjDC,eADiD,EAEjDC,UAFiD,KAG7C;AACJ,MAAK,CAAEA,UAAF,IAAgB,CAAED,eAAvB,EAAyC;AACzC,QAAME,OAAO,GAAGD,UAAU,CAACE,MAAX,CAAmB,QAAsB;AAAA,QAApB;AAAEC,MAAAA;AAAF,KAAoB;AACxD,QAAK,CAAEA,UAAF,IAAgB,CAAEC,MAAM,CAACC,IAAP,CAAaF,UAAb,EAA0BG,MAAjD,EAA0D,OAAO,KAAP;AAC1D,WAAO,qBAASP,eAAT,EAA0BI,UAA1B,CAAP;AACA,GAHe,CAAhB;AAIA,MAAKF,OAAO,CAACK,MAAR,KAAmB,CAAxB,EAA4B;AAC5B,SAAOL,OAAO,CAAE,CAAF,CAAd;AACA,CAXM","sourcesContent":["/**\n * External dependencies\n */\nimport { isMatch } from 'lodash';\n\n/** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */\n\n/**\n * Matches the provided block variations with a block's attributes. If no match\n * or more than one matches are found it returns `undefined`. If a single match is\n * found it returns it.\n *\n * This is a simple implementation for now as it takes into account only the attributes\n * of a block variation and not `InnerBlocks`.\n *\n * @param {Object} blockAttributes - The block attributes to try to find a match.\n * @param {WPBlockVariation[]} variations - A list of block variations to test for a match.\n * @return {?WPBlockVariation} - If a match is found returns it. If not or more than one matches are found returns `undefined`.\n */\nexport const __experimentalGetMatchingVariation = (\n\tblockAttributes,\n\tvariations\n) => {\n\tif ( ! variations || ! blockAttributes ) return;\n\tconst matches = variations.filter( ( { attributes } ) => {\n\t\tif ( ! attributes || ! Object.keys( attributes ).length ) return false;\n\t\treturn isMatch( blockAttributes, attributes );\n\t} );\n\tif ( matches.length !== 1 ) return;\n\treturn matches[ 0 ];\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/utils/block-variation-transforms.js"],"names":["matchesAttributes","blockAttributes","variation","Object","entries","every","key","value","__experimentalGetMatchingVariation","variations","matches","filter","attributes","keys","length"],"mappings":";;;;;;;AAAA;AAEA,SAASA,iBAAT,CAA4BC,eAA5B,EAA6CC,SAA7C,EAAyD;AACxD,SAAOC,MAAM,CAACC,OAAP,CAAgBF,SAAhB,EAA4BG,KAA5B,CAAmC,QAAsB;AAAA,QAApB,CAAEC,GAAF,EAAOC,KAAP,CAAoB;;AAC/D,QACC,OAAOA,KAAP,KAAiB,QAAjB,IACA,OAAON,eAAe,CAAEK,GAAF,CAAtB,KAAkC,QAFnC,EAGE;AACD,aAAON,iBAAiB,CAAEC,eAAe,CAAEK,GAAF,CAAjB,EAA0BC,KAA1B,CAAxB;AACA;;AACD,WAAON,eAAe,CAAEK,GAAF,CAAf,KAA2BC,KAAlC;AACA,GARM,CAAP;AASA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,kCAAkC,GAAG,CACjDP,eADiD,EAEjDQ,UAFiD,KAG7C;AACJ,MAAK,CAAEA,UAAF,IAAgB,CAAER,eAAvB,EAAyC;AACzC,QAAMS,OAAO,GAAGD,UAAU,CAACE,MAAX,CAAmB,SAAsB;AAAA,QAApB;AAAEC,MAAAA;AAAF,KAAoB;AACxD,QAAK,CAAEA,UAAF,IAAgB,CAAET,MAAM,CAACU,IAAP,CAAaD,UAAb,EAA0BE,MAAjD,EAA0D,OAAO,KAAP;AAC1D,WAAOd,iBAAiB,CAAEC,eAAF,EAAmBW,UAAnB,CAAxB;AACA,GAHe,CAAhB;AAIA,MAAKF,OAAO,CAACI,MAAR,KAAmB,CAAxB,EAA4B;AAC5B,SAAOJ,OAAO,CAAE,CAAF,CAAd;AACA,CAXM","sourcesContent":["/** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */\n\nfunction matchesAttributes( blockAttributes, variation ) {\n\treturn Object.entries( variation ).every( ( [ key, value ] ) => {\n\t\tif (\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof blockAttributes[ key ] === 'object'\n\t\t) {\n\t\t\treturn matchesAttributes( blockAttributes[ key ], value );\n\t\t}\n\t\treturn blockAttributes[ key ] === value;\n\t} );\n}\n\n/**\n * Matches the provided block variations with a block's attributes. If no match\n * or more than one matches are found it returns `undefined`. If a single match is\n * found it returns it.\n *\n * This is a simple implementation for now as it takes into account only the attributes\n * of a block variation and not `InnerBlocks`.\n *\n * @param {Object} blockAttributes - The block attributes to try to find a match.\n * @param {WPBlockVariation[]} variations - A list of block variations to test for a match.\n * @return {?WPBlockVariation} - If a match is found returns it. If not or more than one matches are found returns `undefined`.\n */\nexport const __experimentalGetMatchingVariation = (\n\tblockAttributes,\n\tvariations\n) => {\n\tif ( ! variations || ! blockAttributes ) return;\n\tconst matches = variations.filter( ( { attributes } ) => {\n\t\tif ( ! attributes || ! Object.keys( attributes ).length ) return false;\n\t\treturn matchesAttributes( blockAttributes, attributes );\n\t} );\n\tif ( matches.length !== 1 ) return;\n\treturn matches[ 0 ];\n};\n"]}
@@ -83,7 +83,15 @@ function shouldDismissPastedFiles(files, html
83
83
  // other elements found, like <figure>, but we assume that the user's
84
84
  // intention is to paste the actual image file.
85
85
  const IMAGE_TAG = /<\s*img\b/gi;
86
- return ((_html$match = html.match(IMAGE_TAG)) === null || _html$match === void 0 ? void 0 : _html$match.length) !== 1;
86
+ if (((_html$match = html.match(IMAGE_TAG)) === null || _html$match === void 0 ? void 0 : _html$match.length) !== 1) return true; // Even when there is exactly one <img> tag in the HTML payload, we
87
+ // choose to weed out local images, i.e. those whose source starts with
88
+ // "file://". These payloads occur in specific configurations, such as
89
+ // when copying an entire document from Microsoft Word, that contains
90
+ // text and exactly one image, and pasting that content using Google
91
+ // Chrome.
92
+
93
+ const IMG_WITH_LOCAL_SRC = /<\s*img\b[^>]*\bsrc="file:\/\//i;
94
+ if (html.match(IMG_WITH_LOCAL_SRC)) return true;
87
95
  }
88
96
 
89
97
  return false;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/utils/pasting.js"],"names":["getPasteEventData","clipboardData","plainText","html","getData","error1","error2","files","filter","type","test","length","shouldDismissPastedFiles","map","file","join","indexOf","IMAGE_TAG","match"],"mappings":";;;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;AAIO,SAASA,iBAAT,OAAgD;AAAA,MAApB;AAAEC,IAAAA;AAAF,GAAoB;AACtD,MAAIC,SAAS,GAAG,EAAhB;AACA,MAAIC,IAAI,GAAG,EAAX,CAFsD,CAItD;AACA;AACA;;AACA,MAAI;AACHD,IAAAA,SAAS,GAAGD,aAAa,CAACG,OAAd,CAAuB,YAAvB,CAAZ;AACAD,IAAAA,IAAI,GAAGF,aAAa,CAACG,OAAd,CAAuB,WAAvB,CAAP;AACA,GAHD,CAGE,OAAQC,MAAR,EAAiB;AAClB,QAAI;AACHF,MAAAA,IAAI,GAAGF,aAAa,CAACG,OAAd,CAAuB,MAAvB,CAAP;AACA,KAFD,CAEE,OAAQE,MAAR,EAAiB;AAClB;AACA;AACA;AACA;AACA;AACD;;AAED,QAAMC,KAAK,GAAG,mCAA0BN,aAA1B,EAA0CO,MAA1C,CACb;AAAA,QAAE;AAAEC,MAAAA;AAAF,KAAF;AAAA,WAAgB,kCAAkCC,IAAlC,CAAwCD,IAAxC,CAAhB;AAAA,GADa,CAAd;;AAIA,MACCF,KAAK,CAACI,MAAN,IACA,CAAEC,wBAAwB,CAAEL,KAAF,EAASJ,IAAT,EAAeD,SAAf,CAF3B,EAGE;AACDC,IAAAA,IAAI,GAAGI,KAAK,CACVM,GADK,CACEC,IAAF,IAAa,aAAa,yBAAeA,IAAf,CAAuB,IADjD,EAELC,IAFK,CAEC,EAFD,CAAP;AAGAb,IAAAA,SAAS,GAAG,EAAZ;AACA;;AAED,SAAO;AAAEC,IAAAA,IAAF;AAAQD,IAAAA;AAAR,GAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASU,wBAAT,CAAmCL,KAAnC,EAA0CJ;AAAK;AAA/C,EAAkE;AACxE;AACA;AACA,MACCA,IAAI,IACJ,CAAAI,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEI,MAAP,MAAkB,CADlB,IAEAJ,KAAK,CAAE,CAAF,CAAL,CAAWE,IAAX,CAAgBO,OAAhB,CAAyB,QAAzB,MAAwC,CAHzC,EAIE;AAAA;;AACD;AACA;AACA;AACA;AACA,UAAMC,SAAS,GAAG,aAAlB;AACA,WAAO,gBAAAd,IAAI,CAACe,KAAL,CAAYD,SAAZ,6DAAyBN,MAAzB,MAAoC,CAA3C;AACA;;AAED,SAAO,KAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createBlobURL } from '@wordpress/blob';\nimport { getFilesFromDataTransfer } from '@wordpress/dom';\n\nexport function getPasteEventData( { clipboardData } ) {\n\tlet plainText = '';\n\tlet html = '';\n\n\t// IE11 only supports `Text` as an argument for `getData` and will\n\t// otherwise throw an invalid argument error, so we try the standard\n\t// arguments first, then fallback to `Text` if they fail.\n\ttry {\n\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\thtml = clipboardData.getData( 'text/html' );\n\t} catch ( error1 ) {\n\t\ttry {\n\t\t\thtml = clipboardData.getData( 'Text' );\n\t\t} catch ( error2 ) {\n\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t// behaviour.\n\t\t\treturn;\n\t\t}\n\t}\n\n\tconst files = getFilesFromDataTransfer( clipboardData ).filter(\n\t\t( { type } ) => /^image\\/(?:jpe?g|png|gif|webp)$/.test( type )\n\t);\n\n\tif (\n\t\tfiles.length &&\n\t\t! shouldDismissPastedFiles( files, html, plainText )\n\t) {\n\t\thtml = files\n\t\t\t.map( ( file ) => `<img src=\"${ createBlobURL( file ) }\">` )\n\t\t\t.join( '' );\n\t\tplainText = '';\n\t}\n\n\treturn { html, plainText };\n}\n\n/**\n * Given a collection of DataTransfer files and HTML and plain text strings,\n * determine whether the files are to be dismissed in favor of the HTML.\n *\n * Certain office-type programs, like Microsoft Word or Apple Numbers,\n * will, upon copy, generate a screenshot of the content being copied and\n * attach it to the clipboard alongside the actual rich text that the user\n * sought to copy. In those cases, we should let Gutenberg handle the rich text\n * content and not the screenshot, since this allows Gutenberg to insert\n * meaningful blocks, like paragraphs, lists or even tables.\n *\n * @param {File[]} files File objects obtained from a paste event\n * @param {string} html HTML content obtained from a paste event\n * @return {boolean} True if the files should be dismissed\n */\nexport function shouldDismissPastedFiles( files, html /*, plainText */ ) {\n\t// The question is only relevant when there is actual HTML content and when\n\t// there is exactly one image file.\n\tif (\n\t\thtml &&\n\t\tfiles?.length === 1 &&\n\t\tfiles[ 0 ].type.indexOf( 'image/' ) === 0\n\t) {\n\t\t// A single <img> tag found in the HTML source suggests that the\n\t\t// content being pasted revolves around an image. Sometimes there are\n\t\t// other elements found, like <figure>, but we assume that the user's\n\t\t// intention is to paste the actual image file.\n\t\tconst IMAGE_TAG = /<\\s*img\\b/gi;\n\t\treturn html.match( IMAGE_TAG )?.length !== 1;\n\t}\n\n\treturn false;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/utils/pasting.js"],"names":["getPasteEventData","clipboardData","plainText","html","getData","error1","error2","files","filter","type","test","length","shouldDismissPastedFiles","map","file","join","indexOf","IMAGE_TAG","match","IMG_WITH_LOCAL_SRC"],"mappings":";;;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;AAIO,SAASA,iBAAT,OAAgD;AAAA,MAApB;AAAEC,IAAAA;AAAF,GAAoB;AACtD,MAAIC,SAAS,GAAG,EAAhB;AACA,MAAIC,IAAI,GAAG,EAAX,CAFsD,CAItD;AACA;AACA;;AACA,MAAI;AACHD,IAAAA,SAAS,GAAGD,aAAa,CAACG,OAAd,CAAuB,YAAvB,CAAZ;AACAD,IAAAA,IAAI,GAAGF,aAAa,CAACG,OAAd,CAAuB,WAAvB,CAAP;AACA,GAHD,CAGE,OAAQC,MAAR,EAAiB;AAClB,QAAI;AACHF,MAAAA,IAAI,GAAGF,aAAa,CAACG,OAAd,CAAuB,MAAvB,CAAP;AACA,KAFD,CAEE,OAAQE,MAAR,EAAiB;AAClB;AACA;AACA;AACA;AACA;AACD;;AAED,QAAMC,KAAK,GAAG,mCAA0BN,aAA1B,EAA0CO,MAA1C,CACb;AAAA,QAAE;AAAEC,MAAAA;AAAF,KAAF;AAAA,WAAgB,kCAAkCC,IAAlC,CAAwCD,IAAxC,CAAhB;AAAA,GADa,CAAd;;AAIA,MACCF,KAAK,CAACI,MAAN,IACA,CAAEC,wBAAwB,CAAEL,KAAF,EAASJ,IAAT,EAAeD,SAAf,CAF3B,EAGE;AACDC,IAAAA,IAAI,GAAGI,KAAK,CACVM,GADK,CACEC,IAAF,IAAa,aAAa,yBAAeA,IAAf,CAAuB,IADjD,EAELC,IAFK,CAEC,EAFD,CAAP;AAGAb,IAAAA,SAAS,GAAG,EAAZ;AACA;;AAED,SAAO;AAAEC,IAAAA,IAAF;AAAQD,IAAAA;AAAR,GAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASU,wBAAT,CAAmCL,KAAnC,EAA0CJ;AAAK;AAA/C,EAAkE;AACxE;AACA;AACA,MACCA,IAAI,IACJ,CAAAI,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEI,MAAP,MAAkB,CADlB,IAEAJ,KAAK,CAAE,CAAF,CAAL,CAAWE,IAAX,CAAgBO,OAAhB,CAAyB,QAAzB,MAAwC,CAHzC,EAIE;AAAA;;AACD;AACA;AACA;AACA;AACA,UAAMC,SAAS,GAAG,aAAlB;AACA,QAAK,gBAAAd,IAAI,CAACe,KAAL,CAAYD,SAAZ,6DAAyBN,MAAzB,MAAoC,CAAzC,EAA6C,OAAO,IAAP,CAN5C,CAQD;AACA;AACA;AACA;AACA;AACA;;AACA,UAAMQ,kBAAkB,GAAG,iCAA3B;AACA,QAAKhB,IAAI,CAACe,KAAL,CAAYC,kBAAZ,CAAL,EAAwC,OAAO,IAAP;AACxC;;AAED,SAAO,KAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createBlobURL } from '@wordpress/blob';\nimport { getFilesFromDataTransfer } from '@wordpress/dom';\n\nexport function getPasteEventData( { clipboardData } ) {\n\tlet plainText = '';\n\tlet html = '';\n\n\t// IE11 only supports `Text` as an argument for `getData` and will\n\t// otherwise throw an invalid argument error, so we try the standard\n\t// arguments first, then fallback to `Text` if they fail.\n\ttry {\n\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\thtml = clipboardData.getData( 'text/html' );\n\t} catch ( error1 ) {\n\t\ttry {\n\t\t\thtml = clipboardData.getData( 'Text' );\n\t\t} catch ( error2 ) {\n\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t// behaviour.\n\t\t\treturn;\n\t\t}\n\t}\n\n\tconst files = getFilesFromDataTransfer( clipboardData ).filter(\n\t\t( { type } ) => /^image\\/(?:jpe?g|png|gif|webp)$/.test( type )\n\t);\n\n\tif (\n\t\tfiles.length &&\n\t\t! shouldDismissPastedFiles( files, html, plainText )\n\t) {\n\t\thtml = files\n\t\t\t.map( ( file ) => `<img src=\"${ createBlobURL( file ) }\">` )\n\t\t\t.join( '' );\n\t\tplainText = '';\n\t}\n\n\treturn { html, plainText };\n}\n\n/**\n * Given a collection of DataTransfer files and HTML and plain text strings,\n * determine whether the files are to be dismissed in favor of the HTML.\n *\n * Certain office-type programs, like Microsoft Word or Apple Numbers,\n * will, upon copy, generate a screenshot of the content being copied and\n * attach it to the clipboard alongside the actual rich text that the user\n * sought to copy. In those cases, we should let Gutenberg handle the rich text\n * content and not the screenshot, since this allows Gutenberg to insert\n * meaningful blocks, like paragraphs, lists or even tables.\n *\n * @param {File[]} files File objects obtained from a paste event\n * @param {string} html HTML content obtained from a paste event\n * @return {boolean} True if the files should be dismissed\n */\nexport function shouldDismissPastedFiles( files, html /*, plainText */ ) {\n\t// The question is only relevant when there is actual HTML content and when\n\t// there is exactly one image file.\n\tif (\n\t\thtml &&\n\t\tfiles?.length === 1 &&\n\t\tfiles[ 0 ].type.indexOf( 'image/' ) === 0\n\t) {\n\t\t// A single <img> tag found in the HTML source suggests that the\n\t\t// content being pasted revolves around an image. Sometimes there are\n\t\t// other elements found, like <figure>, but we assume that the user's\n\t\t// intention is to paste the actual image file.\n\t\tconst IMAGE_TAG = /<\\s*img\\b/gi;\n\t\tif ( html.match( IMAGE_TAG )?.length !== 1 ) return true;\n\n\t\t// Even when there is exactly one <img> tag in the HTML payload, we\n\t\t// choose to weed out local images, i.e. those whose source starts with\n\t\t// \"file://\". These payloads occur in specific configurations, such as\n\t\t// when copying an entire document from Microsoft Word, that contains\n\t\t// text and exactly one image, and pasting that content using Google\n\t\t// Chrome.\n\t\tconst IMG_WITH_LOCAL_SRC = /<\\s*img\\b[^>]*\\bsrc=\"file:\\/\\//i;\n\t\tif ( html.match( IMG_WITH_LOCAL_SRC ) ) return true;\n\t}\n\n\treturn false;\n}\n"]}
@@ -53,7 +53,7 @@ export default function useAvailableAlignments() {
53
53
  } // Starting here, it's the fallback for themes not supporting the layout config.
54
54
 
55
55
 
56
- if (layoutType.name !== 'default') {
56
+ if (layoutType.name !== 'default' && layoutType.name !== 'constrained') {
57
57
  return [];
58
58
  }
59
59
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-alignment-control/use-available-alignments.js"],"names":["useSelect","useLayout","store","blockEditorStore","getLayoutType","DEFAULT_CONTROLS","WIDE_CONTROLS","useAvailableAlignments","controls","includes","wideControlsEnabled","themeSupportsLayout","select","getSettings","settings","alignWide","supportsLayout","layout","layoutType","type","layoutAlignments","getAlignments","alignments","filter","name","alignmentName","length","availableAlignments","enabledControls","control","map","enabledControl"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,sBAA1B;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,aAAT,QAA8B,eAA9B;AAEA,MAAMC,gBAAgB,GAAG,CAAE,MAAF,EAAU,MAAV,EAAkB,QAAlB,EAA4B,OAA5B,EAAqC,MAArC,EAA6C,MAA7C,CAAzB;AACA,MAAMC,aAAa,GAAG,CAAE,MAAF,EAAU,MAAV,CAAtB;AAEA,eAAe,SAASC,sBAAT,GAA+D;AAAA,MAA9BC,QAA8B,uEAAnBH,gBAAmB;;AAC7E;AACA,MAAK,CAAEG,QAAQ,CAACC,QAAT,CAAmB,MAAnB,CAAP,EAAqC;AACpCD,IAAAA,QAAQ,GAAG,CAAE,MAAF,EAAU,GAAGA,QAAb,CAAX;AACA;;AACD,QAAM;AAAEE,IAAAA,mBAAmB,GAAG,KAAxB;AAA+BC,IAAAA;AAA/B,MAAuDX,SAAS,CACnEY,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAkBD,MAAM,CAAET,gBAAF,CAA9B;AACA,UAAMW,QAAQ,GAAGD,WAAW,EAA5B;AACA,WAAO;AACNH,MAAAA,mBAAmB,EAAEI,QAAQ,CAACC,SADxB;AAENJ,MAAAA,mBAAmB,EAAEG,QAAQ,CAACE;AAFxB,KAAP;AAIA,GARoE,EASrE,EATqE,CAAtE;AAWA,QAAMC,MAAM,GAAGhB,SAAS,EAAxB;AACA,QAAMiB,UAAU,GAAGd,aAAa,CAAEa,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEE,IAAV,CAAhC;AACA,QAAMC,gBAAgB,GAAGF,UAAU,CAACG,aAAX,CAA0BJ,MAA1B,CAAzB;;AAEA,MAAKN,mBAAL,EAA2B;AAC1B,UAAMW,UAAU,GAAGF,gBAAgB,CAACG,MAAjB,CAClB;AAAA,UAAE;AAAEC,QAAAA,IAAI,EAAEC;AAAR,OAAF;AAAA,aAA+BjB,QAAQ,CAACC,QAAT,CAAmBgB,aAAnB,CAA/B;AAAA,KADkB,CAAnB,CAD0B,CAI1B;AACA;;AACA,QAAKH,UAAU,CAACI,MAAX,KAAsB,CAAtB,IAA2BJ,UAAU,CAAE,CAAF,CAAV,CAAgBE,IAAhB,KAAyB,MAAzD,EAAkE;AACjE,aAAO,EAAP;AACA;;AACD,WAAOF,UAAP;AACA,GA9B4E,CAgC7E;;;AACA,MAAKJ,UAAU,CAACM,IAAX,KAAoB,SAAzB,EAAqC;AACpC,WAAO,EAAP;AACA;;AACD,QAAM;AAAEF,IAAAA,UAAU,EAAEK,mBAAmB,GAAGtB;AAApC,MAAyDY,MAA/D;AACA,QAAMW,eAAe,GAAGpB,QAAQ,CAC9Be,MADsB,CAEpBM,OAAF,IACC,CAAEZ,MAAM,CAACK,UAAP,IAAqB;AACtBZ,EAAAA,mBADC,IAED,CAAEJ,aAAa,CAACG,QAAd,CAAwBoB,OAAxB,CAFH,KAGAF,mBAAmB,CAAClB,QAApB,CAA8BoB,OAA9B,CANqB,EAQtBC,GARsB,CAQfC,cAAF,KAAwB;AAAEP,IAAAA,IAAI,EAAEO;AAAR,GAAxB,CARiB,CAAxB,CArC6E,CA+C7E;AACA;;AACA,MACCH,eAAe,CAACF,MAAhB,KAA2B,CAA3B,IACAE,eAAe,CAAE,CAAF,CAAf,CAAqBJ,IAArB,KAA8B,MAF/B,EAGE;AACD,WAAO,EAAP;AACA;;AAED,SAAOI,eAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useLayout } from '../block-list/layout';\nimport { store as blockEditorStore } from '../../store';\nimport { getLayoutType } from '../../layouts';\n\nconst DEFAULT_CONTROLS = [ 'none', 'left', 'center', 'right', 'wide', 'full' ];\nconst WIDE_CONTROLS = [ 'wide', 'full' ];\n\nexport default function useAvailableAlignments( controls = DEFAULT_CONTROLS ) {\n\t// Always add the `none` option if not exists.\n\tif ( ! controls.includes( 'none' ) ) {\n\t\tcontrols = [ 'none', ...controls ];\n\t}\n\tconst { wideControlsEnabled = false, themeSupportsLayout } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\tconst settings = getSettings();\n\t\t\treturn {\n\t\t\t\twideControlsEnabled: settings.alignWide,\n\t\t\t\tthemeSupportsLayout: settings.supportsLayout,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst layout = useLayout();\n\tconst layoutType = getLayoutType( layout?.type );\n\tconst layoutAlignments = layoutType.getAlignments( layout );\n\n\tif ( themeSupportsLayout ) {\n\t\tconst alignments = layoutAlignments.filter(\n\t\t\t( { name: alignmentName } ) => controls.includes( alignmentName )\n\t\t);\n\t\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t\t// other alignments exist.\n\t\tif ( alignments.length === 1 && alignments[ 0 ].name === 'none' ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn alignments;\n\t}\n\n\t// Starting here, it's the fallback for themes not supporting the layout config.\n\tif ( layoutType.name !== 'default' ) {\n\t\treturn [];\n\t}\n\tconst { alignments: availableAlignments = DEFAULT_CONTROLS } = layout;\n\tconst enabledControls = controls\n\t\t.filter(\n\t\t\t( control ) =>\n\t\t\t\t( layout.alignments || // Ignore the global wideAlignment check if the layout explicitely defines alignments.\n\t\t\t\t\twideControlsEnabled ||\n\t\t\t\t\t! WIDE_CONTROLS.includes( control ) ) &&\n\t\t\t\tavailableAlignments.includes( control )\n\t\t)\n\t\t.map( ( enabledControl ) => ( { name: enabledControl } ) );\n\n\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t// other alignments exist.\n\tif (\n\t\tenabledControls.length === 1 &&\n\t\tenabledControls[ 0 ].name === 'none'\n\t) {\n\t\treturn [];\n\t}\n\n\treturn enabledControls;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-alignment-control/use-available-alignments.js"],"names":["useSelect","useLayout","store","blockEditorStore","getLayoutType","DEFAULT_CONTROLS","WIDE_CONTROLS","useAvailableAlignments","controls","includes","wideControlsEnabled","themeSupportsLayout","select","getSettings","settings","alignWide","supportsLayout","layout","layoutType","type","layoutAlignments","getAlignments","alignments","filter","name","alignmentName","length","availableAlignments","enabledControls","control","map","enabledControl"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,sBAA1B;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,aAAT,QAA8B,eAA9B;AAEA,MAAMC,gBAAgB,GAAG,CAAE,MAAF,EAAU,MAAV,EAAkB,QAAlB,EAA4B,OAA5B,EAAqC,MAArC,EAA6C,MAA7C,CAAzB;AACA,MAAMC,aAAa,GAAG,CAAE,MAAF,EAAU,MAAV,CAAtB;AAEA,eAAe,SAASC,sBAAT,GAA+D;AAAA,MAA9BC,QAA8B,uEAAnBH,gBAAmB;;AAC7E;AACA,MAAK,CAAEG,QAAQ,CAACC,QAAT,CAAmB,MAAnB,CAAP,EAAqC;AACpCD,IAAAA,QAAQ,GAAG,CAAE,MAAF,EAAU,GAAGA,QAAb,CAAX;AACA;;AACD,QAAM;AAAEE,IAAAA,mBAAmB,GAAG,KAAxB;AAA+BC,IAAAA;AAA/B,MAAuDX,SAAS,CACnEY,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAkBD,MAAM,CAAET,gBAAF,CAA9B;AACA,UAAMW,QAAQ,GAAGD,WAAW,EAA5B;AACA,WAAO;AACNH,MAAAA,mBAAmB,EAAEI,QAAQ,CAACC,SADxB;AAENJ,MAAAA,mBAAmB,EAAEG,QAAQ,CAACE;AAFxB,KAAP;AAIA,GARoE,EASrE,EATqE,CAAtE;AAWA,QAAMC,MAAM,GAAGhB,SAAS,EAAxB;AACA,QAAMiB,UAAU,GAAGd,aAAa,CAAEa,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEE,IAAV,CAAhC;AACA,QAAMC,gBAAgB,GAAGF,UAAU,CAACG,aAAX,CAA0BJ,MAA1B,CAAzB;;AAEA,MAAKN,mBAAL,EAA2B;AAC1B,UAAMW,UAAU,GAAGF,gBAAgB,CAACG,MAAjB,CAClB;AAAA,UAAE;AAAEC,QAAAA,IAAI,EAAEC;AAAR,OAAF;AAAA,aAA+BjB,QAAQ,CAACC,QAAT,CAAmBgB,aAAnB,CAA/B;AAAA,KADkB,CAAnB,CAD0B,CAI1B;AACA;;AACA,QAAKH,UAAU,CAACI,MAAX,KAAsB,CAAtB,IAA2BJ,UAAU,CAAE,CAAF,CAAV,CAAgBE,IAAhB,KAAyB,MAAzD,EAAkE;AACjE,aAAO,EAAP;AACA;;AACD,WAAOF,UAAP;AACA,GA9B4E,CAgC7E;;;AACA,MAAKJ,UAAU,CAACM,IAAX,KAAoB,SAApB,IAAiCN,UAAU,CAACM,IAAX,KAAoB,aAA1D,EAA0E;AACzE,WAAO,EAAP;AACA;;AACD,QAAM;AAAEF,IAAAA,UAAU,EAAEK,mBAAmB,GAAGtB;AAApC,MAAyDY,MAA/D;AACA,QAAMW,eAAe,GAAGpB,QAAQ,CAC9Be,MADsB,CAEpBM,OAAF,IACC,CAAEZ,MAAM,CAACK,UAAP,IAAqB;AACtBZ,EAAAA,mBADC,IAED,CAAEJ,aAAa,CAACG,QAAd,CAAwBoB,OAAxB,CAFH,KAGAF,mBAAmB,CAAClB,QAApB,CAA8BoB,OAA9B,CANqB,EAQtBC,GARsB,CAQfC,cAAF,KAAwB;AAAEP,IAAAA,IAAI,EAAEO;AAAR,GAAxB,CARiB,CAAxB,CArC6E,CA+C7E;AACA;;AACA,MACCH,eAAe,CAACF,MAAhB,KAA2B,CAA3B,IACAE,eAAe,CAAE,CAAF,CAAf,CAAqBJ,IAArB,KAA8B,MAF/B,EAGE;AACD,WAAO,EAAP;AACA;;AAED,SAAOI,eAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useLayout } from '../block-list/layout';\nimport { store as blockEditorStore } from '../../store';\nimport { getLayoutType } from '../../layouts';\n\nconst DEFAULT_CONTROLS = [ 'none', 'left', 'center', 'right', 'wide', 'full' ];\nconst WIDE_CONTROLS = [ 'wide', 'full' ];\n\nexport default function useAvailableAlignments( controls = DEFAULT_CONTROLS ) {\n\t// Always add the `none` option if not exists.\n\tif ( ! controls.includes( 'none' ) ) {\n\t\tcontrols = [ 'none', ...controls ];\n\t}\n\tconst { wideControlsEnabled = false, themeSupportsLayout } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\tconst settings = getSettings();\n\t\t\treturn {\n\t\t\t\twideControlsEnabled: settings.alignWide,\n\t\t\t\tthemeSupportsLayout: settings.supportsLayout,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst layout = useLayout();\n\tconst layoutType = getLayoutType( layout?.type );\n\tconst layoutAlignments = layoutType.getAlignments( layout );\n\n\tif ( themeSupportsLayout ) {\n\t\tconst alignments = layoutAlignments.filter(\n\t\t\t( { name: alignmentName } ) => controls.includes( alignmentName )\n\t\t);\n\t\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t\t// other alignments exist.\n\t\tif ( alignments.length === 1 && alignments[ 0 ].name === 'none' ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn alignments;\n\t}\n\n\t// Starting here, it's the fallback for themes not supporting the layout config.\n\tif ( layoutType.name !== 'default' && layoutType.name !== 'constrained' ) {\n\t\treturn [];\n\t}\n\tconst { alignments: availableAlignments = DEFAULT_CONTROLS } = layout;\n\tconst enabledControls = controls\n\t\t.filter(\n\t\t\t( control ) =>\n\t\t\t\t( layout.alignments || // Ignore the global wideAlignment check if the layout explicitely defines alignments.\n\t\t\t\t\twideControlsEnabled ||\n\t\t\t\t\t! WIDE_CONTROLS.includes( control ) ) &&\n\t\t\t\tavailableAlignments.includes( control )\n\t\t)\n\t\t.map( ( enabledControl ) => ( { name: enabledControl } ) );\n\n\t// While we treat `none` as an alignment, we shouldn't return it if no\n\t// other alignments exist.\n\tif (\n\t\tenabledControls.length === 1 &&\n\t\tenabledControls[ 0 ].name === 'none'\n\t) {\n\t\treturn [];\n\t}\n\n\treturn enabledControls;\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import { createElement } from "@wordpress/element";
2
+
3
+ /**
4
+ * WordPress dependencies
5
+ */
6
+ import { ToolbarButton, ToolbarGroup } from '@wordpress/components';
7
+ import { __ } from '@wordpress/i18n';
8
+ import { useSelect, useDispatch } from '@wordpress/data';
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+
13
+ import { store as blockEditorStore } from '../../store';
14
+ export default function BlockEditVisuallyButton(_ref) {
15
+ let {
16
+ clientIds
17
+ } = _ref;
18
+ // Edit visually only works for single block selection.
19
+ const clientId = clientIds.length === 1 ? clientIds[0] : undefined;
20
+ const canEditVisually = useSelect(select => !!clientId && select(blockEditorStore).getBlockMode(clientId) === 'html', [clientId]);
21
+ const {
22
+ toggleBlockMode
23
+ } = useDispatch(blockEditorStore);
24
+
25
+ if (!canEditVisually) {
26
+ return null;
27
+ }
28
+
29
+ return createElement(ToolbarGroup, null, createElement(ToolbarButton, {
30
+ onClick: () => {
31
+ toggleBlockMode(clientId);
32
+ }
33
+ }, __('Edit visually')));
34
+ }
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-edit-visually-button/index.js"],"names":["ToolbarButton","ToolbarGroup","__","useSelect","useDispatch","store","blockEditorStore","BlockEditVisuallyButton","clientIds","clientId","length","undefined","canEditVisually","select","getBlockMode","toggleBlockMode"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,aAAT,EAAwBC,YAAxB,QAA4C,uBAA5C;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA,eAAe,SAASC,uBAAT,OAAkD;AAAA,MAAhB;AAAEC,IAAAA;AAAF,GAAgB;AAChE;AACA,QAAMC,QAAQ,GAAGD,SAAS,CAACE,MAAV,KAAqB,CAArB,GAAyBF,SAAS,CAAE,CAAF,CAAlC,GAA0CG,SAA3D;AACA,QAAMC,eAAe,GAAGT,SAAS,CAC9BU,MAAF,IACC,CAAC,CAAEJ,QAAH,IACAI,MAAM,CAAEP,gBAAF,CAAN,CAA2BQ,YAA3B,CAAyCL,QAAzC,MAAwD,MAHzB,EAIhC,CAAEA,QAAF,CAJgC,CAAjC;AAMA,QAAM;AAAEM,IAAAA;AAAF,MAAsBX,WAAW,CAAEE,gBAAF,CAAvC;;AAEA,MAAK,CAAEM,eAAP,EAAyB;AACxB,WAAO,IAAP;AACA;;AAED,SACC,cAAC,YAAD,QACC,cAAC,aAAD;AACC,IAAA,OAAO,EAAG,MAAM;AACfG,MAAAA,eAAe,CAAEN,QAAF,CAAf;AACA;AAHF,KAKGP,EAAE,CAAE,eAAF,CALL,CADD,CADD;AAWA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockEditVisuallyButton( { clientIds } ) {\n\t// Edit visually only works for single block selection.\n\tconst clientId = clientIds.length === 1 ? clientIds[ 0 ] : undefined;\n\tconst canEditVisually = useSelect(\n\t\t( select ) =>\n\t\t\t!! clientId &&\n\t\t\tselect( blockEditorStore ).getBlockMode( clientId ) === 'html',\n\t\t[ clientId ]\n\t);\n\tconst { toggleBlockMode } = useDispatch( blockEditorStore );\n\n\tif ( ! canEditVisually ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\tonClick={ () => {\n\t\t\t\t\ttoggleBlockMode( clientId );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ __( 'Edit visually' ) }\n\t\t\t</ToolbarButton>\n\t\t</ToolbarGroup>\n\t);\n}\n"]}
@@ -10,7 +10,7 @@ import { omit } from 'lodash';
10
10
  */
11
11
 
12
12
  import { createContext, useMemo, useCallback, RawHTML } from '@wordpress/element';
13
- import { getBlockType, getSaveContent, isUnmodifiedDefaultBlock, serializeRawBlock } from '@wordpress/blocks';
13
+ import { getBlockType, getSaveContent, isUnmodifiedDefaultBlock, serializeRawBlock, switchToBlockType } from '@wordpress/blocks';
14
14
  import { withFilters } from '@wordpress/components';
15
15
  import { withDispatch, withSelect, useDispatch, useSelect } from '@wordpress/data';
16
16
  import { compose, pure, ifCondition } from '@wordpress/compose';
@@ -278,11 +278,13 @@ const applyWithDispatch = withDispatch((dispatch, ownProps, _ref4) => {
278
278
 
279
279
  onMerge(forward) {
280
280
  const {
281
- clientId
281
+ clientId,
282
+ rootClientId
282
283
  } = ownProps;
283
284
  const {
284
285
  getPreviousBlockClientId,
285
- getNextBlockClientId
286
+ getNextBlockClientId,
287
+ getBlock
286
288
  } = select(blockEditorStore);
287
289
 
288
290
  if (forward) {
@@ -296,6 +298,14 @@ const applyWithDispatch = withDispatch((dispatch, ownProps, _ref4) => {
296
298
 
297
299
  if (previousBlockClientId) {
298
300
  mergeBlocks(previousBlockClientId, clientId);
301
+ } else if (rootClientId) {
302
+ // Attempt to "unwrap" the block contents when there's no
303
+ // preceding block to merge with.
304
+ const replacement = switchToBlockType(getBlock(rootClientId), '*');
305
+
306
+ if (replacement && replacement.length) {
307
+ replaceBlocks(rootClientId, replacement, 0);
308
+ }
299
309
  }
300
310
  }
301
311
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"names":["classnames","omit","createContext","useMemo","useCallback","RawHTML","getBlockType","getSaveContent","isUnmodifiedDefaultBlock","serializeRawBlock","withFilters","withDispatch","withSelect","useDispatch","useSelect","compose","pure","ifCondition","safeHTML","BlockEdit","BlockInvalidWarning","BlockCrashWarning","BlockCrashBoundary","BlockHtml","useBlockProps","store","blockEditorStore","BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","themeSupportsLayout","select","getSettings","supportsLayout","removeBlock","onRemove","blockEdit","undefined","blockType","getEditWrapperProps","isAligned","saveContent","display","apiVersion","value","memoizedValue","Object","values","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","getTemplateLock","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","updateBlockAttributes","insertBlocks","mergeBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","newAttributes","getMultiSelectedBlockClientIds","multiSelectedBlockClientIds","clientIds","length","onInsertBlocks","blocks","index","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","nextBlockClientId","previousBlockClientId","indexToSelect","initialPosition","selectionEnabled"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseMemo,\n\tuseCallback,\n\tRawHTML,\n} from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport {\n\twithDispatch,\n\twithSelect,\n\tuseDispatch,\n\tuseSelect,\n} from '@wordpress/data';\nimport { compose, pure, ifCondition } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\n\nexport const BlockListBlockContext = createContext();\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\tif ( propsA?.className && propsB?.className ) {\n\t\tnewProps.className = classnames( propsA.className, propsB.className );\n\t}\n\tif ( propsA?.style && propsB?.style ) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().supportsLayout;\n\t}, [] );\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName=\"wp-block\"\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block { ...wrapperProps }>{ blockEdit }</Block>;\n\t}\n\n\tconst value = {\n\t\tclientId,\n\t\tclassName:\n\t\t\twrapperProps?.[ 'data-align' ] && themeSupportsLayout\n\t\t\t\t? classnames(\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t`align${ wrapperProps[ 'data-align' ] }`\n\t\t\t\t )\n\t\t\t\t: className,\n\t\twrapperProps: omit( wrapperProps, [ 'data-align' ] ),\n\t\tisAligned,\n\t};\n\tconst memoizedValue = useMemo( () => value, Object.values( value ) );\n\n\treturn (\n\t\t<BlockListBlockContext.Provider value={ memoizedValue }>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</BlockListBlockContext.Provider>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst { getPreviousBlockClientId, getNextBlockClientId } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tif ( forward ) {\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\t\t\t\tif ( nextBlockClientId ) {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\tblocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block ),\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"names":["classnames","omit","createContext","useMemo","useCallback","RawHTML","getBlockType","getSaveContent","isUnmodifiedDefaultBlock","serializeRawBlock","switchToBlockType","withFilters","withDispatch","withSelect","useDispatch","useSelect","compose","pure","ifCondition","safeHTML","BlockEdit","BlockInvalidWarning","BlockCrashWarning","BlockCrashBoundary","BlockHtml","useBlockProps","store","blockEditorStore","BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","themeSupportsLayout","select","getSettings","supportsLayout","removeBlock","onRemove","blockEdit","undefined","blockType","getEditWrapperProps","isAligned","saveContent","display","apiVersion","value","memoizedValue","Object","values","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","getTemplateLock","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","updateBlockAttributes","insertBlocks","mergeBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","newAttributes","getMultiSelectedBlockClientIds","multiSelectedBlockClientIds","clientIds","length","onInsertBlocks","blocks","index","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","nextBlockClientId","previousBlockClientId","replacement","indexToSelect","initialPosition","selectionEnabled"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseMemo,\n\tuseCallback,\n\tRawHTML,\n} from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport {\n\twithDispatch,\n\twithSelect,\n\tuseDispatch,\n\tuseSelect,\n} from '@wordpress/data';\nimport { compose, pure, ifCondition } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\n\nexport const BlockListBlockContext = createContext();\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\tif ( propsA?.className && propsB?.className ) {\n\t\tnewProps.className = classnames( propsA.className, propsB.className );\n\t}\n\tif ( propsA?.style && propsB?.style ) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().supportsLayout;\n\t}, [] );\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName=\"wp-block\"\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block { ...wrapperProps }>{ blockEdit }</Block>;\n\t}\n\n\tconst value = {\n\t\tclientId,\n\t\tclassName:\n\t\t\twrapperProps?.[ 'data-align' ] && themeSupportsLayout\n\t\t\t\t? classnames(\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t`align${ wrapperProps[ 'data-align' ] }`\n\t\t\t\t )\n\t\t\t\t: className,\n\t\twrapperProps: omit( wrapperProps, [ 'data-align' ] ),\n\t\tisAligned,\n\t};\n\tconst memoizedValue = useMemo( () => value, Object.values( value ) );\n\n\treturn (\n\t\t<BlockListBlockContext.Provider value={ memoizedValue }>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</BlockListBlockContext.Provider>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getPreviousBlockClientId, getNextBlockClientId, getBlock } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tif ( forward ) {\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\t\t\t\tif ( nextBlockClientId ) {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\t// Attempt to \"unwrap\" the block contents when there's no\n\t\t\t\t\t// preceding block to merge with.\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tgetBlock( rootClientId ),\n\t\t\t\t\t\t'*'\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\treplaceBlocks( rootClientId, replacement, 0 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\tblocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block ),\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"]}
@@ -427,7 +427,7 @@ class EmptyListComponent extends Component {
427
427
  renderFooterAppender
428
428
  } = this.props;
429
429
 
430
- if (renderFooterAppender) {
430
+ if (renderFooterAppender || renderAppender === false) {
431
431
  return null;
432
432
  }
433
433
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/index.native.js"],"names":["View","Platform","TouchableWithoutFeedback","Component","createContext","withDispatch","withSelect","compose","withPreferredColorScheme","createBlock","KeyboardAwareFlatList","ReadableContentView","WIDE_ALIGNMENTS","alignmentHelpers","__","styles","BlockListAppender","BlockListItem","BlockListItemCell","BlockListProvider","BlockListConsumer","DEFAULT_BLOCK_LIST_CONTEXT","BlockDraggableWrapper","store","blockEditorStore","OnCaretVerticalPositionChange","identity","x","stylesMemo","getStyles","isRootList","isStackedHorizontally","horizontalAlignment","styleName","computedStyles","horizontal","overflowVisible","BlockList","constructor","arguments","extraData","parentWidth","props","renderFooterAppender","renderAppender","onDeleteBlock","contentStyle","renderItem","bind","renderBlockListFooter","onCaretVerticalPositionChange","scrollViewInnerRef","addBlockToEndOfPost","shouldFlatListPreventAutomaticScroll","shouldShowInnerBlockAppender","renderEmptyList","getExtraData","getCellRendererComponent","onLayout","state","blockWidth","newBlock","insertBlock","blockCount","targetId","caretY","previousCaretY","handleCaretVerticalPositionChange","scrollViewRef","ref","isBlockInsertionPointVisible","blockClientIds","length","rootClientId","gridProperties","children","item","nativeEvent","layout","maxWidth","layoutWidth","Math","floor","width","setState","min","render","isRTL","blockList","scrollRef","onScroll","renderList","parentScrollRef","extraProps","clearSelectedBlock","title","header","isReadOnly","marginVertical","defaultBlock","marginTop","marginHorizontal","marginLeft","isFloatingToolbarVisible","contentResizeMode","blockToolbar","blockBorder","headerToolbar","floatingToolbar","containerStyle","flex","isContentStretch","isMultiBlocks","isWider","OS","removeClippedSubviews","autoScroll","height","horizontalContentContainer","horizontalContentContainerStretch","horizontalContentContainerCenter","innerAppender","clientId","onAddBlock","isGridItem","gridItemProps","numOfColumns","numColumns","tileCount","tileIndex","indexOf","paragraphBlock","withFooter","blockListFooter","select","orientation","filterInnerBlocks","getBlockCount","getBlockOrder","getSelectedBlockClientId","getSettings","selectedBlockClientId","readOnly","hasRootInnerBlocks","undefined","dispatch","replaceBlock","EmptyListComponent","shouldShowInsertionPoint","defaultAppender","alignments","full","EmptyListComponentCompose","getBlockInsertionPoint","insertionPoint","blockInsertionPointIsVisible","index"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,IAAT,EAAeC,QAAf,EAAyBC,wBAAzB,QAAyD,cAAzD;AAEA;AACA;AACA;;AACA,SAASC,SAAT,EAAoBC,aAApB,QAAyC,oBAAzC;AACA,SAASC,YAAT,EAAuBC,UAAvB,QAAyC,iBAAzC;AACA,SAASC,OAAT,EAAkBC,wBAAlB,QAAkD,oBAAlD;AACA,SAASC,WAAT,QAA4B,mBAA5B;AACA,SACCC,qBADD,EAECC,mBAFD,EAGCC,eAHD,EAICC,gBAJD,QAKO,uBALP;AAMA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;;AACA,OAAOC,MAAP,MAAmB,cAAnB;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AACA,OAAOC,aAAP,MAA0B,mBAA1B;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AACA,SACCC,iBADD,EAECC,iBAFD,EAGCC,0BAHD,QAIO,sBAJP;AAKA,SAASC,qBAAT,QAAsC,oBAAtC;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA,OAAO,MAAMC,6BAA6B,GAAGrB,aAAa,EAAnD;;AACP,MAAMsB,QAAQ,GAAKC,CAAF,IAASA,CAA1B;;AAEA,MAAMC,UAAU,GAAG,EAAnB;;AACA,MAAMC,SAAS,GAAG,CACjBC,UADiB,EAEjBC,qBAFiB,EAGjBC,mBAHiB,KAIb;AACJ,MAAKF,UAAL,EAAkB;AACjB;AACA;;AACD,QAAMG,SAAS,GAAI,GAAGF,qBAAuB,IAAIC,mBAAqB,EAAtE;;AACA,MAAKJ,UAAU,CAAEK,SAAF,CAAf,EAA+B;AAC9B,WAAOL,UAAU,CAAEK,SAAF,CAAjB;AACA;;AACD,QAAMC,cAAc,GAAG,CACtBH,qBAAqB,IAAIhB,MAAM,CAACoB,UADV,EAEtBH,mBAAmB,IAAIjB,MAAM,CAAG,cAAciB,mBAAqB,EAAtC,CAFP,EAGtBjB,MAAM,CAACqB,eAHe,CAAvB;AAKAR,EAAAA,UAAU,CAAEK,SAAF,CAAV,GAA0BC,cAA1B;AACA,SAAOA,cAAP;AACA,CAnBD;;AAqBA,OAAO,MAAMG,SAAN,SAAwBlC,SAAxB,CAAkC;AACxCmC,EAAAA,WAAW,GAAG;AACb,UAAO,GAAGC,SAAV;AACA,SAAKC,SAAL,GAAiB;AAChBC,MAAAA,WAAW,EAAE,KAAKC,KAAL,CAAWD,WADR;AAEhBE,MAAAA,oBAAoB,EAAE,KAAKD,KAAL,CAAWC,oBAFjB;AAGhBC,MAAAA,cAAc,EAAE,KAAKF,KAAL,CAAWE,cAHX;AAIhBC,MAAAA,aAAa,EAAE,KAAKH,KAAL,CAAWG,aAJV;AAKhBC,MAAAA,YAAY,EAAE,KAAKJ,KAAL,CAAWI;AALT,KAAjB;AAOA,SAAKC,UAAL,GAAkB,KAAKA,UAAL,CAAgBC,IAAhB,CAAsB,IAAtB,CAAlB;AACA,SAAKC,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BD,IAA3B,CAAiC,IAAjC,CAA7B;AACA,SAAKE,6BAAL,GACC,KAAKA,6BAAL,CAAmCF,IAAnC,CAAyC,IAAzC,CADD;AAEA,SAAKG,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBH,IAAxB,CAA8B,IAA9B,CAA1B;AACA,SAAKI,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBJ,IAAzB,CAA+B,IAA/B,CAA3B;AACA,SAAKK,oCAAL,GACC,KAAKA,oCAAL,CAA0CL,IAA1C,CAAgD,IAAhD,CADD;AAEA,SAAKM,4BAAL,GACC,KAAKA,4BAAL,CAAkCN,IAAlC,CAAwC,IAAxC,CADD;AAEA,SAAKO,eAAL,GAAuB,KAAKA,eAAL,CAAqBP,IAArB,CAA2B,IAA3B,CAAvB;AACA,SAAKQ,YAAL,GAAoB,KAAKA,YAAL,CAAkBR,IAAlB,CAAwB,IAAxB,CAApB;AACA,SAAKS,wBAAL,GACC,KAAKA,wBAAL,CAA8BT,IAA9B,CAAoC,IAApC,CADD;AAGA,SAAKU,QAAL,GAAgB,KAAKA,QAAL,CAAcV,IAAd,CAAoB,IAApB,CAAhB;AAEA,SAAKW,KAAL,GAAa;AACZC,MAAAA,UAAU,EAAE,KAAKlB,KAAL,CAAWkB,UAAX,IAAyB;AADzB,KAAb;AAGA;;AAEDR,EAAAA,mBAAmB,CAAES,QAAF,EAAa;AAC/B,SAAKnB,KAAL,CAAWoB,WAAX,CAAwBD,QAAxB,EAAkC,KAAKnB,KAAL,CAAWqB,UAA7C;AACA;;AAEDb,EAAAA,6BAA6B,CAAEc,QAAF,EAAYC,MAAZ,EAAoBC,cAApB,EAAqC;AACjExD,IAAAA,qBAAqB,CAACyD,iCAAtB,CACC,KAAKC,aADN,EAECJ,QAFD,EAGCC,MAHD,EAICC,cAJD;AAMA;;AAEDf,EAAAA,kBAAkB,CAAEkB,GAAF,EAAQ;AACzB,SAAKD,aAAL,GAAqBC,GAArB;AACA;;AAEDhB,EAAAA,oCAAoC,GAAG;AACtC,WAAO,KAAKX,KAAL,CAAW4B,4BAAlB;AACA;;AAEDhB,EAAAA,4BAA4B,GAAG;AAC9B,UAAM;AAAEiB,MAAAA,cAAF;AAAkB3B,MAAAA;AAAlB,QAAqC,KAAKF,KAAhD;AACA,WAAOE,cAAc,IAAI2B,cAAc,CAACC,MAAf,GAAwB,CAAjD;AACA;;AAEDjB,EAAAA,eAAe,GAAG;AACjB,WACC,cAAC,yBAAD;AACC,MAAA,YAAY,EAAG,KAAKb,KAAL,CAAW+B,YAD3B;AAEC,MAAA,cAAc,EAAG,KAAK/B,KAAL,CAAWE,cAF7B;AAGC,MAAA,oBAAoB,EAAG,KAAKF,KAAL,CAAWC;AAHnC,MADD;AAOA;;AAEDa,EAAAA,YAAY,GAAG;AACd,UAAM;AACLf,MAAAA,WADK;AAELE,MAAAA,oBAFK;AAGLE,MAAAA,aAHK;AAILC,MAAAA,YAJK;AAKLF,MAAAA,cALK;AAML8B,MAAAA;AANK,QAOF,KAAKhC,KAPT;AAQA,UAAM;AAAEkB,MAAAA;AAAF,QAAiB,KAAKD,KAA5B;;AACA,QACC,KAAKnB,SAAL,CAAeC,WAAf,KAA+BA,WAA/B,IACA,KAAKD,SAAL,CAAeG,oBAAf,KAAwCA,oBADxC,IAEA,KAAKH,SAAL,CAAeK,aAAf,KAAiCA,aAFjC,IAGA,KAAKL,SAAL,CAAeM,YAAf,KAAgCA,YAHhC,IAIA,KAAKN,SAAL,CAAeI,cAAf,KAAkCA,cAJlC,IAKA,KAAKJ,SAAL,CAAeoB,UAAf,KAA8BA,UAL9B,IAMA,KAAKpB,SAAL,CAAekC,cAAf,KAAkCA,cAPnC,EAQE;AACD,WAAKlC,SAAL,GAAiB;AAChBC,QAAAA,WADgB;AAEhBE,QAAAA,oBAFgB;AAGhBE,QAAAA,aAHgB;AAIhBC,QAAAA,YAJgB;AAKhBF,QAAAA,cALgB;AAMhBgB,QAAAA,UANgB;AAOhBc,QAAAA;AAPgB,OAAjB;AASA;;AACD,WAAO,KAAKlC,SAAZ;AACA;;AAEDiB,EAAAA,wBAAwB,OAAiC;AAAA,QAA/B;AAAEkB,MAAAA,QAAF;AAAYC,MAAAA,IAAZ;AAAkBlB,MAAAA;AAAlB,KAA+B;AACxD,UAAM;AAAEe,MAAAA;AAAF,QAAmB,KAAK/B,KAA9B;AACA,WACC,cAAC,iBAAD;AACC,MAAA,QAAQ,EAAGiC,QADZ;AAEC,MAAA,QAAQ,EAAGC,IAFZ;AAGC,MAAA,QAAQ,EAAGlB,QAHZ;AAIC,MAAA,YAAY,EAAGe;AAJhB,MADD;AAQA;;AAEDf,EAAAA,QAAQ,QAAoB;AAAA,QAAlB;AAAEmB,MAAAA;AAAF,KAAkB;AAC3B,UAAM;AAAEC,MAAAA;AAAF,QAAaD,WAAnB;AACA,UAAM;AAAEjB,MAAAA;AAAF,QAAiB,KAAKD,KAA5B;AACA,UAAM;AAAE7B,MAAAA,UAAF;AAAciD,MAAAA;AAAd,QAA2B,KAAKrC,KAAtC;AAEA,UAAMsC,WAAW,GAAGC,IAAI,CAACC,KAAL,CAAYJ,MAAM,CAACK,KAAnB,CAApB;;AACA,QAAKrD,UAAU,IAAI8B,UAAU,KAAKoB,WAAlC,EAAgD;AAC/C,WAAKI,QAAL,CAAe;AACdxB,QAAAA,UAAU,EAAEqB,IAAI,CAACI,GAAL,CAAUL,WAAV,EAAuBD,QAAvB;AADE,OAAf;AAGA,KAJD,MAIO,IAAK,CAAEjD,UAAF,IAAgB,CAAE8B,UAAvB,EAAoC;AAC1C,WAAKwB,QAAL,CAAe;AAAExB,QAAAA,UAAU,EAAEqB,IAAI,CAACI,GAAL,CAAUL,WAAV,EAAuBD,QAAvB;AAAd,OAAf;AACA;AACD;;AAEDO,EAAAA,MAAM,GAAG;AACR,UAAM;AAAExD,MAAAA,UAAF;AAAcyD,MAAAA;AAAd,QAAwB,KAAK7C,KAAnC,CADQ,CAER;;AACA,UAAM8C,SAAS,GAAG1D,UAAU,GAC3B,cAAC,iBAAD;AACC,MAAA,KAAK,EAAG,EACP,GAAGT,0BADI;AAEPoE,QAAAA,SAAS,EAAE,KAAKrB;AAFT;AADT,OAMC,cAAC,qBAAD;AAAuB,MAAA,KAAK,EAAGmB;AAA/B,OACG;AAAA,UAAE;AAAEG,QAAAA;AAAF,OAAF;AAAA,aAAoB,KAAKC,UAAL,CAAiB;AAAED,QAAAA;AAAF,OAAjB,CAApB;AAAA,KADH,CAND,CAD2B,GAY3B,cAAC,iBAAD,QACG;AAAA,UAAE;AAAED,QAAAA;AAAF,OAAF;AAAA,aACD,KAAKE,UAAL,CAAiB;AAChBC,QAAAA,eAAe,EAAEH;AADD,OAAjB,CADC;AAAA,KADH,CAZD;AAqBA,WACC,cAAC,6BAAD,CAA+B,QAA/B;AACC,MAAA,KAAK,EAAG,KAAKvC;AADd,OAGGsC,SAHH,CADD;AAOA;;AAEDG,EAAAA,UAAU,GAAoB;AAAA,QAAlBE,UAAkB,uEAAL,EAAK;AAC7B,UAAM;AACLC,MAAAA,kBADK;AAELvB,MAAAA,cAFK;AAGLwB,MAAAA,KAHK;AAILC,MAAAA,MAJK;AAKLC,MAAAA,UALK;AAMLnE,MAAAA,UANK;AAOLK,MAAAA,UAPK;AAQL+D,MAAAA,cAAc,GAAGnF,MAAM,CAACoF,YAAP,CAAoBC,SARhC;AASLC,MAAAA,gBAAgB,GAAGtF,MAAM,CAACoF,YAAP,CAAoBG,UATlC;AAULC,MAAAA,wBAVK;AAWLxE,MAAAA,qBAXK;AAYLC,MAAAA,mBAZK;AAaLwE,MAAAA,iBAbK;AAcL5C,MAAAA;AAdK,QAeF,KAAKlB,KAfT;AAgBA,UAAM;AAAEkD,MAAAA,eAAF;AAAmBF,MAAAA;AAAnB,QAAgCG,UAAtC;AAEA,UAAM;AAAEY,MAAAA,YAAF;AAAgBC,MAAAA,WAAhB;AAA6BC,MAAAA,aAA7B;AAA4CC,MAAAA;AAA5C,QACL7F,MADD;AAGA,UAAM8F,cAAc,GAAG;AACtBC,MAAAA,IAAI,EAAEhF,UAAU,GAAG,CAAH,GAAO,CADD;AAEtB;AACAoE,MAAAA,cAAc,EAAEpE,UAAU,GAAG,CAAH,GAAO,CAACoE,cAHZ;AAItBG,MAAAA,gBAAgB,EAAEvE,UAAU,GAAG,CAAH,GAAO,CAACuE;AAJd,KAAvB;AAOA,UAAMU,gBAAgB,GAAGP,iBAAiB,KAAK,SAA/C;AACA,UAAMQ,aAAa,GAAGzC,cAAc,CAACC,MAAf,GAAwB,CAA9C;AACA,UAAM;AAAEyC,MAAAA;AAAF,QAAcpG,gBAApB;AAEA,WACC,cAAC,IAAD;AACC,MAAA,KAAK,EAAGgG,cADT;AAEC,MAAA,qBAAqB,EAAGf,kBAFzB;AAGC,MAAA,QAAQ,EAAG,KAAKpC,QAHjB;AAIC,MAAA,MAAM,EAAC;AAJR,OAMC,cAAC,qBAAD,eACQzD,QAAQ,CAACiH,EAAT,KAAgB,SAAhB,GACJ;AAAEC,MAAAA,qBAAqB,EAAE;AAAzB,KADI,GAEJ,EAHJ;AAGW;AACV,MAAA,kBAAkB,EAAC,YAJpB;AAKC,MAAA,UAAU,EAAG,KAAKzE,KAAL,CAAW0E,UALzB;AAMC,MAAA,QAAQ,EAAK/C,GAAF,IAAW;AACrB,aAAKlB,kBAAL,CAAyByC,eAAe,IAAIvB,GAA5C;AACA,OARF;AASC,MAAA,iBAAiB,EAChBoC,YAAY,CAACY,MAAb,GAAsBX,WAAW,CAACvB,KAVpC;AAYC,MAAA,wBAAwB,EACvBwB,aAAa,CAACU,MAAd,IACEd,wBAAwB,GACvBK,eAAe,CAACS,MADO,GAEvB,CAHH,CAbF;AAkBC,MAAA,yBAAyB,EAAC,QAlB3B;AAmBC,MAAA,eAAe,EAAG,CACjB;AAAEP,QAAAA,IAAI,EAAEhF,UAAU,GAAG,CAAH,GAAO;AAAzB,OADiB,EAEjB,CAAEA,UAAF,IAAgBf,MAAM,CAACqB,eAFN,CAnBnB;AAuBC,MAAA,SAAS,EAAG,KAAKoB,YAAL,EAvBb;AAwBC,MAAA,aAAa,EAAG1B,UAxBjB;AAyBC,MAAA,qBAAqB,EAAG,CACvBK,UAAU,IAAIpB,MAAM,CAACuG,0BADE,EAEvBL,OAAO,CAAErD,UAAF,EAAc,QAAd,CAAP,KACGmD,gBAAgB,IAAIC,aAApB,GACCjG,MAAM,CAACwG,iCADR,GAECxG,MAAM,CAACyG,gCAHX,CAFuB,CAzBzB;AAgCC,MAAA,KAAK,EAAG3F,SAAS,CAChBC,UADgB,EAEhBC,qBAFgB,EAGhBC,mBAHgB,CAhClB;AAqCC,MAAA,IAAI,EAAGuC,cArCR;AAsCC,MAAA,YAAY,EAAG7C,QAtChB;AAuCC,MAAA,UAAU,EAAG,KAAKqB,UAvCnB;AAwCC,MAAA,qBAAqB,EAAG,KAAKU,wBAxC9B;AAyCC,MAAA,4BAA4B,EAC3B,KAAKJ,oCA1CP;AA4CC,MAAA,KAAK,EAAG0C,KA5CT;AA6CC,MAAA,mBAAmB,EAAGC,MA7CvB;AA8CC,MAAA,kBAAkB,EAAG,CAAEC,UAAF,IAAgB,KAAK1C,eA9C3C;AA+CC,MAAA,mBAAmB,EAAG,KAAKN,qBA/C5B;AAgDC,MAAA,QAAQ,EAAGyC;AAhDZ,OAND,EAwDG,KAAKpC,4BAAL,MACD,cAAC,IAAD;AACC,MAAA,KAAK,EAAG;AACP+C,QAAAA,gBAAgB,EACfA,gBAAgB,GAChBtF,MAAM,CAAC0G,aAAP,CAAqBnB;AAHf;AADT,OAOC,cAAC,iBAAD;AACC,MAAA,YAAY,EAAG,KAAK5D,KAAL,CAAW+B,YAD3B;AAEC,MAAA,cAAc,EAAG,KAAK/B,KAAL,CAAWE,cAF7B;AAGC,MAAA,aAAa;AAHd,MAPD,CAzDF,CADD;AA0EA;;AAEDG,EAAAA,UAAU,QAAuB;AAAA,QAArB;AAAE6B,MAAAA,IAAI,EAAE8C;AAAR,KAAqB;AAChC,UAAM;AACLlB,MAAAA,iBADK;AAEL1D,MAAAA,YAFK;AAGL6E,MAAAA,UAHK;AAIL9E,MAAAA,aAJK;AAKL4B,MAAAA,YALK;AAML1C,MAAAA,qBANK;AAOLwC,MAAAA,cAPK;AAQL9B,MAAAA,WARK;AASLyD,MAAAA,cAAc,GAAGnF,MAAM,CAACoF,YAAP,CAAoBC,SAThC;AAULC,MAAAA,gBAAgB,GAAGtF,MAAM,CAACoF,YAAP,CAAoBG,UAVlC;AAWL5B,MAAAA;AAXK,QAYF,KAAKhC,KAZT;AAaA,UAAM;AAAEkB,MAAAA;AAAF,QAAiB,KAAKD,KAA5B,CAdgC,CAgBhC;AACA;;AACA,UAAMiE,UAAU,GAAG,CAAC,CAAElD,cAAtB;AACA,UAAMmD,aAAa,GAAGnD,cAAc,IAAI;AACvCoD,MAAAA,YAAY,EAAEpD,cAAc,CAACqD,UADU;AAEvCC,MAAAA,SAAS,EAAEzD,cAAc,CAACC,MAFa;AAGvCyD,MAAAA,SAAS,EAAE1D,cAAc,CAAC2D,OAAf,CAAwBR,QAAxB;AAH4B,KAAxC;AAKA,WACC,cAAC,aAAD;AACC,MAAA,qBAAqB,EAAG3F,qBADzB;AAEC,MAAA,YAAY,EAAG0C,YAFhB;AAGC,MAAA,QAAQ,EAAGiD,QAHZ;AAIC,MAAA,WAAW,EAAGjF,WAJf;AAKC,MAAA,iBAAiB,EAAG+D,iBALrB;AAMC,MAAA,YAAY,EAAG1D,YANhB;AAOC,MAAA,UAAU,EAAG6E,UAPd;AAQC,MAAA,cAAc,EAAGzB,cARlB;AASC,MAAA,gBAAgB,EAAGG,gBATpB;AAUC,MAAA,aAAa,EAAGxD,aAVjB;AAWC,MAAA,4BAA4B,EAC3B,KAAKS,4BAZP;AAcC,MAAA,UAAU,EAAGM,UAdd;AAeC,MAAA,UAAU,EAAGgE;AAfd,OAgBMC,aAhBN,EADD;AAoBA;;AAED5E,EAAAA,qBAAqB,GAAG;AACvB,UAAMkF,cAAc,GAAG1H,WAAW,CAAE,gBAAF,CAAlC;AACA,UAAM;AACLwF,MAAAA,UADK;AAELmC,MAAAA,UAAU,GAAG,IAFR;AAGLzF,MAAAA;AAHK,QAIF,KAAKD,KAJT;;AAMA,QAAK,CAAEuD,UAAF,IAAgBmC,UAArB,EAAkC;AACjC,aACC,8BACC,cAAC,wBAAD;AACC,QAAA,kBAAkB,EAAGtH,EAAE,CAAE,qBAAF,CADxB;AAEC,QAAA,MAAM,EAAGA,EAAE,CAAE,qBAAF,CAFZ;AAGC,QAAA,OAAO,EAAG,MAAM;AACf,eAAKsC,mBAAL,CAA0B+E,cAA1B;AACA;AALF,SAOC,cAAC,IAAD;AAAM,QAAA,KAAK,EAAGpH,MAAM,CAACsH;AAArB,QAPD,CADD,CADD;AAaA,KAdD,MAcO,IAAK1F,oBAAL,EAA4B;AAClC,aAAOA,oBAAoB,EAA3B;AACA;;AACD,WAAO,IAAP;AACA;;AArVuC;AAwVzC,eAAepC,OAAO,CAAE,CACvBD,UAAU,CACT,CAAEgI,MAAF,YAAgE;AAAA,MAAtD;AAAE7D,IAAAA,YAAF;AAAgB8D,IAAAA,WAAhB;AAA6BC,IAAAA;AAA7B,GAAsD;AAC/D,QAAM;AACLC,IAAAA,aADK;AAELC,IAAAA,aAFK;AAGLC,IAAAA,wBAHK;AAILrE,IAAAA,4BAJK;AAKLsE,IAAAA;AALK,MAMFN,MAAM,CAAE9G,gBAAF,CANV;AAQA,QAAMO,qBAAqB,GAAGwG,WAAW,KAAK,YAA9C;AAEA,QAAMM,qBAAqB,GAAGF,wBAAwB,EAAtD;AAEA,MAAIpE,cAAc,GAAGmE,aAAa,CAAEjE,YAAF,CAAlC,CAb+D,CAc/D;;AACA,MAAK+D,iBAAL,EAAyB;AACxBjE,IAAAA,cAAc,GAAGiE,iBAAiB,CAAEjE,cAAF,CAAlC;AACA;;AAED,QAAM;AAAEQ,IAAAA;AAAF,MAAe6D,WAAW,EAAhC;AACA,QAAM3C,UAAU,GAAG2C,WAAW,GAAGE,QAAjC;AAEA,QAAM/E,UAAU,GAAG0E,aAAa,EAAhC;AACA,QAAMM,kBAAkB,GAAG,CAAC,CAAEhF,UAA9B;AAEA,QAAMwC,wBAAwB,GAC7B,CAAC,CAAEsC,qBAAH,IAA4BE,kBAD7B;AAEA,QAAMxD,KAAK,GAAGqD,WAAW,GAAGrD,KAA5B;AAEA,SAAO;AACNhB,IAAAA,cADM;AAENR,IAAAA,UAFM;AAGNO,IAAAA,4BAA4B,EAC3BrE,QAAQ,CAACiH,EAAT,KAAgB,KAAhB,IAAyB5C,4BAA4B,EAJhD;AAKN2B,IAAAA,UALM;AAMNnE,IAAAA,UAAU,EAAE2C,YAAY,KAAKuE,SANvB;AAONzC,IAAAA,wBAPM;AAQNxE,IAAAA,qBARM;AASNgD,IAAAA,QATM;AAUNQ,IAAAA;AAVM,GAAP;AAYA,CA1CQ,CADa,EA6CvBlF,YAAY,CAAI4I,QAAF,IAAgB;AAC7B,QAAM;AAAEnF,IAAAA,WAAF;AAAeoF,IAAAA,YAAf;AAA6BpD,IAAAA;AAA7B,MACLmD,QAAQ,CAAEzH,gBAAF,CADT;AAGA,SAAO;AACNsE,IAAAA,kBADM;AAENhC,IAAAA,WAFM;AAGNoF,IAAAA;AAHM,GAAP;AAKA,CATW,CA7CW,EAuDvB1I,wBAvDuB,CAAF,CAAP,CAwDV6B,SAxDU,CAAf;;AA0DA,MAAM8G,kBAAN,SAAiChJ,SAAjC,CAA2C;AAC1CmF,EAAAA,MAAM,GAAG;AACR,UAAM;AACL8D,MAAAA,wBADK;AAEL3E,MAAAA,YAFK;AAGL7B,MAAAA,cAHK;AAILD,MAAAA;AAJK,QAKF,KAAKD,KALT;;AAOA,QAAKC,oBAAL,EAA4B;AAC3B,aAAO,IAAP;AACA;;AAED,WACC,cAAC,IAAD;AAAM,MAAA,KAAK,EAAG5B,MAAM,CAACsI;AAArB,OACC,cAAC,mBAAD;AACC,MAAA,KAAK,EACJzG,cAAc,GACXhC,eAAe,CAAC0I,UAAhB,CAA2BC,IADhB,GAEXP;AAJL,OAOC,cAAC,iBAAD;AACC,MAAA,YAAY,EAAGvE,YADhB;AAEC,MAAA,cAAc,EAAG7B,cAFlB;AAGC,MAAA,aAAa,EAAGwG;AAHjB,MAPD,CADD,CADD;AAiBA;;AA9ByC;;AAiC3C,MAAMI,yBAAyB,GAAGjJ,OAAO,CAAE,CAC1CD,UAAU,CAAE,CAAEgI,MAAF,YAA6C;AAAA,MAAnC;AAAE7D,IAAAA,YAAF;AAAgB8D,IAAAA;AAAhB,GAAmC;AACxD,QAAM;AACLG,IAAAA,aADK;AAELe,IAAAA,sBAFK;AAGLnF,IAAAA;AAHK,MAIFgE,MAAM,CAAE9G,gBAAF,CAJV;AAMA,QAAMO,qBAAqB,GAAGwG,WAAW,KAAK,YAA9C;AACA,QAAMhE,cAAc,GAAGmE,aAAa,CAAEjE,YAAF,CAApC;AACA,QAAMiF,cAAc,GAAGD,sBAAsB,EAA7C;AACA,QAAME,4BAA4B,GAAGrF,4BAA4B,EAAjE;AACA,QAAM8E,wBAAwB,GAC7B,CAAErH,qBAAF,IACA4H,4BADA,IAEAD,cAAc,CAACjF,YAAf,KAAgCA,YAFhC,MAGA;AACEF,EAAAA,cAAc,CAACC,MAAf,KAA0B,CAA1B,IACD;AACA,GAAED,cAAc,CAAEmF,cAAc,CAACE,KAAjB,CANjB,CADD;AASA,SAAO;AACNR,IAAAA;AADM,GAAP;AAGA,CAvBS,CADgC,CAAF,CAAP,CAyB7BD,kBAzB6B,CAAlC","sourcesContent":["/**\n * External dependencies\n */\nimport { View, Platform, TouchableWithoutFeedback } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component, createContext } from '@wordpress/element';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose, withPreferredColorScheme } from '@wordpress/compose';\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tKeyboardAwareFlatList,\n\tReadableContentView,\n\tWIDE_ALIGNMENTS,\n\talignmentHelpers,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport BlockListAppender from '../block-list-appender';\nimport BlockListItem from './block-list-item';\nimport BlockListItemCell from './block-list-item-cell';\nimport {\n\tBlockListProvider,\n\tBlockListConsumer,\n\tDEFAULT_BLOCK_LIST_CONTEXT,\n} from './block-list-context';\nimport { BlockDraggableWrapper } from '../block-draggable';\nimport { store as blockEditorStore } from '../../store';\n\nexport const OnCaretVerticalPositionChange = createContext();\nconst identity = ( x ) => x;\n\nconst stylesMemo = {};\nconst getStyles = (\n\tisRootList,\n\tisStackedHorizontally,\n\thorizontalAlignment\n) => {\n\tif ( isRootList ) {\n\t\treturn;\n\t}\n\tconst styleName = `${ isStackedHorizontally }-${ horizontalAlignment }`;\n\tif ( stylesMemo[ styleName ] ) {\n\t\treturn stylesMemo[ styleName ];\n\t}\n\tconst computedStyles = [\n\t\tisStackedHorizontally && styles.horizontal,\n\t\thorizontalAlignment && styles[ `is-aligned-${ horizontalAlignment }` ],\n\t\tstyles.overflowVisible,\n\t];\n\tstylesMemo[ styleName ] = computedStyles;\n\treturn computedStyles;\n};\n\nexport class BlockList extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.extraData = {\n\t\t\tparentWidth: this.props.parentWidth,\n\t\t\trenderFooterAppender: this.props.renderFooterAppender,\n\t\t\trenderAppender: this.props.renderAppender,\n\t\t\tonDeleteBlock: this.props.onDeleteBlock,\n\t\t\tcontentStyle: this.props.contentStyle,\n\t\t};\n\t\tthis.renderItem = this.renderItem.bind( this );\n\t\tthis.renderBlockListFooter = this.renderBlockListFooter.bind( this );\n\t\tthis.onCaretVerticalPositionChange =\n\t\t\tthis.onCaretVerticalPositionChange.bind( this );\n\t\tthis.scrollViewInnerRef = this.scrollViewInnerRef.bind( this );\n\t\tthis.addBlockToEndOfPost = this.addBlockToEndOfPost.bind( this );\n\t\tthis.shouldFlatListPreventAutomaticScroll =\n\t\t\tthis.shouldFlatListPreventAutomaticScroll.bind( this );\n\t\tthis.shouldShowInnerBlockAppender =\n\t\t\tthis.shouldShowInnerBlockAppender.bind( this );\n\t\tthis.renderEmptyList = this.renderEmptyList.bind( this );\n\t\tthis.getExtraData = this.getExtraData.bind( this );\n\t\tthis.getCellRendererComponent =\n\t\t\tthis.getCellRendererComponent.bind( this );\n\n\t\tthis.onLayout = this.onLayout.bind( this );\n\n\t\tthis.state = {\n\t\t\tblockWidth: this.props.blockWidth || 0,\n\t\t};\n\t}\n\n\taddBlockToEndOfPost( newBlock ) {\n\t\tthis.props.insertBlock( newBlock, this.props.blockCount );\n\t}\n\n\tonCaretVerticalPositionChange( targetId, caretY, previousCaretY ) {\n\t\tKeyboardAwareFlatList.handleCaretVerticalPositionChange(\n\t\t\tthis.scrollViewRef,\n\t\t\ttargetId,\n\t\t\tcaretY,\n\t\t\tpreviousCaretY\n\t\t);\n\t}\n\n\tscrollViewInnerRef( ref ) {\n\t\tthis.scrollViewRef = ref;\n\t}\n\n\tshouldFlatListPreventAutomaticScroll() {\n\t\treturn this.props.isBlockInsertionPointVisible;\n\t}\n\n\tshouldShowInnerBlockAppender() {\n\t\tconst { blockClientIds, renderAppender } = this.props;\n\t\treturn renderAppender && blockClientIds.length > 0;\n\t}\n\n\trenderEmptyList() {\n\t\treturn (\n\t\t\t<EmptyListComponentCompose\n\t\t\t\trootClientId={ this.props.rootClientId }\n\t\t\t\trenderAppender={ this.props.renderAppender }\n\t\t\t\trenderFooterAppender={ this.props.renderFooterAppender }\n\t\t\t/>\n\t\t);\n\t}\n\n\tgetExtraData() {\n\t\tconst {\n\t\t\tparentWidth,\n\t\t\trenderFooterAppender,\n\t\t\tonDeleteBlock,\n\t\t\tcontentStyle,\n\t\t\trenderAppender,\n\t\t\tgridProperties,\n\t\t} = this.props;\n\t\tconst { blockWidth } = this.state;\n\t\tif (\n\t\t\tthis.extraData.parentWidth !== parentWidth ||\n\t\t\tthis.extraData.renderFooterAppender !== renderFooterAppender ||\n\t\t\tthis.extraData.onDeleteBlock !== onDeleteBlock ||\n\t\t\tthis.extraData.contentStyle !== contentStyle ||\n\t\t\tthis.extraData.renderAppender !== renderAppender ||\n\t\t\tthis.extraData.blockWidth !== blockWidth ||\n\t\t\tthis.extraData.gridProperties !== gridProperties\n\t\t) {\n\t\t\tthis.extraData = {\n\t\t\t\tparentWidth,\n\t\t\t\trenderFooterAppender,\n\t\t\t\tonDeleteBlock,\n\t\t\t\tcontentStyle,\n\t\t\t\trenderAppender,\n\t\t\t\tblockWidth,\n\t\t\t\tgridProperties,\n\t\t\t};\n\t\t}\n\t\treturn this.extraData;\n\t}\n\n\tgetCellRendererComponent( { children, item, onLayout } ) {\n\t\tconst { rootClientId } = this.props;\n\t\treturn (\n\t\t\t<BlockListItemCell\n\t\t\t\tchildren={ children }\n\t\t\t\tclientId={ item }\n\t\t\t\tonLayout={ onLayout }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t/>\n\t\t);\n\t}\n\n\tonLayout( { nativeEvent } ) {\n\t\tconst { layout } = nativeEvent;\n\t\tconst { blockWidth } = this.state;\n\t\tconst { isRootList, maxWidth } = this.props;\n\n\t\tconst layoutWidth = Math.floor( layout.width );\n\t\tif ( isRootList && blockWidth !== layoutWidth ) {\n\t\t\tthis.setState( {\n\t\t\t\tblockWidth: Math.min( layoutWidth, maxWidth ),\n\t\t\t} );\n\t\t} else if ( ! isRootList && ! blockWidth ) {\n\t\t\tthis.setState( { blockWidth: Math.min( layoutWidth, maxWidth ) } );\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { isRootList, isRTL } = this.props;\n\t\t// Use of Context to propagate the main scroll ref to its children e.g InnerBlocks.\n\t\tconst blockList = isRootList ? (\n\t\t\t<BlockListProvider\n\t\t\t\tvalue={ {\n\t\t\t\t\t...DEFAULT_BLOCK_LIST_CONTEXT,\n\t\t\t\t\tscrollRef: this.scrollViewRef,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<BlockDraggableWrapper isRTL={ isRTL }>\n\t\t\t\t\t{ ( { onScroll } ) => this.renderList( { onScroll } ) }\n\t\t\t\t</BlockDraggableWrapper>\n\t\t\t</BlockListProvider>\n\t\t) : (\n\t\t\t<BlockListConsumer>\n\t\t\t\t{ ( { scrollRef } ) =>\n\t\t\t\t\tthis.renderList( {\n\t\t\t\t\t\tparentScrollRef: scrollRef,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t</BlockListConsumer>\n\t\t);\n\n\t\treturn (\n\t\t\t<OnCaretVerticalPositionChange.Provider\n\t\t\t\tvalue={ this.onCaretVerticalPositionChange }\n\t\t\t>\n\t\t\t\t{ blockList }\n\t\t\t</OnCaretVerticalPositionChange.Provider>\n\t\t);\n\t}\n\n\trenderList( extraProps = {} ) {\n\t\tconst {\n\t\t\tclearSelectedBlock,\n\t\t\tblockClientIds,\n\t\t\ttitle,\n\t\t\theader,\n\t\t\tisReadOnly,\n\t\t\tisRootList,\n\t\t\thorizontal,\n\t\t\tmarginVertical = styles.defaultBlock.marginTop,\n\t\t\tmarginHorizontal = styles.defaultBlock.marginLeft,\n\t\t\tisFloatingToolbarVisible,\n\t\t\tisStackedHorizontally,\n\t\t\thorizontalAlignment,\n\t\t\tcontentResizeMode,\n\t\t\tblockWidth,\n\t\t} = this.props;\n\t\tconst { parentScrollRef, onScroll } = extraProps;\n\n\t\tconst { blockToolbar, blockBorder, headerToolbar, floatingToolbar } =\n\t\t\tstyles;\n\n\t\tconst containerStyle = {\n\t\t\tflex: isRootList ? 1 : 0,\n\t\t\t// We set negative margin in the parent to remove the edge spacing between parent block and child block in ineer blocks.\n\t\t\tmarginVertical: isRootList ? 0 : -marginVertical,\n\t\t\tmarginHorizontal: isRootList ? 0 : -marginHorizontal,\n\t\t};\n\n\t\tconst isContentStretch = contentResizeMode === 'stretch';\n\t\tconst isMultiBlocks = blockClientIds.length > 1;\n\t\tconst { isWider } = alignmentHelpers;\n\n\t\treturn (\n\t\t\t<View\n\t\t\t\tstyle={ containerStyle }\n\t\t\t\tonAccessibilityEscape={ clearSelectedBlock }\n\t\t\t\tonLayout={ this.onLayout }\n\t\t\t\ttestID=\"block-list-wrapper\"\n\t\t\t>\n\t\t\t\t<KeyboardAwareFlatList\n\t\t\t\t\t{ ...( Platform.OS === 'android'\n\t\t\t\t\t\t? { removeClippedSubviews: false }\n\t\t\t\t\t\t: {} ) } // Disable clipping on Android to fix focus losing. See https://github.com/wordpress-mobile/gutenberg-mobile/pull/741#issuecomment-472746541\n\t\t\t\t\taccessibilityLabel=\"block-list\"\n\t\t\t\t\tautoScroll={ this.props.autoScroll }\n\t\t\t\t\tinnerRef={ ( ref ) => {\n\t\t\t\t\t\tthis.scrollViewInnerRef( parentScrollRef || ref );\n\t\t\t\t\t} }\n\t\t\t\t\textraScrollHeight={\n\t\t\t\t\t\tblockToolbar.height + blockBorder.width\n\t\t\t\t\t}\n\t\t\t\t\tinputAccessoryViewHeight={\n\t\t\t\t\t\theaderToolbar.height +\n\t\t\t\t\t\t( isFloatingToolbarVisible\n\t\t\t\t\t\t\t? floatingToolbar.height\n\t\t\t\t\t\t\t: 0 )\n\t\t\t\t\t}\n\t\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\t\tscrollViewStyle={ [\n\t\t\t\t\t\t{ flex: isRootList ? 1 : 0 },\n\t\t\t\t\t\t! isRootList && styles.overflowVisible,\n\t\t\t\t\t] }\n\t\t\t\t\textraData={ this.getExtraData() }\n\t\t\t\t\tscrollEnabled={ isRootList }\n\t\t\t\t\tcontentContainerStyle={ [\n\t\t\t\t\t\thorizontal && styles.horizontalContentContainer,\n\t\t\t\t\t\tisWider( blockWidth, 'medium' ) &&\n\t\t\t\t\t\t\t( isContentStretch && isMultiBlocks\n\t\t\t\t\t\t\t\t? styles.horizontalContentContainerStretch\n\t\t\t\t\t\t\t\t: styles.horizontalContentContainerCenter ),\n\t\t\t\t\t] }\n\t\t\t\t\tstyle={ getStyles(\n\t\t\t\t\t\tisRootList,\n\t\t\t\t\t\tisStackedHorizontally,\n\t\t\t\t\t\thorizontalAlignment\n\t\t\t\t\t) }\n\t\t\t\t\tdata={ blockClientIds }\n\t\t\t\t\tkeyExtractor={ identity }\n\t\t\t\t\trenderItem={ this.renderItem }\n\t\t\t\t\tCellRendererComponent={ this.getCellRendererComponent }\n\t\t\t\t\tshouldPreventAutomaticScroll={\n\t\t\t\t\t\tthis.shouldFlatListPreventAutomaticScroll\n\t\t\t\t\t}\n\t\t\t\t\ttitle={ title }\n\t\t\t\t\tListHeaderComponent={ header }\n\t\t\t\t\tListEmptyComponent={ ! isReadOnly && this.renderEmptyList }\n\t\t\t\t\tListFooterComponent={ this.renderBlockListFooter }\n\t\t\t\t\tonScroll={ onScroll }\n\t\t\t\t/>\n\t\t\t\t{ this.shouldShowInnerBlockAppender() && (\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tmarginHorizontal:\n\t\t\t\t\t\t\t\tmarginHorizontal -\n\t\t\t\t\t\t\t\tstyles.innerAppender.marginLeft,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockListAppender\n\t\t\t\t\t\t\trootClientId={ this.props.rootClientId }\n\t\t\t\t\t\t\trenderAppender={ this.props.renderAppender }\n\t\t\t\t\t\t\tshowSeparator\n\t\t\t\t\t\t/>\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderItem( { item: clientId } ) {\n\t\tconst {\n\t\t\tcontentResizeMode,\n\t\t\tcontentStyle,\n\t\t\tonAddBlock,\n\t\t\tonDeleteBlock,\n\t\t\trootClientId,\n\t\t\tisStackedHorizontally,\n\t\t\tblockClientIds,\n\t\t\tparentWidth,\n\t\t\tmarginVertical = styles.defaultBlock.marginTop,\n\t\t\tmarginHorizontal = styles.defaultBlock.marginLeft,\n\t\t\tgridProperties,\n\t\t} = this.props;\n\t\tconst { blockWidth } = this.state;\n\n\t\t// Extracting the grid item properties here to avoid\n\t\t// re-renders in the blockListItem component.\n\t\tconst isGridItem = !! gridProperties;\n\t\tconst gridItemProps = gridProperties && {\n\t\t\tnumOfColumns: gridProperties.numColumns,\n\t\t\ttileCount: blockClientIds.length,\n\t\t\ttileIndex: blockClientIds.indexOf( clientId ),\n\t\t};\n\t\treturn (\n\t\t\t<BlockListItem\n\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tparentWidth={ parentWidth }\n\t\t\t\tcontentResizeMode={ contentResizeMode }\n\t\t\t\tcontentStyle={ contentStyle }\n\t\t\t\tonAddBlock={ onAddBlock }\n\t\t\t\tmarginVertical={ marginVertical }\n\t\t\t\tmarginHorizontal={ marginHorizontal }\n\t\t\t\tonDeleteBlock={ onDeleteBlock }\n\t\t\t\tshouldShowInnerBlockAppender={\n\t\t\t\t\tthis.shouldShowInnerBlockAppender\n\t\t\t\t}\n\t\t\t\tblockWidth={ blockWidth }\n\t\t\t\tisGridItem={ isGridItem }\n\t\t\t\t{ ...gridItemProps }\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderBlockListFooter() {\n\t\tconst paragraphBlock = createBlock( 'core/paragraph' );\n\t\tconst {\n\t\t\tisReadOnly,\n\t\t\twithFooter = true,\n\t\t\trenderFooterAppender,\n\t\t} = this.props;\n\n\t\tif ( ! isReadOnly && withFooter ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<TouchableWithoutFeedback\n\t\t\t\t\t\taccessibilityLabel={ __( 'Add paragraph block' ) }\n\t\t\t\t\t\ttestID={ __( 'Add paragraph block' ) }\n\t\t\t\t\t\tonPress={ () => {\n\t\t\t\t\t\t\tthis.addBlockToEndOfPost( paragraphBlock );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={ styles.blockListFooter } />\n\t\t\t\t\t</TouchableWithoutFeedback>\n\t\t\t\t</>\n\t\t\t);\n\t\t} else if ( renderFooterAppender ) {\n\t\t\treturn renderFooterAppender();\n\t\t}\n\t\treturn null;\n\t}\n}\n\nexport default compose( [\n\twithSelect(\n\t\t( select, { rootClientId, orientation, filterInnerBlocks } ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetSettings,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst isStackedHorizontally = orientation === 'horizontal';\n\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\tlet blockClientIds = getBlockOrder( rootClientId );\n\t\t\t// Display only block which fulfill the condition in passed `filterInnerBlocks` function.\n\t\t\tif ( filterInnerBlocks ) {\n\t\t\t\tblockClientIds = filterInnerBlocks( blockClientIds );\n\t\t\t}\n\n\t\t\tconst { maxWidth } = getSettings();\n\t\t\tconst isReadOnly = getSettings().readOnly;\n\n\t\t\tconst blockCount = getBlockCount();\n\t\t\tconst hasRootInnerBlocks = !! blockCount;\n\n\t\t\tconst isFloatingToolbarVisible =\n\t\t\t\t!! selectedBlockClientId && hasRootInnerBlocks;\n\t\t\tconst isRTL = getSettings().isRTL;\n\n\t\t\treturn {\n\t\t\t\tblockClientIds,\n\t\t\t\tblockCount,\n\t\t\t\tisBlockInsertionPointVisible:\n\t\t\t\t\tPlatform.OS === 'ios' && isBlockInsertionPointVisible(),\n\t\t\t\tisReadOnly,\n\t\t\t\tisRootList: rootClientId === undefined,\n\t\t\t\tisFloatingToolbarVisible,\n\t\t\t\tisStackedHorizontally,\n\t\t\t\tmaxWidth,\n\t\t\t\tisRTL,\n\t\t\t};\n\t\t}\n\t),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { insertBlock, replaceBlock, clearSelectedBlock } =\n\t\t\tdispatch( blockEditorStore );\n\n\t\treturn {\n\t\t\tclearSelectedBlock,\n\t\t\tinsertBlock,\n\t\t\treplaceBlock,\n\t\t};\n\t} ),\n\twithPreferredColorScheme,\n] )( BlockList );\n\nclass EmptyListComponent extends Component {\n\trender() {\n\t\tconst {\n\t\t\tshouldShowInsertionPoint,\n\t\t\trootClientId,\n\t\t\trenderAppender,\n\t\t\trenderFooterAppender,\n\t\t} = this.props;\n\n\t\tif ( renderFooterAppender ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<View style={ styles.defaultAppender }>\n\t\t\t\t<ReadableContentView\n\t\t\t\t\talign={\n\t\t\t\t\t\trenderAppender\n\t\t\t\t\t\t\t? WIDE_ALIGNMENTS.alignments.full\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<BlockListAppender\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\trenderAppender={ renderAppender }\n\t\t\t\t\t\tshowSeparator={ shouldShowInsertionPoint }\n\t\t\t\t\t/>\n\t\t\t\t</ReadableContentView>\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst EmptyListComponentCompose = compose( [\n\twithSelect( ( select, { rootClientId, orientation } ) => {\n\t\tconst {\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockInsertionPoint,\n\t\t\tisBlockInsertionPointVisible,\n\t\t} = select( blockEditorStore );\n\n\t\tconst isStackedHorizontally = orientation === 'horizontal';\n\t\tconst blockClientIds = getBlockOrder( rootClientId );\n\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\tconst blockInsertionPointIsVisible = isBlockInsertionPointVisible();\n\t\tconst shouldShowInsertionPoint =\n\t\t\t! isStackedHorizontally &&\n\t\t\tblockInsertionPointIsVisible &&\n\t\t\tinsertionPoint.rootClientId === rootClientId &&\n\t\t\t// If list is empty, show the insertion point (via the default appender)\n\t\t\t( blockClientIds.length === 0 ||\n\t\t\t\t// Or if the insertion point is right before the denoted block.\n\t\t\t\t! blockClientIds[ insertionPoint.index ] );\n\n\t\treturn {\n\t\t\tshouldShowInsertionPoint,\n\t\t};\n\t} ),\n] )( EmptyListComponent );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/index.native.js"],"names":["View","Platform","TouchableWithoutFeedback","Component","createContext","withDispatch","withSelect","compose","withPreferredColorScheme","createBlock","KeyboardAwareFlatList","ReadableContentView","WIDE_ALIGNMENTS","alignmentHelpers","__","styles","BlockListAppender","BlockListItem","BlockListItemCell","BlockListProvider","BlockListConsumer","DEFAULT_BLOCK_LIST_CONTEXT","BlockDraggableWrapper","store","blockEditorStore","OnCaretVerticalPositionChange","identity","x","stylesMemo","getStyles","isRootList","isStackedHorizontally","horizontalAlignment","styleName","computedStyles","horizontal","overflowVisible","BlockList","constructor","arguments","extraData","parentWidth","props","renderFooterAppender","renderAppender","onDeleteBlock","contentStyle","renderItem","bind","renderBlockListFooter","onCaretVerticalPositionChange","scrollViewInnerRef","addBlockToEndOfPost","shouldFlatListPreventAutomaticScroll","shouldShowInnerBlockAppender","renderEmptyList","getExtraData","getCellRendererComponent","onLayout","state","blockWidth","newBlock","insertBlock","blockCount","targetId","caretY","previousCaretY","handleCaretVerticalPositionChange","scrollViewRef","ref","isBlockInsertionPointVisible","blockClientIds","length","rootClientId","gridProperties","children","item","nativeEvent","layout","maxWidth","layoutWidth","Math","floor","width","setState","min","render","isRTL","blockList","scrollRef","onScroll","renderList","parentScrollRef","extraProps","clearSelectedBlock","title","header","isReadOnly","marginVertical","defaultBlock","marginTop","marginHorizontal","marginLeft","isFloatingToolbarVisible","contentResizeMode","blockToolbar","blockBorder","headerToolbar","floatingToolbar","containerStyle","flex","isContentStretch","isMultiBlocks","isWider","OS","removeClippedSubviews","autoScroll","height","horizontalContentContainer","horizontalContentContainerStretch","horizontalContentContainerCenter","innerAppender","clientId","onAddBlock","isGridItem","gridItemProps","numOfColumns","numColumns","tileCount","tileIndex","indexOf","paragraphBlock","withFooter","blockListFooter","select","orientation","filterInnerBlocks","getBlockCount","getBlockOrder","getSelectedBlockClientId","getSettings","selectedBlockClientId","readOnly","hasRootInnerBlocks","undefined","dispatch","replaceBlock","EmptyListComponent","shouldShowInsertionPoint","defaultAppender","alignments","full","EmptyListComponentCompose","getBlockInsertionPoint","insertionPoint","blockInsertionPointIsVisible","index"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View, Platform, TouchableWithoutFeedback } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component, createContext } from '@wordpress/element';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose, withPreferredColorScheme } from '@wordpress/compose';\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tKeyboardAwareFlatList,\n\tReadableContentView,\n\tWIDE_ALIGNMENTS,\n\talignmentHelpers,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport BlockListAppender from '../block-list-appender';\nimport BlockListItem from './block-list-item';\nimport BlockListItemCell from './block-list-item-cell';\nimport {\n\tBlockListProvider,\n\tBlockListConsumer,\n\tDEFAULT_BLOCK_LIST_CONTEXT,\n} from './block-list-context';\nimport { BlockDraggableWrapper } from '../block-draggable';\nimport { store as blockEditorStore } from '../../store';\n\nexport const OnCaretVerticalPositionChange = createContext();\nconst identity = ( x ) => x;\n\nconst stylesMemo = {};\nconst getStyles = (\n\tisRootList,\n\tisStackedHorizontally,\n\thorizontalAlignment\n) => {\n\tif ( isRootList ) {\n\t\treturn;\n\t}\n\tconst styleName = `${ isStackedHorizontally }-${ horizontalAlignment }`;\n\tif ( stylesMemo[ styleName ] ) {\n\t\treturn stylesMemo[ styleName ];\n\t}\n\tconst computedStyles = [\n\t\tisStackedHorizontally && styles.horizontal,\n\t\thorizontalAlignment && styles[ `is-aligned-${ horizontalAlignment }` ],\n\t\tstyles.overflowVisible,\n\t];\n\tstylesMemo[ styleName ] = computedStyles;\n\treturn computedStyles;\n};\n\nexport class BlockList extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.extraData = {\n\t\t\tparentWidth: this.props.parentWidth,\n\t\t\trenderFooterAppender: this.props.renderFooterAppender,\n\t\t\trenderAppender: this.props.renderAppender,\n\t\t\tonDeleteBlock: this.props.onDeleteBlock,\n\t\t\tcontentStyle: this.props.contentStyle,\n\t\t};\n\t\tthis.renderItem = this.renderItem.bind( this );\n\t\tthis.renderBlockListFooter = this.renderBlockListFooter.bind( this );\n\t\tthis.onCaretVerticalPositionChange =\n\t\t\tthis.onCaretVerticalPositionChange.bind( this );\n\t\tthis.scrollViewInnerRef = this.scrollViewInnerRef.bind( this );\n\t\tthis.addBlockToEndOfPost = this.addBlockToEndOfPost.bind( this );\n\t\tthis.shouldFlatListPreventAutomaticScroll =\n\t\t\tthis.shouldFlatListPreventAutomaticScroll.bind( this );\n\t\tthis.shouldShowInnerBlockAppender =\n\t\t\tthis.shouldShowInnerBlockAppender.bind( this );\n\t\tthis.renderEmptyList = this.renderEmptyList.bind( this );\n\t\tthis.getExtraData = this.getExtraData.bind( this );\n\t\tthis.getCellRendererComponent =\n\t\t\tthis.getCellRendererComponent.bind( this );\n\n\t\tthis.onLayout = this.onLayout.bind( this );\n\n\t\tthis.state = {\n\t\t\tblockWidth: this.props.blockWidth || 0,\n\t\t};\n\t}\n\n\taddBlockToEndOfPost( newBlock ) {\n\t\tthis.props.insertBlock( newBlock, this.props.blockCount );\n\t}\n\n\tonCaretVerticalPositionChange( targetId, caretY, previousCaretY ) {\n\t\tKeyboardAwareFlatList.handleCaretVerticalPositionChange(\n\t\t\tthis.scrollViewRef,\n\t\t\ttargetId,\n\t\t\tcaretY,\n\t\t\tpreviousCaretY\n\t\t);\n\t}\n\n\tscrollViewInnerRef( ref ) {\n\t\tthis.scrollViewRef = ref;\n\t}\n\n\tshouldFlatListPreventAutomaticScroll() {\n\t\treturn this.props.isBlockInsertionPointVisible;\n\t}\n\n\tshouldShowInnerBlockAppender() {\n\t\tconst { blockClientIds, renderAppender } = this.props;\n\t\treturn renderAppender && blockClientIds.length > 0;\n\t}\n\n\trenderEmptyList() {\n\t\treturn (\n\t\t\t<EmptyListComponentCompose\n\t\t\t\trootClientId={ this.props.rootClientId }\n\t\t\t\trenderAppender={ this.props.renderAppender }\n\t\t\t\trenderFooterAppender={ this.props.renderFooterAppender }\n\t\t\t/>\n\t\t);\n\t}\n\n\tgetExtraData() {\n\t\tconst {\n\t\t\tparentWidth,\n\t\t\trenderFooterAppender,\n\t\t\tonDeleteBlock,\n\t\t\tcontentStyle,\n\t\t\trenderAppender,\n\t\t\tgridProperties,\n\t\t} = this.props;\n\t\tconst { blockWidth } = this.state;\n\t\tif (\n\t\t\tthis.extraData.parentWidth !== parentWidth ||\n\t\t\tthis.extraData.renderFooterAppender !== renderFooterAppender ||\n\t\t\tthis.extraData.onDeleteBlock !== onDeleteBlock ||\n\t\t\tthis.extraData.contentStyle !== contentStyle ||\n\t\t\tthis.extraData.renderAppender !== renderAppender ||\n\t\t\tthis.extraData.blockWidth !== blockWidth ||\n\t\t\tthis.extraData.gridProperties !== gridProperties\n\t\t) {\n\t\t\tthis.extraData = {\n\t\t\t\tparentWidth,\n\t\t\t\trenderFooterAppender,\n\t\t\t\tonDeleteBlock,\n\t\t\t\tcontentStyle,\n\t\t\t\trenderAppender,\n\t\t\t\tblockWidth,\n\t\t\t\tgridProperties,\n\t\t\t};\n\t\t}\n\t\treturn this.extraData;\n\t}\n\n\tgetCellRendererComponent( { children, item, onLayout } ) {\n\t\tconst { rootClientId } = this.props;\n\t\treturn (\n\t\t\t<BlockListItemCell\n\t\t\t\tchildren={ children }\n\t\t\t\tclientId={ item }\n\t\t\t\tonLayout={ onLayout }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t/>\n\t\t);\n\t}\n\n\tonLayout( { nativeEvent } ) {\n\t\tconst { layout } = nativeEvent;\n\t\tconst { blockWidth } = this.state;\n\t\tconst { isRootList, maxWidth } = this.props;\n\n\t\tconst layoutWidth = Math.floor( layout.width );\n\t\tif ( isRootList && blockWidth !== layoutWidth ) {\n\t\t\tthis.setState( {\n\t\t\t\tblockWidth: Math.min( layoutWidth, maxWidth ),\n\t\t\t} );\n\t\t} else if ( ! isRootList && ! blockWidth ) {\n\t\t\tthis.setState( { blockWidth: Math.min( layoutWidth, maxWidth ) } );\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { isRootList, isRTL } = this.props;\n\t\t// Use of Context to propagate the main scroll ref to its children e.g InnerBlocks.\n\t\tconst blockList = isRootList ? (\n\t\t\t<BlockListProvider\n\t\t\t\tvalue={ {\n\t\t\t\t\t...DEFAULT_BLOCK_LIST_CONTEXT,\n\t\t\t\t\tscrollRef: this.scrollViewRef,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<BlockDraggableWrapper isRTL={ isRTL }>\n\t\t\t\t\t{ ( { onScroll } ) => this.renderList( { onScroll } ) }\n\t\t\t\t</BlockDraggableWrapper>\n\t\t\t</BlockListProvider>\n\t\t) : (\n\t\t\t<BlockListConsumer>\n\t\t\t\t{ ( { scrollRef } ) =>\n\t\t\t\t\tthis.renderList( {\n\t\t\t\t\t\tparentScrollRef: scrollRef,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t</BlockListConsumer>\n\t\t);\n\n\t\treturn (\n\t\t\t<OnCaretVerticalPositionChange.Provider\n\t\t\t\tvalue={ this.onCaretVerticalPositionChange }\n\t\t\t>\n\t\t\t\t{ blockList }\n\t\t\t</OnCaretVerticalPositionChange.Provider>\n\t\t);\n\t}\n\n\trenderList( extraProps = {} ) {\n\t\tconst {\n\t\t\tclearSelectedBlock,\n\t\t\tblockClientIds,\n\t\t\ttitle,\n\t\t\theader,\n\t\t\tisReadOnly,\n\t\t\tisRootList,\n\t\t\thorizontal,\n\t\t\tmarginVertical = styles.defaultBlock.marginTop,\n\t\t\tmarginHorizontal = styles.defaultBlock.marginLeft,\n\t\t\tisFloatingToolbarVisible,\n\t\t\tisStackedHorizontally,\n\t\t\thorizontalAlignment,\n\t\t\tcontentResizeMode,\n\t\t\tblockWidth,\n\t\t} = this.props;\n\t\tconst { parentScrollRef, onScroll } = extraProps;\n\n\t\tconst { blockToolbar, blockBorder, headerToolbar, floatingToolbar } =\n\t\t\tstyles;\n\n\t\tconst containerStyle = {\n\t\t\tflex: isRootList ? 1 : 0,\n\t\t\t// We set negative margin in the parent to remove the edge spacing between parent block and child block in ineer blocks.\n\t\t\tmarginVertical: isRootList ? 0 : -marginVertical,\n\t\t\tmarginHorizontal: isRootList ? 0 : -marginHorizontal,\n\t\t};\n\n\t\tconst isContentStretch = contentResizeMode === 'stretch';\n\t\tconst isMultiBlocks = blockClientIds.length > 1;\n\t\tconst { isWider } = alignmentHelpers;\n\n\t\treturn (\n\t\t\t<View\n\t\t\t\tstyle={ containerStyle }\n\t\t\t\tonAccessibilityEscape={ clearSelectedBlock }\n\t\t\t\tonLayout={ this.onLayout }\n\t\t\t\ttestID=\"block-list-wrapper\"\n\t\t\t>\n\t\t\t\t<KeyboardAwareFlatList\n\t\t\t\t\t{ ...( Platform.OS === 'android'\n\t\t\t\t\t\t? { removeClippedSubviews: false }\n\t\t\t\t\t\t: {} ) } // Disable clipping on Android to fix focus losing. See https://github.com/wordpress-mobile/gutenberg-mobile/pull/741#issuecomment-472746541\n\t\t\t\t\taccessibilityLabel=\"block-list\"\n\t\t\t\t\tautoScroll={ this.props.autoScroll }\n\t\t\t\t\tinnerRef={ ( ref ) => {\n\t\t\t\t\t\tthis.scrollViewInnerRef( parentScrollRef || ref );\n\t\t\t\t\t} }\n\t\t\t\t\textraScrollHeight={\n\t\t\t\t\t\tblockToolbar.height + blockBorder.width\n\t\t\t\t\t}\n\t\t\t\t\tinputAccessoryViewHeight={\n\t\t\t\t\t\theaderToolbar.height +\n\t\t\t\t\t\t( isFloatingToolbarVisible\n\t\t\t\t\t\t\t? floatingToolbar.height\n\t\t\t\t\t\t\t: 0 )\n\t\t\t\t\t}\n\t\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\t\tscrollViewStyle={ [\n\t\t\t\t\t\t{ flex: isRootList ? 1 : 0 },\n\t\t\t\t\t\t! isRootList && styles.overflowVisible,\n\t\t\t\t\t] }\n\t\t\t\t\textraData={ this.getExtraData() }\n\t\t\t\t\tscrollEnabled={ isRootList }\n\t\t\t\t\tcontentContainerStyle={ [\n\t\t\t\t\t\thorizontal && styles.horizontalContentContainer,\n\t\t\t\t\t\tisWider( blockWidth, 'medium' ) &&\n\t\t\t\t\t\t\t( isContentStretch && isMultiBlocks\n\t\t\t\t\t\t\t\t? styles.horizontalContentContainerStretch\n\t\t\t\t\t\t\t\t: styles.horizontalContentContainerCenter ),\n\t\t\t\t\t] }\n\t\t\t\t\tstyle={ getStyles(\n\t\t\t\t\t\tisRootList,\n\t\t\t\t\t\tisStackedHorizontally,\n\t\t\t\t\t\thorizontalAlignment\n\t\t\t\t\t) }\n\t\t\t\t\tdata={ blockClientIds }\n\t\t\t\t\tkeyExtractor={ identity }\n\t\t\t\t\trenderItem={ this.renderItem }\n\t\t\t\t\tCellRendererComponent={ this.getCellRendererComponent }\n\t\t\t\t\tshouldPreventAutomaticScroll={\n\t\t\t\t\t\tthis.shouldFlatListPreventAutomaticScroll\n\t\t\t\t\t}\n\t\t\t\t\ttitle={ title }\n\t\t\t\t\tListHeaderComponent={ header }\n\t\t\t\t\tListEmptyComponent={ ! isReadOnly && this.renderEmptyList }\n\t\t\t\t\tListFooterComponent={ this.renderBlockListFooter }\n\t\t\t\t\tonScroll={ onScroll }\n\t\t\t\t/>\n\t\t\t\t{ this.shouldShowInnerBlockAppender() && (\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tmarginHorizontal:\n\t\t\t\t\t\t\t\tmarginHorizontal -\n\t\t\t\t\t\t\t\tstyles.innerAppender.marginLeft,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockListAppender\n\t\t\t\t\t\t\trootClientId={ this.props.rootClientId }\n\t\t\t\t\t\t\trenderAppender={ this.props.renderAppender }\n\t\t\t\t\t\t\tshowSeparator\n\t\t\t\t\t\t/>\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderItem( { item: clientId } ) {\n\t\tconst {\n\t\t\tcontentResizeMode,\n\t\t\tcontentStyle,\n\t\t\tonAddBlock,\n\t\t\tonDeleteBlock,\n\t\t\trootClientId,\n\t\t\tisStackedHorizontally,\n\t\t\tblockClientIds,\n\t\t\tparentWidth,\n\t\t\tmarginVertical = styles.defaultBlock.marginTop,\n\t\t\tmarginHorizontal = styles.defaultBlock.marginLeft,\n\t\t\tgridProperties,\n\t\t} = this.props;\n\t\tconst { blockWidth } = this.state;\n\n\t\t// Extracting the grid item properties here to avoid\n\t\t// re-renders in the blockListItem component.\n\t\tconst isGridItem = !! gridProperties;\n\t\tconst gridItemProps = gridProperties && {\n\t\t\tnumOfColumns: gridProperties.numColumns,\n\t\t\ttileCount: blockClientIds.length,\n\t\t\ttileIndex: blockClientIds.indexOf( clientId ),\n\t\t};\n\t\treturn (\n\t\t\t<BlockListItem\n\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tparentWidth={ parentWidth }\n\t\t\t\tcontentResizeMode={ contentResizeMode }\n\t\t\t\tcontentStyle={ contentStyle }\n\t\t\t\tonAddBlock={ onAddBlock }\n\t\t\t\tmarginVertical={ marginVertical }\n\t\t\t\tmarginHorizontal={ marginHorizontal }\n\t\t\t\tonDeleteBlock={ onDeleteBlock }\n\t\t\t\tshouldShowInnerBlockAppender={\n\t\t\t\t\tthis.shouldShowInnerBlockAppender\n\t\t\t\t}\n\t\t\t\tblockWidth={ blockWidth }\n\t\t\t\tisGridItem={ isGridItem }\n\t\t\t\t{ ...gridItemProps }\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderBlockListFooter() {\n\t\tconst paragraphBlock = createBlock( 'core/paragraph' );\n\t\tconst {\n\t\t\tisReadOnly,\n\t\t\twithFooter = true,\n\t\t\trenderFooterAppender,\n\t\t} = this.props;\n\n\t\tif ( ! isReadOnly && withFooter ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<TouchableWithoutFeedback\n\t\t\t\t\t\taccessibilityLabel={ __( 'Add paragraph block' ) }\n\t\t\t\t\t\ttestID={ __( 'Add paragraph block' ) }\n\t\t\t\t\t\tonPress={ () => {\n\t\t\t\t\t\t\tthis.addBlockToEndOfPost( paragraphBlock );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={ styles.blockListFooter } />\n\t\t\t\t\t</TouchableWithoutFeedback>\n\t\t\t\t</>\n\t\t\t);\n\t\t} else if ( renderFooterAppender ) {\n\t\t\treturn renderFooterAppender();\n\t\t}\n\t\treturn null;\n\t}\n}\n\nexport default compose( [\n\twithSelect(\n\t\t( select, { rootClientId, orientation, filterInnerBlocks } ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetSettings,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst isStackedHorizontally = orientation === 'horizontal';\n\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\tlet blockClientIds = getBlockOrder( rootClientId );\n\t\t\t// Display only block which fulfill the condition in passed `filterInnerBlocks` function.\n\t\t\tif ( filterInnerBlocks ) {\n\t\t\t\tblockClientIds = filterInnerBlocks( blockClientIds );\n\t\t\t}\n\n\t\t\tconst { maxWidth } = getSettings();\n\t\t\tconst isReadOnly = getSettings().readOnly;\n\n\t\t\tconst blockCount = getBlockCount();\n\t\t\tconst hasRootInnerBlocks = !! blockCount;\n\n\t\t\tconst isFloatingToolbarVisible =\n\t\t\t\t!! selectedBlockClientId && hasRootInnerBlocks;\n\t\t\tconst isRTL = getSettings().isRTL;\n\n\t\t\treturn {\n\t\t\t\tblockClientIds,\n\t\t\t\tblockCount,\n\t\t\t\tisBlockInsertionPointVisible:\n\t\t\t\t\tPlatform.OS === 'ios' && isBlockInsertionPointVisible(),\n\t\t\t\tisReadOnly,\n\t\t\t\tisRootList: rootClientId === undefined,\n\t\t\t\tisFloatingToolbarVisible,\n\t\t\t\tisStackedHorizontally,\n\t\t\t\tmaxWidth,\n\t\t\t\tisRTL,\n\t\t\t};\n\t\t}\n\t),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { insertBlock, replaceBlock, clearSelectedBlock } =\n\t\t\tdispatch( blockEditorStore );\n\n\t\treturn {\n\t\t\tclearSelectedBlock,\n\t\t\tinsertBlock,\n\t\t\treplaceBlock,\n\t\t};\n\t} ),\n\twithPreferredColorScheme,\n] )( BlockList );\n\nclass EmptyListComponent extends Component {\n\trender() {\n\t\tconst {\n\t\t\tshouldShowInsertionPoint,\n\t\t\trootClientId,\n\t\t\trenderAppender,\n\t\t\trenderFooterAppender,\n\t\t} = this.props;\n\n\t\tif ( renderFooterAppender || renderAppender === false ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<View style={ styles.defaultAppender }>\n\t\t\t\t<ReadableContentView\n\t\t\t\t\talign={\n\t\t\t\t\t\trenderAppender\n\t\t\t\t\t\t\t? WIDE_ALIGNMENTS.alignments.full\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<BlockListAppender\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\trenderAppender={ renderAppender }\n\t\t\t\t\t\tshowSeparator={ shouldShowInsertionPoint }\n\t\t\t\t\t/>\n\t\t\t\t</ReadableContentView>\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst EmptyListComponentCompose = compose( [\n\twithSelect( ( select, { rootClientId, orientation } ) => {\n\t\tconst {\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockInsertionPoint,\n\t\t\tisBlockInsertionPointVisible,\n\t\t} = select( blockEditorStore );\n\n\t\tconst isStackedHorizontally = orientation === 'horizontal';\n\t\tconst blockClientIds = getBlockOrder( rootClientId );\n\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\tconst blockInsertionPointIsVisible = isBlockInsertionPointVisible();\n\t\tconst shouldShowInsertionPoint =\n\t\t\t! isStackedHorizontally &&\n\t\t\tblockInsertionPointIsVisible &&\n\t\t\tinsertionPoint.rootClientId === rootClientId &&\n\t\t\t// If list is empty, show the insertion point (via the default appender)\n\t\t\t( blockClientIds.length === 0 ||\n\t\t\t\t// Or if the insertion point is right before the denoted block.\n\t\t\t\t! blockClientIds[ insertionPoint.index ] );\n\n\t\treturn {\n\t\t\tshouldShowInsertionPoint,\n\t\t};\n\t} ),\n] )( EmptyListComponent );\n"]}
@@ -89,7 +89,7 @@ export default function BlockLockModal(_ref) {
89
89
  overlayClassName: "block-editor-block-lock-modal",
90
90
  closeLabel: __('Close'),
91
91
  onRequestClose: onClose
92
- }, createElement("form", {
92
+ }, createElement("p", null, __('Choose specific attributes to restrict or lock all available options.')), createElement("form", {
93
93
  onSubmit: event => {
94
94
  event.preventDefault();
95
95
  updateBlockAttributes([clientId], {
@@ -98,7 +98,7 @@ export default function BlockLockModal(_ref) {
98
98
  });
99
99
  onClose();
100
100
  }
101
- }, createElement("p", null, __('Choose specific attributes to restrict or lock all available options.')), createElement("div", {
101
+ }, createElement("div", {
102
102
  role: "group",
103
103
  "aria-labelledby": instanceId,
104
104
  className: "block-editor-block-lock-modal__options"
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/modal.js"],"names":["__","sprintf","useEffect","useState","Button","CheckboxControl","Flex","FlexItem","Icon","Modal","ToggleControl","lock","lockIcon","unlock","unlockIcon","useInstanceId","useDispatch","useSelect","isReusableBlock","getBlockType","useBlockLock","useBlockDisplayInformation","store","blockEditorStore","getTemplateLockValue","remove","move","BlockLockModal","clientId","onClose","setLock","canEdit","canMove","canRemove","isReusable","templateLock","hasTemplateLock","select","getBlockName","getBlockAttributes","blockName","blockType","attributes","applyTemplateLock","setApplyTemplateLock","updateBlockAttributes","blockInformation","instanceId","edit","isAllChecked","Object","values","every","Boolean","isMixed","some","title","event","preventDefault","undefined","newValue","prevLock"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon,\n\tModal,\n\tToggleControl,\n} from '@wordpress/components';\nimport { lock as lockIcon, unlock as unlockIcon } from '@wordpress/icons';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { isReusableBlock, getBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useBlockLock from './use-block-lock';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\nfunction getTemplateLockValue( lock ) {\n\t// Prevents all operations.\n\tif ( lock.remove && lock.move ) {\n\t\treturn 'all';\n\t}\n\n\t// Prevents inserting or removing blocks, but allows moving existing blocks.\n\tif ( lock.remove && ! lock.move ) {\n\t\treturn 'insert';\n\t}\n\n\treturn false;\n}\n\nexport default function BlockLockModal( { clientId, onClose } ) {\n\tconst [ lock, setLock ] = useState( { move: false, remove: false } );\n\tconst { canEdit, canMove, canRemove } = useBlockLock( clientId );\n\tconst { isReusable, templateLock, hasTemplateLock } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst blockType = getBlockType( blockName );\n\n\t\t\treturn {\n\t\t\t\tisReusable: isReusableBlock( blockType ),\n\t\t\t\ttemplateLock: getBlockAttributes( clientId )?.templateLock,\n\t\t\t\thasTemplateLock: !! blockType?.attributes?.templateLock,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst [ applyTemplateLock, setApplyTemplateLock ] = useState(\n\t\t!! templateLock\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst instanceId = useInstanceId(\n\t\tBlockLockModal,\n\t\t'block-editor-block-lock-modal__options-title'\n\t);\n\n\tuseEffect( () => {\n\t\tsetLock( {\n\t\t\tmove: ! canMove,\n\t\t\tremove: ! canRemove,\n\t\t\t...( isReusable ? { edit: ! canEdit } : {} ),\n\t\t} );\n\t}, [ canEdit, canMove, canRemove, isReusable ] );\n\n\tconst isAllChecked = Object.values( lock ).every( Boolean );\n\tconst isMixed = Object.values( lock ).some( Boolean ) && ! isAllChecked;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ sprintf(\n\t\t\t\t/* translators: %s: Name of the block. */\n\t\t\t\t__( 'Lock %s' ),\n\t\t\t\tblockInformation.title\n\t\t\t) }\n\t\t\toverlayClassName=\"block-editor-block-lock-modal\"\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tupdateBlockAttributes( [ clientId ], {\n\t\t\t\t\t\tlock,\n\t\t\t\t\t\ttemplateLock: applyTemplateLock\n\t\t\t\t\t\t\t? getTemplateLockValue( lock )\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t} );\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Choose specific attributes to restrict or lock all available options.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t\t<div\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\taria-labelledby={ instanceId }\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options-title\"\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<span id={ instanceId }>{ __( 'Lock all' ) }</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ isAllChecked }\n\t\t\t\t\t\tindeterminate={ isMixed }\n\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\tsetLock( {\n\t\t\t\t\t\t\t\tmove: newValue,\n\t\t\t\t\t\t\t\tremove: newValue,\n\t\t\t\t\t\t\t\t...( isReusable ? { edit: newValue } : {} ),\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ul className=\"block-editor-block-lock-modal__checklist\">\n\t\t\t\t\t\t{ isReusable && (\n\t\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Restrict editing' ) }\n\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t\tlock.edit\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tchecked={ !! lock.edit }\n\t\t\t\t\t\t\t\t\tonChange={ ( edit ) =>\n\t\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\t\tedit,\n\t\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Disable movement' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.move\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.move }\n\t\t\t\t\t\t\t\tonChange={ ( move ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tmove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Prevent removal' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.remove\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.remove }\n\t\t\t\t\t\t\t\tonChange={ ( remove ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tremove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t{ hasTemplateLock && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__template-lock\"\n\t\t\t\t\t\t\tlabel={ __( 'Apply to all blocks inside' ) }\n\t\t\t\t\t\t\tchecked={ applyTemplateLock }\n\t\t\t\t\t\t\tdisabled={ lock.move && ! lock.remove }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetApplyTemplateLock( ! applyTemplateLock )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/modal.js"],"names":["__","sprintf","useEffect","useState","Button","CheckboxControl","Flex","FlexItem","Icon","Modal","ToggleControl","lock","lockIcon","unlock","unlockIcon","useInstanceId","useDispatch","useSelect","isReusableBlock","getBlockType","useBlockLock","useBlockDisplayInformation","store","blockEditorStore","getTemplateLockValue","remove","move","BlockLockModal","clientId","onClose","setLock","canEdit","canMove","canRemove","isReusable","templateLock","hasTemplateLock","select","getBlockName","getBlockAttributes","blockName","blockType","attributes","applyTemplateLock","setApplyTemplateLock","updateBlockAttributes","blockInformation","instanceId","edit","isAllChecked","Object","values","every","Boolean","isMixed","some","title","event","preventDefault","undefined","newValue","prevLock"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon,\n\tModal,\n\tToggleControl,\n} from '@wordpress/components';\nimport { lock as lockIcon, unlock as unlockIcon } from '@wordpress/icons';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { isReusableBlock, getBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useBlockLock from './use-block-lock';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\nfunction getTemplateLockValue( lock ) {\n\t// Prevents all operations.\n\tif ( lock.remove && lock.move ) {\n\t\treturn 'all';\n\t}\n\n\t// Prevents inserting or removing blocks, but allows moving existing blocks.\n\tif ( lock.remove && ! lock.move ) {\n\t\treturn 'insert';\n\t}\n\n\treturn false;\n}\n\nexport default function BlockLockModal( { clientId, onClose } ) {\n\tconst [ lock, setLock ] = useState( { move: false, remove: false } );\n\tconst { canEdit, canMove, canRemove } = useBlockLock( clientId );\n\tconst { isReusable, templateLock, hasTemplateLock } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst blockType = getBlockType( blockName );\n\n\t\t\treturn {\n\t\t\t\tisReusable: isReusableBlock( blockType ),\n\t\t\t\ttemplateLock: getBlockAttributes( clientId )?.templateLock,\n\t\t\t\thasTemplateLock: !! blockType?.attributes?.templateLock,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst [ applyTemplateLock, setApplyTemplateLock ] = useState(\n\t\t!! templateLock\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst instanceId = useInstanceId(\n\t\tBlockLockModal,\n\t\t'block-editor-block-lock-modal__options-title'\n\t);\n\n\tuseEffect( () => {\n\t\tsetLock( {\n\t\t\tmove: ! canMove,\n\t\t\tremove: ! canRemove,\n\t\t\t...( isReusable ? { edit: ! canEdit } : {} ),\n\t\t} );\n\t}, [ canEdit, canMove, canRemove, isReusable ] );\n\n\tconst isAllChecked = Object.values( lock ).every( Boolean );\n\tconst isMixed = Object.values( lock ).some( Boolean ) && ! isAllChecked;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ sprintf(\n\t\t\t\t/* translators: %s: Name of the block. */\n\t\t\t\t__( 'Lock %s' ),\n\t\t\t\tblockInformation.title\n\t\t\t) }\n\t\t\toverlayClassName=\"block-editor-block-lock-modal\"\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'Choose specific attributes to restrict or lock all available options.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tupdateBlockAttributes( [ clientId ], {\n\t\t\t\t\t\tlock,\n\t\t\t\t\t\ttemplateLock: applyTemplateLock\n\t\t\t\t\t\t\t? getTemplateLockValue( lock )\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t} );\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\taria-labelledby={ instanceId }\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options-title\"\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<span id={ instanceId }>{ __( 'Lock all' ) }</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ isAllChecked }\n\t\t\t\t\t\tindeterminate={ isMixed }\n\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\tsetLock( {\n\t\t\t\t\t\t\t\tmove: newValue,\n\t\t\t\t\t\t\t\tremove: newValue,\n\t\t\t\t\t\t\t\t...( isReusable ? { edit: newValue } : {} ),\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ul className=\"block-editor-block-lock-modal__checklist\">\n\t\t\t\t\t\t{ isReusable && (\n\t\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Restrict editing' ) }\n\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t\tlock.edit\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tchecked={ !! lock.edit }\n\t\t\t\t\t\t\t\t\tonChange={ ( edit ) =>\n\t\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\t\tedit,\n\t\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Disable movement' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.move\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.move }\n\t\t\t\t\t\t\t\tonChange={ ( move ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tmove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Prevent removal' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.remove\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.remove }\n\t\t\t\t\t\t\t\tonChange={ ( remove ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tremove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t{ hasTemplateLock && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__template-lock\"\n\t\t\t\t\t\t\tlabel={ __( 'Apply to all blocks inside' ) }\n\t\t\t\t\t\t\tchecked={ applyTemplateLock }\n\t\t\t\t\t\t\tdisabled={ lock.move && ! lock.remove }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetApplyTemplateLock( ! applyTemplateLock )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"]}