@wordpress/block-editor 9.8.1-next.957ca95e4c.0 → 10.0.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 (456) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +13 -1
  3. package/build/components/alignment-control/ui.js +6 -5
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-actions/index.js +5 -9
  6. package/build/components/block-actions/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +5 -5
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-content-overlay/index.js +2 -4
  10. package/build/components/block-content-overlay/index.js.map +1 -1
  11. package/build/components/block-draggable/draggable-chip.js +2 -1
  12. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  13. package/build/components/block-edit/edit.js +1 -1
  14. package/build/components/block-edit/edit.js.map +1 -1
  15. package/build/components/block-inspector/index.js +125 -17
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/block.js +40 -9
  18. package/build/components/block-list/block.js.map +1 -1
  19. package/build/components/block-list/index.js +4 -4
  20. package/build/components/block-list/index.js.map +1 -1
  21. package/build/components/block-list/use-block-props/index.js +14 -11
  22. package/build/components/block-list/use-block-props/index.js.map +1 -1
  23. package/build/components/block-list/use-block-props/use-block-class-names.js +3 -2
  24. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  25. package/build/components/block-list/use-block-props/use-focus-first-element.js +3 -9
  26. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  27. package/build/components/block-list/use-block-props/use-is-hovered.js +1 -2
  28. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  29. package/build/components/block-list/use-in-between-inserter.js +7 -12
  30. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  31. package/build/components/block-list-appender/index.js +20 -21
  32. package/build/components/block-list-appender/index.js.map +1 -1
  33. package/build/components/block-list-appender/index.native.js +1 -7
  34. package/build/components/block-list-appender/index.native.js.map +1 -1
  35. package/build/components/block-lock/use-block-lock.js +3 -1
  36. package/build/components/block-lock/use-block-lock.js.map +1 -1
  37. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +20 -10
  38. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  39. package/build/components/block-mover/button.js +4 -6
  40. package/build/components/block-mover/button.js.map +1 -1
  41. package/build/components/block-mover/index.js +4 -6
  42. package/build/components/block-mover/index.js.map +1 -1
  43. package/build/components/block-mover/index.native.js +24 -8
  44. package/build/components/block-mover/index.native.js.map +1 -1
  45. package/build/components/block-popover/inbetween.js +58 -16
  46. package/build/components/block-popover/inbetween.js.map +1 -1
  47. package/build/components/block-popover/index.js +3 -2
  48. package/build/components/block-popover/index.js.map +1 -1
  49. package/build/components/block-preview/auto.js +4 -2
  50. package/build/components/block-preview/auto.js.map +1 -1
  51. package/build/components/block-settings-menu/block-settings-dropdown.js +3 -1
  52. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  53. package/build/components/block-settings-menu-controls/index.js +3 -1
  54. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  55. package/build/components/block-styles/preview-panel.js +7 -1
  56. package/build/components/block-styles/preview-panel.js.map +1 -1
  57. package/build/components/block-switcher/block-transformations-menu.js +114 -25
  58. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  59. package/build/components/block-toolbar/index.js +9 -8
  60. package/build/components/block-toolbar/index.js.map +1 -1
  61. package/build/components/block-tools/block-contextual-toolbar.js +3 -2
  62. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  63. package/build/components/block-tools/block-selection-button.js +13 -5
  64. package/build/components/block-tools/block-selection-button.js.map +1 -1
  65. package/build/components/block-tools/index.js +33 -15
  66. package/build/components/block-tools/index.js.map +1 -1
  67. package/build/components/block-tools/insertion-point.js +4 -9
  68. package/build/components/block-tools/insertion-point.js.map +1 -1
  69. package/build/components/block-tools/selected-block-popover.js +9 -8
  70. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  71. package/build/components/block-tools/use-block-toolbar-popover-props.js +13 -8
  72. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  73. package/build/components/block-tools/zoom-out-mode-inserters.js +71 -0
  74. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
  75. package/build/components/block-vertical-alignment-control/ui.js +5 -2
  76. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  77. package/build/components/colors-gradients/dropdown.js +1 -1
  78. package/build/components/colors-gradients/dropdown.js.map +1 -1
  79. package/build/components/iframe/index.js +31 -4
  80. package/build/components/iframe/index.js.map +1 -1
  81. package/build/components/inner-blocks/default-block-appender.js +1 -7
  82. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  83. package/build/components/inner-blocks/index.js +2 -2
  84. package/build/components/inner-blocks/index.js.map +1 -1
  85. package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -5
  86. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  87. package/build/components/inner-blocks/use-nested-settings-update.js +1 -1
  88. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  89. package/build/components/inserter/index.js +3 -6
  90. package/build/components/inserter/index.js.map +1 -1
  91. package/build/components/inserter/library.js +14 -3
  92. package/build/components/inserter/library.js.map +1 -1
  93. package/build/components/inserter/menu.js +21 -8
  94. package/build/components/inserter/menu.js.map +1 -1
  95. package/build/components/inserter/preview-panel.js +1 -1
  96. package/build/components/inserter/preview-panel.js.map +1 -1
  97. package/build/components/inserter/tabs.js +11 -4
  98. package/build/components/inserter/tabs.js.map +1 -1
  99. package/build/components/link-control/link-preview.js +1 -1
  100. package/build/components/link-control/link-preview.js.map +1 -1
  101. package/build/components/link-control/search-input.js +6 -3
  102. package/build/components/link-control/search-input.js.map +1 -1
  103. package/build/components/link-control/search-item.js +36 -5
  104. package/build/components/link-control/search-item.js.map +1 -1
  105. package/build/components/list-view/block.js +23 -11
  106. package/build/components/list-view/block.js.map +1 -1
  107. package/build/components/list-view/branch.js +19 -2
  108. package/build/components/list-view/branch.js.map +1 -1
  109. package/build/components/list-view/index.js +8 -4
  110. package/build/components/list-view/index.js.map +1 -1
  111. package/build/components/list-view/use-block-selection.js +0 -1
  112. package/build/components/list-view/use-block-selection.js.map +1 -1
  113. package/build/components/provider/use-block-sync.js +1 -7
  114. package/build/components/provider/use-block-sync.js.map +1 -1
  115. package/build/components/publish-date-time-picker/index.js +1 -1
  116. package/build/components/publish-date-time-picker/index.js.map +1 -1
  117. package/build/components/rich-text/index.js +27 -19
  118. package/build/components/rich-text/index.js.map +1 -1
  119. package/build/components/rich-text/index.native.js +11 -20
  120. package/build/components/rich-text/index.native.js.map +1 -1
  121. package/build/components/text-decoration-control/index.js +1 -1
  122. package/build/components/text-decoration-control/index.js.map +1 -1
  123. package/build/components/text-transform-control/index.js +1 -1
  124. package/build/components/text-transform-control/index.js.map +1 -1
  125. package/build/components/tool-selector/index.js +6 -11
  126. package/build/components/tool-selector/index.js.map +1 -1
  127. package/build/components/url-popover/index.js +1 -1
  128. package/build/components/url-popover/index.js.map +1 -1
  129. package/build/components/use-block-drop-zone/index.js +7 -4
  130. package/build/components/use-block-drop-zone/index.js.map +1 -1
  131. package/build/components/use-moving-animation/index.js +9 -28
  132. package/build/components/use-moving-animation/index.js.map +1 -1
  133. package/build/components/writing-flow/use-select-all.js +1 -7
  134. package/build/components/writing-flow/use-select-all.js.map +1 -1
  135. package/build/hooks/align.js +14 -2
  136. package/build/hooks/align.js.map +1 -1
  137. package/build/hooks/color-panel.js +2 -1
  138. package/build/hooks/color-panel.js.map +1 -1
  139. package/build/hooks/content-lock-ui.js +145 -0
  140. package/build/hooks/content-lock-ui.js.map +1 -0
  141. package/build/hooks/duotone.js +8 -1
  142. package/build/hooks/duotone.js.map +1 -1
  143. package/build/hooks/index.js +14 -0
  144. package/build/hooks/index.js.map +1 -1
  145. package/build/hooks/layout.js +11 -9
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/metadata-name.js +55 -0
  148. package/build/hooks/metadata-name.js.map +1 -0
  149. package/build/hooks/metadata.js +65 -0
  150. package/build/hooks/metadata.js.map +1 -0
  151. package/build/hooks/use-typography-props.js +51 -0
  152. package/build/hooks/use-typography-props.js.map +1 -0
  153. package/build/hooks/utils.js +3 -1
  154. package/build/hooks/utils.js.map +1 -1
  155. package/build/index.js +7 -0
  156. package/build/index.js.map +1 -1
  157. package/build/layouts/constrained.js +59 -20
  158. package/build/layouts/constrained.js.map +1 -1
  159. package/build/store/actions.js +65 -21
  160. package/build/store/actions.js.map +1 -1
  161. package/build/store/reducer.js +39 -18
  162. package/build/store/reducer.js.map +1 -1
  163. package/build/store/selectors.js +95 -9
  164. package/build/store/selectors.js.map +1 -1
  165. package/build/utils/parse-css-unit-to-px.js +1 -1
  166. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  167. package/build-module/components/alignment-control/ui.js +6 -5
  168. package/build-module/components/alignment-control/ui.js.map +1 -1
  169. package/build-module/components/block-actions/index.js +5 -8
  170. package/build-module/components/block-actions/index.js.map +1 -1
  171. package/build-module/components/block-alignment-control/ui.js +5 -5
  172. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  173. package/build-module/components/block-content-overlay/index.js +2 -4
  174. package/build-module/components/block-content-overlay/index.js.map +1 -1
  175. package/build-module/components/block-draggable/draggable-chip.js +2 -1
  176. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  177. package/build-module/components/block-edit/edit.js +1 -1
  178. package/build-module/components/block-edit/edit.js.map +1 -1
  179. package/build-module/components/block-inspector/index.js +127 -19
  180. package/build-module/components/block-inspector/index.js.map +1 -1
  181. package/build-module/components/block-list/block.js +41 -9
  182. package/build-module/components/block-list/block.js.map +1 -1
  183. package/build-module/components/block-list/index.js +4 -4
  184. package/build-module/components/block-list/index.js.map +1 -1
  185. package/build-module/components/block-list/use-block-props/index.js +13 -11
  186. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  187. package/build-module/components/block-list/use-block-props/use-block-class-names.js +3 -2
  188. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  189. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +3 -8
  190. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  191. package/build-module/components/block-list/use-block-props/use-is-hovered.js +1 -2
  192. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  193. package/build-module/components/block-list/use-in-between-inserter.js +7 -12
  194. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  195. package/build-module/components/block-list-appender/index.js +20 -20
  196. package/build-module/components/block-list-appender/index.js.map +1 -1
  197. package/build-module/components/block-list-appender/index.native.js +1 -6
  198. package/build-module/components/block-list-appender/index.native.js.map +1 -1
  199. package/build-module/components/block-lock/use-block-lock.js +3 -1
  200. package/build-module/components/block-lock/use-block-lock.js.map +1 -1
  201. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +20 -9
  202. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  203. package/build-module/components/block-mover/button.js +4 -5
  204. package/build-module/components/block-mover/button.js.map +1 -1
  205. package/build-module/components/block-mover/index.js +4 -5
  206. package/build-module/components/block-mover/index.js.map +1 -1
  207. package/build-module/components/block-mover/index.native.js +24 -7
  208. package/build-module/components/block-mover/index.native.js.map +1 -1
  209. package/build-module/components/block-popover/inbetween.js +59 -17
  210. package/build-module/components/block-popover/inbetween.js.map +1 -1
  211. package/build-module/components/block-popover/index.js +3 -2
  212. package/build-module/components/block-popover/index.js.map +1 -1
  213. package/build-module/components/block-preview/auto.js +4 -2
  214. package/build-module/components/block-preview/auto.js.map +1 -1
  215. package/build-module/components/block-settings-menu/block-settings-dropdown.js +3 -1
  216. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  217. package/build-module/components/block-settings-menu-controls/index.js +3 -1
  218. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  219. package/build-module/components/block-styles/preview-panel.js +6 -1
  220. package/build-module/components/block-styles/preview-panel.js.map +1 -1
  221. package/build-module/components/block-switcher/block-transformations-menu.js +115 -27
  222. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  223. package/build-module/components/block-toolbar/index.js +9 -8
  224. package/build-module/components/block-toolbar/index.js.map +1 -1
  225. package/build-module/components/block-tools/block-contextual-toolbar.js +3 -2
  226. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  227. package/build-module/components/block-tools/block-selection-button.js +12 -5
  228. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  229. package/build-module/components/block-tools/index.js +30 -15
  230. package/build-module/components/block-tools/index.js.map +1 -1
  231. package/build-module/components/block-tools/insertion-point.js +4 -9
  232. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  233. package/build-module/components/block-tools/selected-block-popover.js +9 -8
  234. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  235. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +13 -8
  236. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  237. package/build-module/components/block-tools/zoom-out-mode-inserters.js +59 -0
  238. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
  239. package/build-module/components/block-vertical-alignment-control/ui.js +5 -2
  240. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  241. package/build-module/components/colors-gradients/dropdown.js +1 -1
  242. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  243. package/build-module/components/iframe/index.js +32 -5
  244. package/build-module/components/iframe/index.js.map +1 -1
  245. package/build-module/components/inner-blocks/default-block-appender.js +1 -6
  246. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  247. package/build-module/components/inner-blocks/index.js +2 -2
  248. package/build-module/components/inner-blocks/index.js.map +1 -1
  249. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -5
  250. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  251. package/build-module/components/inner-blocks/use-nested-settings-update.js +1 -1
  252. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  253. package/build-module/components/inserter/index.js +3 -6
  254. package/build-module/components/inserter/index.js.map +1 -1
  255. package/build-module/components/inserter/library.js +14 -3
  256. package/build-module/components/inserter/library.js.map +1 -1
  257. package/build-module/components/inserter/menu.js +20 -8
  258. package/build-module/components/inserter/menu.js.map +1 -1
  259. package/build-module/components/inserter/preview-panel.js +1 -1
  260. package/build-module/components/inserter/preview-panel.js.map +1 -1
  261. package/build-module/components/inserter/tabs.js +11 -4
  262. package/build-module/components/inserter/tabs.js.map +1 -1
  263. package/build-module/components/link-control/link-preview.js +1 -1
  264. package/build-module/components/link-control/link-preview.js.map +1 -1
  265. package/build-module/components/link-control/search-input.js +6 -2
  266. package/build-module/components/link-control/search-input.js.map +1 -1
  267. package/build-module/components/link-control/search-item.js +37 -6
  268. package/build-module/components/link-control/search-item.js.map +1 -1
  269. package/build-module/components/list-view/block.js +23 -11
  270. package/build-module/components/list-view/block.js.map +1 -1
  271. package/build-module/components/list-view/branch.js +19 -3
  272. package/build-module/components/list-view/branch.js.map +1 -1
  273. package/build-module/components/list-view/index.js +8 -4
  274. package/build-module/components/list-view/index.js.map +1 -1
  275. package/build-module/components/list-view/use-block-selection.js +0 -1
  276. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  277. package/build-module/components/provider/use-block-sync.js +1 -6
  278. package/build-module/components/provider/use-block-sync.js.map +1 -1
  279. package/build-module/components/publish-date-time-picker/index.js +1 -1
  280. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  281. package/build-module/components/rich-text/index.js +27 -18
  282. package/build-module/components/rich-text/index.js.map +1 -1
  283. package/build-module/components/rich-text/index.native.js +11 -18
  284. package/build-module/components/rich-text/index.native.js.map +1 -1
  285. package/build-module/components/text-decoration-control/index.js +1 -1
  286. package/build-module/components/text-decoration-control/index.js.map +1 -1
  287. package/build-module/components/text-transform-control/index.js +1 -1
  288. package/build-module/components/text-transform-control/index.js.map +1 -1
  289. package/build-module/components/tool-selector/index.js +6 -11
  290. package/build-module/components/tool-selector/index.js.map +1 -1
  291. package/build-module/components/url-popover/index.js +1 -1
  292. package/build-module/components/url-popover/index.js.map +1 -1
  293. package/build-module/components/use-block-drop-zone/index.js +7 -4
  294. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  295. package/build-module/components/use-moving-animation/index.js +9 -28
  296. package/build-module/components/use-moving-animation/index.js.map +1 -1
  297. package/build-module/components/writing-flow/use-select-all.js +1 -6
  298. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  299. package/build-module/hooks/align.js +12 -2
  300. package/build-module/hooks/align.js.map +1 -1
  301. package/build-module/hooks/color-panel.js +2 -1
  302. package/build-module/hooks/color-panel.js.map +1 -1
  303. package/build-module/hooks/content-lock-ui.js +128 -0
  304. package/build-module/hooks/content-lock-ui.js.map +1 -0
  305. package/build-module/hooks/duotone.js +6 -1
  306. package/build-module/hooks/duotone.js.map +1 -1
  307. package/build-module/hooks/index.js +4 -0
  308. package/build-module/hooks/index.js.map +1 -1
  309. package/build-module/hooks/layout.js +11 -9
  310. package/build-module/hooks/layout.js.map +1 -1
  311. package/build-module/hooks/metadata-name.js +45 -0
  312. package/build-module/hooks/metadata-name.js.map +1 -0
  313. package/build-module/hooks/metadata.js +50 -0
  314. package/build-module/hooks/metadata.js.map +1 -0
  315. package/build-module/hooks/use-typography-props.js +38 -0
  316. package/build-module/hooks/use-typography-props.js.map +1 -0
  317. package/build-module/hooks/utils.js +4 -2
  318. package/build-module/hooks/utils.js.map +1 -1
  319. package/build-module/index.js +1 -1
  320. package/build-module/index.js.map +1 -1
  321. package/build-module/layouts/constrained.js +61 -22
  322. package/build-module/layouts/constrained.js.map +1 -1
  323. package/build-module/store/actions.js +58 -20
  324. package/build-module/store/actions.js.map +1 -1
  325. package/build-module/store/reducer.js +37 -18
  326. package/build-module/store/reducer.js.map +1 -1
  327. package/build-module/store/selectors.js +80 -9
  328. package/build-module/store/selectors.js.map +1 -1
  329. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  330. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  331. package/build-style/style-rtl.css +95 -45
  332. package/build-style/style.css +95 -45
  333. package/package.json +28 -28
  334. package/src/components/alignment-control/test/__snapshots__/index.js.snap +137 -108
  335. package/src/components/alignment-control/test/index.js +124 -33
  336. package/src/components/alignment-control/ui.js +8 -3
  337. package/src/components/block-actions/index.js +9 -8
  338. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +108 -65
  339. package/src/components/block-alignment-control/test/index.js +95 -31
  340. package/src/components/block-alignment-control/ui.js +2 -2
  341. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +28 -26
  342. package/src/components/block-compare/test/block-view.js +3 -3
  343. package/src/components/block-content-overlay/index.js +2 -6
  344. package/src/components/block-content-overlay/style.scss +24 -3
  345. package/src/components/block-draggable/draggable-chip.js +4 -1
  346. package/src/components/block-edit/edit.js +5 -1
  347. package/src/components/block-edit/test/edit.js +23 -21
  348. package/src/components/block-icon/test/__snapshots__/index.js.snap +22 -0
  349. package/src/components/block-icon/test/index.js +31 -16
  350. package/src/components/block-inspector/index.js +126 -12
  351. package/src/components/block-inspector/style.scss +7 -1
  352. package/src/components/block-list/block.js +53 -13
  353. package/src/components/block-list/index.js +4 -4
  354. package/src/components/block-list/style.scss +39 -12
  355. package/src/components/block-list/test/block-list-context.native.js +11 -13
  356. package/src/components/block-list/use-block-props/index.js +10 -10
  357. package/src/components/block-list/use-block-props/use-block-class-names.js +4 -1
  358. package/src/components/block-list/use-block-props/use-focus-first-element.js +3 -8
  359. package/src/components/block-list/use-block-props/use-is-hovered.js +2 -2
  360. package/src/components/block-list/use-in-between-inserter.js +11 -13
  361. package/src/components/block-list-appender/index.js +27 -18
  362. package/src/components/block-list-appender/index.native.js +3 -6
  363. package/src/components/block-lock/use-block-lock.js +2 -0
  364. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +15 -9
  365. package/src/components/block-mover/button.js +6 -5
  366. package/src/components/block-mover/index.js +8 -7
  367. package/src/components/block-mover/index.native.js +20 -13
  368. package/src/components/block-popover/inbetween.js +85 -21
  369. package/src/components/block-popover/index.js +3 -2
  370. package/src/components/block-popover/style.scss +3 -4
  371. package/src/components/block-preview/auto.js +4 -2
  372. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
  373. package/src/components/block-settings-menu-controls/README.md +9 -0
  374. package/src/components/block-settings-menu-controls/index.js +13 -2
  375. package/src/components/block-styles/preview-panel.js +3 -0
  376. package/src/components/block-switcher/block-transformations-menu.js +127 -33
  377. package/src/components/block-switcher/style.scss +4 -2
  378. package/src/components/block-title/test/index.js +28 -25
  379. package/src/components/block-toolbar/index.js +27 -17
  380. package/src/components/block-tools/block-contextual-toolbar.js +10 -3
  381. package/src/components/block-tools/block-selection-button.js +35 -16
  382. package/src/components/block-tools/index.js +40 -24
  383. package/src/components/block-tools/insertion-point.js +3 -7
  384. package/src/components/block-tools/selected-block-popover.js +9 -7
  385. package/src/components/block-tools/style.scss +5 -0
  386. package/src/components/block-tools/use-block-toolbar-popover-props.js +19 -6
  387. package/src/components/block-tools/zoom-out-mode-inserters.js +57 -0
  388. package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +91 -51
  389. package/src/components/block-vertical-alignment-control/test/index.js +92 -23
  390. package/src/components/block-vertical-alignment-control/ui.js +3 -2
  391. package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -12
  392. package/src/components/colors/test/with-colors.js +37 -12
  393. package/src/components/colors-gradients/dropdown.js +1 -1
  394. package/src/components/contrast-checker/test/index.js +135 -116
  395. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +39 -57
  396. package/src/components/default-block-appender/test/index.js +32 -18
  397. package/src/components/font-sizes/README.MD +9 -0
  398. package/src/components/iframe/index.js +64 -5
  399. package/src/components/inner-blocks/README.md +2 -1
  400. package/src/components/inner-blocks/default-block-appender.js +1 -6
  401. package/src/components/inner-blocks/index.js +3 -2
  402. package/src/components/inner-blocks/use-inner-block-template-sync.js +9 -5
  403. package/src/components/inner-blocks/use-nested-settings-update.js +3 -1
  404. package/src/components/inserter/index.js +2 -8
  405. package/src/components/inserter/library.js +11 -5
  406. package/src/components/inserter/menu.js +42 -29
  407. package/src/components/inserter/preview-panel.js +1 -1
  408. package/src/components/inserter/stories/fixtures.js +44 -0
  409. package/src/components/inserter/stories/index.js +90 -0
  410. package/src/components/inserter/style.scss +21 -27
  411. package/src/components/inserter/tabs.js +8 -4
  412. package/src/components/link-control/link-preview.js +5 -3
  413. package/src/components/link-control/search-input.js +2 -2
  414. package/src/components/link-control/search-item.js +39 -7
  415. package/src/components/list-view/block.js +29 -10
  416. package/src/components/list-view/branch.js +27 -4
  417. package/src/components/list-view/index.js +8 -3
  418. package/src/components/list-view/use-block-selection.js +0 -1
  419. package/src/components/media-placeholder/test/index.js +2 -2
  420. package/src/components/media-replace-flow/README.md +1 -1
  421. package/src/components/provider/use-block-sync.js +3 -6
  422. package/src/components/publish-date-time-picker/index.js +1 -1
  423. package/src/components/rich-text/index.js +24 -35
  424. package/src/components/rich-text/index.native.js +8 -21
  425. package/src/components/text-decoration-control/index.js +1 -1
  426. package/src/components/text-transform-control/index.js +1 -1
  427. package/src/components/tool-selector/index.js +9 -11
  428. package/src/components/url-input/test/button.js +145 -71
  429. package/src/components/url-popover/index.js +1 -1
  430. package/src/components/url-popover/test/__snapshots__/index.js.snap +108 -80
  431. package/src/components/url-popover/test/index.js +14 -12
  432. package/src/components/use-block-drop-zone/index.js +15 -4
  433. package/src/components/use-moving-animation/index.js +9 -24
  434. package/src/components/warning/test/__snapshots__/index.js.snap +11 -14
  435. package/src/components/warning/test/index.js +32 -29
  436. package/src/components/writing-flow/use-select-all.js +4 -6
  437. package/src/hooks/align.js +22 -13
  438. package/src/hooks/color-panel.js +2 -1
  439. package/src/hooks/content-lock-ui.js +161 -0
  440. package/src/hooks/duotone.js +13 -1
  441. package/src/hooks/index.js +4 -0
  442. package/src/hooks/layout.js +25 -19
  443. package/src/hooks/layout.scss +7 -1
  444. package/src/hooks/metadata-name.js +48 -0
  445. package/src/hooks/metadata.js +64 -0
  446. package/src/hooks/test/use-typography-props.js +28 -0
  447. package/src/hooks/use-typography-props.js +41 -0
  448. package/src/hooks/utils.js +2 -11
  449. package/src/index.js +1 -0
  450. package/src/layouts/constrained.js +73 -24
  451. package/src/store/actions.js +45 -4
  452. package/src/store/reducer.js +33 -21
  453. package/src/store/selectors.js +98 -19
  454. package/src/store/test/reducer.js +8 -5
  455. package/src/utils/parse-css-unit-to-px.js +1 -1
  456. package/src/components/colors/test/__snapshots__/with-colors.js.snap +0 -23
@@ -92,11 +92,14 @@ function useBlockDropZone() {
92
92
  rootClientId: targetRootClientId = ''
93
93
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
94
94
  const [targetBlockIndex, setTargetBlockIndex] = (0, _element.useState)(null);
95
- const isLockedAll = (0, _data.useSelect)(select => {
95
+ const isDisabled = (0, _data.useSelect)(select => {
96
96
  const {
97
- getTemplateLock
97
+ getTemplateLock,
98
+ __unstableIsWithinBlockOverlay,
99
+ __unstableHasActiveBlockOverlayActive
98
100
  } = select(_store.store);
99
- return getTemplateLock(targetRootClientId) === 'all';
101
+ const templateLock = getTemplateLock(targetRootClientId);
102
+ return ['all', 'noContent'].some(lock => lock === templateLock) || __unstableHasActiveBlockOverlayActive(targetRootClientId) || __unstableIsWithinBlockOverlay(targetRootClientId);
100
103
  }, [targetRootClientId]);
101
104
  const {
102
105
  getBlockListSettings
@@ -122,7 +125,7 @@ function useBlockDropZone() {
122
125
  }
123
126
  }, []), 200);
124
127
  return (0, _compose.__experimentalUseDropZone)({
125
- isDisabled: isLockedAll,
128
+ isDisabled,
126
129
  onDrop: onBlockDrop,
127
130
 
128
131
  onDragOver(event) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/use-block-drop-zone/index.js"],"names":["getNearestBlockIndex","elements","position","orientation","allowedEdges","isRightToLeft","candidateIndex","candidateDistance","forEach","element","index","rect","getBoundingClientRect","distance","edge","undefined","isTrailingEdge","offset","useBlockDropZone","rootClientId","targetRootClientId","targetBlockIndex","setTargetBlockIndex","isLockedAll","select","getTemplateLock","blockEditorStore","getBlockListSettings","showInsertionPoint","hideInsertionPoint","onBlockDrop","throttled","event","currentTarget","blockElements","Array","from","children","filter","classList","contains","targetIndex","x","clientX","y","clientY","isDisabled","onDrop","onDragOver","onDragLeave","cancel","onDragEnd"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tuseThrottle,\n\t__experimentalUseDropZone as useDropZone,\n} from '@wordpress/compose';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useOnBlockDrop from '../use-on-block-drop';\nimport { getDistanceToNearestEdge } from '../../utils/math';\nimport { store as blockEditorStore } from '../../store';\n\n/** @typedef {import('../../utils/math').WPPoint} WPPoint */\n\n/**\n * The orientation of a block list.\n *\n * @typedef {'horizontal'|'vertical'|undefined} WPBlockListOrientation\n */\n\n/**\n * Given a list of block DOM elements finds the index that a block should be dropped\n * at.\n *\n * @param {Element[]} elements Array of DOM elements that represent each block in a block list.\n * @param {WPPoint} position The position of the item being dragged.\n * @param {WPBlockListOrientation} orientation The orientation of a block list.\n *\n * @return {number|undefined} The block index that's closest to the drag position.\n */\nexport function getNearestBlockIndex( elements, position, orientation ) {\n\tconst allowedEdges =\n\t\torientation === 'horizontal'\n\t\t\t? [ 'left', 'right' ]\n\t\t\t: [ 'top', 'bottom' ];\n\n\tconst isRightToLeft = isRTL();\n\n\tlet candidateIndex;\n\tlet candidateDistance;\n\n\telements.forEach( ( element, index ) => {\n\t\tconst rect = element.getBoundingClientRect();\n\t\tconst [ distance, edge ] = getDistanceToNearestEdge(\n\t\t\tposition,\n\t\t\trect,\n\t\t\tallowedEdges\n\t\t);\n\n\t\tif ( candidateDistance === undefined || distance < candidateDistance ) {\n\t\t\t// If the user is dropping to the trailing edge of the block\n\t\t\t// add 1 to the index to represent dragging after.\n\t\t\t// Take RTL languages into account where the left edge is\n\t\t\t// the trailing edge.\n\t\t\tconst isTrailingEdge =\n\t\t\t\tedge === 'bottom' ||\n\t\t\t\t( ! isRightToLeft && edge === 'right' ) ||\n\t\t\t\t( isRightToLeft && edge === 'left' );\n\t\t\tconst offset = isTrailingEdge ? 1 : 0;\n\n\t\t\t// Update the currently known best candidate.\n\t\t\tcandidateDistance = distance;\n\t\t\tcandidateIndex = index + offset;\n\t\t}\n\t} );\n\n\treturn candidateIndex;\n}\n\n/**\n * @typedef {Object} WPBlockDropZoneConfig\n * @property {string} rootClientId The root client id for the block list.\n */\n\n/**\n * A React hook that can be used to make a block list handle drag and drop.\n *\n * @param {WPBlockDropZoneConfig} dropZoneConfig configuration data for the drop zone.\n */\nexport default function useBlockDropZone( {\n\t// An undefined value represents a top-level block. Default to an empty\n\t// string for this so that `targetRootClientId` can be easily compared to\n\t// values returned by the `getRootBlockClientId` selector, which also uses\n\t// an empty string to represent top-level blocks.\n\trootClientId: targetRootClientId = '',\n} = {} ) {\n\tconst [ targetBlockIndex, setTargetBlockIndex ] = useState( null );\n\n\tconst isLockedAll = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getTemplateLock } = select( blockEditorStore );\n\t\t\treturn getTemplateLock( targetRootClientId ) === 'all';\n\t\t},\n\t\t[ targetRootClientId ]\n\t);\n\n\tconst { getBlockListSettings } = useSelect( blockEditorStore );\n\tconst { showInsertionPoint, hideInsertionPoint } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst onBlockDrop = useOnBlockDrop( targetRootClientId, targetBlockIndex );\n\tconst throttled = useThrottle(\n\t\tuseCallback( ( event, currentTarget ) => {\n\t\t\tconst blockElements = Array.from( currentTarget.children ).filter(\n\t\t\t\t// Ensure the element is a block. It should have the `wp-block` class.\n\t\t\t\t( element ) => element.classList.contains( 'wp-block' )\n\t\t\t);\n\t\t\tconst targetIndex = getNearestBlockIndex(\n\t\t\t\tblockElements,\n\t\t\t\t{ x: event.clientX, y: event.clientY },\n\t\t\t\tgetBlockListSettings( targetRootClientId )?.orientation\n\t\t\t);\n\n\t\t\tsetTargetBlockIndex( targetIndex === undefined ? 0 : targetIndex );\n\n\t\t\tif ( targetIndex !== null ) {\n\t\t\t\tshowInsertionPoint( targetRootClientId, targetIndex );\n\t\t\t}\n\t\t}, [] ),\n\t\t200\n\t);\n\n\treturn useDropZone( {\n\t\tisDisabled: isLockedAll,\n\t\tonDrop: onBlockDrop,\n\t\tonDragOver( event ) {\n\t\t\t// `currentTarget` is only available while the event is being\n\t\t\t// handled, so get it now and pass it to the thottled function.\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget\n\t\t\tthrottled( event, event.currentTarget );\n\t\t},\n\t\tonDragLeave() {\n\t\t\tthrottled.cancel();\n\t\t\thideInsertionPoint();\n\t\t\tsetTargetBlockIndex( null );\n\t\t},\n\t\tonDragEnd() {\n\t\t\tthrottled.cancel();\n\t\t\thideInsertionPoint();\n\t\t\tsetTargetBlockIndex( null );\n\t\t},\n\t} );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/use-block-drop-zone/index.js"],"names":["getNearestBlockIndex","elements","position","orientation","allowedEdges","isRightToLeft","candidateIndex","candidateDistance","forEach","element","index","rect","getBoundingClientRect","distance","edge","undefined","isTrailingEdge","offset","useBlockDropZone","rootClientId","targetRootClientId","targetBlockIndex","setTargetBlockIndex","isDisabled","select","getTemplateLock","__unstableIsWithinBlockOverlay","__unstableHasActiveBlockOverlayActive","blockEditorStore","templateLock","some","lock","getBlockListSettings","showInsertionPoint","hideInsertionPoint","onBlockDrop","throttled","event","currentTarget","blockElements","Array","from","children","filter","classList","contains","targetIndex","x","clientX","y","clientY","onDrop","onDragOver","onDragLeave","cancel","onDragEnd"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tuseThrottle,\n\t__experimentalUseDropZone as useDropZone,\n} from '@wordpress/compose';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useOnBlockDrop from '../use-on-block-drop';\nimport { getDistanceToNearestEdge } from '../../utils/math';\nimport { store as blockEditorStore } from '../../store';\n\n/** @typedef {import('../../utils/math').WPPoint} WPPoint */\n\n/**\n * The orientation of a block list.\n *\n * @typedef {'horizontal'|'vertical'|undefined} WPBlockListOrientation\n */\n\n/**\n * Given a list of block DOM elements finds the index that a block should be dropped\n * at.\n *\n * @param {Element[]} elements Array of DOM elements that represent each block in a block list.\n * @param {WPPoint} position The position of the item being dragged.\n * @param {WPBlockListOrientation} orientation The orientation of a block list.\n *\n * @return {number|undefined} The block index that's closest to the drag position.\n */\nexport function getNearestBlockIndex( elements, position, orientation ) {\n\tconst allowedEdges =\n\t\torientation === 'horizontal'\n\t\t\t? [ 'left', 'right' ]\n\t\t\t: [ 'top', 'bottom' ];\n\n\tconst isRightToLeft = isRTL();\n\n\tlet candidateIndex;\n\tlet candidateDistance;\n\n\telements.forEach( ( element, index ) => {\n\t\tconst rect = element.getBoundingClientRect();\n\t\tconst [ distance, edge ] = getDistanceToNearestEdge(\n\t\t\tposition,\n\t\t\trect,\n\t\t\tallowedEdges\n\t\t);\n\n\t\tif ( candidateDistance === undefined || distance < candidateDistance ) {\n\t\t\t// If the user is dropping to the trailing edge of the block\n\t\t\t// add 1 to the index to represent dragging after.\n\t\t\t// Take RTL languages into account where the left edge is\n\t\t\t// the trailing edge.\n\t\t\tconst isTrailingEdge =\n\t\t\t\tedge === 'bottom' ||\n\t\t\t\t( ! isRightToLeft && edge === 'right' ) ||\n\t\t\t\t( isRightToLeft && edge === 'left' );\n\t\t\tconst offset = isTrailingEdge ? 1 : 0;\n\n\t\t\t// Update the currently known best candidate.\n\t\t\tcandidateDistance = distance;\n\t\t\tcandidateIndex = index + offset;\n\t\t}\n\t} );\n\n\treturn candidateIndex;\n}\n\n/**\n * @typedef {Object} WPBlockDropZoneConfig\n * @property {string} rootClientId The root client id for the block list.\n */\n\n/**\n * A React hook that can be used to make a block list handle drag and drop.\n *\n * @param {WPBlockDropZoneConfig} dropZoneConfig configuration data for the drop zone.\n */\nexport default function useBlockDropZone( {\n\t// An undefined value represents a top-level block. Default to an empty\n\t// string for this so that `targetRootClientId` can be easily compared to\n\t// values returned by the `getRootBlockClientId` selector, which also uses\n\t// an empty string to represent top-level blocks.\n\trootClientId: targetRootClientId = '',\n} = {} ) {\n\tconst [ targetBlockIndex, setTargetBlockIndex ] = useState( null );\n\n\tconst isDisabled = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetTemplateLock,\n\t\t\t\t__unstableIsWithinBlockOverlay,\n\t\t\t\t__unstableHasActiveBlockOverlayActive,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst templateLock = getTemplateLock( targetRootClientId );\n\t\t\treturn (\n\t\t\t\t[ 'all', 'noContent' ].some(\n\t\t\t\t\t( lock ) => lock === templateLock\n\t\t\t\t) ||\n\t\t\t\t__unstableHasActiveBlockOverlayActive( targetRootClientId ) ||\n\t\t\t\t__unstableIsWithinBlockOverlay( targetRootClientId )\n\t\t\t);\n\t\t},\n\t\t[ targetRootClientId ]\n\t);\n\n\tconst { getBlockListSettings } = useSelect( blockEditorStore );\n\tconst { showInsertionPoint, hideInsertionPoint } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst onBlockDrop = useOnBlockDrop( targetRootClientId, targetBlockIndex );\n\tconst throttled = useThrottle(\n\t\tuseCallback( ( event, currentTarget ) => {\n\t\t\tconst blockElements = Array.from( currentTarget.children ).filter(\n\t\t\t\t// Ensure the element is a block. It should have the `wp-block` class.\n\t\t\t\t( element ) => element.classList.contains( 'wp-block' )\n\t\t\t);\n\t\t\tconst targetIndex = getNearestBlockIndex(\n\t\t\t\tblockElements,\n\t\t\t\t{ x: event.clientX, y: event.clientY },\n\t\t\t\tgetBlockListSettings( targetRootClientId )?.orientation\n\t\t\t);\n\n\t\t\tsetTargetBlockIndex( targetIndex === undefined ? 0 : targetIndex );\n\n\t\t\tif ( targetIndex !== null ) {\n\t\t\t\tshowInsertionPoint( targetRootClientId, targetIndex );\n\t\t\t}\n\t\t}, [] ),\n\t\t200\n\t);\n\n\treturn useDropZone( {\n\t\tisDisabled,\n\t\tonDrop: onBlockDrop,\n\t\tonDragOver( event ) {\n\t\t\t// `currentTarget` is only available while the event is being\n\t\t\t// handled, so get it now and pass it to the thottled function.\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget\n\t\t\tthrottled( event, event.currentTarget );\n\t\t},\n\t\tonDragLeave() {\n\t\t\tthrottled.cancel();\n\t\t\thideInsertionPoint();\n\t\t\tsetTargetBlockIndex( null );\n\t\t},\n\t\tonDragEnd() {\n\t\t\tthrottled.cancel();\n\t\t\thideInsertionPoint();\n\t\t\tsetTargetBlockIndex( null );\n\t\t},\n\t} );\n}\n"]}
@@ -110,56 +110,37 @@ function useMovingAnimation(_ref) {
110
110
  return;
111
111
  }
112
112
 
113
- ref.current.style.transform = '';
113
+ ref.current.style.transform = undefined;
114
114
  const destination = getAbsolutePosition(ref.current);
115
115
  triggerAnimation();
116
116
  setTransform({
117
117
  x: Math.round(previous.left - destination.left),
118
118
  y: Math.round(previous.top - destination.top)
119
119
  });
120
- }, [triggerAnimationOnChange]); // Only called when either the x or y value changes.
120
+ }, [triggerAnimationOnChange]);
121
121
 
122
- function onFrameChange(_ref2) {
122
+ function onChange(_ref2) {
123
123
  let {
124
- x,
125
- y
124
+ value
126
125
  } = _ref2;
127
126
 
128
127
  if (!ref.current) {
129
128
  return;
130
129
  }
131
130
 
132
- const isMoving = x === 0 && y === 0;
133
- ref.current.style.transformOrigin = isMoving ? '' : 'center';
134
- ref.current.style.transform = isMoving ? '' : `translate3d(${x}px,${y}px,0)`;
135
- ref.current.style.zIndex = !isSelected || isMoving ? '' : '1';
136
- preserveScrollPosition();
137
- } // Called for every frame computed by useSpring.
138
-
139
-
140
- function onChange(_ref3) {
141
- let {
142
- value
143
- } = _ref3;
144
131
  let {
145
132
  x,
146
133
  y
147
134
  } = value;
148
135
  x = Math.round(x);
149
136
  y = Math.round(y);
150
-
151
- if (x !== onChange.x || y !== onChange.y) {
152
- onFrameChange({
153
- x,
154
- y
155
- });
156
- onChange.x = x;
157
- onChange.y = y;
158
- }
137
+ const finishedMoving = x === 0 && y === 0;
138
+ ref.current.style.transformOrigin = 'center center';
139
+ ref.current.style.transform = finishedMoving ? undefined : `translate3d(${x}px,${y}px,0)`;
140
+ ref.current.style.zIndex = isSelected ? '1' : '';
141
+ preserveScrollPosition();
159
142
  }
160
143
 
161
- onChange.x = 0;
162
- onChange.y = 0;
163
144
  (0, _web.useSpring)({
164
145
  from: {
165
146
  x: transform.x,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/use-moving-animation/index.js"],"names":["counterReducer","state","getAbsolutePosition","element","top","offsetTop","left","offsetLeft","useMovingAnimation","isSelected","adjustScrolling","enableAnimation","triggerAnimationOnChange","ref","prefersReducedMotion","triggeredAnimation","triggerAnimation","finishedAnimation","endAnimation","transform","setTransform","x","y","previous","current","preserveScrollPosition","scrollContainer","prevRect","getBoundingClientRect","blockRect","diff","scrollTop","style","destination","Math","round","onFrameChange","isMoving","transformOrigin","zIndex","onChange","value","from","to","reset","config","mass","tension","friction","immediate"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { useSpring } from '@react-spring/web';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tuseLayoutEffect,\n\tuseReducer,\n\tuseMemo,\n\tuseRef,\n} from '@wordpress/element';\nimport { useReducedMotion } from '@wordpress/compose';\nimport { getScrollContainer } from '@wordpress/dom';\n\n/**\n * Simple reducer used to increment a counter.\n *\n * @param {number} state Previous counter value.\n * @return {number} New state value.\n */\nconst counterReducer = ( state ) => state + 1;\n\nconst getAbsolutePosition = ( element ) => {\n\treturn {\n\t\ttop: element.offsetTop,\n\t\tleft: element.offsetLeft,\n\t};\n};\n\n/**\n * Hook used to compute the styles required to move a div into a new position.\n *\n * The way this animation works is the following:\n * - It first renders the element as if there was no animation.\n * - It takes a snapshot of the position of the block to use it\n * as a destination point for the animation.\n * - It restores the element to the previous position using a CSS transform\n * - It uses the \"resetAnimation\" flag to reset the animation\n * from the beginning in order to animate to the new destination point.\n *\n * @param {Object} $1 Options\n * @param {boolean} $1.isSelected Whether it's the current block or not.\n * @param {boolean} $1.adjustScrolling Adjust the scroll position to the current block.\n * @param {boolean} $1.enableAnimation Enable/Disable animation.\n * @param {*} $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.\n */\nfunction useMovingAnimation( {\n\tisSelected,\n\tadjustScrolling,\n\tenableAnimation,\n\ttriggerAnimationOnChange,\n} ) {\n\tconst ref = useRef();\n\tconst prefersReducedMotion = useReducedMotion() || ! enableAnimation;\n\tconst [ triggeredAnimation, triggerAnimation ] = useReducer(\n\t\tcounterReducer,\n\t\t0\n\t);\n\tconst [ finishedAnimation, endAnimation ] = useReducer( counterReducer, 0 );\n\tconst [ transform, setTransform ] = useState( { x: 0, y: 0 } );\n\tconst previous = useMemo(\n\t\t() => ( ref.current ? getAbsolutePosition( ref.current ) : null ),\n\t\t[ triggerAnimationOnChange ]\n\t);\n\n\t// Calculate the previous position of the block relative to the viewport and\n\t// return a function to maintain that position by scrolling.\n\tconst preserveScrollPosition = useMemo( () => {\n\t\tif ( ! adjustScrolling || ! ref.current ) {\n\t\t\treturn () => {};\n\t\t}\n\n\t\tconst scrollContainer = getScrollContainer( ref.current );\n\n\t\tif ( ! scrollContainer ) {\n\t\t\treturn () => {};\n\t\t}\n\n\t\tconst prevRect = ref.current.getBoundingClientRect();\n\t\treturn () => {\n\t\t\tconst blockRect = ref.current.getBoundingClientRect();\n\t\t\tconst diff = blockRect.top - prevRect.top;\n\n\t\t\tif ( diff ) {\n\t\t\t\tscrollContainer.scrollTop += diff;\n\t\t\t}\n\t\t};\n\t}, [ triggerAnimationOnChange, adjustScrolling ] );\n\n\tuseLayoutEffect( () => {\n\t\tif ( triggeredAnimation ) {\n\t\t\tendAnimation();\n\t\t}\n\t}, [ triggeredAnimation ] );\n\tuseLayoutEffect( () => {\n\t\tif ( ! previous ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( prefersReducedMotion ) {\n\t\t\t// If the animation is disabled and the scroll needs to be adjusted,\n\t\t\t// just move directly to the final scroll position.\n\t\t\tpreserveScrollPosition();\n\n\t\t\treturn;\n\t\t}\n\n\t\tref.current.style.transform = '';\n\t\tconst destination = getAbsolutePosition( ref.current );\n\n\t\ttriggerAnimation();\n\t\tsetTransform( {\n\t\t\tx: Math.round( previous.left - destination.left ),\n\t\t\ty: Math.round( previous.top - destination.top ),\n\t\t} );\n\t}, [ triggerAnimationOnChange ] );\n\n\t// Only called when either the x or y value changes.\n\tfunction onFrameChange( { x, y } ) {\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isMoving = x === 0 && y === 0;\n\t\tref.current.style.transformOrigin = isMoving ? '' : 'center';\n\t\tref.current.style.transform = isMoving\n\t\t\t? ''\n\t\t\t: `translate3d(${ x }px,${ y }px,0)`;\n\t\tref.current.style.zIndex = ! isSelected || isMoving ? '' : '1';\n\n\t\tpreserveScrollPosition();\n\t}\n\n\t// Called for every frame computed by useSpring.\n\tfunction onChange( { value } ) {\n\t\tlet { x, y } = value;\n\t\tx = Math.round( x );\n\t\ty = Math.round( y );\n\n\t\tif ( x !== onChange.x || y !== onChange.y ) {\n\t\t\tonFrameChange( { x, y } );\n\t\t\tonChange.x = x;\n\t\t\tonChange.y = y;\n\t\t}\n\t}\n\n\tonChange.x = 0;\n\tonChange.y = 0;\n\n\tuseSpring( {\n\t\tfrom: {\n\t\t\tx: transform.x,\n\t\t\ty: transform.y,\n\t\t},\n\t\tto: {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t},\n\t\treset: triggeredAnimation !== finishedAnimation,\n\t\tconfig: { mass: 5, tension: 2000, friction: 200 },\n\t\timmediate: prefersReducedMotion,\n\t\tonChange,\n\t} );\n\n\treturn ref;\n}\n\nexport default useMovingAnimation;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/use-moving-animation/index.js"],"names":["counterReducer","state","getAbsolutePosition","element","top","offsetTop","left","offsetLeft","useMovingAnimation","isSelected","adjustScrolling","enableAnimation","triggerAnimationOnChange","ref","prefersReducedMotion","triggeredAnimation","triggerAnimation","finishedAnimation","endAnimation","transform","setTransform","x","y","previous","current","preserveScrollPosition","scrollContainer","prevRect","getBoundingClientRect","blockRect","diff","scrollTop","style","undefined","destination","Math","round","onChange","value","finishedMoving","transformOrigin","zIndex","from","to","reset","config","mass","tension","friction","immediate"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { useSpring } from '@react-spring/web';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tuseLayoutEffect,\n\tuseReducer,\n\tuseMemo,\n\tuseRef,\n} from '@wordpress/element';\nimport { useReducedMotion } from '@wordpress/compose';\nimport { getScrollContainer } from '@wordpress/dom';\n\n/**\n * Simple reducer used to increment a counter.\n *\n * @param {number} state Previous counter value.\n * @return {number} New state value.\n */\nconst counterReducer = ( state ) => state + 1;\n\nconst getAbsolutePosition = ( element ) => {\n\treturn {\n\t\ttop: element.offsetTop,\n\t\tleft: element.offsetLeft,\n\t};\n};\n\n/**\n * Hook used to compute the styles required to move a div into a new position.\n *\n * The way this animation works is the following:\n * - It first renders the element as if there was no animation.\n * - It takes a snapshot of the position of the block to use it\n * as a destination point for the animation.\n * - It restores the element to the previous position using a CSS transform\n * - It uses the \"resetAnimation\" flag to reset the animation\n * from the beginning in order to animate to the new destination point.\n *\n * @param {Object} $1 Options\n * @param {boolean} $1.isSelected Whether it's the current block or not.\n * @param {boolean} $1.adjustScrolling Adjust the scroll position to the current block.\n * @param {boolean} $1.enableAnimation Enable/Disable animation.\n * @param {*} $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.\n */\nfunction useMovingAnimation( {\n\tisSelected,\n\tadjustScrolling,\n\tenableAnimation,\n\ttriggerAnimationOnChange,\n} ) {\n\tconst ref = useRef();\n\tconst prefersReducedMotion = useReducedMotion() || ! enableAnimation;\n\tconst [ triggeredAnimation, triggerAnimation ] = useReducer(\n\t\tcounterReducer,\n\t\t0\n\t);\n\tconst [ finishedAnimation, endAnimation ] = useReducer( counterReducer, 0 );\n\tconst [ transform, setTransform ] = useState( { x: 0, y: 0 } );\n\tconst previous = useMemo(\n\t\t() => ( ref.current ? getAbsolutePosition( ref.current ) : null ),\n\t\t[ triggerAnimationOnChange ]\n\t);\n\n\t// Calculate the previous position of the block relative to the viewport and\n\t// return a function to maintain that position by scrolling.\n\tconst preserveScrollPosition = useMemo( () => {\n\t\tif ( ! adjustScrolling || ! ref.current ) {\n\t\t\treturn () => {};\n\t\t}\n\n\t\tconst scrollContainer = getScrollContainer( ref.current );\n\n\t\tif ( ! scrollContainer ) {\n\t\t\treturn () => {};\n\t\t}\n\n\t\tconst prevRect = ref.current.getBoundingClientRect();\n\t\treturn () => {\n\t\t\tconst blockRect = ref.current.getBoundingClientRect();\n\t\t\tconst diff = blockRect.top - prevRect.top;\n\n\t\t\tif ( diff ) {\n\t\t\t\tscrollContainer.scrollTop += diff;\n\t\t\t}\n\t\t};\n\t}, [ triggerAnimationOnChange, adjustScrolling ] );\n\n\tuseLayoutEffect( () => {\n\t\tif ( triggeredAnimation ) {\n\t\t\tendAnimation();\n\t\t}\n\t}, [ triggeredAnimation ] );\n\tuseLayoutEffect( () => {\n\t\tif ( ! previous ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( prefersReducedMotion ) {\n\t\t\t// If the animation is disabled and the scroll needs to be adjusted,\n\t\t\t// just move directly to the final scroll position.\n\t\t\tpreserveScrollPosition();\n\n\t\t\treturn;\n\t\t}\n\n\t\tref.current.style.transform = undefined;\n\t\tconst destination = getAbsolutePosition( ref.current );\n\n\t\ttriggerAnimation();\n\t\tsetTransform( {\n\t\t\tx: Math.round( previous.left - destination.left ),\n\t\t\ty: Math.round( previous.top - destination.top ),\n\t\t} );\n\t}, [ triggerAnimationOnChange ] );\n\n\tfunction onChange( { value } ) {\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\t\tlet { x, y } = value;\n\t\tx = Math.round( x );\n\t\ty = Math.round( y );\n\t\tconst finishedMoving = x === 0 && y === 0;\n\t\tref.current.style.transformOrigin = 'center center';\n\t\tref.current.style.transform = finishedMoving\n\t\t\t? undefined\n\t\t\t: `translate3d(${ x }px,${ y }px,0)`;\n\t\tref.current.style.zIndex = isSelected ? '1' : '';\n\n\t\tpreserveScrollPosition();\n\t}\n\n\tuseSpring( {\n\t\tfrom: {\n\t\t\tx: transform.x,\n\t\t\ty: transform.y,\n\t\t},\n\t\tto: {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t},\n\t\treset: triggeredAnimation !== finishedAnimation,\n\t\tconfig: { mass: 5, tension: 2000, friction: 200 },\n\t\timmediate: prefersReducedMotion,\n\t\tonChange,\n\t} );\n\n\treturn ref;\n}\n\nexport default useMovingAnimation;\n"]}
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = useSelectAll;
7
7
 
8
- var _lodash = require("lodash");
9
-
10
8
  var _dom = require("@wordpress/dom");
11
9
 
12
10
  var _data = require("@wordpress/data");
@@ -17,10 +15,6 @@ var _compose = require("@wordpress/compose");
17
15
 
18
16
  var _store = require("../../store");
19
17
 
20
- /**
21
- * External dependencies
22
- */
23
-
24
18
  /**
25
19
  * WordPress dependencies
26
20
  */
@@ -66,7 +60,7 @@ function useSelectAll() {
66
60
  return;
67
61
  }
68
62
 
69
- multiSelect((0, _lodash.first)(blockClientIds), (0, _lodash.last)(blockClientIds));
63
+ multiSelect(blockClientIds[0], blockClientIds[blockClientIds.length - 1]);
70
64
  }
71
65
 
72
66
  node.addEventListener('keydown', onKeyDown);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/writing-flow/use-select-all.js"],"names":["useSelectAll","getBlockOrder","getSelectedBlockClientIds","getBlockRootClientId","blockEditorStore","multiSelect","selectBlock","isMatch","node","onKeyDown","event","selectedClientIds","length","target","preventDefault","firstSelectedClientId","rootClientId","blockClientIds","ownerDocument","defaultView","getSelection","removeAllRanges","addEventListener","removeEventListener"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AAKA;;AAhBA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;AAGe,SAASA,YAAT,GAAwB;AACtC,QAAM;AAAEC,IAAAA,aAAF;AAAiBC,IAAAA,yBAAjB;AAA4CC,IAAAA;AAA5C,MACL,qBAAWC,YAAX,CADD;AAEA,QAAM;AAAEC,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAA+B,uBAAaF,YAAb,CAArC;AACA,QAAMG,OAAO,GAAG,yDAAhB;AAEA,SAAO,2BAAgBC,IAAF,IAAY;AAChC,aAASC,SAAT,CAAoBC,KAApB,EAA4B;AAC3B,UAAK,CAAEH,OAAO,CAAE,8BAAF,EAAkCG,KAAlC,CAAd,EAA0D;AACzD;AACA;;AAED,YAAMC,iBAAiB,GAAGT,yBAAyB,EAAnD;;AAEA,UACCS,iBAAiB,CAACC,MAAlB,GAA2B,CAA3B,IACA,CAAE,6BAAoBF,KAAK,CAACG,MAA1B,CAFH,EAGE;AACD;AACA;;AAEDH,MAAAA,KAAK,CAACI,cAAN;AAEA,YAAM,CAAEC,qBAAF,IAA4BJ,iBAAlC;AACA,YAAMK,YAAY,GAAGb,oBAAoB,CAAEY,qBAAF,CAAzC;AACA,YAAME,cAAc,GAAGhB,aAAa,CAAEe,YAAF,CAApC,CAlB2B,CAoB3B;AACA;;AACA,UAAKL,iBAAiB,CAACC,MAAlB,KAA6BK,cAAc,CAACL,MAAjD,EAA0D;AACzD,YAAKI,YAAL,EAAoB;AACnBR,UAAAA,IAAI,CAACU,aAAL,CAAmBC,WAAnB,CACEC,YADF,GAEEC,eAFF;AAGAf,UAAAA,WAAW,CAAEU,YAAF,CAAX;AACA;;AACD;AACA;;AAEDX,MAAAA,WAAW,CAAE,mBAAOY,cAAP,CAAF,EAA2B,kBAAMA,cAAN,CAA3B,CAAX;AACA;;AAEDT,IAAAA,IAAI,CAACc,gBAAL,CAAuB,SAAvB,EAAkCb,SAAlC;AAEA,WAAO,MAAM;AACZD,MAAAA,IAAI,CAACe,mBAAL,CAA0B,SAA1B,EAAqCd,SAArC;AACA,KAFD;AAGA,GAzCM,EAyCJ,EAzCI,CAAP;AA0CA","sourcesContent":["/**\n * External dependencies\n */\nimport { first, last } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { isEntirelySelected } from '@wordpress/dom';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport default function useSelectAll() {\n\tconst { getBlockOrder, getSelectedBlockClientIds, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { multiSelect, selectBlock } = useDispatch( blockEditorStore );\n\tconst isMatch = useShortcutEventMatch();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( ! isMatch( 'core/block-editor/select-all', event ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedClientIds = getSelectedBlockClientIds();\n\n\t\t\tif (\n\t\t\t\tselectedClientIds.length < 2 &&\n\t\t\t\t! isEntirelySelected( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst [ firstSelectedClientId ] = selectedClientIds;\n\t\t\tconst rootClientId = getBlockRootClientId( firstSelectedClientId );\n\t\t\tconst blockClientIds = getBlockOrder( rootClientId );\n\n\t\t\t// If we have selected all sibling nested blocks, try selecting up a\n\t\t\t// level. See: https://github.com/WordPress/gutenberg/pull/31859/\n\t\t\tif ( selectedClientIds.length === blockClientIds.length ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tnode.ownerDocument.defaultView\n\t\t\t\t\t\t.getSelection()\n\t\t\t\t\t\t.removeAllRanges();\n\t\t\t\t\tselectBlock( rootClientId );\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmultiSelect( first( blockClientIds ), last( blockClientIds ) );\n\t\t}\n\n\t\tnode.addEventListener( 'keydown', onKeyDown );\n\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/writing-flow/use-select-all.js"],"names":["useSelectAll","getBlockOrder","getSelectedBlockClientIds","getBlockRootClientId","blockEditorStore","multiSelect","selectBlock","isMatch","node","onKeyDown","event","selectedClientIds","length","target","preventDefault","firstSelectedClientId","rootClientId","blockClientIds","ownerDocument","defaultView","getSelection","removeAllRanges","addEventListener","removeEventListener"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGe,SAASA,YAAT,GAAwB;AACtC,QAAM;AAAEC,IAAAA,aAAF;AAAiBC,IAAAA,yBAAjB;AAA4CC,IAAAA;AAA5C,MACL,qBAAWC,YAAX,CADD;AAEA,QAAM;AAAEC,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAA+B,uBAAaF,YAAb,CAArC;AACA,QAAMG,OAAO,GAAG,yDAAhB;AAEA,SAAO,2BAAgBC,IAAF,IAAY;AAChC,aAASC,SAAT,CAAoBC,KAApB,EAA4B;AAC3B,UAAK,CAAEH,OAAO,CAAE,8BAAF,EAAkCG,KAAlC,CAAd,EAA0D;AACzD;AACA;;AAED,YAAMC,iBAAiB,GAAGT,yBAAyB,EAAnD;;AAEA,UACCS,iBAAiB,CAACC,MAAlB,GAA2B,CAA3B,IACA,CAAE,6BAAoBF,KAAK,CAACG,MAA1B,CAFH,EAGE;AACD;AACA;;AAEDH,MAAAA,KAAK,CAACI,cAAN;AAEA,YAAM,CAAEC,qBAAF,IAA4BJ,iBAAlC;AACA,YAAMK,YAAY,GAAGb,oBAAoB,CAAEY,qBAAF,CAAzC;AACA,YAAME,cAAc,GAAGhB,aAAa,CAAEe,YAAF,CAApC,CAlB2B,CAoB3B;AACA;;AACA,UAAKL,iBAAiB,CAACC,MAAlB,KAA6BK,cAAc,CAACL,MAAjD,EAA0D;AACzD,YAAKI,YAAL,EAAoB;AACnBR,UAAAA,IAAI,CAACU,aAAL,CAAmBC,WAAnB,CACEC,YADF,GAEEC,eAFF;AAGAf,UAAAA,WAAW,CAAEU,YAAF,CAAX;AACA;;AACD;AACA;;AAEDX,MAAAA,WAAW,CACVY,cAAc,CAAE,CAAF,CADJ,EAEVA,cAAc,CAAEA,cAAc,CAACL,MAAf,GAAwB,CAA1B,CAFJ,CAAX;AAIA;;AAEDJ,IAAAA,IAAI,CAACc,gBAAL,CAAuB,SAAvB,EAAkCb,SAAlC;AAEA,WAAO,MAAM;AACZD,MAAAA,IAAI,CAACe,mBAAL,CAA0B,SAA1B,EAAqCd,SAArC;AACA,KAFD;AAGA,GA5CM,EA4CJ,EA5CI,CAAP;AA6CA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isEntirelySelected } from '@wordpress/dom';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport default function useSelectAll() {\n\tconst { getBlockOrder, getSelectedBlockClientIds, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { multiSelect, selectBlock } = useDispatch( blockEditorStore );\n\tconst isMatch = useShortcutEventMatch();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( ! isMatch( 'core/block-editor/select-all', event ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedClientIds = getSelectedBlockClientIds();\n\n\t\t\tif (\n\t\t\t\tselectedClientIds.length < 2 &&\n\t\t\t\t! isEntirelySelected( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst [ firstSelectedClientId ] = selectedClientIds;\n\t\t\tconst rootClientId = getBlockRootClientId( firstSelectedClientId );\n\t\t\tconst blockClientIds = getBlockOrder( rootClientId );\n\n\t\t\t// If we have selected all sibling nested blocks, try selecting up a\n\t\t\t// level. See: https://github.com/WordPress/gutenberg/pull/31859/\n\t\t\tif ( selectedClientIds.length === blockClientIds.length ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tnode.ownerDocument.defaultView\n\t\t\t\t\t\t.getSelection()\n\t\t\t\t\t\t.removeAllRanges();\n\t\t\t\t\tselectBlock( rootClientId );\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmultiSelect(\n\t\t\t\tblockClientIds[ 0 ],\n\t\t\t\tblockClientIds[ blockClientIds.length - 1 ]\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'keydown', onKeyDown );\n\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"]}
@@ -24,10 +24,14 @@ var _hooks = require("@wordpress/hooks");
24
24
 
25
25
  var _blocks = require("@wordpress/blocks");
26
26
 
27
+ var _data = require("@wordpress/data");
28
+
27
29
  var _components = require("../components");
28
30
 
29
31
  var _useAvailableAlignments = _interopRequireDefault(require("../components/block-alignment-control/use-available-alignments"));
30
32
 
33
+ var _store = require("../store");
34
+
31
35
  /**
32
36
  * External dependencies
33
37
  */
@@ -132,6 +136,7 @@ function addAttribute(settings) {
132
136
 
133
137
 
134
138
  const withToolbarControls = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
139
+ const blockEdit = (0, _element.createElement)(BlockEdit, props);
135
140
  const {
136
141
  name: blockName
137
142
  } = props; // Compute the block valid alignments by taking into account,
@@ -146,6 +151,13 @@ const withToolbarControls = (0, _compose.createHigherOrderComponent)(BlockEdit =
146
151
  } = _ref;
147
152
  return name;
148
153
  });
154
+ const isContentLocked = (0, _data.useSelect)(select => {
155
+ return select(_store.store).__unstableGetContentLockingParent(props.clientId);
156
+ }, [props.clientId]);
157
+
158
+ if (!validAlignments.length || isContentLocked) {
159
+ return blockEdit;
160
+ }
149
161
 
150
162
  const updateAlignment = nextAlign => {
151
163
  if (!nextAlign) {
@@ -164,14 +176,14 @@ const withToolbarControls = (0, _compose.createHigherOrderComponent)(BlockEdit =
164
176
  });
165
177
  };
166
178
 
167
- return (0, _element.createElement)(_element.Fragment, null, !!validAlignments.length && (0, _element.createElement)(_components.BlockControls, {
179
+ return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.BlockControls, {
168
180
  group: "block",
169
181
  __experimentalShareWithChildBlocks: true
170
182
  }, (0, _element.createElement)(_components.BlockAlignmentControl, {
171
183
  value: props.attributes.align,
172
184
  onChange: updateAlignment,
173
185
  controls: validAlignments
174
- })), (0, _element.createElement)(BlockEdit, props));
186
+ })), blockEdit);
175
187
  }, 'withToolbarControls');
176
188
  /**
177
189
  * Override the default block element to add alignment wrapper props.
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/align.js"],"names":["ALL_ALIGNMENTS","WIDE_ALIGNMENTS","getValidAlignments","blockAlign","hasWideBlockSupport","hasWideEnabled","validAlignments","Array","isArray","filter","value","includes","addAttribute","settings","attributes","align","type","enum","withToolbarControls","BlockEdit","props","name","blockName","blockAllowedAlignments","map","updateAlignment","nextAlign","blockType","blockDefaultAlign","default","setAttributes","length","withDataAlign","BlockListBlock","undefined","wrapperProps","some","alignment","addAssignedAlign","isAlignValid","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { BlockControls, BlockAlignmentControl } from '../components';\nimport useAvailableAlignments from '../components/block-alignment-control/use-available-alignments';\n\n/**\n * An array which includes all possible valid alignments,\n * used to validate if an alignment is valid or not.\n *\n * @constant\n * @type {string[]}\n */\nconst ALL_ALIGNMENTS = [ 'left', 'center', 'right', 'wide', 'full' ];\n\n/**\n * An array which includes all wide alignments.\n * In order for this alignments to be valid they need to be supported by the block,\n * and by the theme.\n *\n * @constant\n * @type {string[]}\n */\nconst WIDE_ALIGNMENTS = [ 'wide', 'full' ];\n\n/**\n * Returns the valid alignments.\n * Takes into consideration the aligns supported by a block, if the block supports wide controls or not and if theme supports wide controls or not.\n * Exported just for testing purposes, not exported outside the module.\n *\n * @param {?boolean|string[]} blockAlign Aligns supported by the block.\n * @param {?boolean} hasWideBlockSupport True if block supports wide alignments. And False otherwise.\n * @param {?boolean} hasWideEnabled True if theme supports wide alignments. And False otherwise.\n *\n * @return {string[]} Valid alignments.\n */\nexport function getValidAlignments(\n\tblockAlign,\n\thasWideBlockSupport = true,\n\thasWideEnabled = true\n) {\n\tlet validAlignments;\n\tif ( Array.isArray( blockAlign ) ) {\n\t\tvalidAlignments = ALL_ALIGNMENTS.filter( ( value ) =>\n\t\t\tblockAlign.includes( value )\n\t\t);\n\t} else if ( blockAlign === true ) {\n\t\t// `true` includes all alignments...\n\t\tvalidAlignments = [ ...ALL_ALIGNMENTS ];\n\t} else {\n\t\tvalidAlignments = [];\n\t}\n\n\tif (\n\t\t! hasWideEnabled ||\n\t\t( blockAlign === true && ! hasWideBlockSupport )\n\t) {\n\t\treturn without( validAlignments, ...WIDE_ALIGNMENTS );\n\t}\n\n\treturn validAlignments;\n}\n\n/**\n * Filters registered block settings, extending attributes to include `align`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( 'type' in ( settings.attributes?.align ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, 'align' ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\talign: {\n\t\t\t\ttype: 'string',\n\t\t\t\t// Allow for '' since it is used by updateAlignment function\n\t\t\t\t// in withToolbarControls for special cases with defined default values.\n\t\t\t\tenum: [ ...ALL_ALIGNMENTS, '' ],\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include new toolbar controls for block\n * alignment, if block defines support.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withToolbarControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\t// Compute the block valid alignments by taking into account,\n\t\t// if the theme supports wide alignments or not and the layout's\n\t\t// availble alignments. We do that for conditionally rendering\n\t\t// Slot.\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( blockName, 'align' ),\n\t\t\thasBlockSupport( blockName, 'alignWide', true )\n\t\t);\n\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t).map( ( { name } ) => name );\n\n\t\tconst updateAlignment = ( nextAlign ) => {\n\t\t\tif ( ! nextAlign ) {\n\t\t\t\tconst blockType = getBlockType( props.name );\n\t\t\t\tconst blockDefaultAlign = blockType?.attributes?.align?.default;\n\t\t\t\tif ( blockDefaultAlign ) {\n\t\t\t\t\tnextAlign = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tprops.setAttributes( { align: nextAlign } );\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ !! validAlignments.length && (\n\t\t\t\t\t<BlockControls\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t__experimentalShareWithChildBlocks\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\t\tvalue={ props.attributes.align }\n\t\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t\t\tcontrols={ validAlignments }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t) }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\n/**\n * Override the default block element to add alignment wrapper props.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withDataAlign = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { align } = attributes;\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( name, 'align' ),\n\t\t\thasBlockSupport( name, 'alignWide', true )\n\t\t);\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t);\n\n\t\t// If an alignment is not assigned, there's no need to go through the\n\t\t// effort to validate or assign its value.\n\t\tif ( align === undefined ) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\tif (\n\t\t\tvalidAlignments.some( ( alignment ) => alignment.name === align )\n\t\t) {\n\t\t\twrapperProps = { ...wrapperProps, 'data-align': align };\n\t\t}\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\n/**\n * Override props assigned to save component to inject alignment class name if\n * block supports it.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addAssignedAlign( props, blockType, attributes ) {\n\tconst { align } = attributes;\n\tconst blockAlign = getBlockSupport( blockType, 'align' );\n\tconst hasWideBlockSupport = hasBlockSupport( blockType, 'alignWide', true );\n\n\t// Compute valid alignments without taking into account if\n\t// the theme supports wide alignments or not.\n\t// This way changing themes does not impact the block save.\n\tconst isAlignValid = getValidAlignments(\n\t\tblockAlign,\n\t\thasWideBlockSupport\n\t).includes( align );\n\tif ( isAlignValid ) {\n\t\tprops.className = classnames( `align${ align }`, props.className );\n\t}\n\n\treturn props;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/align/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/align/with-data-align',\n\twithDataAlign\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/align/with-toolbar-controls',\n\twithToolbarControls\n);\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/align/addAssignedAlign',\n\taddAssignedAlign\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/align.js"],"names":["ALL_ALIGNMENTS","WIDE_ALIGNMENTS","getValidAlignments","blockAlign","hasWideBlockSupport","hasWideEnabled","validAlignments","Array","isArray","filter","value","includes","addAttribute","settings","attributes","align","type","enum","withToolbarControls","BlockEdit","props","blockEdit","name","blockName","blockAllowedAlignments","map","isContentLocked","select","blockEditorStore","__unstableGetContentLockingParent","clientId","length","updateAlignment","nextAlign","blockType","blockDefaultAlign","default","setAttributes","withDataAlign","BlockListBlock","undefined","wrapperProps","some","alignment","addAssignedAlign","isAlignValid","className"],"mappings":";;;;;;;;;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AACA;;AAKA;;AAKA;;AACA;;AACA;;AAvBA;AACA;AACA;;AAIA;AACA;AACA;;AAUA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,CAAE,MAAF,EAAU,QAAV,EAAoB,OAApB,EAA6B,MAA7B,EAAqC,MAArC,CAAvB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,eAAe,GAAG,CAAE,MAAF,EAAU,MAAV,CAAxB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,kBAAT,CACNC,UADM,EAIL;AAAA,MAFDC,mBAEC,uEAFqB,IAErB;AAAA,MADDC,cACC,uEADgB,IAChB;AACD,MAAIC,eAAJ;;AACA,MAAKC,KAAK,CAACC,OAAN,CAAeL,UAAf,CAAL,EAAmC;AAClCG,IAAAA,eAAe,GAAGN,cAAc,CAACS,MAAf,CAAyBC,KAAF,IACxCP,UAAU,CAACQ,QAAX,CAAqBD,KAArB,CADiB,CAAlB;AAGA,GAJD,MAIO,IAAKP,UAAU,KAAK,IAApB,EAA2B;AACjC;AACAG,IAAAA,eAAe,GAAG,CAAE,GAAGN,cAAL,CAAlB;AACA,GAHM,MAGA;AACNM,IAAAA,eAAe,GAAG,EAAlB;AACA;;AAED,MACC,CAAED,cAAF,IACEF,UAAU,KAAK,IAAf,IAAuB,CAAEC,mBAF5B,EAGE;AACD,WAAO,qBAASE,eAAT,EAA0B,GAAGL,eAA7B,CAAP;AACA;;AAED,SAAOK,eAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASM,YAAT,CAAuBC,QAAvB,EAAkC;AAAA;;AACxC;AACA,MAAK,4DAAYA,QAAQ,CAACC,UAArB,yDAAY,qBAAqBC,KAAjC,yEAA0C,EAA1C,CAAL,EAAsD;AACrD,WAAOF,QAAP;AACA;;AACD,MAAK,6BAAiBA,QAAjB,EAA2B,OAA3B,CAAL,EAA4C;AAC3C;AACAA,IAAAA,QAAQ,CAACC,UAAT,GAAsB,EACrB,GAAGD,QAAQ,CAACC,UADS;AAErBC,MAAAA,KAAK,EAAE;AACNC,QAAAA,IAAI,EAAE,QADA;AAEN;AACA;AACAC,QAAAA,IAAI,EAAE,CAAE,GAAGjB,cAAL,EAAqB,EAArB;AAJA;AAFc,KAAtB;AASA;;AAED,SAAOa,QAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMK,mBAAmB,GAAG,yCAChCC,SAAF,IAAmBC,KAAF,IAAa;AAC7B,QAAMC,SAAS,GAAG,4BAAC,SAAD,EAAgBD,KAAhB,CAAlB;AACA,QAAM;AAAEE,IAAAA,IAAI,EAAEC;AAAR,MAAsBH,KAA5B,CAF6B,CAG7B;AACA;AACA;AACA;;AACA,QAAMI,sBAAsB,GAAGtB,kBAAkB,CAChD,6BAAiBqB,SAAjB,EAA4B,OAA5B,CADgD,EAEhD,6BAAiBA,SAAjB,EAA4B,WAA5B,EAAyC,IAAzC,CAFgD,CAAjD;AAKA,QAAMjB,eAAe,GAAG,qCACvBkB,sBADuB,EAEtBC,GAFsB,CAEjB;AAAA,QAAE;AAAEH,MAAAA;AAAF,KAAF;AAAA,WAAgBA,IAAhB;AAAA,GAFiB,CAAxB;AAGA,QAAMI,eAAe,GAAG,qBACrBC,MAAF,IAAc;AACb,WAAOA,MAAM,CACZC,YADY,CAAN,CAELC,iCAFK,CAE8BT,KAAK,CAACU,QAFpC,CAAP;AAGA,GALsB,EAMvB,CAAEV,KAAK,CAACU,QAAR,CANuB,CAAxB;;AAQA,MAAK,CAAExB,eAAe,CAACyB,MAAlB,IAA4BL,eAAjC,EAAmD;AAClD,WAAOL,SAAP;AACA;;AAED,QAAMW,eAAe,GAAKC,SAAF,IAAiB;AACxC,QAAK,CAAEA,SAAP,EAAmB;AAAA;;AAClB,YAAMC,SAAS,GAAG,0BAAcd,KAAK,CAACE,IAApB,CAAlB;AACA,YAAMa,iBAAiB,GAAGD,SAAH,aAAGA,SAAH,gDAAGA,SAAS,CAAEpB,UAAd,oFAAG,sBAAuBC,KAA1B,2DAAG,uBAA8BqB,OAAxD;;AACA,UAAKD,iBAAL,EAAyB;AACxBF,QAAAA,SAAS,GAAG,EAAZ;AACA;AACD;;AACDb,IAAAA,KAAK,CAACiB,aAAN,CAAqB;AAAEtB,MAAAA,KAAK,EAAEkB;AAAT,KAArB;AACA,GATD;;AAWA,SACC,qDACC,4BAAC,yBAAD;AAAe,IAAA,KAAK,EAAC,OAArB;AAA6B,IAAA,kCAAkC;AAA/D,KACC,4BAAC,iCAAD;AACC,IAAA,KAAK,EAAGb,KAAK,CAACN,UAAN,CAAiBC,KAD1B;AAEC,IAAA,QAAQ,EAAGiB,eAFZ;AAGC,IAAA,QAAQ,EAAG1B;AAHZ,IADD,CADD,EAQGe,SARH,CADD;AAYA,CAnDiC,EAoDlC,qBApDkC,CAA5B;AAuDP;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMiB,aAAa,GAAG,yCAC1BC,cAAF,IAAwBnB,KAAF,IAAa;AAClC,QAAM;AAAEE,IAAAA,IAAF;AAAQR,IAAAA;AAAR,MAAuBM,KAA7B;AACA,QAAM;AAAEL,IAAAA;AAAF,MAAYD,UAAlB;AACA,QAAMU,sBAAsB,GAAGtB,kBAAkB,CAChD,6BAAiBoB,IAAjB,EAAuB,OAAvB,CADgD,EAEhD,6BAAiBA,IAAjB,EAAuB,WAAvB,EAAoC,IAApC,CAFgD,CAAjD;AAIA,QAAMhB,eAAe,GAAG,qCACvBkB,sBADuB,CAAxB,CAPkC,CAWlC;AACA;;AACA,MAAKT,KAAK,KAAKyB,SAAf,EAA2B;AAC1B,WAAO,4BAAC,cAAD,EAAqBpB,KAArB,CAAP;AACA;;AAED,MAAIqB,YAAY,GAAGrB,KAAK,CAACqB,YAAzB;;AACA,MACCnC,eAAe,CAACoC,IAAhB,CAAwBC,SAAF,IAAiBA,SAAS,CAACrB,IAAV,KAAmBP,KAA1D,CADD,EAEE;AACD0B,IAAAA,YAAY,GAAG,EAAE,GAAGA,YAAL;AAAmB,oBAAc1B;AAAjC,KAAf;AACA;;AAED,SAAO,4BAAC,cAAD,6BAAqBK,KAArB;AAA6B,IAAA,YAAY,EAAGqB;AAA5C,KAAP;AACA,CA1B2B,CAAtB;AA6BP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACO,SAASG,gBAAT,CAA2BxB,KAA3B,EAAkCc,SAAlC,EAA6CpB,UAA7C,EAA0D;AAChE,QAAM;AAAEC,IAAAA;AAAF,MAAYD,UAAlB;AACA,QAAMX,UAAU,GAAG,6BAAiB+B,SAAjB,EAA4B,OAA5B,CAAnB;AACA,QAAM9B,mBAAmB,GAAG,6BAAiB8B,SAAjB,EAA4B,WAA5B,EAAyC,IAAzC,CAA5B,CAHgE,CAKhE;AACA;AACA;;AACA,QAAMW,YAAY,GAAG3C,kBAAkB,CACtCC,UADsC,EAEtCC,mBAFsC,CAAlB,CAGnBO,QAHmB,CAGTI,KAHS,CAArB;;AAIA,MAAK8B,YAAL,EAAoB;AACnBzB,IAAAA,KAAK,CAAC0B,SAAN,GAAkB,yBAAa,QAAQ/B,KAAO,EAA5B,EAA+BK,KAAK,CAAC0B,SAArC,CAAlB;AACA;;AAED,SAAO1B,KAAP;AACA;;AAED,sBACC,0BADD,EAEC,yBAFD,EAGCR,YAHD;AAKA,sBACC,uBADD,EAEC,mCAFD,EAGC0B,aAHD;AAKA,sBACC,kBADD,EAEC,yCAFD,EAGCpB,mBAHD;AAKA,sBACC,kCADD,EAEC,6BAFD,EAGC0B,gBAHD","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { BlockControls, BlockAlignmentControl } from '../components';\nimport useAvailableAlignments from '../components/block-alignment-control/use-available-alignments';\nimport { store as blockEditorStore } from '../store';\n\n/**\n * An array which includes all possible valid alignments,\n * used to validate if an alignment is valid or not.\n *\n * @constant\n * @type {string[]}\n */\nconst ALL_ALIGNMENTS = [ 'left', 'center', 'right', 'wide', 'full' ];\n\n/**\n * An array which includes all wide alignments.\n * In order for this alignments to be valid they need to be supported by the block,\n * and by the theme.\n *\n * @constant\n * @type {string[]}\n */\nconst WIDE_ALIGNMENTS = [ 'wide', 'full' ];\n\n/**\n * Returns the valid alignments.\n * Takes into consideration the aligns supported by a block, if the block supports wide controls or not and if theme supports wide controls or not.\n * Exported just for testing purposes, not exported outside the module.\n *\n * @param {?boolean|string[]} blockAlign Aligns supported by the block.\n * @param {?boolean} hasWideBlockSupport True if block supports wide alignments. And False otherwise.\n * @param {?boolean} hasWideEnabled True if theme supports wide alignments. And False otherwise.\n *\n * @return {string[]} Valid alignments.\n */\nexport function getValidAlignments(\n\tblockAlign,\n\thasWideBlockSupport = true,\n\thasWideEnabled = true\n) {\n\tlet validAlignments;\n\tif ( Array.isArray( blockAlign ) ) {\n\t\tvalidAlignments = ALL_ALIGNMENTS.filter( ( value ) =>\n\t\t\tblockAlign.includes( value )\n\t\t);\n\t} else if ( blockAlign === true ) {\n\t\t// `true` includes all alignments...\n\t\tvalidAlignments = [ ...ALL_ALIGNMENTS ];\n\t} else {\n\t\tvalidAlignments = [];\n\t}\n\n\tif (\n\t\t! hasWideEnabled ||\n\t\t( blockAlign === true && ! hasWideBlockSupport )\n\t) {\n\t\treturn without( validAlignments, ...WIDE_ALIGNMENTS );\n\t}\n\n\treturn validAlignments;\n}\n\n/**\n * Filters registered block settings, extending attributes to include `align`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( 'type' in ( settings.attributes?.align ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, 'align' ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\talign: {\n\t\t\t\ttype: 'string',\n\t\t\t\t// Allow for '' since it is used by updateAlignment function\n\t\t\t\t// in withToolbarControls for special cases with defined default values.\n\t\t\t\tenum: [ ...ALL_ALIGNMENTS, '' ],\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include new toolbar controls for block\n * alignment, if block defines support.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withToolbarControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst blockEdit = <BlockEdit { ...props } />;\n\t\tconst { name: blockName } = props;\n\t\t// Compute the block valid alignments by taking into account,\n\t\t// if the theme supports wide alignments or not and the layout's\n\t\t// availble alignments. We do that for conditionally rendering\n\t\t// Slot.\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( blockName, 'align' ),\n\t\t\thasBlockSupport( blockName, 'alignWide', true )\n\t\t);\n\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t).map( ( { name } ) => name );\n\t\tconst isContentLocked = useSelect(\n\t\t\t( select ) => {\n\t\t\t\treturn select(\n\t\t\t\t\tblockEditorStore\n\t\t\t\t).__unstableGetContentLockingParent( props.clientId );\n\t\t\t},\n\t\t\t[ props.clientId ]\n\t\t);\n\t\tif ( ! validAlignments.length || isContentLocked ) {\n\t\t\treturn blockEdit;\n\t\t}\n\n\t\tconst updateAlignment = ( nextAlign ) => {\n\t\t\tif ( ! nextAlign ) {\n\t\t\t\tconst blockType = getBlockType( props.name );\n\t\t\t\tconst blockDefaultAlign = blockType?.attributes?.align?.default;\n\t\t\t\tif ( blockDefaultAlign ) {\n\t\t\t\t\tnextAlign = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tprops.setAttributes( { align: nextAlign } );\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\tvalue={ props.attributes.align }\n\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t\tcontrols={ validAlignments }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t\t{ blockEdit }\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\n/**\n * Override the default block element to add alignment wrapper props.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withDataAlign = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { align } = attributes;\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( name, 'align' ),\n\t\t\thasBlockSupport( name, 'alignWide', true )\n\t\t);\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t);\n\n\t\t// If an alignment is not assigned, there's no need to go through the\n\t\t// effort to validate or assign its value.\n\t\tif ( align === undefined ) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\tif (\n\t\t\tvalidAlignments.some( ( alignment ) => alignment.name === align )\n\t\t) {\n\t\t\twrapperProps = { ...wrapperProps, 'data-align': align };\n\t\t}\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\n/**\n * Override props assigned to save component to inject alignment class name if\n * block supports it.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addAssignedAlign( props, blockType, attributes ) {\n\tconst { align } = attributes;\n\tconst blockAlign = getBlockSupport( blockType, 'align' );\n\tconst hasWideBlockSupport = hasBlockSupport( blockType, 'alignWide', true );\n\n\t// Compute valid alignments without taking into account if\n\t// the theme supports wide alignments or not.\n\t// This way changing themes does not impact the block save.\n\tconst isAlignValid = getValidAlignments(\n\t\tblockAlign,\n\t\thasWideBlockSupport\n\t).includes( align );\n\tif ( isAlignValid ) {\n\t\tprops.className = classnames( `align${ align }`, props.className );\n\t}\n\n\treturn props;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/align/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/align/with-data-align',\n\twithDataAlign\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/align/with-toolbar-controls',\n\twithToolbarControls\n);\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/align/addAssignedAlign',\n\taddAssignedAlign\n);\n"]}
@@ -43,10 +43,11 @@ function ColorPanel(_ref) {
43
43
  const [detectedColor, setDetectedColor] = (0, _element.useState)();
44
44
  const [detectedLinkColor, setDetectedLinkColor] = (0, _element.useState)();
45
45
  const ref = (0, _useBlockRefs.__unstableUseBlockRef)(clientId);
46
+ const definedColors = settings.filter(setting => setting === null || setting === void 0 ? void 0 : setting.colorValue);
46
47
  (0, _element.useEffect)(() => {
47
48
  var _ref$current;
48
49
 
49
- if (!enableContrastChecking) {
50
+ if (!enableContrastChecking || !definedColors.length) {
50
51
  return;
51
52
  }
52
53
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/color-panel.js"],"names":["getComputedStyle","node","ownerDocument","defaultView","ColorPanel","enableAlpha","settings","clientId","enableContrastChecking","detectedBackgroundColor","setDetectedBackgroundColor","detectedColor","setDetectedColor","detectedLinkColor","setDetectedLinkColor","ref","current","color","firstLinkElement","querySelector","innerText","backgroundColorNode","backgroundColor","parentNode","nodeType","ELEMENT_NODE","colorGradientSettings"],"mappings":";;;;;;;;;AAGA;;;;AAKA;;AACA;;AACA;;AACA;;AACA;;AAZA;AACA;AACA;;AAGA;AACA;AACA;AAOA,SAASA,gBAAT,CAA2BC,IAA3B,EAAkC;AACjC,SAAOA,IAAI,CAACC,aAAL,CAAmBC,WAAnB,CAA+BH,gBAA/B,CAAiDC,IAAjD,CAAP;AACA;;AAEc,SAASG,UAAT,OAKX;AAAA,MALgC;AACnCC,IAAAA,WAAW,GAAG,KADqB;AAEnCC,IAAAA,QAFmC;AAGnCC,IAAAA,QAHmC;AAInCC,IAAAA,sBAAsB,GAAG;AAJU,GAKhC;AACH,QAAM,CAAEC,uBAAF,EAA2BC,0BAA3B,IAA0D,wBAAhE;AACA,QAAM,CAAEC,aAAF,EAAiBC,gBAAjB,IAAsC,wBAA5C;AACA,QAAM,CAAEC,iBAAF,EAAqBC,oBAArB,IAA8C,wBAApD;AACA,QAAMC,GAAG,GAAG,yCAAaR,QAAb,CAAZ;AAEA,0BAAW,MAAM;AAAA;;AAChB,QAAK,CAAEC,sBAAP,EAAgC;AAC/B;AACA;;AAED,QAAK,CAAEO,GAAG,CAACC,OAAX,EAAqB;AACpB;AACA;;AACDJ,IAAAA,gBAAgB,CAAEZ,gBAAgB,CAAEe,GAAG,CAACC,OAAN,CAAhB,CAAgCC,KAAlC,CAAhB;AAEA,UAAMC,gBAAgB,mBAAGH,GAAG,CAACC,OAAP,iDAAG,aAAaG,aAAb,CAA4B,GAA5B,CAAzB;;AACA,QAAKD,gBAAgB,IAAI,CAAC,CAAEA,gBAAgB,CAACE,SAA7C,EAAyD;AACxDN,MAAAA,oBAAoB,CAAEd,gBAAgB,CAAEkB,gBAAF,CAAhB,CAAqCD,KAAvC,CAApB;AACA;;AAED,QAAII,mBAAmB,GAAGN,GAAG,CAACC,OAA9B;AACA,QAAIM,eAAe,GAClBtB,gBAAgB,CAAEqB,mBAAF,CAAhB,CAAwCC,eADzC;;AAEA,WACCA,eAAe,KAAK,kBAApB,IACAD,mBAAmB,CAACE,UADpB,IAEAF,mBAAmB,CAACE,UAApB,CAA+BC,QAA/B,KACCH,mBAAmB,CAACE,UAApB,CAA+BE,YAJjC,EAKE;AACDJ,MAAAA,mBAAmB,GAAGA,mBAAmB,CAACE,UAA1C;AACAD,MAAAA,eAAe,GACdtB,gBAAgB,CAAEqB,mBAAF,CAAhB,CAAwCC,eADzC;AAEA;;AAEDZ,IAAAA,0BAA0B,CAAEY,eAAF,CAA1B;AACA,GA9BD;AAgCA,QAAMI,qBAAqB,GAAG,mDAA9B;AAEA,SACC,4BAAC,0BAAD;AAAmB,IAAA,mBAAmB,EAAC;AAAvC,KACC,4BAAC,iBAAD;AACC,IAAA,WAAW,EAAGrB,WADf;AAEC,IAAA,OAAO,EAAGE,QAFX;AAGC,IAAA,QAAQ,EAAGD,QAHZ;AAIC,IAAA,yBAAyB,EAAG,KAJ7B;AAKC,IAAA,gCAAgC,MALjC;AAMC,IAAA,iCAAiC;AANlC,KAOMoB,qBAPN,EADD,EAUGlB,sBAAsB,IACvB,4BAAC,wBAAD;AACC,IAAA,eAAe,EAAGC,uBADnB;AAEC,IAAA,SAAS,EAAGE,aAFb;AAGC,IAAA,kBAAkB,EAAGN,WAHtB;AAIC,IAAA,SAAS,EAAGQ;AAJb,IAXF,CADD;AAqBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport ColorGradientSettingsDropdown from '../components/colors-gradients/dropdown';\nimport ContrastChecker from '../components/contrast-checker';\nimport InspectorControls from '../components/inspector-controls';\nimport useMultipleOriginColorsAndGradients from '../components/colors-gradients/use-multiple-origin-colors-and-gradients';\nimport { __unstableUseBlockRef as useBlockRef } from '../components/block-list/use-block-props/use-block-refs';\n\nfunction getComputedStyle( node ) {\n\treturn node.ownerDocument.defaultView.getComputedStyle( node );\n}\n\nexport default function ColorPanel( {\n\tenableAlpha = false,\n\tsettings,\n\tclientId,\n\tenableContrastChecking = true,\n} ) {\n\tconst [ detectedBackgroundColor, setDetectedBackgroundColor ] = useState();\n\tconst [ detectedColor, setDetectedColor ] = useState();\n\tconst [ detectedLinkColor, setDetectedLinkColor ] = useState();\n\tconst ref = useBlockRef( clientId );\n\n\tuseEffect( () => {\n\t\tif ( ! enableContrastChecking ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\t\tsetDetectedColor( getComputedStyle( ref.current ).color );\n\n\t\tconst firstLinkElement = ref.current?.querySelector( 'a' );\n\t\tif ( firstLinkElement && !! firstLinkElement.innerText ) {\n\t\t\tsetDetectedLinkColor( getComputedStyle( firstLinkElement ).color );\n\t\t}\n\n\t\tlet backgroundColorNode = ref.current;\n\t\tlet backgroundColor =\n\t\t\tgetComputedStyle( backgroundColorNode ).backgroundColor;\n\t\twhile (\n\t\t\tbackgroundColor === 'rgba(0, 0, 0, 0)' &&\n\t\t\tbackgroundColorNode.parentNode &&\n\t\t\tbackgroundColorNode.parentNode.nodeType ===\n\t\t\t\tbackgroundColorNode.parentNode.ELEMENT_NODE\n\t\t) {\n\t\t\tbackgroundColorNode = backgroundColorNode.parentNode;\n\t\t\tbackgroundColor =\n\t\t\t\tgetComputedStyle( backgroundColorNode ).backgroundColor;\n\t\t}\n\n\t\tsetDetectedBackgroundColor( backgroundColor );\n\t} );\n\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\n\treturn (\n\t\t<InspectorControls __experimentalGroup=\"color\">\n\t\t\t<ColorGradientSettingsDropdown\n\t\t\t\tenableAlpha={ enableAlpha }\n\t\t\t\tpanelId={ clientId }\n\t\t\t\tsettings={ settings }\n\t\t\t\t__experimentalIsItemGroup={ false }\n\t\t\t\t__experimentalHasMultipleOrigins\n\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t{ ...colorGradientSettings }\n\t\t\t/>\n\t\t\t{ enableContrastChecking && (\n\t\t\t\t<ContrastChecker\n\t\t\t\t\tbackgroundColor={ detectedBackgroundColor }\n\t\t\t\t\ttextColor={ detectedColor }\n\t\t\t\t\tenableAlphaChecker={ enableAlpha }\n\t\t\t\t\tlinkColor={ detectedLinkColor }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</InspectorControls>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/color-panel.js"],"names":["getComputedStyle","node","ownerDocument","defaultView","ColorPanel","enableAlpha","settings","clientId","enableContrastChecking","detectedBackgroundColor","setDetectedBackgroundColor","detectedColor","setDetectedColor","detectedLinkColor","setDetectedLinkColor","ref","definedColors","filter","setting","colorValue","length","current","color","firstLinkElement","querySelector","innerText","backgroundColorNode","backgroundColor","parentNode","nodeType","ELEMENT_NODE","colorGradientSettings"],"mappings":";;;;;;;;;AAGA;;;;AAKA;;AACA;;AACA;;AACA;;AACA;;AAZA;AACA;AACA;;AAGA;AACA;AACA;AAOA,SAASA,gBAAT,CAA2BC,IAA3B,EAAkC;AACjC,SAAOA,IAAI,CAACC,aAAL,CAAmBC,WAAnB,CAA+BH,gBAA/B,CAAiDC,IAAjD,CAAP;AACA;;AAEc,SAASG,UAAT,OAKX;AAAA,MALgC;AACnCC,IAAAA,WAAW,GAAG,KADqB;AAEnCC,IAAAA,QAFmC;AAGnCC,IAAAA,QAHmC;AAInCC,IAAAA,sBAAsB,GAAG;AAJU,GAKhC;AACH,QAAM,CAAEC,uBAAF,EAA2BC,0BAA3B,IAA0D,wBAAhE;AACA,QAAM,CAAEC,aAAF,EAAiBC,gBAAjB,IAAsC,wBAA5C;AACA,QAAM,CAAEC,iBAAF,EAAqBC,oBAArB,IAA8C,wBAApD;AACA,QAAMC,GAAG,GAAG,yCAAaR,QAAb,CAAZ;AACA,QAAMS,aAAa,GAAGV,QAAQ,CAACW,MAAT,CAAmBC,OAAF,IAAeA,OAAf,aAAeA,OAAf,uBAAeA,OAAO,CAAEC,UAAzC,CAAtB;AAEA,0BAAW,MAAM;AAAA;;AAChB,QAAK,CAAEX,sBAAF,IAA4B,CAAEQ,aAAa,CAACI,MAAjD,EAA0D;AACzD;AACA;;AAED,QAAK,CAAEL,GAAG,CAACM,OAAX,EAAqB;AACpB;AACA;;AACDT,IAAAA,gBAAgB,CAAEZ,gBAAgB,CAAEe,GAAG,CAACM,OAAN,CAAhB,CAAgCC,KAAlC,CAAhB;AAEA,UAAMC,gBAAgB,mBAAGR,GAAG,CAACM,OAAP,iDAAG,aAAaG,aAAb,CAA4B,GAA5B,CAAzB;;AACA,QAAKD,gBAAgB,IAAI,CAAC,CAAEA,gBAAgB,CAACE,SAA7C,EAAyD;AACxDX,MAAAA,oBAAoB,CAAEd,gBAAgB,CAAEuB,gBAAF,CAAhB,CAAqCD,KAAvC,CAApB;AACA;;AAED,QAAII,mBAAmB,GAAGX,GAAG,CAACM,OAA9B;AACA,QAAIM,eAAe,GAClB3B,gBAAgB,CAAE0B,mBAAF,CAAhB,CAAwCC,eADzC;;AAEA,WACCA,eAAe,KAAK,kBAApB,IACAD,mBAAmB,CAACE,UADpB,IAEAF,mBAAmB,CAACE,UAApB,CAA+BC,QAA/B,KACCH,mBAAmB,CAACE,UAApB,CAA+BE,YAJjC,EAKE;AACDJ,MAAAA,mBAAmB,GAAGA,mBAAmB,CAACE,UAA1C;AACAD,MAAAA,eAAe,GACd3B,gBAAgB,CAAE0B,mBAAF,CAAhB,CAAwCC,eADzC;AAEA;;AAEDjB,IAAAA,0BAA0B,CAAEiB,eAAF,CAA1B;AACA,GA9BD;AAgCA,QAAMI,qBAAqB,GAAG,mDAA9B;AAEA,SACC,4BAAC,0BAAD;AAAmB,IAAA,mBAAmB,EAAC;AAAvC,KACC,4BAAC,iBAAD;AACC,IAAA,WAAW,EAAG1B,WADf;AAEC,IAAA,OAAO,EAAGE,QAFX;AAGC,IAAA,QAAQ,EAAGD,QAHZ;AAIC,IAAA,yBAAyB,EAAG,KAJ7B;AAKC,IAAA,gCAAgC,MALjC;AAMC,IAAA,iCAAiC;AANlC,KAOMyB,qBAPN,EADD,EAUGvB,sBAAsB,IACvB,4BAAC,wBAAD;AACC,IAAA,eAAe,EAAGC,uBADnB;AAEC,IAAA,SAAS,EAAGE,aAFb;AAGC,IAAA,kBAAkB,EAAGN,WAHtB;AAIC,IAAA,SAAS,EAAGQ;AAJb,IAXF,CADD;AAqBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport ColorGradientSettingsDropdown from '../components/colors-gradients/dropdown';\nimport ContrastChecker from '../components/contrast-checker';\nimport InspectorControls from '../components/inspector-controls';\nimport useMultipleOriginColorsAndGradients from '../components/colors-gradients/use-multiple-origin-colors-and-gradients';\nimport { __unstableUseBlockRef as useBlockRef } from '../components/block-list/use-block-props/use-block-refs';\n\nfunction getComputedStyle( node ) {\n\treturn node.ownerDocument.defaultView.getComputedStyle( node );\n}\n\nexport default function ColorPanel( {\n\tenableAlpha = false,\n\tsettings,\n\tclientId,\n\tenableContrastChecking = true,\n} ) {\n\tconst [ detectedBackgroundColor, setDetectedBackgroundColor ] = useState();\n\tconst [ detectedColor, setDetectedColor ] = useState();\n\tconst [ detectedLinkColor, setDetectedLinkColor ] = useState();\n\tconst ref = useBlockRef( clientId );\n\tconst definedColors = settings.filter( ( setting ) => setting?.colorValue );\n\n\tuseEffect( () => {\n\t\tif ( ! enableContrastChecking || ! definedColors.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\t\tsetDetectedColor( getComputedStyle( ref.current ).color );\n\n\t\tconst firstLinkElement = ref.current?.querySelector( 'a' );\n\t\tif ( firstLinkElement && !! firstLinkElement.innerText ) {\n\t\t\tsetDetectedLinkColor( getComputedStyle( firstLinkElement ).color );\n\t\t}\n\n\t\tlet backgroundColorNode = ref.current;\n\t\tlet backgroundColor =\n\t\t\tgetComputedStyle( backgroundColorNode ).backgroundColor;\n\t\twhile (\n\t\t\tbackgroundColor === 'rgba(0, 0, 0, 0)' &&\n\t\t\tbackgroundColorNode.parentNode &&\n\t\t\tbackgroundColorNode.parentNode.nodeType ===\n\t\t\t\tbackgroundColorNode.parentNode.ELEMENT_NODE\n\t\t) {\n\t\t\tbackgroundColorNode = backgroundColorNode.parentNode;\n\t\t\tbackgroundColor =\n\t\t\t\tgetComputedStyle( backgroundColorNode ).backgroundColor;\n\t\t}\n\n\t\tsetDetectedBackgroundColor( backgroundColor );\n\t} );\n\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\n\treturn (\n\t\t<InspectorControls __experimentalGroup=\"color\">\n\t\t\t<ColorGradientSettingsDropdown\n\t\t\t\tenableAlpha={ enableAlpha }\n\t\t\t\tpanelId={ clientId }\n\t\t\t\tsettings={ settings }\n\t\t\t\t__experimentalIsItemGroup={ false }\n\t\t\t\t__experimentalHasMultipleOrigins\n\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t{ ...colorGradientSettings }\n\t\t\t/>\n\t\t\t{ enableContrastChecking && (\n\t\t\t\t<ContrastChecker\n\t\t\t\t\tbackgroundColor={ detectedBackgroundColor }\n\t\t\t\t\ttextColor={ detectedColor }\n\t\t\t\t\tenableAlphaChecker={ enableAlpha }\n\t\t\t\t\tlinkColor={ detectedLinkColor }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</InspectorControls>\n\t);\n}\n"]}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.withBlockControls = void 0;
9
+
10
+ var _element = require("@wordpress/element");
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _components = require("@wordpress/components");
15
+
16
+ var _compose = require("@wordpress/compose");
17
+
18
+ var _data = require("@wordpress/data");
19
+
20
+ var _hooks = require("@wordpress/hooks");
21
+
22
+ var _i18n = require("@wordpress/i18n");
23
+
24
+ var _store = require("../store");
25
+
26
+ var _components2 = require("../components");
27
+
28
+ var _classnames = _interopRequireDefault(require("classnames"));
29
+
30
+ /**
31
+ * WordPress dependencies
32
+ */
33
+
34
+ /**
35
+ * Internal dependencies
36
+ */
37
+
38
+ /**
39
+ * External dependencies
40
+ */
41
+ function StopEditingAsBlocksOnOutsideSelect(_ref) {
42
+ let {
43
+ clientId,
44
+ stopEditingAsBlock
45
+ } = _ref;
46
+ const isBlockOrDescendantSelected = (0, _data.useSelect)(select => {
47
+ const {
48
+ isBlockSelected,
49
+ hasSelectedInnerBlock
50
+ } = select(_store.store);
51
+ return isBlockSelected(clientId) || hasSelectedInnerBlock(clientId, true);
52
+ }, [clientId]);
53
+ (0, _element.useEffect)(() => {
54
+ if (!isBlockOrDescendantSelected) {
55
+ stopEditingAsBlock();
56
+ }
57
+ }, [isBlockOrDescendantSelected]);
58
+ return null;
59
+ }
60
+
61
+ const withBlockControls = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
62
+ const {
63
+ getBlockListSettings,
64
+ getSettings
65
+ } = (0, _data.useSelect)(_store.store);
66
+ const focusModeToRevert = (0, _element.useRef)();
67
+ const {
68
+ templateLock,
69
+ isLockedByParent,
70
+ isEditingAsBlocks
71
+ } = (0, _data.useSelect)(select => {
72
+ const {
73
+ __unstableGetContentLockingParent,
74
+ getTemplateLock,
75
+ __unstableGetTemporarilyEditingAsBlocks
76
+ } = select(_store.store);
77
+ return {
78
+ templateLock: getTemplateLock(props.clientId),
79
+ isLockedByParent: !!__unstableGetContentLockingParent(props.clientId),
80
+ isEditingAsBlocks: __unstableGetTemporarilyEditingAsBlocks() === props.clientId
81
+ };
82
+ }, [props.clientId]);
83
+ const {
84
+ updateSettings,
85
+ updateBlockListSettings,
86
+ __unstableSetTemporarilyEditingAsBlocks
87
+ } = (0, _data.useDispatch)(_store.store);
88
+ const isContentLocked = !isLockedByParent && templateLock === 'noContent';
89
+ const {
90
+ __unstableMarkNextChangeAsNotPersistent,
91
+ updateBlockAttributes
92
+ } = (0, _data.useDispatch)(_store.store);
93
+ const stopEditingAsBlock = (0, _element.useCallback)(() => {
94
+ __unstableMarkNextChangeAsNotPersistent();
95
+
96
+ updateBlockAttributes(props.clientId, {
97
+ templateLock: 'noContent'
98
+ });
99
+ updateBlockListSettings(props.clientId, { ...getBlockListSettings(props.clientId),
100
+ templateLock: 'noContent'
101
+ });
102
+ updateSettings({
103
+ focusMode: focusModeToRevert.current
104
+ });
105
+
106
+ __unstableSetTemporarilyEditingAsBlocks();
107
+ }, [props.clientId, focusModeToRevert, updateSettings, updateBlockListSettings, getBlockListSettings, __unstableMarkNextChangeAsNotPersistent, updateBlockAttributes, __unstableSetTemporarilyEditingAsBlocks]);
108
+
109
+ if (!isContentLocked && !isEditingAsBlocks) {
110
+ return (0, _element.createElement)(BlockEdit, props);
111
+ }
112
+
113
+ return (0, _element.createElement)(_element.Fragment, null, isEditingAsBlocks && !isContentLocked && (0, _element.createElement)(StopEditingAsBlocksOnOutsideSelect, {
114
+ clientId: props.clientId,
115
+ stopEditingAsBlock: stopEditingAsBlock
116
+ }), (0, _element.createElement)(_components2.BlockControls, {
117
+ group: "other"
118
+ }, (0, _element.createElement)(_components.ToolbarButton, {
119
+ onClick: () => {
120
+ if (isEditingAsBlocks && !isContentLocked) {
121
+ stopEditingAsBlock();
122
+ } else {
123
+ __unstableMarkNextChangeAsNotPersistent();
124
+
125
+ updateBlockAttributes(props.clientId, {
126
+ templateLock: undefined
127
+ });
128
+ updateBlockListSettings(props.clientId, { ...getBlockListSettings(props.clientId),
129
+ templateLock: false
130
+ });
131
+ focusModeToRevert.current = getSettings().focusMode;
132
+ updateSettings({
133
+ focusMode: true
134
+ });
135
+
136
+ __unstableSetTemporarilyEditingAsBlocks(props.clientId);
137
+ }
138
+ }
139
+ }, isEditingAsBlocks && !isContentLocked ? (0, _i18n.__)('Done') : (0, _i18n.__)('Modify'))), (0, _element.createElement)(BlockEdit, (0, _extends2.default)({}, props, {
140
+ className: (0, _classnames.default)(props.className, isEditingAsBlocks && 'is-content-locked-editing-as-blocks')
141
+ })));
142
+ }, 'withToolbarControls');
143
+ exports.withBlockControls = withBlockControls;
144
+ (0, _hooks.addFilter)('editor.BlockEdit', 'core/style/with-block-controls', withBlockControls);
145
+ //# sourceMappingURL=content-lock-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/content-lock-ui.js"],"names":["StopEditingAsBlocksOnOutsideSelect","clientId","stopEditingAsBlock","isBlockOrDescendantSelected","select","isBlockSelected","hasSelectedInnerBlock","blockEditorStore","withBlockControls","BlockEdit","props","getBlockListSettings","getSettings","focusModeToRevert","templateLock","isLockedByParent","isEditingAsBlocks","__unstableGetContentLockingParent","getTemplateLock","__unstableGetTemporarilyEditingAsBlocks","updateSettings","updateBlockListSettings","__unstableSetTemporarilyEditingAsBlocks","isContentLocked","__unstableMarkNextChangeAsNotPersistent","updateBlockAttributes","focusMode","current","undefined","className"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarButton } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { addFilter } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useRef, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { BlockControls } from '../components';\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\nfunction StopEditingAsBlocksOnOutsideSelect( {\n\tclientId,\n\tstopEditingAsBlock,\n} ) {\n\tconst isBlockOrDescendantSelected = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isBlockSelected, hasSelectedInnerBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn (\n\t\t\t\tisBlockSelected( clientId ) ||\n\t\t\t\thasSelectedInnerBlock( clientId, true )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\tuseEffect( () => {\n\t\tif ( ! isBlockOrDescendantSelected ) {\n\t\t\tstopEditingAsBlock();\n\t\t}\n\t}, [ isBlockOrDescendantSelected ] );\n\treturn null;\n}\n\nexport const withBlockControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { getBlockListSettings, getSettings } =\n\t\t\tuseSelect( blockEditorStore );\n\t\tconst focusModeToRevert = useRef();\n\t\tconst { templateLock, isLockedByParent, isEditingAsBlocks } = useSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\t__unstableGetContentLockingParent,\n\t\t\t\t\tgetTemplateLock,\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\treturn {\n\t\t\t\t\ttemplateLock: getTemplateLock( props.clientId ),\n\t\t\t\t\tisLockedByParent: !! __unstableGetContentLockingParent(\n\t\t\t\t\t\tprops.clientId\n\t\t\t\t\t),\n\t\t\t\t\tisEditingAsBlocks:\n\t\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() ===\n\t\t\t\t\t\tprops.clientId,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ props.clientId ]\n\t\t);\n\n\t\tconst {\n\t\t\tupdateSettings,\n\t\t\tupdateBlockListSettings,\n\t\t\t__unstableSetTemporarilyEditingAsBlocks,\n\t\t} = useDispatch( blockEditorStore );\n\t\tconst isContentLocked =\n\t\t\t! isLockedByParent && templateLock === 'noContent';\n\t\tconst {\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t\tupdateBlockAttributes,\n\t\t} = useDispatch( blockEditorStore );\n\n\t\tconst stopEditingAsBlock = useCallback( () => {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateBlockAttributes( props.clientId, {\n\t\t\t\ttemplateLock: 'noContent',\n\t\t\t} );\n\t\t\tupdateBlockListSettings( props.clientId, {\n\t\t\t\t...getBlockListSettings( props.clientId ),\n\t\t\t\ttemplateLock: 'noContent',\n\t\t\t} );\n\t\t\tupdateSettings( { focusMode: focusModeToRevert.current } );\n\t\t\t__unstableSetTemporarilyEditingAsBlocks();\n\t\t}, [\n\t\t\tprops.clientId,\n\t\t\tfocusModeToRevert,\n\t\t\tupdateSettings,\n\t\t\tupdateBlockListSettings,\n\t\t\tgetBlockListSettings,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t\tupdateBlockAttributes,\n\t\t\t__unstableSetTemporarilyEditingAsBlocks,\n\t\t] );\n\n\t\tif ( ! isContentLocked && ! isEditingAsBlocks ) {\n\t\t\treturn <BlockEdit { ...props } />;\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ isEditingAsBlocks && ! isContentLocked && (\n\t\t\t\t\t<StopEditingAsBlocksOnOutsideSelect\n\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\tstopEditingAsBlock={ stopEditingAsBlock }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif ( isEditingAsBlocks && ! isContentLocked ) {\n\t\t\t\t\t\t\t\tstopEditingAsBlock();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\t\t\tupdateBlockAttributes( props.clientId, {\n\t\t\t\t\t\t\t\t\ttemplateLock: undefined,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\tupdateBlockListSettings( props.clientId, {\n\t\t\t\t\t\t\t\t\t...getBlockListSettings( props.clientId ),\n\t\t\t\t\t\t\t\t\ttemplateLock: false,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\tfocusModeToRevert.current =\n\t\t\t\t\t\t\t\t\tgetSettings().focusMode;\n\t\t\t\t\t\t\t\tupdateSettings( { focusMode: true } );\n\t\t\t\t\t\t\t\t__unstableSetTemporarilyEditingAsBlocks(\n\t\t\t\t\t\t\t\t\tprops.clientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isEditingAsBlocks && ! isContentLocked\n\t\t\t\t\t\t\t? __( 'Done' )\n\t\t\t\t\t\t\t: __( 'Modify' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</BlockControls>\n\t\t\t\t<BlockEdit\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\tisEditingAsBlocks &&\n\t\t\t\t\t\t\t'is-content-locked-editing-as-blocks'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/style/with-block-controls',\n\twithBlockControls\n);\n"]}
@@ -18,12 +18,16 @@ var _compose = require("@wordpress/compose");
18
18
 
19
19
  var _hooks = require("@wordpress/hooks");
20
20
 
21
+ var _data = require("@wordpress/data");
22
+
21
23
  var _components = require("../components");
22
24
 
23
25
  var _blockList = _interopRequireDefault(require("../components/block-list"));
24
26
 
25
27
  var _duotone = require("../components/duotone");
26
28
 
29
+ var _store = require("../store");
30
+
27
31
  /**
28
32
  * External dependencies
29
33
  */
@@ -166,7 +170,10 @@ function addDuotoneAttributes(settings) {
166
170
 
167
171
  const withDuotoneControls = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
168
172
  const hasDuotoneSupport = (0, _blocks.hasBlockSupport)(props.name, 'color.__experimentalDuotone');
169
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(BlockEdit, props), hasDuotoneSupport && (0, _element.createElement)(DuotonePanel, props));
173
+ const isContentLocked = (0, _data.useSelect)(select => {
174
+ return select(_store.store).__unstableGetContentLockingParent(props.clientId);
175
+ }, [props.clientId]);
176
+ return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(BlockEdit, props), hasDuotoneSupport && !isContentLocked && (0, _element.createElement)(DuotonePanel, props));
170
177
  }, 'withDuotoneControls');
171
178
  /**
172
179
  * Function that scopes a selector with another one. This works a bit like