@wordpress/block-editor 7.0.1 → 8.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 (1017) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +47 -4
  3. package/build/components/autocomplete/index.js +1 -1
  4. package/build/components/autocomplete/index.js.map +1 -1
  5. package/build/components/block-actions/index.js +8 -4
  6. package/build/components/block-actions/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +61 -14
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-alignment-control/use-available-alignments.js +25 -3
  10. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  11. package/build/components/block-content-overlay/index.js +2 -4
  12. package/build/components/block-content-overlay/index.js.map +1 -1
  13. package/build/components/block-controls/fill.js +6 -6
  14. package/build/components/block-controls/fill.js.map +1 -1
  15. package/build/components/block-controls/groups.js +3 -1
  16. package/build/components/block-controls/groups.js.map +1 -1
  17. package/build/components/block-controls/hook.js +57 -0
  18. package/build/components/block-controls/hook.js.map +1 -0
  19. package/build/components/block-edit/context.js +6 -5
  20. package/build/components/block-edit/context.js.map +1 -1
  21. package/build/components/block-edit/edit.js +1 -1
  22. package/build/components/block-edit/edit.js.map +1 -1
  23. package/build/components/block-icon/index.js +5 -1
  24. package/build/components/block-icon/index.js.map +1 -1
  25. package/build/components/block-icon/index.native.js +13 -9
  26. package/build/components/block-icon/index.native.js.map +1 -1
  27. package/build/components/block-inspector/index.js +14 -7
  28. package/build/components/block-inspector/index.js.map +1 -1
  29. package/build/components/block-list/block-html.js +5 -0
  30. package/build/components/block-list/block-html.js.map +1 -1
  31. package/build/components/block-list/block-list-item.native.js +31 -12
  32. package/build/components/block-list/block-list-item.native.js.map +1 -1
  33. package/build/components/block-list/block-selection-button.native.js +4 -4
  34. package/build/components/block-list/block-selection-button.native.js.map +1 -1
  35. package/build/components/block-list/block.js +15 -9
  36. package/build/components/block-list/block.js.map +1 -1
  37. package/build/components/block-list/block.native.js +6 -7
  38. package/build/components/block-list/block.native.js.map +1 -1
  39. package/build/components/block-list/grid-item.native.js +68 -0
  40. package/build/components/block-list/grid-item.native.js.map +1 -0
  41. package/build/components/block-list/index.js +19 -15
  42. package/build/components/block-list/index.js.map +1 -1
  43. package/build/components/block-list/index.native.js +13 -9
  44. package/build/components/block-list/index.native.js.map +1 -1
  45. package/build/components/block-list/use-block-props/index.js +6 -6
  46. package/build/components/block-list/use-block-props/index.js.map +1 -1
  47. package/build/components/block-list/use-block-props/use-block-custom-class-name.js +4 -6
  48. package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
  49. package/build/components/block-list/use-block-props/use-block-default-class-name.js +1 -1
  50. package/build/components/block-list/use-block-props/use-block-default-class-name.js.map +1 -1
  51. package/build/components/block-list/use-block-props/use-multi-selection.js +21 -6
  52. package/build/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
  53. package/build/components/block-list/use-in-between-inserter.js +9 -1
  54. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  55. package/build/components/block-list-appender/index.js +9 -1
  56. package/build/components/block-list-appender/index.js.map +1 -1
  57. package/build/components/block-mover/index.js +4 -4
  58. package/build/components/block-mover/index.js.map +1 -1
  59. package/build/components/block-mover/index.native.js +4 -4
  60. package/build/components/block-mover/index.native.js.map +1 -1
  61. package/build/components/block-navigation/dropdown.js +0 -1
  62. package/build/components/block-navigation/dropdown.js.map +1 -1
  63. package/build/components/block-patterns-list/index.js +1 -8
  64. package/build/components/block-patterns-list/index.js.map +1 -1
  65. package/build/components/block-preview/auto.js +42 -14
  66. package/build/components/block-preview/auto.js.map +1 -1
  67. package/build/components/block-settings/container.native.js +5 -2
  68. package/build/components/block-settings/container.native.js.map +1 -1
  69. package/build/components/block-settings-menu/block-settings-dropdown.js +26 -5
  70. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  71. package/build/components/block-settings-menu-controls/index.js +10 -3
  72. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  73. package/build/components/block-styles/index.js +5 -1
  74. package/build/components/block-styles/index.js.map +1 -1
  75. package/build/components/block-styles/preview.native.js +2 -2
  76. package/build/components/block-styles/preview.native.js.map +1 -1
  77. package/build/components/block-switcher/block-styles-menu.js +1 -1
  78. package/build/components/block-switcher/block-styles-menu.js.map +1 -1
  79. package/build/components/block-switcher/index.js +10 -3
  80. package/build/components/block-switcher/index.js.map +1 -1
  81. package/build/components/block-title/index.js +3 -2
  82. package/build/components/block-title/index.js.map +1 -1
  83. package/build/components/block-toolbar/index.js +3 -0
  84. package/build/components/block-toolbar/index.js.map +1 -1
  85. package/build/components/block-tools/block-contextual-toolbar.js +1 -1
  86. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  87. package/build/components/block-tools/block-popover.js +8 -7
  88. package/build/components/block-tools/block-popover.js.map +1 -1
  89. package/build/components/block-tools/block-selection-button.js +2 -4
  90. package/build/components/block-tools/block-selection-button.js.map +1 -1
  91. package/build/components/block-tools/index.js +4 -1
  92. package/build/components/block-tools/index.js.map +1 -1
  93. package/build/components/block-tools/insertion-point.js +96 -7
  94. package/build/components/block-tools/insertion-point.js.map +1 -1
  95. package/build/components/block-types-list/index.native.js +3 -2
  96. package/build/components/block-types-list/index.native.js.map +1 -1
  97. package/build/components/border-radius-control/index.js.map +1 -1
  98. package/build/components/border-radius-control/utils.js +17 -8
  99. package/build/components/border-radius-control/utils.js.map +1 -1
  100. package/build/components/colors/utils.js +11 -3
  101. package/build/components/colors/utils.js.map +1 -1
  102. package/build/components/colors-gradients/control.js +22 -57
  103. package/build/components/colors-gradients/control.js.map +1 -1
  104. package/build/components/colors-gradients/panel-color-gradient-settings.js +83 -7
  105. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  106. package/build/components/contrast-checker/index.js +18 -12
  107. package/build/components/contrast-checker/index.js.map +1 -1
  108. package/build/components/copy-handler/index.js +9 -3
  109. package/build/components/copy-handler/index.js.map +1 -1
  110. package/build/components/default-block-appender/index.js +2 -2
  111. package/build/components/default-block-appender/index.js.map +1 -1
  112. package/build/components/duotone-control/index.js +41 -39
  113. package/build/components/duotone-control/index.js.map +1 -1
  114. package/build/components/editor-styles/index.js +9 -3
  115. package/build/components/editor-styles/index.js.map +1 -1
  116. package/build/components/font-appearance-control/index.js +44 -12
  117. package/build/components/font-appearance-control/index.js.map +1 -1
  118. package/build/components/font-sizes/index.native.js +24 -0
  119. package/build/components/font-sizes/index.native.js.map +1 -1
  120. package/build/components/iframe/index.js +46 -63
  121. package/build/components/iframe/index.js.map +1 -1
  122. package/build/components/image-editor/aspect-ratio-dropdown.js +126 -0
  123. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
  124. package/build/components/image-editor/constants.js +16 -0
  125. package/build/components/image-editor/constants.js.map +1 -0
  126. package/build/components/image-editor/context.js +59 -0
  127. package/build/components/image-editor/context.js.map +1 -0
  128. package/build/components/image-editor/cropper.js +83 -0
  129. package/build/components/image-editor/cropper.js.map +1 -0
  130. package/build/components/image-editor/form-controls.js +36 -0
  131. package/build/components/image-editor/form-controls.js.map +1 -0
  132. package/build/components/image-editor/index.js +60 -0
  133. package/build/components/image-editor/index.js.map +1 -0
  134. package/build/components/image-editor/rotation-button.js +37 -0
  135. package/build/components/image-editor/rotation-button.js.map +1 -0
  136. package/build/components/image-editor/use-save-image.js +84 -0
  137. package/build/components/image-editor/use-save-image.js.map +1 -0
  138. package/build/components/image-editor/use-transform-image.js +135 -0
  139. package/build/components/image-editor/use-transform-image.js.map +1 -0
  140. package/build/components/image-editor/zoom-dropdown.js +55 -0
  141. package/build/components/image-editor/zoom-dropdown.js.map +1 -0
  142. package/build/components/image-size-control/use-dimension-handler.js +14 -3
  143. package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
  144. package/build/components/index.js +42 -37
  145. package/build/components/index.js.map +1 -1
  146. package/build/components/index.native.js +12 -7
  147. package/build/components/index.native.js.map +1 -1
  148. package/build/components/inner-blocks/button-block-appender.js +11 -1
  149. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  150. package/build/components/inner-blocks/index.js +28 -10
  151. package/build/components/inner-blocks/index.js.map +1 -1
  152. package/build/components/inner-blocks/index.native.js +42 -4
  153. package/build/components/inner-blocks/index.native.js.map +1 -1
  154. package/build/components/inner-blocks/use-nested-settings-update.js +24 -13
  155. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  156. package/build/components/inserter/block-patterns-explorer/explorer.js +62 -0
  157. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
  158. package/build/components/inserter/block-patterns-explorer/patterns-list.js +111 -0
  159. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
  160. package/build/components/inserter/block-patterns-explorer/sidebar.js +78 -0
  161. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
  162. package/build/components/inserter/block-patterns-tab.js +74 -35
  163. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  164. package/build/components/inserter/block-types-tab.native.js +3 -6
  165. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  166. package/build/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
  167. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  168. package/build/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  169. package/build/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  170. package/build/components/inserter/index.js +12 -4
  171. package/build/components/inserter/index.js.map +1 -1
  172. package/build/components/inserter/index.native.js +1 -7
  173. package/build/components/inserter/index.native.js.map +1 -1
  174. package/build/components/inserter/library.js +2 -0
  175. package/build/components/inserter/library.js.map +1 -1
  176. package/build/components/inserter/menu.js +2 -1
  177. package/build/components/inserter/menu.js.map +1 -1
  178. package/build/components/inserter/menu.native.js +18 -17
  179. package/build/components/inserter/menu.native.js.map +1 -1
  180. package/build/components/inserter/pattern-panel.js +19 -10
  181. package/build/components/inserter/pattern-panel.js.map +1 -1
  182. package/build/components/inserter/preview-panel.js +1 -1
  183. package/build/components/inserter/preview-panel.js.map +1 -1
  184. package/build/components/inserter/quick-inserter.js +2 -1
  185. package/build/components/inserter/quick-inserter.js.map +1 -1
  186. package/build/components/inserter/reusable-blocks-tab.native.js +5 -6
  187. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  188. package/build/components/inserter/search-results.native.js +9 -2
  189. package/build/components/inserter/search-results.native.js.map +1 -1
  190. package/build/components/inserter/tabs.native.js +1 -4
  191. package/build/components/inserter/tabs.native.js.map +1 -1
  192. package/build/components/inserter/utils.native.js +44 -0
  193. package/build/components/inserter/utils.native.js.map +1 -0
  194. package/build/components/inspector-controls/block-support-slot-container.js +28 -0
  195. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -0
  196. package/build/components/inspector-controls/block-support-tools-panel.js +78 -0
  197. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -0
  198. package/build/components/inspector-controls/fill.js +64 -0
  199. package/build/components/inspector-controls/fill.js.map +1 -0
  200. package/build/components/inspector-controls/{index.native.js → fill.native.js} +20 -19
  201. package/build/components/inspector-controls/fill.native.js.map +1 -0
  202. package/build/components/inspector-controls/groups.js +25 -0
  203. package/build/components/inspector-controls/groups.js.map +1 -0
  204. package/build/components/inspector-controls/index.js +22 -20
  205. package/build/components/inspector-controls/index.js.map +1 -1
  206. package/build/components/inspector-controls/slot.js +67 -0
  207. package/build/components/inspector-controls/slot.js.map +1 -0
  208. package/build/components/inspector-controls/slot.native.js +38 -0
  209. package/build/components/inspector-controls/slot.native.js.map +1 -0
  210. package/build/components/letter-spacing-control/index.js +9 -6
  211. package/build/components/letter-spacing-control/index.js.map +1 -1
  212. package/build/components/line-height-control/index.native.js +39 -0
  213. package/build/components/line-height-control/index.native.js.map +1 -0
  214. package/build/components/link-control/index.js +93 -34
  215. package/build/components/link-control/index.js.map +1 -1
  216. package/build/components/link-control/link-preview.js +45 -15
  217. package/build/components/link-control/link-preview.js.map +1 -1
  218. package/build/components/link-control/search-input.js +25 -7
  219. package/build/components/link-control/search-input.js.map +1 -1
  220. package/build/components/list-view/block-contents.js +1 -20
  221. package/build/components/list-view/block-contents.js.map +1 -1
  222. package/build/components/list-view/block.js +54 -69
  223. package/build/components/list-view/block.js.map +1 -1
  224. package/build/components/list-view/branch.js +102 -76
  225. package/build/components/list-view/branch.js.map +1 -1
  226. package/build/components/list-view/index.js +53 -23
  227. package/build/components/list-view/index.js.map +1 -1
  228. package/build/components/list-view/leaf.js +2 -2
  229. package/build/components/list-view/leaf.js.map +1 -1
  230. package/build/components/list-view/list-item.js +3 -2
  231. package/build/components/list-view/list-item.js.map +1 -1
  232. package/build/components/list-view/use-list-view-client-ids.js +13 -54
  233. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  234. package/build/components/media-placeholder/index.js +35 -21
  235. package/build/components/media-placeholder/index.js.map +1 -1
  236. package/build/components/media-placeholder/index.native.js +2 -1
  237. package/build/components/media-placeholder/index.native.js.map +1 -1
  238. package/build/components/media-replace-flow/index.js +5 -3
  239. package/build/components/media-replace-flow/index.js.map +1 -1
  240. package/build/components/navigable-toolbar/index.js +1 -4
  241. package/build/components/navigable-toolbar/index.js.map +1 -1
  242. package/build/components/observe-typing/index.js +1 -1
  243. package/build/components/observe-typing/index.js.map +1 -1
  244. package/build/components/plain-text/index.native.js +30 -1
  245. package/build/components/plain-text/index.native.js.map +1 -1
  246. package/build/components/rich-text/embed-handler-picker.native.js +66 -0
  247. package/build/components/rich-text/embed-handler-picker.native.js.map +1 -0
  248. package/build/components/rich-text/format-edit.js +28 -2
  249. package/build/components/rich-text/format-edit.js.map +1 -1
  250. package/build/components/rich-text/format-toolbar/index.js +32 -11
  251. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  252. package/build/components/rich-text/index.js +29 -7
  253. package/build/components/rich-text/index.js.map +1 -1
  254. package/build/components/rich-text/index.native.js +43 -5
  255. package/build/components/rich-text/index.native.js.map +1 -1
  256. package/build/components/rich-text/input-event.js +25 -24
  257. package/build/components/rich-text/input-event.js.map +1 -1
  258. package/build/components/rich-text/shortcut.js +23 -9
  259. package/build/components/rich-text/shortcut.js.map +1 -1
  260. package/build/components/rich-text/use-input-events.js +27 -0
  261. package/build/components/rich-text/use-input-events.js.map +1 -0
  262. package/build/components/rich-text/use-paste-handler.js +45 -10
  263. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  264. package/build/components/rich-text/use-shortcuts.js +27 -0
  265. package/build/components/rich-text/use-shortcuts.js.map +1 -0
  266. package/build/components/rich-text/utils.js +22 -0
  267. package/build/components/rich-text/utils.js.map +1 -1
  268. package/build/components/typewriter/index.js +1 -1
  269. package/build/components/typewriter/index.js.map +1 -1
  270. package/build/components/url-input/index.js +25 -11
  271. package/build/components/url-input/index.js.map +1 -1
  272. package/build/components/use-display-block-controls/index.js +5 -7
  273. package/build/components/use-display-block-controls/index.js.map +1 -1
  274. package/build/components/use-moving-animation/index.js +13 -10
  275. package/build/components/use-moving-animation/index.js.map +1 -1
  276. package/build/components/use-on-block-drop/index.js +2 -1
  277. package/build/components/use-on-block-drop/index.js.map +1 -1
  278. package/build/components/use-resize-canvas/index.js +2 -13
  279. package/build/components/use-resize-canvas/index.js.map +1 -1
  280. package/build/components/use-setting/index.js +49 -14
  281. package/build/components/use-setting/index.js.map +1 -1
  282. package/build/components/writing-flow/use-multi-selection.js +6 -0
  283. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  284. package/build/components/writing-flow/use-tab-nav.js +18 -3
  285. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  286. package/build/hooks/align.js +14 -14
  287. package/build/hooks/align.js.map +1 -1
  288. package/build/hooks/anchor.js +4 -2
  289. package/build/hooks/anchor.js.map +1 -1
  290. package/build/hooks/border-color.js +9 -5
  291. package/build/hooks/border-color.js.map +1 -1
  292. package/build/hooks/border.js +5 -5
  293. package/build/hooks/border.js.map +1 -1
  294. package/build/hooks/color-panel.js +5 -2
  295. package/build/hooks/color-panel.js.map +1 -1
  296. package/build/hooks/color.js +6 -4
  297. package/build/hooks/color.js.map +1 -1
  298. package/build/hooks/compat.js +23 -0
  299. package/build/hooks/compat.js.map +1 -0
  300. package/build/hooks/custom-class-name.js +3 -1
  301. package/build/hooks/custom-class-name.js.map +1 -1
  302. package/build/hooks/dimensions.js +63 -28
  303. package/build/hooks/dimensions.js.map +1 -1
  304. package/build/hooks/duotone.js +63 -18
  305. package/build/hooks/duotone.js.map +1 -1
  306. package/build/hooks/font-appearance.js +49 -6
  307. package/build/hooks/font-appearance.js.map +1 -1
  308. package/build/hooks/font-family.js +123 -32
  309. package/build/hooks/font-family.js.map +1 -1
  310. package/build/hooks/font-size.js +51 -9
  311. package/build/hooks/font-size.js.map +1 -1
  312. package/build/hooks/gap.js +163 -0
  313. package/build/hooks/gap.js.map +1 -0
  314. package/build/hooks/index.js +12 -0
  315. package/build/hooks/index.js.map +1 -1
  316. package/build/hooks/index.native.js +10 -0
  317. package/build/hooks/index.native.js.map +1 -1
  318. package/build/hooks/layout.js +47 -30
  319. package/build/hooks/layout.js.map +1 -1
  320. package/build/hooks/letter-spacing.js +45 -8
  321. package/build/hooks/letter-spacing.js.map +1 -1
  322. package/build/hooks/line-height.js +45 -8
  323. package/build/hooks/line-height.js.map +1 -1
  324. package/build/hooks/lock.js +43 -0
  325. package/build/hooks/lock.js.map +1 -0
  326. package/build/hooks/margin.js +6 -3
  327. package/build/hooks/margin.js.map +1 -1
  328. package/build/hooks/padding.js +6 -3
  329. package/build/hooks/padding.js.map +1 -1
  330. package/build/hooks/style.js +39 -11
  331. package/build/hooks/style.js.map +1 -1
  332. package/build/hooks/text-decoration.js +42 -6
  333. package/build/hooks/text-decoration.js.map +1 -1
  334. package/build/hooks/text-transform.js +42 -6
  335. package/build/hooks/text-transform.js.map +1 -1
  336. package/build/hooks/typography.js +109 -9
  337. package/build/hooks/typography.js.map +1 -1
  338. package/build/hooks/typography.native.js +60 -0
  339. package/build/hooks/typography.native.js.map +1 -0
  340. package/build/hooks/use-cached-truthy.js +29 -0
  341. package/build/hooks/use-cached-truthy.js.map +1 -0
  342. package/build/index.js +7 -0
  343. package/build/index.js.map +1 -1
  344. package/build/layouts/flex.js +215 -11
  345. package/build/layouts/flex.js.map +1 -1
  346. package/build/layouts/flow.js +99 -6
  347. package/build/layouts/flow.js.map +1 -1
  348. package/build/store/actions.js +331 -266
  349. package/build/store/actions.js.map +1 -1
  350. package/build/store/defaults.js +2 -0
  351. package/build/store/defaults.js.map +1 -1
  352. package/build/store/defaults.native.js +16 -1
  353. package/build/store/defaults.native.js.map +1 -1
  354. package/build/store/index.js +1 -3
  355. package/build/store/index.js.map +1 -1
  356. package/build/store/reducer.js +165 -114
  357. package/build/store/reducer.js.map +1 -1
  358. package/build/store/selectors.js +203 -115
  359. package/build/store/selectors.js.map +1 -1
  360. package/build/utils/index.js +10 -1
  361. package/build/utils/index.js.map +1 -1
  362. package/build/utils/parse-css-unit-to-px.js +295 -0
  363. package/build/utils/parse-css-unit-to-px.js.map +1 -0
  364. package/build/utils/transform-styles/transforms/wrap.js +16 -0
  365. package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
  366. package/build-module/components/autocomplete/index.js +2 -2
  367. package/build-module/components/autocomplete/index.js.map +1 -1
  368. package/build-module/components/block-actions/index.js +8 -4
  369. package/build-module/components/block-actions/index.js.map +1 -1
  370. package/build-module/components/block-alignment-control/ui.js +64 -17
  371. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  372. package/build-module/components/block-alignment-control/use-available-alignments.js +25 -3
  373. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  374. package/build-module/components/block-content-overlay/index.js +2 -4
  375. package/build-module/components/block-content-overlay/index.js.map +1 -1
  376. package/build-module/components/block-controls/fill.js +6 -5
  377. package/build-module/components/block-controls/fill.js.map +1 -1
  378. package/build-module/components/block-controls/groups.js +3 -1
  379. package/build-module/components/block-controls/groups.js.map +1 -1
  380. package/build-module/components/block-controls/hook.js +42 -0
  381. package/build-module/components/block-controls/hook.js.map +1 -0
  382. package/build-module/components/block-edit/context.js +4 -4
  383. package/build-module/components/block-edit/context.js.map +1 -1
  384. package/build-module/components/block-edit/edit.js +1 -1
  385. package/build-module/components/block-edit/edit.js.map +1 -1
  386. package/build-module/components/block-icon/index.js +5 -1
  387. package/build-module/components/block-icon/index.js.map +1 -1
  388. package/build-module/components/block-icon/index.native.js +14 -9
  389. package/build-module/components/block-icon/index.native.js.map +1 -1
  390. package/build-module/components/block-inspector/index.js +12 -6
  391. package/build-module/components/block-inspector/index.js.map +1 -1
  392. package/build-module/components/block-list/block-html.js +5 -0
  393. package/build-module/components/block-list/block-html.js.map +1 -1
  394. package/build-module/components/block-list/block-list-item.native.js +30 -12
  395. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  396. package/build-module/components/block-list/block-selection-button.native.js +3 -4
  397. package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
  398. package/build-module/components/block-list/block.js +16 -10
  399. package/build-module/components/block-list/block.js.map +1 -1
  400. package/build-module/components/block-list/block.native.js +6 -7
  401. package/build-module/components/block-list/block.native.js.map +1 -1
  402. package/build-module/components/block-list/grid-item.native.js +57 -0
  403. package/build-module/components/block-list/grid-item.native.js.map +1 -0
  404. package/build-module/components/block-list/index.js +17 -14
  405. package/build-module/components/block-list/index.js.map +1 -1
  406. package/build-module/components/block-list/index.native.js +13 -9
  407. package/build-module/components/block-list/index.native.js.map +1 -1
  408. package/build-module/components/block-list/use-block-props/index.js +7 -7
  409. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  410. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js +5 -7
  411. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
  412. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js +2 -2
  413. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js.map +1 -1
  414. package/build-module/components/block-list/use-block-props/use-multi-selection.js +21 -6
  415. package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
  416. package/build-module/components/block-list/use-in-between-inserter.js +9 -1
  417. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  418. package/build-module/components/block-list-appender/index.js +9 -1
  419. package/build-module/components/block-list-appender/index.js.map +1 -1
  420. package/build-module/components/block-mover/index.js +4 -4
  421. package/build-module/components/block-mover/index.js.map +1 -1
  422. package/build-module/components/block-mover/index.native.js +4 -4
  423. package/build-module/components/block-mover/index.native.js.map +1 -1
  424. package/build-module/components/block-navigation/dropdown.js +0 -1
  425. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  426. package/build-module/components/block-patterns-list/index.js +1 -6
  427. package/build-module/components/block-patterns-list/index.js.map +1 -1
  428. package/build-module/components/block-preview/auto.js +40 -16
  429. package/build-module/components/block-preview/auto.js.map +1 -1
  430. package/build-module/components/block-settings/container.native.js +6 -3
  431. package/build-module/components/block-settings/container.native.js.map +1 -1
  432. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -7
  433. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  434. package/build-module/components/block-settings-menu-controls/index.js +10 -3
  435. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  436. package/build-module/components/block-styles/index.js +5 -1
  437. package/build-module/components/block-styles/index.js.map +1 -1
  438. package/build-module/components/block-styles/preview.native.js +2 -2
  439. package/build-module/components/block-styles/preview.native.js.map +1 -1
  440. package/build-module/components/block-switcher/block-styles-menu.js +1 -1
  441. package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
  442. package/build-module/components/block-switcher/index.js +10 -3
  443. package/build-module/components/block-switcher/index.js.map +1 -1
  444. package/build-module/components/block-title/index.js +3 -2
  445. package/build-module/components/block-title/index.js.map +1 -1
  446. package/build-module/components/block-toolbar/index.js +3 -0
  447. package/build-module/components/block-toolbar/index.js.map +1 -1
  448. package/build-module/components/block-tools/block-contextual-toolbar.js +1 -1
  449. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  450. package/build-module/components/block-tools/block-popover.js +9 -8
  451. package/build-module/components/block-tools/block-popover.js.map +1 -1
  452. package/build-module/components/block-tools/block-selection-button.js +2 -4
  453. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  454. package/build-module/components/block-tools/index.js +4 -1
  455. package/build-module/components/block-tools/index.js.map +1 -1
  456. package/build-module/components/block-tools/insertion-point.js +96 -8
  457. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  458. package/build-module/components/block-types-list/index.native.js +3 -2
  459. package/build-module/components/block-types-list/index.native.js.map +1 -1
  460. package/build-module/components/border-radius-control/index.js.map +1 -1
  461. package/build-module/components/border-radius-control/utils.js +16 -9
  462. package/build-module/components/border-radius-control/utils.js.map +1 -1
  463. package/build-module/components/colors/utils.js +9 -3
  464. package/build-module/components/colors/utils.js.map +1 -1
  465. package/build-module/components/colors-gradients/control.js +26 -63
  466. package/build-module/components/colors-gradients/control.js.map +1 -1
  467. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +84 -7
  468. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  469. package/build-module/components/contrast-checker/index.js +13 -10
  470. package/build-module/components/contrast-checker/index.js.map +1 -1
  471. package/build-module/components/copy-handler/index.js +9 -3
  472. package/build-module/components/copy-handler/index.js.map +1 -1
  473. package/build-module/components/default-block-appender/index.js +2 -2
  474. package/build-module/components/default-block-appender/index.js.map +1 -1
  475. package/build-module/components/duotone-control/index.js +43 -39
  476. package/build-module/components/duotone-control/index.js.map +1 -1
  477. package/build-module/components/editor-styles/index.js +7 -3
  478. package/build-module/components/editor-styles/index.js.map +1 -1
  479. package/build-module/components/font-appearance-control/index.js +40 -12
  480. package/build-module/components/font-appearance-control/index.js.map +1 -1
  481. package/build-module/components/font-sizes/index.native.js +3 -1
  482. package/build-module/components/font-sizes/index.native.js.map +1 -1
  483. package/build-module/components/iframe/index.js +47 -65
  484. package/build-module/components/iframe/index.js.map +1 -1
  485. package/build-module/components/image-editor/aspect-ratio-dropdown.js +115 -0
  486. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
  487. package/build-module/components/image-editor/constants.js +7 -0
  488. package/build-module/components/image-editor/constants.js.map +1 -0
  489. package/build-module/components/image-editor/context.js +44 -0
  490. package/build-module/components/image-editor/context.js.map +1 -0
  491. package/build-module/components/image-editor/cropper.js +69 -0
  492. package/build-module/components/image-editor/cropper.js.map +1 -0
  493. package/build-module/components/image-editor/form-controls.js +26 -0
  494. package/build-module/components/image-editor/form-controls.js.map +1 -0
  495. package/build-module/components/image-editor/index.js +37 -0
  496. package/build-module/components/image-editor/index.js.map +1 -0
  497. package/build-module/components/image-editor/rotation-button.js +26 -0
  498. package/build-module/components/image-editor/rotation-button.js.map +1 -0
  499. package/build-module/components/image-editor/use-save-image.js +70 -0
  500. package/build-module/components/image-editor/use-save-image.js.map +1 -0
  501. package/build-module/components/image-editor/use-transform-image.js +127 -0
  502. package/build-module/components/image-editor/use-transform-image.js.map +1 -0
  503. package/build-module/components/image-editor/zoom-dropdown.js +43 -0
  504. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -0
  505. package/build-module/components/image-size-control/use-dimension-handler.js +13 -2
  506. package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
  507. package/build-module/components/index.js +5 -6
  508. package/build-module/components/index.js.map +1 -1
  509. package/build-module/components/index.native.js +2 -3
  510. package/build-module/components/index.native.js.map +1 -1
  511. package/build-module/components/inner-blocks/button-block-appender.js +10 -1
  512. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  513. package/build-module/components/inner-blocks/index.js +29 -11
  514. package/build-module/components/inner-blocks/index.js.map +1 -1
  515. package/build-module/components/inner-blocks/index.native.js +41 -5
  516. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  517. package/build-module/components/inner-blocks/use-nested-settings-update.js +24 -13
  518. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  519. package/build-module/components/inserter/block-patterns-explorer/explorer.js +50 -0
  520. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
  521. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +92 -0
  522. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
  523. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +69 -0
  524. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
  525. package/build-module/components/inserter/block-patterns-tab.js +75 -36
  526. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  527. package/build-module/components/inserter/block-types-tab.native.js +2 -5
  528. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  529. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
  530. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  531. package/build-module/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  532. package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  533. package/build-module/components/inserter/index.js +12 -4
  534. package/build-module/components/inserter/index.js.map +1 -1
  535. package/build-module/components/inserter/index.native.js +1 -7
  536. package/build-module/components/inserter/index.native.js.map +1 -1
  537. package/build-module/components/inserter/library.js +2 -0
  538. package/build-module/components/inserter/library.js.map +1 -1
  539. package/build-module/components/inserter/menu.js +2 -1
  540. package/build-module/components/inserter/menu.js.map +1 -1
  541. package/build-module/components/inserter/menu.native.js +17 -17
  542. package/build-module/components/inserter/menu.native.js.map +1 -1
  543. package/build-module/components/inserter/pattern-panel.js +21 -13
  544. package/build-module/components/inserter/pattern-panel.js.map +1 -1
  545. package/build-module/components/inserter/preview-panel.js +1 -1
  546. package/build-module/components/inserter/preview-panel.js.map +1 -1
  547. package/build-module/components/inserter/quick-inserter.js +2 -1
  548. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  549. package/build-module/components/inserter/reusable-blocks-tab.native.js +4 -5
  550. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  551. package/build-module/components/inserter/search-results.native.js +8 -2
  552. package/build-module/components/inserter/search-results.native.js.map +1 -1
  553. package/build-module/components/inserter/tabs.native.js +1 -4
  554. package/build-module/components/inserter/tabs.native.js.map +1 -1
  555. package/build-module/components/inserter/utils.native.js +35 -0
  556. package/build-module/components/inserter/utils.native.js.map +1 -0
  557. package/build-module/components/inspector-controls/block-support-slot-container.js +18 -0
  558. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -0
  559. package/build-module/components/inspector-controls/block-support-tools-panel.js +67 -0
  560. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -0
  561. package/build-module/components/inspector-controls/fill.js +50 -0
  562. package/build-module/components/inspector-controls/fill.js.map +1 -0
  563. package/build-module/components/inspector-controls/{index.native.js → fill.native.js} +16 -18
  564. package/build-module/components/inspector-controls/fill.native.js.map +1 -0
  565. package/build-module/components/inspector-controls/groups.js +16 -0
  566. package/build-module/components/inspector-controls/groups.js.map +1 -0
  567. package/build-module/components/inspector-controls/index.js +16 -17
  568. package/build-module/components/inspector-controls/index.js.map +1 -1
  569. package/build-module/components/inspector-controls/slot.js +52 -0
  570. package/build-module/components/inspector-controls/slot.js.map +1 -0
  571. package/build-module/components/inspector-controls/slot.native.js +27 -0
  572. package/build-module/components/inspector-controls/slot.native.js.map +1 -0
  573. package/build-module/components/letter-spacing-control/index.js +9 -6
  574. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  575. package/build-module/components/line-height-control/index.native.js +29 -0
  576. package/build-module/components/line-height-control/index.native.js.map +1 -0
  577. package/build-module/components/link-control/index.js +93 -35
  578. package/build-module/components/link-control/index.js.map +1 -1
  579. package/build-module/components/link-control/link-preview.js +46 -17
  580. package/build-module/components/link-control/link-preview.js.map +1 -1
  581. package/build-module/components/link-control/search-input.js +24 -7
  582. package/build-module/components/link-control/search-input.js.map +1 -1
  583. package/build-module/components/list-view/block-contents.js +1 -18
  584. package/build-module/components/list-view/block-contents.js.map +1 -1
  585. package/build-module/components/list-view/block.js +56 -71
  586. package/build-module/components/list-view/block.js.map +1 -1
  587. package/build-module/components/list-view/branch.js +102 -78
  588. package/build-module/components/list-view/branch.js.map +1 -1
  589. package/build-module/components/list-view/index.js +55 -27
  590. package/build-module/components/list-view/index.js.map +1 -1
  591. package/build-module/components/list-view/leaf.js +2 -2
  592. package/build-module/components/list-view/leaf.js.map +1 -1
  593. package/build-module/components/list-view/list-item.js +3 -2
  594. package/build-module/components/list-view/list-item.js.map +1 -1
  595. package/build-module/components/list-view/use-list-view-client-ids.js +13 -54
  596. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  597. package/build-module/components/media-placeholder/index.js +35 -21
  598. package/build-module/components/media-placeholder/index.js.map +1 -1
  599. package/build-module/components/media-placeholder/index.native.js +2 -1
  600. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  601. package/build-module/components/media-replace-flow/index.js +5 -3
  602. package/build-module/components/media-replace-flow/index.js.map +1 -1
  603. package/build-module/components/navigable-toolbar/index.js +1 -4
  604. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  605. package/build-module/components/observe-typing/index.js +1 -1
  606. package/build-module/components/observe-typing/index.js.map +1 -1
  607. package/build-module/components/plain-text/index.native.js +29 -2
  608. package/build-module/components/plain-text/index.native.js.map +1 -1
  609. package/build-module/components/rich-text/embed-handler-picker.native.js +54 -0
  610. package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -0
  611. package/build-module/components/rich-text/format-edit.js +28 -3
  612. package/build-module/components/rich-text/format-edit.js.map +1 -1
  613. package/build-module/components/rich-text/format-toolbar/index.js +29 -11
  614. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  615. package/build-module/components/rich-text/index.js +22 -6
  616. package/build-module/components/rich-text/index.js.map +1 -1
  617. package/build-module/components/rich-text/index.native.js +43 -6
  618. package/build-module/components/rich-text/index.native.js.map +1 -1
  619. package/build-module/components/rich-text/input-event.js +24 -22
  620. package/build-module/components/rich-text/input-event.js.map +1 -1
  621. package/build-module/components/rich-text/shortcut.js +22 -9
  622. package/build-module/components/rich-text/shortcut.js.map +1 -1
  623. package/build-module/components/rich-text/use-input-events.js +19 -0
  624. package/build-module/components/rich-text/use-input-events.js.map +1 -0
  625. package/build-module/components/rich-text/use-paste-handler.js +44 -10
  626. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  627. package/build-module/components/rich-text/use-shortcuts.js +19 -0
  628. package/build-module/components/rich-text/use-shortcuts.js.map +1 -0
  629. package/build-module/components/rich-text/utils.js +20 -0
  630. package/build-module/components/rich-text/utils.js.map +1 -1
  631. package/build-module/components/typewriter/index.js +1 -1
  632. package/build-module/components/typewriter/index.js.map +1 -1
  633. package/build-module/components/url-input/index.js +25 -11
  634. package/build-module/components/url-input/index.js.map +1 -1
  635. package/build-module/components/use-display-block-controls/index.js +5 -7
  636. package/build-module/components/use-display-block-controls/index.js.map +1 -1
  637. package/build-module/components/use-moving-animation/index.js +13 -10
  638. package/build-module/components/use-moving-animation/index.js.map +1 -1
  639. package/build-module/components/use-on-block-drop/index.js +3 -2
  640. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  641. package/build-module/components/use-resize-canvas/index.js +2 -10
  642. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  643. package/build-module/components/use-setting/index.js +48 -14
  644. package/build-module/components/use-setting/index.js.map +1 -1
  645. package/build-module/components/writing-flow/use-multi-selection.js +6 -0
  646. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  647. package/build-module/components/writing-flow/use-tab-nav.js +18 -3
  648. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  649. package/build-module/hooks/align.js +15 -15
  650. package/build-module/hooks/align.js.map +1 -1
  651. package/build-module/hooks/anchor.js +5 -3
  652. package/build-module/hooks/anchor.js.map +1 -1
  653. package/build-module/hooks/border-color.js +10 -5
  654. package/build-module/hooks/border-color.js.map +1 -1
  655. package/build-module/hooks/border.js +5 -5
  656. package/build-module/hooks/border.js.map +1 -1
  657. package/build-module/hooks/color-panel.js +6 -3
  658. package/build-module/hooks/color-panel.js.map +1 -1
  659. package/build-module/hooks/color.js +6 -4
  660. package/build-module/hooks/color.js.map +1 -1
  661. package/build-module/hooks/compat.js +20 -0
  662. package/build-module/hooks/compat.js.map +1 -0
  663. package/build-module/hooks/custom-class-name.js +4 -2
  664. package/build-module/hooks/custom-class-name.js.map +1 -1
  665. package/build-module/hooks/dimensions.js +57 -26
  666. package/build-module/hooks/dimensions.js.map +1 -1
  667. package/build-module/hooks/duotone.js +62 -18
  668. package/build-module/hooks/duotone.js.map +1 -1
  669. package/build-module/hooks/font-appearance.js +45 -6
  670. package/build-module/hooks/font-appearance.js.map +1 -1
  671. package/build-module/hooks/font-family.js +117 -33
  672. package/build-module/hooks/font-family.js.map +1 -1
  673. package/build-module/hooks/font-size.js +47 -9
  674. package/build-module/hooks/font-size.js.map +1 -1
  675. package/build-module/hooks/gap.js +140 -0
  676. package/build-module/hooks/gap.js.map +1 -0
  677. package/build-module/hooks/index.js +3 -0
  678. package/build-module/hooks/index.js.map +1 -1
  679. package/build-module/hooks/index.native.js +2 -0
  680. package/build-module/hooks/index.native.js.map +1 -1
  681. package/build-module/hooks/layout.js +47 -30
  682. package/build-module/hooks/layout.js.map +1 -1
  683. package/build-module/hooks/letter-spacing.js +41 -8
  684. package/build-module/hooks/letter-spacing.js.map +1 -1
  685. package/build-module/hooks/line-height.js +41 -8
  686. package/build-module/hooks/line-height.js.map +1 -1
  687. package/build-module/hooks/lock.js +33 -0
  688. package/build-module/hooks/lock.js.map +1 -0
  689. package/build-module/hooks/margin.js +7 -4
  690. package/build-module/hooks/margin.js.map +1 -1
  691. package/build-module/hooks/padding.js +7 -4
  692. package/build-module/hooks/padding.js.map +1 -1
  693. package/build-module/hooks/style.js +39 -11
  694. package/build-module/hooks/style.js.map +1 -1
  695. package/build-module/hooks/text-decoration.js +38 -6
  696. package/build-module/hooks/text-decoration.js.map +1 -1
  697. package/build-module/hooks/text-transform.js +38 -6
  698. package/build-module/hooks/text-transform.js.map +1 -1
  699. package/build-module/hooks/typography.js +118 -19
  700. package/build-module/hooks/typography.js.map +1 -1
  701. package/build-module/hooks/typography.native.js +41 -0
  702. package/build-module/hooks/typography.native.js.map +1 -0
  703. package/build-module/hooks/use-cached-truthy.js +21 -0
  704. package/build-module/hooks/use-cached-truthy.js.map +1 -0
  705. package/build-module/index.js +1 -1
  706. package/build-module/index.js.map +1 -1
  707. package/build-module/layouts/flex.js +210 -12
  708. package/build-module/layouts/flex.js.map +1 -1
  709. package/build-module/layouts/flow.js +99 -7
  710. package/build-module/layouts/flow.js.map +1 -1
  711. package/build-module/store/actions.js +294 -242
  712. package/build-module/store/actions.js.map +1 -1
  713. package/build-module/store/defaults.js +2 -0
  714. package/build-module/store/defaults.js.map +1 -1
  715. package/build-module/store/defaults.native.js +15 -1
  716. package/build-module/store/defaults.native.js.map +1 -1
  717. package/build-module/store/index.js +1 -2
  718. package/build-module/store/index.js.map +1 -1
  719. package/build-module/store/reducer.js +167 -115
  720. package/build-module/store/reducer.js.map +1 -1
  721. package/build-module/store/selectors.js +189 -104
  722. package/build-module/store/selectors.js.map +1 -1
  723. package/build-module/utils/index.js +1 -0
  724. package/build-module/utils/index.js.map +1 -1
  725. package/build-module/utils/parse-css-unit-to-px.js +285 -0
  726. package/build-module/utils/parse-css-unit-to-px.js.map +1 -0
  727. package/build-module/utils/transform-styles/transforms/wrap.js +16 -0
  728. package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
  729. package/build-style/default-editor-styles-rtl.css +114 -0
  730. package/build-style/default-editor-styles.css +114 -0
  731. package/build-style/style-rtl.css +292 -181
  732. package/build-style/style.css +292 -181
  733. package/build-types/components/block-context/index.d.ts +1 -1
  734. package/build-types/components/block-context/index.d.ts.map +1 -1
  735. package/package.json +28 -27
  736. package/src/components/autocomplete/index.js +5 -2
  737. package/src/components/block-actions/index.js +9 -5
  738. package/src/components/block-alignment-control/style.scss +5 -0
  739. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +15 -1
  740. package/src/components/block-alignment-control/test/index.native.js +37 -0
  741. package/src/components/block-alignment-control/ui.js +98 -27
  742. package/src/components/block-alignment-control/use-available-alignments.js +31 -10
  743. package/src/components/block-content-overlay/index.js +3 -6
  744. package/src/components/block-content-overlay/style.scss +9 -21
  745. package/src/components/block-controls/fill.js +7 -4
  746. package/src/components/block-controls/groups.js +2 -0
  747. package/src/components/block-controls/hook.js +44 -0
  748. package/src/components/block-draggable/style.scss +19 -4
  749. package/src/components/block-edit/context.js +4 -3
  750. package/src/components/block-edit/edit.js +1 -4
  751. package/src/components/block-icon/index.js +4 -1
  752. package/src/components/block-icon/index.native.js +11 -12
  753. package/src/components/block-inspector/index.js +19 -9
  754. package/src/components/block-list/block-html.js +5 -0
  755. package/src/components/block-list/block-list-item.native.js +34 -11
  756. package/src/components/block-list/block-list-item.native.scss +4 -0
  757. package/src/components/block-list/block-selection-button.native.js +8 -5
  758. package/src/components/block-list/block.js +13 -9
  759. package/src/components/block-list/block.native.js +7 -5
  760. package/src/components/block-list/grid-item.native.js +58 -0
  761. package/src/components/block-list/index.js +33 -27
  762. package/src/components/block-list/index.native.js +10 -4
  763. package/src/components/block-list/style.native.scss +0 -1
  764. package/src/components/block-list/style.scss +15 -0
  765. package/src/components/block-list/use-block-props/index.js +4 -7
  766. package/src/components/block-list/use-block-props/use-block-custom-class-name.js +5 -7
  767. package/src/components/block-list/use-block-props/use-block-default-class-name.js +2 -8
  768. package/src/components/block-list/use-block-props/use-multi-selection.js +30 -4
  769. package/src/components/block-list/use-in-between-inserter.js +9 -0
  770. package/src/components/block-list-appender/index.js +8 -0
  771. package/src/components/block-mover/index.js +4 -4
  772. package/src/components/block-mover/index.native.js +4 -4
  773. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -6
  774. package/src/components/block-mover/test/index.native.js +26 -28
  775. package/src/components/block-navigation/dropdown.js +0 -1
  776. package/src/components/block-patterns-list/index.js +1 -8
  777. package/src/components/block-patterns-list/style.scss +22 -12
  778. package/src/components/block-preview/README.md +1 -1
  779. package/src/components/block-preview/auto.js +36 -18
  780. package/src/components/block-preview/style.scss +0 -20
  781. package/src/components/block-settings/container.native.js +7 -0
  782. package/src/components/block-settings-menu/block-settings-dropdown.js +26 -13
  783. package/src/components/block-settings-menu-controls/index.js +9 -6
  784. package/src/components/block-styles/index.js +6 -1
  785. package/src/components/block-styles/preview.native.js +2 -2
  786. package/src/components/block-switcher/block-styles-menu.js +1 -1
  787. package/src/components/block-switcher/index.js +7 -3
  788. package/src/components/block-switcher/test/__snapshots__/index.js.snap +1 -1
  789. package/src/components/block-switcher/test/index.js +3 -0
  790. package/src/components/block-title/index.js +5 -2
  791. package/src/components/block-toolbar/index.js +4 -0
  792. package/src/components/block-tools/block-contextual-toolbar.js +7 -5
  793. package/src/components/block-tools/block-popover.js +8 -8
  794. package/src/components/block-tools/block-selection-button.js +2 -4
  795. package/src/components/block-tools/index.js +5 -2
  796. package/src/components/block-tools/insertion-point.js +97 -9
  797. package/src/components/block-tools/style.scss +4 -35
  798. package/src/components/block-types-list/index.native.js +8 -2
  799. package/src/components/block-types-list/style.scss +0 -3
  800. package/src/components/block-variation-picker/README.md +47 -14
  801. package/src/components/block-variation-picker/style.native.scss +4 -0
  802. package/src/components/border-radius-control/index.js +1 -0
  803. package/src/components/border-radius-control/test/utils.js +216 -0
  804. package/src/components/border-radius-control/utils.js +18 -10
  805. package/src/components/color-palette/test/__snapshots__/control.js.snap +128 -71
  806. package/src/components/colors/test/utils.js +41 -0
  807. package/src/components/colors/utils.js +9 -5
  808. package/src/components/colors-gradients/control.js +70 -110
  809. package/src/components/colors-gradients/panel-color-gradient-settings.js +79 -7
  810. package/src/components/colors-gradients/style.scss +10 -18
  811. package/src/components/colors-gradients/test/control.js +41 -66
  812. package/src/components/contrast-checker/index.js +14 -10
  813. package/src/components/copy-handler/index.js +6 -1
  814. package/src/components/default-block-appender/index.js +2 -2
  815. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +3 -3
  816. package/src/components/duotone-control/index.js +49 -41
  817. package/src/components/duotone-control/style.scss +27 -12
  818. package/src/components/editor-styles/index.js +8 -4
  819. package/src/components/font-appearance-control/index.js +62 -24
  820. package/src/components/font-appearance-control/style.scss +1 -1
  821. package/src/components/font-sizes/index.native.js +7 -1
  822. package/src/components/iframe/index.js +64 -75
  823. package/src/components/image-editor/aspect-ratio-dropdown.js +129 -0
  824. package/src/components/image-editor/constants.js +6 -0
  825. package/src/components/image-editor/context.js +56 -0
  826. package/src/components/image-editor/cropper.js +74 -0
  827. package/src/components/image-editor/form-controls.js +22 -0
  828. package/src/components/image-editor/index.js +52 -0
  829. package/src/components/image-editor/rotation-button.js +24 -0
  830. package/src/components/image-editor/use-save-image.js +97 -0
  831. package/src/components/image-editor/use-transform-image.js +162 -0
  832. package/src/components/image-editor/zoom-dropdown.js +40 -0
  833. package/src/components/image-size-control/use-dimension-handler.js +18 -1
  834. package/src/components/index.js +10 -8
  835. package/src/components/index.native.js +5 -3
  836. package/src/components/inner-blocks/button-block-appender.js +9 -0
  837. package/src/components/inner-blocks/index.js +43 -14
  838. package/src/components/inner-blocks/index.native.js +48 -4
  839. package/src/components/inner-blocks/use-nested-settings-update.js +26 -11
  840. package/src/components/inserter/block-patterns-explorer/explorer.js +50 -0
  841. package/src/components/inserter/block-patterns-explorer/patterns-list.js +122 -0
  842. package/src/components/inserter/block-patterns-explorer/sidebar.js +73 -0
  843. package/src/components/inserter/block-patterns-tab.js +107 -73
  844. package/src/components/inserter/block-types-tab.native.js +3 -6
  845. package/src/components/inserter/hooks/use-block-type-impressions.native.js +14 -21
  846. package/src/components/inserter/hooks/use-clipboard-block.native.js +3 -2
  847. package/src/components/inserter/index.js +15 -3
  848. package/src/components/inserter/index.native.js +2 -19
  849. package/src/components/inserter/library.js +2 -0
  850. package/src/components/inserter/menu.js +4 -1
  851. package/src/components/inserter/menu.native.js +18 -15
  852. package/src/components/inserter/pattern-panel.js +33 -16
  853. package/src/components/inserter/preview-panel.js +1 -1
  854. package/src/components/inserter/quick-inserter.js +1 -1
  855. package/src/components/inserter/reusable-blocks-tab.native.js +4 -6
  856. package/src/components/inserter/search-results.native.js +8 -1
  857. package/src/components/inserter/style.native.scss +8 -5
  858. package/src/components/inserter/style.scss +80 -16
  859. package/src/components/inserter/tabs.native.js +1 -7
  860. package/src/components/inserter/test/block-types-tab.native.js +3 -2
  861. package/src/components/inserter/test/fixtures/index.native.js +12 -0
  862. package/src/components/inserter/utils.native.js +35 -0
  863. package/src/components/inserter-list-item/style.scss +4 -2
  864. package/src/components/inspector-controls/README.md +43 -198
  865. package/src/components/inspector-controls/block-support-slot-container.js +10 -0
  866. package/src/components/inspector-controls/block-support-tools-panel.js +60 -0
  867. package/src/components/inspector-controls/fill.js +53 -0
  868. package/src/components/inspector-controls/{index.native.js → fill.native.js} +14 -14
  869. package/src/components/inspector-controls/groups.js +22 -0
  870. package/src/components/inspector-controls/index.js +16 -18
  871. package/src/components/inspector-controls/slot.js +45 -0
  872. package/src/components/inspector-controls/slot.native.js +22 -0
  873. package/src/components/letter-spacing-control/index.js +12 -6
  874. package/src/components/line-height-control/index.native.js +25 -0
  875. package/src/components/link-control/README.md +47 -14
  876. package/src/components/link-control/index.js +102 -31
  877. package/src/components/link-control/link-preview.js +53 -20
  878. package/src/components/link-control/search-input.js +21 -7
  879. package/src/components/link-control/style.scss +66 -19
  880. package/src/components/link-control/test/index.js +311 -4
  881. package/src/components/list-view/block-contents.js +17 -38
  882. package/src/components/list-view/block.js +73 -84
  883. package/src/components/list-view/branch.js +123 -94
  884. package/src/components/list-view/index.js +95 -37
  885. package/src/components/list-view/leaf.js +2 -2
  886. package/src/components/list-view/list-item.js +5 -4
  887. package/src/components/list-view/style.scss +70 -33
  888. package/src/components/list-view/use-list-view-client-ids.js +9 -68
  889. package/src/components/media-placeholder/README.md +9 -0
  890. package/src/components/media-placeholder/index.js +31 -20
  891. package/src/components/media-placeholder/index.native.js +2 -1
  892. package/src/components/media-placeholder/style.scss +2 -0
  893. package/src/components/media-replace-flow/README.md +7 -0
  894. package/src/components/media-replace-flow/index.js +4 -1
  895. package/src/components/media-replace-flow/style.scss +11 -12
  896. package/src/components/media-upload/README.md +1 -1
  897. package/src/components/navigable-toolbar/index.js +1 -4
  898. package/src/components/observe-typing/index.js +3 -2
  899. package/src/components/plain-text/index.native.js +26 -4
  900. package/src/components/rich-text/embed-handler-picker.native.js +68 -0
  901. package/src/components/rich-text/format-edit.js +36 -2
  902. package/src/components/rich-text/format-toolbar/index.js +25 -6
  903. package/src/components/rich-text/index.js +38 -12
  904. package/src/components/rich-text/index.native.js +37 -4
  905. package/src/components/rich-text/input-event.js +21 -20
  906. package/src/components/rich-text/shortcut.js +24 -9
  907. package/src/components/rich-text/style.scss +7 -5
  908. package/src/components/rich-text/use-input-events.js +19 -0
  909. package/src/components/rich-text/use-paste-handler.js +47 -12
  910. package/src/components/rich-text/use-shortcuts.js +19 -0
  911. package/src/components/rich-text/utils.js +16 -0
  912. package/src/components/skip-to-selected-block/README.md +39 -0
  913. package/src/components/tool-selector/style.scss +5 -5
  914. package/src/components/typewriter/index.js +3 -2
  915. package/src/components/url-input/index.js +26 -10
  916. package/src/components/use-display-block-controls/index.js +7 -10
  917. package/src/components/use-moving-animation/index.js +9 -8
  918. package/src/components/use-on-block-drop/index.js +5 -1
  919. package/src/components/use-resize-canvas/index.js +2 -17
  920. package/src/components/use-setting/index.js +48 -16
  921. package/src/components/writing-flow/use-multi-selection.js +6 -0
  922. package/src/components/writing-flow/use-tab-nav.js +21 -11
  923. package/src/default-editor-styles.scss +24 -0
  924. package/src/hooks/align.js +28 -20
  925. package/src/hooks/anchor.js +5 -5
  926. package/src/hooks/border-color.js +12 -1
  927. package/src/hooks/border.js +8 -11
  928. package/src/hooks/color-panel.js +4 -1
  929. package/src/hooks/color.js +11 -4
  930. package/src/hooks/compat.js +23 -0
  931. package/src/hooks/custom-class-name.js +3 -3
  932. package/src/hooks/dimensions.js +94 -50
  933. package/src/hooks/duotone.js +70 -21
  934. package/src/hooks/font-appearance.js +38 -7
  935. package/src/hooks/font-family.js +129 -33
  936. package/src/hooks/font-size.js +42 -6
  937. package/src/hooks/gap.js +146 -0
  938. package/src/hooks/index.js +3 -0
  939. package/src/hooks/index.native.js +2 -0
  940. package/src/hooks/layout.js +82 -56
  941. package/src/hooks/layout.scss +8 -0
  942. package/src/hooks/letter-spacing.js +37 -8
  943. package/src/hooks/line-height.js +37 -9
  944. package/src/hooks/lock.js +34 -0
  945. package/src/hooks/margin.js +13 -3
  946. package/src/hooks/padding.js +13 -3
  947. package/src/hooks/style.js +57 -18
  948. package/src/hooks/test/style.js +4 -0
  949. package/src/hooks/text-decoration.js +34 -6
  950. package/src/hooks/text-transform.js +34 -6
  951. package/src/hooks/typography.js +167 -21
  952. package/src/hooks/typography.native.js +64 -0
  953. package/src/hooks/typography.scss +16 -0
  954. package/src/hooks/use-cached-truthy.js +20 -0
  955. package/src/index.js +1 -0
  956. package/src/layouts/flex.js +237 -14
  957. package/src/layouts/flow.js +81 -14
  958. package/src/store/actions.js +248 -378
  959. package/src/store/defaults.js +2 -0
  960. package/src/store/defaults.native.js +15 -0
  961. package/src/store/index.js +1 -2
  962. package/src/store/reducer.js +248 -145
  963. package/src/store/selectors.js +212 -158
  964. package/src/store/test/actions.js +407 -705
  965. package/src/store/test/reducer.js +184 -146
  966. package/src/store/test/selectors.js +197 -177
  967. package/src/style.scss +2 -15
  968. package/src/utils/index.js +1 -0
  969. package/src/utils/parse-css-unit-to-px.js +272 -0
  970. package/src/utils/test/parse-css-unit-to-px.js +166 -0
  971. package/src/utils/transform-styles/transforms/test/wrap.js +1 -1
  972. package/src/utils/transform-styles/transforms/wrap.js +16 -0
  973. package/tsconfig.tsbuildinfo +1 -466
  974. package/build/components/block-list/head.js +0 -27
  975. package/build/components/block-list/head.js.map +0 -1
  976. package/build/components/duotone-control/duotone-picker-popover.js +0 -44
  977. package/build/components/duotone-control/duotone-picker-popover.js.map +0 -1
  978. package/build/components/inspector-advanced-controls/index.js +0 -46
  979. package/build/components/inspector-advanced-controls/index.js.map +0 -1
  980. package/build/components/inspector-controls/index.native.js.map +0 -1
  981. package/build/components/list-view/block-slot.js +0 -121
  982. package/build/components/list-view/block-slot.js.map +0 -1
  983. package/build/components/list-view/editor.js +0 -35
  984. package/build/components/list-view/editor.js.map +0 -1
  985. package/build/components/text-decoration-and-transform/index.js +0 -39
  986. package/build/components/text-decoration-and-transform/index.js.map +0 -1
  987. package/build/components/use-simulated-media-query/index.js +0 -137
  988. package/build/components/use-simulated-media-query/index.js.map +0 -1
  989. package/build/store/controls.js +0 -44
  990. package/build/store/controls.js.map +0 -1
  991. package/build-module/components/block-list/head.js +0 -19
  992. package/build-module/components/block-list/head.js.map +0 -1
  993. package/build-module/components/duotone-control/duotone-picker-popover.js +0 -35
  994. package/build-module/components/duotone-control/duotone-picker-popover.js.map +0 -1
  995. package/build-module/components/inspector-advanced-controls/index.js +0 -36
  996. package/build-module/components/inspector-advanced-controls/index.js.map +0 -1
  997. package/build-module/components/inspector-controls/index.native.js.map +0 -1
  998. package/build-module/components/list-view/block-slot.js +0 -96
  999. package/build-module/components/list-view/block-slot.js.map +0 -1
  1000. package/build-module/components/list-view/editor.js +0 -25
  1001. package/build-module/components/list-view/editor.js.map +0 -1
  1002. package/build-module/components/text-decoration-and-transform/index.js +0 -30
  1003. package/build-module/components/text-decoration-and-transform/index.js.map +0 -1
  1004. package/build-module/components/use-simulated-media-query/index.js +0 -126
  1005. package/build-module/components/use-simulated-media-query/index.js.map +0 -1
  1006. package/build-module/store/controls.js +0 -32
  1007. package/build-module/store/controls.js.map +0 -1
  1008. package/src/components/block-list/head.js +0 -18
  1009. package/src/components/duotone-control/duotone-picker-popover.js +0 -36
  1010. package/src/components/inspector-advanced-controls/README.md +0 -72
  1011. package/src/components/inspector-advanced-controls/index.js +0 -32
  1012. package/src/components/list-view/block-slot.js +0 -120
  1013. package/src/components/list-view/editor.js +0 -29
  1014. package/src/components/text-decoration-and-transform/index.js +0 -36
  1015. package/src/components/text-decoration-and-transform/style.scss +0 -3
  1016. package/src/components/use-simulated-media-query/index.js +0 -144
  1017. package/src/store/controls.js +0 -39
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getPxFromCssUnit = getPxFromCssUnit;
7
+ exports.default = void 0;
8
+
9
+ /**
10
+ * Converts string to object { value, unit }.
11
+ *
12
+ * @param {string} cssUnit
13
+ * @return {Object} parsedUnit
14
+ */
15
+ function parseUnit(cssUnit) {
16
+ const match = cssUnit === null || cssUnit === void 0 ? void 0 : cssUnit.trim().match(/^(0?[-.]?\d+)(r?e[m|x]|v[h|w|min|max]+|p[x|t|c]|[c|m]m|%|in|ch|Q|lh)$/);
17
+
18
+ if (!isNaN(cssUnit) && !isNaN(parseFloat(cssUnit))) {
19
+ return {
20
+ value: parseFloat(cssUnit),
21
+ unit: 'px'
22
+ };
23
+ }
24
+
25
+ return match ? {
26
+ value: parseFloat(match[1]) || match[1],
27
+ unit: match[2]
28
+ } : {
29
+ value: cssUnit,
30
+ unit: undefined
31
+ };
32
+ }
33
+ /**
34
+ * Evaluate a math expression.
35
+ *
36
+ * @param {string} expression
37
+ * @return {number} evaluated expression.
38
+ */
39
+
40
+
41
+ function calculate(expression) {
42
+ return Function(`'use strict'; return (${expression})`)();
43
+ }
44
+ /**
45
+ * Calculates the css function value for the supported css functions such as max, min, clamp and calc.
46
+ *
47
+ * @param {string} functionUnitValue string should be in a particular format (for example min(12px,12px) ) no nested loops.
48
+ * @param {Object} options
49
+ * @return {string} unit containing the unit in PX.
50
+ */
51
+
52
+
53
+ function getFunctionUnitValue(functionUnitValue, options) {
54
+ const functionUnit = functionUnitValue.split(/[(),]/g).filter(Boolean);
55
+ const units = functionUnit.slice(1).map(unit => parseUnit(getPxFromCssUnit(unit, options)).value).filter(Boolean);
56
+
57
+ switch (functionUnit[0]) {
58
+ case 'min':
59
+ return Math.min(...units) + 'px';
60
+
61
+ case 'max':
62
+ return Math.max(...units) + 'px';
63
+
64
+ case 'clamp':
65
+ if (units.length !== 3) {
66
+ return null;
67
+ }
68
+
69
+ if (units[1] < units[0]) {
70
+ return units[0] + 'px';
71
+ }
72
+
73
+ if (units[1] > units[2]) {
74
+ return units[2] + 'px';
75
+ }
76
+
77
+ return units[1] + 'px';
78
+
79
+ case 'calc':
80
+ return units[0] + 'px';
81
+ }
82
+ }
83
+ /**
84
+ * Take a css function such as min, max, calc, clamp and returns parsedUnit
85
+ *
86
+ * How this works for the nested function is that it first replaces the inner function call.
87
+ * Then it tackles the outer onces.
88
+ * So for example: min( max(25px, 35px), 40px )
89
+ * in the first pass we would replace max(25px, 35px) with 35px.
90
+ * then we would try to evaluate min( 35px, 40px )
91
+ * and then finally return 35px.
92
+ *
93
+ * @param {string} cssUnit
94
+ * @return {Object} parsedUnit object.
95
+ */
96
+
97
+
98
+ function parseUnitFunction(cssUnit) {
99
+ while (true) {
100
+ const currentCssUnit = cssUnit;
101
+ const regExp = /(max|min|calc|clamp)\(([^()]*)\)/g;
102
+ const matches = regExp.exec(cssUnit) || [];
103
+
104
+ if (matches[0]) {
105
+ const functionUnitValue = getFunctionUnitValue(matches[0]);
106
+ cssUnit = cssUnit.replace(matches[0], functionUnitValue);
107
+ } // if the unit hasn't been modified or we have a single value break free.
108
+
109
+
110
+ if (cssUnit === currentCssUnit || parseFloat(cssUnit)) {
111
+ break;
112
+ }
113
+ }
114
+
115
+ return parseUnit(cssUnit);
116
+ }
117
+ /**
118
+ * Return true if we think this is a math expression.
119
+ *
120
+ * @param {string} cssUnit the cssUnit value being evaluted.
121
+ * @return {boolean} Whether the cssUnit is a math expression.
122
+ */
123
+
124
+
125
+ function isMathExpression(cssUnit) {
126
+ for (let i = 0; i < cssUnit.length; i++) {
127
+ if (['+', '-', '/', '*'].includes(cssUnit[i])) {
128
+ return true;
129
+ }
130
+ }
131
+
132
+ return false;
133
+ }
134
+ /**
135
+ * Evaluates the math expression and return a px value.
136
+ *
137
+ * @param {string} cssUnit the cssUnit value being evaluted.
138
+ * @return {string} return a converfted value to px.
139
+ */
140
+
141
+
142
+ function evalMathExpression(cssUnit) {
143
+ let errorFound = false; // Convert every part of the expression to px values.
144
+
145
+ const cssUnitsBits = cssUnit.split(/[+-/*/]/g).filter(Boolean);
146
+
147
+ for (const unit of cssUnitsBits) {
148
+ // Standardize the unit to px and extract the value.
149
+ const parsedUnit = parseUnit(getPxFromCssUnit(unit));
150
+
151
+ if (!parseFloat(parsedUnit.value)) {
152
+ errorFound = true; // end early since we are dealing with a null value.
153
+
154
+ break;
155
+ }
156
+
157
+ cssUnit = cssUnit.replace(unit, parsedUnit.value);
158
+ }
159
+
160
+ return errorFound ? null : calculate(cssUnit).toFixed(0) + 'px';
161
+ }
162
+ /**
163
+ * Convert a parsedUnit object to px value.
164
+ *
165
+ * @param {Object} parsedUnit
166
+ * @param {Object} options
167
+ * @return {string} or {null} returns the converted with in a px value format.
168
+ */
169
+
170
+
171
+ function convertParsedUnitToPx(parsedUnit, options) {
172
+ const PIXELS_PER_INCH = 96;
173
+ const ONE_PERCENT = 0.01;
174
+ const defaultProperties = {
175
+ fontSize: 16,
176
+ lineHeight: 16,
177
+ width: 375,
178
+ height: 812,
179
+ type: 'font'
180
+ };
181
+ const setOptions = Object.assign({}, defaultProperties, options);
182
+ const relativeUnits = {
183
+ em: setOptions.fontSize,
184
+ rem: setOptions.fontSize,
185
+ vh: setOptions.height * ONE_PERCENT,
186
+ vw: setOptions.width * ONE_PERCENT,
187
+ vmin: (setOptions.width < setOptions.height ? setOptions.width : setOptions.height) * ONE_PERCENT,
188
+ vmax: (setOptions.width > setOptions.height ? setOptions.width : setOptions.height) * ONE_PERCENT,
189
+ '%': (setOptions.type === 'font' ? setOptions.fontSize : setOptions.width) * ONE_PERCENT,
190
+ ch: 8,
191
+ // The advance measure (width) of the glyph "0" of the element's font. Approximate
192
+ ex: 7.15625,
193
+ // x-height of the element's font. Approximate
194
+ lh: setOptions.lineHeight
195
+ };
196
+ const absoluteUnits = {
197
+ in: PIXELS_PER_INCH,
198
+ cm: PIXELS_PER_INCH / 2.54,
199
+ mm: PIXELS_PER_INCH / 25.4,
200
+ pt: PIXELS_PER_INCH / 72,
201
+ pc: PIXELS_PER_INCH / 6,
202
+ px: 1,
203
+ Q: PIXELS_PER_INCH / 2.54 / 40
204
+ };
205
+
206
+ if (relativeUnits[parsedUnit.unit]) {
207
+ return (relativeUnits[parsedUnit.unit] * parsedUnit.value).toFixed(0) + 'px';
208
+ }
209
+
210
+ if (absoluteUnits[parsedUnit.unit]) {
211
+ return (absoluteUnits[parsedUnit.unit] * parsedUnit.value).toFixed(0) + 'px';
212
+ }
213
+
214
+ return null;
215
+ }
216
+ /**
217
+ * Returns the px value of a cssUnit.
218
+ *
219
+ * @param {string} cssUnit
220
+ * @param {Object} options
221
+ * @return {string} returns the cssUnit value in a simple px format.
222
+ */
223
+
224
+
225
+ function getPxFromCssUnit(cssUnit, options = {}) {
226
+ if (Number.isFinite(cssUnit)) {
227
+ return cssUnit.toFixed(0) + 'px';
228
+ }
229
+
230
+ if (cssUnit === undefined) {
231
+ return null;
232
+ }
233
+
234
+ let parsedUnit = parseUnit(cssUnit);
235
+
236
+ if (!parsedUnit.unit) {
237
+ parsedUnit = parseUnitFunction(cssUnit, options);
238
+ }
239
+
240
+ if (isMathExpression(cssUnit) && !parsedUnit.unit) {
241
+ return evalMathExpression(cssUnit);
242
+ }
243
+
244
+ return convertParsedUnitToPx(parsedUnit, options);
245
+ } // Use simple cache.
246
+
247
+
248
+ const cache = {};
249
+ /**
250
+ * Returns the px value of a cssUnit. The memoized version of getPxFromCssUnit;
251
+ *
252
+ * @param {string} cssUnit
253
+ * @param {Object} options
254
+ * @return {string} returns the cssUnit value in a simple px format.
255
+ */
256
+
257
+ function memoizedGetPxFromCssUnit(cssUnit, options = {}) {
258
+ const hash = cssUnit + hashOptions(options);
259
+
260
+ if (!cache[hash]) {
261
+ cache[hash] = getPxFromCssUnit(cssUnit, options);
262
+ }
263
+
264
+ return cache[hash];
265
+ }
266
+
267
+ function hashOptions(options) {
268
+ let hash = '';
269
+
270
+ if (options.hasOwnProperty('fontSize')) {
271
+ hash = ':' + options.width;
272
+ }
273
+
274
+ if (options.hasOwnProperty('lineHeight')) {
275
+ hash = ':' + options.lineHeight;
276
+ }
277
+
278
+ if (options.hasOwnProperty('width')) {
279
+ hash = ':' + options.width;
280
+ }
281
+
282
+ if (options.hasOwnProperty('height')) {
283
+ hash = ':' + options.height;
284
+ }
285
+
286
+ if (options.hasOwnProperty('type')) {
287
+ hash = ':' + options.type;
288
+ }
289
+
290
+ return hash;
291
+ }
292
+
293
+ var _default = memoizedGetPxFromCssUnit;
294
+ exports.default = _default;
295
+ //# sourceMappingURL=parse-css-unit-to-px.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/utils/parse-css-unit-to-px.js"],"names":["parseUnit","cssUnit","match","trim","isNaN","parseFloat","value","unit","undefined","calculate","expression","Function","getFunctionUnitValue","functionUnitValue","options","functionUnit","split","filter","Boolean","units","slice","map","getPxFromCssUnit","Math","min","max","length","parseUnitFunction","currentCssUnit","regExp","matches","exec","replace","isMathExpression","i","includes","evalMathExpression","errorFound","cssUnitsBits","parsedUnit","toFixed","convertParsedUnitToPx","PIXELS_PER_INCH","ONE_PERCENT","defaultProperties","fontSize","lineHeight","width","height","type","setOptions","Object","assign","relativeUnits","em","rem","vh","vw","vmin","vmax","ch","ex","lh","absoluteUnits","in","cm","mm","pt","pc","px","Q","Number","isFinite","cache","memoizedGetPxFromCssUnit","hash","hashOptions","hasOwnProperty"],"mappings":"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","sourcesContent":["/**\n * Converts string to object { value, unit }.\n *\n * @param {string} cssUnit\n * @return {Object} parsedUnit\n */\nfunction parseUnit( cssUnit ) {\n\tconst match = cssUnit\n\t\t?.trim()\n\t\t.match(\n\t\t\t/^(0?[-.]?\\d+)(r?e[m|x]|v[h|w|min|max]+|p[x|t|c]|[c|m]m|%|in|ch|Q|lh)$/\n\t\t);\n\tif ( ! isNaN( cssUnit ) && ! isNaN( parseFloat( cssUnit ) ) ) {\n\t\treturn { value: parseFloat( cssUnit ), unit: 'px' };\n\t}\n\treturn match\n\t\t? { value: parseFloat( match[ 1 ] ) || match[ 1 ], unit: match[ 2 ] }\n\t\t: { value: cssUnit, unit: undefined };\n}\n/**\n * Evaluate a math expression.\n *\n * @param {string} expression\n * @return {number} evaluated expression.\n */\nfunction calculate( expression ) {\n\treturn Function( `'use strict'; return (${ expression })` )();\n}\n\n/**\n * Calculates the css function value for the supported css functions such as max, min, clamp and calc.\n *\n * @param {string} functionUnitValue string should be in a particular format (for example min(12px,12px) ) no nested loops.\n * @param {Object} options\n * @return {string} unit containing the unit in PX.\n */\nfunction getFunctionUnitValue( functionUnitValue, options ) {\n\tconst functionUnit = functionUnitValue.split( /[(),]/g ).filter( Boolean );\n\n\tconst units = functionUnit\n\t\t.slice( 1 )\n\t\t.map( ( unit ) => parseUnit( getPxFromCssUnit( unit, options ) ).value )\n\t\t.filter( Boolean );\n\n\tswitch ( functionUnit[ 0 ] ) {\n\t\tcase 'min':\n\t\t\treturn Math.min( ...units ) + 'px';\n\t\tcase 'max':\n\t\t\treturn Math.max( ...units ) + 'px';\n\t\tcase 'clamp':\n\t\t\tif ( units.length !== 3 ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif ( units[ 1 ] < units[ 0 ] ) {\n\t\t\t\treturn units[ 0 ] + 'px';\n\t\t\t}\n\t\t\tif ( units[ 1 ] > units[ 2 ] ) {\n\t\t\t\treturn units[ 2 ] + 'px';\n\t\t\t}\n\t\t\treturn units[ 1 ] + 'px';\n\t\tcase 'calc':\n\t\t\treturn units[ 0 ] + 'px';\n\t}\n}\n\n/**\n * Take a css function such as min, max, calc, clamp and returns parsedUnit\n *\n * How this works for the nested function is that it first replaces the inner function call.\n * Then it tackles the outer onces.\n * So for example: min( max(25px, 35px), 40px )\n * in the first pass we would replace max(25px, 35px) with 35px.\n * then we would try to evaluate min( 35px, 40px )\n * and then finally return 35px.\n *\n * @param {string} cssUnit\n * @return {Object} parsedUnit object.\n */\nfunction parseUnitFunction( cssUnit ) {\n\twhile ( true ) {\n\t\tconst currentCssUnit = cssUnit;\n\t\tconst regExp = /(max|min|calc|clamp)\\(([^()]*)\\)/g;\n\t\tconst matches = regExp.exec( cssUnit ) || [];\n\t\tif ( matches[ 0 ] ) {\n\t\t\tconst functionUnitValue = getFunctionUnitValue( matches[ 0 ] );\n\t\t\tcssUnit = cssUnit.replace( matches[ 0 ], functionUnitValue );\n\t\t}\n\n\t\t// if the unit hasn't been modified or we have a single value break free.\n\t\tif ( cssUnit === currentCssUnit || parseFloat( cssUnit ) ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn parseUnit( cssUnit );\n}\n/**\n * Return true if we think this is a math expression.\n *\n * @param {string} cssUnit the cssUnit value being evaluted.\n * @return {boolean} Whether the cssUnit is a math expression.\n */\nfunction isMathExpression( cssUnit ) {\n\tfor ( let i = 0; i < cssUnit.length; i++ ) {\n\t\tif ( [ '+', '-', '/', '*' ].includes( cssUnit[ i ] ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n/**\n * Evaluates the math expression and return a px value.\n *\n * @param {string} cssUnit the cssUnit value being evaluted.\n * @return {string} return a converfted value to px.\n */\nfunction evalMathExpression( cssUnit ) {\n\tlet errorFound = false;\n\t// Convert every part of the expression to px values.\n\tconst cssUnitsBits = cssUnit.split( /[+-/*/]/g ).filter( Boolean );\n\tfor ( const unit of cssUnitsBits ) {\n\t\t// Standardize the unit to px and extract the value.\n\t\tconst parsedUnit = parseUnit( getPxFromCssUnit( unit ) );\n\t\tif ( ! parseFloat( parsedUnit.value ) ) {\n\t\t\terrorFound = true;\n\t\t\t// end early since we are dealing with a null value.\n\t\t\tbreak;\n\t\t}\n\t\tcssUnit = cssUnit.replace( unit, parsedUnit.value );\n\t}\n\n\treturn errorFound ? null : calculate( cssUnit ).toFixed( 0 ) + 'px';\n}\n\n/**\n * Convert a parsedUnit object to px value.\n *\n * @param {Object} parsedUnit\n * @param {Object} options\n * @return {string} or {null} returns the converted with in a px value format.\n */\nfunction convertParsedUnitToPx( parsedUnit, options ) {\n\tconst PIXELS_PER_INCH = 96;\n\tconst ONE_PERCENT = 0.01;\n\n\tconst defaultProperties = {\n\t\tfontSize: 16,\n\t\tlineHeight: 16,\n\t\twidth: 375,\n\t\theight: 812,\n\t\ttype: 'font',\n\t};\n\n\tconst setOptions = Object.assign( {}, defaultProperties, options );\n\n\tconst relativeUnits = {\n\t\tem: setOptions.fontSize,\n\t\trem: setOptions.fontSize,\n\t\tvh: setOptions.height * ONE_PERCENT,\n\t\tvw: setOptions.width * ONE_PERCENT,\n\t\tvmin:\n\t\t\t( setOptions.width < setOptions.height\n\t\t\t\t? setOptions.width\n\t\t\t\t: setOptions.height ) * ONE_PERCENT,\n\t\tvmax:\n\t\t\t( setOptions.width > setOptions.height\n\t\t\t\t? setOptions.width\n\t\t\t\t: setOptions.height ) * ONE_PERCENT,\n\t\t'%':\n\t\t\t( setOptions.type === 'font'\n\t\t\t\t? setOptions.fontSize\n\t\t\t\t: setOptions.width ) * ONE_PERCENT,\n\t\tch: 8, // The advance measure (width) of the glyph \"0\" of the element's font. Approximate\n\t\tex: 7.15625, // x-height of the element's font. Approximate\n\t\tlh: setOptions.lineHeight,\n\t};\n\n\tconst absoluteUnits = {\n\t\tin: PIXELS_PER_INCH,\n\t\tcm: PIXELS_PER_INCH / 2.54,\n\t\tmm: PIXELS_PER_INCH / 25.4,\n\t\tpt: PIXELS_PER_INCH / 72,\n\t\tpc: PIXELS_PER_INCH / 6,\n\t\tpx: 1,\n\t\tQ: PIXELS_PER_INCH / 2.54 / 40,\n\t};\n\n\tif ( relativeUnits[ parsedUnit.unit ] ) {\n\t\treturn (\n\t\t\t( relativeUnits[ parsedUnit.unit ] * parsedUnit.value ).toFixed(\n\t\t\t\t0\n\t\t\t) + 'px'\n\t\t);\n\t}\n\n\tif ( absoluteUnits[ parsedUnit.unit ] ) {\n\t\treturn (\n\t\t\t( absoluteUnits[ parsedUnit.unit ] * parsedUnit.value ).toFixed(\n\t\t\t\t0\n\t\t\t) + 'px'\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns the px value of a cssUnit.\n *\n * @param {string} cssUnit\n * @param {Object} options\n * @return {string} returns the cssUnit value in a simple px format.\n */\nexport function getPxFromCssUnit( cssUnit, options = {} ) {\n\tif ( Number.isFinite( cssUnit ) ) {\n\t\treturn cssUnit.toFixed( 0 ) + 'px';\n\t}\n\tif ( cssUnit === undefined ) {\n\t\treturn null;\n\t}\n\tlet parsedUnit = parseUnit( cssUnit );\n\n\tif ( ! parsedUnit.unit ) {\n\t\tparsedUnit = parseUnitFunction( cssUnit, options );\n\t}\n\n\tif ( isMathExpression( cssUnit ) && ! parsedUnit.unit ) {\n\t\treturn evalMathExpression( cssUnit );\n\t}\n\n\treturn convertParsedUnitToPx( parsedUnit, options );\n}\n\n// Use simple cache.\nconst cache = {};\n/**\n * Returns the px value of a cssUnit. The memoized version of getPxFromCssUnit;\n *\n * @param {string} cssUnit\n * @param {Object} options\n * @return {string} returns the cssUnit value in a simple px format.\n */\nfunction memoizedGetPxFromCssUnit( cssUnit, options = {} ) {\n\tconst hash = cssUnit + hashOptions( options );\n\n\tif ( ! cache[ hash ] ) {\n\t\tcache[ hash ] = getPxFromCssUnit( cssUnit, options );\n\t}\n\treturn cache[ hash ];\n}\n\nfunction hashOptions( options ) {\n\tlet hash = '';\n\tif ( options.hasOwnProperty( 'fontSize' ) ) {\n\t\thash = ':' + options.width;\n\t}\n\tif ( options.hasOwnProperty( 'lineHeight' ) ) {\n\t\thash = ':' + options.lineHeight;\n\t}\n\tif ( options.hasOwnProperty( 'width' ) ) {\n\t\thash = ':' + options.width;\n\t}\n\tif ( options.hasOwnProperty( 'height' ) ) {\n\t\thash = ':' + options.height;\n\t}\n\tif ( options.hasOwnProperty( 'type' ) ) {\n\t\thash = ':' + options.type;\n\t}\n\treturn hash;\n}\n\nexport default memoizedGetPxFromCssUnit;\n"]}
@@ -9,8 +9,24 @@ exports.default = void 0;
9
9
  * @constant string IS_ROOT_TAG Regex to check if the selector is a root tag selector.
10
10
  */
11
11
  const IS_ROOT_TAG = /^(body|html|:root).*$/;
12
+ /**
13
+ * Creates a callback to modify selectors so they only apply within a certain
14
+ * namespace.
15
+ *
16
+ * @param {string} namespace Namespace to prefix selectors with.
17
+ * @param {string[]} ignore Selectors to not prefix.
18
+ *
19
+ * @return {(node: Object) => Object} Callback to wrap selectors.
20
+ */
12
21
 
13
22
  const wrap = (namespace, ignore = []) => node => {
23
+ /**
24
+ * Updates selector if necessary.
25
+ *
26
+ * @param {string} selector Selector to modify.
27
+ *
28
+ * @return {string} Updated selector.
29
+ */
14
30
  const updateSelector = selector => {
15
31
  if (ignore.includes(selector.trim())) {
16
32
  return selector;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/utils/transform-styles/transforms/wrap.js"],"names":["IS_ROOT_TAG","wrap","namespace","ignore","node","updateSelector","selector","includes","trim","match","replace","type","selectors","map"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA,MAAMA,WAAW,GAAG,uBAApB;;AAEA,MAAMC,IAAI,GAAG,CAAEC,SAAF,EAAaC,MAAM,GAAG,EAAtB,KAAgCC,IAAF,IAAY;AACtD,QAAMC,cAAc,GAAKC,QAAF,IAAgB;AACtC,QAAKH,MAAM,CAACI,QAAP,CAAiBD,QAAQ,CAACE,IAAT,EAAjB,CAAL,EAA0C;AACzC,aAAOF,QAAP;AACA,KAHqC,CAKtC;;;AACA;AACC,UAAK,CAAEA,QAAQ,CAACG,KAAT,CAAgBT,WAAhB,CAAP,EAAuC;AACtC,eAAOE,SAAS,GAAG,GAAZ,GAAkBI,QAAzB;AACA;AACD,KAVqC,CAYtC;;AACA,WAAOA,QAAQ,CAACI,OAAT,CAAkB,oBAAlB,EAAwCR,SAAxC,CAAP;AACA,GAdD;;AAgBA,MAAKE,IAAI,CAACO,IAAL,KAAc,MAAnB,EAA4B;AAC3B,WAAO,EACN,GAAGP,IADG;AAENQ,MAAAA,SAAS,EAAER,IAAI,CAACQ,SAAL,CAAeC,GAAf,CAAoBR,cAApB;AAFL,KAAP;AAIA;;AAED,SAAOD,IAAP;AACA,CAzBD;;eA2BeH,I","sourcesContent":["/**\n * @constant string IS_ROOT_TAG Regex to check if the selector is a root tag selector.\n */\nconst IS_ROOT_TAG = /^(body|html|:root).*$/;\n\nconst wrap = ( namespace, ignore = [] ) => ( node ) => {\n\tconst updateSelector = ( selector ) => {\n\t\tif ( ignore.includes( selector.trim() ) ) {\n\t\t\treturn selector;\n\t\t}\n\n\t\t// Anything other than a root tag is always prefixed.\n\t\t{\n\t\t\tif ( ! selector.match( IS_ROOT_TAG ) ) {\n\t\t\t\treturn namespace + ' ' + selector;\n\t\t\t}\n\t\t}\n\n\t\t// HTML and Body elements cannot be contained within our container so lets extract their styles.\n\t\treturn selector.replace( /^(body|html|:root)/, namespace );\n\t};\n\n\tif ( node.type === 'rule' ) {\n\t\treturn {\n\t\t\t...node,\n\t\t\tselectors: node.selectors.map( updateSelector ),\n\t\t};\n\t}\n\n\treturn node;\n};\n\nexport default wrap;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/utils/transform-styles/transforms/wrap.js"],"names":["IS_ROOT_TAG","wrap","namespace","ignore","node","updateSelector","selector","includes","trim","match","replace","type","selectors","map"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA,MAAMA,WAAW,GAAG,uBAApB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,IAAI,GAAG,CAAEC,SAAF,EAAaC,MAAM,GAAG,EAAtB,KAAgCC,IAAF,IAAY;AACtD;AACD;AACA;AACA;AACA;AACA;AACA;AACC,QAAMC,cAAc,GAAKC,QAAF,IAAgB;AACtC,QAAKH,MAAM,CAACI,QAAP,CAAiBD,QAAQ,CAACE,IAAT,EAAjB,CAAL,EAA0C;AACzC,aAAOF,QAAP;AACA,KAHqC,CAKtC;;;AACA;AACC,UAAK,CAAEA,QAAQ,CAACG,KAAT,CAAgBT,WAAhB,CAAP,EAAuC;AACtC,eAAOE,SAAS,GAAG,GAAZ,GAAkBI,QAAzB;AACA;AACD,KAVqC,CAYtC;;AACA,WAAOA,QAAQ,CAACI,OAAT,CAAkB,oBAAlB,EAAwCR,SAAxC,CAAP;AACA,GAdD;;AAgBA,MAAKE,IAAI,CAACO,IAAL,KAAc,MAAnB,EAA4B;AAC3B,WAAO,EACN,GAAGP,IADG;AAENQ,MAAAA,SAAS,EAAER,IAAI,CAACQ,SAAL,CAAeC,GAAf,CAAoBR,cAApB;AAFL,KAAP;AAIA;;AAED,SAAOD,IAAP;AACA,CAhCD;;eAkCeH,I","sourcesContent":["/**\n * @constant string IS_ROOT_TAG Regex to check if the selector is a root tag selector.\n */\nconst IS_ROOT_TAG = /^(body|html|:root).*$/;\n\n/**\n * Creates a callback to modify selectors so they only apply within a certain\n * namespace.\n *\n * @param {string} namespace Namespace to prefix selectors with.\n * @param {string[]} ignore Selectors to not prefix.\n *\n * @return {(node: Object) => Object} Callback to wrap selectors.\n */\nconst wrap = ( namespace, ignore = [] ) => ( node ) => {\n\t/**\n\t * Updates selector if necessary.\n\t *\n\t * @param {string} selector Selector to modify.\n\t *\n\t * @return {string} Updated selector.\n\t */\n\tconst updateSelector = ( selector ) => {\n\t\tif ( ignore.includes( selector.trim() ) ) {\n\t\t\treturn selector;\n\t\t}\n\n\t\t// Anything other than a root tag is always prefixed.\n\t\t{\n\t\t\tif ( ! selector.match( IS_ROOT_TAG ) ) {\n\t\t\t\treturn namespace + ' ' + selector;\n\t\t\t}\n\t\t}\n\n\t\t// HTML and Body elements cannot be contained within our container so lets extract their styles.\n\t\treturn selector.replace( /^(body|html|:root)/, namespace );\n\t};\n\n\tif ( node.type === 'rule' ) {\n\t\treturn {\n\t\t\t...node,\n\t\t\tselectors: node.selectors.map( updateSelector ),\n\t\t};\n\t}\n\n\treturn node;\n};\n\nexport default wrap;\n"]}
@@ -12,7 +12,7 @@ import { clone } from 'lodash';
12
12
  import { applyFilters, hasFilter } from '@wordpress/hooks';
13
13
  import { Autocomplete, __unstableUseAutocompleteProps as useAutocompleteProps } from '@wordpress/components';
14
14
  import { useMemo } from '@wordpress/element';
15
- import { getDefaultBlockName } from '@wordpress/blocks';
15
+ import { getDefaultBlockName, getBlockSupport } from '@wordpress/blocks';
16
16
  /**
17
17
  * Internal dependencies
18
18
  */
@@ -37,7 +37,7 @@ function useCompleters({
37
37
  return useMemo(() => {
38
38
  let filteredCompleters = completers;
39
39
 
40
- if (name === getDefaultBlockName()) {
40
+ if (name === getDefaultBlockName() || getBlockSupport(name, '__experimentalSlashInserter', false)) {
41
41
  filteredCompleters = filteredCompleters.concat([blockAutocompleter]);
42
42
  }
43
43
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/autocomplete/index.js"],"names":["clone","applyFilters","hasFilter","Autocomplete","__unstableUseAutocompleteProps","useAutocompleteProps","useMemo","getDefaultBlockName","useBlockEditContext","blockAutocompleter","EMPTY_ARRAY","useCompleters","completers","name","filteredCompleters","concat","map","useBlockEditorAutocompleteProps","props","BlockEditorAutocomplete"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,KAAT,QAAsB,QAAtB;AAEA;AACA;AACA;;AACA,SAASC,YAAT,EAAuBC,SAAvB,QAAwC,kBAAxC;AACA,SACCC,YADD,EAECC,8BAA8B,IAAIC,oBAFnC,QAGO,uBAHP;AAIA,SAASC,OAAT,QAAwB,oBAAxB;AACA,SAASC,mBAAT,QAAoC,mBAApC;AAEA;AACA;AACA;;AACA,SAASC,mBAAT,QAAoC,uBAApC;AACA,OAAOC,kBAAP,MAA+B,4BAA/B;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,WAAW,GAAG,EAApB;;AAEA,SAASC,aAAT,CAAwB;AAAEC,EAAAA,UAAU,GAAGF;AAAf,CAAxB,EAAuD;AACtD,QAAM;AAAEG,IAAAA;AAAF,MAAWL,mBAAmB,EAApC;AACA,SAAOF,OAAO,CAAE,MAAM;AACrB,QAAIQ,kBAAkB,GAAGF,UAAzB;;AAEA,QAAKC,IAAI,KAAKN,mBAAmB,EAAjC,EAAsC;AACrCO,MAAAA,kBAAkB,GAAGA,kBAAkB,CAACC,MAAnB,CAA2B,CAC/CN,kBAD+C,CAA3B,CAArB;AAGA;;AAED,QAAKP,SAAS,CAAE,gCAAF,CAAd,EAAqD;AACpD;AACA,UAAKY,kBAAkB,KAAKF,UAA5B,EAAyC;AACxCE,QAAAA,kBAAkB,GAAGA,kBAAkB,CAACE,GAAnB,CAAwBhB,KAAxB,CAArB;AACA;;AAEDc,MAAAA,kBAAkB,GAAGb,YAAY,CAChC,gCADgC,EAEhCa,kBAFgC,EAGhCD,IAHgC,CAAjC;AAKA;;AAED,WAAOC,kBAAP;AACA,GAvBa,EAuBX,CAAEF,UAAF,EAAcC,IAAd,CAvBW,CAAd;AAwBA;;AAED,OAAO,SAASI,+BAAT,CAA0CC,KAA1C,EAAkD;AACxD,SAAOb,oBAAoB,CAAE,EAC5B,GAAGa,KADyB;AAE5BN,IAAAA,UAAU,EAAED,aAAa,CAAEO,KAAF;AAFG,GAAF,CAA3B;AAIA;AAED;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,uBAAT,CAAkCD,KAAlC,EAA0C;AACzC,SAAO,cAAC,YAAD,eAAmBA,KAAnB;AAA2B,IAAA,UAAU,EAAGP,aAAa,CAAEO,KAAF;AAArD,KAAP;AACA;AAED;AACA;AACA;;;AACA,eAAeC,uBAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { clone } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { applyFilters, hasFilter } from '@wordpress/hooks';\nimport {\n\tAutocomplete,\n\t__unstableUseAutocompleteProps as useAutocompleteProps,\n} from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\nimport { getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditContext } from '../block-edit/context';\nimport blockAutocompleter from '../../autocompleters/block';\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nfunction useCompleters( { completers = EMPTY_ARRAY } ) {\n\tconst { name } = useBlockEditContext();\n\treturn useMemo( () => {\n\t\tlet filteredCompleters = completers;\n\n\t\tif ( name === getDefaultBlockName() ) {\n\t\t\tfilteredCompleters = filteredCompleters.concat( [\n\t\t\t\tblockAutocompleter,\n\t\t\t] );\n\t\t}\n\n\t\tif ( hasFilter( 'editor.Autocomplete.completers' ) ) {\n\t\t\t// Provide copies so filters may directly modify them.\n\t\t\tif ( filteredCompleters === completers ) {\n\t\t\t\tfilteredCompleters = filteredCompleters.map( clone );\n\t\t\t}\n\n\t\t\tfilteredCompleters = applyFilters(\n\t\t\t\t'editor.Autocomplete.completers',\n\t\t\t\tfilteredCompleters,\n\t\t\t\tname\n\t\t\t);\n\t\t}\n\n\t\treturn filteredCompleters;\n\t}, [ completers, name ] );\n}\n\nexport function useBlockEditorAutocompleteProps( props ) {\n\treturn useAutocompleteProps( {\n\t\t...props,\n\t\tcompleters: useCompleters( props ),\n\t} );\n}\n\n/**\n * Wrap the default Autocomplete component with one that supports a filter hook\n * for customizing its list of autocompleters.\n *\n * @type {import('react').FC}\n */\nfunction BlockEditorAutocomplete( props ) {\n\treturn <Autocomplete { ...props } completers={ useCompleters( props ) } />;\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/autocomplete/README.md\n */\nexport default BlockEditorAutocomplete;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/autocomplete/index.js"],"names":["clone","applyFilters","hasFilter","Autocomplete","__unstableUseAutocompleteProps","useAutocompleteProps","useMemo","getDefaultBlockName","getBlockSupport","useBlockEditContext","blockAutocompleter","EMPTY_ARRAY","useCompleters","completers","name","filteredCompleters","concat","map","useBlockEditorAutocompleteProps","props","BlockEditorAutocomplete"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,KAAT,QAAsB,QAAtB;AAEA;AACA;AACA;;AACA,SAASC,YAAT,EAAuBC,SAAvB,QAAwC,kBAAxC;AACA,SACCC,YADD,EAECC,8BAA8B,IAAIC,oBAFnC,QAGO,uBAHP;AAIA,SAASC,OAAT,QAAwB,oBAAxB;AACA,SAASC,mBAAT,EAA8BC,eAA9B,QAAqD,mBAArD;AAEA;AACA;AACA;;AACA,SAASC,mBAAT,QAAoC,uBAApC;AACA,OAAOC,kBAAP,MAA+B,4BAA/B;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,WAAW,GAAG,EAApB;;AAEA,SAASC,aAAT,CAAwB;AAAEC,EAAAA,UAAU,GAAGF;AAAf,CAAxB,EAAuD;AACtD,QAAM;AAAEG,IAAAA;AAAF,MAAWL,mBAAmB,EAApC;AACA,SAAOH,OAAO,CAAE,MAAM;AACrB,QAAIS,kBAAkB,GAAGF,UAAzB;;AAEA,QACCC,IAAI,KAAKP,mBAAmB,EAA5B,IACAC,eAAe,CAAEM,IAAF,EAAQ,6BAAR,EAAuC,KAAvC,CAFhB,EAGE;AACDC,MAAAA,kBAAkB,GAAGA,kBAAkB,CAACC,MAAnB,CAA2B,CAC/CN,kBAD+C,CAA3B,CAArB;AAGA;;AAED,QAAKR,SAAS,CAAE,gCAAF,CAAd,EAAqD;AACpD;AACA,UAAKa,kBAAkB,KAAKF,UAA5B,EAAyC;AACxCE,QAAAA,kBAAkB,GAAGA,kBAAkB,CAACE,GAAnB,CAAwBjB,KAAxB,CAArB;AACA;;AAEDe,MAAAA,kBAAkB,GAAGd,YAAY,CAChC,gCADgC,EAEhCc,kBAFgC,EAGhCD,IAHgC,CAAjC;AAKA;;AAED,WAAOC,kBAAP;AACA,GA1Ba,EA0BX,CAAEF,UAAF,EAAcC,IAAd,CA1BW,CAAd;AA2BA;;AAED,OAAO,SAASI,+BAAT,CAA0CC,KAA1C,EAAkD;AACxD,SAAOd,oBAAoB,CAAE,EAC5B,GAAGc,KADyB;AAE5BN,IAAAA,UAAU,EAAED,aAAa,CAAEO,KAAF;AAFG,GAAF,CAA3B;AAIA;AAED;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,uBAAT,CAAkCD,KAAlC,EAA0C;AACzC,SAAO,cAAC,YAAD,eAAmBA,KAAnB;AAA2B,IAAA,UAAU,EAAGP,aAAa,CAAEO,KAAF;AAArD,KAAP;AACA;AAED;AACA;AACA;;;AACA,eAAeC,uBAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { clone } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { applyFilters, hasFilter } from '@wordpress/hooks';\nimport {\n\tAutocomplete,\n\t__unstableUseAutocompleteProps as useAutocompleteProps,\n} from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\nimport { getDefaultBlockName, getBlockSupport } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditContext } from '../block-edit/context';\nimport blockAutocompleter from '../../autocompleters/block';\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nfunction useCompleters( { completers = EMPTY_ARRAY } ) {\n\tconst { name } = useBlockEditContext();\n\treturn useMemo( () => {\n\t\tlet filteredCompleters = completers;\n\n\t\tif (\n\t\t\tname === getDefaultBlockName() ||\n\t\t\tgetBlockSupport( name, '__experimentalSlashInserter', false )\n\t\t) {\n\t\t\tfilteredCompleters = filteredCompleters.concat( [\n\t\t\t\tblockAutocompleter,\n\t\t\t] );\n\t\t}\n\n\t\tif ( hasFilter( 'editor.Autocomplete.completers' ) ) {\n\t\t\t// Provide copies so filters may directly modify them.\n\t\t\tif ( filteredCompleters === completers ) {\n\t\t\t\tfilteredCompleters = filteredCompleters.map( clone );\n\t\t\t}\n\n\t\t\tfilteredCompleters = applyFilters(\n\t\t\t\t'editor.Autocomplete.completers',\n\t\t\t\tfilteredCompleters,\n\t\t\t\tname\n\t\t\t);\n\t\t}\n\n\t\treturn filteredCompleters;\n\t}, [ completers, name ] );\n}\n\nexport function useBlockEditorAutocompleteProps( props ) {\n\treturn useAutocompleteProps( {\n\t\t...props,\n\t\tcompleters: useCompleters( props ),\n\t} );\n}\n\n/**\n * Wrap the default Autocomplete component with one that supports a filter hook\n * for customizing its list of autocompleters.\n *\n * @type {import('react').FC}\n */\nfunction BlockEditorAutocomplete( props ) {\n\treturn <Autocomplete { ...props } completers={ useCompleters( props ) } />;\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/autocomplete/README.md\n */\nexport default BlockEditorAutocomplete;\n"]}
@@ -23,18 +23,21 @@ export default function BlockActions({
23
23
  canInsertBlockType,
24
24
  getBlockRootClientId,
25
25
  getBlocksByClientId,
26
- getTemplateLock
27
- } = useSelect(select => select(blockEditorStore), []);
26
+ canMoveBlocks,
27
+ canRemoveBlocks
28
+ } = useSelect(blockEditorStore);
28
29
  const {
29
30
  getDefaultBlockName,
30
31
  getGroupingBlockName
31
- } = useSelect(select => select(blocksStore), []);
32
+ } = useSelect(blocksStore);
32
33
  const blocks = getBlocksByClientId(clientIds);
33
34
  const rootClientId = getBlockRootClientId(clientIds[0]);
34
35
  const canDuplicate = every(blocks, block => {
35
36
  return !!block && hasBlockSupport(block.name, 'multiple', true) && canInsertBlockType(block.name, rootClientId);
36
37
  });
37
38
  const canInsertDefaultBlock = canInsertBlockType(getDefaultBlockName(), rootClientId);
39
+ const canMove = canMoveBlocks(clientIds, rootClientId);
40
+ const canRemove = canRemoveBlocks(clientIds, rootClientId);
38
41
  const {
39
42
  removeBlocks,
40
43
  replaceBlocks,
@@ -50,7 +53,8 @@ export default function BlockActions({
50
53
  return children({
51
54
  canDuplicate,
52
55
  canInsertDefaultBlock,
53
- isLocked: !!getTemplateLock(rootClientId),
56
+ canMove,
57
+ canRemove,
54
58
  rootClientId,
55
59
  blocks,
56
60
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-actions/index.js"],"names":["castArray","first","last","every","useDispatch","useSelect","hasBlockSupport","switchToBlockType","store","blocksStore","useNotifyCopy","blockEditorStore","BlockActions","clientIds","children","__experimentalUpdateSelection","updateSelection","canInsertBlockType","getBlockRootClientId","getBlocksByClientId","getTemplateLock","select","getDefaultBlockName","getGroupingBlockName","blocks","rootClientId","canDuplicate","block","name","canInsertDefaultBlock","removeBlocks","replaceBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","flashBlock","setBlockMovingClientId","setNavigationMode","selectBlock","notifyCopy","isLocked","onDuplicate","onRemove","onInsertBefore","onInsertAfter","onMoveTo","onGroup","length","groupingBlockName","newBlocks","onUngroup","innerBlocks","onCopy","selectedBlockClientIds","map","clientId"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, first, last, every } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\thasBlockSupport,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useNotifyCopy } from '../copy-handler';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockActions( {\n\tclientIds,\n\tchildren,\n\t__experimentalUpdateSelection: updateSelection,\n} ) {\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tgetTemplateLock,\n\t} = useSelect( ( select ) => select( blockEditorStore ), [] );\n\tconst { getDefaultBlockName, getGroupingBlockName } = useSelect(\n\t\t( select ) => select( blocksStore ),\n\t\t[]\n\t);\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canDuplicate = every( blocks, ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tflashBlock,\n\t\tsetBlockMovingClientId,\n\t\tsetNavigationMode,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn children( {\n\t\tcanDuplicate,\n\t\tcanInsertDefaultBlock,\n\t\tisLocked: !! getTemplateLock( rootClientId ),\n\t\trootClientId,\n\t\tblocks,\n\t\tonDuplicate() {\n\t\t\treturn duplicateBlocks( clientIds, updateSelection );\n\t\t},\n\t\tonRemove() {\n\t\t\treturn removeBlocks( clientIds, updateSelection );\n\t\t},\n\t\tonInsertBefore() {\n\t\t\tinsertBeforeBlock( first( castArray( clientIds ) ) );\n\t\t},\n\t\tonInsertAfter() {\n\t\t\tinsertAfterBlock( last( castArray( clientIds ) ) );\n\t\t},\n\t\tonMoveTo() {\n\t\t\tsetNavigationMode( true );\n\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t},\n\t\tonGroup() {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t\t// Activate the `transform` on `core/group` which does the conversion\n\t\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\t\tif ( ! newBlocks ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t},\n\t\tonUngroup() {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\t\tif ( ! innerBlocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treplaceBlocks( clientIds, innerBlocks );\n\t\t},\n\t\tonCopy() {\n\t\t\tconst selectedBlockClientIds = blocks.map(\n\t\t\t\t( { clientId } ) => clientId\n\t\t\t);\n\t\t\tif ( blocks.length === 1 ) {\n\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t}\n\t\t\tnotifyCopy( 'copy', selectedBlockClientIds );\n\t\t},\n\t} );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-actions/index.js"],"names":["castArray","first","last","every","useDispatch","useSelect","hasBlockSupport","switchToBlockType","store","blocksStore","useNotifyCopy","blockEditorStore","BlockActions","clientIds","children","__experimentalUpdateSelection","updateSelection","canInsertBlockType","getBlockRootClientId","getBlocksByClientId","canMoveBlocks","canRemoveBlocks","getDefaultBlockName","getGroupingBlockName","blocks","rootClientId","canDuplicate","block","name","canInsertDefaultBlock","canMove","canRemove","removeBlocks","replaceBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","flashBlock","setBlockMovingClientId","setNavigationMode","selectBlock","notifyCopy","onDuplicate","onRemove","onInsertBefore","onInsertAfter","onMoveTo","onGroup","length","groupingBlockName","newBlocks","onUngroup","innerBlocks","onCopy","selectedBlockClientIds","map","clientId"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,KAApB,EAA2BC,IAA3B,EAAiCC,KAAjC,QAA8C,QAA9C;AAEA;AACA;AACA;;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SACCC,eADD,EAECC,iBAFD,EAGCC,KAAK,IAAIC,WAHV,QAIO,mBAJP;AAMA;AACA;AACA;;AACA,SAASC,aAAT,QAA8B,iBAA9B;AACA,SAASF,KAAK,IAAIG,gBAAlB,QAA0C,aAA1C;AAEA,eAAe,SAASC,YAAT,CAAuB;AACrCC,EAAAA,SADqC;AAErCC,EAAAA,QAFqC;AAGrCC,EAAAA,6BAA6B,EAAEC;AAHM,CAAvB,EAIX;AACH,QAAM;AACLC,IAAAA,kBADK;AAELC,IAAAA,oBAFK;AAGLC,IAAAA,mBAHK;AAILC,IAAAA,aAJK;AAKLC,IAAAA;AALK,MAMFhB,SAAS,CAAEM,gBAAF,CANb;AAOA,QAAM;AAAEW,IAAAA,mBAAF;AAAuBC,IAAAA;AAAvB,MAAgDlB,SAAS,CAC9DI,WAD8D,CAA/D;AAIA,QAAMe,MAAM,GAAGL,mBAAmB,CAAEN,SAAF,CAAlC;AACA,QAAMY,YAAY,GAAGP,oBAAoB,CAAEL,SAAS,CAAE,CAAF,CAAX,CAAzC;AACA,QAAMa,YAAY,GAAGvB,KAAK,CAAEqB,MAAF,EAAYG,KAAF,IAAa;AAChD,WACC,CAAC,CAAEA,KAAH,IACArB,eAAe,CAAEqB,KAAK,CAACC,IAAR,EAAc,UAAd,EAA0B,IAA1B,CADf,IAEAX,kBAAkB,CAAEU,KAAK,CAACC,IAAR,EAAcH,YAAd,CAHnB;AAKA,GANyB,CAA1B;AAQA,QAAMI,qBAAqB,GAAGZ,kBAAkB,CAC/CK,mBAAmB,EAD4B,EAE/CG,YAF+C,CAAhD;AAKA,QAAMK,OAAO,GAAGV,aAAa,CAAEP,SAAF,EAAaY,YAAb,CAA7B;AACA,QAAMM,SAAS,GAAGV,eAAe,CAAER,SAAF,EAAaY,YAAb,CAAjC;AAEA,QAAM;AACLO,IAAAA,YADK;AAELC,IAAAA,aAFK;AAGLC,IAAAA,eAHK;AAILC,IAAAA,gBAJK;AAKLC,IAAAA,iBALK;AAMLC,IAAAA,UANK;AAOLC,IAAAA,sBAPK;AAQLC,IAAAA,iBARK;AASLC,IAAAA;AATK,MAUFpC,WAAW,CAAEO,gBAAF,CAVf;AAYA,QAAM8B,UAAU,GAAG/B,aAAa,EAAhC;AAEA,SAAOI,QAAQ,CAAE;AAChBY,IAAAA,YADgB;AAEhBG,IAAAA,qBAFgB;AAGhBC,IAAAA,OAHgB;AAIhBC,IAAAA,SAJgB;AAKhBN,IAAAA,YALgB;AAMhBD,IAAAA,MANgB;;AAOhBkB,IAAAA,WAAW,GAAG;AACb,aAAOR,eAAe,CAAErB,SAAF,EAAaG,eAAb,CAAtB;AACA,KATe;;AAUhB2B,IAAAA,QAAQ,GAAG;AACV,aAAOX,YAAY,CAAEnB,SAAF,EAAaG,eAAb,CAAnB;AACA,KAZe;;AAahB4B,IAAAA,cAAc,GAAG;AAChBR,MAAAA,iBAAiB,CAAEnC,KAAK,CAAED,SAAS,CAAEa,SAAF,CAAX,CAAP,CAAjB;AACA,KAfe;;AAgBhBgC,IAAAA,aAAa,GAAG;AACfV,MAAAA,gBAAgB,CAAEjC,IAAI,CAAEF,SAAS,CAAEa,SAAF,CAAX,CAAN,CAAhB;AACA,KAlBe;;AAmBhBiC,IAAAA,QAAQ,GAAG;AACVP,MAAAA,iBAAiB,CAAE,IAAF,CAAjB;AACAC,MAAAA,WAAW,CAAE3B,SAAS,CAAE,CAAF,CAAX,CAAX;AACAyB,MAAAA,sBAAsB,CAAEzB,SAAS,CAAE,CAAF,CAAX,CAAtB;AACA,KAvBe;;AAwBhBkC,IAAAA,OAAO,GAAG;AACT,UAAK,CAAEvB,MAAM,CAACwB,MAAd,EAAuB;AACtB;AACA;;AAED,YAAMC,iBAAiB,GAAG1B,oBAAoB,EAA9C,CALS,CAOT;;AACA,YAAM2B,SAAS,GAAG3C,iBAAiB,CAAEiB,MAAF,EAAUyB,iBAAV,CAAnC;;AAEA,UAAK,CAAEC,SAAP,EAAmB;AAClB;AACA;;AACDjB,MAAAA,aAAa,CAAEpB,SAAF,EAAaqC,SAAb,CAAb;AACA,KAtCe;;AAuChBC,IAAAA,SAAS,GAAG;AACX,UAAK,CAAE3B,MAAM,CAACwB,MAAd,EAAuB;AACtB;AACA;;AAED,YAAMI,WAAW,GAAG5B,MAAM,CAAE,CAAF,CAAN,CAAY4B,WAAhC;;AAEA,UAAK,CAAEA,WAAW,CAACJ,MAAnB,EAA4B;AAC3B;AACA;;AAEDf,MAAAA,aAAa,CAAEpB,SAAF,EAAauC,WAAb,CAAb;AACA,KAnDe;;AAoDhBC,IAAAA,MAAM,GAAG;AACR,YAAMC,sBAAsB,GAAG9B,MAAM,CAAC+B,GAAP,CAC9B,CAAE;AAAEC,QAAAA;AAAF,OAAF,KAAoBA,QADU,CAA/B;;AAGA,UAAKhC,MAAM,CAACwB,MAAP,KAAkB,CAAvB,EAA2B;AAC1BX,QAAAA,UAAU,CAAEiB,sBAAsB,CAAE,CAAF,CAAxB,CAAV;AACA;;AACDb,MAAAA,UAAU,CAAE,MAAF,EAAUa,sBAAV,CAAV;AACA;;AA5De,GAAF,CAAf;AA8DA","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, first, last, every } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\thasBlockSupport,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useNotifyCopy } from '../copy-handler';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockActions( {\n\tclientIds,\n\tchildren,\n\t__experimentalUpdateSelection: updateSelection,\n} ) {\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanMoveBlocks,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } = useSelect(\n\t\tblocksStore\n\t);\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canDuplicate = every( blocks, ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\n\tconst canMove = canMoveBlocks( clientIds, rootClientId );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tflashBlock,\n\t\tsetBlockMovingClientId,\n\t\tsetNavigationMode,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn children( {\n\t\tcanDuplicate,\n\t\tcanInsertDefaultBlock,\n\t\tcanMove,\n\t\tcanRemove,\n\t\trootClientId,\n\t\tblocks,\n\t\tonDuplicate() {\n\t\t\treturn duplicateBlocks( clientIds, updateSelection );\n\t\t},\n\t\tonRemove() {\n\t\t\treturn removeBlocks( clientIds, updateSelection );\n\t\t},\n\t\tonInsertBefore() {\n\t\t\tinsertBeforeBlock( first( castArray( clientIds ) ) );\n\t\t},\n\t\tonInsertAfter() {\n\t\t\tinsertAfterBlock( last( castArray( clientIds ) ) );\n\t\t},\n\t\tonMoveTo() {\n\t\t\tsetNavigationMode( true );\n\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t},\n\t\tonGroup() {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t\t// Activate the `transform` on `core/group` which does the conversion\n\t\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\t\tif ( ! newBlocks ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t},\n\t\tonUngroup() {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\t\tif ( ! innerBlocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treplaceBlocks( clientIds, innerBlocks );\n\t\t},\n\t\tonCopy() {\n\t\t\tconst selectedBlockClientIds = blocks.map(\n\t\t\t\t( { clientId } ) => clientId\n\t\t\t);\n\t\t\tif ( blocks.length === 1 ) {\n\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t}\n\t\t\tnotifyCopy( 'copy', selectedBlockClientIds );\n\t\t},\n\t} );\n}\n"]}
@@ -1,18 +1,28 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { createElement } from "@wordpress/element";
2
+ import { createElement, Fragment } from "@wordpress/element";
3
3
 
4
+ /**
5
+ * External dependencies
6
+ */
7
+ import classNames from 'classnames';
4
8
  /**
5
9
  * WordPress dependencies
6
10
  */
11
+
7
12
  import { __ } from '@wordpress/i18n';
8
- import { ToolbarDropdownMenu, ToolbarGroup } from '@wordpress/components';
9
- import { positionCenter, positionLeft, positionRight, stretchFullWidth, stretchWide } from '@wordpress/icons';
13
+ import { ToolbarDropdownMenu, ToolbarGroup, MenuGroup, MenuItem } from '@wordpress/components';
14
+ import { alignNone, positionCenter, positionLeft, positionRight, stretchFullWidth, stretchWide } from '@wordpress/icons';
15
+ import { Platform } from '@wordpress/element';
10
16
  /**
11
17
  * Internal dependencies
12
18
  */
13
19
 
14
20
  import useAvailableAlignments from './use-available-alignments';
15
21
  const BLOCK_ALIGNMENTS_CONTROLS = {
22
+ none: {
23
+ icon: alignNone,
24
+ title: __('None')
25
+ },
16
26
  left: {
17
27
  icon: positionLeft,
18
28
  title: __('Align left')
@@ -34,7 +44,7 @@ const BLOCK_ALIGNMENTS_CONTROLS = {
34
44
  title: __('Full width')
35
45
  }
36
46
  };
37
- const DEFAULT_CONTROL = 'center';
47
+ const DEFAULT_CONTROL = 'none';
38
48
  const POPOVER_PROPS = {
39
49
  isAlternate: true
40
50
  };
@@ -47,36 +57,73 @@ function BlockAlignmentUI({
47
57
  isCollapsed = true
48
58
  }) {
49
59
  const enabledControls = useAvailableAlignments(controls);
60
+ const hasEnabledControls = !!enabledControls.length;
50
61
 
51
- if (enabledControls.length === 0) {
62
+ if (!hasEnabledControls) {
52
63
  return null;
53
64
  }
54
65
 
55
- function applyOrUnset(align) {
56
- return () => onChange(value === align ? undefined : align);
66
+ function onChangeAlignment(align) {
67
+ onChange([value, 'none'].includes(align) ? undefined : align);
57
68
  }
58
69
 
59
70
  const activeAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[value];
60
71
  const defaultAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[DEFAULT_CONTROL];
61
72
  const UIComponent = isToolbar ? ToolbarGroup : ToolbarDropdownMenu;
62
- const extraProps = isToolbar ? {
63
- isCollapsed
64
- } : {};
65
- return createElement(UIComponent, _extends({
73
+ const commonProps = {
66
74
  popoverProps: POPOVER_PROPS,
67
75
  icon: activeAlignmentControl ? activeAlignmentControl.icon : defaultAlignmentControl.icon,
68
76
  label: __('Align'),
69
77
  toggleProps: {
70
78
  describedBy: __('Change alignment')
71
- },
72
- controls: enabledControls.map(control => {
73
- return { ...BLOCK_ALIGNMENTS_CONTROLS[control],
74
- isActive: value === control,
79
+ }
80
+ };
81
+ const extraProps = isToolbar || Platform.isNative ? {
82
+ isCollapsed: isToolbar ? isCollapsed : undefined,
83
+ controls: enabledControls.map(({
84
+ name: controlName
85
+ }) => {
86
+ return { ...BLOCK_ALIGNMENTS_CONTROLS[controlName],
87
+ isActive: value === controlName || !value && controlName === 'none',
75
88
  role: isCollapsed ? 'menuitemradio' : undefined,
76
- onClick: applyOrUnset(control)
89
+ onClick: () => onChangeAlignment(controlName)
77
90
  };
78
91
  })
79
- }, extraProps));
92
+ } : {
93
+ children: ({
94
+ onClose
95
+ }) => {
96
+ return createElement(Fragment, null, createElement(MenuGroup, {
97
+ className: "block-editor-block-alignment-control__menu-group"
98
+ }, enabledControls.map(({
99
+ name: controlName,
100
+ info
101
+ }) => {
102
+ const {
103
+ icon,
104
+ title
105
+ } = BLOCK_ALIGNMENTS_CONTROLS[controlName]; // If no value is provided, mark as selected the `none` option.
106
+
107
+ const isSelected = controlName === value || !value && controlName === 'none';
108
+ return createElement(MenuItem, {
109
+ key: controlName,
110
+ icon: icon,
111
+ iconPosition: "left",
112
+ className: classNames('components-dropdown-menu__menu-item', {
113
+ 'is-active': isSelected
114
+ }),
115
+ isSelected: isSelected,
116
+ onClick: () => {
117
+ onChangeAlignment(controlName);
118
+ onClose();
119
+ },
120
+ role: "menuitemradio",
121
+ info: info
122
+ }, title);
123
+ })));
124
+ }
125
+ };
126
+ return createElement(UIComponent, _extends({}, commonProps, extraProps));
80
127
  }
81
128
 
82
129
  export default BlockAlignmentUI;